Chromium Code Reviews| Index: ui/gfx/render_text_linux.cc |
| =================================================================== |
| --- ui/gfx/render_text_linux.cc (revision 140345) |
| +++ ui/gfx/render_text_linux.cc (working copy) |
| @@ -70,6 +70,18 @@ |
| return subpixel_enabled; |
| } |
| +// Sets underline metrics on |renderer| according to Pango font |desc|. |
| +void SetPangoUnderlineMetrics(PangoFontDescription *desc, |
| + internal::SkiaTextRenderer* renderer) { |
| + PangoFontMetrics* metrics = GetPangoFontMetrics(desc); |
| + const int underline_thickness = |
|
msw
2012/06/06 01:12:51
nit: nix "underline_" from the names to fit each o
Alexei Svitkine (slow)
2012/06/06 14:46:27
Done.
|
| + pango_font_metrics_get_underline_thickness(metrics); |
| + const int underline_position = |
| + pango_font_metrics_get_underline_position(metrics); |
| + renderer->SetUnderlineMetrics(pango_units_to_double(underline_thickness), |
| + pango_units_to_double(underline_position)); |
| +} |
| + |
| } // namespace |
| // TODO(xji): index saved in upper layer is utf16 index. Pango uses utf8 index. |
| @@ -445,6 +457,8 @@ |
| renderer.SetForegroundColor(styles[style].foreground); |
| renderer.SetFontFamilyWithStyle(family_name, styles[style].font_style); |
| renderer.DrawPosText(&pos[start], &glyphs[start], i - start); |
| + if (styles[style].underline) |
| + SetPangoUnderlineMetrics(desc.get(), &renderer); |
| renderer.DrawDecorations(start_x, y, glyph_x - start_x, styles[style]); |
| start = i; |
| @@ -461,6 +475,8 @@ |
| renderer.SetForegroundColor(styles[style].foreground); |
| renderer.SetFontFamilyWithStyle(family_name, styles[style].font_style); |
| renderer.DrawPosText(&pos[start], &glyphs[start], glyph_count - start); |
| + if (styles[style].underline) |
| + SetPangoUnderlineMetrics(desc.get(), &renderer); |
| renderer.DrawDecorations(start_x, y, glyph_x - start_x, styles[style]); |
| x = glyph_x; |
| } |