Add UCharIsArabicVowel

This commit is contained in:
Vincent Wei
2019-03-12 18:34:47 +08:00
parent 9dea317925
commit 64ddca1e2f
3 changed files with 21 additions and 7 deletions
+3
View File
@@ -8578,6 +8578,9 @@ MG_EXPORT Uchar32 GUIAPI UCharToFullSizeKana (Uchar32 uc);
/** Converts a glyph to small Kana. */
MG_EXPORT Uchar32 GUIAPI UCharToSmallKana (Uchar32 uc);
/** Determines is the given Unicode character an Arabic vowel. */
MG_EXPORT BOOL GUIAPI UCharIsArabicVowel(Uchar32 uc);
/** Determines the canonical combining class of a Unicode character.*/
MG_EXPORT int GUIAPI UCharCombiningClass (Uchar32 uc);
+14
View File
@@ -1581,4 +1581,18 @@ Uchar32 GUIAPI UCharToSmallKana (Uchar32 uc)
return uc;
}
BOOL GUIAPI UCharIsArabicVowel(Uchar32 uc)
{
if ((uc >= 0x064B) && (uc <= 0x0655))
return TRUE;
if ((uc >= 0xFC5E) && (uc <= 0xFC63))
return TRUE;
if ((uc >= 0xFE70) && (uc <= 0xFE7F))
return TRUE;
return 0;
}
#endif /* _MGCHARSET_UNICODE */
+4 -7
View File
@@ -116,6 +116,9 @@ int GUIAPI GetShapedGlyphsBasic(LOGFONT* logfont,
if (!visual_ucs)
goto out;
/* TODO: compose logical character here */
memcpy(visual_ucs, logical_ucs, sizeof(Uchar32) * nr_ucs);
if (nr_ucs < LOCAL_ARRAY_SIZE)
bidi_ts = local_bidi_ts;
else
@@ -167,8 +170,6 @@ int GUIAPI GetShapedGlyphsBasic(LOGFONT* logfont,
pos_v2l[i] = i;
}
memcpy(visual_ucs, logical_ucs, sizeof(Uchar32) * nr_ucs);
if (content_language == LANGCODE_ar) {
/* Arabic joining */
if (nr_ucs < LOCAL_ARRAY_SIZE)
@@ -204,11 +205,7 @@ int GUIAPI GetShapedGlyphsBasic(LOGFONT* logfont,
visual_glyphs[j].gt = GLYPH_TYPE_STDLIGATURE;
visual_glyphs[j].gp = GLYPH_POS_BASELINE;
}
else if (ar_prop & BIDI_MASK_ARAB_SHAPES) {
visual_glyphs[j].gt = GLYPH_TYPE_STDBASE;
visual_glyphs[j].gp = GLYPH_POS_BASELINE;
}
else if (ar_prop & BIDI_MASK_TRANSPARENT) {
else if (UCharIsArabicVowel(visual_ucs[i])) {
visual_glyphs[j].gt = GLYPH_TYPE_STDMARK;
visual_glyphs[j].gp = GLYPH_POS_STDMARK_ABOVE;
}