Clone in a terminal:
Commit 33322ab
Johan Mattsson - 2014-11-03T15:34:55+00:00
33322abcce4a3042cc1d9619d6d4e5367538b48bjohan.mattsson.m@gmail.com

A tool for adding custom character sets

Changed files (5)

Diff

diff --git a/libbirdfont/CharDatabase.vala b/libbirdfont/CharDatabase.valaindex bf18d12..ab3f27e 100644--- a/libbirdfont/CharDatabase.vala+++ b/libbirdfont/CharDatabase.vala@@ -140,7 +140,9 @@ public class CharDatabase { 		} 		 		try {-			glyph_range.parse_ranges (full_unicode_range.get_all_ranges ());+			if (!is_null (full_unicode_range)) {+				glyph_range.parse_ranges (full_unicode_range.get_all_ranges ());+			} 		} catch (MarkupError e) { 			warning (e.message); 		}diff --git a/libbirdfont/DrawingTools.vala b/libbirdfont/DrawingTools.valaindex 1b01efa..c378fd3 100644--- a/libbirdfont/DrawingTools.vala+++ b/libbirdfont/DrawingTools.vala@@ -93,7 +93,7 @@ public class DrawingTools : ToolCollection  { 		Expander font_name = new Expander (); 		Expander path_tool_modifiers = new Expander (); 		Expander key_tools = new Expander ();-		Expander draw_tool_modifiers = new Expander ();+		Expander draw_tool_modifiers = new Expander (t_("Background Tools")); 		Expander characterset_tools = new Expander (); 		Expander test_tools = new Expander (); 		Expander guideline_tools = new Expander ();@@ -788,12 +788,6 @@ public class DrawingTools : ToolCollection  { 		characterset_tools.add_tool (avalilable_characters);  		if (BirdFont.has_argument ("--test")) {-			Tool text_rendering = new Tool ("text_rendering");-			text_rendering.select_action.connect((self) => {-				Text.test ();-			});-			test_tools.add_tool (text_rendering);-			 			Tool test_case = new Tool ("test_case"); 			test_case.select_action.connect((self) => { 					if (self.is_selected ()) {diff --git a/libbirdfont/Font.vala b/libbirdfont/Font.valaindex eaa156d..71d7200 100644--- a/libbirdfont/Font.vala+++ b/libbirdfont/Font.vala@@ -380,9 +380,11 @@ public class Font : GLib.Object { 		gc.set_unassigned (true); 		gc.add_glyph (g); 		-		g.left_limit = -33;+		g.left_limit = -20; 		g.right_limit = 33; 		+		g.add_help_lines ();+		 		p.add (-20, top_position - 5); 		p.add (20, top_position - 5); 		p.add (20, base_line + 5);diff --git a/libbirdfont/OverviewTools.vala b/libbirdfont/OverviewTools.valaindex 93716d7..5cfeca1 100644--- a/libbirdfont/OverviewTools.vala+++ b/libbirdfont/OverviewTools.vala@@ -21,6 +21,9 @@ public class OverviewTools : ToolCollection  { 	static OverviewTool all_glyphs; 	static OverviewTool default_glyphs; 	static OverviewTool unicode;+	static OverviewTool add_character_set;++	static Gee.ArrayList<OverviewTool> custom_character_sets;  	public static Gee.ArrayList<Expander> expanders; @@ -29,6 +32,7 @@ public class OverviewTools : ToolCollection  { 		Expander character_sets = new Expander (t_("Character Sets")); 		 		expanders = new Gee.ArrayList<Expander> ();+		custom_character_sets = new Gee.ArrayList<OverviewTool> (); 		 		font_name.add_tool (new FontName ()); 		font_name.draw_separator = false;@@ -37,6 +41,7 @@ public class OverviewTools : ToolCollection  { 		all_glyphs.select_action.connect ((self) => { 			OverView overview = MainWindow.get_overview (); 			overview.display_all_available_glyphs ();+			update_overview_characterset (); 		}); 		character_sets.add_tool (all_glyphs); @@ -46,6 +51,7 @@ public class OverviewTools : ToolCollection  { 			GlyphRange gr = new GlyphRange (); 			DefaultCharacterSet.use_default_range (gr); 			overview.set_glyph_range (gr);+			update_overview_characterset (); 		}); 		character_sets.add_tool (default_glyphs); @@ -55,16 +61,28 @@ public class OverviewTools : ToolCollection  { 			GlyphRange gr = new GlyphRange (); 			DefaultCharacterSet.use_full_unicode_range (gr); 			overview.set_glyph_range (gr);+			update_overview_characterset (); 		}); 		character_sets.add_tool (unicode); +		add_character_set = new OverviewTool ("+ " + t_("Add"));+		add_character_set.select_action.connect ((self) => {+			OverviewTool o = new OverviewTool (t_("Character Set"));+			custom_character_sets.add (o);+			character_sets.add_tool (o);+			update_overview_characterset ();+		});+		add_character_set.panel_release_action.connect ((self, b, x, y) => {+			add_character_set.set_selected (false);+		});+		add_character_set.has_counter = false;+		character_sets.add_tool (add_character_set);+ 		character_sets.set_persistent (true);-		character_sets.set_unique (true);+		character_sets.set_unique (false);  		expanders.add (font_name); 		expanders.add (character_sets);-		-		update_overview_characterset (); 	} 	 	public static void update_overview_characterset () {@@ -94,6 +112,7 @@ public class OverviewTools : ToolCollection  { 		all_glyphs.set_selected (false); 		default_glyphs.set_selected (false); 		unicode.set_selected (false);+		add_character_set.set_selected (false); 		 		if (overview.all_available) { 			all_glyphs.set_selected (true);@@ -101,7 +120,9 @@ public class OverviewTools : ToolCollection  { 			default_glyphs.set_selected (true); 		} else if (overview.glyph_range.name == "Unicode") { 			unicode.set_selected (true);-		} +		}+		+		Toolbox.redraw_tool_box (); 	}  	static string get_display_value (uint size) {diff --git a/libbirdfont/Renderer/Text.vala b/libbirdfont/Renderer/Text.valaindex d14f124..e235363 100644--- a/libbirdfont/Renderer/Text.vala+++ b/libbirdfont/Renderer/Text.vala@@ -119,6 +119,7 @@ public class Text { 		} 	} +	// FIXME: some fonts does not have on curve extrema 	public double get_extent (double font_size_in_pixels) { 		double x = 0; 		double ratio = font_size_in_pixels / get_row_height ();

Contact

Email: johan.mattsson.m@gmail.com
Mastodon: typo.social/@birdfont
GitHub: johanmattssonm
LinkedIn: johan-mattsson-2ab324112