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

This commit is contained in:
Aric Stewart 2012-06-04 07:44:06 -05:00 committed by Alexandre Julliard
parent 8b9a7a1ed8
commit 3fd459b232
1 changed files with 50 additions and 0 deletions

View File

@ -1099,6 +1099,54 @@ static void ContextualShape_Hebrew(HDC hdc, ScriptCache *psc, SCRIPT_ANALYSIS *p
* ContextualShape_Syriac * 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 ALAPH 0x710
#define DALATH 0x715 #define DALATH 0x715
#define RISH 0x72A #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_shape);
HeapFree(GetProcessHeap(),0,context_type); HeapFree(GetProcessHeap(),0,context_type);
mark_invalid_combinations(hdc, pwcChars, cChars, pwOutGlyphs, pcGlyphs, dirL, pwLogClust, combining_lexical_Syriac);
} }
/* /*