diff --git a/Libraries/LibGUI/GTextEditor.cpp b/Libraries/LibGUI/GTextEditor.cpp index 151f1c175b6..64ca67ebb8d 100644 --- a/Libraries/LibGUI/GTextEditor.cpp +++ b/Libraries/LibGUI/GTextEditor.cpp @@ -371,6 +371,7 @@ void GTextEditor::paint_event(GPaintEvent& event) int advance = font().glyph_width(' ') + font().glyph_spacing(); Rect character_rect = { visual_line_rect.location(), { font().glyph_width(' '), line_height() } }; for (int i = 0; i < visual_line_text.length(); ++i) { + const Font* font = &this->font(); Color color; int physical_line = line_index; int physical_column = start_of_visual_line + i; @@ -379,9 +380,11 @@ void GTextEditor::paint_event(GPaintEvent& event) if (!span.contains(GTextPosition(physical_line, physical_column))) continue; color = span.color; + if (span.font) + font = span.font; break; } - painter.draw_text(character_rect, visual_line_text.substring_view(i, 1), m_text_alignment, color); + painter.draw_text(character_rect, visual_line_text.substring_view(i, 1), *font, m_text_alignment, color); character_rect.move_by(advance, 0); } } diff --git a/Libraries/LibGUI/GTextEditor.h b/Libraries/LibGUI/GTextEditor.h index 3952c038814..80e1cd5beb5 100644 --- a/Libraries/LibGUI/GTextEditor.h +++ b/Libraries/LibGUI/GTextEditor.h @@ -180,6 +180,7 @@ public: GTextPosition start; GTextPosition end; Color color; + const Font* font { nullptr }; }; void set_spans(const Vector& spans)