Re: F29 liberations-fonts dependencies are messed in several packages(or it's dnf)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Le vendredi 13 septembre 2019 à 12:18 +0200, Kevin Kofler a écrit :
> Nicolas Mailhot via devel wrote:
> > That's an historical artefact, that made sense when everyone used
> > the
> > same dozen font on windows, and when each and everyone of them
> > could be
> > treated as a special case. Nowadays, even on Linux (what a change a
> > decade made) the font catalog is huge, and font processing *MUST*
> > be
> > generic to scale.
> 
> But the fonts shipped with M$ Windows or M$ Office are still by far
> the most 
> widely used. And those are referenced as "Arial" and "Arial Narrow". 

So what ?

We will never display Arial and Arial Narrow for trademark reasons.

What you see in font lists is not what is declared in the files
themselves (first, because font files have several layers of naming,
second, because both Linux and Windows rewrite what the font files
declare, except for very very old legacy windows programs that are so
dumb they use the raw values of the most obsolete and legacy layer of
font naming; those programs will fail with Liberation any version
because no Liberation font file was ever tagged with Arial within
itself for legal reasons).

We do not need to slavishly copy font list artefact in package naming
(that's why apache is in a package named httpd)

And so on.

> So we 
> NEED separate Liberation Sans and Liberation Sans Narrow fonts that
> can be 
> used as drop-in font substitutes for these.
> 
> > > So there need to be 2 separate fonts.
> > 
> > No, what we need is to have a narrow set of liberation sans faces
> > installed with the rest of the liberation sans. That's not the same
> > thing as enshrining windows 95 style ways of deploying fonts.
> > (windows
> > 95 was engineered around truetype limitations which have been
> > solved in
> > opentype a long time ago; modern truetype is opentype).
> 
> No, sorry. We need to be compatible with existing documents and (in
> the case 
> of WINE) applications. This is the whole point of the Liberation
> fonts.

You're conflating package naming with font lists, and you're assuming
fonts files have a single naming layer, when all opentype formats
provide several layers of legacy naming to accomodate legacy apps.

There's zip reason for the Fedora package naming and split to be built
around legacy layers of naming and to force every single Fedora app to
use windows 95 conventions.

And even if the font files didn't include several layers of legacy
naming, that's what fontconfig aliasing exists for.

Your apps are using fontconfig aliasing since that's what tells them
Arial is really Liberation Sans on Linux systems; the mecanism in
fontconfig to tell apps
   Arial Narrow + Bold Italic is really
   Liberation Sans + Narrow Bold Italic,
is exactly the same than to tell apps
   Arial Narrow + Bold Italic is really
   Liberation Sans Narrow + Bold Italic

The font files can and do declare both Liberation Sans + Narrow Bold
Italic and Liberation Sans Narrow + Bold Italic at different layers of
opentype naming; you're only seing one of those in GUI font lists
because there is not point of drowning users in font aliases, so apps
choose one to display, and work with all of them internally.

The legacy way of declaring Liberation Sans + Narrow Bold is actually
forbidden by the opentype standard in its most recent layer of naming.
> 
> And this is only the technical part, there is also a legal issue:
> 
> > And nothing prevents either using a src.rpm with two sources, or
> > making
> > a liberations-sans-narrow that supplements the base liberation-sans
> > package, or making liberation-sans-fonts depend directly on
> > liberation-sans-narrow > version. All of which result in a working
> > standard generic font(liberationsans) dep.
> 
> Liberation 1 and Liberation 2 are under different, incompatible
> licenses. It 
> would be illegal to merge the 2 fonts into a single font.

That's not how the tech works, the fact that the same font files are
deployed in X Y or Z packages does not change the legal or technical
content of those files.

What you see as single font entries in font lists are a collection of
font files assembled by fontconfig.

> The only legal way to merge the fonts would be to stick to Liberation
> 1 for 
> Liberation Sans too,

Nope, because different faces of the same font family are deployed with
different font files, so regardless of the packaging, Liberation Sans
Narrow Bold will always exist in a different file that Liberation Sans
Bold (unless you try to go ttc or otc, that no one except CJK font
users ever tried to do, because of the huge legal and management hell
of mixing different faces and font families in a simgle file).

The legalities hit when you attempt to copy glyph or hinting material
from Liberation Sans Bold v1 to Liberation Sans Bold v2,
because Liberation Sans Bold is a single font face, that exists in a
single font file.

> This is absolutely wrong. The reason we have this breakage right now
> is 
> because somebody decided that liberation-fonts should Obsolete and
> Provide 
> liberation-narrow-fonts without actually providing that font.

The reason we have this breakage right now is that people who should
know better have provided the liberation packagers with bad advice,
because they forgot that understanding packaging mecanisms, didn't
dispense from undertanding the technical object being packaged.

> That it is a 
> narrow variant of Liberation Sans is entirely irrelevant

Nope, because since it is a variant of Liberation Sans, rpm font
autoprovides apply, and using explicit package names when autoprovides
exist never ended well.

The correct way to do things (correct because it is future-proof and
does not result in breakage in one or two releases) is to remove any
dep on liberation-sans-fonts or liberation-sans-narrow-fonts in third
party packages, have them require font(liberationsans) and let the
liberation sans packagers manage font(liberationsans) deployment in
one, two or n packages, with a main package dragging in other packages
if they deem it necessary.

And then the head package can obsolete any anterior version of the
package(set), and the narrow faces may exist or not as separate
packages.

The root cause of the failure is the explicit reference to a separate
narrow package in app packages, and it was compounded when, instead of
cleaning up this reference, and get a clean simple and maintainable
dependency graph, the Liberation packagers tried to make it exist
again.


> And since Liberation Sans Narrow is a different font

It is not functionnally. Technically, a legacy artefact is still
exposed. It will be cleaned up at the font format or the fontconfig
layer sooner or later (as windows already does in the most recent of
its text stacks).

Use the correct naming (which is already available), it's the only one
future-proof.


Regards,

-- 
Nicolas Mailhot
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
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/devel@xxxxxxxxxxxxxxxxxxxxxxx




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux