![]() |
![]() |
![]() |
Pango Reference Manual | ![]() |
---|---|---|---|---|
typedef PangoOTTag; PangoOTInfo; PangoOTBuffer; PangoOTGlyph; PangoOTRuleset; enum PangoOTTableType; PangoOTInfo* pango_ot_info_get (FT_Face face); gboolean pango_ot_info_find_script (PangoOTInfo *info, PangoOTTableType table_type, PangoOTTag script_tag, guint *script_index); gboolean pango_ot_info_find_language (PangoOTInfo *info, PangoOTTableType table_type, guint script_index, PangoOTTag language_tag, guint *language_index, guint *required_feature_index); gboolean pango_ot_info_find_feature (PangoOTInfo *info, PangoOTTableType table_type, PangoOTTag feature_tag, guint script_index, guint language_index, guint *feature_index); PangoOTTag* pango_ot_info_list_scripts (PangoOTInfo *info, PangoOTTableType table_type); PangoOTTag* pango_ot_info_list_languages (PangoOTInfo *info, PangoOTTableType table_type, guint script_index, PangoOTTag language_tag); PangoOTTag* pango_ot_info_list_features (PangoOTInfo *info, PangoOTTableType table_type, PangoOTTag tag, guint script_index, guint language_index); PangoOTBuffer* pango_ot_buffer_new (PangoFcFont *font); void pango_ot_buffer_destroy (PangoOTBuffer *buffer); void pango_ot_buffer_clear (PangoOTBuffer *buffer); void pango_ot_buffer_add_glyph (PangoOTBuffer *buffer, guint glyph, guint properties, guint cluster); void pango_ot_buffer_set_rtl (PangoOTBuffer *buffer, gboolean rtl); void pango_ot_buffer_set_zero_width_marks (PangoOTBuffer *buffer, gboolean zero_width_marks); void pango_ot_buffer_get_glyphs (PangoOTBuffer *buffer, PangoOTGlyph **glyphs, int *n_glyphs); void pango_ot_buffer_output (PangoOTBuffer *buffer, PangoGlyphString *glyphs); PangoOTRuleset* pango_ot_ruleset_new (PangoOTInfo *info); void pango_ot_ruleset_add_feature (PangoOTRuleset *ruleset, PangoOTTableType table_type, guint feature_index, gulong property_bit); void pango_ot_ruleset_substitute (PangoOTRuleset *ruleset, PangoOTBuffer *buffer); void pango_ot_ruleset_position (PangoOTRuleset *ruleset, PangoOTBuffer *buffer);
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
typedef guint32 PangoOTTag;
The PangoOTTag typedef is used to represent TrueType and OpenType four letter tags inside Pango. Use the FT_MAKE_TAG() macro defined in the FreeType2 header freetype/freetype.h to create PangoOTTags manually.
typedef struct _PangoOTInfo PangoOTInfo;
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().
typedef struct _PangoOTBuffer PangoOTBuffer;
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().
typedef struct { guint glyph; guint properties; guint cluster; gushort component; gushort ligID; gushort property_cache; /* Internal */ } PangoOTGlyph;
The PangoOTGlyph structure represents a single glyph together with information used for OpenType layout processing of the glyph. It contains the following fields.
guint glyph; | the glyph itself. |
guint properties; | the properties value, identifying which features should be applied on this glyph. See pango_ruleset_add_feature(). |
guint cluster; | the cluster that this glyph belongs to. |
gushort component; | a component value, set by the OpenType layout engine. |
gushort ligID; | a ligature index value, set by the OpenType layout engine. |
gushort property_cache; | for internal use. |
typedef struct _PangoOTRuleset PangoOTRuleset;
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 addded to it with pango_ot_ruleset_add_feature(), then it is applied to a PangoGlyphString with pango_ot_ruleset_shape().
typedef enum { PANGO_OT_TABLE_GSUB, PANGO_OT_TABLE_GPOS } PangoOTTableType;
The PangoOTTableType enumeration values are used to identify the various OpenType tables in the pango_ot_info_* functions.
PangoOTInfo* pango_ot_info_get (FT_Face face);
Returns the PangoOTInfo structure for the given FreeType font.
face : | a FT_Face. |
Returns : | the PangoOTInfo for face. This object will have the same lifetime as face. |
Since 1.2
gboolean pango_ot_info_find_script (PangoOTInfo *info, PangoOTTableType table_type, PangoOTTag script_tag, guint *script_index);
Finds the index of a script.
info : | a PangoOTInfo. |
table_type : | the table type to obtain information about. |
script_tag : | the tag of the script to find. |
script_index : | location to store the index of the script, or NULL. |
Returns : | TRUE if the script was found. |
gboolean pango_ot_info_find_language (PangoOTInfo *info, PangoOTTableType table_type, guint script_index, PangoOTTag language_tag, guint *language_index, guint *required_feature_index);
Finds the index of a language and its required feature index.
info : | a PangoOTInfo. |
table_type : | the table type to obtain information about. |
script_index : | the index of the script whose languages are searched. |
language_tag : | the tag of the language to find. |
language_index : | location to store the index of the language, or NULL. |
required_feature_index : | location to store the required feature index of the language, or NULL. |
Returns : | TRUE if the language was found. |
gboolean pango_ot_info_find_feature (PangoOTInfo *info, PangoOTTableType table_type, PangoOTTag feature_tag, guint script_index, guint language_index, guint *feature_index);
Finds the index of a feature.
info : | a PangoOTInfo. |
table_type : | the table type to obtain information about. |
feature_tag : | the tag of the feature to find. |
script_index : | the index of the script. |
language_index : | the index of the language whose features are searched, or 0xffff to use the default language of the script. |
feature_index : | location to store the index of the feature, or NULL. |
Returns : | TRUE if the feature was found. |
PangoOTTag* pango_ot_info_list_scripts (PangoOTInfo *info, PangoOTTableType table_type);
Obtains the list of available scripts.
info : | a PangoOTInfo. |
table_type : | the table type to obtain information about. |
Returns : | a newly-allocated array containing the tags of the available scripts. |
PangoOTTag* pango_ot_info_list_languages (PangoOTInfo *info, PangoOTTableType table_type, guint script_index, PangoOTTag language_tag);
Obtains the list of available languages for a given script.
info : | a PangoOTInfo. |
table_type : | the table type to obtain information about. |
script_index : | the index of the script to list languages for. |
language_tag : | unused parameter. |
Returns : | a newly-allocated array containing the tags of the available languages. |
PangoOTTag* pango_ot_info_list_features (PangoOTInfo *info, PangoOTTableType table_type, PangoOTTag tag, guint script_index, guint language_index);
Obtains the list of features for the given language of the given script.
info : | a PangoOTInfo. |
table_type : | the table type to obtain information about. |
tag : | unused parameter. |
script_index : | the index of the script to obtain information about. |
language_index : | the indes of the language to list features for, or 0xffff, to list features for the default language of the script. |
Returns : | a newly-allocated array containing the tags of the available features. |
PangoOTBuffer* pango_ot_buffer_new (PangoFcFont *font);
Creates a new PangoOTBuffer for the given OpenType font.
font : | a PangoFcFont |
Returns : | the newly allocated PangoOTBuffer, which should be freed with pango_ot_buffer_destroy(). |
Since 1.4
void pango_ot_buffer_destroy (PangoOTBuffer *buffer);
Destroys a PangoOTBuffer and free all associated memory.
buffer : | a PangoOTBuffer |
Since 1.4
void pango_ot_buffer_clear (PangoOTBuffer *buffer);
Empties a PangoOTBuffer, make it ready to add glyphs to.
buffer : | a PangoOTBuffer |
Since 1.4
void pango_ot_buffer_add_glyph (PangoOTBuffer *buffer, guint glyph, guint properties, guint cluster);
Appends a glyph to a PangoOTBuffer, with properties identifying which features should be applied on this glyph. See pango_ruleset_add_feature().
buffer : | a PangoOTBuffer |
glyph : | the glyph index to add, like a PangoGlyph |
properties : | the glyph properties |
cluster : | the cluster that this glyph belongs to |
Since 1.4
void pango_ot_buffer_set_rtl (PangoOTBuffer *buffer, gboolean rtl);
Sets whether glyphs will be rendered right-to-left. This setting is needed for proper horizontal positioning of right-to-left scripts.
buffer : | a PangoOTBuffer |
rtl : | TRUE for right-to-left text |
Since 1.4
void pango_ot_buffer_set_zero_width_marks (PangoOTBuffer *buffer, gboolean zero_width_marks);
Sets whether characters with a mark class should be forced to zero width. This setting is needed for proper positioning of Arabic accents, but will produce incorrect results with standard OpenType indic fonts.
buffer : | a PangoOTBuffer |
zero_width_marks : | TRUE if characters with a mark class should be forced to zero width. |
Since 1.6
void pango_ot_buffer_get_glyphs (PangoOTBuffer *buffer, PangoOTGlyph **glyphs, int *n_glyphs);
Gets the glyph array contained in a PangoOTBuffer. The glyphs are owned by the buffer and should not be freed, and are only valid as long as buffer is not modified.
buffer : | a PangoOTBuffer |
glyphs : | location to store the array of glyphs, or NULL |
n_glyphs : | location to store the number of glyphs, or NULL |
Since 1.4
void pango_ot_buffer_output (PangoOTBuffer *buffer, PangoGlyphString *glyphs);
Exports the glyphs in a PangoOTBuffer into a PangoGlyphString. This is typically used after the OpenType layout processing is over, to convert the resulting glyphs into a generic Pango glyph string.
buffer : | a PangoOTBuffer |
glyphs : | a PangoGlyphString |
Since 1.4
PangoOTRuleset* pango_ot_ruleset_new (PangoOTInfo *info);
Creates a new PangoOTRuleset for the given OpenType info.
info : | a PangoOTInfo. |
Returns : | the newly allocated PangoOTRuleset, which should be freed with g_object_unref(). |
void pango_ot_ruleset_add_feature (PangoOTRuleset *ruleset, PangoOTTableType table_type, guint feature_index, gulong property_bit);
Adds a feature to the ruleset.
ruleset : | a PangoOTRuleset. |
table_type : | the table type to add a feature to. |
feature_index : | the index of the feature to add. |
property_bit : | the property bit to use for this feature. Used to identify the glyphs that this feature should be applied to. |
void pango_ot_ruleset_substitute (PangoOTRuleset *ruleset, PangoOTBuffer *buffer);
Performs the OpenType GSUB substitution on buffer using the features in ruleset
ruleset : | a PangoOTRuleset. |
buffer : | a PangoOTBuffer. |
Since 1.4
void pango_ot_ruleset_position (PangoOTRuleset *ruleset, PangoOTBuffer *buffer);
Performs the OpenType GPOS positionoing on buffer using the features in ruleset
ruleset : | a PangoOTRuleset. |
buffer : | a PangoOTBuffer. |
Since 1.4