📄 opentype.xml
字号:
<refentry id="pango-OpenType-Font-Handling"><refmeta><refentrytitle id="top_of_page">OpenType Font Handling</refentrytitle><manvolnum>3</manvolnum><refmiscinfo>PANGO Library</refmiscinfo></refmeta><refnamediv><refname>OpenType Font Handling</refname><refpurpose>Obtaining information from OpenType tables</refpurpose><!--[<xref linkend="desc" endterm="desc.title"/>]--></refnamediv><refsynopsisdiv id="synopsis"><title id="synopsis.title">Synopsis</title><synopsis>typedef <link linkend="PangoOTTag">PangoOTTag</link>; <link linkend="PangoOTInfo">PangoOTInfo</link>; <link linkend="PangoOTBuffer">PangoOTBuffer</link>; <link linkend="PangoOTGlyph">PangoOTGlyph</link>; <link linkend="PangoOTRuleset">PangoOTRuleset</link>;enum <link linkend="PangoOTTableType">PangoOTTableType</link>;#define <link linkend="PANGO-OT-ALL-GLYPHS:CAPS">PANGO_OT_ALL_GLYPHS</link>#define <link linkend="PANGO-OT-DEFAULT-LANGUAGE:CAPS">PANGO_OT_DEFAULT_LANGUAGE</link><link linkend="PangoOTInfo">PangoOTInfo</link>* <link linkend="pango-ot-info-get">pango_ot_info_get</link> (<link linkend="FT-Face">FT_Face</link> face);<link linkend="gboolean">gboolean</link> <link linkend="pango-ot-info-find-script">pango_ot_info_find_script</link> (<link linkend="PangoOTInfo">PangoOTInfo</link> *info, <link linkend="PangoOTTableType">PangoOTTableType</link> table_type, <link linkend="PangoOTTag">PangoOTTag</link> script_tag, <link linkend="guint">guint</link> *script_index);<link linkend="gboolean">gboolean</link> <link linkend="pango-ot-info-find-language">pango_ot_info_find_language</link> (<link linkend="PangoOTInfo">PangoOTInfo</link> *info, <link linkend="PangoOTTableType">PangoOTTableType</link> table_type, <link linkend="guint">guint</link> script_index, <link linkend="PangoOTTag">PangoOTTag</link> language_tag, <link linkend="guint">guint</link> *language_index, <link linkend="guint">guint</link> *required_feature_index);<link linkend="gboolean">gboolean</link> <link linkend="pango-ot-info-find-feature">pango_ot_info_find_feature</link> (<link linkend="PangoOTInfo">PangoOTInfo</link> *info, <link linkend="PangoOTTableType">PangoOTTableType</link> table_type, <link linkend="PangoOTTag">PangoOTTag</link> feature_tag, <link linkend="guint">guint</link> script_index, <link linkend="guint">guint</link> language_index, <link linkend="guint">guint</link> *feature_index);<link linkend="PangoOTTag">PangoOTTag</link>* <link linkend="pango-ot-info-list-scripts">pango_ot_info_list_scripts</link> (<link linkend="PangoOTInfo">PangoOTInfo</link> *info, <link linkend="PangoOTTableType">PangoOTTableType</link> table_type);<link linkend="PangoOTTag">PangoOTTag</link>* <link linkend="pango-ot-info-list-languages">pango_ot_info_list_languages</link> (<link linkend="PangoOTInfo">PangoOTInfo</link> *info, <link linkend="PangoOTTableType">PangoOTTableType</link> table_type, <link linkend="guint">guint</link> script_index, <link linkend="PangoOTTag">PangoOTTag</link> language_tag);<link linkend="PangoOTTag">PangoOTTag</link>* <link linkend="pango-ot-info-list-features">pango_ot_info_list_features</link> (<link linkend="PangoOTInfo">PangoOTInfo</link> *info, <link linkend="PangoOTTableType">PangoOTTableType</link> table_type, <link linkend="PangoOTTag">PangoOTTag</link> tag, <link linkend="guint">guint</link> script_index, <link linkend="guint">guint</link> language_index);<link linkend="PangoOTBuffer">PangoOTBuffer</link>* <link linkend="pango-ot-buffer-new">pango_ot_buffer_new</link> (<link linkend="PangoFcFont">PangoFcFont</link> *font);<link linkend="void">void</link> <link linkend="pango-ot-buffer-destroy">pango_ot_buffer_destroy</link> (<link linkend="PangoOTBuffer">PangoOTBuffer</link> *buffer);<link linkend="void">void</link> <link linkend="pango-ot-buffer-clear">pango_ot_buffer_clear</link> (<link linkend="PangoOTBuffer">PangoOTBuffer</link> *buffer);<link linkend="void">void</link> <link linkend="pango-ot-buffer-add-glyph">pango_ot_buffer_add_glyph</link> (<link linkend="PangoOTBuffer">PangoOTBuffer</link> *buffer, <link linkend="guint">guint</link> glyph, <link linkend="guint">guint</link> properties, <link linkend="guint">guint</link> cluster);<link linkend="void">void</link> <link linkend="pango-ot-buffer-set-rtl">pango_ot_buffer_set_rtl</link> (<link linkend="PangoOTBuffer">PangoOTBuffer</link> *buffer, <link linkend="gboolean">gboolean</link> rtl);<link linkend="void">void</link> <link linkend="pango-ot-buffer-set-zero-width-marks">pango_ot_buffer_set_zero_width_marks</link> (<link linkend="PangoOTBuffer">PangoOTBuffer</link> *buffer, <link linkend="gboolean">gboolean</link> zero_width_marks);<link linkend="void">void</link> <link linkend="pango-ot-buffer-get-glyphs">pango_ot_buffer_get_glyphs</link> (<link linkend="PangoOTBuffer">PangoOTBuffer</link> *buffer, <link linkend="PangoOTGlyph">PangoOTGlyph</link> **glyphs, <link linkend="int">int</link> *n_glyphs);<link linkend="void">void</link> <link linkend="pango-ot-buffer-output">pango_ot_buffer_output</link> (<link linkend="PangoOTBuffer">PangoOTBuffer</link> *buffer, <link linkend="PangoGlyphString">PangoGlyphString</link> *glyphs);<link linkend="PangoOTRuleset">PangoOTRuleset</link>* <link linkend="pango-ot-ruleset-new">pango_ot_ruleset_new</link> (<link linkend="PangoOTInfo">PangoOTInfo</link> *info);<link linkend="void">void</link> <link linkend="pango-ot-ruleset-add-feature">pango_ot_ruleset_add_feature</link> (<link linkend="PangoOTRuleset">PangoOTRuleset</link> *ruleset, <link linkend="PangoOTTableType">PangoOTTableType</link> table_type, <link linkend="guint">guint</link> feature_index, <link linkend="gulong">gulong</link> property_bit);<link linkend="void">void</link> <link linkend="pango-ot-ruleset-substitute">pango_ot_ruleset_substitute</link> (<link linkend="PangoOTRuleset">PangoOTRuleset</link> *ruleset, <link linkend="PangoOTBuffer">PangoOTBuffer</link> *buffer);<link linkend="void">void</link> <link linkend="pango-ot-ruleset-position">pango_ot_ruleset_position</link> (<link linkend="PangoOTRuleset">PangoOTRuleset</link> *ruleset, <link linkend="PangoOTBuffer">PangoOTBuffer</link> *buffer);</synopsis></refsynopsisdiv><refsect1 id="desc"><title id="desc.title">Description</title><para>Functions and macros in this section are used to implement the OpenType Layoutfeatures and algorithms. These are mostly useful when writing Fontconfig-basedshaping engines</para></refsect1><refsect1 id="details"><title id="details.title">Details</title><refsect2><title><anchor id="PangoOTTag" role="typedef"/>PangoOTTag</title><indexterm><primary>PangoOTTag</primary></indexterm><programlisting>typedef guint32 PangoOTTag;</programlisting><para>The <type>PangoOTTag</type> typedef is used to represent TrueType and OpenTypefour letter tags inside Pango. Use the <function><link linkend="FT-MAKE-TAG:CAPS"><function>FT_MAKE_TAG()</function></link></function> macrodefined in the FreeType2 header <filename>freetype/freetype.h</filename> to create <type>PangoOTTag</type>s manually.</para></refsect2><refsect2><title><anchor id="PangoOTInfo" role="struct"/>PangoOTInfo</title><indexterm><primary>PangoOTInfo</primary></indexterm><programlisting>typedef struct _PangoOTInfo PangoOTInfo;</programlisting><para>The <link linkend="PangoOTInfo"><type>PangoOTInfo</type></link> struct contains the various tables associated with an OpenType font. It contains only private fields andshould only be accessed via the <function>pango_ot_info_*</function> functionswhich are documented below. To obtain a <link linkend="PangoOTInfo"><type>PangoOTInfo</type></link>,use <link linkend="pango-ot-info-new"><function>pango_ot_info_new()</function></link>.</para></refsect2><refsect2><title><anchor id="PangoOTBuffer" role="struct"/>PangoOTBuffer</title><indexterm><primary>PangoOTBuffer</primary></indexterm><programlisting>typedef struct _PangoOTBuffer PangoOTBuffer;</programlisting><para>The <link linkend="PangoOTBuffer"><type>PangoOTBuffer</type></link> structure is used to store strings of glyphs associatedwith a <link linkend="PangoFcFont"><type>PangoFcFont</type></link>, suitable for OpenType layout processing. It containsonly private fields and should only be accessed via the<function>pango_ot_buffer_*</function> functions which are documented below.To obtain a <link linkend="PangoOTBuffer"><type>PangoOTBuffer</type></link>, use <link linkend="pango-ot-buffer-new"><function>pango_ot_buffer_new()</function></link>.</para></refsect2><refsect2><title><anchor id="PangoOTGlyph" role="struct"/>PangoOTGlyph</title><indexterm><primary>PangoOTGlyph</primary></indexterm><programlisting>typedef struct { guint glyph; guint properties; guint cluster; gushort component; gushort ligID; gushort property_cache; /* Internal */} PangoOTGlyph;</programlisting><para>The <link linkend="PangoOTGlyph"><type>PangoOTGlyph</type></link> structure represents a single glyph together withinformation used for OpenType layout processing of the glyph.It contains the following fields.</para><variablelist role="struct"><varlistentry><term><link linkend="guint">guint</link> <structfield>glyph</structfield>;</term><listitem><simpara>the glyph itself.</simpara></listitem></varlistentry><varlistentry><term><link linkend="guint">guint</link> <structfield>properties</structfield>;</term><listitem><simpara>the properties value, identifying which features should be applied on this glyph. See <link linkend="pango-ruleset-add-feature"><function>pango_ruleset_add_feature()</function></link>.</simpara></listitem></varlistentry><varlistentry><term><link linkend="guint">guint</link> <structfield>cluster</structfield>;</term><listitem><simpara>the cluster that this glyph belongs to.</simpara></listitem></varlistentry><varlistentry><term><link linkend="gushort">gushort</link> <structfield>component</structfield>;</term><listitem><simpara>a component value, set by the OpenType layout engine.</simpara></listitem></varlistentry><varlistentry><term><link linkend="gushort">gushort</link> <structfield>ligID</structfield>;</term><listitem><simpara>a ligature index value, set by the OpenType layout engine.</simpara></listitem></varlistentry><varlistentry><term><link linkend="gushort">gushort</link> <structfield>property_cache</structfield>;</term><listitem><simpara>for internal use.</simpara></listitem></varlistentry></variablelist></refsect2><refsect2><title><anchor id="PangoOTRuleset" role="struct"/>PangoOTRuleset</title><indexterm><primary>PangoOTRuleset</primary></indexterm><programlisting>typedef struct _PangoOTRuleset PangoOTRuleset;</programlisting><para>The <link linkend="PangoOTRuleSet"><type>PangoOTRuleSet</type></link> structure holds aset of features selected from the tables in an OpenType font.(A feature is an operation such as adjusting glyph positioningthat should be applied to a text feature such as a certaintype of accent.) A <link linkend="PangoOTRuleSet"><type>PangoOTRuleSet</type></link>is created with <link linkend="pango-ot-ruleset-new"><function>pango_ot_ruleset_new()</function></link>, features are addedto it with <link linkend="pango-ot-ruleset-add-feature"><function>pango_ot_ruleset_add_feature()</function></link>, then it isapplied to a <link linkend="PangoGlyphString"><type>PangoGlyphString</type></link> with <link linkend="pango-ot-ruleset-shape"><function>pango_ot_ruleset_shape()</function></link>.</para></refsect2><refsect2><title><anchor id="PangoOTTableType" role="enum"/>enum PangoOTTableType</title><indexterm><primary>PangoOTTableType</primary></indexterm><programlisting>typedef enum{ PANGO_OT_TABLE_GSUB, PANGO_OT_TABLE_GPOS} PangoOTTableType;</programlisting><para>The <type>PangoOTTableType</type> enumeration values are used toidentify the various OpenType tables in the<function>pango_ot_info_*</function> functions.</para><variablelist role="enum"><varlistentry><term><anchor id="PANGO-OT-TABLE-GSUB:CAPS" role="constant"/><literal>PANGO_OT_TABLE_GSUB</literal></term><listitem><simpara>The GSUB table.</simpara></listitem></varlistentry><varlistentry><term><anchor id="PANGO-OT-TABLE-GPOS:CAPS" role="constant"/><literal>PANGO_OT_TABLE_GPOS</literal></term><listitem><simpara>The GPOS table.</simpara></listitem></varlistentry></variablelist></refsect2><refsect2>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -