Index: ui/gfx/render_text_linux.cc |
diff --git a/ui/gfx/render_text_linux.cc b/ui/gfx/render_text_linux.cc |
index e6a1ab725e4cda13a895e29a6fd1decb587d60aa..c9ec9fcbe31aaf2322538060575bd0032c8b9f6e 100644 |
--- a/ui/gfx/render_text_linux.cc |
+++ b/ui/gfx/render_text_linux.cc |
@@ -83,12 +83,25 @@ Size RenderTextLinux::GetStringSize() { |
EnsureLayout(); |
int width = 0, height = 0; |
pango_layout_get_pixel_size(layout_, &width, &height); |
- return Size(width, height); |
+ // pango_layout_get_pixel_size() returns the minimal size to render the given |
msw
2013/07/12 09:36:04
nit: these could be more concise; like "Keep a con
Yuki
2013/07/12 10:29:24
Thanks.
|
+ // text, and the height can be smaller than the font height. This means the |
+ // baseline may change as the content text changes. Since we'd like to keep |
+ // the same baseline as much as possible, we respect the height determined by |
+ // the font list, unless the actual height is higher than the height of the |
+ // font list. |
+ return Size(width, std::max(height, font_list().GetHeight())); |
} |
int RenderTextLinux::GetBaseline() { |
EnsureLayout(); |
- return PANGO_PIXELS(pango_layout_get_baseline(layout_)); |
+ // pango_layout_get_baseline() returns the baseline based on the minimal size |
+ // to render the given text, and the baseline can be smaller than the font |
+ // baseline. This means the baseline may change as the content text changes. |
+ // Since we'd like to keep the same baseline as much as possible, we respect |
+ // the baseline determined by the font list, unless the actual baseline is |
+ // greater than the baseline of the font list. |
+ return std::max(PANGO_PIXELS(pango_layout_get_baseline(layout_)), |
+ font_list().GetBaseline()); |
} |
SelectionModel RenderTextLinux::FindCursorPosition(const Point& point) { |
@@ -364,8 +377,7 @@ void RenderTextLinux::DrawVisualText(Canvas* canvas) { |
DCHECK(layout_); |
// Skia will draw glyphs with respect to the baseline. |
- Vector2d offset(GetTextOffset() + |
- Vector2d(0, PANGO_PIXELS(pango_layout_get_baseline(layout_)))); |
+ Vector2d offset(GetTextOffset() + Vector2d(0, GetBaseline())); |
SkScalar x = SkIntToScalar(offset.x()); |
SkScalar y = SkIntToScalar(offset.y()); |