| Index: ui/gfx/render_text_harfbuzz.cc | 
| diff --git a/ui/gfx/render_text_harfbuzz.cc b/ui/gfx/render_text_harfbuzz.cc | 
| index 9a9d76c91d2898225ed7ec8b62156f843bc5998c..3c71cff58c57c1b5dabf7aacff9bf7cc9764be6e 100644 | 
| --- a/ui/gfx/render_text_harfbuzz.cc | 
| +++ b/ui/gfx/render_text_harfbuzz.cc | 
| @@ -1302,6 +1302,19 @@ void RenderTextHarfBuzz::ShapeRun(const base::string16& text, | 
| default_fallback_families.begin(), default_fallback_families.end()); | 
| #endif | 
|  | 
| +  // Get rid of duplicate fonts in the fallback list. We use the std::unique | 
| +  // algorithm for this. However for this function to work we need to sort | 
| +  // the font list as the unique algorithm relies on duplicates being adjacent. | 
| +  // TODO(ananta) | 
| +  // Sorting the list changes the order in which fonts are evaluated. This may | 
| +  // cause problems in the way some characters appear. It may be best to do | 
| +  // font fallback on the same lines as blink or skia which do this based on | 
| +  // character glyph mapping. | 
| +  std::sort(fallback_families.begin(), fallback_families.end()); | 
| +  fallback_families.erase(std::unique( | 
| +      fallback_families.begin(), fallback_families.end()), | 
| +      fallback_families.end()); | 
| + | 
| // Try shaping with the fallback fonts. | 
| for (const auto& family : fallback_families) { | 
| if (family == primary_family) | 
|  |