[buffer] Better parse glyph names
authorBehdad Esfahbod <behdad@behdad.org>
Wed, 27 Feb 2013 23:47:26 +0000 (18:47 -0500)
committerBehdad Esfahbod <behdad@behdad.org>
Wed, 27 Feb 2013 23:49:18 +0000 (18:49 -0500)
src/hb-buffer-deserialize-json.rl
src/hb-buffer-deserialize-text.rl

index d93765a..7351b2a 100644 (file)
@@ -72,10 +72,13 @@ num = '-'? unum;
 comma = space* ',' space*;
 colon = space* ':' space*;
 
-glyph_name   = '"' (alnum+ >tok %parse_glyph) '"';
-glyph_number = (unum >tok %parse_gid);
+glyph_id = unum;
+glyph_name = alpha (alnum|'_'|'.'|'-')*;
 
-glyph  = "\"g\""  colon (glyph_name | glyph_number);
+glyph_string   = '"' (glyph_name >tok %parse_glyph) '"';
+glyph_number = (glyph_id >tok %parse_gid);
+
+glyph  = "\"g\""  colon (glyph_string | glyph_number);
 cluster        = "\"cl\"" colon (unum >tok %parse_cluster);
 xoffset        = "\"dx\"" colon (num >tok %parse_x_offset);
 yoffset        = "\"dy\"" colon (num >tok %parse_y_offset);
index 5272690..8856580 100644 (file)
@@ -68,7 +68,10 @@ action parse_y_advance { if (!parse_int  (tok, p, &pos.y_advance)) return false;
 unum   = '0' | [1-9] digit*;
 num    = '-'? unum;
 
-glyph  = alnum+ >tok %parse_glyph;
+glyph_id = unum;
+glyph_name = alpha (alnum|'_'|'.'|'-')*;
+
+glyph  = (glyph_id | glyph_name) >tok %parse_glyph;
 cluster        = '=' (unum >tok %parse_cluster);
 offsets        = '@' (num >tok %parse_x_offset)   ',' (num >tok %parse_y_offset );
 advances= '+' (num >tok %parse_x_advance) (',' (num >tok %parse_y_advance))?;