font-ibm-plex has a nonfree dependency

  • Open
  • quality assurance status badge
Details
2 participants
  • Greg Farough
  • Philip McGrath
Owner
unassigned
Submitted by
Greg Farough
Severity
normal
G
G
Greg Farough wrote on 9 Feb 2022 22:39
(address . bug-guix@gnu.org)
87zgmzvhwj.fsf@gnu.org
Hi, Guix developers:

As far as I can tell, the IBM Plex family of fonts requires the
nonfree program FontLab Studio to build.

From Plex's GitHub[1] page:

Toggle quote (6 lines)
> To build binary font files from .vfb sources you need FontLab Studio
> 5. A Python script called IBM Plex export FDK files.py is necessary
> to export the proper files from FontLab. To run this script you’ll
> need the RoboFab library. Also, you’ll need to have the Adobe Font
> Development Kit for OpenType (AFDKO) installed.

This seems to be a problem for the FSDG[2]'s requirement that a distro
be "self-hosting:"

Toggle quote (6 lines)
> In particular, a free system distribution should be self-hosting.
> This means that you must be able to develop and build the system
> with tools that the system provides you. As a result, a free system
> distribution cannot include free software that can only be built by
> using nonfree software.

This is one of the reasons Debian[3] has moved the font to the "contrib"
section of its repos.

Toggle quote (8 lines)
> IBM releases Plex as "open source", but unfortunately the freedom
> status of the font is less than ideal, as it requires non-free
> software to be built from source (see README.md, Requirements section,
> and [0]). The problematic step is the hinting, which is done with
> FontLab Studio, which is proprietary software. There is currently no
> Free Software program that is able to work with the high-level hinting
> command language used by FontLab Studio.

So, I think this font should probably be removed from Guix.

(Disclaimer: I'm an FSF employee, but consider this a personal bug
report sent from a personal address.)

Thanks for your work.

-g


--
"We carry a new world here, in our hearts. That world is growing in
this minute."
-----BEGIN PGP SIGNATURE-----

iQJCBAEBCAAsFiEEfMx+zT146zhPbALIlmlRYXoUnHMFAmIENJwOHGdyZWdmQGdu
dS5vcmcACgkQlmlRYXoUnHO1ng//YWNnHf0D7Wl056ePMfy62pt5HNosZBy0zsx2
z+HVQChKFUB7tcws+9N8peF+PwvB5dAfRVK88nuooNH4irgLbF7z2Q+qeO8fYdQA
kOM5gQMCWdEC+SwYfok/ommSxugui/UYlGB+7xsWyymtuCq1qSCnty4PRm2/vVP3
g/rhwP7sDUKe2exQMhcHuE7EgcftLl+cjETEwXtVuggof/4I2svzLPX8XNsjnWzv
zfR0uMkmh1o0vzcVYU0MUBpYhXwdlCAyGlg2V+FXk1jdn9qSVxCeBb0VUi5IkdF3
mPpxuxqShgRCOpRvNlKxPoIblASn6M0QsetkLXd7HM5T4I7NDKsprAudq7tFjYVW
nr6YbFniOq6ZWfvPVpKFeYSaciFnWMjmQH/nIXkXUG7Td+gyNIlSTxia0+tsNxmR
QguuxJ9m+XDgPClpj34TitpQnaiwy8JC4UufxqvDjdPMQff6sq7KB4p4MfJEBy63
HXG7wCqLBmFjBQ5p2NZTyQUYA1aN8LX3NLP5xHvCzIThhfasA5jjJ1dRXfbK3/9C
hskp5eALIyB42c8LYrxEAavThkEY9vpDFHMvzSIZiugsMBzD15ff5U57Yp8YrT6q
1l7y+/7bqn8glH49ZQARrJE9wfYG+bRmOeWow7zVYsw+U2iOH5XzDFBpIxh3S6TV
EYIe0v8=
=3F0J
-----END PGP SIGNATURE-----

P
P
Philip McGrath wrote on 10 Feb 2022 05:09
cfd457ad-df5d-8f53-07d6-e780db37f5e0@philipmcgrath.com
Hi,

On 2/9/22 16:39, Greg Farough wrote:
Toggle quote (5 lines)
> Hi, Guix developers:
>
> As far as I can tell, the IBM Plex family of fonts requires the
> nonfree program FontLab Studio to build.

...

Toggle quote (12 lines)
> This is one of the reasons Debian[3] has moved the font to the "contrib"
> section of its repos.
>
>> IBM releases Plex as "open source", but unfortunately the freedom
>> status of the font is less than ideal, as it requires non-free
>> software to be built from source (see README.md, Requirements section,
>> and [0]). The problematic step is the hinting, which is done with
>> FontLab Studio, which is proprietary software. There is currently no
>> Free Software program that is able to work with the high-level hinting
>> command language used by FontLab Studio.
>

I *think* this may no longer be true---with the caveat that I know just
enough about font development to know how little I really know.

According to a 2019 GitHub comment[1] by Paul van der Laan (one of the
IBM PLEX designers):

Toggle quote (6 lines)
> The IBM Plex instances started their life as interpolated files in RoboFont which were checked and refined manually for rounding errors in outlines and metrics. Settings in the font info might have been tailored for specific instances as well. Afterwards they were converted to TrueType outlines, and together with the PostScript versions they were hinted in FontLab 5.
>
> If you are interested to work with the instances then I strongly recommend to take the FontLab files because these are of a much higher fidelity than plain interpolated instances.
>
> With a utility such as vfb2ufo these files can be converted to UFO files. Although you will probably loose most, if not all all, hinting data when doing so.

Apparently that final caveat is not true. In another GitHub issue[2][3]
(about the proprietary FontLab 5 reaching end-of-life), Jens Kutilek wrote:

Toggle quote (2 lines)
> I have my own Python implementation of a FontLab-style TTH compiler which can take an UFO (from vfb2ufo so it contains the FL TT hinting code) and compile the TT instructions. I would be open to release it if there are no objections from the FontLab guys.

...

Toggle quote (2 lines)
> The alignment zone deltas are stored in the UFO generated by vfb2ufo, so they can be accessed there by any script working with the UFO.

Searching further, I found a comment [4] on the discussion of TrueType
instructions in the UFO spec saying he was working to enhance the free
program ufo2ft "so FontLab hinting code from UFOs generated by vfb2ufo
will compile into TTFs and stay 100% rendering-compatible with fonts
generated directly from FontLab 5." This support hasn't been merged into
upstream ufo2ft yet---more specifically, it was merged last fall but
then reverted [5] due to (in my cursorily-formed opinion) relatively
minor issues like better unit tests, but a revised pull request [6] was
opened just 27 days ago.

In any case, apparently the code exists. It has even used IBM Plex as an
example.[7]

I haven't actually tried to use it, though!

-Philip

[5]:
[7]:
?