diff --git a/util/hb-info.cc b/util/hb-info.cc index e707840bc..030adb61c 100644 --- a/util/hb-info.cc +++ b/util/hb-info.cc @@ -107,6 +107,7 @@ struct info_t : {"get-style", 0, 0, G_OPTION_ARG_STRING_ARRAY,&this->get_style, "Get style", "style tag; eg. 'wght'"}, {"get-metric", 0, 0, G_OPTION_ARG_STRING_ARRAY,&this->get_metric, "Get metric", "metric tag; eg. 'hasc'"}, {"get-baseline", 0, 0, G_OPTION_ARG_STRING_ARRAY,&this->get_baseline, "Get baseline", "baseline tag; eg. 'hang'"}, + {"get-meta", 0, 0, G_OPTION_ARG_STRING_ARRAY,&this->get_meta, "Get meta information", "tag tag; eg. 'dlng'"}, {"get-table", 0, 0, G_OPTION_ARG_STRING, &this->get_table, "Get font table", "table tag; eg. 'cmap'"}, {"list-all", 0, 0, G_OPTION_ARG_NONE, &this->list_all, "List all long information", nullptr}, @@ -202,6 +203,7 @@ struct info_t : char **get_style = nullptr; char **get_metric = nullptr; char **get_baseline = nullptr; + char **get_meta = nullptr; char *get_table = nullptr; hb_bool_t list_all = false; @@ -309,6 +311,7 @@ struct info_t : if (get_style) _get_style (); if (get_metric) _get_metric (); if (get_baseline) _get_baseline (); + if (get_meta) _get_meta (); if (get_table) _get_table (); if (list_names) _list_names (); @@ -576,6 +579,25 @@ struct info_t : } } + void _get_meta () + { + for (char **p = get_meta; *p; p++) + { + hb_ot_meta_tag_t tag = (hb_ot_meta_tag_t) hb_tag_from_string (*p, -1); + + hb_blob_t *blob = hb_ot_meta_reference_entry (face, tag); + + if (verbose) + printf ("Meta %c%c%c%c: ", HB_UNTAG (tag)); + + printf ("%.*s\n", + (int) hb_blob_get_length (blob), + hb_blob_get_data (blob, nullptr)); + + hb_blob_destroy (blob); + } + } + void _get_table () {