css: add support for font-feature-settings

This commit is contained in:
Lukas K 2020-02-25 22:54:00 +01:00
parent f2d369732b
commit 2e2b647833
3 changed files with 24 additions and 0 deletions

View File

@ -227,6 +227,7 @@ gtk_css_style_get_pango_attributes (GtkCssStyle *style)
const GdkRGBA *color; const GdkRGBA *color;
const GdkRGBA *decoration_color; const GdkRGBA *decoration_color;
gint letter_spacing; gint letter_spacing;
const char *font_feature_settings;
/* text-decoration */ /* text-decoration */
decoration_line = _gtk_css_text_decoration_line_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_TEXT_DECORATION_LINE)); decoration_line = _gtk_css_text_decoration_line_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_TEXT_DECORATION_LINE));
@ -262,6 +263,13 @@ gtk_css_style_get_pango_attributes (GtkCssStyle *style)
attrs = add_pango_attr (attrs, pango_attr_letter_spacing_new (letter_spacing * PANGO_SCALE)); attrs = add_pango_attr (attrs, pango_attr_letter_spacing_new (letter_spacing * PANGO_SCALE));
} }
/* font-feature-settings */
font_feature_settings = _gtk_css_string_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_FONT_FEATURE_SETTINGS));
if (font_feature_settings != NULL)
{
attrs = add_pango_attr (attrs, pango_attr_font_features_new (font_feature_settings));
}
return attrs; return attrs;
} }

View File

@ -471,6 +471,12 @@ opacity_query (GtkCssStyleProperty *property,
g_value_set_double (value, _gtk_css_number_value_get (css_value, 100)); g_value_set_double (value, _gtk_css_number_value_get (css_value, 100));
} }
static GtkCssValue *
parse_font_feature_settings (GtkCssStyleProperty *property,
GtkCssParser *parser)
{
return _gtk_css_string_value_parse (parser);
}
static GtkCssValue * static GtkCssValue *
parse_one_css_play_state (GtkCssParser *parser) parse_one_css_play_state (GtkCssParser *parser)
@ -1869,4 +1875,13 @@ G_GNUC_END_IGNORE_DEPRECATIONS
color_query, color_query,
color_assign, color_assign,
_gtk_css_color_value_new_current_color ()); _gtk_css_color_value_new_current_color ());
gtk_css_style_property_register ("font-feature-settings",
GTK_CSS_PROPERTY_FONT_FEATURE_SETTINGS,
G_TYPE_NONE,
GTK_STYLE_PROPERTY_INHERIT | GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_TEXT | GTK_CSS_AFFECTS_TEXT_ATTRS,
parse_font_feature_settings,
NULL,
NULL,
_gtk_css_string_value_new (""));
} }

View File

@ -227,6 +227,7 @@ enum { /*< skip >*/
GTK_CSS_PROPERTY_GTK_KEY_BINDINGS, GTK_CSS_PROPERTY_GTK_KEY_BINDINGS,
GTK_CSS_PROPERTY_CARET_COLOR, GTK_CSS_PROPERTY_CARET_COLOR,
GTK_CSS_PROPERTY_SECONDARY_CARET_COLOR, GTK_CSS_PROPERTY_SECONDARY_CARET_COLOR,
GTK_CSS_PROPERTY_FONT_FEATURE_SETTINGS,
/* add more */ /* add more */
GTK_CSS_PROPERTY_N_PROPERTIES GTK_CSS_PROPERTY_N_PROPERTIES
}; };