Aric Stewart : usp10: When converting common indic items use the main indic script not the Numeric or currency script , even if that was the most recent.

Alexandre Julliard julliard at winehq.org
Thu Nov 17 12:52:35 CST 2011


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

Author: Aric Stewart <aric at codeweavers.com>
Date:   Thu Nov 17 09:41:33 2011 -0700

usp10: When converting common indic items use the main indic script not the Numeric or currency script, even if that was the most recent.

---

 dlls/usp10/usp10.c |   31 ++++++++++++++++++++++++++++++-
 1 files changed, 30 insertions(+), 1 deletions(-)

diff --git a/dlls/usp10/usp10.c b/dlls/usp10/usp10.c
index 1f18294..535441f 100644
--- a/dlls/usp10/usp10.c
+++ b/dlls/usp10/usp10.c
@@ -777,6 +777,35 @@ static inline BOOL is_indic(WORD script)
     return (script >= Script_Devanagari && script <= Script_Malayalam_Numeric);
 }
 
+static inline WORD base_indic(WORD script)
+{
+    switch (script)
+    {
+        case Script_Devanagari:
+        case Script_Devanagari_Numeric: return Script_Devanagari;
+        case Script_Bengali:
+        case Script_Bengali_Numeric:
+        case Script_Bengali_Currency: return Script_Bengali;
+        case Script_Gurmukhi:
+        case Script_Gurmukhi_Numeric: return Script_Gurmukhi;
+        case Script_Gujarati:
+        case Script_Gujarati_Numeric:
+        case Script_Gujarati_Currency: return Script_Gujarati;
+        case Script_Oriya:
+        case Script_Oriya_Numeric: return Script_Oriya;
+        case Script_Tamil:
+        case Script_Tamil_Numeric: return Script_Tamil;
+        case Script_Telugu:
+        case Script_Telugu_Numeric: return Script_Telugu;
+        case Script_Kannada:
+        case Script_Kannada_Numeric: return Script_Kannada;
+        case Script_Malayalam:
+        case Script_Malayalam_Numeric: return Script_Malayalam;
+        default:
+            return -1;
+    };
+}
+
 /***********************************************************************
  *      ScriptItemizeOpenType (USP10.@)
  *
@@ -834,7 +863,7 @@ HRESULT WINAPI ScriptItemizeOpenType(const WCHAR *pwcInChars, int cInChars, int
         if ((pwcInChars[i] == 0x964 || pwcInChars[i] ==0x965) && last_indic > 0)
             scripts[i] = last_indic;
         else if (is_indic(scripts[i]))
-            last_indic = scripts[i];
+            last_indic = base_indic(scripts[i]);
     }
 
     if (psState && psControl)




More information about the wine-cvs mailing list