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