[Fontconfig] More on expressiveness of the config language

Behdad Esfahbod behdad at behdad.org
Fri Jan 4 00:08:18 PST 2013


Ok, here's my proposed 00-scale-bitmap-fonts.conf:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>

<match target="font">
  <test name="scalable" compare="eq">
    <bool>false</bool>
  </test>
  <edit name="patternpixelsize" mode="assign">
    <name target="pattern">pixelsize</name>
  </edit>
  <edit name="pixelsizefixupfactor" mode="assign">
    <divide>
      <name>patternpixelsize</name>
      <name>pixelsize</name>
    </divide>
  </edit>
</match>
<match target="font">
  <test name="scalable" compare="eq">
    <bool>false</bool>
  </test>
  <edit name="scalingnotneeded" mode="assign">
    <and>
      <less>
        <name>pixelsizefixupfactor</name>
        <double>1.2</double>
      </less>
      <more>
        <name>pixelsizefixupfactor</name>
        <double>0.8</double>
      </more>
    </and>
  </edit>
</match>
<!--
  So far we determined the scale factor.  Now, check and if
  scaling is NOT desirable, just reset the scale factor to 1.0.
  -->
<match target="font">
  <test name="scalable" compare="eq">
    <bool>false</bool>
  </test>
  <test name="patternpixelsize" compare="less">
    <double>64</double>
  </test>
  <test name="hinting" compare="eq">
    <bool>true</bool>
  </test>
  <test name="scalingnotneeded" compare="eq">
    <bool>true</bool>
  </test>
  <edit name="pixelsizefixupfactor" mode="assign">
    <double>1.0</double>
  </edit>
</match>
<!--
  If we *are* going to scale, go ahead and do it.
  -->
<match target="font">
  <test name="scalable" compare="eq">
    <bool>false</bool>
  </test>
  <test name="pixelsizefixupfactor" compare="not_eq">
    <double>1.0</double>
  </test>
  <edit name="matrix" mode="assign">
    <times>
      <name>matrix</name>
      <matrix>
        <name>pixelsizefixupfactor</name> <double>0</double>
        <double>0</double> <name>pixelsizefixupfactor</name>
       </matrix>
    </times>
  </edit>
  <edit name="size" mode="assign">
    <divide>
      <name>size</name>
      <name>pixelsizefixupfactor</name>
    </divide>
  </edit>
</match>

</fontconfig>


More information about the Fontconfig mailing list