[hb-shape/view] Add --list-glyphs
This commit is contained in:
parent
bf8bb9fb83
commit
8564d2266b
|
@ -58,6 +58,7 @@ struct font_options_t : face_options_t
|
||||||
hb_bool_t sub_font = false;
|
hb_bool_t sub_font = false;
|
||||||
hb_bool_t list_features = false;
|
hb_bool_t list_features = false;
|
||||||
hb_bool_t list_unicodes = false;
|
hb_bool_t list_unicodes = false;
|
||||||
|
hb_bool_t list_glyphs = false;
|
||||||
#ifndef HB_NO_VAR
|
#ifndef HB_NO_VAR
|
||||||
hb_bool_t list_variations = false;
|
hb_bool_t list_variations = false;
|
||||||
hb_variation_t *variations = nullptr;
|
hb_variation_t *variations = nullptr;
|
||||||
|
@ -96,6 +97,7 @@ static G_GNUC_NORETURN void _list_features (hb_face_t *face);
|
||||||
static G_GNUC_NORETURN void _list_variations (hb_face_t *face);
|
static G_GNUC_NORETURN void _list_variations (hb_face_t *face);
|
||||||
#endif
|
#endif
|
||||||
static G_GNUC_NORETURN void _list_unicodes (hb_font_t *font);
|
static G_GNUC_NORETURN void _list_unicodes (hb_font_t *font);
|
||||||
|
static G_GNUC_NORETURN void _list_glyphs (hb_font_t *font);
|
||||||
|
|
||||||
void
|
void
|
||||||
font_options_t::post_parse (GError **error)
|
font_options_t::post_parse (GError **error)
|
||||||
|
@ -178,6 +180,9 @@ font_options_t::post_parse (GError **error)
|
||||||
|
|
||||||
if (list_unicodes)
|
if (list_unicodes)
|
||||||
_list_unicodes (font);
|
_list_unicodes (font);
|
||||||
|
|
||||||
|
if (list_glyphs)
|
||||||
|
_list_glyphs (font);
|
||||||
}
|
}
|
||||||
|
|
||||||
static G_GNUC_NORETURN void
|
static G_GNUC_NORETURN void
|
||||||
|
@ -419,7 +424,7 @@ _list_unicodes (hb_font_t *font)
|
||||||
char glyphname[64];
|
char glyphname[64];
|
||||||
if (!hb_font_get_glyph_name (font, gid,
|
if (!hb_font_get_glyph_name (font, gid,
|
||||||
glyphname, sizeof glyphname))
|
glyphname, sizeof glyphname))
|
||||||
snprintf (glyphname, sizeof glyphname, "gid%d", gid);
|
snprintf (glyphname, sizeof glyphname, "gid%u", gid);
|
||||||
|
|
||||||
printf ("U+%04X %s\n", u, glyphname);
|
printf ("U+%04X %s\n", u, glyphname);
|
||||||
}
|
}
|
||||||
|
@ -432,6 +437,26 @@ _list_unicodes (hb_font_t *font)
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static G_GNUC_NORETURN void
|
||||||
|
_list_glyphs (hb_font_t *font)
|
||||||
|
{
|
||||||
|
hb_face_t *face = hb_font_get_face (font);
|
||||||
|
|
||||||
|
unsigned num_glyphs = hb_face_get_glyph_count (face);
|
||||||
|
|
||||||
|
for (hb_codepoint_t gid = 0; gid < num_glyphs; gid++)
|
||||||
|
{
|
||||||
|
char glyphname[64];
|
||||||
|
if (!hb_font_get_glyph_name (font, gid,
|
||||||
|
glyphname, sizeof glyphname))
|
||||||
|
snprintf (glyphname, sizeof glyphname, "gid%u", gid);
|
||||||
|
|
||||||
|
printf ("%u %s\n", gid, glyphname);
|
||||||
|
}
|
||||||
|
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
parse_font_size (const char *name G_GNUC_UNUSED,
|
parse_font_size (const char *name G_GNUC_UNUSED,
|
||||||
const char *arg,
|
const char *arg,
|
||||||
|
@ -523,6 +548,7 @@ font_options_t::add_options (option_parser_t *parser)
|
||||||
{"ft-load-flags", 0, 0, G_OPTION_ARG_INT, &this->ft_load_flags, "Set FreeType load-flags (default: 2)", "integer"},
|
{"ft-load-flags", 0, 0, G_OPTION_ARG_INT, &this->ft_load_flags, "Set FreeType load-flags (default: 2)", "integer"},
|
||||||
{"list-features", 0, 0, G_OPTION_ARG_NONE, &this->list_features, "List available font features and quit", nullptr},
|
{"list-features", 0, 0, G_OPTION_ARG_NONE, &this->list_features, "List available font features and quit", nullptr},
|
||||||
{"list-unicodes", 0, 0, G_OPTION_ARG_NONE, &this->list_unicodes, "List available characters in the font and quit", nullptr},
|
{"list-unicodes", 0, 0, G_OPTION_ARG_NONE, &this->list_unicodes, "List available characters in the font and quit", nullptr},
|
||||||
|
{"list-glyphs", 0, 0, G_OPTION_ARG_NONE, &this->list_glyphs, "List available glyphs in the font and quit", nullptr},
|
||||||
{nullptr}
|
{nullptr}
|
||||||
};
|
};
|
||||||
parser->add_group (entries,
|
parser->add_group (entries,
|
||||||
|
|
Loading…
Reference in New Issue