[hb-shape/view] Add --list-variations
This commit is contained in:
parent
d015e9016c
commit
9abc21072b
|
@ -57,6 +57,7 @@ struct font_options_t : face_options_t
|
||||||
|
|
||||||
hb_bool_t sub_font = false;
|
hb_bool_t sub_font = false;
|
||||||
#ifndef HB_NO_VAR
|
#ifndef HB_NO_VAR
|
||||||
|
hb_bool_t list_variations = false;
|
||||||
hb_variation_t *variations = nullptr;
|
hb_variation_t *variations = nullptr;
|
||||||
unsigned int num_variations = 0;
|
unsigned int num_variations = 0;
|
||||||
#endif
|
#endif
|
||||||
|
@ -87,6 +88,10 @@ static struct supported_font_funcs_t {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef HB_NO_VAR
|
||||||
|
static G_GNUC_NORETURN void _list_variations (hb_face_t *face);
|
||||||
|
#endif
|
||||||
|
|
||||||
void
|
void
|
||||||
font_options_t::post_parse (GError **error)
|
font_options_t::post_parse (GError **error)
|
||||||
{
|
{
|
||||||
|
@ -156,10 +161,50 @@ font_options_t::post_parse (GError **error)
|
||||||
hb_font_set_scale (old_font, scale_x * 2, scale_y * 2);
|
hb_font_set_scale (old_font, scale_x * 2, scale_y * 2);
|
||||||
hb_font_destroy (old_font);
|
hb_font_destroy (old_font);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef HB_NO_VAR
|
||||||
|
if (list_variations)
|
||||||
|
_list_variations (face);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifndef HB_NO_VAR
|
#ifndef HB_NO_VAR
|
||||||
|
static G_GNUC_NORETURN void
|
||||||
|
_list_variations (hb_face_t *face)
|
||||||
|
{
|
||||||
|
hb_vector_t<hb_ot_var_axis_info_t> axes;
|
||||||
|
|
||||||
|
unsigned count = hb_ot_var_get_axis_infos (face, 0, nullptr, nullptr);
|
||||||
|
axes.resize (count);
|
||||||
|
hb_ot_var_get_axis_infos (face, 0, &count, axes.arrayZ);
|
||||||
|
|
||||||
|
auto language = hb_language_get_default ();
|
||||||
|
|
||||||
|
printf ("tag: min default max name\n");
|
||||||
|
for (const auto &axis : axes)
|
||||||
|
{
|
||||||
|
if (axis.flags & HB_OT_VAR_AXIS_FLAG_HIDDEN)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
char name[64];
|
||||||
|
unsigned name_len = sizeof name;
|
||||||
|
|
||||||
|
hb_ot_name_get_utf8 (face, axis.name_id,
|
||||||
|
language,
|
||||||
|
&name_len, name);
|
||||||
|
|
||||||
|
printf ("%c%c%c%c: %g %g %g %s\n",
|
||||||
|
HB_UNTAG (axis.tag),
|
||||||
|
(double) axis.min_value,
|
||||||
|
(double) axis.default_value,
|
||||||
|
(double) axis.max_value,
|
||||||
|
name);
|
||||||
|
}
|
||||||
|
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
parse_variations (const char *name G_GNUC_UNUSED,
|
parse_variations (const char *name G_GNUC_UNUSED,
|
||||||
const char *arg,
|
const char *arg,
|
||||||
|
@ -317,6 +362,7 @@ font_options_t::add_options (option_parser_t *parser)
|
||||||
|
|
||||||
GOptionEntry entries2[] =
|
GOptionEntry entries2[] =
|
||||||
{
|
{
|
||||||
|
{"list-variations", 0, 0, G_OPTION_ARG_NONE, &this->list_variations, "List available font variations and quit", nullptr},
|
||||||
{"variations", 0, 0, G_OPTION_ARG_CALLBACK, (gpointer) &parse_variations, variations_help, "list"},
|
{"variations", 0, 0, G_OPTION_ARG_CALLBACK, (gpointer) &parse_variations, variations_help, "list"},
|
||||||
{nullptr}
|
{nullptr}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue