Wine's forked version of fontforge

Jens Reyer jre.winesim at gmail.com
Thu Apr 21 21:14:55 CDT 2016


Hi,

in Debian we're currently moving to enable the maintainer mode to e.g.
rebuild Wine's TrueType fonts. AJ already warned us that this is risky:

On 04/01/2016 04:54 AM, wine-bugs at winehq.org wrote:
> https://bugs.winehq.org/show_bug.cgi?id=40391
> 
> --- Comment #3 from Alexandre Julliard <julliard at winehq.org> ---
> There is definitely a risk too, particularly for fonts. They are supposed to be
> built with our forked version of fontforge
> (https://source.winehq.org/git/fontforge.git), that contains a couple of fixes
> compared to the upstream version.

I really appreciate that warning, thanks again! See a "short"
explanation at the end of the mail, why we want to do this anyway.

I'd like to figure out how to improve the resulting situation by getting
the Wine changes to fontforge applied upstream (and/or in Debian). With
"upstream" I mean github.com/fontforge. I will contact them in a later step.

Wine and Debian are both using the quite old fontforge version
20120731-b, the patches apply cleanly in Debian.
But upstream is actively developing and in Debian someone is working on
packaging a recent version (not sure with what outcome, e.g. afaik there
is at least one upstream regression blocking an update).
Are there any plans in Wine to update to a newer version?


Wine's fontforge has 4 changes. I recreated them based on AJ's merge for
20120731-b and by myself for 20160404 to get a *rough* picture of their
current state (not tested and I'm absolutely no expert in this):


1. Various hacks to avoid putting timestamps in generated files (AJ).

No relevant changes upstream, but there is some work going to allow one
to specify the timestamp in order to get the build
deterministic/reproducible. Would this make this patch obsolete?

I don't know why upstream wants timestamps at all, nor what problems
these cause for Wine. Is this Wine specific, or would it make sense to
drop timestamping upstream, too?


2. - Avoid outputting trailing spaces in sfd files (AJ).

About a third seems to be applied in 20160404. I assume the rest would
still be relevant if Wine updated its fontforge version.

Is this patch only relevant for creating fonts/glyphs, but not for
building the TrueType fonts?
Looks like a good candidate for forwarding to upstream.


3. Enable the width of individual bitmap strikes to be altered (Huw Davies).

Since the import of upstream version 20120731-b this patch only has a
third of its original size. Are the remaining Wine changes still
necessary, or are they cruft? If still needed, I guess they should be
pushed upstream.

In 20160404 not much seems to have changed, but the containing file
bitmapview.c was moved ("splitting ui code from fontforge/ to
fontforgeexe/").

Same as above: is this only needed when creating fonts? Looks like a
candidate for upstream.

4. Don't save the selected state. (Huw Davies)

I found no relevant changes upstream.
No idea about this.


Why are we doing this?
----------------------
The Debian Free Software Guidelines [DFSG] (which are the fundamental
basis for the Debian project) mandate that binaries must be accompanied
by their source (which is usually ensured by building from source), and
that you must be able to modify and redistribute the package with only
the software available in Debian.
The reasons for these are e.g. philosophical (empowering the user), QA
(rebuilding if there was an issue in the build tools), reproducibility
(recreate byte-by-byte-identically, e.g. to rule out attacks at a build
machine or do QA) or security (a build from correct source code may be
manipulated by specific compilers).
The TrueType fonts are pre-built with a forked fontforge, which isn't
(and very unlikely will ever be) in Debian. To package the pre-built
fonts imo we would have to remove Wine from official Debian (main), and
move it to the non/semi-official contrib section.
For the same reason (AFAIK, I'm not the author of these changes) we're
also regenerating opengl files, request code and unicode.
This problem was ignored/missed in the past for the Debian Wine
packages, yet this is no argument against fixing them now. We definitely
don't want Wine removed from Debian, instead keep it in and get it there
as good as possible.

btw, we're also adding a patch (based on wine staging) to append
'(Debian)' to the version string now.

btw2, can you recommend some alternative free fonts to install (either
as partial replacement or as extension to the Wine fonts)?

Greets, and thanks in advance
jre


[DFSG] https://www.debian.org/doc/debian-policy/ch-archive.html#s-dfsg,
see also the following chapter "The main archive area".



More information about the wine-devel mailing list