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

[pkg-wine-party] Bug#818925: [wine-development] Glitches in Windows window systemmenu (minimize, windowed/fullscreen, close)



On 03/23/2016 01:33 AM, Jens Reyer wrote:
[...]
> Ok. So we need to package these TrueType fonts again.
> 
> See also #814844 (wine: fonts-wine fonts are not found). I assume
> upstream's fix for that bug now triggers your issue.

See attached InstallAndUseFonts.patch (applies to git branch stretch,
where we currently package the fonts from). It:
- adds the ttf fonts
- backports upstream's patch to take the fontdir specified at build time
into account
- sets fontdir /usr/share/wine/fonts

This should solve all user visible fonts related issues in both wine and
wine-development.


> However I just noted that the TrueType fonts are generated by upstream.
> So we should regenerate before we can package them.

Initially I thought that this requires to manually change the Makefile
to build the TrueType fonts. However I noted that this happens upstream
in "maintainer mode". I implemented that, see attached
RebuildFonts.patch (for branch stretch).

Upstream's maintainer mode sets the CFLAG "-Werror". I reported the
first build failure on a warning at
https://bugs.winehq.org/show_bug.cgi?id=40391. (btw: we also get e.g.
"warning: 'install_wine_gecko' defined but not used [-Wunused-function]"
if we use disable/external-installers.patch). I workarounded this by
specifying "-Wno-error".

However upstream told me in that bug report that it is risky to rebuild
the TrueType fonts, because they use a forked fontforge. So what should
we do?

- Don't ship the TrueType fonts (see the already reported issues, bad idea)?
- Ship pre-built TrueType fonts (only InstallAndUseFonts.patch)?
- Regenerate the TrueType fonts (both patches)

What do you think?

Greets
jre
diff --git a/debian/changelog b/debian/changelog
index 89263dd..f280179 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -19,6 +19,10 @@ wine (1.8.1-3) UNRELEASED; urgency=medium
     - Break older wine32|64 which don't have a reverse version requirement.
     - Re-enable "err" level output by default (closes: #816014).
     - Drop version output (closes: #816017).
+    - Install wine's TrueType fonts (closes: #818925).
+    - Set fontdir /usr/share/wine/fonts.
+    - Add fontdir.patch to take into account the build time configuration
+      (closes: #814844).
 
  -- Jens Reyer <jre.winesim@gmail.com>  Sun, 13 Mar 2016 02:40:12 +0100
 
diff --git a/debian/fonts-wine.install b/debian/fonts-wine.install
index 7977454..4b761c9 100644
--- a/debian/fonts-wine.install
+++ b/debian/fonts-wine.install
@@ -1 +1,7 @@
 fonts/*.fon usr/share/wine/fonts
+
+fonts/symbol.ttf usr/share/wine/fonts
+fonts/tahoma.ttf usr/share/wine/fonts
+fonts/marlett.ttf usr/share/wine/fonts
+fonts/tahomabd.ttf usr/share/wine/fonts
+fonts/wingding.ttf usr/share/wine/fonts
diff --git a/debian/patches/fontdir.patch b/debian/patches/fontdir.patch
new file mode 100644
index 0000000..ecc802b
--- /dev/null
+++ b/debian/patches/fontdir.patch
@@ -0,0 +1,103 @@
+Description: gdi32: Take into account the fontdir directory specified at build time.
+Origin: http://source.winehq.org/git/wine.git/commit/1eac54ef7d6d90fcc973c5ea92a53be73f61ff12
+Bug: https://bugs.winehq.org/show_bug.cgi?id=40312
+Bug-Debian: https://bugs.debian.org/814844
+Applied-Upstream: 1.9.6
+
+--- a/dlls/gdi32/Makefile.in
++++ b/dlls/gdi32/Makefile.in
+@@ -49,3 +49,5 @@ C_SRCS = \
+ 	vertical.c
+ 
+ RC_SRCS = gdi32.rc
++
++freetype_EXTRADEFS = -DWINE_FONT_DIR=\"`$(MAKEDEP) -R ${datadir}/wine ${fontdir}`\"
+--- a/dlls/gdi32/freetype.c
++++ b/dlls/gdi32/freetype.c
+@@ -213,6 +213,10 @@ MAKE_FUNCPTR(FcPatternGetString);
+ #define GET_BE_WORD(x) RtlUshortByteSwap(x)
+ #endif
+ 
++#ifndef WINE_FONT_DIR
++#define WINE_FONT_DIR "fonts"
++#endif
++
+ /* This is basically a copy of FT_Bitmap_Size with an extra element added */
+ typedef struct {
+     FT_Short height;
+@@ -2960,22 +2964,44 @@ static void load_mac_fonts(void)
+ 
+ #endif
+ 
++static char *get_font_dir(void)
++{
++    const char *build_dir, *data_dir;
++    char *name = NULL;
++
++    if ((data_dir = wine_get_data_dir()))
++    {
++        if (!(name = HeapAlloc( GetProcessHeap(), 0, strlen(data_dir) + 1 + sizeof(WINE_FONT_DIR) )))
++            return NULL;
++        strcpy( name, data_dir );
++        strcat( name, "/" );
++        strcat( name, WINE_FONT_DIR );
++    }
++    else if ((build_dir = wine_get_build_dir()))
++    {
++        if (!(name = HeapAlloc( GetProcessHeap(), 0, strlen(build_dir) + sizeof("/fonts") )))
++            return NULL;
++        strcpy( name, build_dir );
++        strcat( name, "/fonts" );
++    }
++    return name;
++}
++
+ static char *get_data_dir_path( LPCWSTR file )
+ {
+     char *unix_name = NULL;
+-    const char *data_dir = wine_get_data_dir();
+-
+-    if (!data_dir) data_dir = wine_get_build_dir();
++    char *font_dir = get_font_dir();
+ 
+-    if (data_dir)
++    if (font_dir)
+     {
+         INT len = WideCharToMultiByte(CP_UNIXCP, 0, file, -1, NULL, 0, NULL, NULL);
+ 
+-        unix_name = HeapAlloc(GetProcessHeap(), 0, strlen(data_dir) + len + sizeof("/fonts/"));
+-        strcpy(unix_name, data_dir);
+-        strcat(unix_name, "/fonts/");
++        unix_name = HeapAlloc(GetProcessHeap(), 0, strlen(font_dir) + len + 1 );
++        strcpy(unix_name, font_dir);
++        strcat(unix_name, "/");
+ 
+         WideCharToMultiByte(CP_UNIXCP, 0, file, -1, unix_name + strlen(unix_name), len, NULL, NULL);
++        HeapFree( GetProcessHeap(), 0, font_dir );
+     }
+     return unix_name;
+ }
+@@ -4121,7 +4147,6 @@ static void init_font_list(void)
+     DWORD valuelen, datalen, i = 0, type, dlen, vlen;
+     WCHAR windowsdir[MAX_PATH];
+     char *unixname;
+-    const char *data_dir;
+ 
+     delete_external_font_keys();
+ 
+@@ -4137,13 +4162,9 @@ static void init_font_list(void)
+         HeapFree(GetProcessHeap(), 0, unixname);
+     }
+ 
+-    /* load the system truetype fonts */
+-    data_dir = wine_get_data_dir();
+-    if (!data_dir) data_dir = wine_get_build_dir();
+-    if (data_dir && (unixname = HeapAlloc(GetProcessHeap(), 0, strlen(data_dir) + sizeof("/fonts/"))))
++    /* load the wine fonts */
++    if ((unixname = get_font_dir()))
+     {
+-        strcpy(unixname, data_dir);
+-        strcat(unixname, "/fonts/");
+         ReadFontDir(unixname, TRUE);
+         HeapFree(GetProcessHeap(), 0, unixname);
+     }
diff --git a/debian/patches/makefile.patch b/debian/patches/makefile.patch
index b70aa83..ac2685e 100644
--- a/debian/patches/makefile.patch
+++ b/debian/patches/makefile.patch
@@ -20,7 +20,7 @@ author: Michael Gilbert <mgilbert@debian.org>
  mandir          = @mandir@
 -fontdir         = ${datadir}/wine/fonts
 -includedir      = @includedir@/wine
-+fontdir         = ${datadir}/wine
++fontdir         = /usr/share/wine/fonts
 +includedir      = @includedir@
  dlldir          = @dlldir@
  fakedlldir      = ${dlldir}/fakedlls
diff --git a/debian/patches/series b/debian/patches/series
index 221ac45..47c832a 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1,4 @@
+fontdir.patch
 makefile.patch
 kfreebsd.patch
 sfnt2fon.patch
diff --git a/debian/clean b/debian/clean
index d0f69a9..330960c 100644
--- a/debian/clean
+++ b/debian/clean
@@ -45,6 +45,7 @@ dlls/opengl32/opengl32.spec
 
 # font files
 fonts/*.fon
+fonts/*.ttf
 fonts/Makefile
 tools/sfnt2fon/sfnt2fon
 tools/sfnt2fon/sfnt2fon.o
diff --git a/debian/control.in b/debian/control.in
index 4ed092d..7bb597d 100644
--- a/debian/control.in
+++ b/debian/control.in
@@ -61,6 +61,10 @@ Build-Depends:
  libfontconfig1-dev,
  freebsd-glue [kfreebsd-any],
  ocl-icd-opencl-dev,
+ icoutils,
+ librsvg2-bin,
+ imagemagick,
+ fontforge-nox,
 Standards-Version: 3.9.7
 Homepage: http://www.winehq.org/
 Vcs-Browser: https://anonscm.debian.org/git/pkg-wine/wine.git
diff --git a/debian/rules b/debian/rules
index bee2b0c..9be0f25 100755
--- a/debian/rules
+++ b/debian/rules
@@ -33,6 +33,7 @@ CONFLAGS=--with-gnutls \
          --without-gphoto \
          --without-gstreamer \
          --disable-tests \
+         --enable-maintainer-mode \
          --libdir=/$(LIBDIR) \
          --bindir=/$(BINDIR) \
          --mandir=/$(MANDIR) \
@@ -56,6 +57,9 @@ export DEB_CFLAGS_MAINT_APPEND+=-march=armv5t
 export DEB_LDFLAGS_MAINT_APPEND+=-march=armv5t
 endif
 
+# override maintainer mode config
+export DEB_CFLAGS_MAINT_APPEND+=-Wno-error
+
 # additional files to generate
 INSTALLS=$(shell ls debian/*VERSION* | sed s/VERSION/$(VERSION)/) \
          debian/bug-control \

Reply to: