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

Side by Side Diff: Source/platform/fonts/android/FontCacheAndroid.cpp

Issue 185863007: Try last resort on no-match in platformFallbackForCharacter on Android (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Unit test Created 6 years, 9 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
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2011 Google Inc. All rights reserved. 2 * Copyright (c) 2011 Google Inc. All rights reserved.
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 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 case USCRIPT_HANGUL: 57 case USCRIPT_HANGUL:
58 locale = "ko"; 58 locale = "ko";
59 break; 59 break;
60 default: 60 default:
61 locale = 0; 61 locale = 0;
62 break; 62 break;
63 } 63 }
64 64
65 SkString skiaFamilyName; 65 SkString skiaFamilyName;
66 if (!SkGetFallbackFamilyNameForChar(c, locale, &skiaFamilyName) || skiaFamil yName.isEmpty()) 66 if (!SkGetFallbackFamilyNameForChar(c, locale, &skiaFamilyName) || skiaFamil yName.isEmpty())
67 return AtomicString(); 67 return emptyAtom;
68
68 return skiaFamilyName.c_str(); 69 return skiaFamilyName.c_str();
69 } 70 }
70 71
71 PassRefPtr<SimpleFontData> FontCache::platformFallbackForCharacter(const FontDes cription& fontDescription, UChar32 c, const SimpleFontData*) 72 PassRefPtr<SimpleFontData> FontCache::platformFallbackForCharacter(const FontDes cription& fontDescription, UChar32 c, const SimpleFontData*)
72 { 73 {
73 AtomicString familyName = getFamilyNameForCharacter(c, fontDescription.scrip t()); 74 AtomicString familyName = getFamilyNameForCharacter(c, fontDescription.scrip t());
74 if (familyName.isEmpty()) 75 if (familyName.isEmpty())
75 return nullptr; 76 return getLastResortFallbackFont(fontDescription, DoNotRetain);
76 return fontDataFromFontPlatformData(getFontPlatformData(fontDescription, fam ilyName), DoNotRetain); 77 return fontDataFromFontPlatformData(getFontPlatformData(fontDescription, fam ilyName), DoNotRetain);
77 } 78 }
78 79
79 // static 80 // static
80 AtomicString FontCache::getGenericFamilyNameForScript(const AtomicString& family Name, UScriptCode script) 81 AtomicString FontCache::getGenericFamilyNameForScript(const AtomicString& family Name, UScriptCode script)
81 { 82 {
82 // This is a hack to use the preferred font for CJK scripts. 83 // This is a hack to use the preferred font for CJK scripts.
83 // FIXME: Use new Skia API once Android system supports per-family and per-s cript fallback fonts. 84 // FIXME: Use new Skia API once Android system supports per-family and per-s cript fallback fonts.
84 UChar32 examplerChar; 85 UChar32 examplerChar;
85 switch (script) { 86 switch (script) {
86 case USCRIPT_SIMPLIFIED_HAN: 87 case USCRIPT_SIMPLIFIED_HAN:
87 case USCRIPT_TRADITIONAL_HAN: 88 case USCRIPT_TRADITIONAL_HAN:
88 case USCRIPT_KATAKANA_OR_HIRAGANA: 89 case USCRIPT_KATAKANA_OR_HIRAGANA:
89 examplerChar = 0x4E00; // A common character in Japanese and Chinese. 90 examplerChar = 0x4E00; // A common character in Japanese and Chinese.
90 break; 91 break;
91 case USCRIPT_HANGUL: 92 case USCRIPT_HANGUL:
92 examplerChar = 0xAC00; 93 examplerChar = 0xAC00;
93 break; 94 break;
94 default: 95 default:
95 // For other scripts, use the default generic family mapping logic. 96 // For other scripts, use the default generic family mapping logic.
96 return familyName; 97 return familyName;
97 } 98 }
98 99
99 return getFamilyNameForCharacter(examplerChar, script); 100 return getFamilyNameForCharacter(examplerChar, script);
100 } 101 }
101 102
102 } // namespace WebCore 103 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/platform/fonts/AlternateFontFamily.h ('k') | Source/platform/fonts/android/FontCacheAndroidTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698