From 3fd459b2327cbbe59b739302e420a7cc35e13d84 Mon Sep 17 00:00:00 2001 From: Aric Stewart Date: Mon, 4 Jun 2012 07:44:06 -0500 Subject: [PATCH] usp10: Insert dotted circle (U+25CC) for invalid combining sequences in Syriac. --- dlls/usp10/shape.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/dlls/usp10/shape.c b/dlls/usp10/shape.c index fcf71f86839..cf137bb788a 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); } /*