[hb-info] If name not found, fall back to English
diff --git a/util/hb-info.cc b/util/hb-info.cc
index 0eee9ac..d095ef1 100644
--- a/util/hb-info.cc
+++ b/util/hb-info.cc
@@ -31,6 +31,27 @@
const unsigned DEFAULT_FONT_SIZE = FONT_SIZE_UPEM;
const unsigned SUBPIXEL_BITS = 0;
+static void
+_hb_ot_name_get_utf8 (hb_face_t *face,
+ hb_ot_name_id_t name_id,
+ hb_language_t language,
+ unsigned int *text_size /* IN/OUT */,
+ char *text /* OUT */)
+{
+ static hb_language_t en = hb_language_from_string ("en", -1);
+
+ unsigned len = *text_size;
+ if (!hb_ot_name_get_utf8 (face, name_id,
+ language,
+ &len, text))
+ {
+ len = *text_size;
+ hb_ot_name_get_utf8 (face, name_id,
+ en,
+ &len, text);
+ }
+ *text_size = len;
+}
struct info_t
{
@@ -267,9 +288,9 @@
char name[16384];
unsigned name_len = sizeof name;
- hb_ot_name_get_utf8 (face, name_id,
- language,
- &name_len, name);
+ _hb_ot_name_get_utf8 (face, name_id,
+ language,
+ &name_len, name);
printf ("%s\n", name);
}
@@ -495,9 +516,9 @@
{
char name[16384];
unsigned name_len = sizeof name;
- hb_ot_name_get_utf8 (face, entries[i].name_id,
- language,
- &name_len, name);
+ _hb_ot_name_get_utf8 (face, entries[i].name_id,
+ language,
+ &name_len, name);
printf ("%u %s\n", entries[i].name_id, name);
}
@@ -732,9 +753,9 @@
char name[64];
unsigned name_len = sizeof name;
- hb_ot_name_get_utf8 (face, label_id,
- language,
- &name_len, name);
+ _hb_ot_name_get_utf8 (face, label_id,
+ language,
+ &name_len, name);
printf (" ");
if (verbose) printf ("Feature: ");
@@ -850,9 +871,9 @@
char name[64];
unsigned name_len = sizeof name;
- hb_ot_name_get_utf8 (face, label_id,
- language,
- &name_len, name);
+ _hb_ot_name_get_utf8 (face, label_id,
+ language,
+ &name_len, name);
printf (" ");
if (verbose) printf ("Feature: ");
@@ -907,9 +928,9 @@
char name[64];
unsigned name_len = sizeof name;
- hb_ot_name_get_utf8 (face, axis.name_id,
- language,
- &name_len, name);
+ _hb_ot_name_get_utf8 (face, axis.name_id,
+ language,
+ &name_len, name);
printf ("%c%c%c%c%s %g %g %g %s\n",
HB_UNTAG (axis.tag),
@@ -940,9 +961,9 @@
unsigned name_len = sizeof name;
hb_ot_name_id_t name_id = hb_ot_var_named_instance_get_subfamily_name_id (face, i);
- hb_ot_name_get_utf8 (face, name_id,
- language,
- &name_len, name);
+ _hb_ot_name_get_utf8 (face, name_id,
+ language,
+ &name_len, name);
unsigned coords_count = hb_ot_var_named_instance_get_design_coords (face, i, nullptr, nullptr);
float* coords;
@@ -984,9 +1005,9 @@
char name[64];
unsigned name_len = sizeof name;
- hb_ot_name_get_utf8 (face, name_id,
- language,
- &name_len, name);
+ _hb_ot_name_get_utf8 (face, name_id,
+ language,
+ &name_len, name);
const char *type = "";
if (flags)
{
@@ -1019,9 +1040,9 @@
char name[64];
unsigned name_len = sizeof name;
- hb_ot_name_get_utf8 (face, name_id,
- language,
- &name_len, name);
+ _hb_ot_name_get_utf8 (face, name_id,
+ language,
+ &name_len, name);
printf ("%u %s\n", i, name);
}