gdi32: Handle pre-Unicode symbol TTFs with symbols at U+00XX.
Konstantin L. Metlov
metlov at fti.dn.ua
Tue May 10 08:07:09 CDT 2011
Commit 834378183ad2dffa84fab63b080c31241ac33cba handles the case when glyph is in the U+F0XX range differently
from the original patch. The commit (as I've just tested) does not fix the problem with special symbols in
KOMPAS 3D CAD, which original patch fixed. With this patch I propose to revert the changes of commit
834378183ad2dffa84fab63b080c31241ac33cba and apply the original patch instead.
With the best regards,
Konstantin.
---
dlls/gdi32/freetype.c | 8 +++++---
1 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/dlls/gdi32/freetype.c b/dlls/gdi32/freetype.c
index a3e9cec..f323858 100644
--- a/dlls/gdi32/freetype.c
+++ b/dlls/gdi32/freetype.c
@@ -4554,13 +4554,15 @@ static FT_UInt get_glyph_index(const GdiFont *font, UINT glyph)
}
if(font->ft_face->charmap->encoding == FT_ENCODING_MS_SYMBOL && glyph < 0x100)
+ glyph = glyph + 0xf000;
+ glyphId = pFT_Get_Char_Index(font->ft_face, glyph);
+
+ if ((glyphId == 0) && (font->ft_face->charmap->encoding == FT_ENCODING_MS_SYMBOL) && (glyph >= 0xf000) &&
(glyph < 0xf100))
{
/* there is a number of old pre-Unicode "broken" TTFs, which
do have symbols at U+00XX instead of U+f0XX */
- if (!(glyphId = pFT_Get_Char_Index(font->ft_face, glyph + 0xf000)))
- glyphId = pFT_Get_Char_Index(font->ft_face, glyph);
+ glyphId = pFT_Get_Char_Index(font->ft_face, glyph - 0xf000);
}
- else glyphId = pFT_Get_Char_Index(font->ft_face, glyph);
return get_GSUB_vert_glyph(font,glyphId);
}
--
1.7.0.4
More information about the wine-patches
mailing list