OpenType Font Handling
Obtaining information from OpenType tables
Functions and macros in this section are used to implement the OpenType Layout
features and algorithms. These are mostly useful when writing Fontconfig-based
shaping engines
Unstable
The PangoOTTag typedef is used to represent TrueType and OpenType
four letter tags inside Pango. Use PANGO_OT_TAG_MAKE()
or PANGO_OT_TAG_MAKE_FROM_STRING() macros to create PangoOTTags manually.
The #PangoOTInfo struct contains the various
tables associated with an OpenType font. It contains only private fields and
should only be accessed via the pango_ot_info_* functions
which are documented below. To obtain a #PangoOTInfo,
use pango_ot_info_new().
The #PangoOTBuffer structure is used to store strings of glyphs associated
with a #PangoFcFont, suitable for OpenType layout processing. It contains
only private fields and should only be accessed via the
pango_ot_buffer_* functions which are documented below.
To obtain a #PangoOTBuffer, use pango_ot_buffer_new().
The #PangoOTGlyph structure represents a single glyph together with
information used for OpenType layout processing of the glyph.
It contains the following fields.
@glyph: the glyph itself.
@properties: the properties value, identifying which features should be
applied on this glyph. See pango_ruleset_add_feature().
@cluster: the cluster that this glyph belongs to.
@component: a component value, set by the OpenType layout engine.
@ligID: a ligature index value, set by the OpenType layout engine.
@internal: for Pango internal use
The #PangoOTRuleset structure holds a
set of features selected from the tables in an OpenType font.
(A feature is an operation such as adjusting glyph positioning
that should be applied to a text feature such as a certain
type of accent.) A #PangoOTRuleset
is created with pango_ot_ruleset_new(), features are added
to it with pango_ot_ruleset_add_feature(), then it is
applied to a #PangoGlyphString with pango_ot_ruleset_shape().
The #PangoOTRuleset structure holds all the information needed
to build a complete #PangoOTRuleset from an OpenType font.
The main use of this struct is to act as the key for a per-font
hash of rulesets. The user populates a ruleset description and
gets the ruleset using pango_ot_ruleset_get_for_description()
or create a new one using pango_ot_ruleset_new_from_description().
@script: a #PangoScript.
@language: a #PangoLanguage.
@static_gsub_features: static map of GSUB features, or %NULL.
@n_static_gsub_features: length of @static_gsub_features, or 0.
@static_gpos_features: static map of GPOS features, or %NULL.
@n_static_gpos_features: length of @static_gpos_features, or 0.
@other_features: map of extra features to add to both GSUB and GPOS, or %NULL.
Unlike the static maps, this pointer need not live beyond
the life of function calls taking this struct.
@n_other_features: length of @other_features, or 0.
@Since: 1.18
The PangoOTTableType enumeration values are used to
identify the various OpenType tables in the
pango_ot_info_* functions.
@PANGO_OT_TABLE_GSUB: The GSUB table.
@PANGO_OT_TABLE_GPOS: The GPOS table.
The PangoOTFeatureMap typedef is used to represent an OpenType
feature with the property bit associated with it. The feature tag is
represented as a char array instead of a #PangoOTTag for convenience.
@feature_name: feature tag in represented as four-letter ASCII string.
@property_bit: the property bit to use for this feature. See
pango_ot_ruleset_add_feature() for details.
@Since: 1.18
Creates a #PangoOTTag from four characters. This is similar and
compatible with the FT_MAKE_TAG() macro from
FreeType.
@c1: First character.
@c2: Second character.
@c3: Third character.
@c4: Fourth character.
Creates a #PangoOTTag from a string. The string should be at least
four characters long (pad with space characters if needed), and need
not be nul-terminated. This is a convenience wrapper around
PANGO_OT_TAG_MAKE(), but cannot be used in certain situations, for
example, as a switch expression, as it dereferences pointers.
@s: The string representation of the tag.
This is used as the property bit in pango_ot_ruleset_add_feature() when a
feature should be applied to all glyphs.
@Since: 1.16
This is used as a feature index that represent no feature, that is, should be
skipped. It may be returned as feature index by pango_ot_info_find_feature()
if the feature is not found, and pango_ot_rulset_add_feature() function
automatically skips this value, so no special handling is required by the
user.
@Since: 1.18
This is used as a script index that represent no script, that is, when the
requested script was not found, and a default ('DFLT') script was not found
either. It may be returned as script index by pango_ot_info_find_script()
if the script or a default script are not found, all other functions
taking a script index essentially return if the input script index is
this value, so no special handling is required by the user.
@Since: 1.18
This is used as the language index in pango_ot_info_find_feature() when
the default language system of the script is desired.
It is also returned by pango_ot_info_find_language() if the requested language
is not found, or the requested language tag was PANGO_OT_TAG_DEFAULT_LANGUAGE.
The end result is that one can always call pango_ot_tag_from_language()
followed by pango_ot_info_find_language() and pass the result to
pango_ot_info_find_feature() without having to worry about falling back to
default language system explicitly.
@Since: 1.16
This is a #PangoOTTag representing a special language tag 'dflt'. It is
returned as language tag by pango_ot_tag_from_language() if the requested
language is not found. It is safe to pass this value to
pango_ot_info_find_language() as that function falls back to returning default
language-system if the requested language tag is not found.
@Since: 1.18
This is a #PangoOTTag representing the special script tag 'DFLT'. It is
returned as script tag by pango_ot_tag_from_script() if the requested script
is not found.
@Since: 1.18
@face:
@Returns:
@info:
@table_type:
@script_tag:
@script_index:
@Returns:
@info:
@table_type:
@script_index:
@language_tag:
@language_index:
@required_feature_index:
@Returns:
@info:
@table_type:
@feature_tag:
@script_index:
@language_index:
@feature_index:
@Returns:
@info:
@table_type:
@Returns:
@info:
@table_type:
@script_index:
@language_tag:
@Returns:
@info:
@table_type:
@tag:
@script_index:
@language_index:
@Returns:
@font:
@Returns:
@buffer:
@buffer:
@buffer:
@glyph:
@properties:
@cluster:
@buffer:
@rtl:
@buffer:
@zero_width_marks:
@buffer:
@glyphs:
@n_glyphs:
@buffer:
@glyphs:
@info:
@desc:
@Returns:
@info:
@Returns:
@info:
@script:
@language:
@Returns:
@info:
@desc:
@Returns:
@ruleset:
@table_type:
@feature_index:
@property_bit:
@ruleset:
@table_type:
@feature_tag:
@property_bit:
@Returns:
@ruleset:
@table_type:
@features:
@n_features:
@Returns:
@ruleset:
@n_gsub_features:
@n_gpos_features:
@Returns:
@ruleset:
@buffer:
@ruleset:
@buffer:
@desc:
@Returns:
@desc1:
@desc2:
@Returns:
@desc:
@desc:
@Returns:
@language:
@Returns:
@script:
@Returns:
@language_tag:
@Returns:
@script_tag:
@Returns: