diff options
author | Matthias Clasen <mclasen@redhat.com> | 2022-01-02 21:34:05 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2022-01-02 21:37:32 -0500 |
commit | dd802f21e7fc715927656cc623865a1eeab752d5 (patch) | |
tree | ed4bfc62af9e90a5d5667d9f0aad3340c8544ed9 /gtk | |
parent | dbbc990c7207d4c8556d6f9c0076b8883f6b4ff3 (diff) | |
download | gtk+-dd802f21e7fc715927656cc623865a1eeab752d5.tar.gz |
fontchooser: Cosmetics
Use harfbuzz api to format variations and features.
That matches what pango uses to parse them.
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/gtkfontchooserwidget.c | 53 |
1 files changed, 28 insertions, 25 deletions
diff --git a/gtk/gtkfontchooserwidget.c b/gtk/gtkfontchooserwidget.c index f2e2f82c1e..18d23a49f4 100644 --- a/gtk/gtkfontchooserwidget.c +++ b/gtk/gtkfontchooserwidget.c @@ -1470,26 +1470,23 @@ add_font_variations (GtkFontChooserWidget *fontchooser, { GHashTableIter iter; Axis *axis; - const char *sep = ""; - char buf[G_ASCII_DTOSTR_BUF_SIZE]; g_hash_table_iter_init (&iter, fontchooser->axes); while (g_hash_table_iter_next (&iter, (gpointer *)NULL, (gpointer *)&axis)) { - char tag[5]; double value; + char buf[128]; value = gtk_adjustment_get_value (axis->adjustment); + if (value == axis->default_value) continue; - tag[0] = (axis->tag >> 24) & 0xff; - tag[1] = (axis->tag >> 16) & 0xff; - tag[2] = (axis->tag >> 8) & 0xff; - tag[3] = (axis->tag >> 0) & 0xff; - tag[4] = '\0'; - g_string_append_printf (s, "%s%s=%s", sep, tag, g_ascii_dtostr (buf, sizeof(buf), value)); - sep = ","; + hb_variation_to_string (&(hb_variation_t) { axis->tag, value }, buf, sizeof (buf)); + + if (s->len > 0) + g_string_append_c (s, ','); + g_string_append (s, buf); } } @@ -1518,10 +1515,7 @@ adjustment_changed (GtkAdjustment *adjustment, static gboolean should_show_axis (hb_ot_var_axis_info_t *ax) { - if (ax->flags & HB_OT_VAR_AXIS_FLAG_HIDDEN) - return FALSE; - - return TRUE; + return (ax->flags & HB_OT_VAR_AXIS_FLAG_HIDDEN) == 0; } static gboolean @@ -1535,11 +1529,11 @@ static struct { guint32 tag; const char *name; } axis_names[] = { - { HB_OT_TAG_VAR_AXIS_WIDTH, N_("Width") }, - { HB_OT_TAG_VAR_AXIS_WEIGHT, N_("Weight") }, - { HB_OT_TAG_VAR_AXIS_ITALIC, N_("Italic") }, - { HB_OT_TAG_VAR_AXIS_SLANT, N_("Slant") }, - { HB_OT_TAG_VAR_AXIS_OPTICAL_SIZE, N_("Optical Size") }, + { HB_OT_TAG_VAR_AXIS_WIDTH, NC_("Font variation axis", "Width") }, + { HB_OT_TAG_VAR_AXIS_WEIGHT, NC_("Font variation axis", "Weight") }, + { HB_OT_TAG_VAR_AXIS_ITALIC, NC_("Font variation axis", "Italic") }, + { HB_OT_TAG_VAR_AXIS_SLANT, NC_("Font variation axis", "Slant") }, + { HB_OT_TAG_VAR_AXIS_OPTICAL_SIZE, NC_("Font variation axis", "Optical Size") }, }; static gboolean @@ -1570,7 +1564,7 @@ add_axis (GtkFontChooserWidget *fontchooser, { if (axis_names[i].tag == ax->tag) { - name = _(axis_names[i].name); + name = g_dpgettext2 (NULL, "Font variation axis", axis_names[i].name); break; } } @@ -2304,6 +2298,7 @@ update_font_features (GtkFontChooserWidget *fontchooser) { GString *s; GList *l; + char buf[128]; s = g_string_new (""); @@ -2319,17 +2314,24 @@ update_font_features (GtkFontChooserWidget *fontchooser) if (gtk_check_button_get_active (GTK_CHECK_BUTTON (item->feat)) && strcmp (item->name, "xxxx") != 0) { - g_string_append_printf (s, "%s\"%s\" %d", s->len > 0 ? ", " : "", item->name, 1); + hb_feature_to_string (&(hb_feature_t) { item->tag, 1, 0, -1 }, buf, sizeof (buf)); + if (s->len > 0) + g_string_append_c (s, ','); + g_string_append (s, buf); } } else if (GTK_IS_CHECK_BUTTON (item->feat)) { + guint32 value; + if (gtk_check_button_get_inconsistent (GTK_CHECK_BUTTON (item->feat))) continue; - g_string_append_printf (s, "%s\"%s\" %d", - s->len > 0 ? ", " : "", item->name, - gtk_check_button_get_active (GTK_CHECK_BUTTON (item->feat))); + value = gtk_check_button_get_active (GTK_CHECK_BUTTON (item->feat)); + hb_feature_to_string (&(hb_feature_t) { item->tag, value, 0, -1 }, buf, sizeof (buf)); + if (s->len > 0) + g_string_append_c (s, ','); + g_string_append (s, buf); } } @@ -2367,7 +2369,8 @@ gtk_font_chooser_widget_merge_font_desc (GtkFontChooserWidget *fontchooser { double font_size = (double) pango_font_description_get_size (fontchooser->font_desc) / PANGO_SCALE; /* XXX: This clamps, which can cause it to reloop into here, do we need - * to block its signal handler? */ + * to block its signal handler? + */ gtk_range_set_value (GTK_RANGE (fontchooser->size_slider), font_size); gtk_spin_button_set_value (GTK_SPIN_BUTTON (fontchooser->size_spin), font_size); } |