Arabic Character Support

Hello All:

Having an issue with Arabic font support using matplotlib. When using the correct font, Arabic characters are displayed, but are not joined together properly; and they are also not in the correct order (the font rendered is ltr, but Arabic is a rtl language). Is this an issue with the render I am using, or some incompatibility within matplotlib? Sample source code used (please note, your email client should support utf8 to display the code correctly).

#-- coding: utf-8 --
from pylab import *
figure(1) # the first figure
plot([1,2,3])
figure(1) # figure 1 current
title(u’برهان’,name=‘Times New Roman’) # figure 1 title

savefig(‘test.png’)
savefig(‘test.eps’)
show()

Output when run from the command line:

matplotlib data path /usr/share/matplotlib/mpl-data
$HOME=/home/burhan
CONFIGDIR=/home/burhan/.matplotlib

loaded rc file /etc/matplotlibrc
matplotlib version 0.90.1
verbose.level helpful
interactive is False
units is True
platform is linux2
numerix numpy 1.0.3
font search path [’/usr/share/matplotlib/mpl-data/fonts/ttf’, ‘/usr/share/matplotlib/mpl-data/fonts/afm’]

loaded ttfcache file /home/burhan/.matplotlib/ttffont.cache
backend TkAgg version 8.4
Could not match Bitstream Vera Serif, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif, normal, normal. Returning /usr/share/fonts/truetype/ttf-bitstream-vera/Vera.ttf

This is on a clean Ubuntu Gutsy install, using python 2.5.1.

Thanks,
Burhan

Unfortunately, I believe this is a fundamental incompatibility within matplotlib. matplotlib uses a very simple algorithm for layout out a line of characters which assumes ltr order and all kinds of other things.

That said, there is something you could try. Matplotlib has a "usetex" mode which will do all text rendering using LaTeX. Assuming you can get LaTeX to handle Arabic correctly, you can set the following in your .matplotlibrc file:

  text.usetex : True
  text.latex.unicode : True

You'll need to install the LaTeX Unicode extension "ucs" (Ubuntu probably has packages for that.) If you need to load any LaTeX packages to get arabic support, you can tell matplotlib about them in your matplotlibrc like so:

  text.latex.preamble: \usepackage{foo}

If Arabic-encoded-as-Unicode doesn't work, you could try setting "text.latex.unicode" to False, and then typing your Arabic strings using one of the other Arabic encodings that LaTeX understands.

Please let us know if you have success or hit another roadblock.

Cheers,
Mike

Burhan Khalid wrote:

···

Hello All:

  Having an issue with Arabic font support using matplotlib. When using the correct font, Arabic characters are displayed, but are not joined together properly; and they are also not in the correct order (the font rendered is ltr, but Arabic is a rtl language). Is this an issue with the render I am using, or some incompatibility within matplotlib? Sample source code used (please note, your email client should support utf8 to display the code correctly).

#-*- coding: utf-8 -*-
from pylab import *
figure(1) # the first figure
plot([1,2,3])
figure(1) # figure 1 current
title(u'�����',name='Times New Roman') # figure 1 title
savefig('test.png')
savefig('test.eps')
show()

Output when run from the command line:

matplotlib data path /usr/share/matplotlib/mpl-data
$HOME=/home/burhan
CONFIGDIR=/home/burhan/.matplotlib
loaded rc file /etc/matplotlibrc
matplotlib version 0.90.1
verbose.level helpful
interactive is False
units is True
platform is linux2
numerix numpy 1.0.3
font search path ['/usr/share/matplotlib/mpl-data/fonts/ttf', '/usr/share/matplotlib/mpl-data/fonts/afm']
loaded ttfcache file /home/burhan/.matplotlib/ttffont.cache
backend TkAgg version 8.4
Could not match Bitstream Vera Serif, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif, normal, normal. Returning /usr/share/fonts/truetype/ttf-bitstream-vera/Vera.ttf

This is on a clean Ubuntu Gutsy install, using python 2.5.1.

Thanks,
Burhan

------------------------------------------------------------------------

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/

------------------------------------------------------------------------

_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
matplotlib-users List Signup and Options

--
Michael Droettboom
Science Software Branch
Operations and Engineering Division
Space Telescope Science Institute
Operated by AURA for NASA