[Fontconfig] matching multiple families in <alias> and <test>

Akira TAGOH akira at tagoh.org
Fri May 11 01:32:56 PDT 2012


Thanks for trying.

FWIW I noticed that what I mentioned at Bug#33644 has inconsistency in
the usage of qual. it is, even though qual="any" and qual="all"
affects values in <test>, qual="first" and qual="not_first" actually
affects values in the pattern. I suppose it may be a bug in FcOpComma
then. given that it is, this rule:

  <test name="family" qual="all">
    <string>blah blah blah</string>
  </test>

may expects to match when all of values in the pattern contains "blah
blah blah". I'm not quite sure if it's really likely to happen and I
totally missed what FcOpComma is for.

This reminds me that we have to restructure the expression rules in
the configuration, including any possibilities to introduce new syntax
and we need to discuss first how to build the rules for "A AND B" and
"A OR B" with/without FcOpComma say and may need to discuss if we
should make the implicit rules clear in the configuration too, like
the position of element that <edit> take effects as we are discussing
now. we can go back to the alias thing after that because of its
purpose.

On Fri, May 11, 2012 at 10:10 AM, Raimund Steger <rs at mytum.de> wrote:
> Hi,
>
> Raimund Steger wrote:
>>
>> [...]
>>
>>
>> Maybe when going through the FcOpComma operands, one could tag the
>> matching FcValueList's somehow and loop precisely over them for the
>> following prepend/append/assign edits.
>
>
> I've now tried to modify fccfg.c along those lines and attached an idea of
> how I think it might work.
> It's probably far from being particularly elegant (or bug-free), but in a
> simple test case (matching a number of families through multi-family <alias>
> and <test>) it seems to do what I have in mind:
>
> (1) Save away every match in the test (but at most one per FcOpComma
> operand). For this, FcSubState is updated to allow a linked list that
> contains additional malloc'ed elements in the case of additional matches.
>
> (2) For assign/prepend/append edits, go through that linked list and apply
> every edit once for every match, instead of once for the test. This means,
> it should simulate the behavior of separate rules.
>
> It's not extensively tested, but maybe it can further fuel the discussion...
>
> Raimund
>



-- 
Akira TAGOH


More information about the Fontconfig mailing list