| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2006, 2007, 2008, 2009, 2010, 2012 Google Inc. All rights reser
ved. | 2 * Copyright (c) 2006, 2007, 2008, 2009, 2010, 2012 Google Inc. All rights reser
ved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 }; | 100 }; |
| 101 | 101 |
| 102 static const FontMap fontMap[] = { | 102 static const FontMap fontMap[] = { |
| 103 {USCRIPT_LATIN, L"times new roman"}, | 103 {USCRIPT_LATIN, L"times new roman"}, |
| 104 {USCRIPT_GREEK, L"times new roman"}, | 104 {USCRIPT_GREEK, L"times new roman"}, |
| 105 {USCRIPT_CYRILLIC, L"times new roman"}, | 105 {USCRIPT_CYRILLIC, L"times new roman"}, |
| 106 // FIXME: Consider trying new Vista fonts before XP fonts for CJK. | 106 // FIXME: Consider trying new Vista fonts before XP fonts for CJK. |
| 107 // Some Vista users do want to use Vista cleartype CJK fonts. If we | 107 // Some Vista users do want to use Vista cleartype CJK fonts. If we |
| 108 // did, the results of tests with CJK characters would have to be | 108 // did, the results of tests with CJK characters would have to be |
| 109 // regenerated for Vista. | 109 // regenerated for Vista. |
| 110 {USCRIPT_SIMPLIFIED_HAN, L"simsun"}, | |
| 111 {USCRIPT_TRADITIONAL_HAN, L"pmingliu"}, | |
| 112 {USCRIPT_HIRAGANA, L"ms pgothic"}, | |
| 113 {USCRIPT_KATAKANA, L"ms pgothic"}, | |
| 114 {USCRIPT_KATAKANA_OR_HIRAGANA, L"ms pgothic"}, | |
| 115 {USCRIPT_THAANA, L"mv boli"}, | 110 {USCRIPT_THAANA, L"mv boli"}, |
| 116 {USCRIPT_MONGOLIAN, L"mongolian balti"}, | 111 {USCRIPT_MONGOLIAN, L"mongolian balti"}, |
| 117 // For USCRIPT_COMMON, we map blocks to scripts when | 112 // For USCRIPT_COMMON, we map blocks to scripts when |
| 118 // that makes sense. | 113 // that makes sense. |
| 119 }; | 114 }; |
| 120 | 115 |
| 121 struct ScriptToFontFamilies { | 116 struct ScriptToFontFamilies { |
| 122 UScriptCode script; | 117 UScriptCode script; |
| 123 const UChar** families; | 118 const UChar** families; |
| 124 }; | 119 }; |
| 125 | 120 |
| 126 // Kartika on Vista or earlier lacks the support for Chillu | 121 // Kartika on Vista or earlier lacks the support for Chillu |
| 127 // letters added to Unicode 5.1. | 122 // letters added to Unicode 5.1. |
| 128 // Try AnjaliOldLipi (a very widely used Malaylalam font with the full | 123 // Try AnjaliOldLipi (a very widely used Malaylalam font with the full |
| 129 // Unicode 5.x support) before falling back to Kartika. | 124 // Unicode 5.x support) before falling back to Kartika. |
| 130 static const UChar* malayalamFonts[] = {L"AnjaliOldLipi", L"Lohit Malayalam"
, L"Kartika", L"Rachana", 0}; | 125 static const UChar* malayalamFonts[] = {L"AnjaliOldLipi", L"Lohit Malayalam"
, L"Kartika", L"Rachana", L"Nirmala UI", 0}; |
| 131 // Try Khmer OS before Vista fonts because 'Khmer OS' goes along better | 126 // Try Khmer OS before Vista fonts because 'Khmer OS' goes along better |
| 132 // with Latin and looks better/larger for the same size. | 127 // with Latin and looks better/larger for the same size. |
| 133 static const UChar* khmerFonts[] = {L"Khmer OS", L"MoolBoran", L"DaunPenh",
L"Code2000", 0}; | 128 static const UChar* khmerFonts[] = {L"Leelawadee UI", L"Khmer OS", L"MoolBor
an", L"DaunPenh", L"Code2000", 0}; |
| 134 // For the following 6 scripts, two or fonts are listed. The fonts in | 129 // For the following 6 scripts, two or fonts are listed. The fonts in |
| 135 // the 1st slot are not available on Windows XP. To support these | 130 // the 1st slot are not available on Windows XP. To support these |
| 136 // scripts on XP, listed in the rest of slots are widely used | 131 // scripts on XP, listed in the rest of slots are widely used |
| 137 // fonts. | 132 // fonts. |
| 138 static const UChar* ethiopicFonts[] = {L"Nyala", L"Abyssinica SIL", L"Ethiop
ia Jiret", L"Visual Geez Unicode", L"GF Zemen Unicode", 0}; | 133 static const UChar* ethiopicFonts[] = {L"Nyala", L"Abyssinica SIL", L"Ethiop
ia Jiret", L"Visual Geez Unicode", L"GF Zemen Unicode", L"Ebrima", 0}; |
| 139 static const UChar* oriyaFonts[] = {L"Kalinga", L"ori1Uni", L"Lohit Oriya",
0}; | 134 static const UChar* oriyaFonts[] = {L"Kalinga", L"ori1Uni", L"Lohit Oriya",
L"Nirmala UI", 0}; |
| 140 static const UChar* laoFonts[] = {L"DokChampa", L"Saysettha OT", L"Phetsarat
h OT", L"Code2000", 0}; | 135 static const UChar* laoFonts[] = {L"Leelawadee UI", L"DokChampa", L"Saysetth
a OT", L"Phetsarath OT", L"Code2000", 0}; |
| 141 static const UChar* tibetanFonts[] = {L"Microsoft Himalaya", L"Jomolhari", L
"Tibetan Machine Uni", 0}; | 136 static const UChar* tibetanFonts[] = {L"Microsoft Himalaya", L"Jomolhari", L
"Tibetan Machine Uni", 0}; |
| 142 static const UChar* sinhalaFonts[] = {L"Iskoola Pota", L"AksharUnicode", 0}; | 137 static const UChar* sinhalaFonts[] = {L"Iskoola Pota", L"AksharUnicode", L"N
irmala UI", 0}; |
| 143 static const UChar* yiFonts[] = {L"Microsoft Yi Balti", L"Nuosu SIL", L"Code
2000", 0}; | 138 static const UChar* yiFonts[] = {L"Microsoft Yi Balti", L"Nuosu SIL", L"Code
2000", 0}; |
| 144 // http://www.bethmardutho.org/support/meltho/download/index.php | 139 // http://www.bethmardutho.org/support/meltho/download/index.php |
| 145 static const UChar* syriacFonts[] = {L"Estrangelo Edessa", L"Estrangelo Nisi
bin", L"Code2000", 0}; | 140 static const UChar* syriacFonts[] = {L"Estrangelo Edessa", L"Estrangelo Nisi
bin", L"Code2000", 0}; |
| 146 static const UChar* myanmarFonts[] = {L"Myanmar Text", L"Padauk", L"Parabaik
", L"Myanmar3", L"Code2000", 0}; | 141 static const UChar* myanmarFonts[] = {L"Myanmar Text", L"Padauk", L"Parabaik
", L"Myanmar3", L"Code2000", 0}; |
| 147 static const UChar* gothicFonts[] = {L"Segoe UI Symbol", 0}; | 142 static const UChar* gothicFonts[] = {L"Segoe UI Symbol", 0}; |
| 148 static const UChar* hangulFonts[] = {L"gulim", L"Malgun Gothic", 0}; | 143 static const UChar* hangulFonts[] = {L"gulim", L"Malgun Gothic", 0}; |
| 149 static const UChar* devanagariFonts[] = {L"mangal", L"Nirmala UI", 0}; | 144 static const UChar* devanagariFonts[] = {L"mangal", L"Nirmala UI", 0}; |
| 150 static const UChar* gujaratiFonts[] = {L"shruti", L"Nirmala UI", 0}; | 145 static const UChar* gujaratiFonts[] = {L"shruti", L"Nirmala UI", 0}; |
| 151 static const UChar* bengaliFonts[] = {L"vrinda", L"Nirmala UI", 0}; | 146 static const UChar* bengaliFonts[] = {L"vrinda", L"Nirmala UI", 0}; |
| 152 static const UChar* teluguFonts[] = {L"gautami", L"Nirmala UI", 0}; | 147 static const UChar* teluguFonts[] = {L"gautami", L"Nirmala UI", 0}; |
| 153 static const UChar* tamilFonts[] = {L"latha", L"Nirmala UI", 0}; | 148 static const UChar* tamilFonts[] = {L"latha", L"Nirmala UI", 0}; |
| 154 static const UChar* kannadaFonts[] = {L"tunga", L"Nirmala UI", 0}; | 149 static const UChar* kannadaFonts[] = {L"tunga", L"Nirmala UI", 0}; |
| 155 static const UChar* gurumukhiFonts[] = {L"raavi", L"Nirmala UI", 0}; | 150 static const UChar* gurumukhiFonts[] = {L"raavi", L"Nirmala UI", 0}; |
| 156 static const UChar* thaiFonts[] = {L"tahoma", L"Leelawadee UI", L"Leelawadee
", 0}; | 151 static const UChar* thaiFonts[] = {L"tahoma", L"Leelawadee UI", L"Leelawadee
", 0}; |
| 157 static const UChar* hebrewFonts[] = {L"david", L"Segoe UI", 0}; | 152 static const UChar* hebrewFonts[] = {L"david", L"Segoe UI", 0}; |
| 158 static const UChar* arabicFonts[] = {L"tahoma", L"Segoe UI", 0}; | 153 static const UChar* arabicFonts[] = {L"tahoma", L"Segoe UI", 0}; |
| 159 static const UChar* georgianFonts[] = {L"sylfaen", L"Segoe UI", 0}; | 154 static const UChar* georgianFonts[] = {L"sylfaen", L"Segoe UI", 0}; |
| 160 static const UChar* armenianFonts[] = {L"sylfaen", L"Segoe UI", 0}; | 155 static const UChar* armenianFonts[] = {L"sylfaen", L"Segoe UI", 0}; |
| 161 static const UChar* canadianAboriginalFonts[] = {L"euphemia", L"Gadugi", 0}; | 156 static const UChar* canadianAboriginalFonts[] = {L"euphemia", L"Gadugi", 0}; |
| 162 static const UChar* cherokeeFonts[] = {L"plantagenet cherokee", L"Gadugi", 0
}; | 157 static const UChar* cherokeeFonts[] = {L"plantagenet cherokee", L"Gadugi", 0
}; |
| 158 static const UChar* simplifiedHanFonts[] = {L"simsun", L"Microsoft YaHei", 0
}; |
| 159 static const UChar* traditionalHanFonts[] = {L"pmingliu", L"Microsoft JhengH
ei", 0}; |
| 160 static const UChar* hiraganaFonts[] = {L"ms pgothic", L"Yu Gothic", L"Micros
oft YaHei", 0}; |
| 161 static const UChar* katakanaFonts[] = {L"ms pgothic", L"Yu Gothic", L"Micros
oft YaHei", 0}; |
| 162 static const UChar* katakanaOrHiraganaFonts[] = {L"ms pgothic", L"Yu Gothic"
, L"Microsoft YaHei", 0}; |
| 163 | 163 |
| 164 static const ScriptToFontFamilies scriptToFontFamilies[] = { | 164 static const ScriptToFontFamilies scriptToFontFamilies[] = { |
| 165 {USCRIPT_MALAYALAM, malayalamFonts}, | 165 {USCRIPT_MALAYALAM, malayalamFonts}, |
| 166 {USCRIPT_KHMER, khmerFonts}, | 166 {USCRIPT_KHMER, khmerFonts}, |
| 167 {USCRIPT_ETHIOPIC, ethiopicFonts}, | 167 {USCRIPT_ETHIOPIC, ethiopicFonts}, |
| 168 {USCRIPT_ORIYA, oriyaFonts}, | 168 {USCRIPT_ORIYA, oriyaFonts}, |
| 169 {USCRIPT_LAO, laoFonts}, | 169 {USCRIPT_LAO, laoFonts}, |
| 170 {USCRIPT_TIBETAN, tibetanFonts}, | 170 {USCRIPT_TIBETAN, tibetanFonts}, |
| 171 {USCRIPT_SINHALA, sinhalaFonts}, | 171 {USCRIPT_SINHALA, sinhalaFonts}, |
| 172 {USCRIPT_YI, yiFonts}, | 172 {USCRIPT_YI, yiFonts}, |
| 173 {USCRIPT_SYRIAC, syriacFonts}, | 173 {USCRIPT_SYRIAC, syriacFonts}, |
| 174 {USCRIPT_MYANMAR, myanmarFonts}, | 174 {USCRIPT_MYANMAR, myanmarFonts}, |
| 175 {USCRIPT_GOTHIC, gothicFonts}, | 175 {USCRIPT_GOTHIC, gothicFonts}, |
| 176 {USCRIPT_HANGUL, hangulFonts}, | 176 {USCRIPT_HANGUL, hangulFonts}, |
| 177 {USCRIPT_DEVANAGARI, devanagariFonts}, | 177 {USCRIPT_DEVANAGARI, devanagariFonts}, |
| 178 {USCRIPT_GUJARATI, gujaratiFonts}, | 178 {USCRIPT_GUJARATI, gujaratiFonts}, |
| 179 {USCRIPT_BENGALI, bengaliFonts}, | 179 {USCRIPT_BENGALI, bengaliFonts}, |
| 180 {USCRIPT_TELUGU, teluguFonts}, | 180 {USCRIPT_TELUGU, teluguFonts}, |
| 181 {USCRIPT_TAMIL, tamilFonts}, | 181 {USCRIPT_TAMIL, tamilFonts}, |
| 182 {USCRIPT_KANNADA, kannadaFonts}, | 182 {USCRIPT_KANNADA, kannadaFonts}, |
| 183 {USCRIPT_GURMUKHI, gurumukhiFonts}, | 183 {USCRIPT_GURMUKHI, gurumukhiFonts}, |
| 184 {USCRIPT_THAI, thaiFonts}, | 184 {USCRIPT_THAI, thaiFonts}, |
| 185 {USCRIPT_HEBREW, hebrewFonts}, | 185 {USCRIPT_HEBREW, hebrewFonts}, |
| 186 {USCRIPT_ARABIC, arabicFonts}, | 186 {USCRIPT_ARABIC, arabicFonts}, |
| 187 {USCRIPT_GEORGIAN, georgianFonts}, | 187 {USCRIPT_GEORGIAN, georgianFonts}, |
| 188 {USCRIPT_ARMENIAN, armenianFonts}, | 188 {USCRIPT_ARMENIAN, armenianFonts}, |
| 189 {USCRIPT_CANADIAN_ABORIGINAL, canadianAboriginalFonts}, | 189 {USCRIPT_CANADIAN_ABORIGINAL, canadianAboriginalFonts}, |
| 190 {USCRIPT_CHEROKEE, cherokeeFonts}, | 190 {USCRIPT_CHEROKEE, cherokeeFonts}, |
| 191 {USCRIPT_SIMPLIFIED_HAN, simplifiedHanFonts}, |
| 192 {USCRIPT_TRADITIONAL_HAN, traditionalHanFonts}, |
| 193 {USCRIPT_HIRAGANA, hiraganaFonts}, |
| 194 {USCRIPT_KATAKANA, katakanaFonts}, |
| 195 {USCRIPT_KATAKANA_OR_HIRAGANA, katakanaOrHiraganaFonts}, |
| 191 }; | 196 }; |
| 192 | 197 |
| 193 for (size_t i = 0; i < WTF_ARRAY_LENGTH(fontMap); ++i) | 198 for (size_t i = 0; i < WTF_ARRAY_LENGTH(fontMap); ++i) |
| 194 scriptFontMap[fontMap[i].script] = fontMap[i].family; | 199 scriptFontMap[fontMap[i].script] = fontMap[i].family; |
| 195 | 200 |
| 196 // FIXME: Instead of scanning the hard-coded list, we have to | 201 // FIXME: Instead of scanning the hard-coded list, we have to |
| 197 // use EnumFont* to 'inspect' fonts to pick up fonts covering scripts | 202 // use EnumFont* to 'inspect' fonts to pick up fonts covering scripts |
| 198 // when it's possible (e.g. using OS/2 table). If we do that, this | 203 // when it's possible (e.g. using OS/2 table). If we do that, this |
| 199 // had better be pulled out of here. | 204 // had better be pulled out of here. |
| 200 for (size_t i = 0; i < WTF_ARRAY_LENGTH(scriptToFontFamilies); ++i) { | 205 for (size_t i = 0; i < WTF_ARRAY_LENGTH(scriptToFontFamilies); ++i) { |
| (...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 405 family = L"lucida sans unicode"; | 410 family = L"lucida sans unicode"; |
| 406 } | 411 } |
| 407 } | 412 } |
| 408 | 413 |
| 409 if (scriptChecked) | 414 if (scriptChecked) |
| 410 *scriptChecked = script; | 415 *scriptChecked = script; |
| 411 return family; | 416 return family; |
| 412 } | 417 } |
| 413 | 418 |
| 414 } // namespace blink | 419 } // namespace blink |
| OLD | NEW |