Module: wine Branch: master Commit: 428d3b025e4049ba5d48fb804e06d6a1b3ecd7d2 URL: http://source.winehq.org/git/wine.git/?a=commit;h=428d3b025e4049ba5d48fb804e...
Author: Aric Stewart aric@codeweavers.com Date: Wed Jun 8 14:05:10 2011 -0500
usp10: Sinhala vowels are not fully decomposed. The Kombuva is simply split off.
---
dlls/usp10/shape.c | 14 ++++++++------ 1 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/dlls/usp10/shape.c b/dlls/usp10/shape.c index 5d0c3d4..f64dbd7 100644 --- a/dlls/usp10/shape.c +++ b/dlls/usp10/shape.c @@ -1806,6 +1806,8 @@ static void DecomposeVowels(HDC hdc, WCHAR *pwOutChars, INT *pcChars, const Vowe if (pwOutChars[cWalk] == vowels[i].base) { ReplaceInsertChars(hdc, cWalk, pcChars, pwOutChars, vowels[i].parts); + if (vowels[i].parts[1]) cWalk++; + if (vowels[i].parts[2]) cWalk++; break; } } @@ -2007,7 +2009,7 @@ static int sinhala_lex(WCHAR c) case 0x0DD9: case 0x0DDB: return lex_Matra_pre; case 0x0DDA: - case 0x0DDC: return lex_Composed_Vowel; + case 0x0DDC: return lex_Matra_post; case 0x200D: return lex_ZWJ; case 0x200C: return lex_ZWNJ; case 0x00A0: return lex_NBSP; @@ -2018,17 +2020,17 @@ static int sinhala_lex(WCHAR c) else if (c>=0x0DD0 && c <=0x0DD1) return lex_Matra_post; else if (c>=0x0DD2 && c <=0x0DD3) return lex_Matra_above; else if (c>=0x0DD4 && c <=0x0DD6) return lex_Matra_below; - else if (c>=0x0DDD && c <=0x0DDE) return lex_Composed_Vowel; + else if (c>=0x0DDD && c <=0x0DDE) return lex_Matra_post; else if (c>=0x0DF2 && c <=0x0DF3) return lex_Matra_post; else return lex_Generic; } }
static const VowelComponents Sinhala_vowels[] = { - {0x0DDA, {0x0DD9,0x0DCA,0x0}}, - {0x0DDC, {0x0DD9,0x0DCF,0x0}}, - {0x0DDD, {0x0DD9,0x0DCF,0x0DCA}}, - {0x0DDE, {0x0DD9,0x0DDF,0x0}}, + {0x0DDA, {0x0DD9,0x0DDA,0x0}}, + {0x0DDC, {0x0DD9,0x0DDC,0x0}}, + {0x0DDD, {0x0DD9,0x0DDD,0x0}}, + {0x0DDE, {0x0DD9,0x0DDE,0x0}}, {0x0000, {0x0000,0x0000,0x0}}};
static void ContextualShape_Sinhala(HDC hdc, ScriptCache *psc, SCRIPT_ANALYSIS *psa, WCHAR* pwcChars, INT cChars, WORD* pwOutGlyphs, INT* pcGlyphs, INT cMaxGlyphs, WORD *pwLogClust)