[hb-info] If name not found, fall back to English

This commit is contained in:
Behdad Esfahbod 2023-01-22 10:06:05 -07:00
parent 7cae553592
commit 334f59c955
1 changed files with 45 additions and 24 deletions

View File

@ -31,6 +31,27 @@
const unsigned DEFAULT_FONT_SIZE = FONT_SIZE_UPEM; const unsigned DEFAULT_FONT_SIZE = FONT_SIZE_UPEM;
const unsigned SUBPIXEL_BITS = 0; 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 struct info_t
{ {
@ -267,9 +288,9 @@ struct info_t
char name[16384]; char name[16384];
unsigned name_len = sizeof name; unsigned name_len = sizeof name;
hb_ot_name_get_utf8 (face, name_id, _hb_ot_name_get_utf8 (face, name_id,
language, language,
&name_len, name); &name_len, name);
printf ("%s\n", name); printf ("%s\n", name);
} }
@ -495,9 +516,9 @@ struct info_t
{ {
char name[16384]; char name[16384];
unsigned name_len = sizeof name; unsigned name_len = sizeof name;
hb_ot_name_get_utf8 (face, entries[i].name_id, _hb_ot_name_get_utf8 (face, entries[i].name_id,
language, language,
&name_len, name); &name_len, name);
printf ("%u %s\n", entries[i].name_id, name); printf ("%u %s\n", entries[i].name_id, name);
} }
@ -732,9 +753,9 @@ struct info_t
char name[64]; char name[64];
unsigned name_len = sizeof name; unsigned name_len = sizeof name;
hb_ot_name_get_utf8 (face, label_id, _hb_ot_name_get_utf8 (face, label_id,
language, language,
&name_len, name); &name_len, name);
printf (" "); printf (" ");
if (verbose) printf ("Feature: "); if (verbose) printf ("Feature: ");
@ -850,9 +871,9 @@ struct info_t
char name[64]; char name[64];
unsigned name_len = sizeof name; unsigned name_len = sizeof name;
hb_ot_name_get_utf8 (face, label_id, _hb_ot_name_get_utf8 (face, label_id,
language, language,
&name_len, name); &name_len, name);
printf (" "); printf (" ");
if (verbose) printf ("Feature: "); if (verbose) printf ("Feature: ");
@ -907,9 +928,9 @@ struct info_t
char name[64]; char name[64];
unsigned name_len = sizeof name; unsigned name_len = sizeof name;
hb_ot_name_get_utf8 (face, axis.name_id, _hb_ot_name_get_utf8 (face, axis.name_id,
language, language,
&name_len, name); &name_len, name);
printf ("%c%c%c%c%s %g %g %g %s\n", printf ("%c%c%c%c%s %g %g %g %s\n",
HB_UNTAG (axis.tag), HB_UNTAG (axis.tag),
@ -940,9 +961,9 @@ struct info_t
unsigned name_len = sizeof name; 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_id_t name_id = hb_ot_var_named_instance_get_subfamily_name_id (face, i);
hb_ot_name_get_utf8 (face, name_id, _hb_ot_name_get_utf8 (face, name_id,
language, language,
&name_len, name); &name_len, name);
unsigned coords_count = hb_ot_var_named_instance_get_design_coords (face, i, nullptr, nullptr); unsigned coords_count = hb_ot_var_named_instance_get_design_coords (face, i, nullptr, nullptr);
float* coords; float* coords;
@ -984,9 +1005,9 @@ struct info_t
char name[64]; char name[64];
unsigned name_len = sizeof name; unsigned name_len = sizeof name;
hb_ot_name_get_utf8 (face, name_id, _hb_ot_name_get_utf8 (face, name_id,
language, language,
&name_len, name); &name_len, name);
const char *type = ""; const char *type = "";
if (flags) if (flags)
{ {
@ -1019,9 +1040,9 @@ struct info_t
char name[64]; char name[64];
unsigned name_len = sizeof name; unsigned name_len = sizeof name;
hb_ot_name_get_utf8 (face, name_id, _hb_ot_name_get_utf8 (face, name_id,
language, language,
&name_len, name); &name_len, name);
printf ("%u %s\n", i, name); printf ("%u %s\n", i, name);
} }