bug 206123 : add more scripts to font-pref. UI for Windows build

(r=smontagu, sr=rbs, a=mkaply)
This commit is contained in:
jshin%mailaps.org 2003-05-23 05:36:50 +00:00
Родитель a7fd42cb54
Коммит 2f9ea6e59b
4 изменённых файлов: 288 добавлений и 46 удалений

Просмотреть файл

@ -1144,6 +1144,115 @@ static PRUint8 gCharsetToBit[eCharset_COUNT] =
21 // JOHAB_CHARSET,
};
// the mapping from bitfield in fsUsb (of FONTSIGNATURE) to UnicodeRange
// defined in nsUnicodeRange.h. Only the first 96 bits are mapped here
// because at the moment only the first 84 bits are assigned according to
// the MSDN. See
// http://msdn.microsoft.com/library/default.asp?url=/library/en-us/intl/unicode_63ub.asp
static PRUint8 gBitToUnicodeRange[] =
{
/* 0 */ kRangeSetLatin, // 0020 - 007e Basic Latin
/* 1 */ kRangeSetLatin, // 00a0 - 00ff Latin-1 Supplement
/* 2 */ kRangeSetLatin, // 0100 - 017f Latin Extended-A
/* 3 */ kRangeSetLatin, // 0180 - 024f Latin Extended-B
/* 4 */ kRangeSetLatin, // 0250 - 02af IPA Extensions
/* 5 */ kRangeSetLatin, // 02b0 - 02ff Spacing Modifier Letters
/* 6 */ kRangeGreek, // 0300 - 036f Combining Diacritical Marks
/* 7 */ kRangeGreek, // 0370 - 03ff Basic Greek
/* 8 */ kRangeUnassigned, // Reserved
/* 9 */ kRangeCyrillic, // 0400 - 04ff Cyrillic
/* 10 */ kRangeArmenian, // 0530 - 058f Armenian
/* 11 */ kRangeHebrew, // 0590 - 05ff Basic Hebrew
/* 12 */ kRangeUnassigned, // Reserved
/* 13 */ kRangeArabic, // 0600 - 06ff Basic Arabic
/* 14 */ kRangeUnassigned, // Reserved
/* 15 */ kRangeDevanagari, // 0900 - 097f Devanagari
/* 16 */ kRangeBengali, // 0980 - 09ff Bengali
/* 17 */ kRangeGurmukhi, // 0a00 - 0a7f Gurmukhi
/* 18 */ kRangeGujarati, // 0a80 - 0aff Gujarati
/* 19 */ kRangeOriya, // 0b00 - 0b7f Oriya
/* 20 */ kRangeTamil, // 0b80 - 0bff Tamil
/* 21 */ kRangeTelugu, // 0c00 - 0c7f Telugu
/* 22 */ kRangeKannada, // 0c80 - 0cff Kannada
/* 23 */ kRangeMalayalam, // 0d00 - 0d7f Malayalam
/* 24 */ kRangeThai, // 0e00 - 0e7f Thai
/* 25 */ kRangeLao, // 0e80 - 0eff Lao
/* 26 */ kRangeGeorgian, // 10a0 - 10ff Basic Georgian
/* 27 */ kRangeUnassigned, // Reserved
/* 28 */ kRangeKorean, // 1100 - 11ff Hangul Jamo
/* 29 */ kRangeSetLatin, // 1e00 - 1eff Latin Extended Additional
/* 30 */ kRangeGreek, // 1f00 - 1fff Greek Extended
/* 31 */ kRangeSetLatin, // 2000 - 206f General Punctuation
/* 32 */ kRangeSetLatin, // 2070 - 209f Subscripts and Superscripts
/* 33 */ kRangeSetLatin, // 20a0 - 20cf Currency Symbols
/* 34 */ kRangeSetLatin, // 20d0 - 20ff Comb. Diacrit. Marks for Symbols
/* 35 */ kRangeSetLatin, // 2100 - 214f Letter-like Symbols
/* 36 */ kRangeSetLatin, // 2150 - 218f Number Forms
/* 37 */ kRangeSetLatin, // 2190 - 21ff Arrows
/* 38 */ kRangeMathOperators, // 2200 - 22ff
/* 39 */ kRangeMiscTechnical, // 2300 - 23ff
/* 40 */ kRangeControlOpticalEnclose, // 2400 - 243f Control Pictures
/* 41 */ kRangeControlOpticalEnclose, // 2440 - 245f OCR
/* 42 */ kRangeControlOpticalEnclose, // 2460 - 24ff Enc. Alphanumerics
/* 43 */ kRangeBoxBlockGeometrics, // 2500 - 257f Box Drawing
/* 44 */ kRangeBoxBlockGeometrics, // 2580 - 259f Block Elements
/* 45 */ kRangeBoxBlockGeometrics, // 25a0 - 25ff Geometric Shapes
/* 46 */ kRangeMiscSymbols, // 2600 - 26ff
/* 47 */ kRangeDingbats, // 2700 - 27bf
/* 48 */ kRangeSetCJK, // 3000 - 303f CJK Symb & Punct.
/* 49 */ kRangeSetCJK, // 3040 - 309f Hiragana
/* 50 */ kRangeSetCJK, // 30a0 - 30ff Katakana
/* 51 */ kRangeSetCJK, // 3100 - 312f 31a0, - 31bf Bopomofo
/* 52 */ kRangeSetCJK, // 3130 - 318f Hangul Comp. Jamo
/* 53 */ kRangeSetCJK, // 3190 - 319f CJK Miscellaneous
/* 54 */ kRangeSetCJK, // 3200 - 32ff Enc. CJK Letters
/* 55 */ kRangeSetCJK, // 3300 - 33ff CJK Compatibility
/* 56 */ kRangeKorean, // ac00 - d7a3 Hangul
/* 57 */ kRangeSurrogate, // d800 - dfff Surrogates.
/* 58 */ kRangeUnassigned, // Reserved
/* 59 */ kRangeSetCJK, // 4e00 - 9fff CJK Ideographs
// 2e80 - 2eff 2f00 - 2fdf Radicals
// 2ff0 - 2fff IDS
// 3400 - 4dbf CJK Ext. A
/* 60 */ kRangePrivate, // e000 - f8ff PUA
/* 61 */ kRangeSetCJK, // f900 - faff CJK Compat.
/* 62 */ kRangeArabic, // fb00 - fb4f Alpha. Presen. Forms
/* 63 */ kRangeArabic, // fb50 - fdff Arabic Presen. FormsA
/* 64 */ kRangeArabic, // fe20 - fe2f Combining Half Marks
/* 65 */ kRangeArabic, // fe30 - fe4f CJK Compat. Forms
/* 66 */ kRangeArabic, // fe50 - fe6f Small Form Variants
/* 67 */ kRangeArabic, // fe70 - fefe Arabic Presen. FormsB
/* 68 */ kRangeSetCJK, // ff00 - ffef Half/Fullwidth Forms
/* 69 */ kRangeSetCJK, // fff0 - fffd Specials
/* 70 */ kRangeTibetan, // 0f00 - 0fcf Tibetan
/* 71 */ kRangeSyriac, // 0700 - 074f Syriac
/* 72 */ kRangeThaana, // 0780 - 07bf Thaana
/* 73 */ kRangeSinhala, // 0d80 - 0dff Sinhala
/* 74 */ kRangeMyanmar, // 1000 - 109f Myanmar
/* 75 */ kRangeEthiopic, // 1200 - 12bf Ethiopic
/* 76 */ kRangeCherokee, // 13a0 - 13ff Cherokee
/* 77 */ kRangeAboriginal, // 1400 - 14df Can. Aboriginal Syl.
/* 78 */ kRangeOghamRunic, // 1680 - 169f Ogham
/* 79 */ kRangeOghamRunic, // 16a0 - 16ff Runic
/* 80 */ kRangeKhmer, // 1780 - 17ff Khmer
/* 81 */ kRangeMongolian, // 1800 - 18af Mongolian
/* 82 */ kRangeBraillePattern, // 2800 - 28ff Braille
/* 83 */ kRangeYi, // a000 - a48c Yi Yi Radicals
/* 84 */ kRangeUnassigned, // Reserved
/* 85 */ kRangeUnassigned,
/* 86 */ kRangeUnassigned,
/* 87 */ kRangeUnassigned,
/* 88 */ kRangeUnassigned,
/* 89 */ kRangeUnassigned,
/* 90 */ kRangeUnassigned,
/* 91 */ kRangeUnassigned,
/* 92 */ kRangeUnassigned,
/* 93 */ kRangeUnassigned,
/* 94 */ kRangeUnassigned,
/* 95 */ kRangeUnassigned
};
// Helper to determine if a font has a private encoding that we know something about
static nsresult
GetEncoding(const char* aFontName, nsString& aValue)
@ -2321,9 +2430,11 @@ nsFontMetricsWin::LoadGlobalFont(HDC aDC, nsGlobalFont* aGlobalFont)
}
static int CALLBACK
enumProc(const LOGFONT* logFont, const TEXTMETRIC* metrics,
enumProc(const ENUMLOGFONTEX* logFontEx, const NEWTEXTMETRICEX* metrics,
DWORD fontType, LPARAM closure)
{
const LOGFONT* logFont = &(logFontEx->elfLogFont);
// XXX ignore vertical fonts
if (logFont->lfFaceName[0] == '@') {
return 1;
@ -2338,6 +2449,11 @@ enumProc(const LOGFONT* logFont, const TEXTMETRIC* metrics,
DWORD charsetSigAdd = 1 << charsetSigBit;
font->signature.fsCsb[0] |= charsetSigAdd;
}
// copy Unicode subrange bitfield (128bit) if it's a truetype font.
if (fontType & TRUETYPE_FONTTYPE) {
memcpy(font->signature.fsUsb, metrics->ntmFontSig.fsUsb, 16);
}
return 1;
}
}
@ -2364,6 +2480,8 @@ enumProc(const LOGFONT* logFont, const TEXTMETRIC* metrics,
if (fontType & TRUETYPE_FONTTYPE) {
font->flags |= NS_GLOBALFONT_TRUETYPE;
// copy Unicode subrange bitfield (128 bits = 16 bytes)
memcpy(font->signature.fsUsb, metrics->ntmFontSig.fsUsb, 16);
}
if (logFont->lfCharSet == SYMBOL_CHARSET) {
font->flags |= NS_GLOBALFONT_SYMBOL;
@ -2421,7 +2539,7 @@ nsFontMetricsWin::InitializeGlobalFonts(HDC aDC)
* msdn.microsoft.com/library states that
* EnumFontFamiliesExW is only on NT/2000
*/
EnumFontFamiliesEx(aDC, &logFont, enumProc, nsnull, 0);
EnumFontFamiliesEx(aDC, &logFont, (FONTENUMPROC) enumProc, nsnull, 0);
// Sort the global list of fonts to put the 'preferred' fonts first
gGlobalFonts->Sort(CompareGlobalFonts, nsnull);
@ -3213,6 +3331,18 @@ nsFontMetricsWin::FindGenericFont(HDC aDC, PRUint32 aChar)
if (mLangGroup) {
const char* langGroup;
mLangGroup->GetUTF8String(&langGroup);
// x-unicode pseudo-langGroup should be the last resort to turn to.
// That is, it should be refered to only when we don't recognize
// |langGroup| specified by the authors of documents and the
// determination of |langGroup| based on Unicode range also fails
// in |FindPrefFont|.
if (!strcmp(langGroup, "x-unicode")) {
mTriedAllGenerics = 1;
return nsnull;
}
AppendGenericFontFromPref(font.name, langGroup,
NS_ConvertUCS2toUTF8(mGeneric).get());
}
@ -5142,6 +5272,9 @@ SignatureMatchesLangGroup(FONTSIGNATURE* aSignature,
const char* aLangGroup)
{
int dword;
// For scripts that have been supported by 'ANSI' codepage in Win9x/ME,
// we can rely on fsCsb.
DWORD* array = aSignature->fsCsb;
int i = 0;
for (dword = 0; dword < 2; ++dword) {
@ -5156,6 +5289,36 @@ SignatureMatchesLangGroup(FONTSIGNATURE* aSignature,
}
}
// For aLangGroup corresponding to one of 'ANSI' codepages, the negative
// result from fsCsb should be considered final. Otherwise, we risk getting
// a false positive from fsUsb, which could lead unncessarily to
// a mix of glyphs from different fonts.
// x-western .. zh-TW. (exclude JOHAB)
for (i = eCharset_ANSI; i <= eCharset_CHINESEBIG5; ++i)
{
if (!strcmp(gCharsetInfo[i].mLangGroup, aLangGroup))
return 0;
}
// For other scripts, we need fsUsb (Unicode coverage bitfield : 128bit).
// Here we're just examining the first 3 dwords because at the moment
// only the first 84 bits are assigned according to the MSDN.
array = aSignature->fsUsb;
for (i = 0, dword = 0; dword < 3; ++dword) {
for (int bit = 0; bit < sizeof(DWORD) * 8; ++bit) {
if ((array[dword] >> bit) & 1) {
PRUint8 range = gBitToUnicodeRange[i];
if (kRangeSpecificItemNum > range &&
!strcmp(gUnicodeRangeToLangGroupTable[range], aLangGroup)) {
return 1;
}
}
++i;
}
}
return 0;
}
@ -5163,7 +5326,7 @@ static int
FontMatchesGenericType(nsGlobalFont* aFont, const char* aGeneric)
{
switch (aFont->logFont.lfPitchAndFamily & 0xF0) {
case FF_DONTCARE: return 0;
case FF_DONTCARE: return 1;
case FF_ROMAN: return !strcmp(aGeneric, "serif");
case FF_SWISS: return !strcmp(aGeneric, "sans-serif");
case FF_MODERN: return !strcmp(aGeneric, "monospace");

Просмотреть файл

@ -51,6 +51,8 @@ const char *gUnicodeRangeToLangGroupTable[] =
"ja",
"zh-CN",
"zh-TW",
"x-devanagari",
"x-tamil"
};
/**********************************************************************
@ -224,24 +226,24 @@ static PRUint8 gUnicodeSubrangeTable[NUM_OF_SUBTABLES][SUBTABLE_SIZE] =
kRangeCyrillic, //u04xx
kRangeHebrew, //u05xx XXX 0530-058f is in fact kRangeArmenian
kRangeArabic, //u06xx
kRangeSriacThaana, //u07xx
kRangeTertiaryTable, //u07xx
kRangeUnassigned, //u08xx
kRangeDevanagariBengali, //u09xx
kRangeGurmukhiGujarati, //u0axx
kRangeOriyaTamil, //u0bxx
kRangeTeluguKannada, //u0cxx
kRangeMalayalamSinhala, //u0dxx
kRangeThaiLao, //u0exx
kRangeTibetan, //u0fxx
kRangeTertiaryTable, //u09xx
kRangeTertiaryTable, //u0axx
kRangeTertiaryTable, //u0bxx
kRangeTertiaryTable, //u0cxx
kRangeTertiaryTable, //u0dxx
kRangeTertiaryTable, //u0exx
kRangeTertiaryTable, //u0fxx
},
{ //table for 1x--
kRangeMyanmarGeorgian, //u10xx
kRangeTertiaryTable, //u10xx
kRangeKorean, //u11xx
kRangeEthiopic, //u12xx
kRangeEthiopicCherokee, //u13xx
kRangeTertiaryTable, //u13xx
kRangeAboriginal, //u14xx
kRangeAboriginal, //u15xx
kRangeAboriginalOghamRunic, //u16xx
kRangeTertiaryTable, //u16xx
kRangeKhmer, //u17xx
kRangeMongolian, //u18xx
kRangeUnassigned, //u19xx
@ -256,7 +258,7 @@ static PRUint8 gUnicodeSubrangeTable[NUM_OF_SUBTABLES][SUBTABLE_SIZE] =
kRangeSetLatin, //u20xx
kRangeSetLatin, //u21xx
kRangeMathOperators, //u22xx
kRangeMiscTechical, //u23xx
kRangeMiscTechnical, //u23xx
kRangeControlOpticalEnclose, //u24xx
kRangeBoxBlockGeometrics, //u25xx
kRangeMiscSymbols, //u26xx
@ -322,20 +324,65 @@ static PRUint8 gUnicodeSubrangeTable[NUM_OF_SUBTABLES][SUBTABLE_SIZE] =
kRangeArabic, //ufcxx
kRangeArabic, //ufdxx
kRangeArabic, //ufexx, includes Combining half marks,
// CJK compatibility forms,
// CJK compatibility forms,
// small form variants
// CJK compatibility forms,
// CJK compatibility forms,
// small form variants
kRangeSetCJK, //uffxx, halfwidth and fullwidth forms, includes Special
}
};
// Most scripts between U+0700 and U+16FF are assigned a chunk of 128 (0x80)
// code points so that the number of entries in the tertiary range
// table for that range is obtained by dividing (0x1700 - 0x0700) by 128.
// Exceptions: Ethiopic, Tibetan, Hangul Jamo and Canadian aboriginal
// syllabaries take multiple chunks and Ogham and Runic share a single chunk.
#define TERTIARY_TABLE_SIZE ((0x1700 - 0x0700) / 0x80)
static PRUint8 gUnicodeTertiaryRangeTable[TERTIARY_TABLE_SIZE] =
{ //table for 0x0700 - 0x1600
kRangeSyriac, //u070x
kRangeThaana, //u078x
kRangeUnassigned, //u080x place holder(resolved in the 2ndary tab.)
kRangeUnassigned, //u088x place holder(resolved in the 2ndary tab.)
kRangeDevanagari, //u090x
kRangeBengali, //u098x
kRangeGurmukhi, //u0a0x
kRangeGujarati, //u0a8x
kRangeOriya, //u0b0x
kRangeTamil, //u0b8x
kRangeTelugu, //u0c0x
kRangeKannada, //u0c8x
kRangeMalayalam, //u0d0x
kRangeSinhala, //u0d8x
kRangeThai, //u0e0x
kRangeLao, //u0e8x
kRangeTibetan, //u0f0x place holder(resolved in the 2ndary tab.)
kRangeTibetan, //u0f8x place holder(resolved in the 2ndary tab.)
kRangeMyanmar, //u100x
kRangeGeorgian, //u108x
kRangeKorean, //u110x place holder(resolved in the 2ndary tab.)
kRangeKorean, //u118x place holder(resolved in the 2ndary tab.)
kRangeEthiopic, //u120x place holder(resolved in the 2ndary tab.)
kRangeEthiopic, //u128x place holder(resolved in the 2ndary tab.)
kRangeEthiopic, //u130x
kRangeCherokee, //u138x
kRangeAboriginal, //u140x place holder(resolved in the 2ndary tab.)
kRangeAboriginal, //u148x place holder(resolved in the 2ndary tab.)
kRangeAboriginal, //u150x place holder(resolved in the 2ndary tab.)
kRangeAboriginal, //u158x place holder(resolved in the 2ndary tab.)
kRangeAboriginal, //u160x
kRangeOghamRunic, //u168x this contains two scripts, Ogham & Runic
};
// A two level index is almost enough for locating a range, with the
// exception of u03xx and u05xx. Since we don't really care about range for
// Armenian and combining diacritical marks in our font application, they are
// not discriminated further. But future adoption of this module for other use
// should be aware of this limitation. The implementation can be extended if
// there is such a need.
// For Indic, Southeast Asian scripts and some other scripts between
// U+0700 and U+16FF, it's extended to the third level.
PRUint32 FindCharUnicodeRange(PRUnichar ch)
{
PRUint32 range;
@ -349,6 +396,9 @@ PRUint32 FindCharUnicodeRange(PRUnichar ch)
// otherwise, we have one more table to look at
range = gUnicodeSubrangeTable[range - kRangeTableBase][(ch & 0x0f00) >> 8];
if (range < kRangeTertiaryTable)
return range;
return range;
// Yet another table to look at : U+0700 - U+16FF : 128 code point blocks
return gUnicodeTertiaryRangeTable[(ch - 0x0700) >> 7];
}

Просмотреть файл

@ -48,15 +48,17 @@ const PRUint8 kRangeTurkish = 2;
const PRUint8 kRangeHebrew = 3;
const PRUint8 kRangeArabic = 4;
const PRUint8 kRangeBaltic = 5;
const PRUint8 kRangeThaiLao = 6;
const PRUint8 kRangeThai = 6;
const PRUint8 kRangeKorean = 7;
const PRUint8 kRangeJapanese = 8;
const PRUint8 kRangeSChinese = 9;
const PRUint8 kRangeTChinese = 10;
const PRUint8 kRangeDevanagari = 11;
const PRUint8 kRangeTamil = 12;
const PRUint8 kRangeSpecificItemNum =11;
const PRUint8 kRangeSpecificItemNum = 13;
//range/rangeSet grow to this place 8-29
//range/rangeSet grow to this place 13-29
const PRUint8 kRangeSetStart = 30; // range set definition starts from here
const PRUint8 kRangeSetLatin = 30;
@ -68,32 +70,41 @@ const PRUint8 kRangeSurrogate = 32;
const PRUint8 kRangePrivate = 33;
const PRUint8 kRangeMisc = 34;
const PRUint8 kRangeUnassigned = 35;
const PRUint8 kRangeSriacThaana = 36;
const PRUint8 kRangeDevanagariBengali = 37;
const PRUint8 kRangeGurmukhiGujarati = 38;
const PRUint8 kRangeOriyaTamil = 39;
const PRUint8 kRangeTeluguKannada = 40;
const PRUint8 kRangeMalayalamSinhala = 41;
const PRUint8 kRangeTibetan = 42;
const PRUint8 kRangeMyanmarGeorgian = 43;
const PRUint8 kRangeEthiopic = 44;
const PRUint8 kRangeEthiopicCherokee = 45;
const PRUint8 kRangeAboriginal = 46;
const PRUint8 kRangeAboriginalOghamRunic = 47;
const PRUint8 kRangeKhmer = 48;
const PRUint8 kRangeMongolian = 49;
const PRUint8 kRangeMathOperators = 50;
const PRUint8 kRangeMiscTechical = 51;
const PRUint8 kRangeControlOpticalEnclose = 52;
const PRUint8 kRangeBoxBlockGeometrics = 53;
const PRUint8 kRangeMiscSymbols = 54;
const PRUint8 kRangeDingbats = 55;
const PRUint8 kRangeBraillePattern = 56;
const PRUint8 kRangeYi = 57;
const PRUint8 kRangeCombiningDiacriticalMarks = 58;
const PRUint8 kRangeArmenian = 59;
const PRUint8 kRangeSyriac = 36;
const PRUint8 kRangeThaana = 37;
const PRUint8 kRangeBengali = 38;
const PRUint8 kRangeGurmukhi = 39;
const PRUint8 kRangeGujarati = 40;
const PRUint8 kRangeOriya = 41;
const PRUint8 kRangeTelugu = 42;
const PRUint8 kRangeKannada = 43;
const PRUint8 kRangeMalayalam = 44;
const PRUint8 kRangeSinhala = 45;
const PRUint8 kRangeLao = 46;
const PRUint8 kRangeTibetan = 47;
const PRUint8 kRangeMyanmar = 48;
const PRUint8 kRangeGeorgian = 49;
const PRUint8 kRangeEthiopic = 50;
const PRUint8 kRangeCherokee = 51;
const PRUint8 kRangeAboriginal = 52;
const PRUint8 kRangeOghamRunic = 53;
const PRUint8 kRangeKhmer = 54;
const PRUint8 kRangeMongolian = 55;
const PRUint8 kRangeMathOperators = 56;
const PRUint8 kRangeMiscTechnical = 57;
const PRUint8 kRangeControlOpticalEnclose = 58;
const PRUint8 kRangeBoxBlockGeometrics = 59;
const PRUint8 kRangeMiscSymbols = 60;
const PRUint8 kRangeDingbats = 61;
const PRUint8 kRangeBraillePattern = 62;
const PRUint8 kRangeYi = 63;
const PRUint8 kRangeCombiningDiacriticalMarks = 64;
const PRUint8 kRangeArmenian = 65;
const PRUint8 kRangeTableBase = 128; //values over 127 are reserved for internal use only
const PRUint8 kRangeTertiaryTable = 145; // leave room for 16 subtable
// indices (kRangeTableBase + 1 ..
// kRangeTableBase + 16)

Просмотреть файл

@ -118,6 +118,18 @@ pref("font.name-list.serif.zh-TW", "MingLiU");
pref("font.name-list.sans-serif.zh-TW", "MingLiU");
pref("font.name-list.monospace.zh-TW", "MingLiU");
pref("font.name.serif.x-devanagari", "Mangal");
pref("font.name.sans-serif.x-devanagari", "Raghindi");
pref("font.name.monospace.x-devanagari", "Mangal");
pref("font.name-list.serif.x-devanagari", "Mangal, Raghindi");
pref("font.name-list.monospace.x-devanagari", "Mangal, Raghindi");
pref("font.name.serif.x-tamil", "Latha");
pref("font.name.sans-serif.x-tamil", "Code2000");
pref("font.name.monospace.x-tamil", "Latha");
pref("font.name-list.serif.x-tamil", "Latha, Code2000");
pref("font.name-list.monospace.x-tamil", "Latha, Code2000");
pref("font.default", "serif");
pref("font.size.variable.ar", 16);
pref("font.size.fixed.ar", 13);
@ -149,6 +161,12 @@ pref("font.size.fixed.x-central-euro", 13);
pref("font.size.variable.x-cyrillic", 16);
pref("font.size.fixed.x-cyrillic", 13);
pref("font.size.variable.x-devanagari", 16);
pref("font.size.fixed.x-devanagari", 13);
pref("font.size.variable.x-tamil", 16);
pref("font.size.fixed.x-tamil", 13);
pref("font.size.variable.x-unicode", 16);
pref("font.size.fixed.x-unicode", 13);