ICU-1221 change LayoutEngine to use the same script enumeration as

UScriptCode

X-SVN-Rev: 6231
This commit is contained in:
Eric Mader 2001-10-13 00:34:00 +00:00
parent 4c453dd177
commit e32b47f79a
6 changed files with 163 additions and 202 deletions

View file

@ -233,15 +233,48 @@ const IndicClassTable mlymClassTable = {0x0D00, 0x0D6F, 3, MLYM_SCRIPT_FLAGS, ml
// IndicClassTable addresses
//
const IndicClassTable *indicClassTables[] = {
&devaClassTable, // 'deva'
&bengClassTable, // 'beng'
&punjClassTable, // 'punj' punjabi == gurmukhi
&gujrClassTable, // 'gujr'
&oryaClassTable, // 'orya'
&tamlClassTable, // 'taml'
&teluClassTable, // 'telu'
&kndaClassTable, // 'knda'
&mlymClassTable // 'mlyn'
NULL, /* 'zyyy' (COMMON) */
NULL, /* 'qaai' (INHERITED) */
NULL, /* 'arab' (ARABIC) */
NULL, /* 'armn' (ARMENIAN) */
&bengClassTable, /* 'beng' (BENGALI) */
NULL, /* 'bopo' (BOPOMOFO) */
NULL, /* 'cher' (CHEROKEE) */
NULL, /* 'qaac' (COPTIC) */
NULL, /* 'cyrl' (CYRILLIC) */
NULL, /* 'dsrt' (DESERET) */
&devaClassTable, /* 'deva' (DEVANAGARI) */
NULL, /* 'ethi' (ETHIOPIC) */
NULL, /* 'geor' (GEORGIAN) */
NULL, /* 'goth' (GOTHIC) */
NULL, /* 'grek' (GREEK) */
&gujrClassTable, /* 'gujr' (GUJARATI) */
&punjClassTable, /* 'guru' (GURMUKHI) */
NULL, /* 'hani' (HAN) */
NULL, /* 'hang' (HANGUL) */
NULL, /* 'hebr' (HEBREW) */
NULL, /* 'hira' (HIRAGANA) */
&kndaClassTable, /* 'knda' (KANNADA) */
NULL, /* 'kata' (KATAKANA) */
NULL, /* 'khmr' (KHMER) */
NULL, /* 'laoo' (LAO) */
NULL, /* 'latn' (LATIN) */
&mlymClassTable, /* 'mlym' (MALAYALAM) */
NULL, /* 'mong' (MONGOLIAN) */
NULL, /* 'mymr' (MYANMAR) */
NULL, /* 'ogam' (OGHAM) */
NULL, /* 'ital' (OLD-ITALIC) */
&oryaClassTable, /* 'orya' (ORIYA) */
NULL, /* 'runr' (RUNIC) */
NULL, /* 'sinh' (SINHALA) */
NULL, /* 'syrc' (SYRIAC) */
&tamlClassTable, /* 'taml' (TAMIL) */
&teluClassTable, /* 'telu' (TELUGU) */
NULL, /* 'thaa' (THAANA) */
NULL, /* 'thai' (THAI) */
NULL, /* 'tibt' (TIBETAN) */
NULL, /* 'cans' (CANADIAN-ABORIGINAL) */
NULL /* 'yiii' (YI) */
};
IndicClassTable::CharClass IndicClassTable::getCharClass(LEUnicode ch) const
@ -263,11 +296,11 @@ IndicClassTable::CharClass IndicClassTable::getCharClass(LEUnicode ch) const
const IndicClassTable *IndicClassTable::getScriptClassTable(le_int32 scriptCode)
{
if (scriptCode < devaScriptCode || scriptCode > mlymScriptCode) {
return NULL;
}
if (scriptCode < 0 || scriptCode >= scriptCodeCount) {
return NULL;
}
return indicClassTables[scriptCode - devaScriptCode];
return indicClassTables[scriptCode];
}
le_int32 IndicReordering::getWorstCaseExpansion(le_int32 scriptCode)

View file

@ -12,49 +12,50 @@
#define __LESCRIPTS_H
enum ScriptCodes {
zyyyScriptCode = -1,
qaaiScriptCode = 0,
latnScriptCode = 1,
grekScriptCode = 2,
cyrlScriptCode = 3,
armnScriptCode = 4,
hebrScriptCode = 5,
arabScriptCode = 6,
syrcScriptCode = 7,
thaaScriptCode = 8,
devaScriptCode = 9,
bengScriptCode = 10,
guruScriptCode = 11,
gujrScriptCode = 12,
oryaScriptCode = 13,
tamlScriptCode = 14,
teluScriptCode = 15,
kndaScriptCode = 16,
mlymScriptCode = 17,
sinhScriptCode = 18,
thaiScriptCode = 19,
laooScriptCode = 20,
tibtScriptCode = 21,
mymrScriptCode = 22,
georScriptCode = 23,
hangScriptCode = 24,
ethiScriptCode = 25,
cherScriptCode = 26,
cansScriptCode = 27,
ogamScriptCode = 28,
runrScriptCode = 29,
khmrScriptCode = 30,
mongScriptCode = 31,
hiraScriptCode = 32,
kataScriptCode = 33,
bopoScriptCode = 34,
haniScriptCode = 35,
yiiiScriptCode = 36,
italScriptCode = 37,
gothScriptCode = 38,
dsrtScriptCode = 39,
zyyyScriptCode = 0,
qaaiScriptCode = 1,
arabScriptCode = 2,
armnScriptCode = 3,
bengScriptCode = 4,
bopoScriptCode = 5,
cherScriptCode = 6,
qaacScriptCode = 7,
cyrlScriptCode = 8,
dsrtScriptCode = 9,
devaScriptCode = 10,
ethiScriptCode = 11,
georScriptCode = 12,
gothScriptCode = 13,
grekScriptCode = 14,
gujrScriptCode = 15,
guruScriptCode = 16,
haniScriptCode = 17,
hangScriptCode = 18,
hebrScriptCode = 19,
hiraScriptCode = 20,
kndaScriptCode = 21,
kataScriptCode = 22,
khmrScriptCode = 23,
laooScriptCode = 24,
latnScriptCode = 25,
mlymScriptCode = 26,
mongScriptCode = 27,
mymrScriptCode = 28,
ogamScriptCode = 29,
italScriptCode = 30,
oryaScriptCode = 31,
runrScriptCode = 32,
sinhScriptCode = 33,
syrcScriptCode = 34,
tamlScriptCode = 35,
teluScriptCode = 36,
thaaScriptCode = 37,
thaiScriptCode = 38,
tibtScriptCode = 39,
cansScriptCode = 40,
yiiiScriptCode = 41,
scriptCodeCount = 40
scriptCodeCount = 42
};
#endif

View file

@ -13,44 +13,46 @@
#include "OpenTypeLayoutEngine.h"
const LETag OpenTypeLayoutEngine::scriptTags[] = {
zyyyScriptTag, /* 'zyyy' (COMMON) */
qaaiScriptTag, /* 'qaai' (INHERITED) */
latnScriptTag, /* 'latn' (LATIN) */
grekScriptTag, /* 'grek' (GREEK) */
cyrlScriptTag, /* 'cyrl' (CYRILLIC) */
armnScriptTag, /* 'armn' (ARMENIAN) */
hebrScriptTag, /* 'hebr' (HEBREW) */
arabScriptTag, /* 'arab' (ARABIC) */
syrcScriptTag, /* 'syrc' (SYRIAC) */
thaaScriptTag, /* 'thaa' (THAANA) */
devaScriptTag, /* 'deva' (DEVANAGARI) */
armnScriptTag, /* 'armn' (ARMENIAN) */
bengScriptTag, /* 'beng' (BENGALI) */
guruScriptTag, /* 'guru' (GURMUKHI) */
bopoScriptTag, /* 'bopo' (BOPOMOFO) */
cherScriptTag, /* 'cher' (CHEROKEE) */
qaacScriptTag, /* 'qaac' (COPTIC) */
cyrlScriptTag, /* 'cyrl' (CYRILLIC) */
dsrtScriptTag, /* 'dsrt' (DESERET) */
devaScriptTag, /* 'deva' (DEVANAGARI) */
ethiScriptTag, /* 'ethi' (ETHIOPIC) */
georScriptTag, /* 'geor' (GEORGIAN) */
gothScriptTag, /* 'goth' (GOTHIC) */
grekScriptTag, /* 'grek' (GREEK) */
gujrScriptTag, /* 'gujr' (GUJARATI) */
guruScriptTag, /* 'guru' (GURMUKHI) */
haniScriptTag, /* 'hani' (HAN) */
hangScriptTag, /* 'hang' (HANGUL) */
hebrScriptTag, /* 'hebr' (HEBREW) */
hiraScriptTag, /* 'hira' (HIRAGANA) */
kndaScriptTag, /* 'knda' (KANNADA) */
kataScriptTag, /* 'kata' (KATAKANA) */
khmrScriptTag, /* 'khmr' (KHMER) */
laooScriptTag, /* 'laoo' (LAO) */
latnScriptTag, /* 'latn' (LATIN) */
mlymScriptTag, /* 'mlym' (MALAYALAM) */
mongScriptTag, /* 'mong' (MONGOLIAN) */
mymrScriptTag, /* 'mymr' (MYANMAR) */
ogamScriptTag, /* 'ogam' (OGHAM) */
italScriptTag, /* 'ital' (OLD-ITALIC) */
oryaScriptTag, /* 'orya' (ORIYA) */
runrScriptTag, /* 'runr' (RUNIC) */
sinhScriptTag, /* 'sinh' (SINHALA) */
syrcScriptTag, /* 'syrc' (SYRIAC) */
tamlScriptTag, /* 'taml' (TAMIL) */
teluScriptTag, /* 'telu' (TELUGU) */
kndaScriptTag, /* 'knda' (KANNADA) */
mlymScriptTag, /* 'mlym' (MALAYALAM) */
sinhScriptTag, /* 'sinh' (SINHALA) */
thaaScriptTag, /* 'thaa' (THAANA) */
thaiScriptTag, /* 'thai' (THAI) */
laooScriptTag, /* 'laoo' (LAO) */
tibtScriptTag, /* 'tibt' (TIBETAN) */
mymrScriptTag, /* 'mymr' (MYANMAR) */
georScriptTag, /* 'geor' (GEORGIAN) */
hangScriptTag, /* 'hang' (HANGUL) */
ethiScriptTag, /* 'ethi' (ETHIOPIC) */
cherScriptTag, /* 'cher' (CHEROKEE) */
cansScriptTag, /* 'cans' (UCAS) */
ogamScriptTag, /* 'ogam' (OGHAM) */
runrScriptTag, /* 'runr' (RUNIC) */
khmrScriptTag, /* 'khmr' (KHMER) */
mongScriptTag, /* 'mong' (MONGOLIAN) */
hiraScriptTag, /* 'hira' (HIRAGANA) */
kataScriptTag, /* 'kata' (KATAKANA) */
bopoScriptTag, /* 'bopo' (BOPOMOFO) */
haniScriptTag, /* 'hani' (HAN) */
yiiiScriptTag, /* 'yiii' (YI) */
italScriptTag, /* 'ital' (OLD_ITALIC) */
gothScriptTag, /* 'goth' (GOTHIC) */
dsrtScriptTag /* 'dsrt' (DESERET) */
cansScriptTag, /* 'cans' (CANADIAN-ABORIGINAL) */
yiiiScriptTag /* 'yiii' (YI) */
};

View file

@ -14,48 +14,49 @@
#include "LETypes.h"
#include "LEScripts.h"
const LETag zyyyScriptTag = 0x7A797979; /* 'zyyy' (COMMON) */
const LETag qaaiScriptTag = 0x71616169; /* 'qaai' (INHERITED) */
const LETag latnScriptTag = 0x6C61746E; /* 'latn' (LATIN) */
const LETag grekScriptTag = 0x6772656B; /* 'grek' (GREEK) */
const LETag cyrlScriptTag = 0x6379726C; /* 'cyrl' (CYRILLIC) */
const LETag armnScriptTag = 0x61726D6E; /* 'armn' (ARMENIAN) */
const LETag hebrScriptTag = 0x68656272; /* 'hebr' (HEBREW) */
const LETag arabScriptTag = 0x61726162; /* 'arab' (ARABIC) */
const LETag syrcScriptTag = 0x73797263; /* 'syrc' (SYRIAC) */
const LETag thaaScriptTag = 0x74686161; /* 'thaa' (THAANA) */
const LETag devaScriptTag = 0x64657661; /* 'deva' (DEVANAGARI) */
const LETag armnScriptTag = 0x61726D6E; /* 'armn' (ARMENIAN) */
const LETag bengScriptTag = 0x62656E67; /* 'beng' (BENGALI) */
const LETag guruScriptTag = 0x67757275; /* 'guru' (GURMUKHI) */
const LETag bopoScriptTag = 0x626F706F; /* 'bopo' (BOPOMOFO) */
const LETag cherScriptTag = 0x63686572; /* 'cher' (CHEROKEE) */
const LETag qaacScriptTag = 0x71616163; /* 'qaac' (COPTIC) */
const LETag cyrlScriptTag = 0x6379726C; /* 'cyrl' (CYRILLIC) */
const LETag dsrtScriptTag = 0x64737274; /* 'dsrt' (DESERET) */
const LETag devaScriptTag = 0x64657661; /* 'deva' (DEVANAGARI) */
const LETag ethiScriptTag = 0x65746869; /* 'ethi' (ETHIOPIC) */
const LETag georScriptTag = 0x67656F72; /* 'geor' (GEORGIAN) */
const LETag gothScriptTag = 0x676F7468; /* 'goth' (GOTHIC) */
const LETag grekScriptTag = 0x6772656B; /* 'grek' (GREEK) */
const LETag gujrScriptTag = 0x67756A72; /* 'gujr' (GUJARATI) */
const LETag guruScriptTag = 0x67757275; /* 'guru' (GURMUKHI) */
const LETag haniScriptTag = 0x68616E69; /* 'hani' (HAN) */
const LETag hangScriptTag = 0x68616E67; /* 'hang' (HANGUL) */
const LETag hebrScriptTag = 0x68656272; /* 'hebr' (HEBREW) */
const LETag hiraScriptTag = 0x68697261; /* 'hira' (HIRAGANA) */
const LETag kndaScriptTag = 0x6B6E6461; /* 'knda' (KANNADA) */
const LETag kataScriptTag = 0x6B617461; /* 'kata' (KATAKANA) */
const LETag khmrScriptTag = 0x6B686D72; /* 'khmr' (KHMER) */
const LETag laooScriptTag = 0x6C616F6F; /* 'laoo' (LAO) */
const LETag latnScriptTag = 0x6C61746E; /* 'latn' (LATIN) */
const LETag mlymScriptTag = 0x6D6C796D; /* 'mlym' (MALAYALAM) */
const LETag mongScriptTag = 0x6D6F6E67; /* 'mong' (MONGOLIAN) */
const LETag mymrScriptTag = 0x6D796D72; /* 'mymr' (MYANMAR) */
const LETag ogamScriptTag = 0x6F67616D; /* 'ogam' (OGHAM) */
const LETag italScriptTag = 0x6974616C; /* 'ital' (OLD-ITALIC) */
const LETag oryaScriptTag = 0x6F727961; /* 'orya' (ORIYA) */
const LETag runrScriptTag = 0x72756E72; /* 'runr' (RUNIC) */
const LETag sinhScriptTag = 0x73696E68; /* 'sinh' (SINHALA) */
const LETag syrcScriptTag = 0x73797263; /* 'syrc' (SYRIAC) */
const LETag tamlScriptTag = 0x74616D6C; /* 'taml' (TAMIL) */
const LETag teluScriptTag = 0x74656C75; /* 'telu' (TELUGU) */
const LETag kndaScriptTag = 0x6B6E6461; /* 'knda' (KANNADA) */
const LETag mlymScriptTag = 0x6D6C796D; /* 'mlym' (MALAYALAM) */
const LETag sinhScriptTag = 0x73696E68; /* 'sinh' (SINHALA) */
const LETag thaaScriptTag = 0x74686161; /* 'thaa' (THAANA) */
const LETag thaiScriptTag = 0x74686169; /* 'thai' (THAI) */
const LETag laooScriptTag = 0x6C616F6F; /* 'laoo' (LAO) */
const LETag tibtScriptTag = 0x74696274; /* 'tibt' (TIBETAN) */
const LETag mymrScriptTag = 0x6D796D72; /* 'mymr' (MYANMAR) */
const LETag georScriptTag = 0x67656F72; /* 'geor' (GEORGIAN) */
const LETag hangScriptTag = 0x68616E67; /* 'hang' (HANGUL) */
const LETag ethiScriptTag = 0x65746869; /* 'ethi' (ETHIOPIC) */
const LETag cherScriptTag = 0x63686572; /* 'cher' (CHEROKEE) */
const LETag cansScriptTag = 0x63616E73; /* 'cans' (UCAS) */
const LETag ogamScriptTag = 0x6F67616D; /* 'ogam' (OGHAM) */
const LETag runrScriptTag = 0x72756E72; /* 'runr' (RUNIC) */
const LETag khmrScriptTag = 0x6B686D72; /* 'khmr' (KHMER) */
const LETag mongScriptTag = 0x6D6F6E67; /* 'mong' (MONGOLIAN) */
const LETag hiraScriptTag = 0x68697261; /* 'hira' (HIRAGANA) */
const LETag kataScriptTag = 0x6B617461; /* 'kata' (KATAKANA) */
const LETag bopoScriptTag = 0x626F706F; /* 'bopo' (BOPOMOFO) */
const LETag haniScriptTag = 0x68616E69; /* 'hani' (HAN) */
const LETag cansScriptTag = 0x63616E73; /* 'cans' (CANADIAN-ABORIGINAL) */
const LETag yiiiScriptTag = 0x79696969; /* 'yiii' (YI) */
const LETag italScriptTag = 0x6974616C; /* 'ital' (OLD_ITALIC) */
const LETag gothScriptTag = 0x676F7468; /* 'goth' (GOTHIC) */
const LETag dsrtScriptTag = 0x64737274; /* 'dsrt' (DESERET) */
const LETag zyyyScriptTag = 0x7A797979; /* 'zyyy' (COMMON) */
const LETag nullScriptTag = 0x00000000; /* '' (NULL) */
const LETag noLangSysTag = 0x00000000; /* '' (NONE) */

View file

@ -6,61 +6,12 @@
*/
#include "unicode/loengine.h"
#include "layout/LEScripts.h"
//
// This table maps ICU's UScriptCode values
// into the LayoutEngines script codes, as defined
// in LEScripts.h.
//
// NOTE: it's important to keep this list in synch
// both with UScriptCode and LEScripts...
//
// NOTE: REALLY, LEScripts.h should be adjusted to
// match UScriptCode, so this isn't even necessary...
//
int32_t ICULayoutEngine::le_scriptCodes[] = {
qaaiScriptCode, // USCRIPT_COMMON (zyyyScriptCode is -1!)
qaaiScriptCode, // USCRIPT_INHERITED
arabScriptCode, // USCRIPT_ARABIC
armnScriptCode, // USCRIPT_ARMENIAN
bengScriptCode, // USCRIPT_BENGALI
bopoScriptCode, // USCRIPT_BOPOMOFO
cherScriptCode, // USCRIPT_CHEROKEE
qaaiScriptCode, // USCRIPT_COPTIC (no qaacScriptCode)
cyrlScriptCode, // USCRIPT_CYRILLIC
dsrtScriptCode, // USCRIPT_DESERET
devaScriptCode, // USCRIPT_DEVANAGARI
ethiScriptCode, // USCRIPT_ETHIOPIC
georScriptCode, // USCRIPT_GEORGIAN
gothScriptCode, // USCRIPT_GOTHIC
grekScriptCode, // USCRIPT_GREEK
gujrScriptCode, // USCRIPT_GUJARATI
guruScriptCode, // USCRIPT_GURMUKHI
haniScriptCode, // USCRIPT_HAN
hangScriptCode, // USCRIPT_HANGUL
hebrScriptCode, // USCRIPT_HEBREW
hiraScriptCode, // USCRIPT_HIRAGANA
kndaScriptCode, // USCRIPT_KANNADA
kataScriptCode, // USCRIPT_KATAKANA
khmrScriptCode, // USCRIPT_KHMER
laooScriptCode, // USCRIPT_LAO
latnScriptCode, // USCRIPT_LATIN
mlymScriptCode, // USCRIPT_MALAYALAM
mongScriptCode, // USCRIPT_MONGOLIAN
mymrScriptCode, // USCRIPT_MYANMAR
ogamScriptCode, // USCRIPT_OGHAM
italScriptCode, // USCRIPT_OLD_ITALIC
oryaScriptCode, // USCRIPT_ORIYA
runrScriptCode, // USCRIPT_RUNIC
sinhScriptCode, // USCRIPT_SINHALA
syrcScriptCode, // USCRIPT_SYRIAC
tamlScriptCode, // USCRIPT_TAMIL
teluScriptCode, // USCRIPT_TELUGU
thaaScriptCode, // USCRIPT_THAANA
thaiScriptCode, // USCRIPT_THAI
tibtScriptCode, // USCRIPT_TIBETAN
cansScriptCode, // USCRIPT_UCAS
yiiiScriptCode // USCRIPT_YI
};
/*
* This file is needed to make sure that the
* inline methods defined in loengine.h are
* exported by the build...
*/

View file

@ -20,7 +20,7 @@
* use LayoutEngine in a way that is consistent with the rest
* of ICU.
*
*(LayoutEngine was developed seperately from ICU and
* (LayoutEngine was developed seperately from ICU and
* the same source is used in non-ICU environments, so it cannot
* be changed to match ICU coding conventions).
*
@ -46,24 +46,6 @@
class U_LAYOUT_API ICULayoutEngine
{
private:
/**
* This is the table used to translate UScriptCode
* values to the script codes defined in LEScripts.h.
*/
static int32_t le_scriptCodes[];
/**
* This method converts an UScriptCode value to
* a LayoutEngine script code as defined in LEScripts.
*
* @param script - the UScriptCode value
*
* @return the LayoutEngine script code.
*
* @see LEScripts.h
*/
static int32_t le_scriptCode(UScriptCode script);
/**
* This holds the instance of LayoutEngine that does all
* the work.
@ -337,20 +319,11 @@ inline ICULayoutEngine *ICULayoutEngine::createInstance(const LEFontInstance *fo
Locale &locale, UErrorCode &success)
{
LayoutEngine *engine = LayoutEngine::layoutEngineFactory(fontInstance,
le_scriptCode(script),
(le_int32) script,
0,
(LEErrorCode &) success);
return new ICULayoutEngine(engine);
}
inline int32_t ICULayoutEngine::le_scriptCode(UScriptCode script)
{
if (script < 0 || script >= USCRIPT_CODE_LIMIT) {
return 0;
}
return le_scriptCodes[script];
}
#endif