Last year, we were creating documents that contained both Bengali and
English text (both in Unicode), and I was able to work through (with your
help!) how to tell Java (and thereby XXE) to use a particular Bengali
font. This involved editing the fontconfig.properties file in the latest
Java library.
This year we're creating documents with Urdu and English. Urdu is written
with an Arabic script, and in fact with the Nasta'liq variant of that
font. I'm trying to get XXE to use a particular Arabic font (the 'Nafees
Nastaleeq' font) using the same approach I used for Bengali, and it isn't
working.
Specifically, I've added the following lines to my fontconfig.properties
file (in each case putting the new lines at the top of the section; where
lines wrap in my email, I'm continuing them after a line-final '\'):
-----------
allfonts.arabic=Nastaleeq
...
sequence.allfonts=alphabetic/default,arabic,bengali,ipa,dingbats,symbol
...
sequence.allfonts.UTF-8.hi=alphabetic/1252,arabic,devanagari,bengali,ipa,\
dingbats,symbol
...
exclusion.alphabetic=0600-1e9f,1f00-20ab,20ad-f8ff
#The above line was originally 0700-1e9f etc.; the Arabic Unicode
# range is 0600-06FF
exclusion.arabic=0600-06ff
#Not clear if this line is necessary (or hurts??)
...
filename.Nastaleeq=Nafees_Nastaleeq_v1.01.ttf
-----------
The above does not work. As far as I can tell, the Arabic/Urdu characters
continue to be rendered with the Arial Unicode font, which is my default
Sans Serif font.
BTW, the actual filename is 'Nafees Nastaleeq v1.01.ttf'; I've replaced
the space chars with '_' following the directions at
http://java.sun.com/j2se/1.5.0/docs/guide/intl/fontconfig.html. At least
I think I'm following the directions--I'm assuming that when they say
'Space characters in the platform font name must be replaced with
underscore characters ("_").', they mean in the fontconfig.properties
file, not in the actual filename in the directory. But just in case, I've
tried replacing this filename with other fonts which contain characters in
the Arabic Unicode range, with no discernible affect.
The only thing I can think of that's different between the Arabic case and
the Bengali one, is that the default font did not provide any Bengali
characters at all--I just got square boxes in place of any Bengali chars;
so before, I was providing a font to fill in missing code points. Whereas
the default font does provide Arabic characters, and I'm trying to
*override* those default characters for the the Arabic code points.
I have verified that XXE can display using the Nastaleeq font, by
selecting it in the Options | Preferences dlg as my default serif (or sans
serif) font. The only trouble with that as a work-around is, this font
has no Latin characters, so all my English text disappears...
Has anyone succeeded in overriding the default Arabic font (or any other
default scripts that are already specified in the fontconfig.properties
file, such as Chinese, Thai, Devanagari, Hebrew, Japanese, or Korean)?
BTW, there was some discussion in this mailing list over the years about
errors in cursor placement inside Arabic text. In experimenting with
that, it appears to me that the problem is that Arabic is displayed
right-to-left, and the cursor knows that, but the algorithm for inserting
text doesn't. That is, if I position the cursor five characters from the
left-hand end of a string of Arabic text and start typing space chars, the
spaces go in five characters from the right-hand end; and vice versa.
This might be easy to fix...
Mike Maxwell
CASL/ U MD