1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 04:27:44 +00:00

FontEditor: Account for glyph width when pasting

Fixes glyphs not expanding up to their maximum width if necessary
when pasting larger glyphs into smaller ones.
This commit is contained in:
thankyouverycool 2021-11-29 09:59:25 -05:00 committed by Andreas Kling
parent 281805696b
commit c1744822a1
2 changed files with 9 additions and 3 deletions

View file

@ -193,7 +193,11 @@ FontEditorWidget::FontEditorWidget()
}); });
m_paste_action = GUI::CommonActions::make_paste_action([&](auto&) { m_paste_action = GUI::CommonActions::make_paste_action([&](auto&) {
m_glyph_editor_widget->paste_glyph(); m_glyph_editor_widget->paste_glyph();
m_glyph_map_widget->update_glyph(m_glyph_map_widget->selected_glyph()); if (m_edited_font->is_fixed_width())
m_glyph_editor_present_checkbox->set_checked(true, GUI::AllowCallback::No);
else
m_glyph_editor_width_spinbox->set_value(m_edited_font->raw_glyph_width(m_glyph_map_widget->selected_glyph()), GUI::AllowCallback::No);
update_statusbar();
}); });
m_paste_action->set_enabled(GUI::Clipboard::the().fetch_mime_type() == "glyph/x-fonteditor"); m_paste_action->set_enabled(GUI::Clipboard::the().fetch_mime_type() == "glyph/x-fonteditor");
m_delete_action = GUI::CommonActions::make_delete_action([this](auto&) { m_delete_action = GUI::CommonActions::make_delete_action([this](auto&) {

View file

@ -115,8 +115,10 @@ void GlyphEditorWidget::paste_glyph()
} }
auto bitmap = font().raw_glyph(m_glyph).glyph_bitmap(); auto bitmap = font().raw_glyph(m_glyph).glyph_bitmap();
for (int x = 0; x < min(bitmap.width(), buffer_width); x++) { if (bitmap.width() < buffer_width)
for (int y = 0; y < min(bitmap.height(), buffer_height); y++) { font().set_glyph_width(m_glyph, min(buffer_width, font().max_glyph_width()));
for (int x = 0; x < min(buffer_width, font().max_glyph_width()); x++) {
for (int y = 0; y < min(buffer_height, font().glyph_height()); y++) {
bitmap.set_bit_at(x, y, bits[x][y]); bitmap.set_bit_at(x, y, bits[x][y]);
} }
} }