Clone in a terminal:
Commit e2e6d1a
Johan Mattsson - 2015-03-19T11:20:21+00:00
e2e6d1a46250e5fb53e366210aefb1b0f774bbe2johan.mattsson.m@gmail.com

Update kerning when kerning classes are updated

Changed files (3)

Diff

diff --git a/libbirdfont/Font.vala b/libbirdfont/Font.valaindex 4493703..01b9f50 100644--- a/libbirdfont/Font.vala+++ b/libbirdfont/Font.vala@@ -87,7 +87,7 @@ public class Font : GLib.Object { 	/** File format. */ 	public FontFormat format = FontFormat.BIRDFONT; 	-	SpacingData spacing;+	public SpacingData spacing; 	 	bool read_only = false; 	diff --git a/libbirdfont/KerningClasses.vala b/libbirdfont/KerningClasses.valaindex 60df354..d5740bb 100644--- a/libbirdfont/KerningClasses.vala+++ b/libbirdfont/KerningClasses.vala@@ -52,6 +52,30 @@ public class KerningClasses : GLib.Object { 		single_kerning = new HashMap<string, double?> (); 	} +	public void update_range (GlyphRange old, GlyphRange new_range) {+		string o = old.get_all_ranges ();+		+		foreach (GlyphRange gr in classes_first) {+			try {+				if (gr.get_all_ranges () == o) {+					gr.parse_ranges (new_range.get_all_ranges ());+				}+			} catch (GLib.MarkupError e) {+				warning (e.message);+			}+		}+		+		foreach (GlyphRange gr in classes_last) {+			try {+				if (gr.get_all_ranges () == o) {+					gr.parse_ranges (new_range.get_all_ranges ());+				}+			} catch (GLib.MarkupError e) {+				warning (e.message);+			}+		}+	}+ 	/** Class based gpos kerning. */ 	public double get_kerning_for_pair (string a, string b, GlyphRange? gr_left, GlyphRange? gr_right) { 		double k = 0;diff --git a/libbirdfont/KerningRange.vala b/libbirdfont/KerningRange.valaindex 0bf11c9..c4bbec7 100644--- a/libbirdfont/KerningRange.vala+++ b/libbirdfont/KerningRange.vala@@ -90,12 +90,20 @@ public class KerningRange : Tool { 	} 		 	private void set_one_range (string r) throws MarkupError {+		Font f = BirdFont.get_current_font ();+		GlyphRange old = new GlyphRange ();+		+		old.parse_ranges (ranges);+		old.set_class (true);+		 		ranges = r; 		name = r;  		glyph_range.empty (); 		glyph_range.parse_ranges (r); 		glyph_range.set_class (true);++		f.spacing.kerning_classes.update_range (old, glyph_range); 	} 	 	public void update_kerning_classes () {

Contact

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