Clone in a terminal:
Commit 826dd7e
Johan Mattsson - 2013-02-12T18:00:47+00:00
826dd7e6dcbba8f76494c676aedeccb50b20f751johan.mattsson.m@gmail.com

kern by glyph name instead of unicode value

Changed files (3)

Diff

diff --git a/libbirdfont/Context.vala b/libbirdfont/Context.valaindex 3adae09..562f4ea 100644--- a/libbirdfont/Context.vala+++ b/libbirdfont/Context.vala@@ -68,7 +68,7 @@ public class ContextDisplay : FontDisplay { 			wi = 0; 			 			foreach (string s in word.glyph) {				-				g = (!) BirdFont.get_current_font ().get_glyph (s);	+				g = (!) BirdFont.get_current_font ().get_glyph_by_name (s);	 				 				if (s == "") { 					continue;@@ -154,8 +154,8 @@ public class ContextDisplay : FontDisplay { 				b = s; 				 				if (handle == wi) {-					kern = font.get_kerning (a, b) + val;-					font.set_kerning (a, b, kern);+					kern = font.get_kerning_by_name (a, b) + val;+					font.set_kerning_by_name (a, b, kern); 				} 				 				wi++;@@ -169,7 +169,7 @@ public class ContextDisplay : FontDisplay { 	 	private double get_kerning (string a, string b) { 		Font font = BirdFont.get_current_font ();-		return font.get_kerning (a, b);+		return font.get_kerning_by_name (a, b); 	} 	 	public override void selected_canvas () {@@ -269,7 +269,7 @@ public class ContextDisplay : FontDisplay { 			foreach (string s in word.glyph) { 				 				// draw glyph-				g = (!) BirdFont.get_current_font ().get_glyph (s);	+				g = (!) BirdFont.get_current_font ().get_glyph_by_name (s);	 				kern = (prev != "") ? get_kerning (prev, s) : 0; 				 				if (g == null) {diff --git a/libbirdfont/Font.vala b/libbirdfont/Font.valaindex c0ba998..bcba410 100644--- a/libbirdfont/Font.vala+++ b/libbirdfont/Font.vala@@ -414,6 +414,45 @@ public class Font : GLib.Object { 		background_images.append (file); 	} +	/** Obtain kerning for pair with name a and b.+	 * @param a name of left glyph kerning pair+	 * @param b name of right glyph kerning pair+	 */+	public double get_kerning_by_name (string a, string b) {+		Glyph? gl = get_glyph_by_name (a);+		Glyph g;+		+		if (gl == null) {+			warning (@"glyph \"$a\" does not exist cannot obtain kerning");+			return 0;+		}+		+		g = (!) gl;+		+		return g.get_kerning (b);+	}++	/** Set kerning for pair with name a and b.+	 * @param a name of left glyph kerning pair+	 * @param b name of right glyph kerning pair+	 * @param val kerning+	 */	+	public void set_kerning_by_name (string a, string b, double val) {+		Glyph? gl;+		Glyph g;+		+		gl = get_glyph_by_name (a);+		+		if (unlikely (gl == null)) {+			warning (@"glyph \"$a\" is not parsed yet cannot add kerning");+			return;+		}+		+		g = (!) gl;+		g.add_kerning (b, val);		+	}++	// TODO: this can be removed 	public double get_kerning (string a, string b) { 		Glyph? gl = get_glyph (a); 		Glyph g;@@ -428,6 +467,7 @@ public class Font : GLib.Object { 		return g.get_kerning (b); 	} +	// TODO: this can be removed 	public void set_kerning (string a, string b, double val) { 		Glyph? gl; 		Glyph g;diff --git a/libbirdfont/Glyph.vala b/libbirdfont/Glyph.valaindex c2fe58d..8b689dc 100644--- a/libbirdfont/Glyph.vala+++ b/libbirdfont/Glyph.vala@@ -1659,7 +1659,7 @@ public class Glyph : FontDisplay { 			juxtaposed = (font.has_glyph (name)) ? (!) font.get_glyph (name) : font.get_space (); 			 			if (font.has_glyph (last_name) && font.has_glyph (name)) {-				kern = font.get_kerning (last_name, name);+				kern = font.get_kerning_by_name (last_name, name); 			} else { 				kern = 0; 			}@@ -1672,7 +1672,7 @@ public class Glyph : FontDisplay { 				cr.restore (); 			} 			-			x += juxtaposed.get_width () + font.get_kerning (glyph.name, name) + kern;+			x += juxtaposed.get_width () + font.get_kerning_by_name (glyph.name, name) + kern; 			last_name = name; 		} 		@@ -1684,7 +1684,7 @@ public class Glyph : FontDisplay { 			juxtaposed = (font.has_glyph (name)) ? (!) font.get_glyph (name) : font.get_space (); 			 			if (font.has_glyph (last_name) && font.has_glyph (name)) {-				kern = font.get_kerning (name, last_name);+				kern = font.get_kerning_by_name (name, last_name); 			} else { 				kern = 0; 			}

Contact

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