diff options
author | Matthias Clasen <mclasen@redhat.com> | 2022-01-23 22:42:50 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2022-01-25 15:29:16 -0500 |
commit | 0dce75d039e411363486978dde39a9b1b7a9b7ed (patch) | |
tree | e8e2bb8c6423925424104e028a7c221ac0445be1 | |
parent | c678041d82237dd07ecf5695ec283ce045b2e3ab (diff) | |
download | pango-0dce75d039e411363486978dde39a9b1b7a9b7ed.tar.gz |
Add a line spacing attribute
This will be used to restore the PangoLayout spacing
property.
-rw-r--r-- | pango/pango-attributes.c | 29 | ||||
-rw-r--r-- | pango/pango-attributes.h | 5 |
2 files changed, 34 insertions, 0 deletions
diff --git a/pango/pango-attributes.c b/pango/pango-attributes.c index 4d7908ff..01683af3 100644 --- a/pango/pango-attributes.c +++ b/pango/pango-attributes.c @@ -1555,6 +1555,30 @@ pango_attr_line_height_new_absolute (int height) } /** + * pango_attr_line_spacing_new: + * @spacing: the line spacing, in %PANGO_SCALE-ths of a point + * + * Spacing to be added to the leading from font metrics, + * if not overridden by line spacing attributes. + * + * This affects the values returned by + * [method@Pango.LayoutLine.get_extents], + * [method@Pango.LayoutIter.get_line_extents]. + */ +PangoAttribute * +pango_attr_line_spacing_new (int spacing) +{ + static const PangoAttrClass klass = { + PANGO_ATTR_LINE_SPACING, + pango_attr_int_copy, + pango_attr_int_destroy, + pango_attr_int_equal + }; + + return pango_attr_int_new (&klass, spacing); +} + +/** * pango_attr_text_transform_new: * @transform: `PangoTextTransform` to apply * @@ -1618,6 +1642,7 @@ pango_attribute_as_int (PangoAttribute *attr) case PANGO_ATTR_INSERT_HYPHENS: case PANGO_ATTR_OVERLINE: case PANGO_ATTR_ABSOLUTE_LINE_HEIGHT: + case PANGO_ATTR_LINE_SPACING: case PANGO_ATTR_TEXT_TRANSFORM: case PANGO_ATTR_WORD: case PANGO_ATTR_SENTENCE: @@ -3052,6 +3077,10 @@ pango_attr_list_from_string (const char *text) FLOAT_ATTR(line_height); break; + case PANGO_ATTR_LINE_SPACING: + INT_ATTR(line_spacing, int); + break; + case PANGO_ATTR_ABSOLUTE_LINE_HEIGHT: integer = g_ascii_strtoll (p, &endp, 10); if (!is_valid_end_char (*endp)) goto fail; diff --git a/pango/pango-attributes.h b/pango/pango-attributes.h index 1f32714b..c16649c5 100644 --- a/pango/pango-attributes.h +++ b/pango/pango-attributes.h @@ -82,6 +82,8 @@ typedef struct _PangoAttrFontFeatures PangoAttrFontFeatures; * @PANGO_ATTR_PARAGRAPH: override segmentation to classify the range of the attribute as a single paragraph ([struct@Pango.AttrInt]). * @PANGO_ATTR_BASELINE_SHIFT: baseline displacement ([struct@Pango.AttrInt]). Since 1.50 * @PANGO_ATTR_FONT_SCALE: font-relative size change ([struct@Pango.AttrInt]). Since 1.50 + * @PANGO_ATTR_LINE_SPACING: extra space to add to the leading from the font metrics (if + * not overridden by line height attribute) ([struct@Pango.AttrInt]) * * The `PangoAttrType` distinguishes between different types of attributes. * @@ -131,6 +133,7 @@ typedef enum PANGO_ATTR_BASELINE_SHIFT, /* PangoAttrSize */ PANGO_ATTR_FONT_SCALE, /* PangoAttrInt */ PANGO_ATTR_PARAGRAPH, /* PangoAttrInt */ + PANGO_ATTR_LINE_SPACING, /* PangoAttrInt */ } PangoAttrType; /** @@ -611,6 +614,8 @@ PANGO_AVAILABLE_IN_1_50 PangoAttribute * pango_attr_line_height_new (double factor); PANGO_AVAILABLE_IN_1_50 PangoAttribute * pango_attr_line_height_new_absolute (int height); +PANGO_AVAILABLE_IN_ALL +PangoAttribute * pango_attr_line_spacing_new (int spacing); PANGO_AVAILABLE_IN_1_50 PangoAttribute * pango_attr_text_transform_new (PangoTextTransform transform); |