From 778d7f844cb330289830c95431269db06ba1c969 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Wed, 27 Feb 2013 18:47:26 -0500 Subject: [PATCH] [buffer] Better parse glyph names --- src/hb-buffer-deserialize-json.rl | 9 ++++++--- src/hb-buffer-deserialize-text.rl | 5 ++++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/hb-buffer-deserialize-json.rl b/src/hb-buffer-deserialize-json.rl index d93765a6b..7351b2ab4 100644 --- a/src/hb-buffer-deserialize-json.rl +++ b/src/hb-buffer-deserialize-json.rl @@ -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); diff --git a/src/hb-buffer-deserialize-text.rl b/src/hb-buffer-deserialize-text.rl index 52726906f..8856580fb 100644 --- a/src/hb-buffer-deserialize-text.rl +++ b/src/hb-buffer-deserialize-text.rl @@ -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))?;