mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 12:12:45 +00:00 
			
		
		
		
	LibGfx+FontEditor+Fonts: Add family, size and weight metadata to fonts
This makes finding fonts from the same family much less difficult. :^)
This commit is contained in:
		
							parent
							
								
									5abc03db0d
								
							
						
					
					
						commit
						80b77cec38
					
				
					 22 changed files with 106 additions and 34 deletions
				
			
		|  | @ -121,7 +121,7 @@ FontEditorWidget::FontEditorWidget(const String& path, RefPtr<Gfx::Font>&& edite | |||
|     font_metadata_group_box.set_layout<GUI::VerticalBoxLayout>(); | ||||
|     font_metadata_group_box.layout()->set_margins({ 5, 15, 5, 5 }); | ||||
|     font_metadata_group_box.set_size_policy(GUI::SizePolicy::Fill, GUI::SizePolicy::Fixed); | ||||
|     font_metadata_group_box.set_preferred_size(0, 195); | ||||
|     font_metadata_group_box.set_preferred_size(0, 275); | ||||
|     font_metadata_group_box.set_title("Font metadata"); | ||||
| 
 | ||||
|     //// Name Row
 | ||||
|  | @ -143,6 +143,61 @@ FontEditorWidget::FontEditorWidget(const String& path, RefPtr<Gfx::Font>&& edite | |||
|         m_edited_font->set_name(name_textbox.text()); | ||||
|     }; | ||||
| 
 | ||||
|     //// Family Row
 | ||||
|     auto& family_container = font_metadata_group_box.add<GUI::Widget>(); | ||||
|     family_container.set_layout<GUI::HorizontalBoxLayout>(); | ||||
|     family_container.set_size_policy(GUI::SizePolicy::Fill, GUI::SizePolicy::Fixed); | ||||
|     family_container.set_preferred_size(0, 22); | ||||
| 
 | ||||
|     auto& family_label = family_container.add<GUI::Label>(); | ||||
|     family_label.set_size_policy(GUI::SizePolicy::Fixed, GUI::SizePolicy::Fill); | ||||
|     family_label.set_preferred_size(100, 0); | ||||
|     family_label.set_text_alignment(Gfx::TextAlignment::CenterLeft); | ||||
|     family_label.set_text("Family:"); | ||||
| 
 | ||||
|     auto& family_textbox = family_container.add<GUI::TextBox>(); | ||||
|     family_textbox.set_size_policy(GUI::SizePolicy::Fill, GUI::SizePolicy::Fill); | ||||
|     family_textbox.set_text(m_edited_font->family()); | ||||
|     family_textbox.on_change = [&] { | ||||
|         m_edited_font->set_family(family_textbox.text()); | ||||
|     }; | ||||
| 
 | ||||
|     //// Presentation size Row
 | ||||
|     auto& presentation_size_container = font_metadata_group_box.add<GUI::Widget>(); | ||||
|     presentation_size_container.set_layout<GUI::HorizontalBoxLayout>(); | ||||
|     presentation_size_container.set_size_policy(GUI::SizePolicy::Fill, GUI::SizePolicy::Fixed); | ||||
|     presentation_size_container.set_preferred_size(0, 22); | ||||
| 
 | ||||
|     auto& presentation_size_label = presentation_size_container.add<GUI::Label>(); | ||||
|     presentation_size_label.set_size_policy(GUI::SizePolicy::Fixed, GUI::SizePolicy::Fill); | ||||
|     presentation_size_label.set_preferred_size(100, 0); | ||||
|     presentation_size_label.set_text_alignment(Gfx::TextAlignment::CenterLeft); | ||||
|     presentation_size_label.set_text("Presentation size:"); | ||||
| 
 | ||||
|     auto& presentation_size_spinbox = presentation_size_container.add<GUI::SpinBox>(); | ||||
|     presentation_size_spinbox.set_size_policy(GUI::SizePolicy::Fill, GUI::SizePolicy::Fill); | ||||
|     presentation_size_spinbox.set_min(0); | ||||
|     presentation_size_spinbox.set_max(255); | ||||
|     presentation_size_spinbox.set_value(m_edited_font->presentation_size()); | ||||
| 
 | ||||
|     //// Weight Row
 | ||||
|     auto& weight_container = font_metadata_group_box.add<GUI::Widget>(); | ||||
|     weight_container.set_layout<GUI::HorizontalBoxLayout>(); | ||||
|     weight_container.set_size_policy(GUI::SizePolicy::Fill, GUI::SizePolicy::Fixed); | ||||
|     weight_container.set_preferred_size(0, 22); | ||||
| 
 | ||||
|     auto& weight_label = weight_container.add<GUI::Label>(); | ||||
|     weight_label.set_size_policy(GUI::SizePolicy::Fixed, GUI::SizePolicy::Fill); | ||||
|     weight_label.set_preferred_size(100, 0); | ||||
|     weight_label.set_text_alignment(Gfx::TextAlignment::CenterLeft); | ||||
|     weight_label.set_text("Weight:"); | ||||
| 
 | ||||
|     auto& weight_spinbox = weight_container.add<GUI::SpinBox>(); | ||||
|     weight_spinbox.set_size_policy(GUI::SizePolicy::Fill, GUI::SizePolicy::Fill); | ||||
|     weight_spinbox.set_min(0); | ||||
|     weight_spinbox.set_max(65535); | ||||
|     weight_spinbox.set_value(m_edited_font->weight()); | ||||
| 
 | ||||
|     //// Glyph spacing Row
 | ||||
|     auto& glyph_spacing_container = font_metadata_group_box.add<GUI::Widget>(); | ||||
|     glyph_spacing_container.set_layout<GUI::HorizontalBoxLayout>(); | ||||
|  | @ -278,7 +333,7 @@ FontEditorWidget::FontEditorWidget(const String& path, RefPtr<Gfx::Font>&& edite | |||
|         right_site_width = max(right_site_width, m_glyph_map_widget->preferred_width()); | ||||
| 
 | ||||
|         m_preferred_width = m_glyph_editor_widget->width() + right_site_width + 20; | ||||
|         m_preferred_height = m_glyph_map_widget->relative_rect().height() + 2 * m_edited_font->glyph_height() + 300; | ||||
|         m_preferred_height = m_glyph_map_widget->relative_rect().height() + 2 * m_edited_font->glyph_height() + 380; | ||||
|     }; | ||||
| 
 | ||||
|     m_glyph_editor_widget->on_glyph_altered = [this, update_demo](u8 glyph) { | ||||
|  | @ -316,6 +371,16 @@ FontEditorWidget::FontEditorWidget(const String& path, RefPtr<Gfx::Font>&& edite | |||
|         update_demo(); | ||||
|     }; | ||||
| 
 | ||||
|     weight_spinbox.on_change = [this, update_demo](int value) { | ||||
|         m_edited_font->set_weight(value); | ||||
|         update_demo(); | ||||
|     }; | ||||
| 
 | ||||
|     presentation_size_spinbox.on_change = [this, update_demo](int value) { | ||||
|         m_edited_font->set_presentation_size(value); | ||||
|         update_demo(); | ||||
|     }; | ||||
| 
 | ||||
|     spacing_spinbox.on_change = [this, update_demo](int value) { | ||||
|         m_edited_font->set_glyph_spacing(value); | ||||
|         update_demo(); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Andreas Kling
						Andreas Kling