[Fontconfig] Font matching questions in Fontconfig, Portable
rs at mytum.de
Mon Oct 1 16:07:02 PDT 2012
> PowerPoint on Windows XP lists fonts: Times, Times New Roman, Arial,
> and Helvetica. While Arial and Helvetica are identical
This might be like that on your machine, but there's no guarantee.
Helvetica and Arial are different fonts after all. In your case
Helvetica might be a printer font that is substituted with Arial for
on-screen display because the Windows renderer has no better representation.
> When fontconfig looks up fonts by name on Windows XP (under cygwin) it
> comes back with, respectively (TrueType font unless otherwise indicated):
> Arial C:/WINDOWS/fonts/arial.ttf (style Normal)
> Helvetica C:/WINDOWS/fonts/VeraSe.ttf (style Roman)
> Times C:/WINDOWS/fonts/Vera.ttf (style Roman)
> Times New Roman C:/WINDOWS/fonts/times.ttf (style Normal)
I understand this is not what
fc-list '' family file style
gives you, but what you get with fc-match/FcFontMatch(3) when providing
such family names? (...see below)
What you get with 'fc-list' is what the fontconfig cache (updated with
fc-cache) contains. It's all the supported files that fc-cache finds in
the directories specified by <dir> tags in your fontconfig
configuration. (It will not include fonts from printer drivers.)
The cache comes into play when
* Applications enumerate fonts for drop-down boxes and such (this is
what you see in the Inkscape font selector). They often list the first
available family for every cache entry.
* Applications request a certain font by pattern, i. e. family name.
That pattern is substituted according to the target="pattern" rules in
your fontconfig configuration and the result is then fed into a distance
function to compare with all your cache entries. If 'Times' is no family
name of any font in your cache, it's up to fontconfig rules to find a
All of this is user-definable and will not yield the same result across
different OSes, distributions, home directories etc. This is intended
behavior and users are typically aware of that. If a user has a setup
where 'Times' is always mapped to the same as 'Sans', that would be a
very poor configuration of that system or user account, but I think it's
not something that you as Inkscape developer need to take care of.
(I think it's a bit strange though, since the default fontconfig
configuration files should give better aliases, in particular
30-metric-aliases.conf, if it's included.)
Now the question is what kind of fontconfig configuration Inkscape for
Windows uses, if any, as there's no system fontconfig on Windows. I
doubt it's a Cygwin build though. Maybe it ships its own version of the
GTK/Pango/fontconfig stack. In this case the application you develop
should probably use the same configuration, i. e. if you're testing with
Cygwin, you would need to make sure the configuration of your Cygwin
tree is identical to the one the distributed application uses. You can
e. g. include 30-metric-aliases.conf in etc/fonts/conf.d there, if it's
fine with the upstream guys.
For UNIX/Linux builds however, I think second-guessing the user's
fontconfig setup is not a good idea.
Worringer Str 31 Duesseldorf 40211 DE home: <rs at mytum.de>
+49-179-2981632 icq 16845346 work: <rs at interface-ag.de>
More information about the Fontconfig