mirror of
https://github.com/unicode-org/icu.git
synced 2025-04-07 22:44:49 +00:00
ICU-4578 Fix warnings on Intel compiler.
X-SVN-Rev: 17942
This commit is contained in:
parent
aee4b9cb87
commit
2717c31b16
3 changed files with 135 additions and 145 deletions
|
@ -17,39 +17,39 @@ U_NAMESPACE_BEGIN
|
|||
enum
|
||||
{
|
||||
// Split matra table indices
|
||||
_x1 = 1 << IndicClassTable::CF_INDEX_SHIFT,
|
||||
_x2 = 2 << IndicClassTable::CF_INDEX_SHIFT,
|
||||
_x3 = 3 << IndicClassTable::CF_INDEX_SHIFT,
|
||||
_x4 = 4 << IndicClassTable::CF_INDEX_SHIFT,
|
||||
_x5 = 5 << IndicClassTable::CF_INDEX_SHIFT,
|
||||
_x6 = 6 << IndicClassTable::CF_INDEX_SHIFT,
|
||||
_x7 = 7 << IndicClassTable::CF_INDEX_SHIFT,
|
||||
_x8 = 8 << IndicClassTable::CF_INDEX_SHIFT,
|
||||
_x9 = 9 << IndicClassTable::CF_INDEX_SHIFT,
|
||||
_x1 = 1 << CF_INDEX_SHIFT,
|
||||
_x2 = 2 << CF_INDEX_SHIFT,
|
||||
_x3 = 3 << CF_INDEX_SHIFT,
|
||||
_x4 = 4 << CF_INDEX_SHIFT,
|
||||
_x5 = 5 << CF_INDEX_SHIFT,
|
||||
_x6 = 6 << CF_INDEX_SHIFT,
|
||||
_x7 = 7 << CF_INDEX_SHIFT,
|
||||
_x8 = 8 << CF_INDEX_SHIFT,
|
||||
_x9 = 9 << CF_INDEX_SHIFT,
|
||||
|
||||
// simple classes
|
||||
_xx = IndicClassTable::CC_RESERVED,
|
||||
_ma = IndicClassTable::CC_VOWEL_MODIFIER | IndicClassTable::CF_POS_ABOVE,
|
||||
_mp = IndicClassTable::CC_VOWEL_MODIFIER | IndicClassTable::CF_POS_AFTER,
|
||||
_sa = IndicClassTable::CC_STRESS_MARK | IndicClassTable::CF_POS_ABOVE,
|
||||
_sb = IndicClassTable::CC_STRESS_MARK | IndicClassTable::CF_POS_BELOW,
|
||||
_iv = IndicClassTable::CC_INDEPENDENT_VOWEL,
|
||||
_i2 = IndicClassTable::CC_INDEPENDENT_VOWEL_2,
|
||||
_ct = IndicClassTable::CC_CONSONANT | IndicClassTable::CF_CONSONANT,
|
||||
_cn = IndicClassTable::CC_CONSONANT_WITH_NUKTA | IndicClassTable::CF_CONSONANT,
|
||||
_nu = IndicClassTable::CC_NUKTA,
|
||||
_dv = IndicClassTable::CC_DEPENDENT_VOWEL,
|
||||
_dl = _dv | IndicClassTable::CF_POS_BEFORE,
|
||||
_db = _dv | IndicClassTable::CF_POS_BELOW,
|
||||
_da = _dv | IndicClassTable::CF_POS_ABOVE,
|
||||
_dr = _dv | IndicClassTable::CF_POS_AFTER,
|
||||
_lm = _dv | IndicClassTable::CF_LENGTH_MARK,
|
||||
_l1 = IndicClassTable::CC_SPLIT_VOWEL_PIECE_1 | IndicClassTable::CF_POS_BEFORE,
|
||||
_a1 = IndicClassTable::CC_SPLIT_VOWEL_PIECE_1 | IndicClassTable::CF_POS_ABOVE,
|
||||
_r2 = IndicClassTable::CC_SPLIT_VOWEL_PIECE_2 | IndicClassTable::CF_POS_AFTER,
|
||||
_m2 = IndicClassTable::CC_SPLIT_VOWEL_PIECE_2 | IndicClassTable::CF_LENGTH_MARK,
|
||||
_m3 = IndicClassTable::CC_SPLIT_VOWEL_PIECE_3 | IndicClassTable::CF_LENGTH_MARK,
|
||||
_vr = IndicClassTable::CC_VIRAMA,
|
||||
_xx = CC_RESERVED,
|
||||
_ma = CC_VOWEL_MODIFIER | CF_POS_ABOVE,
|
||||
_mp = CC_VOWEL_MODIFIER | CF_POS_AFTER,
|
||||
_sa = CC_STRESS_MARK | CF_POS_ABOVE,
|
||||
_sb = CC_STRESS_MARK | CF_POS_BELOW,
|
||||
_iv = CC_INDEPENDENT_VOWEL,
|
||||
_i2 = CC_INDEPENDENT_VOWEL_2,
|
||||
_ct = CC_CONSONANT | CF_CONSONANT,
|
||||
_cn = CC_CONSONANT_WITH_NUKTA | CF_CONSONANT,
|
||||
_nu = CC_NUKTA,
|
||||
_dv = CC_DEPENDENT_VOWEL,
|
||||
_dl = _dv | CF_POS_BEFORE,
|
||||
_db = _dv | CF_POS_BELOW,
|
||||
_da = _dv | CF_POS_ABOVE,
|
||||
_dr = _dv | CF_POS_AFTER,
|
||||
_lm = _dv | CF_LENGTH_MARK,
|
||||
_l1 = CC_SPLIT_VOWEL_PIECE_1 | CF_POS_BEFORE,
|
||||
_a1 = CC_SPLIT_VOWEL_PIECE_1 | CF_POS_ABOVE,
|
||||
_r2 = CC_SPLIT_VOWEL_PIECE_2 | CF_POS_AFTER,
|
||||
_m2 = CC_SPLIT_VOWEL_PIECE_2 | CF_LENGTH_MARK,
|
||||
_m3 = CC_SPLIT_VOWEL_PIECE_3 | CF_LENGTH_MARK,
|
||||
_vr = CC_VIRAMA,
|
||||
|
||||
// split matras
|
||||
_s1 = _dv | _x1,
|
||||
|
@ -65,12 +65,12 @@ enum
|
|||
// consonants with special forms
|
||||
// NOTE: this assumes that no consonants with nukta have
|
||||
// special forms... (Bengali RA?)
|
||||
_bb = _ct | IndicClassTable::CF_BELOW_BASE,
|
||||
_pb = _ct | IndicClassTable::CF_POST_BASE,
|
||||
_vt = _bb | IndicClassTable::CF_VATTU,
|
||||
_rv = _vt | IndicClassTable::CF_REPH,
|
||||
_rp = _pb | IndicClassTable::CF_REPH,
|
||||
_rb = _bb | IndicClassTable::CF_REPH
|
||||
_bb = _ct | CF_BELOW_BASE,
|
||||
_pb = _ct | CF_POST_BASE,
|
||||
_vt = _bb | CF_VATTU,
|
||||
_rv = _vt | CF_REPH,
|
||||
_rp = _pb | CF_REPH,
|
||||
_rb = _bb | CF_REPH
|
||||
};
|
||||
|
||||
//
|
||||
|
@ -212,15 +212,15 @@ static const SplitMatra mlymSplitTable[] = {{0x0D46, 0x0D3E}, {0x0D47, 0x0D3E},
|
|||
// FIXME: post 'GSUB' reordering of MATRA_PRE's for Malayalam and Tamil
|
||||
// FIXME: reformed Malayalam needs to reorder VATTU to before base glyph...
|
||||
// FIXME: eyelash RA only for Devanagari??
|
||||
#define DEVA_SCRIPT_FLAGS (IndicClassTable::SF_EYELASH_RA | IndicClassTable::SF_NO_POST_BASE_LIMIT)
|
||||
#define BENG_SCRIPT_FLAGS (IndicClassTable::SF_REPH_AFTER_BELOW | IndicClassTable::SF_NO_POST_BASE_LIMIT)
|
||||
#define PUNJ_SCRIPT_FLAGS (IndicClassTable::SF_NO_POST_BASE_LIMIT)
|
||||
#define GUJR_SCRIPT_FLAGS (IndicClassTable::SF_NO_POST_BASE_LIMIT)
|
||||
#define ORYA_SCRIPT_FLAGS (IndicClassTable::SF_REPH_AFTER_BELOW | IndicClassTable::SF_NO_POST_BASE_LIMIT)
|
||||
#define TAML_SCRIPT_FLAGS (IndicClassTable::SF_MPRE_FIXUP | IndicClassTable::SF_NO_POST_BASE_LIMIT)
|
||||
#define TELU_SCRIPT_FLAGS (IndicClassTable::SF_MATRAS_AFTER_BASE | 3)
|
||||
#define KNDA_SCRIPT_FLAGS (IndicClassTable::SF_MATRAS_AFTER_BASE | 3)
|
||||
#define MLYM_SCRIPT_FLAGS (IndicClassTable::SF_MPRE_FIXUP | IndicClassTable::SF_NO_POST_BASE_LIMIT)
|
||||
#define DEVA_SCRIPT_FLAGS (SF_EYELASH_RA | SF_NO_POST_BASE_LIMIT)
|
||||
#define BENG_SCRIPT_FLAGS (SF_REPH_AFTER_BELOW | SF_NO_POST_BASE_LIMIT)
|
||||
#define PUNJ_SCRIPT_FLAGS (SF_NO_POST_BASE_LIMIT)
|
||||
#define GUJR_SCRIPT_FLAGS (SF_NO_POST_BASE_LIMIT)
|
||||
#define ORYA_SCRIPT_FLAGS (SF_REPH_AFTER_BELOW | SF_NO_POST_BASE_LIMIT)
|
||||
#define TAML_SCRIPT_FLAGS (SF_MPRE_FIXUP | SF_NO_POST_BASE_LIMIT)
|
||||
#define TELU_SCRIPT_FLAGS (SF_MATRAS_AFTER_BASE | 3)
|
||||
#define KNDA_SCRIPT_FLAGS (SF_MATRAS_AFTER_BASE | 3)
|
||||
#define MLYM_SCRIPT_FLAGS (SF_MPRE_FIXUP | SF_NO_POST_BASE_LIMIT)
|
||||
|
||||
//
|
||||
// Indic Class Tables
|
||||
|
|
|
@ -57,23 +57,23 @@ private:
|
|||
fLengthMark = matra;
|
||||
fLengthMarkIndex = matraIndex;
|
||||
} else {
|
||||
switch (matraClass & IndicClassTable::CF_POS_MASK) {
|
||||
case IndicClassTable::CF_POS_BEFORE:
|
||||
switch (matraClass & CF_POS_MASK) {
|
||||
case CF_POS_BEFORE:
|
||||
fMpre = matra;
|
||||
fMpreIndex = matraIndex;
|
||||
break;
|
||||
|
||||
case IndicClassTable::CF_POS_BELOW:
|
||||
case CF_POS_BELOW:
|
||||
fMbelow = matra;
|
||||
fMbelowIndex = matraIndex;
|
||||
break;
|
||||
|
||||
case IndicClassTable::CF_POS_ABOVE:
|
||||
case CF_POS_ABOVE:
|
||||
fMabove = matra;
|
||||
fMaboveIndex = matraIndex;
|
||||
break;
|
||||
|
||||
case IndicClassTable::CF_POS_AFTER:
|
||||
case CF_POS_AFTER:
|
||||
fMpost = matra;
|
||||
fMpostIndex = matraIndex;
|
||||
break;
|
||||
|
@ -158,12 +158,12 @@ public:
|
|||
fVMTags = vowelModifierTags;
|
||||
|
||||
if (IndicClassTable::isVowelModifier(vmClass)) {
|
||||
switch (vmClass & IndicClassTable::CF_POS_MASK) {
|
||||
case IndicClassTable::CF_POS_ABOVE:
|
||||
switch (vmClass & CF_POS_MASK) {
|
||||
case CF_POS_ABOVE:
|
||||
fVMabove = vowelModifier;
|
||||
break;
|
||||
|
||||
case IndicClassTable::CF_POS_AFTER:
|
||||
case CF_POS_AFTER:
|
||||
fVMpost = vowelModifier;
|
||||
break;
|
||||
|
||||
|
@ -182,12 +182,12 @@ public:
|
|||
fSMTags = stressMarkTags;
|
||||
|
||||
if (IndicClassTable::isStressMark(smClass)) {
|
||||
switch (smClass & IndicClassTable::CF_POS_MASK) {
|
||||
case IndicClassTable::CF_POS_ABOVE:
|
||||
switch (smClass & CF_POS_MASK) {
|
||||
case CF_POS_ABOVE:
|
||||
fSMabove = stressMark;
|
||||
break;
|
||||
|
||||
case IndicClassTable::CF_POS_BELOW:
|
||||
case CF_POS_BELOW:
|
||||
fSMbelow = stressMark;
|
||||
break;
|
||||
|
||||
|
@ -320,7 +320,7 @@ static const LETag tagArray[] =
|
|||
blwmFeatureTag, abvmFeatureTag, distFeatureTag, emptyTag
|
||||
};
|
||||
|
||||
static const le_int8 stateTable[][IndicClassTable::CC_COUNT] =
|
||||
static const le_int8 stateTable[][CC_COUNT] =
|
||||
{
|
||||
// xx vm sm iv i2 ct cn nu dv s1 s2 s3 vr zw
|
||||
{ 1, 1, 1, 5, 8, 3, 2, 1, 5, 9, 5, 1, 1, 1}, // 0 - ground state
|
||||
|
@ -350,7 +350,7 @@ le_int32 IndicReordering::findSyllable(const IndicClassTable *classTable, const
|
|||
while (cursor < charCount) {
|
||||
IndicClassTable::CharClass charClass = classTable->getCharClass(chars[cursor]);
|
||||
|
||||
state = stateTable[state][charClass & IndicClassTable::CF_CLASS_MASK];
|
||||
state = stateTable[state][charClass & CF_CLASS_MASK];
|
||||
|
||||
if (state < 0) {
|
||||
break;
|
||||
|
@ -369,7 +369,7 @@ le_int32 IndicReordering::reorder(const LEUnicode *chars, le_int32 charCount, le
|
|||
MPreFixups *mpreFixups = NULL;
|
||||
const IndicClassTable *classTable = IndicClassTable::getScriptClassTable(scriptCode);
|
||||
|
||||
if (classTable->scriptFlags & IndicClassTable::SF_MPRE_FIXUP) {
|
||||
if (classTable->scriptFlags & SF_MPRE_FIXUP) {
|
||||
mpreFixups = new MPreFixups(charCount);
|
||||
}
|
||||
|
||||
|
@ -398,28 +398,28 @@ le_int32 IndicReordering::reorder(const LEUnicode *chars, le_int32 charCount, le
|
|||
matra -= 1;
|
||||
}
|
||||
|
||||
switch (classTable->getCharClass(chars[prev]) & IndicClassTable::CF_CLASS_MASK) {
|
||||
case IndicClassTable::CC_RESERVED:
|
||||
case IndicClassTable::CC_INDEPENDENT_VOWEL:
|
||||
case IndicClassTable::CC_ZERO_WIDTH_MARK:
|
||||
switch (classTable->getCharClass(chars[prev]) & CF_CLASS_MASK) {
|
||||
case CC_RESERVED:
|
||||
case CC_INDEPENDENT_VOWEL:
|
||||
case CC_ZERO_WIDTH_MARK:
|
||||
for (i = prev; i < syllable; i += 1) {
|
||||
output.writeChar(chars[i], i, &tagArray[1]);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case IndicClassTable::CC_NUKTA:
|
||||
case IndicClassTable::CC_VIRAMA:
|
||||
case CC_NUKTA:
|
||||
case CC_VIRAMA:
|
||||
output.writeChar(C_DOTTED_CIRCLE, prev, &tagArray[1]);
|
||||
output.writeChar(chars[prev], prev, &tagArray[1]);
|
||||
break;
|
||||
|
||||
case IndicClassTable::CC_DEPENDENT_VOWEL:
|
||||
case IndicClassTable::CC_SPLIT_VOWEL_PIECE_1:
|
||||
case IndicClassTable::CC_SPLIT_VOWEL_PIECE_2:
|
||||
case IndicClassTable::CC_SPLIT_VOWEL_PIECE_3:
|
||||
case IndicClassTable::CC_VOWEL_MODIFIER:
|
||||
case IndicClassTable::CC_STRESS_MARK:
|
||||
case CC_DEPENDENT_VOWEL:
|
||||
case CC_SPLIT_VOWEL_PIECE_1:
|
||||
case CC_SPLIT_VOWEL_PIECE_2:
|
||||
case CC_SPLIT_VOWEL_PIECE_3:
|
||||
case CC_VOWEL_MODIFIER:
|
||||
case CC_STRESS_MARK:
|
||||
output.writeMpre();
|
||||
|
||||
output.writeChar(C_DOTTED_CIRCLE, prev, &tagArray[1]);
|
||||
|
@ -428,22 +428,22 @@ le_int32 IndicReordering::reorder(const LEUnicode *chars, le_int32 charCount, le
|
|||
output.writeSMbelow();
|
||||
output.writeMabove();
|
||||
|
||||
if ((classTable->scriptFlags & IndicClassTable::SF_MATRAS_AFTER_BASE) != 0) {
|
||||
if ((classTable->scriptFlags & SF_MATRAS_AFTER_BASE) != 0) {
|
||||
output.writeMpost();
|
||||
}
|
||||
|
||||
if ((classTable->scriptFlags & IndicClassTable::SF_REPH_AFTER_BELOW) != 0) {
|
||||
if ((classTable->scriptFlags & SF_REPH_AFTER_BELOW) != 0) {
|
||||
output.writeVMabove();
|
||||
output.writeSMabove(); // FIXME: there are no SM's in these scripts...
|
||||
}
|
||||
|
||||
if ((classTable->scriptFlags & IndicClassTable::SF_MATRAS_AFTER_BASE) == 0) {
|
||||
if ((classTable->scriptFlags & SF_MATRAS_AFTER_BASE) == 0) {
|
||||
output.writeMpost();
|
||||
}
|
||||
|
||||
output.writeLengthMark();
|
||||
|
||||
if ((classTable->scriptFlags & IndicClassTable::SF_REPH_AFTER_BELOW) == 0) {
|
||||
if ((classTable->scriptFlags & SF_REPH_AFTER_BELOW) == 0) {
|
||||
output.writeVMabove();
|
||||
output.writeSMabove();
|
||||
}
|
||||
|
@ -451,9 +451,9 @@ le_int32 IndicReordering::reorder(const LEUnicode *chars, le_int32 charCount, le
|
|||
output.writeVMpost();
|
||||
break;
|
||||
|
||||
case IndicClassTable::CC_INDEPENDENT_VOWEL_2:
|
||||
case IndicClassTable::CC_CONSONANT:
|
||||
case IndicClassTable::CC_CONSONANT_WITH_NUKTA:
|
||||
case CC_INDEPENDENT_VOWEL_2:
|
||||
case CC_CONSONANT:
|
||||
case CC_CONSONANT_WITH_NUKTA:
|
||||
{
|
||||
le_uint32 length = markStart - prev;
|
||||
le_int32 lastConsonant = markStart - 1;
|
||||
|
@ -464,7 +464,7 @@ le_int32 IndicReordering::reorder(const LEUnicode *chars, le_int32 charCount, le
|
|||
baseLimit += 2;
|
||||
|
||||
// Check for eyelash RA, if the script supports it
|
||||
if ((classTable->scriptFlags & IndicClassTable::SF_EYELASH_RA) != 0 &&
|
||||
if ((classTable->scriptFlags & SF_EYELASH_RA) != 0 &&
|
||||
chars[baseLimit] == C_SIGN_ZWJ) {
|
||||
if (length > 3) {
|
||||
baseLimit += 1;
|
||||
|
@ -480,7 +480,7 @@ le_int32 IndicReordering::reorder(const LEUnicode *chars, le_int32 charCount, le
|
|||
|
||||
le_int32 baseConsonant = lastConsonant;
|
||||
le_int32 postBase = lastConsonant + 1;
|
||||
le_int32 postBaseLimit = classTable->scriptFlags & IndicClassTable::SF_POST_BASE_LIMIT_MASK;
|
||||
le_int32 postBaseLimit = classTable->scriptFlags & SF_POST_BASE_LIMIT_MASK;
|
||||
le_bool seenVattu = FALSE;
|
||||
le_bool seenBelowBaseForm = FALSE;
|
||||
|
||||
|
@ -572,7 +572,7 @@ le_int32 IndicReordering::reorder(const LEUnicode *chars, le_int32 charCount, le
|
|||
output.writeChar(chars[i], i, &tagArray[4]);
|
||||
}
|
||||
|
||||
if ((classTable->scriptFlags & IndicClassTable::SF_MATRAS_AFTER_BASE) != 0) {
|
||||
if ((classTable->scriptFlags & SF_MATRAS_AFTER_BASE) != 0) {
|
||||
output.writeMbelow();
|
||||
output.writeSMbelow(); // FIXME: there are no SMs in these scripts...
|
||||
output.writeMabove();
|
||||
|
@ -592,13 +592,13 @@ le_int32 IndicReordering::reorder(const LEUnicode *chars, le_int32 charCount, le
|
|||
}
|
||||
|
||||
// write Mbelow, SMbelow, Mabove
|
||||
if ((classTable->scriptFlags & IndicClassTable::SF_MATRAS_AFTER_BASE) == 0) {
|
||||
if ((classTable->scriptFlags & SF_MATRAS_AFTER_BASE) == 0) {
|
||||
output.writeMbelow();
|
||||
output.writeSMbelow();
|
||||
output.writeMabove();
|
||||
}
|
||||
|
||||
if ((classTable->scriptFlags & IndicClassTable::SF_REPH_AFTER_BELOW) != 0) {
|
||||
if ((classTable->scriptFlags & SF_REPH_AFTER_BELOW) != 0) {
|
||||
if (baseLimit == prev + 2) {
|
||||
output.writeChar(chars[prev], prev, &tagArray[0]);
|
||||
output.writeChar(chars[prev + 1], prev + 1, &tagArray[0]);
|
||||
|
@ -627,14 +627,14 @@ le_int32 IndicReordering::reorder(const LEUnicode *chars, le_int32 charCount, le
|
|||
}
|
||||
|
||||
// write Mpost
|
||||
if ((classTable->scriptFlags & IndicClassTable::SF_MATRAS_AFTER_BASE) == 0) {
|
||||
if ((classTable->scriptFlags & SF_MATRAS_AFTER_BASE) == 0) {
|
||||
output.writeMpost();
|
||||
}
|
||||
|
||||
output.writeLengthMark();
|
||||
|
||||
// write reph
|
||||
if ((classTable->scriptFlags & IndicClassTable::SF_REPH_AFTER_BELOW) == 0) {
|
||||
if ((classTable->scriptFlags & SF_REPH_AFTER_BELOW) == 0) {
|
||||
if (baseLimit == prev + 2) {
|
||||
output.writeChar(chars[prev], prev, &tagArray[0]);
|
||||
output.writeChar(chars[prev + 1], prev + 1, &tagArray[0]);
|
||||
|
|
|
@ -18,11 +18,54 @@
|
|||
U_NAMESPACE_BEGIN
|
||||
|
||||
// Characters that get refered to by name...
|
||||
enum
|
||||
{
|
||||
C_SIGN_ZWNJ = 0x200C,
|
||||
C_SIGN_ZWJ = 0x200D
|
||||
};
|
||||
#define C_SIGN_ZWNJ 0x200C
|
||||
#define C_SIGN_ZWJ 0x200D
|
||||
|
||||
// Character class values
|
||||
#define CC_RESERVED 0U
|
||||
#define CC_VOWEL_MODIFIER 1U
|
||||
#define CC_STRESS_MARK 2U
|
||||
#define CC_INDEPENDENT_VOWEL 3U
|
||||
#define CC_INDEPENDENT_VOWEL_2 4U
|
||||
#define CC_CONSONANT 5U
|
||||
#define CC_CONSONANT_WITH_NUKTA 6U
|
||||
#define CC_NUKTA 7U
|
||||
#define CC_DEPENDENT_VOWEL 8U
|
||||
#define CC_SPLIT_VOWEL_PIECE_1 9U
|
||||
#define CC_SPLIT_VOWEL_PIECE_2 10U
|
||||
#define CC_SPLIT_VOWEL_PIECE_3 11U
|
||||
#define CC_VIRAMA 12U
|
||||
#define CC_ZERO_WIDTH_MARK 13U
|
||||
#define CC_COUNT 14U
|
||||
|
||||
// Character class flags
|
||||
#define CF_CLASS_MASK 0x0000FFFFU
|
||||
|
||||
#define CF_CONSONANT 0x80000000U
|
||||
|
||||
#define CF_REPH 0x40000000U
|
||||
#define CF_VATTU 0x20000000U
|
||||
#define CF_BELOW_BASE 0x10000000U
|
||||
#define CF_POST_BASE 0x08000000U
|
||||
#define CF_LENGTH_MARK 0x04000000U
|
||||
|
||||
#define CF_POS_BEFORE 0x00300000U
|
||||
#define CF_POS_BELOW 0x00200000U
|
||||
#define CF_POS_ABOVE 0x00100000U
|
||||
#define CF_POS_AFTER 0x00000000U
|
||||
#define CF_POS_MASK 0x00300000U
|
||||
|
||||
#define CF_INDEX_MASK 0x000F0000U
|
||||
#define CF_INDEX_SHIFT 16
|
||||
|
||||
// Script flag bits
|
||||
#define SF_MATRAS_AFTER_BASE 0x80000000U
|
||||
#define SF_REPH_AFTER_BELOW 0x40000000U
|
||||
#define SF_EYELASH_RA 0x20000000U
|
||||
#define SF_MPRE_FIXUP 0x10000000U
|
||||
|
||||
#define SF_POST_BASE_LIMIT_MASK 0x0000FFFFU
|
||||
#define SF_NO_POST_BASE_LIMIT 0x00007FFFU
|
||||
|
||||
typedef LEUnicode SplitMatra[3];
|
||||
|
||||
|
@ -31,61 +74,8 @@ class LEGlyphStorage;
|
|||
|
||||
struct IndicClassTable
|
||||
{
|
||||
enum CharClassValues
|
||||
{
|
||||
CC_RESERVED = 0,
|
||||
CC_VOWEL_MODIFIER = 1,
|
||||
CC_STRESS_MARK = 2,
|
||||
CC_INDEPENDENT_VOWEL = 3,
|
||||
CC_INDEPENDENT_VOWEL_2 = 4,
|
||||
CC_CONSONANT = 5,
|
||||
CC_CONSONANT_WITH_NUKTA = 6,
|
||||
CC_NUKTA = 7,
|
||||
CC_DEPENDENT_VOWEL = 8,
|
||||
CC_SPLIT_VOWEL_PIECE_1 = 9,
|
||||
CC_SPLIT_VOWEL_PIECE_2 = 10,
|
||||
CC_SPLIT_VOWEL_PIECE_3 = 11,
|
||||
CC_VIRAMA = 12,
|
||||
CC_ZERO_WIDTH_MARK = 13,
|
||||
CC_COUNT = 14
|
||||
};
|
||||
|
||||
enum CharClassFlags
|
||||
{
|
||||
CF_CLASS_MASK = 0x0000FFFF,
|
||||
|
||||
CF_CONSONANT = 0x80000000,
|
||||
|
||||
CF_REPH = 0x40000000,
|
||||
CF_VATTU = 0x20000000,
|
||||
CF_BELOW_BASE = 0x10000000,
|
||||
CF_POST_BASE = 0x08000000,
|
||||
CF_LENGTH_MARK = 0x04000000,
|
||||
|
||||
CF_POS_BEFORE = 0x00300000,
|
||||
CF_POS_BELOW = 0x00200000,
|
||||
CF_POS_ABOVE = 0x00100000,
|
||||
CF_POS_AFTER = 0x00000000,
|
||||
CF_POS_MASK = 0x00300000,
|
||||
|
||||
CF_INDEX_MASK = 0x000F0000,
|
||||
CF_INDEX_SHIFT = 16
|
||||
};
|
||||
|
||||
typedef le_uint32 CharClass;
|
||||
|
||||
enum ScriptFlagBits
|
||||
{
|
||||
SF_MATRAS_AFTER_BASE = 0x80000000,
|
||||
SF_REPH_AFTER_BELOW = 0x40000000,
|
||||
SF_EYELASH_RA = 0x20000000,
|
||||
SF_MPRE_FIXUP = 0x10000000,
|
||||
|
||||
SF_POST_BASE_LIMIT_MASK = 0x0000FFFF,
|
||||
SF_NO_POST_BASE_LIMIT = 0x00007FFF
|
||||
};
|
||||
|
||||
typedef le_int32 ScriptFlags;
|
||||
typedef le_uint32 ScriptFlags;
|
||||
|
||||
LEUnicode firstChar;
|
||||
LEUnicode lastChar;
|
||||
|
|
Loading…
Add table
Reference in a new issue