Put the flags back in and serialize clusters.
Note that now JSON glyph buffers and Unicode buffers look very similar, except for the g/u property difference.
diff --git a/src/hb-buffer-deserialize-json.rl b/src/hb-buffer-deserialize-json.rl
index caaa154..336a5ea 100644
--- a/src/hb-buffer-deserialize-json.rl
+++ b/src/hb-buffer-deserialize-json.rl
@@ -79,24 +79,21 @@
glyph_number = (glyph_id >tok %parse_gid);
glyph = "\"g\"" colon (glyph_string | glyph_number);
+codepoint = "\"u\"" colon 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);
xadvance= "\"ax\"" colon (num >tok %parse_x_advance);
yadvance= "\"ay\"" colon (num >tok %parse_y_advance);
-element = glyph | cluster | xoffset | yoffset | xadvance | yadvance;
+element = glyph | codepoint | cluster | xoffset | yoffset | xadvance | yadvance;
item =
( '{' space* element (comma element)* space* '}')
>clear_item
@add_item
;
-json_glyphs = space* item (comma item)* space* (','|']')?;
-unicode_item = (glyph_number >clear_item %add_item);
-json_unicode = space* unicode_item (comma unicode_item)* (','|']');
-
-main := json_glyphs | json_unicode;
+main := space* item (comma item)* space* (','|']')?;
}%%