Bug 550772 - fallback pref font handling for CJK fonts is broken r=jdaggett

This commit is contained in:
Masayuki Nakano 2010-03-08 18:14:56 +09:00
parent a22f056955
commit 5099a845d8
3 changed files with 40 additions and 30 deletions

View File

@ -67,6 +67,7 @@ class nsIAtom;
// pref lang id's for font prefs
// !!! needs to match the list of pref font.default.xx entries listed in all.js !!!
// !!! don't use as bit mask, this may grow larger !!!
enum eFontPrefLang {
eFontPrefLang_Western = 0,

View File

@ -549,13 +549,20 @@ gfxPlatform::GetFontPrefLangFor(PRUint8 aUnicodeRange)
}
}
const PRUint32 kFontPrefLangCJKMask = (1 << (PRUint32) eFontPrefLang_Japanese) | (1 << (PRUint32) eFontPrefLang_ChineseTW)
| (1 << (PRUint32) eFontPrefLang_ChineseCN) | (1 << (PRUint32) eFontPrefLang_ChineseHK)
| (1 << (PRUint32) eFontPrefLang_Korean) | (1 << (PRUint32) eFontPrefLang_CJKSet);
PRBool
gfxPlatform::IsLangCJK(eFontPrefLang aLang)
{
return kFontPrefLangCJKMask & (1 << (PRUint32) aLang);
switch (aLang) {
case eFontPrefLang_Japanese:
case eFontPrefLang_ChineseTW:
case eFontPrefLang_ChineseCN:
case eFontPrefLang_ChineseHK:
case eFontPrefLang_Korean:
case eFontPrefLang_CJKSet:
return PR_TRUE;
default:
return PR_FALSE;
}
}
void

View File

@ -76,35 +76,37 @@ const PRUint8 kRangeTibetan = 26;
const PRUint8 kRangeSpecificItemNum = 27;
//range/rangeSet grow to this place 27-30
//range/rangeSet grow to this place 27-29
const PRUint8 kRangeSetStart = 31; // range set definition starts from here
const PRUint8 kRangeSetLatin = 31;
const PRUint8 kRangeSetCJK = 32;
const PRUint8 kRangeSetEnd = 32; // range set definition ends here
const PRUint8 kRangeSetStart = 30; // range set definition starts from here
const PRUint8 kRangeSetLatin = 30;
const PRUint8 kRangeSetCJK = 31;
const PRUint8 kRangeSetEnd = 31; // range set definition ends here, this
// and smaller ranges are used as bit
// mask, don't increase this value.
// less frequently used range definition
const PRUint8 kRangeSurrogate = 33;
const PRUint8 kRangePrivate = 34;
const PRUint8 kRangeMisc = 35;
const PRUint8 kRangeUnassigned = 36;
const PRUint8 kRangeSyriac = 37;
const PRUint8 kRangeThaana = 38;
const PRUint8 kRangeLao = 39;
const PRUint8 kRangeMyanmar = 40;
const PRUint8 kRangeCherokee = 41;
const PRUint8 kRangeOghamRunic = 42;
const PRUint8 kRangeMongolian = 43;
const PRUint8 kRangeMathOperators = 44;
const PRUint8 kRangeMiscTechnical = 45;
const PRUint8 kRangeControlOpticalEnclose = 46;
const PRUint8 kRangeBoxBlockGeometrics = 47;
const PRUint8 kRangeMiscSymbols = 48;
const PRUint8 kRangeDingbats = 49;
const PRUint8 kRangeBraillePattern = 50;
const PRUint8 kRangeYi = 51;
const PRUint8 kRangeCombiningDiacriticalMarks = 52;
const PRUint8 kRangeSpecials = 53;
const PRUint8 kRangeSurrogate = 32;
const PRUint8 kRangePrivate = 33;
const PRUint8 kRangeMisc = 34;
const PRUint8 kRangeUnassigned = 35;
const PRUint8 kRangeSyriac = 36;
const PRUint8 kRangeThaana = 37;
const PRUint8 kRangeLao = 38;
const PRUint8 kRangeMyanmar = 39;
const PRUint8 kRangeCherokee = 40;
const PRUint8 kRangeOghamRunic = 41;
const PRUint8 kRangeMongolian = 42;
const PRUint8 kRangeMathOperators = 43;
const PRUint8 kRangeMiscTechnical = 44;
const PRUint8 kRangeControlOpticalEnclose = 45;
const PRUint8 kRangeBoxBlockGeometrics = 46;
const PRUint8 kRangeMiscSymbols = 47;
const PRUint8 kRangeDingbats = 48;
const PRUint8 kRangeBraillePattern = 49;
const PRUint8 kRangeYi = 50;
const PRUint8 kRangeCombiningDiacriticalMarks = 51;
const PRUint8 kRangeSpecials = 52;
const PRUint8 kRangeTableBase = 128; //values over 127 are reserved for internal use only
const PRUint8 kRangeTertiaryTable = 145; // leave room for 16 subtable