Add API/cmdline to show glyph extents when serializing buffer
New API: HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS hb-shape now accepts --show-extents. Patch from Simon Cozens.
This commit is contained in:
parent
2cee5b68a0
commit
fdd1770e00
|
@ -145,6 +145,16 @@ _hb_buffer_serialize_glyphs_json (hb_buffer_t *buffer,
|
||||||
pos[i].x_advance, pos[i].y_advance);
|
pos[i].x_advance, pos[i].y_advance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (flags & HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS)
|
||||||
|
{
|
||||||
|
hb_glyph_extents_t extents;
|
||||||
|
hb_font_get_glyph_extents(font, info[i].codepoint, &extents);
|
||||||
|
p += MAX (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"xb\":%d,\"yb\":%d",
|
||||||
|
extents.x_bearing, extents.y_bearing));
|
||||||
|
p += MAX (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"w\":%d,\"h\":%d",
|
||||||
|
extents.width, extents.height));
|
||||||
|
}
|
||||||
|
|
||||||
*p++ = '}';
|
*p++ = '}';
|
||||||
|
|
||||||
unsigned int l = p - b;
|
unsigned int l = p - b;
|
||||||
|
@ -210,6 +220,13 @@ _hb_buffer_serialize_glyphs_text (hb_buffer_t *buffer,
|
||||||
p += MAX (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), ",%d", pos[i].y_advance));
|
p += MAX (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), ",%d", pos[i].y_advance));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (flags & HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS)
|
||||||
|
{
|
||||||
|
hb_glyph_extents_t extents;
|
||||||
|
hb_font_get_glyph_extents(font, info[i].codepoint, &extents);
|
||||||
|
p += MAX (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "<%d,%d,%d,%d>", extents.x_bearing, extents.y_bearing, extents.width, extents.height));
|
||||||
|
}
|
||||||
|
|
||||||
unsigned int l = p - b;
|
unsigned int l = p - b;
|
||||||
if (buf_size > l)
|
if (buf_size > l)
|
||||||
{
|
{
|
||||||
|
|
|
@ -323,7 +323,8 @@ typedef enum { /*< flags >*/
|
||||||
HB_BUFFER_SERIALIZE_FLAG_DEFAULT = 0x00000000u,
|
HB_BUFFER_SERIALIZE_FLAG_DEFAULT = 0x00000000u,
|
||||||
HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS = 0x00000001u,
|
HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS = 0x00000001u,
|
||||||
HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS = 0x00000002u,
|
HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS = 0x00000002u,
|
||||||
HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES = 0x00000004u
|
HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES = 0x00000004u,
|
||||||
|
HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS = 0x00000008u
|
||||||
} hb_buffer_serialize_flags_t;
|
} hb_buffer_serialize_flags_t;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
|
|
@ -70,6 +70,8 @@ struct output_buffer_t
|
||||||
flags |= HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS;
|
flags |= HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS;
|
||||||
if (!format.show_positions)
|
if (!format.show_positions)
|
||||||
flags |= HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS;
|
flags |= HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS;
|
||||||
|
if (format.show_extents)
|
||||||
|
flags |= HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS;
|
||||||
format_flags = (hb_buffer_serialize_flags_t) flags;
|
format_flags = (hb_buffer_serialize_flags_t) flags;
|
||||||
}
|
}
|
||||||
void new_line (void)
|
void new_line (void)
|
||||||
|
|
|
@ -706,6 +706,7 @@ format_options_t::add_options (option_parser_t *parser)
|
||||||
G_OPTION_ARG_NONE, &this->show_positions, "Do not output glyph positions", NULL},
|
G_OPTION_ARG_NONE, &this->show_positions, "Do not output glyph positions", NULL},
|
||||||
{"no-clusters", 0, G_OPTION_FLAG_REVERSE,
|
{"no-clusters", 0, G_OPTION_FLAG_REVERSE,
|
||||||
G_OPTION_ARG_NONE, &this->show_clusters, "Do not output cluster indices", NULL},
|
G_OPTION_ARG_NONE, &this->show_clusters, "Do not output cluster indices", NULL},
|
||||||
|
{"show-extents", 0, 0, G_OPTION_ARG_NONE, &this->show_extents, "Output glyph extents", NULL},
|
||||||
{NULL}
|
{NULL}
|
||||||
};
|
};
|
||||||
parser->add_group (entries,
|
parser->add_group (entries,
|
||||||
|
|
|
@ -410,6 +410,7 @@ struct format_options_t : option_group_t
|
||||||
show_text = false;
|
show_text = false;
|
||||||
show_unicode = false;
|
show_unicode = false;
|
||||||
show_line_num = false;
|
show_line_num = false;
|
||||||
|
show_extents = false;
|
||||||
|
|
||||||
add_options (parser);
|
add_options (parser);
|
||||||
}
|
}
|
||||||
|
@ -450,6 +451,7 @@ struct format_options_t : option_group_t
|
||||||
hb_bool_t show_text;
|
hb_bool_t show_text;
|
||||||
hb_bool_t show_unicode;
|
hb_bool_t show_unicode;
|
||||||
hb_bool_t show_line_num;
|
hb_bool_t show_line_num;
|
||||||
|
hb_bool_t show_extents;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue