From 53703a113d4575c2b6611dedf72fadf7fb5f8fda Mon Sep 17 00:00:00 2001 From: Yifu Yu Date: Wed, 15 Oct 2014 03:23:52 +0800 Subject: [PATCH] Close #891: a dirty solution to embedded bitmap fonts. Since embedded bitmap font works incorrectly, we should avoid using them, until a final patch is available and tested. I've added `FT_LOAD_NO_BITMAP` to ALL(3) places in `_imagingft.c`, which did (not much) actually fixed the issue. A notice has also been added to `_imagingft.c`. --- _imagingft.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/_imagingft.c b/_imagingft.c index eb6313704..cebc52eb3 100644 --- a/_imagingft.c +++ b/_imagingft.c @@ -18,6 +18,17 @@ * Copyright (c) 1998-2007 by Secret Labs AB */ +/* + * Notes: + * Currently, embedded bitmap fonts within truetype fonts do not work + * properly (see issue #891), truetype fonts are loaded with + * FT_LOAD_NO_BITMAP load flags, resulting in embedded bitmap fonts + * not being used. + * + * Yifu Yu + * 2014-10-15 + */ + #include "Python.h" #include "Imaging.h" @@ -243,7 +254,7 @@ font_getsize(FontObject* self, PyObject* args) &delta); x += delta.x; } - error = FT_Load_Glyph(face, index, FT_LOAD_DEFAULT); + error = FT_Load_Glyph(face, index, FT_LOAD_DEFAULT|FT_LOAD_NO_BITMAP); if (error) return geterror(error); if (i == 0) @@ -316,7 +327,7 @@ font_getabc(FontObject* self, PyObject* args) int index, error; face = self->face; index = FT_Get_Char_Index(face, ch); - error = FT_Load_Glyph(face, index, FT_LOAD_DEFAULT); + error = FT_Load_Glyph(face, index, FT_LOAD_DEFAULT|FT_LOAD_NO_BITMAP); if (error) return geterror(error); a = face->glyph->metrics.horiBearingX / 64.0; @@ -364,7 +375,7 @@ font_render(FontObject* self, PyObject* args) im = (Imaging) id; - load_flags = FT_LOAD_RENDER; + load_flags = FT_LOAD_RENDER|FT_LOAD_NO_BITMAP; if (mask) load_flags |= FT_LOAD_TARGET_MONO;