[Fontconfig] Hinting paths
Nikolaus Waxweiler
madigens at gmail.com
Tue Nov 3 12:09:53 PST 2015
> Actually do nothing in fontconfig for that. how invoking APIs in
> FreeType depends on applications that takes care of those properties.
> fontconfig just manages and defines those properties and provides
> turning on/off through API. so if you want to see how it actually
> behaves, better checking applications/libraries.
Ah okay. I couldn't quite reproduce my findings after I reset my conf.d
to mostly defaults. Oh well.
By the way, I attach my first attempt at providing
per-font-configuration. Please have a look.
Should you include them, I recommend installing 10-otf-hintnative.conf,
10-pfab-hintauto.conf and 10-ttf-hintauto.conf as the default. This will
result in Y-axis-only fitting out of the box, like Microsoft's
ClearType, DirectWrite and Adobe's proprietary font engine.
-------------- next part --------------
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<!--
This configuration file controls how TrueType fonts (commonly .ttf) are
fitted to the pixel grid ("hinted").
In practice, this configuration tells rendering libraries like cairo to
tell FreeType to use native hints supplied by the font. TrueType fonts can
be natively fitted to either the Y-axis only (ClearType) or to both X-and-Y
axes (pre-ClearType). What you get depends on the font and the installed
version of FreeType.
Note that "autohint" is set to 'false'. Setting it to 'true' enables the
autohinter that ignores native hints and changes the meaning of 'hintfull'
and 'hintmedium' to automatic X-and-Y-fitting.
-->
<match target="font">
<test name="fontformat">
<string>TrueType</string>
</test>
<edit mode="assign" name="hinting">
<bool>true</bool>
</edit>
<edit mode="assign" name="autohint">
<bool>false</bool>
</edit>
<edit mode="assign" name="hintstyle">
<const>hintfull</const>
</edit>
</match>
</fontconfig>
-------------- next part --------------
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<!--
This configuration file controls how Type 1 or Postscript fonts (commonly
.pfa or .pfb) are fitted to the pixel grid ("hinted").
In practice, this configuration tells rendering libraries like cairo to
tell FreeType to use native hints supplied by the font. FreeType will
therefore fit glyphs on the Y-axis only, like Microsoft's ClearType,
DirectWrite and Adobe's proprietary engine. For your information: Type 1 or
Postscript fonts are not meant to be natively fitted to the X-and-Y-axes
like it's possible for TrueType fonts.
Note that "autohint" is set to 'false'. Setting it to 'true' enables the
autohinter that ignores native hints and changes the meaning of 'hintfull'
and 'hintmedium' to automatic X-and-Y-fitting.
-->
<match target="font">
<test name="fontformat">
<string>Type 1</string>
</test>
<edit mode="assign" name="hinting">
<bool>true</bool>
</edit>
<edit mode="assign" name="autohint">
<bool>false</bool>
</edit>
<edit mode="assign" name="hintstyle">
<const>hintfull</const>
</edit>
</match>
</fontconfig>
-------------- next part --------------
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<!--
This configuration file controls how OpenType/CFF fonts (commonly .otf) are
fitted to the pixel grid ("hinted").
In practice, this configuration tells rendering libraries like cairo to
tell FreeType to use native hints supplied by the font. FreeType will
therefore fit glyphs on the Y-axis only, like Microsoft's ClearType,
DirectWrite and Adobe's proprietary engine. For your information:
OpenType/CFF fonts are not meant to be natively fitted to the X-and-Y-axes
like it's possible for TrueType fonts.
Note that "autohint" is set to 'false'. Setting it to 'true' enables the
autohinter that ignores native hints and changes the meaning of 'hintfull'
and 'hintmedium' to automatic X-and-Y-fitting.
-->
<match target="font">
<test name="fontformat">
<string>CFF</string>
</test>
<edit mode="assign" name="hinting">
<bool>true</bool>
</edit>
<edit mode="assign" name="autohint">
<bool>false</bool>
</edit>
<edit mode="assign" name="hintstyle">
<const>hintfull</const>
</edit>
</match>
</fontconfig>
-------------- next part --------------
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<!--
This configuration file controls how OpenType/CFF fonts (commonly .otf) are
fitted to the pixel grid ("hinted").
In practice, this configuration tells rendering libraries like cairo to
tell FreeType to use the autohinter. It ignores native hints in a font and
algorithmically generates its' own.
FreeType's autohinter has two "hintstyle" modes:
- hintslight: Only fit a font to the Y-axis like Microsoft's ClearType,
DirectWrite and Adobe's proprietary font engine. This is a compromise
between outline fidelity and sharpness.
- hintmedium/hintfull: Fit a font to the X-and-Y axis similar to what's
been done on Windows before ClearType.
This configuration defaults to 'hintslight' because it works reasonably
well across different scripts and on both low-DPI and high-DPI screens.
-->
<match target="font">
<test name="fontformat">
<string>CFF</string>
</test>
<edit mode="assign" name="hinting">
<bool>true</bool>
</edit>
<edit mode="assign" name="autohint">
<bool>true</bool>
</edit>
<edit mode="assign" name="hintstyle">
<const>hintslight</const>
</edit>
</match>
</fontconfig>
-------------- next part --------------
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<!--
This configuration file controls how TrueType fonts (commonly .ttf) are
fitted to the pixel grid ("hinted").
In practice, this configuration tells rendering libraries like cairo to
tell FreeType to use the autohinter. It ignores native hints in a font and
algorithmically generates its' own.
FreeType's autohinter has two "hintstyle" modes:
- hintslight: Only fit a font to the Y-axis like Microsoft's ClearType,
DirectWrite and Adobe's proprietary font engine. This is a compromise
between outline fidelity and sharpness.
- hintmedium/hintfull: Fit a font to the X-and-Y axis similar to what's
been done on Windows before ClearType.
This configuration defaults to 'hintslight' because it works reasonably
well across different scripts and on both low-DPI and high-DPI screens.
-->
<match target="font">
<test name="fontformat">
<string>TrueType</string>
</test>
<edit mode="assign" name="hinting">
<bool>true</bool>
</edit>
<edit mode="assign" name="autohint">
<bool>true</bool>
</edit>
<edit mode="assign" name="hintstyle">
<const>hintslight</const>
</edit>
</match>
</fontconfig>
-------------- next part --------------
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<!--
This configuration file controls how Type 1 or Postscript fonts (commonly
.pfa or .pfb) are fitted to the pixel grid ("hinted").
In practice, this configuration tells rendering libraries like cairo to
tell FreeType to use the autohinter. It ignores native hints in a font and
algorithmically generates its' own.
FreeType's autohinter has two "hintstyle" modes:
- hintslight: Only fit a font to the Y-axis like Microsoft's ClearType,
DirectWrite and Adobe's proprietary font engine. This is a compromise
between outline fidelity and sharpness.
- hintmedium/hintfull: Fit a font to the X-and-Y axis similar to what's
been done on Windows before ClearType.
This configuration defaults to 'hintslight' because it works reasonably
well across different scripts and on both low-DPI and high-DPI screens.
-->
<match target="font">
<test name="fontformat">
<string>Type 1</string>
</test>
<edit mode="assign" name="hinting">
<bool>true</bool>
</edit>
<edit mode="assign" name="autohint">
<bool>true</bool>
</edit>
<edit mode="assign" name="hintstyle">
<const>hintslight</const>
</edit>
</match>
</fontconfig>
-------------- next part --------------
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<!--
This configuration file controls how OpenType/CFF fonts (commonly .otf) are
fitted to the pixel grid ("hinted").
In practice, this configuration tells rendering libraries like cairo to
tell FreeType to do no grid-fitting at all. This is basically what's done
on Apple's Mac OS X.
Note that "autohint" is set to 'false' and "hintstyle" to 'hintnone'.
Changing those might trigger the autohinter depending on how the rendering
library interprets this configuration.
-->
<match target="font">
<test name="fontformat">
<string>CFF</string>
</test>
<edit mode="assign" name="hinting">
<bool>false</bool>
</edit>
<edit mode="assign" name="autohint">
<bool>false</bool>
</edit>
<edit mode="assign" name="hintstyle">
<const>hintnone</const>
</edit>
</match>
</fontconfig>
-------------- next part --------------
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<!--
This configuration file controls how TrueType fonts (commonly .ttf) are
fitted to the pixel grid ("hinted").
In practice, this configuration tells rendering libraries like cairo to
tell FreeType to do no grid-fitting at all. This is basically what's done
on Apple's Mac OS X.
Note that "autohint" is set to 'false' and "hintstyle" to 'hintnone'.
Changing those might trigger the autohinter depending on how the rendering
library interprets this configuration.
-->
<match target="font">
<test name="fontformat">
<string>TrueType</string>
</test>
<edit mode="assign" name="hinting">
<bool>false</bool>
</edit>
<edit mode="assign" name="autohint">
<bool>false</bool>
</edit>
<edit mode="assign" name="hintstyle">
<const>hintnone</const>
</edit>
</match>
</fontconfig>
-------------- next part --------------
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<!--
This configuration file controls how Type 1 or Postscript fonts (commonly
.pfa and .pfb) are fitted to the pixel grid ("hinted").
In practice, this configuration tells rendering libraries like cairo to
tell FreeType to do no grid-fitting at all. This is basically what's done
on Apple's Mac OS X.
Note that "autohint" is set to 'false' and "hintstyle" to 'hintnone'.
Changing those might trigger the autohinter depending on how the rendering
library interprets this configuration.
-->
<match target="font">
<test name="fontformat">
<string>Type 1</string>
</test>
<edit mode="assign" name="hinting">
<bool>false</bool>
</edit>
<edit mode="assign" name="autohint">
<bool>false</bool>
</edit>
<edit mode="assign" name="hintstyle">
<const>hintnone</const>
</edit>
</match>
</fontconfig>
More information about the Fontconfig
mailing list