Chromium Code Reviews| Index: ui/gfx/render_text_win.cc |
| diff --git a/ui/gfx/render_text_win.cc b/ui/gfx/render_text_win.cc |
| index 05be785e4a53921c4225a43554f869377b445544..ea3e3e9925fd4d634588a8608ae0eafe5bbd66b0 100644 |
| --- a/ui/gfx/render_text_win.cc |
| +++ b/ui/gfx/render_text_win.cc |
| @@ -488,8 +488,8 @@ void RenderTextWin::DrawVisualText(Canvas* canvas) { |
| void RenderTextWin::ItemizeLogicalText() { |
| runs_.clear(); |
| - string_size_ = Size(0, GetFont().GetHeight()); |
| - common_baseline_ = 0; |
| + string_size_ = Size(0, font_list().GetHeight()); |
| + common_baseline_ = font_list().GetBaseline(); |
|
Alexei Svitkine (slow)
2013/07/24 15:29:48
This value will be clobbered unless the text is em
Yuki
2013/07/25 14:32:41
Done.
|
| // Set Uniscribe's base text direction. |
| script_state_.uBidiLevel = |
| @@ -564,14 +564,15 @@ void RenderTextWin::LayoutVisualText() { |
| cached_hdc_ = CreateCompatibleDC(NULL); |
| HRESULT hr = E_FAIL; |
| - string_size_.set_height(0); |
| + int ascent = font_list().GetBaseline(); |
| + int descent = font_list().GetHeight() - font_list().GetBaseline(); |
|
Alexei Svitkine (slow)
2013/07/24 15:29:48
I'm not sure it makes sense to start with the metr
msw
2013/07/24 18:02:36
Using just the fonts of the runs and not including
Alexei Svitkine (slow)
2013/07/24 18:12:28
Ah, I understand now. Thanks for the explanation -
Yuki
2013/07/25 14:32:41
Done.
|
| for (size_t i = 0; i < runs_.size(); ++i) { |
| internal::TextRun* run = runs_[i]; |
| LayoutTextRun(run); |
| - string_size_.set_height(std::max(string_size_.height(), |
| - run->font.GetHeight())); |
| - common_baseline_ = std::max(common_baseline_, run->font.GetBaseline()); |
| + ascent = std::max(ascent, run->font.GetBaseline()); |
| + descent = std::max(descent, |
| + run->font.GetHeight() - run->font.GetBaseline()); |
| if (run->glyph_count > 0) { |
| run->advance_widths.reset(new int[run->glyph_count]); |
| @@ -588,6 +589,8 @@ void RenderTextWin::LayoutVisualText() { |
| DCHECK(SUCCEEDED(hr)); |
| } |
| } |
| + string_size_.set_height(ascent + descent); |
| + common_baseline_ = ascent; |
| // Build the array of bidirectional embedding levels. |
| scoped_ptr<BYTE[]> levels(new BYTE[runs_.size()]); |