Package: gargoyle-free
Version: 2023.1+dfsg-4

I am the maintainer of Gargoyle. For reference, see
https://github.com/garglk/garglk/issues/822.

Gargoyle used to embed fonts in the binary, so that it always had
fonts to fall back on, no matter what. However, the SIL Open Font
License is incompatible with the GPL. Gargoyle needed new fonts with
wide Unicode support, and inevitably fonts with the OFL had to be
chosen, meaning Gargoyle can no longer embed these fonts.

Instead, Gargoyle has its own fonts that are installed and it
hard-codes paths to these fonts, which are used as fallback fonts. In
addition, Gargoyle hard-codes the path to GNU Unifont, which it also
installs.

The Debian package does not install these fonts, instead apparently
relying on system packages. But Gargoyle does not look at system fonts
for fallbacks, because it can't rely on them being installed. That's
why it includes its own copies of the fonts.  Note that fontconfig IS
used in normal operation to find fonts; it's just the fallback fonts
that it needs to find directly.

The following is what I wrote up in the issue referenced above as a
recommendation:

8< --------------------

• Gargoyle needs to know the paths of fallback fonts. If you don't
want its fonts in /usr/share/fonts, then you can place them in
/usr/share/io.github.garglk/Gargoyle and modify
font_path_fallback_system in garglk/draw.cpp to unconditionally look
for them there. If you really want system fonts to be the fallback
instead, modify the gli_initialize_fonts function to include whatever
fonts you want, ensuring that font_path_fallback_system is looking in
the right place for them.

    ◦ Gargoyle used to embed fonts in the binary so that fallback
fonts always worked. But the fonts it was using lacked decent Unicode
coverage, and almost all modern fonts use the SIL Open Font License
which does not allow embedding in a GPL program. So Gargoyle now has
to find fonts externally. If a user specifies an invalid font,
Gargoyle will look for its fallback fonts, and if it can't find them,
it aborts.

• Either install Gargoyle's Unifont fonts (which by default go into
/usr/share/io.github.garglk/Gargoyle, so shouldn't interfere with
anything), or make the system's unifont package a dependency, and
modify make_substitution_fonts to point to the system unifont.

8< --------------------

In short, to work properly, Gargoyle needs to know where its fonts
are, and won't rely on fontconfig to find them.  These fallback fonts
will only ever be used if the user's specified fonts can't be found,
or in the case of Unifont, it will be used if the selected font is
missing a glyph.

Reply via email to