Byeongsik Jeon : gdi32: Add a workaround for Freetype < 2.8.1 using v40 FT_LOAD_TARGET_MONO.
Alexandre Julliard
julliard at winehq.org
Tue Feb 19 15:29:33 CST 2019
Module: wine
Branch: master
Commit: c666a45560c3998e9cf5271d2628eb2b913d0b4f
URL: https://source.winehq.org/git/wine.git/?a=commit;h=c666a45560c3998e9cf5271d2628eb2b913d0b4f
Author: Byeongsik Jeon <bsjeon at hanmail.net>
Date: Tue Feb 19 10:25:41 2019 +0000
gdi32: Add a workaround for Freetype < 2.8.1 using v40 FT_LOAD_TARGET_MONO.
Freetype < 2.8.1 v40 has incorrect advance widths and rendering issues.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=41639
Signed-off-by: Byeongsik Jeon <bsjeon at hanmail.net>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/gdi32/freetype.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/dlls/gdi32/freetype.c b/dlls/gdi32/freetype.c
index 0fc41f3..098faff 100644
--- a/dlls/gdi32/freetype.c
+++ b/dlls/gdi32/freetype.c
@@ -170,6 +170,7 @@ static FT_TrueTypeEngineType (*pFT_Get_TrueType_Engine_Type)(FT_Library);
#ifdef FT_LCD_FILTER_H
static FT_Error (*pFT_Library_SetLcdFilter)(FT_Library, FT_LcdFilter);
#endif
+static FT_Error (*pFT_Property_Set)(FT_Library, const FT_String *, const FT_String *, const void *);
#ifdef SONAME_LIBFONTCONFIG
#include <fontconfig/fontconfig.h>
@@ -4162,6 +4163,7 @@ static BOOL init_freetype(void)
#ifdef FT_LCD_FILTER_H
pFT_Library_SetLcdFilter = wine_dlsym(ft_handle, "FT_Library_SetLcdFilter", NULL, 0);
#endif
+ pFT_Property_Set = wine_dlsym(ft_handle, "FT_Property_Set", NULL, 0);
if(pFT_Init_FreeType(&library) != 0) {
ERR("Can't init FreeType library\n");
@@ -4176,6 +4178,13 @@ static BOOL init_freetype(void)
((FT_Version.minor << 8) & 0x00ff00) |
((FT_Version.patch ) & 0x0000ff);
+ /* In Freetype < 2.8.1 v40's FT_LOAD_TARGET_MONO has broken advance widths. */
+ if (pFT_Property_Set && FT_SimpleVersion < FT_VERSION_VALUE(2, 8, 1))
+ {
+ FT_UInt interpreter_version = 35;
+ pFT_Property_Set( library, "truetype", "interpreter-version", &interpreter_version );
+ }
+
font_driver = &freetype_funcs;
return TRUE;
More information about the wine-cvs
mailing list