### Namespace

# Pango – 1.0

Internationalized text layout and rendering

Version | 1.57.0
Authors | Owen Taylor, Behdad Esfahbod
License | LGPL-2.1-or-later
Website | https://www.pango.org
Source | https://gitlab.gnome.org/GNOME/pango/

#### Build

C headers | `pango/pango.h`
pkg-config files | `pango`

#### Dependencies

GObject—2.0 | The base type system library
| Browse documentation
HarfBuzz—0.0 | A text shaping library
| Browse documentation

#### Related libraries

PangoCairo | Cairo support for Pango
| Browse documentation
PangoFc | Fontconfig support for Pango
| Browse documentation
PangoFT2 | FreeType support for Pango
| Browse documentation
PangoOT | OpenType support for Pango
| Browse documentation
PangoXft | Xft support for Pango
| Browse documentation

#### Additional documentation

- The Rendering Pipeline
- Text Attributes and Markup
- Fonts and Glyphs
- Bidirectional and Vertical Text
- Tools and Demos
- Classes Hierarchy

#### Classes

Context | A `PangoContext` stores global information used to control the itemization process.
Coverage | A `PangoCoverage` structure is a map from Unicode characters to `PangoCoverageLevel` values.
Font | A `PangoFont` is used to represent a font in a rendering-system-independent manner.
FontFace | A `PangoFontFace` is used to represent a group of fonts with the same family, slant, weight, and width, but varying sizes.
FontFamily | A `PangoFontFamily` is used to represent a family of related font faces.
FontMap | A `PangoFontMap` represents the set of fonts available for a particular rendering system.
Fontset | A `PangoFontset` represents a set of `PangoFont` to use when rendering text.
FontsetSimple | `PangoFontsetSimple` is a implementation of the abstract `PangoFontset` base class as an array of fonts.
Layout | A `PangoLayout` structure represents an entire paragraph of text.
Renderer | `PangoRenderer` is a base class for objects that can render text provided as `PangoGlyphString` or `PangoLayout`. since: 1.8

#### Structs

Analysis | The `PangoAnalysis` structure stores information about the properties of a segment of text.
AttrClass | The `PangoAttrClass` structure stores the type and operations for a particular type of attribute.
AttrColor | The `PangoAttrColor` structure is used to represent attributes that are colors.
AttrFloat | The `PangoAttrFloat` structure is used to represent attributes with a float or double value.
AttrFontDesc | The `PangoAttrFontDesc` structure is used to store an attribute that sets all aspects of the font description at once.
AttrFontFeatures | The `PangoAttrFontFeatures` structure is used to represent OpenType font features as an attribute. since: 1.38
Attribute | The `PangoAttribute` structure represents the common portions of all attributes.
AttrInt | The `PangoAttrInt` structure is used to represent attributes with an integer or enumeration value.
AttrIterator | A `PangoAttrIterator` is used to iterate through a `PangoAttrList`.
AttrLanguage | The `PangoAttrLanguage` structure is used to represent attributes that are languages.
AttrList | A `PangoAttrList` represents a list of attributes that apply to a section of text.
AttrShape | The `PangoAttrShape` structure is used to represent attributes which impose shape restrictions.
AttrSize | The `PangoAttrSize` structure is used to represent attributes which set font size.
AttrString | The `PangoAttrString` structure is used to represent attributes with a string value.
Color | The `PangoColor` structure is used to represent a color in an uncalibrated RGB color-space.
FontDescription | A `PangoFontDescription` describes a font in an implementation-independent manner.
FontMetrics | A `PangoFontMetrics` structure holds the overall metric information for a font.
GlyphGeometry | The `PangoGlyphGeometry` structure contains width and positioning information for a single glyph.
GlyphInfo | A `PangoGlyphInfo` structure represents a single glyph with positioning information and visual attributes.
GlyphItem | A `PangoGlyphItem` is a pair of a `PangoItem` and the glyphs resulting from shaping the items text.
GlyphItemIter | A `PangoGlyphItemIter` is an iterator over the clusters in a `PangoGlyphItem`. since: 1.22
GlyphString | A `PangoGlyphString` is used to store strings of glyphs with geometry and visual attribute information.
GlyphVisAttr | A `PangoGlyphVisAttr` structure communicates information between the shaping and rendering phases.
Item | The `PangoItem` structure stores information about a segment of text.
Language | The `PangoLanguage` structure is used to represent a language.
LayoutIter | A `PangoLayoutIter` can be used to iterate over the visual extents of a `PangoLayout`.
LayoutLine | A `PangoLayoutLine` represents one of the lines resulting from laying out a paragraph via `PangoLayout`.
LogAttr | The `PangoLogAttr` structure stores information about the attributes of a single character.
Matrix | A `PangoMatrix` specifies a transformation between user-space and device coordinates. since: 1.6
Rectangle | The `PangoRectangle` structure represents a rectangle.
ScriptIter | A `PangoScriptIter` is used to iterate through a string and identify ranges in different scripts.
TabArray | A `PangoTabArray` contains an array of tab stops.

#### Aliases

Glyph | A `PangoGlyph` represents a single glyph in the output form of a string.
GlyphUnit | The `PangoGlyphUnit` type is used to store dimensions within Pango.
LayoutRun | A `PangoLayoutRun` represents a single run within a `PangoLayoutLine`.

#### Enumerations

Alignment | `PangoAlignment` describes how to align the lines of a `PangoLayout` within the available space.
AttrType | The `PangoAttrType` distinguishes between different types of attributes.
BaselineShift | An enumeration that affects baseline shifts between runs. since: 1.50
BidiType | `PangoBidiType` represents the bidirectional character type of a Unicode character. deprecated: 1.44 since: 1.22
CoverageLevel | `PangoCoverageLevel` is used to indicate how well a font can represent a particular Unicode character for a particular script.
Direction | `PangoDirection` represents a direction in the Unicode bidirectional algorithm.
EllipsizeMode | `PangoEllipsizeMode` describes what sort of ellipsization should be applied to text.
FontColor | Specifies whether a font should or should not have color glyphs. since: 1.57
FontScale | An enumeration that affects font sizes for superscript and subscript positioning and for (emulated) Small Caps. since: 1.50
Gravity | `PangoGravity` represents the orientation of glyphs in a segment of text. since: 1.16
GravityHint | `PangoGravityHint` defines how horizontal scripts should behave in a vertical context. since: 1.16
Overline | The `PangoOverline` enumeration is used to specify whether text should be overlined, and if so, the type of line. since: 1.46
RenderPart | `PangoRenderPart` defines different items to render for such purposes as setting colors. since: 1.8
Script | The `PangoScript` enumeration identifies different writing systems.
Stretch | An enumeration specifying the width of the font relative to other designs within a family.
Style | An enumeration specifying the various slant styles possible for a font.
TabAlign | `PangoTabAlign` specifies where the text appears relative to the tab stop position.
TextTransform | An enumeration that affects how Pango treats characters during shaping. since: 1.50
Underline | The `PangoUnderline` enumeration is used to specify whether text should be underlined, and if so, the type of underlining.
Variant | An enumeration specifying capitalization variant of the font.
Weight | An enumeration specifying the weight (boldness) of a font.
WrapMode | `PangoWrapMode` describes how to wrap the lines of a `PangoLayout` to the desired width.

#### Bitfields

FontMask | The bits in a `PangoFontMask` correspond to the set fields in a `PangoFontDescription`.
LayoutDeserializeFlags | Flags that influence the behavior of `pango_layout_deserialize()`. since: 1.50
LayoutSerializeFlags | Flags that influence the behavior of `pango_layout_serialize()`. since: 1.50
ShapeFlags | Flags influencing the shaping process. since: 1.44
ShowFlags | These flags affect how Pango treats characters that are normally not visible in the output. since: 1.44

#### Error Domains

LayoutDeserializeError | Errors that can be returned by `pango_layout_deserialize()`. since: 1.50

#### Callbacks

AttrDataCopyFunc | Type of a function that can duplicate user data for an attribute.
AttrFilterFunc | Type of a function filtering a list of attributes.
FontsetForeachFunc | Callback used when enumerating fonts in a fontset. since: 1.4

#### Functions

attr_allow_breaks_new | Create a new allow-breaks attribute. since: 1.44
attr_background_alpha_new | Create a new background alpha attribute. since: 1.38
attr_background_new | Create a new background color attribute.
attr_baseline_shift_new | Create a new baseline displacement attribute. since: 1.50
attr_break | Apply customization from attributes to the breaks in `attrs`. since: 1.50
attr_fallback_new | Create a new font fallback attribute. since: 1.4
attr_family_new | Create a new font family attribute.
attr_font_scale_new | Create a new font scale attribute. since: 1.50
attr_foreground_alpha_new | Create a new foreground alpha attribute. since: 1.38
attr_foreground_new | Create a new foreground color attribute.
attr_gravity_hint_new | Create a new gravity hint attribute. since: 1.16
attr_gravity_new | Create a new gravity attribute. since: 1.16
attr_insert_hyphens_new | Create a new insert-hyphens attribute. since: 1.44
attr_letter_spacing_new | Create a new letter-spacing attribute. since: 1.6
attr_line_height_new | Modify the height of logical line extents by a factor. since: 1.50
attr_line_height_new_absolute | Override the height of logical line extents to be `height`. since: 1.50
attr_overline_color_new | Create a new overline color attribute. since: 1.46
attr_overline_new | Create a new overline-style attribute. since: 1.46
attr_rise_new | Create a new baseline displacement attribute.
attr_scale_new | Create a new font size scale attribute.
attr_sentence_new | Marks the range of the attribute as a single sentence. since: 1.50
attr_show_new | Create a new attribute that influences how invisible characters are rendered. since: 1.44
attr_stretch_new | Create a new font stretch attribute.
attr_strikethrough_color_new | Create a new strikethrough color attribute. since: 1.8
attr_strikethrough_new | Create a new strike-through attribute.
attr_style_new | Create a new font slant style attribute.
attr_text_transform_new | Create a new attribute that influences how characters are transformed during shaping. since: 1.50
attr_underline_color_new | Create a new underline color attribute. since: 1.8
attr_underline_new | Create a new underline-style attribute.
attr_variant_new | Create a new font variant attribute (normal or small caps).
attr_weight_new | Create a new font weight attribute.
attr_word_new | Marks the range of the attribute as a single word. since: 1.50
break | Determines possible line, word, and character breaks for a string of Unicode text with a single analysis. deprecated: 1.44
default_break | This is the default break algorithm.
extents_to_pixels | Converts extents from Pango units to device units. since: 1.16
find_base_dir | Searches a string the first character that has a strong direction, according to the Unicode bidirectional algorithm. since: 1.4
find_paragraph_boundary | Locates a paragraph boundary in `text`.
get_log_attrs | Computes a `PangoLogAttr` for each character in `text`.
get_mirror_char | Returns the mirrored character of a Unicode character. deprecated: 1.30
is_zero_width | Checks if a character that should not be normally rendered. since: 1.10
itemize | Breaks a piece of text into segments with consistent directional level and font.
itemize_with_base_dir | Like `pango_itemize()`, but with an explicitly specified base direction. since: 1.4
log2vis_get_embedding_levels | Return the bidirectional embedding levels of the input paragraph. since: 1.4
markup_parser_finish | Finishes parsing markup. since: 1.31.0
markup_parser_new | Incrementally parses marked-up text to create a plain-text string and an attribute list. since: 1.31.0
parse_enum | Parses an enum type and stores the result in `value`. deprecated: 1.38 since: 1.16
parse_markup | Parses marked-up text to create a plain-text string and an attribute list.
parse_stretch | Parses a font stretch.
parse_style | Parses a font style.
parse_variant | Parses a font variant.
parse_weight | Parses a font weight.
quantize_line_geometry | Quantizes the thickness and position of a line to whole device pixels. since: 1.12
read_line | Reads an entire line from a file into a buffer. deprecated: 1.38
reorder_items | Reorder items from logical order to visual order.
scan_int | Scans an integer. deprecated: 1.38
scan_string | Scans a string into a `GString` buffer. deprecated: 1.38
scan_word | Scans a word into a `GString` buffer. deprecated: 1.38
shape | Convert the characters in `text` into glyphs.
shape_full | Convert the characters in `text` into glyphs. since: 1.32
shape_item | Convert the characters in `item` into glyphs. since: 1.50
shape_with_flags | Convert the characters in `text` into glyphs. since: 1.44
skip_space | Skips 0 or more characters of white space. deprecated: 1.38
split_file_list | Splits a `G_SEARCHPATH_SEPARATOR`-separated list of files, stripping white space and substituting ~/ with $HOME/. deprecated: 1.38
tailor_break | Apply language-specific tailoring to the breaks in `attrs`. since: 1.44
trim_string | Trims leading and trailing whitespace from a string. deprecated: 1.38
unichar_direction | Determines the inherent direction of a character.
units_from_double | Converts a floating-point number to Pango units. since: 1.16
units_to_double | Converts a number in Pango units to floating-point. since: 1.16
version | Returns the encoded version of Pango available at run-time. since: 1.16
version_check | Checks that the Pango library in use is compatible with the given version. since: 1.16
version_string | Returns the version of Pango available at run-time. since: 1.16

#### Function Macros

ASCENT | Extracts the ascent from a `PangoRectangle` representing glyph extents.
DESCENT | Extracts the descent from a `PangoRectangle` representing glyph extents.
LBEARING | Extracts the left bearing from a `PangoRectangle` representing glyph extents.
PIXELS | Converts a dimension to device units by rounding.
PIXELS_CEIL | Converts a dimension to device units by ceiling. since: 1.14
PIXELS_FLOOR | Converts a dimension to device units by flooring. since: 1.14
RBEARING | Extracts the right bearing from a `PangoRectangle` representing glyph extents.
UNITS_CEIL | Rounds a dimension up to whole device units, but does not convert it to device units. since: 1.50
UNITS_FLOOR | Rounds a dimension down to whole device units, but does not convert it to device units. since: 1.50
UNITS_ROUND | Rounds a dimension to whole device units, but does not convert it to device units. since: 1.18
VERSION_CHECK | Checks that the version of Pango available at compile-time is not older than the provided version number.
VERSION_ENCODE | This macro encodes the given Pango version into an integer. The numbers returned by `PANGO_VERSION` and `pango_version()` are encoded using this macro. Two encoded version numbers can be compared as integers.

#### Constants

ANALYSIS_FLAG_CENTERED_BASELINE | Whether the segment should be shifted to center around the baseline.
ANALYSIS_FLAG_IS_ELLIPSIS | Whether this run holds ellipsized text.
ANALYSIS_FLAG_NEED_HYPHEN | Whether to add a hyphen at the end of the run during shaping.
ATTR_INDEX_FROM_TEXT_BEGINNING | Value for `start_index` in `PangoAttribute` that indicates the beginning of the text.
ATTR_INDEX_TO_TEXT_END | Value for `end_index` in `PangoAttribute` that indicates the end of the text.
GLYPH_EMPTY | A `PangoGlyph` value that indicates a zero-width empty glpyh.
GLYPH_INVALID_INPUT | A `PangoGlyph` value for invalid input.
GLYPH_UNKNOWN_FLAG | Flag used in `PangoGlyph` to turn a `gunichar` value of a valid Unicode character into an unknown-character glyph for that `gunichar`.
SCALE | The scale between dimensions used for Pango distances and device units.
VERSION_MAJOR | The major component of the version of Pango available at compile-time.
VERSION_MICRO | The micro component of the version of Pango available at compile-time.
VERSION_MINOR | The minor component of the version of Pango available at compile-time.
VERSION_STRING | A string literal containing the version of Pango available at compile-time.