[hb-info] Add --list-meta
diff --git a/util/hb-info.cc b/util/hb-info.cc
index f7cc4e6..e707840 100644
--- a/util/hb-info.cc
+++ b/util/hb-info.cc
@@ -125,6 +125,7 @@
{"list-variations",0, 0, G_OPTION_ARG_NONE, &this->list_variations, "List variations", nullptr},
#endif
{"list-palettes", 0, 0, G_OPTION_ARG_NONE, &this->list_palettes, "List color palettes", nullptr},
+ {"list-meta", 0, 0, G_OPTION_ARG_NONE, &this->list_meta, "List meta information", nullptr},
{nullptr}
};
@@ -219,6 +220,7 @@
hb_bool_t list_variations = false;
#endif
hb_bool_t list_palettes = false;
+ hb_bool_t list_meta = false;
public:
@@ -286,6 +288,7 @@
list_variations =
#endif
list_palettes =
+ list_meta =
true;
}
@@ -323,6 +326,7 @@
if (list_variations) _list_variations ();
#endif
if (list_palettes) _list_palettes ();
+ if (list_meta) _list_meta ();
return 0;
}
@@ -1359,6 +1363,39 @@
}
}
}
+
+ void
+ _list_meta ()
+ {
+ if (verbose)
+ {
+ separator ();
+ printf ("Meta information:\n");
+ }
+
+ {
+ if (verbose)
+ {
+ printf ("Tag Data\n------------\n");
+ }
+ unsigned count = hb_ot_meta_get_entry_tags (face, 0, nullptr, nullptr);
+ for (unsigned i = 0; i < count; i++)
+ {
+ hb_ot_meta_tag_t tag;
+ unsigned len = 1;
+ hb_ot_meta_get_entry_tags (face, i, &len, &tag);
+
+ hb_blob_t *blob = hb_ot_meta_reference_entry (face, tag);
+
+ printf ("%c%c%c%c %.*s\n", HB_UNTAG (tag),
+ (int) hb_blob_get_length (blob),
+ hb_blob_get_data (blob, nullptr));
+
+ hb_blob_destroy (blob);
+ }
+ }
+ }
+
};