Hi, A few months ago I spent some time figuring out how fontconfig works and to write a configuration file for Persian fonts. The most confusing part I found was the change in the DTD, namely the accept/reject lists, and the change form size to pixelsize, or is it a change in another library that has been triggering me? Anyway, I have attached my config file for review. It basically tries to handle transliteration variants of all Persian family names, but doesn''t support native names yet. I''m interested in getting feedback on how the default config of other scripts is supposed to look like. Should it be in a separate file, or simply list the families in fonts.conf, like some are already listed. Etc. Thanks in advance, --behdad http://behdad.org/ -------------- next part -------------- <?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <!-- /etc/fonts/conf.d/fonts-persian.conf file to configure Persian fonts from FarsiWeb Project. Copyright (C) 2005 Sharif FarsiWeb, Inc. <license@farsiweb.info> ChangeLog: 2005-04-03 Behdad Esfahbod: Initial revision. Todo: Add generic font "fantasy". Add some fonts into that category. Maybe add a "cursive" generic font. --> <fontconfig> <!-- We don''t want weak bindings. So got to use the syntactical expansion of alias tag to do binding=same :(. Please support that in alias. --> <!-- Deprecated fonts are discouraged --> <!-- Nesf[2] is officially deprecated and has problematic tables --> <match> <test name="family"> <string>Nesf</string> </test> <edit name="family" mode="assign" binding="same"> <string>Nesf2</string> </edit> </match> <match> <test name="family"> <string>Nesf2</string> </test> <edit name="family" mode="assign" binding="same"> <string>Persian_sansserif_default</string> </edit> </match> <!-- Tahoma looks awful --> <match> <test name="family"> <string>Tahoma</string> </test> <edit name="family" mode="prepend" binding="same"> <string>Persian_sansserif_default</string> </edit> </match> <!-- Name changes and spelling variant aliases --> <!-- Changed due to trademark problems --> <match> <test name="family"> <string>Nazanin</string> </test> <edit name="family" mode="assign" binding="same"> <string>Nazli</string> </edit> </match> <match> <test name="family"> <string>Lotus</string> </test> <edit name="family" mode="assign" binding="same"> <string>Lotoos</string> </edit> </match> <!-- Changed due to transcription orthography --> <match> <test name="family"> <string>Yaqut</string> </test> <edit name="family" mode="assign" binding="same"> <string>Yaghoot</string> </edit> </match> <match> <test name="family"> <string>Yagut</string> </test> <edit name="family" mode="assign" binding="same"> <string>Yaghoot</string> </edit> </match> <match> <test name="family"> <string>Yaghut</string> </test> <edit name="family" mode="assign" binding="same"> <string>Yaghoot</string> </edit> </match> <match> <test name="family"> <string>Traffic</string> </test> <edit name="family" mode="assign" binding="same"> <string>Terafik</string> </edit> </match> <match> <test name="family"> <string>Ferdowsi</string> </test> <edit name="family" mode="assign" binding="same"> <string>Ferdosi</string> </edit> </match> <match> <test name="family"> <string>Fantezy</string> </test> <edit name="family" mode="assign" binding="same"> <string>Fantezi</string> </edit> </match> <!-- Classify fonts. --> <!-- Persian_title class --> <match> <test name="family"> <string>Jadid</string> </test> <edit name="family" mode="append" binding="same"> <string>Persian_title</string> </edit> </match> <match> <test name="family"> <string>Titr</string> </test> <edit name="family" mode="append" binding="same"> <string>Persian_title</string> </edit> </match> <!-- Persian_fantasy class --> <match> <test name="family"> <string>Kamran</string> </test> <edit name="family" mode="append" binding="same"> <string>Homa</string> </edit> <edit name="family" mode="append" binding="same"> <string>Persian_fantasy</string> </edit> </match> <match> <test name="family"> <string>Homa</string> </test> <edit name="family" mode="append" binding="same"> <string>Kamran</string> </edit> <edit name="family" mode="append" binding="same"> <string>Persian_fantasy</string> </edit> </match> <match> <test name="family"> <string>Fantezi</string> </test> <edit name="family" mode="append" binding="same"> <string>Persian_fantasy</string> </edit> </match> <match> <test name="family"> <string>Tabassom</string> </test> <edit name="family" mode="append" binding="same"> <string>Persian_fantasy</string> </edit> </match> <!-- Persian_square class --> <match> <test name="family"> <string>Arshia</string> </test> <edit name="family" mode="append" binding="same"> <string>Persian_square</string> </edit> </match> <match> <test name="family"> <string>Nasim</string> </test> <edit name="family" mode="append" binding="same"> <string>Persian_square</string> </edit> </match> <match> <test name="family"> <string>Elham</string> </test> <edit name="family" mode="append" binding="same"> <string>Farnaz</string> </edit> <edit name="family" mode="append" binding="same"> <string>Persian_square</string> </edit> </match> <match> <test name="family"> <string>Farnaz</string> </test> <edit name="family" mode="append" binding="same"> <string>Elham</string> </edit> <edit name="family" mode="append" binding="same"> <string>Persian_square</string> </edit> </match> <match> <test name="family"> <string>Sina</string> </test> <edit name="family" mode="append" binding="same"> <string>Persian_square</string> </edit> </match> <!-- Font ordering per class --> <!-- Persian_title class --> <match> <test name="family"> <string>Persian_title</string> </test> <edit name="family" mode="append" binding="same"> <string>Persian_serif</string> </edit> <edit name="family" mode="append" binding="same"> <string>Jadid</string> </edit> <edit name="family" mode="append" binding="same"> <string>Titr</string> </edit> </match> <!-- Persian_fantasy class --> <match> <test name="family"> <string>Persian_fantasy</string> </test> <edit name="family" mode="append" binding="same"> <string>Persian_square</string> </edit> <edit name="family" mode="append" binding="same"> <string>Tabassom</string> </edit> <edit name="family" mode="append" binding="same"> <string>Fantezi</string> </edit> <edit name="family" mode="append" binding="same"> <string>Kamran</string> </edit> <edit name="family" mode="append" binding="same"> <string>Homa</string> </edit> </match> <!-- Persian_square class --> <match> <test name="family"> <string>Persian_square</string> </test> <edit name="family" mode="append" binding="same"> <string>Persian_serif</string> </edit> <edit name="family" mode="append" binding="same"> <string>Sina</string> </edit> <edit name="family" mode="append" binding="same"> <string>Nasim</string> </edit> <edit name="family" mode="append" binding="same"> <string>Farnaz</string> </edit> <edit name="family" mode="append" binding="same"> <string>Elham</string> </edit> <edit name="family" mode="append" binding="same"> <string>Arshia</string> </edit> </match> <!-- Register the fonts that we actually do have --> <match target="font"> <test name="family"> <string>Elham</string> </test> <edit name="foundry"> <string>farsiweb</string> </edit> </match> <match target="font"> <test name="family"> <string>Homa</string> </test> <edit name="foundry"> <string>farsiweb</string> </edit> <edit name="embolden"> <bool>true</bool> </edit> </match> <match target="font"> <test name="family"> <string>Koodak</string> </test> <edit name="foundry"> <string>farsiweb</string> </edit> <edit name="embolden"> <bool>true</bool> </edit> </match> <match target="font"> <test name="family"> <string>Nazli</string> </test> <edit name="foundry"> <string>farsiweb</string> </edit> </match> <match target="font"> <test name="family"> <string>Roya</string> </test> <edit name="foundry"> <string>farsiweb</string> </edit> </match> <match target="font"> <test name="family"> <string>Terafik</string> </test> <edit name="foundry"> <string>farsiweb</string> </edit> </match> <match target="font"> <test name="family"> <string>Titr</string> </test> <edit name="foundry"> <string>farsiweb</string> </edit> </match> <!-- Our fonts should oblique to the other side --> <match target="font"> <test name="foundry"> <string>farsiweb</string> </test> <!-- check to see if the font is roman --> <test name="slant"> <const>roman</const> </test> <!-- check to see if the pattern requested non-roman --> <test target="pattern" name="slant" compare="not_eq"> <const>roman</const> </test> <!-- multiply the matrix to slant the font --> <edit name="matrix" mode="assign"> <times> <name>matrix</name> <matrix><double>1</double><double>-0.2</double> <double>0</double><double>1</double> </matrix> </times> </edit> <!-- pretend the font is oblique now --> <edit name="slant" mode="assign"> <const>oblique</const> </edit> </match> <!-- We can''t hint our fonts well, so turn off hinting. Moreover, the bitmaps we have designed (well, they have designed), suck, so disable them too. --> <match target="font"> <test name="foundry"> <string>farsiweb</string> </test> <edit name="autohint"> <bool>false</bool> </edit> <edit name="hinting"> <bool>false</bool> </edit> <edit name="rh_prefer_bitmaps"> <bool>false</bool> </edit> </match> <!-- Alias our fonts to common families --> <!-- Persian serif fonts --> <alias> <family>serif</family> <accept> <family>Nazli</family> <family>Lotoos</family> <family>Mitra</family> <family>Ferdosi</family> <family>Badr</family> <family>Zar</family> </accept> </alias> <!-- Persian sans-serif fonts --> <alias> <family>sans-serif</family> <accept> <family>Roya</family> <family>Koodak</family> <family>Terafik</family> </accept> </alias> <!-- Persian monospace fonts --> <alias> <family>monospace</family> <accept> <!-- Not really monospace --> <family>Terafik</family> </accept> </alias> <!-- Use Titr in titles --> <!-- Both serif... --> <match> <test name="family"> <string>serif</string> </test> <test name="weight" compare="more_eq"> <int>200</int> </test> <test name="size" compare="more_eq"> <double>18</double> </test> <edit name="family" mode="prepend"> <string>Titr</string> </edit> </match> <match> <test name="family"> <string>serif</string> </test> <test name="weight" compare="more_eq"> <int>200</int> </test> <test name="pixelsize" compare="more_eq"> <double>18</double> </test> <edit name="family" mode="prepend"> <string>Titr</string> </edit> </match> <!-- and sans-serif. --> <match> <test name="family"> <string>sans-serif</string> </test> <test name="weight" compare="more_eq"> <int>200</int> </test> <test name="size" compare="more_eq"> <double>18</double> </test> <edit name="family" mode="prepend"> <string>Titr</string> </edit> </match> <match> <test name="family"> <string>sans-serif</string> </test> <test name="weight" compare="more_eq"> <int>200</int> </test> <test name="pixelsize" compare="more_eq"> <double>18</double> </test> <edit name="family" mode="prepend"> <string>Titr</string> </edit> </match> <!-- and more. --> <match> <test name="family"> <string>Persian_sansserif_default</string> </test> <test name="weight" compare="more_eq"> <int>200</int> </test> <test name="size" compare="more_eq"> <double>18</double> </test> <edit name="family" mode="prepend" binding="same"> <string>Titr</string> </edit> </match> <match> <test name="family"> <string>Persian_sansserif_default</string> </test> <test name="weight" compare="more_eq"> <int>200</int> </test> <test name="pixelsize" compare="more_eq"> <double>18</double> </test> <edit name="family" mode="prepend" binding="same"> <string>Titr</string> </edit> </match> <!-- Default substituted for deprecated sans-serif fonts --> <match> <test name="family"> <string>Persian_sansserif_default</string> </test> <edit name="family" mode="assign" binding="same"> <string>Roya</string> </edit> </match> </fontconfig>
Behdad Esfahbod wrote:> Hi, > > A few months ago I spent some time figuring out how fontconfig > works and to write a configuration file for Persian fonts. > > The most confusing part I found was the change in the DTD, namely > the accept/reject lists, and the change form size to pixelsize, > or is it a change in another library that has been triggering me? > > Anyway, I have attached my config file for review. It basically > tries to handle transliteration variants of all Persian family > names, but doesn''t support native names yet. > > I''m interested in getting feedback on how the default config of > other scripts is supposed to look like. Should it be in a > separate file, or simply list the families in fonts.conf, like > some are already listed. Etc.Hi Behdad, I noticed that this config file seems to have fallen into the bit bucket. It seems to me that putting it in conf.d seems to be the right thing; would you like me to commit it there? Or do you want to finish it up? pat
On Wed, 2 Nov 2005, Patrick Lam wrote:> Hi Behdad, > > I noticed that this config file seems to have fallen into the bit > bucket. It seems to me that putting it in conf.d seems to be the right > thing; would you like me to commit it there? Or do you want to finish > it up?Hi Pat, I''m attaching a revised version of the config file for Persian fonts from Sharif FarsiWeb, Inc. (http://farsiweb.inf/) Yes, putting them into conf.d sounds very good. Are you going to turn them on by default (preceded by digits)? BTW, fc-cat ~/.fonts.cache-2 generates no output here. The file is there and seems to be filled.> patThanks, --behdad http://behdad.org/ "Commandment Three says Do Not Kill, Amendment Two says Blood Will Spill" -- Dan Bern, "New American Language" -------------- next part -------------- <?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <!-- fonts-persian.conf To configure Persian fonts from The FarsiWeb Project. Copyright (C) 2005 Sharif FarsiWeb, Inc. <license@farsiweb.info> Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Sharif FarsiWeb, Inc. not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Sharif FarsiWeb, Inc. makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. SHARIF FARSIWEB, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ChangeLog: 2005-04-03 Behdad Esfahbod: Initial revision. 2005-10-09 Behdad Esfahbod: Turned off back-slant and Tahoma sections. 2005-11-30 Behdad Esfahbod: Set Titr susbtitution size to 24 points. Todo: Add generic font "fantasy". Add some fonts into that category. Maybe add a "cursive" generic font. --> <fontconfig> <!-- We don''t want weak bindings. So got to use the syntactical expansion of alias tag to do binding=same :(. Please support that in alias. --> <!-- Deprecated fonts are discouraged --> <!-- Nesf[2] is officially deprecated and has problematic tables --> <match> <test name="family"> <string>Nesf</string> </test> <edit name="family" mode="assign" binding="same"> <string>Nesf2</string> </edit> </match> <match> <test name="family"> <string>Nesf2</string> </test> <edit name="family" mode="assign" binding="same"> <string>Persian_sansserif_default</string> </edit> </match> <!-- Tahoma looks awful (TURNED-OFF) --> <!--match> <test name="family"> <string>Tahoma</string> </test> <edit name="family" mode="prepend" binding="same"> <string>Persian_sansserif_default</string> </edit> </match--> <!-- Name changes and spelling variant aliases --> <!-- Changed due to trademark problems --> <match> <test name="family"> <string>Nazanin</string> </test> <edit name="family" mode="assign" binding="same"> <string>Nazli</string> </edit> </match> <match> <test name="family"> <string>Lotus</string> </test> <edit name="family" mode="assign" binding="same"> <string>Lotoos</string> </edit> </match> <!-- Changed due to transcription orthography --> <match> <test name="family"> <string>Yaqut</string> </test> <edit name="family" mode="assign" binding="same"> <string>Yaghoot</string> </edit> </match> <match> <test name="family"> <string>Yagut</string> </test> <edit name="family" mode="assign" binding="same"> <string>Yaghoot</string> </edit> </match> <match> <test name="family"> <string>Yaghut</string> </test> <edit name="family" mode="assign" binding="same"> <string>Yaghoot</string> </edit> </match> <match> <test name="family"> <string>Traffic</string> </test> <edit name="family" mode="assign" binding="same"> <string>Terafik</string> </edit> </match> <match> <test name="family"> <string>Ferdowsi</string> </test> <edit name="family" mode="assign" binding="same"> <string>Ferdosi</string> </edit> </match> <match> <test name="family"> <string>Fantezy</string> </test> <edit name="family" mode="assign" binding="same"> <string>Fantezi</string> </edit> </match> <!-- Classify fonts. --> <!-- Persian_title class --> <match> <test name="family"> <string>Jadid</string> </test> <edit name="family" mode="append" binding="same"> <string>Persian_title</string> </edit> </match> <match> <test name="family"> <string>Titr</string> </test> <edit name="family" mode="append" binding="same"> <string>Persian_title</string> </edit> </match> <!-- Persian_fantasy class --> <match> <test name="family"> <string>Kamran</string> </test> <edit name="family" mode="append" binding="same"> <string>Homa</string> </edit> <edit name="family" mode="append" binding="same"> <string>Persian_fantasy</string> </edit> </match> <match> <test name="family"> <string>Homa</string> </test> <edit name="family" mode="append" binding="same"> <string>Kamran</string> </edit> <edit name="family" mode="append" binding="same"> <string>Persian_fantasy</string> </edit> </match> <match> <test name="family"> <string>Fantezi</string> </test> <edit name="family" mode="append" binding="same"> <string>Persian_fantasy</string> </edit> </match> <match> <test name="family"> <string>Tabassom</string> </test> <edit name="family" mode="append" binding="same"> <string>Persian_fantasy</string> </edit> </match> <!-- Persian_square class --> <match> <test name="family"> <string>Arshia</string> </test> <edit name="family" mode="append" binding="same"> <string>Persian_square</string> </edit> </match> <match> <test name="family"> <string>Nasim</string> </test> <edit name="family" mode="append" binding="same"> <string>Persian_square</string> </edit> </match> <match> <test name="family"> <string>Elham</string> </test> <edit name="family" mode="append" binding="same"> <string>Farnaz</string> </edit> <edit name="family" mode="append" binding="same"> <string>Persian_square</string> </edit> </match> <match> <test name="family"> <string>Farnaz</string> </test> <edit name="family" mode="append" binding="same"> <string>Elham</string> </edit> <edit name="family" mode="append" binding="same"> <string>Persian_square</string> </edit> </match> <match> <test name="family"> <string>Sina</string> </test> <edit name="family" mode="append" binding="same"> <string>Persian_square</string> </edit> </match> <!-- Font ordering per class --> <!-- Persian_title class --> <match> <test name="family"> <string>Persian_title</string> </test> <edit name="family" mode="append" binding="same"> <string>Persian_serif</string> </edit> <edit name="family" mode="append" binding="same"> <string>Jadid</string> </edit> <edit name="family" mode="append" binding="same"> <string>Titr</string> </edit> </match> <!-- Persian_fantasy class --> <match> <test name="family"> <string>Persian_fantasy</string> </test> <edit name="family" mode="append" binding="same"> <string>Persian_square</string> </edit> <edit name="family" mode="append" binding="same"> <string>Tabassom</string> </edit> <edit name="family" mode="append" binding="same"> <string>Fantezi</string> </edit> <edit name="family" mode="append" binding="same"> <string>Kamran</string> </edit> <edit name="family" mode="append" binding="same"> <string>Homa</string> </edit> </match> <!-- Persian_square class --> <match> <test name="family"> <string>Persian_square</string> </test> <edit name="family" mode="append" binding="same"> <string>Persian_serif</string> </edit> <edit name="family" mode="append" binding="same"> <string>Sina</string> </edit> <edit name="family" mode="append" binding="same"> <string>Nasim</string> </edit> <edit name="family" mode="append" binding="same"> <string>Farnaz</string> </edit> <edit name="family" mode="append" binding="same"> <string>Elham</string> </edit> <edit name="family" mode="append" binding="same"> <string>Arshia</string> </edit> </match> <!-- Register the fonts that we actually do have --> <match target="font"> <test name="family"> <string>Elham</string> </test> <edit name="foundry"> <string>farsiweb</string> </edit> </match> <match target="font"> <test name="family"> <string>Homa</string> </test> <edit name="foundry"> <string>farsiweb</string> </edit> <edit name="embolden"> <bool>true</bool> </edit> </match> <match target="font"> <test name="family"> <string>Koodak</string> </test> <edit name="foundry"> <string>farsiweb</string> </edit> <edit name="embolden"> <bool>true</bool> </edit> </match> <match target="font"> <test name="family"> <string>Nazli</string> </test> <edit name="foundry"> <string>farsiweb</string> </edit> </match> <match target="font"> <test name="family"> <string>Roya</string> </test> <edit name="foundry"> <string>farsiweb</string> </edit> </match> <match target="font"> <test name="family"> <string>Terafik</string> </test> <edit name="foundry"> <string>farsiweb</string> </edit> </match> <match target="font"> <test name="family"> <string>Titr</string> </test> <edit name="foundry"> <string>farsiweb</string> </edit> </match> <!-- Our fonts should oblique to the other side (TURNED-OFF) --> <match target="font"> <test name="foundry"> <!--string>farsiweb</string--> <string>TURNED-OFF</string> </test> <test name="foundry"> <string>farsiweb</string> </test> <!-- check to see if the font is roman --> <test name="slant"> <const>roman</const> </test> <!-- check to see if the pattern requested non-roman --> <test target="pattern" name="slant" compare="not_eq"> <const>roman</const> </test> <!-- multiply the matrix to slant the font --> <edit name="matrix" mode="assign"> <times> <name>matrix</name> <matrix><double>1</double><double>-0.2</double> <double>0</double><double>1</double> </matrix> </times> </edit> <!-- pretend the font is oblique now --> <edit name="slant" mode="assign"> <const>oblique</const> </edit> </match> <!-- We can''t hint our fonts well, so turn off hinting. Moreover, the bitmaps we have designed (well, they have designed), suck, so disable them too. --> <match target="font"> <test name="foundry"> <string>farsiweb</string> </test> <edit name="autohint"> <bool>false</bool> </edit> <edit name="hinting"> <bool>false</bool> </edit> <edit name="rh_prefer_bitmaps"> <bool>false</bool> </edit> </match> <!-- Alias our fonts to common families --> <!-- Persian serif fonts --> <alias> <family>serif</family> <accept> <family>Nazli</family> <family>Lotoos</family> <family>Mitra</family> <family>Ferdosi</family> <family>Badr</family> <family>Zar</family> </accept> </alias> <!-- Persian sans-serif fonts --> <alias> <family>sans-serif</family> <accept> <family>Roya</family> <family>Koodak</family> <family>Terafik</family> </accept> </alias> <!-- Persian monospace fonts --> <alias> <family>monospace</family> <accept> <!-- Not really monospace --> <family>Terafik</family> </accept> </alias> <!-- Use Titr in titles --> <!-- Both serif... --> <match> <test name="family"> <string>serif</string> </test> <test name="weight" compare="more_eq"> <int>200</int> </test> <test name="size" compare="more_eq"> <double>24</double> </test> <edit name="family" mode="prepend"> <string>Titr</string> </edit> </match> <!-- and sans-serif. --> <match> <test name="family"> <string>sans-serif</string> </test> <test name="weight" compare="more_eq"> <int>200</int> </test> <test name="size" compare="more_eq"> <double>24</double> </test> <edit name="family" mode="prepend"> <string>Titr</string> </edit> </match> <!-- and more. --> <match> <test name="family"> <string>Persian_sansserif_default</string> </test> <test name="weight" compare="more_eq"> <int>200</int> </test> <test name="size" compare="more_eq"> <double>24</double> </test> <edit name="family" mode="prepend" binding="same"> <string>Titr</string> </edit> </match> <!-- Default substituted for deprecated sans-serif fonts --> <match> <test name="family"> <string>Persian_sansserif_default</string> </test> <edit name="family" mode="assign" binding="same"> <string>Roya</string> </edit> </match> </fontconfig>
Behdad Esfahbod wrote:> On Wed, 2 Nov 2005, Patrick Lam wrote: > > >>Hi Behdad, >> >>I noticed that this config file seems to have fallen into the bit >>bucket. It seems to me that putting it in conf.d seems to be the right >>thing; would you like me to commit it there? Or do you want to finish >>it up? > > > Hi Pat, > > I''m attaching a revised version of the config file for Persian > fonts from Sharif FarsiWeb, Inc. (http://farsiweb.inf/) Yes, > putting them into conf.d sounds very good. Are you going to turn > them on by default (preceded by digits)? > > BTW, fc-cat ~/.fonts.cache-2 generates no output here. The file > is there and seems to be filled.I''ve committed 10-fonts.persian.conf. Thanks! fc-cat didn''t work properly on global cache files because there was no suitable implementation. It works now, although it doesn''t print exactly what it would have used to print. pat