Aric Stewart : usp10: Disable glyph indexes for Symbol, non-TrueType, and device fonts.

Alexandre Julliard julliard at winehq.org
Tue Sep 6 11:35:53 CDT 2011


Module: wine
Branch: master
Commit: 4e760d89142eabae3f1704174b3040642d2d9d73
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=4e760d89142eabae3f1704174b3040642d2d9d73

Author: Aric Stewart <aric at codeweavers.com>
Date:   Tue Sep  6 07:17:59 2011 -0500

usp10: Disable glyph indexes for Symbol, non-TrueType, and device fonts.

---

 dlls/usp10/usp10.c |   19 ++++++++++---------
 1 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/dlls/usp10/usp10.c b/dlls/usp10/usp10.c
index 61f65e4..873d10b 100644
--- a/dlls/usp10/usp10.c
+++ b/dlls/usp10/usp10.c
@@ -1050,9 +1050,6 @@ static HRESULT SS_ItemOut( SCRIPT_STRING_ANALYSIS ssa,
          (cEnd >= 0 && analysis->pItem[iItem].iCharPos >= cEnd))
             return S_OK;
 
-    uOptions |= ETO_GLYPH_INDEX;
-    analysis->pItem[0].a.fNoGlyphIndex = FALSE; /* say that we have glyphs */
-
     if (fSelected)
     {
         BkMode = GetBkMode(analysis->hdc);
@@ -1728,6 +1725,13 @@ HRESULT WINAPI ScriptShapeOpenType( HDC hdc, SCRIPT_CACHE *psc,
     ((ScriptCache *)*psc)->userScript = tagScript;
     ((ScriptCache *)*psc)->userLang = tagLangSys;
 
+    /* set fNoGlyphIndex for symbolic, and device fonts or non truetype fonts */
+    if (!psa->fNoGlyphIndex &&
+        (!(get_cache_pitch_family(psc) & TMPF_TRUETYPE) ||
+         (get_cache_pitch_family(psc) & TMPF_DEVICE) ||
+         (((ScriptCache *)*psc)->tm.tmCharSet == SYMBOL_CHARSET)))
+        psa->fNoGlyphIndex = TRUE;
+
     /* Initialize a SCRIPT_VISATTR and LogClust for each char in this run */
     for (i = 0; i < cChars; i++)
     {
@@ -1773,12 +1777,9 @@ HRESULT WINAPI ScriptShapeOpenType( HDC hdc, SCRIPT_CACHE *psc,
             rChars[i] = chInput;
         }
 
-        if (get_cache_pitch_family(psc) & TMPF_TRUETYPE)
-        {
-            SHAPE_ContextualShaping(hdc, (ScriptCache *)*psc, psa, rChars, cChars, pwOutGlyphs, pcGlyphs, cMaxGlyphs, pwLogClust);
-            SHAPE_ApplyDefaultOpentypeFeatures(hdc, (ScriptCache *)*psc, psa, pwOutGlyphs, pcGlyphs, cMaxGlyphs, cChars, pwLogClust);
-            SHAPE_CharGlyphProp(hdc, (ScriptCache *)*psc, psa, pwcChars, cChars, pwOutGlyphs, *pcGlyphs, pwLogClust, pCharProps, pOutGlyphProps);
-        }
+        SHAPE_ContextualShaping(hdc, (ScriptCache *)*psc, psa, rChars, cChars, pwOutGlyphs, pcGlyphs, cMaxGlyphs, pwLogClust);
+        SHAPE_ApplyDefaultOpentypeFeatures(hdc, (ScriptCache *)*psc, psa, pwOutGlyphs, pcGlyphs, cMaxGlyphs, cChars, pwLogClust);
+        SHAPE_CharGlyphProp(hdc, (ScriptCache *)*psc, psa, pwcChars, cChars, pwOutGlyphs, *pcGlyphs, pwLogClust, pCharProps, pOutGlyphProps);
         heap_free(rChars);
     }
     else




More information about the wine-cvs mailing list