[Fontconfig] Fwd: Problem when <alias> is followed by more than one <family>

lolilolicon lolilolicon at gmail.com
Mon Jan 16 03:36:53 PST 2012

Resending reply to list.  Sorry about the noise!

---------- Forwarded message ----------
From: lolilolicon <lolilolicon at gmail.com>
Date: Mon, Jan 16, 2012 at 4:48 PM
Subject: Re: [Fontconfig] Problem when <alias> is followed by more
than one <family>
To: Akira TAGOH <akira at tagoh.org>

On Mon, Jan 16, 2012 at 10:00 AM, Akira TAGOH <akira at tagoh.org> wrote:
> See the document. <alias> allows to have only one <family>

Yes, that's what I thought at first.  But then, I find it's not true that
<alias> can have only one family, with several clues:

First, the configs shipped with fontconfig have <alias> followed by a
bunch of <family> elements, namely 30-metric-aliases.conf,
40-nonlatin.conf and 45-latin.conf.  I thought it's wrong configuration,
but now I realize it's not that simple.

Second, I tested with the equivalent <match> rules:

   <test name="family">
   <edit name="family" mode="prepend" binding="same">
      <string>HelveticaNeueLT Pro 55 Roman</string>

and I get exactly the same results as before.

Third, I've tested that <family> following <alias> are all somehow taken
into account:

 <alias binding="same">
     <family>Helvetica LT Std</family>

The "lolfont" is not a real font name, and I get the result:

 $ fc-match Helvetica
 HelveticaLTStd-Roman.otf: "Helvetica LT Std" "Roman"
 $ fc-match Arial
 arial.ttf: "Arial" "Normal"
 $ fc-match lolfont
 HelveticaLTStd-Roman.otf: "Helvetica LT Std" "Roman"

This makes me believe that <alias> can have one or more <family> elements,
and is equivalent to the corresponding <match> rules like the one above,
but somehow the first one following the opening <alias> or <test> is
treated differently from the others, i.e. order matters...  This is where
I'm really confused.

> and one of <prefer>, <accept> or <default>. the behavior is surely
> following what the document says.

No, the document says the <family> element can be "followed optional
<prefer>, <accept> and <default> elements", not "one of" them.  I'm
referring to the fonts-conf(5) man page and fonts.dtd.

More information about the Fontconfig mailing list