1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 12:47:35 +00:00

LibVT: Use font pixel height (pixel_size) when calculating line heights

This commit is contained in:
Andreas Kling 2023-01-05 13:33:35 +01:00
parent 2e1b8b90f4
commit ddc0c13007
2 changed files with 9 additions and 6 deletions

View file

@ -154,13 +154,13 @@ Gfx::IntRect TerminalWidget::glyph_rect(u16 row, u16 column)
{ {
int y = row * m_line_height; int y = row * m_line_height;
int x = column * m_column_width; int x = column * m_column_width;
return { x + frame_thickness() + m_inset, y + frame_thickness() + m_inset, m_column_width, font().glyph_height() }; return { x + frame_thickness() + m_inset, y + frame_thickness() + m_inset, m_column_width, m_cell_height };
} }
Gfx::IntRect TerminalWidget::row_rect(u16 row) Gfx::IntRect TerminalWidget::row_rect(u16 row)
{ {
int y = row * m_line_height; int y = row * m_line_height;
Gfx::IntRect rect = { frame_thickness() + m_inset, y + frame_thickness() + m_inset, m_column_width * m_terminal.columns(), font().glyph_height() }; Gfx::IntRect rect = { frame_thickness() + m_inset, y + frame_thickness() + m_inset, m_column_width * m_terminal.columns(), m_cell_height };
rect.inflate(0, m_line_spacing); rect.inflate(0, m_line_spacing);
return rect; return rect;
} }
@ -1172,16 +1172,17 @@ void TerminalWidget::did_change_font()
relayout(size()); relayout(size());
} }
static void collect_font_metrics(Gfx::Font const& font, int& column_width, int& line_height, int& line_spacing) static void collect_font_metrics(Gfx::Font const& font, int& column_width, int& cell_height, int& line_height, int& line_spacing)
{ {
line_spacing = 4; line_spacing = 4;
column_width = static_cast<int>(ceilf(font.glyph_width('x'))); column_width = static_cast<int>(ceilf(font.glyph_width('x')));
line_height = static_cast<int>(ceilf(font.glyph_height())) + line_spacing; cell_height = static_cast<int>(ceilf(font.pixel_size()));
line_height = cell_height + line_spacing;
} }
void TerminalWidget::update_cached_font_metrics() void TerminalWidget::update_cached_font_metrics()
{ {
collect_font_metrics(font(), m_column_width, m_line_height, m_line_spacing); collect_font_metrics(font(), m_column_width, m_cell_height, m_line_height, m_line_spacing);
} }
void TerminalWidget::clear_including_history() void TerminalWidget::clear_including_history()
@ -1243,8 +1244,9 @@ Gfx::IntSize TerminalWidget::widget_size_for_font(Gfx::Font const& font) const
{ {
int column_width = 0; int column_width = 0;
int line_height = 0; int line_height = 0;
int cell_height = 0;
int line_spacing = 0; int line_spacing = 0;
collect_font_metrics(font, column_width, line_height, line_spacing); collect_font_metrics(font, column_width, cell_height, line_height, line_spacing);
return { return {
(frame_thickness() * 2) + (m_inset * 2) + (m_terminal.columns() * column_width) + m_scrollbar->width(), (frame_thickness() * 2) + (m_inset * 2) + (m_terminal.columns() * column_width) + m_scrollbar->width(),
(frame_thickness() * 2) + (m_inset * 2) + (m_terminal.rows() * line_height) (frame_thickness() * 2) + (m_inset * 2) + (m_terminal.rows() * line_height)

View file

@ -193,6 +193,7 @@ private:
int m_inset { 2 }; int m_inset { 2 };
int m_line_spacing { 4 }; int m_line_spacing { 4 };
int m_line_height { 0 }; int m_line_height { 0 };
int m_cell_height { 0 };
int m_column_width { 0 }; int m_column_width { 0 };
int m_ptm_fd { -1 }; int m_ptm_fd { -1 };