Nicolas Mailhot wrote:
> 2. fontconfig strives to hide all the legacy ways to designate different
> parts of this ideal font, and strives to expose a single "font" objet no
> matter what quirks exist in individual font files. We stop exposing lots
> of weird quirky bits right and left, that need manual assembling by
> users, or glue-ing with TEX macros.
>
> No foo variable, foo hebrew, foo narrow, foo caption, just a single foo
> with different available features (full variability or fixed states on
> the default axis, real upstream provided states or fakes generated by
> fontconfig at pango’s request[5], etc)
While such a model sounds really nice in theory, especially if missing
variants can be synthesized (e.g., automatic slanting to provide italic
versions where no native one is available), I am worried about some of the
practical implications:
* There is no longer a way to filter only for native high-quality variants,
excluding synthesized ones. Or in particular, to just request a bold,
thin, wide, narrow, or italic version of a font without caring about
(e.g.) how thick the bold version actually is, but preferring a native
variant over a synthesized one with some arbitrary thickness.
* The native variant may only support a subset of the characters of the base
font. See, e.g., Liberation Sans Narrow, which is stuck at an older
version because it is not part of the upstream "code" drop used as the
basis for the new version. With your approach, there is also no way to
explicitly force the use of the synthesized version. Will fontconfig or a
higher level be smart enough to synthesize from the base font characters
missing in the native variant but available in the base font?
* How will fontconfig decide which of the versions to pick as the base? If,
e.g., there is a Foo with 100% width and a Foo Narrow with 50% width,
which one would be picked for, say, Foo 71%? (Note that 71% is between the
geometric mean and the arithmetic mean of 100% and 50%.) Or, say, you have
a Foo with 100% width and a Foo Narrow with 80% width, and the user
requests Foo 160%, would the integer factor 2 from 80% to 160% potentially
lead to a better scaling? Or, say, the font provides only Foo Bold and Foo
Italic, and the user requests Foo Bold Italic, do you bolden Foo Italic or
slant Foo Bold, or even bolden and slant Foo Regular?
* I see you mentioning pango. What will happen for applications not using
pango? Qt applications come to my mind, obviously, but also applications
using neither GTK+ nor Qt (which include popular ones where fonts are
crucial, such as LibreOffice, where GTK+ and Qt support are only in
optional plugins).
* The font selectors also need to support all those settings. If an
application shows some legacy font selector that does not support them,
the user is stuck with no way to use the variants, whereas the current
approach of abusing the family name with suffixes does the job. E.g.,
Liberation Sans Narrow would just vanish from legacy applications with no
way for the user to select it.
So, to sum it up, I kinda like the idea, but I am very worried about
functionality regressions popping up in practice.
Kevin Kofler
_______________________________________________
devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]
Fedora Code of Conduct:
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives:
https://lists.fedoraproject.org/archives/list/[email protected]