Aric Stewart : usp10: Insert dotted circle (U+25CC) for invalid combining sequences in Syriac.

Alexandre Julliard julliard at winehq.org
Mon Jun 4 13:27:13 CDT 2012


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

Author: Aric Stewart <aric at codeweavers.com>
Date:   Mon Jun  4 07:44:06 2012 -0500

usp10: Insert dotted circle (U+25CC) for invalid combining sequences in Syriac.

---

 dlls/usp10/shape.c |   50 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 50 insertions(+), 0 deletions(-)

diff --git a/dlls/usp10/shape.c b/dlls/usp10/shape.c
index fcf71f8..cf137bb 100644
--- a/dlls/usp10/shape.c
+++ b/dlls/usp10/shape.c
@@ -1099,6 +1099,54 @@ static void ContextualShape_Hebrew(HDC hdc, ScriptCache *psc, SCRIPT_ANALYSIS *p
  * ContextualShape_Syriac
  */
 
+static int combining_lexical_Syriac(WCHAR c)
+{
+    enum {Syriac_Norm=0, Syriac_DIAC1, Syriac_DIAC2, Syriac_DIAC3, Syriac_DIAC4, Syriac_DIAC5, Syriac_DIAC6, Syriac_DIAC7, Syriac_DIAC8, Syriac_DIAC9, Syriac_DIAC10, Syriac_DIAC11, Syriac_DIAC12, Syriac_DIAC13, Syriac_DIAC14, Syriac_DIAC15, Syriac_DIAC16, Syriac_DIAC17};
+
+   switch(c)
+    {
+        case 0x730:
+        case 0x733:
+        case 0x736:
+        case 0x73A:
+        case 0x73D: return Syriac_DIAC1; break;
+        case 0x731:
+        case 0x734:
+        case 0x737:
+        case 0x73B:
+        case 0x73E: return Syriac_DIAC2; break;
+        case 0x740:
+        case 0x749:
+        case 0x74A: return Syriac_DIAC3; break;
+        case 0x732:
+        case 0x735:
+        case 0x73F: return Syriac_DIAC4; break;
+        case 0x738:
+        case 0x739:
+        case 0x73C: return Syriac_DIAC5; break;
+        case 0x741:
+        case 0x30A: return Syriac_DIAC6; break;
+        case 0x742:
+        case 0x325: return Syriac_DIAC7; break;
+        case 0x747:
+        case 0x303: return Syriac_DIAC8; break;
+        case 0x748:
+        case 0x32D:
+        case 0x32E:
+        case 0x330:
+        case 0x331: return Syriac_DIAC9; break;
+        case 0x308: return Syriac_DIAC10; break;
+        case 0x304: return Syriac_DIAC11; break;
+        case 0x307: return Syriac_DIAC12; break;
+        case 0x323: return Syriac_DIAC13; break;
+        case 0x743: return Syriac_DIAC14; break;
+        case 0x744: return Syriac_DIAC15; break;
+        case 0x745: return Syriac_DIAC16; break;
+        case 0x746: return Syriac_DIAC17; break;
+        default: return Syriac_Norm;
+    }
+}
+
 #define ALAPH 0x710
 #define DALATH 0x715
 #define RISH 0x72A
@@ -1189,6 +1237,8 @@ right_join_causing(neighbour_joining_type(i,dirR,context_type,cChars,psa)))
 
     HeapFree(GetProcessHeap(),0,context_shape);
     HeapFree(GetProcessHeap(),0,context_type);
+
+    mark_invalid_combinations(hdc, pwcChars, cChars, pwOutGlyphs, pcGlyphs, dirL, pwLogClust, combining_lexical_Syriac);
 }
 
 /*




More information about the wine-cvs mailing list