[hb-shape/view] Add --list-unicodes
This commit is contained in:
parent
13c70066de
commit
bf8bb9fb83
|
@ -57,6 +57,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;
|
||||||
#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;
|
||||||
|
@ -94,6 +95,7 @@ static G_GNUC_NORETURN void _list_features (hb_face_t *face);
|
||||||
#ifndef HB_NO_VAR
|
#ifndef HB_NO_VAR
|
||||||
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);
|
||||||
|
|
||||||
void
|
void
|
||||||
font_options_t::post_parse (GError **error)
|
font_options_t::post_parse (GError **error)
|
||||||
|
@ -173,6 +175,9 @@ font_options_t::post_parse (GError **error)
|
||||||
if (list_variations)
|
if (list_variations)
|
||||||
_list_variations (face);
|
_list_variations (face);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (list_unicodes)
|
||||||
|
_list_unicodes (font);
|
||||||
}
|
}
|
||||||
|
|
||||||
static G_GNUC_NORETURN void
|
static G_GNUC_NORETURN void
|
||||||
|
@ -396,6 +401,37 @@ parse_variations (const char *name G_GNUC_UNUSED,
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static G_GNUC_NORETURN void
|
||||||
|
_list_unicodes (hb_font_t *font)
|
||||||
|
{
|
||||||
|
hb_face_t *face = hb_font_get_face (font);
|
||||||
|
|
||||||
|
hb_set_t *unicodes = hb_set_create ();
|
||||||
|
hb_map_t *cmap = hb_map_create ();
|
||||||
|
|
||||||
|
hb_face_collect_nominal_glyph_mapping (face, cmap, unicodes);
|
||||||
|
|
||||||
|
for (hb_codepoint_t u = HB_SET_VALUE_INVALID;
|
||||||
|
hb_set_next (unicodes, &u);)
|
||||||
|
{
|
||||||
|
hb_codepoint_t gid = hb_map_get (cmap, u);
|
||||||
|
|
||||||
|
char glyphname[64];
|
||||||
|
if (!hb_font_get_glyph_name (font, gid,
|
||||||
|
glyphname, sizeof glyphname))
|
||||||
|
snprintf (glyphname, sizeof glyphname, "gid%d", gid);
|
||||||
|
|
||||||
|
printf ("U+%04X %s\n", u, glyphname);
|
||||||
|
}
|
||||||
|
|
||||||
|
hb_map_destroy (cmap);
|
||||||
|
hb_set_destroy (unicodes);
|
||||||
|
|
||||||
|
/* TODO: List variation-selector sequences. */
|
||||||
|
|
||||||
|
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,
|
||||||
|
@ -486,6 +522,7 @@ font_options_t::add_options (option_parser_t *parser)
|
||||||
G_OPTION_ARG_NONE, &this->sub_font, "Create a sub-font (default: false)", "boolean"},
|
G_OPTION_ARG_NONE, &this->sub_font, "Create a sub-font (default: false)", "boolean"},
|
||||||
{"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},
|
||||||
{nullptr}
|
{nullptr}
|
||||||
};
|
};
|
||||||
parser->add_group (entries,
|
parser->add_group (entries,
|
||||||
|
|
Loading…
Reference in New Issue