Index: Source/platform/fonts/win/FontFallbackWin.cpp |
=================================================================== |
--- Source/platform/fonts/win/FontFallbackWin.cpp (revision 178785) |
+++ Source/platform/fonts/win/FontFallbackWin.cpp (working copy) |
@@ -69,6 +69,22 @@ |
// which works well since the range of UScriptCode values is small. |
typedef const UChar* ScriptToFontMap[USCRIPT_CODE_LIMIT]; |
+void initializeScriptMonospaceFontMap(ScriptToFontMap& scriptFontMap, SkFontMgr* fontManager) |
+{ |
+ struct FontMap { |
+ UScriptCode script; |
+ const UChar* family; |
+ }; |
+ |
+ static const FontMap fontMap[] = { |
+ { USCRIPT_HEBREW, L"courier new" }, |
+ { USCRIPT_ARABIC, L"courier new" }, |
+ }; |
+ |
+ for (size_t i = 0; i < WTF_ARRAY_LENGTH(fontMap); ++i) |
+ scriptFontMap[fontMap[i].script] = fontMap[i].family; |
+} |
+ |
void initializeScriptFontMap(ScriptToFontMap& scriptFontMap, SkFontMgr* fontManager) |
{ |
struct FontMap { |
@@ -259,14 +275,18 @@ |
SkFontMgr* fontManager) |
{ |
static ScriptToFontMap scriptFontMap; |
+ static ScriptToFontMap scriptMonospaceFontMap; |
static bool initialized = false; |
if (!initialized) { |
initializeScriptFontMap(scriptFontMap, fontManager); |
+ initializeScriptMonospaceFontMap(scriptMonospaceFontMap, fontManager); |
initialized = true; |
} |
if (script == USCRIPT_INVALID_CODE) |
return 0; |
ASSERT(script < USCRIPT_CODE_LIMIT); |
+ if (generic == FontDescription::MonospaceFamily && scriptMonospaceFontMap[script]) |
+ return scriptMonospaceFontMap[script]; |
return scriptFontMap[script]; |
} |