mirror of
https://github.com/VincentWei/MiniGUI.git
synced 2026-09-24 00:54:18 +08:00
Add UCharIsArabicVowel
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user