Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(67)

Side by Side Diff: Source/platform/fonts/win/FontFallbackWin.cpp

Issue 417823002: Merge 178313 "Add monospace-specific fallback for Hebrew and Ara..." (Closed) Base URL: svn://svn.chromium.org/blink/branches/chromium/2062/
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 } 62 }
63 actualFamilies->unref(); 63 actualFamilies->unref();
64 64
65 return matchesRequestedFamily; 65 return matchesRequestedFamily;
66 } 66 }
67 67
68 // A simple mapping from UScriptCode to family name. This is a sparse array, 68 // A simple mapping from UScriptCode to family name. This is a sparse array,
69 // which works well since the range of UScriptCode values is small. 69 // which works well since the range of UScriptCode values is small.
70 typedef const UChar* ScriptToFontMap[USCRIPT_CODE_LIMIT]; 70 typedef const UChar* ScriptToFontMap[USCRIPT_CODE_LIMIT];
71 71
72 void initializeScriptMonospaceFontMap(ScriptToFontMap& scriptFontMap, SkFontMgr* fontManager)
73 {
74 struct FontMap {
75 UScriptCode script;
76 const UChar* family;
77 };
78
79 static const FontMap fontMap[] = {
80 { USCRIPT_HEBREW, L"courier new" },
81 { USCRIPT_ARABIC, L"courier new" },
82 };
83
84 for (size_t i = 0; i < WTF_ARRAY_LENGTH(fontMap); ++i)
85 scriptFontMap[fontMap[i].script] = fontMap[i].family;
86 }
87
72 void initializeScriptFontMap(ScriptToFontMap& scriptFontMap, SkFontMgr* fontMana ger) 88 void initializeScriptFontMap(ScriptToFontMap& scriptFontMap, SkFontMgr* fontMana ger)
73 { 89 {
74 struct FontMap { 90 struct FontMap {
75 UScriptCode script; 91 UScriptCode script;
76 const UChar* family; 92 const UChar* family;
77 }; 93 };
78 94
79 static const FontMap fontMap[] = { 95 static const FontMap fontMap[] = {
80 {USCRIPT_LATIN, L"times new roman"}, 96 {USCRIPT_LATIN, L"times new roman"},
81 {USCRIPT_GREEK, L"times new roman"}, 97 {USCRIPT_GREEK, L"times new roman"},
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 // - Consider using UnicodeSet (or UnicodeMap) converted from 268 // - Consider using UnicodeSet (or UnicodeMap) converted from
253 // GLYPHSET (BMP) or directly read from truetype cmap tables to 269 // GLYPHSET (BMP) or directly read from truetype cmap tables to
254 // keep track of which character is supported by which font 270 // keep track of which character is supported by which font
255 // - Update script_font_cache in response to WM_FONTCHANGE 271 // - Update script_font_cache in response to WM_FONTCHANGE
256 272
257 const UChar* getFontFamilyForScript(UScriptCode script, 273 const UChar* getFontFamilyForScript(UScriptCode script,
258 FontDescription::GenericFamilyType generic, 274 FontDescription::GenericFamilyType generic,
259 SkFontMgr* fontManager) 275 SkFontMgr* fontManager)
260 { 276 {
261 static ScriptToFontMap scriptFontMap; 277 static ScriptToFontMap scriptFontMap;
278 static ScriptToFontMap scriptMonospaceFontMap;
262 static bool initialized = false; 279 static bool initialized = false;
263 if (!initialized) { 280 if (!initialized) {
264 initializeScriptFontMap(scriptFontMap, fontManager); 281 initializeScriptFontMap(scriptFontMap, fontManager);
282 initializeScriptMonospaceFontMap(scriptMonospaceFontMap, fontManager);
265 initialized = true; 283 initialized = true;
266 } 284 }
267 if (script == USCRIPT_INVALID_CODE) 285 if (script == USCRIPT_INVALID_CODE)
268 return 0; 286 return 0;
269 ASSERT(script < USCRIPT_CODE_LIMIT); 287 ASSERT(script < USCRIPT_CODE_LIMIT);
288 if (generic == FontDescription::MonospaceFamily && scriptMonospaceFontMap[sc ript])
289 return scriptMonospaceFontMap[script];
270 return scriptFontMap[script]; 290 return scriptFontMap[script];
271 } 291 }
272 292
273 // FIXME: 293 // FIXME:
274 // - Handle 'Inherited', 'Common' and 'Unknown' 294 // - Handle 'Inherited', 'Common' and 'Unknown'
275 // (see http://www.unicode.org/reports/tr24/#Usage_Model ) 295 // (see http://www.unicode.org/reports/tr24/#Usage_Model )
276 // For 'Inherited' and 'Common', perhaps we need to 296 // For 'Inherited' and 'Common', perhaps we need to
277 // accept another parameter indicating the previous family 297 // accept another parameter indicating the previous family
278 // and just return it. 298 // and just return it.
279 // - All the characters (or characters up to the point a single 299 // - All the characters (or characters up to the point a single
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 family = L"lucida sans unicode"; 342 family = L"lucida sans unicode";
323 } 343 }
324 } 344 }
325 345
326 if (scriptChecked) 346 if (scriptChecked)
327 *scriptChecked = script; 347 *scriptChecked = script;
328 return family; 348 return family;
329 } 349 }
330 350
331 } // namespace WebCore 351 } // namespace WebCore
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698