matlab unicode plot hebrew figure

Matlab en Linux(Ubuntu 11.10) no muestra Unicode(hebreo) en la figura de la trama



plot hebrew (2)

Intento usar caracteres hebreos en una trama de figura de Matlab en mi Ubuntu sin éxito. Lo intenté:

text(0.6,0.5,''ירוק'',''fontname'',''times new roman'',''rotation'',180,''fontsize'',50,''color'',''r'')

y

title(''ירוק'',''fontname'',''times new roman'',''fontsize'',50,''color'',''r'')

similar a lo que se propuso en la respuesta a esta pregunta . Tengo un texto confuso (ver imagen adjunta ).

Matlab está en la versión R2009b. Por supuesto que estoy configurado para la codificación UTF-8.

>> slCharacterEncoding ans = UTF-8

También tengo acceso a una computadora remota a través de ssh, con la versión R2011a. Eso tampoco funcionó. (Allí tuve que slCharacterEncoding(''UTF-8'') )

La otra opción, usar un componente javax.swing.JLabel , es demasiado difícil de usar con la cantidad de gráficos que tengo.

Puedo seguir produciendo gráficos con hachas y títulos en inglés, pero es una pena. ¿Algún consejo?

Editar : como sugiere Egon, si puedo print -deps y luego reemplazar el texto (desde el código dentro de Matlab) en el archivo EPS resultante, eso también es genial. Pero no sé cómo colocar Unicode en EPS y creo que eso es estirarlo ...

Otra edición más : estoy empezando a pensar que esto es un problema del servidor X. Aunque diferente, no me sorprendería si estos problemas están relacionados:

Intenté desinstalar los controladores NVidia suministrados por Ubuntu (tengo una tarjeta 9300GS) y reinstalé los suministrados por NVidia (v295). Intenté cambiar DPI en xorg.conf a "100 x 100" . Instalado todos los paquetes enumerados en HebrewLocalizationHowto y algo más. Nada funcionó. Sugerencias?

Otras fuentes de edición ubicadas en matlab/sys/fonts/ttf o matlab/sys/fonts/type1 no se representan correctamente. Cuando edito la figura y hago doble clic en el título, veo que los caracteres están allí, pero cuando termino de editar regresa a la representación incorrecta. Además, la solución JLabel para representar caracteres Unicode aquí sugerida representa el texto correctamente bajo la misma figura.

Otra edición Matlab R2011a muestra el mismo problema. Aquí está el resultado de 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''


Con el siguiente fragmento, puede ver qué fuentes funcionan fácilmente

x=listfonts for i=1:numel(x) display(x{i}) title(''ירוק'',''Color'',''red'',''FontName'',x{i},''FontSize'',50) pause end

Para mí, Lucida Sans trabajó. Sin embargo, mostrará el hebreo invertido.

Puede exportar a EPS (imprimir -deps- He encontrado que esto no está disponible en Windows; de nuevo, no tiene el problema allí) y hacer algunas modificaciones:

  • eliminar la codificación horror de Matlab: simple eliminar todas las apariciones de /327
  • agregue una sección /Encoding para asignar caracteres hebreos a los códigos emitidos por Matlab

Es decir, cambia esto:

%%IncludeResource: font FreeSans /FreeSans /ISOLatin1Encoding 200 FMSR -6384 483 mt (/327/220/327/221/327/222/327/223/327/224/327/225/327/226/327/227/327/230/327/231/327/233/327/234/327/236/327/240/327/241/327/242/327/244/327/246/327/250/327/247/327/251/327/252/327/237/327/232/327/245/327/235/327/243) s

a esto:

/Encoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /alefhebrew /bethebrew /gimelhebrew /dalethebrew /hehebrew /vavhebrew /zayinhebrew /hethebrew /tethebrew /yodhebrew /finalkafhebrew /kafhebrew /lamedhebrew /finalmemhebrew /memhebrew /finalnunhebrew /nunhebrew /samekhhebrew /ayinhebrew /finalpehebrew /pehebrew /finaltsadihebrew /tsadihebrew /qofhebrew /reshhebrew /shinhebrew /tavhebrew /.notdef /.notdef /.notdef /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def %%IncludeResource: font FreeSans /FreeSans /Encoding 200 FMSR 1016 483 mt (/220/221/222/223/224/225/226/227/230/231/233/234/236/240/241/242/244/246/250/247/251/252/237/232/245/235/243) s

(La sección de codificación puede copiarse como está y las /327 ocurrencias fueron eliminadas)

Esto funciona, excepto que, por alguna razón, un carácter final no se muestra correctamente. Es lo suficientemente bueno para mí.


¿Has intentado desactivar el intérprete de texto?

Entonces, agregue ''interpreter'', ''none'' como los últimos argumentos de su llamada al text o establezca esto para todo el conjunto de figuras set(gcf,''defaulttextinterpreter'',''none'') . Para aplicarlo globalmente, simplemente reemplace gcf por 0 (esa es la ventana raíz).

Si eso no funciona, puede probar el intérprete LateX ( none reemplace none por ''latex'' arriba), que podría ser compatible con caracteres hebreos.

Por otro lado, pero esta es una preferencia personal, las etiquetas en inglés le permiten (prácticamente) a cualquiera que lea sus figuras, lo que solo le permite intercambiar ideas con otras personas.

editar Como se dijo en la pregunta a la que se hace referencia, se trata de un problema de fuente, no de un problema de MATLAB. Lo intenté aquí en mi instalación de Arch (que tiene sus propios problemas con las fuentes), pero puedo conseguir que muestre sus caracteres hebreos con la fuente Arial.

edit 2 De nuevo, este es un problema de fuente, no MATLAB. Intenté esto nuevamente en mi instalación de Arch, y ahora el hebreo funciona bien con tu primer código. Así que supongo que las fuentes que ha instalado no son las versiones correctas.

En Arch, tengo instalados estos paquetes relacionados con fuentes:

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

Para Ubuntu, no recuerdo los paquetes correctos, pero supongo que tendría las mayores posibilidades de éxito con ttf-liberation , ttf-ms-conts ( msttcorefonts en Ubuntu), xorg-fonts-100dpi , xorg-fonts-alias o sus contrapartes Debian / Ubuntu.

Entonces creo que hay dos soluciones posibles: o pruebe con otra fuente. Arial trabajó para mí antes, Times New Roman ahora también funciona para mí. O instale las fuentes adecuadas en su computadora.

editar En este extremo, parece que renderizar en MATLAB funciona casi a la perfección. Sin embargo, exportar a PDF no funciona. Cualquier formato de mapa de bits debería funcionar bien.

Mi próxima conjetura es que para el caso de PDF, MATLAB tiene la culpa. Hice algunas pruebas usando el PDF para guardar e imprimir en un archivo. Ambos exhiben el mismo problema. Esto no es sorprendente, ya que la característica de guardar PDF en MATLAB parece generar PS que luego se convierte en PDF. Presumiblemente, hay algo podrido y unicode incompatible en la generación PS.

Sé que no es una solución completa a su problema, pero al menos puede exportar sus figuras a PNG. Si su resolución es lo suficientemente alta, la mayoría de las personas no se dará cuenta.

Otra solución, si utiliza LaTeX para generar su informe, es utilizar matlab2tikz para generar sus figuras, allí pude obtener el texto hebreo para insertarlo en el código LaTeX. Sin embargo, dado que no tengo experiencia con el hebreo en mis archivos TeX, no conozco los trucos para compilarlos.