summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/fxge/cfx_fontmgr.cpp10
-rw-r--r--core/fxge/fx_freetype.h3
2 files changed, 12 insertions, 1 deletions
diff --git a/core/fxge/cfx_fontmgr.cpp b/core/fxge/cfx_fontmgr.cpp
index d9b03549e0..0d4524c954 100644
--- a/core/fxge/cfx_fontmgr.cpp
+++ b/core/fxge/cfx_fontmgr.cpp
@@ -98,9 +98,17 @@ void CFX_FontMgr::InitFTLibrary() {
if (m_FTLibrary)
return;
FXFT_Init_FreeType(&m_FTLibrary);
+ FT_Int major;
+ FT_Int minor;
+ FT_Int patch;
+ FXFT_Library_Version(m_FTLibrary, &major, &minor, &patch);
+ // Freetype versions >= 2.8.1 support hinting even if subpixel rendering is
+ // disabled. https://sourceforge.net/projects/freetype/files/freetype2/2.8.1/
m_FTLibrarySupportsHinting =
+ major > 2 || (major >= 2 && minor > 8) ||
+ (major >= 2 && minor >= 8 && patch >= 1) ||
FXFT_Library_SetLcdFilter(m_FTLibrary, FT_LCD_FILTER_DEFAULT) !=
- FT_Err_Unimplemented_Feature;
+ FT_Err_Unimplemented_Feature;
}
void CFX_FontMgr::SetSystemFontInfo(
diff --git a/core/fxge/fx_freetype.h b/core/fxge/fx_freetype.h
index 97d5407eb9..8a5fd5dda3 100644
--- a/core/fxge/fx_freetype.h
+++ b/core/fxge/fx_freetype.h
@@ -69,6 +69,9 @@ using FXFT_Outline_Funcs = FT_Outline_Funcs;
FT_Done_FreeType(static_cast<FT_Library>(library))
#define FXFT_Init_FreeType(library) \
FT_Init_FreeType(reinterpret_cast<FT_Library*>(library))
+#define FXFT_Library_Version(library, amajor, aminor, apatch) \
+ FT_Library_Version(reinterpret_cast<FT_Library>(library), amajor, aminor, \
+ apatch)
#define FXFT_New_Memory_Face(library, base, size, index, face) \
FT_New_Memory_Face(static_cast<FT_Library>(library), base, size, index, \
static_cast<FT_Face*>(face))