|  |  |  | Pango Reference Manual |  | 
|---|---|---|---|---|
typedef PangoOTTag; PangoOTInfo; PangoOTBuffer; PangoOTGlyph; PangoOTRuleset; enum PangoOTTableType; #define PANGO_OT_ALL_GLYPHS #define PANGO_OT_DEFAULT_LANGUAGE 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()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.
#define PANGO_OT_ALL_GLYPHS ((guint)0xFFFF)
This is used as the property bit in pango_ot_ruleset_add_feature() when a
feature should be applied to all glyphs.
#define PANGO_OT_DEFAULT_LANGUAGE ((guint)0xFFFF)
This is used as the language index in pango_ot_info_find_feature() when a
the default language system of the script is desired.
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 asface. | 
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 : | TRUEif 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 : | TRUEif 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 PANGO_OT_DEFAULT_LANGUAGEto use the default language of the script. | 
| feature_index: | location to store the index of the feature, or NULL. | 
| Returns : | TRUEif 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 PANGO_OT_DEFAULT_LANGUAGE, 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: | TRUEfor 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: | TRUEif 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, or PANGO_OT_ALL_GLYPHSif it should be applied to all glyphs. | 
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