Linux中的Matlab(Ubuntu 11.10)在绘图中不显示Unicode(希伯来语)

Yuv*_*val 9 unicode matlab plot hebrew figure

我尝试在我的Ubuntu上的Matlab图形图中使用希伯来字符无济于事.我试过了:

text(0.6,0.5,'????','fontname','times new roman','rotation',180,'fontsize',50,'color','r')
Run Code Online (Sandbox Code Playgroud)

title('????','fontname','times new roman','fontsize',50,'color','r')
Run Code Online (Sandbox Code Playgroud)

类似于这个问题的答案中提出的建议.我的文字乱码(见附图).

Matlab的版本为R2009b.当然我设置为UTF-8编码.

>> slCharacterEncoding

ans =

UTF-8
Run Code Online (Sandbox Code Playgroud)

我也可以通过ssh访问远程计算机,版本为R2011a.那也行不通.(我必须slCharacterEncoding('UTF-8'))

使用javax.swing.JLabel组件的另一个选项太难以使用我拥有的图形量.

我可以继续制作带有英文轴和标题的图表,但这很可惜.有什么建议?


编辑:根据Egon的建议,如果我可以print -deps然后在生成的EPS文件中替换文本(来自Matlab中的代码),那也很酷.但是我不知道如何在EPS中放置Unicode,我认为这会拉伸它......

显示垃圾的图屏幕的屏幕截图


还有另一个编辑:我开始认为这是一个X服务器问题.虽然不同,但如果这些问题相关,我不会感到惊讶:

我尝试卸载Ubuntu提供的NVidia驱动程序(我有9300GS卡)并重新安装NVidia提供的驱动程序(v295).我尝试将xorg.conf中的DPI更改为"100 x 100".安装了HebrewLocalizationHowto中列出的所有包,然后是一些.没有任何效果.建议?


另一个编辑字体位于matlab/sys/fonts/ttf或未matlab/sys/fonts/type1正确呈现.当我编辑图形并双击标题时,我看到字符在那里,但是当我完成编辑时,它返回到错误的渲染.此外,用于呈现此处建议的Unicode字符JLabel解决方案在同一图下正确呈现文本.

另一个编辑 Matlab R2011a表现出同样的问题.这是输出listfonts

>> listfonts

ans = 

    'aharoni'
    'andale mono'
    'anka clm'
    'arial'
    'arial black'
    'avant garde gothic'
    'AvantGarde'
    'batang'
    'bitstream charter'
    'biwidth'
    'Bookman'
    'caladings'
    'century schoolbook l'
    'charter'
    'clean'
    'clearlyu'
    'clearlyu alternate glyphs'
    'clearlyu arabic'
    'clearlyu arabic extra'
    'clearlyu devanagari'
    'clearlyu devangari extra'
    'clearlyu ligature'
    'clearlyu pua'
    'cmex10'
    'cmmi10'
    'cmr10'
    'cmsy10'
    'comic sans ms'
    'comix no2 clm'
    'Courier'
    'courier 10 pitch'
    'courier new'
    'dingbats'
    'dorian clm'
    'dotum'
    'drugulin'
    'ellinia'
    'fangsong ti'
    'fixed'
    'frank ruehl'
    'gan clm'
    'georgia'
    'gladia clm'
    'gothic'
    'Helvetica'
    'Helvetica-Narrow'
    'impact'
    'itc avant garde gothic'
    'itc bookman'
    'itc zapf chancery'
    'itc zapf dingbats'
    'ktav yad clm'
    'latin modern roman'
    'latin modern sans'
    'latin modern sansquotation'
    'latin modern typewriter'
    'latin modern typewriter variable width'
    'lucida'
    'lucida bright'
    'lucidabright'
    'lucidasans'
    'lucidasans typewriter'
    'lucidatypewriter'
    'mincho'
    'msam10'
    'msbm10'
    'nachlieli'
    'new century schoolbook'
    'newcenturyschlbk'
    'NewCenturySchoolBook'
    'newspaper'
    'nil'
    'nimbus mono l'
    'nimbus roman no9 l'
    'nimbus sans l'
    'open look cursor'
    'open look glyph'
    'ozrad clm'
    'Palatino'
    'song ti'
    'standard symbols l'
    'Symbol'
    'terminal'
    'texgyreadventor'
    'texgyrebonum'
    'texgyrecursor'
    'texgyreheros'
    'texgyrepagella'
    'texgyreschola'
    'texgyretermes'
    'Times'
    'times new roman'
    'trebuchet ms'
    'urw bookman l'
    'urw chancery l'
    'urw gothic l'
    'urw palladio l'
    'verdana'
    'wasy10'
    'webdings'
    'yehuda'
    'zapf chancery'
    'zapf dingbats'
    'ZapfChancery'
    'ZapfDingbats'
Run Code Online (Sandbox Code Playgroud)

Ego*_*gon 4

您是否尝试过禁用文本解释器?

因此,要么添加'interpreter', 'none'为调用的最后几个参数text,要么为整个figure 设置它set(gcf,'defaulttextinterpreter','none')。要全局应用它,只需替换gcf0(即根窗口)。

如果这不起作用,您可以尝试 LateX 解释器(替换none为上面的“latex”),它可能支持希伯来语字符。

另一方面,但这是个人喜好,英文标签允许(几乎)任何人阅读你的图表,这只允许你与其他人交换想法。

编辑 正如您引用的问题中所述,这是一个字体问题,而不是 MATLAB 问题。我在我的 Arch 安装上尝试过它(它有自己的字体问题),但我可以让它使用 Arial 字体很好地显示希伯来语字符。

希伯来语证明

编辑2 同样,这是字体问题,而不是MATLAB。我在我的 Arch 安装上再次尝试了这个,现在希伯来语可以很好地处理你的第一个代码。所以我认为您安装的字体不是正确的版本。

在此输入图像描述

在 Arch 上,我安装了这些与字体相关的软件包:

extra/cantarell-fonts 0.0.7-1
extra/font-bitstream-speedo 1.0.1-2
extra/fontsproto 2.1.2-1
extra/gsfonts 1.0.7pre44-3
extra/sdl_ttf 2.0.11-2
extra/t1lib 5.1.2-3
extra/ttf-bitstream-vera 1.10-8
extra/ttf-dejavu 2.33-2
extra/ttf-freefont 20100919-2
extra/xorg-font-util 1.3.0-1
extra/xorg-fonts-100dpi 1.0.1-4
extra/xorg-fonts-75dpi 1.0.1-4
extra/xorg-fonts-alias 1.0.2-2
extra/xorg-fonts-encodings 1.0.4-3
extra/xorg-fonts-misc 1.0.1-2
extra/xorg-fonts-type1 7.4-2
extra/xorg-mkfontscale 1.1.0-1
extra/xorg-xfontsel 1.0.4-1
extra/xorg-xlsfonts 1.0.3-2
community/ttf-liberation 1.07.2-1
aur/ttf-microsoft-wingding 1.55-1
aur/ttf-ms-fonts 2.0-9
Run Code Online (Sandbox Code Playgroud)

对于 Ubuntu,我不记得正确的软件包,但我想您使用ttf-liberationttf-ms-contsmsttcorefonts在 Ubuntu 中)xorg-fonts-100dpixorg-fonts-alias或 Debian/Ubuntu 对应版本的成功机会最高。

所以我认为有两种可能的解决方案:要么尝试另一种字体。Arial 以前为我工作,T​​imes New Roman 现在也为我工作。或者在您的计算机上安装适当的字体。

编辑 至此,看来 MATLAB 中的渲染工作几乎完美。但是,导出为 PDF 不起作用。任何位图格式都应该可以正常工作。

我的下一个猜测是,对于 PDF 案例,MATLAB 确实是罪魁祸首。我通过使用常规 PDF 保存并打印到文件进行了一些测试。两者都表现出同样的问题。这并不奇怪,因为 MATLAB 中的 PDF 保存功能似乎会生成 PS,然后再将其转换为 PDF。据推测,PS 一代中出现了一些腐烂和 unicode 不兼容的情况。

我知道这并不能完全解决你的问题,但你至少可以将你的图形导出为PNG,如果你的分辨率足够高,大多数人不会注意到。

如果您使用 LaTeX 生成报告,另一个解决方案是使用matlab2tikz生成图形,在那里我能够将希伯来语文本插入到 LaTeX 代码中。然而,由于我在 TeX 文件中没有使用希伯来语的经验,所以我不知道编译该文件的技巧。