Index: ui/gfx/render_text_win.cc |
diff --git a/ui/gfx/render_text_win.cc b/ui/gfx/render_text_win.cc |
index e76e6db39e8a55af31a8b1a0a1e0ad349bd86953..4a9848eaeb6eab6e2f3df0b63133ae4567f154ca 100644 |
--- a/ui/gfx/render_text_win.cc |
+++ b/ui/gfx/render_text_win.cc |
@@ -1032,8 +1032,10 @@ void RenderTextWin::LayoutTextRun(internal::TextRun* run) { |
// Try finding a fallback font using a meta file. |
// TODO(msw|asvitkine): Support RenderText's font_list()? |
+ Font uniscribe_font; |
if (GetUniscribeFallbackFont(original_font, run_text, run_length, |
- ¤t_font)) { |
+ &uniscribe_font)) { |
+ current_font = uniscribe_font; |
missing_count = CountCharsWithMissingGlyphs(run, |
ShapeTextRunWithFont(run, current_font)); |
if (missing_count == 0) { |
@@ -1050,8 +1052,25 @@ void RenderTextWin::LayoutTextRun(internal::TextRun* run) { |
std::vector<std::string> fonts = |
GetFallbackFontFamilies(original_font.GetFontName()); |
for (size_t i = 1; i < fonts.size(); ++i) { |
+ current_font = Font(fonts[i], original_font.GetFontSize()); |
msw
2014/10/20 20:12:03
The entire defect may just be that |current_font|
Alexei Svitkine (slow)
2014/10/20 20:21:20
From my recollection of the original motivation fo
Alexei Svitkine (slow)
2014/10/20 20:25:06
Although yeah, it looks like the code without the
|
missing_count = CountCharsWithMissingGlyphs(run, |
- ShapeTextRunWithFont(run, Font(fonts[i], original_font.GetFontSize()))); |
+ ShapeTextRunWithFont(run, current_font)); |
+ if (missing_count == 0) { |
+ successful_substitute_fonts_[original_font.GetFontName()] = current_font; |
+ return; |
+ } |
+ if (missing_count < best_partial_font_missing_char_count) { |
+ best_partial_font_missing_char_count = missing_count; |
+ best_partial_font = current_font; |
+ } |
+ } |
+ |
+ // Try fonts in the fallback list of the Uniscribe font. |
+ fonts = GetFallbackFontFamilies(uniscribe_font.GetFontName()); |
+ for (size_t i = 1; i < fonts.size(); ++i) { |
+ current_font = Font(fonts[i], original_font.GetFontSize()); |
+ missing_count = CountCharsWithMissingGlyphs(run, |
+ ShapeTextRunWithFont(run, current_font)); |
Alexei Svitkine (slow)
2014/10/20 20:14:04
Nit: Indent 2 more.
|
if (missing_count == 0) { |
successful_substitute_fonts_[original_font.GetFontName()] = current_font; |
return; |