Git init
[external/pango1.0.git] / docs / xml / pango-engine-lang.xml
1 <refentry id="PangoEngineLang">
2 <refmeta>
3 <refentrytitle role="top_of_page" id="PangoEngineLang.top_of_page">PangoEngineLang</refentrytitle>
4 <manvolnum>3</manvolnum>
5 <refmiscinfo>PANGO Library</refmiscinfo>
6 </refmeta>
7
8 <refnamediv>
9 <refname>PangoEngineLang</refname>
10 <refpurpose>Rendering-system independent script engines</refpurpose>
11 </refnamediv>
12 <refsect1 id="PangoEngineLang.stability-level">
13 <title>Stability Level</title>
14 Unstable, unless otherwise indicated
15 </refsect1>
16
17 <refsynopsisdiv id="PangoEngineLang.synopsis" role="synopsis">
18 <title role="synopsis.title">Synopsis</title>
19
20 <synopsis>
21                     <link linkend="PangoEngineLang-struct">PangoEngineLang</link>;
22                     <link linkend="PangoEngineLangClass">PangoEngineLangClass</link>;
23 #define             <link linkend="PANGO-ENGINE-TYPE-LANG--CAPS">PANGO_ENGINE_TYPE_LANG</link>
24 #define             <link linkend="PANGO-ENGINE-LANG-DEFINE-TYPE--CAPS">PANGO_ENGINE_LANG_DEFINE_TYPE</link>       (name, prefix, class_init, instance_init)
25 </synopsis>
26 </refsynopsisdiv>
27
28 <refsect1 id="PangoEngineLang.object-hierarchy" role="object_hierarchy">
29 <title role="object_hierarchy.title">Object Hierarchy</title>
30 <synopsis>
31   <link linkend="GObject">GObject</link>
32    +----<link linkend="PangoEngine">PangoEngine</link>
33          +----PangoEngineLang
34 </synopsis>
35 </refsect1>
36
37
38
39
40
41
42
43
44 <refsect1 id="PangoEngineLang.description" role="desc">
45 <title role="desc.title">Description</title>
46 <para>
47 The <firstterm>language engines</firstterm> are rendering-system independent
48 engines that determine line, word, and character breaks for character strings.
49 These engines are used in <link linkend="pango-break"><function>pango_break()</function></link>.
50 </para>
51 </refsect1>
52
53 <refsect1 id="PangoEngineLang.details" role="details">
54 <title role="details.title">Details</title>
55 <refsect2 id="PangoEngineLang-struct" role="struct">
56 <title>PangoEngineLang</title>
57 <indexterm zone="PangoEngineLang-struct"><primary sortas="PangoEngineLang">PangoEngineLang</primary></indexterm><programlisting>typedef struct _PangoEngineLang PangoEngineLang;</programlisting>
58 <para>
59 The <link linkend="PangoEngineLang"><type>PangoEngineLang</type></link> class is implemented by engines that
60 customize the rendering-system independent part of the
61 Pango pipeline for a particular script or language. For
62 instance, a custom <link linkend="PangoEngineLang"><type>PangoEngineLang</type></link> could be provided for
63 Thai to implement the dictionary-based word boundary
64 lookups needed for that language.</para>
65 <para>
66 </para></refsect2>
67 <refsect2 id="PangoEngineLangClass" role="struct">
68 <title>PangoEngineLangClass</title>
69 <indexterm zone="PangoEngineLangClass"><primary sortas="PangoEngineLangClass">PangoEngineLangClass</primary></indexterm><programlisting>typedef struct {
70   void (*script_break) (PangoEngineLang *engine,
71                         const char    *text,
72                         int            len,
73                         PangoAnalysis *analysis,
74                         PangoLogAttr  *attrs,
75                         int            attrs_len);
76 } PangoEngineLangClass;
77 </programlisting>
78 <para>
79 Class structure for <link linkend="PangoEngineLang"><type>PangoEngineLang</type></link></para>
80 <para>
81 </para><variablelist role="struct">
82 <varlistentry>
83 <term><structfield>script_break</structfield>&#160;()</term>
84 <listitem><simpara> Provides a custom implementation of <link linkend="pango-break"><function>pango_break()</function></link>.
85 If <link linkend="NULL--CAPS"><literal>NULL</literal></link>, <link linkend="pango-default-break"><function>pango_default_break()</function></link> is used instead. If not <link linkend="NULL--CAPS"><literal>NULL</literal></link>, for
86 Pango versions before 1.16 (module interface version before 1.6.0),
87 this was called instead of <link linkend="pango-default-break"><function>pango_default_break()</function></link>, but in newer versions,
88 <link linkend="pango-default-break"><function>pango_default_break()</function></link> is always called and this is called after that to
89 allow tailoring the breaking results.
90 </simpara></listitem>
91 </varlistentry>
92 </variablelist></refsect2>
93 <refsect2 id="PANGO-ENGINE-TYPE-LANG--CAPS" role="macro">
94 <title>PANGO_ENGINE_TYPE_LANG</title>
95 <indexterm zone="PANGO-ENGINE-TYPE-LANG--CAPS"><primary sortas="PANGO_ENGINE_TYPE_LANG">PANGO_ENGINE_TYPE_LANG</primary></indexterm><programlisting>#define PANGO_ENGINE_TYPE_LANG "PangoEngineLang"
96 </programlisting>
97 <para>
98 A string constant defining the engine type
99 for language engines.
100 These engines derive from <link linkend="PangoEngineLang"><type>PangoEngineLang</type></link>.
101 </para></refsect2>
102 <refsect2 id="PANGO-ENGINE-LANG-DEFINE-TYPE--CAPS" role="macro">
103 <title>PANGO_ENGINE_LANG_DEFINE_TYPE()</title>
104 <indexterm zone="PANGO-ENGINE-LANG-DEFINE-TYPE--CAPS"><primary sortas="PANGO_ENGINE_LANG_DEFINE_TYPE">PANGO_ENGINE_LANG_DEFINE_TYPE</primary></indexterm><programlisting>#define             PANGO_ENGINE_LANG_DEFINE_TYPE(name, prefix, class_init, instance_init)</programlisting>
105 <para>
106 Outputs the necessary code for GObject type registration for a
107 <link linkend="PangoEngineLang"><type>PangoEngineLang</type></link> class defined in a module. Two static symbols
108 are defined.
109 </para>
110 <para>
111 <programlisting>
112  static GType <replaceable>prefix</replaceable>_type;
113  static void <replaceable>prefix</replaceable>_register_type (GTypeModule module);
114 </programlisting>
115 </para>
116 <para>
117 The <function><replaceable>prefix</replaceable><link linkend="register-type"><function>_register_type()</function></link></function>
118 function should be called in your <link linkend="script-engine-init"><function>script_engine_init()</function></link> function for
119 each type that your module implements, and then your <link linkend="script-engine-create"><function>script_engine_create()</function></link>
120 function can create instances of the object as follows:
121 </para>
122 <para>
123 <informalexample><programlisting>
124  PangoEngine *engine = g_object_new (<replaceable>prefix</replaceable>_type, NULL);
125 </programlisting></informalexample></para>
126 <para>
127 </para><variablelist role="params">
128 <varlistentry><term><parameter>name</parameter>&#160;:</term>
129 <listitem><simpara> Name of the the type to register (for example:, <literal>ArabicEngineFc</literal>
130 </simpara></listitem></varlistentry>
131 <varlistentry><term><parameter>prefix</parameter>&#160;:</term>
132 <listitem><simpara> Prefix for symbols that will be defined (for example:, <literal>arabic_engine_fc</literal>
133 </simpara></listitem></varlistentry>
134 <varlistentry><term><parameter>class_init</parameter>&#160;:</term>
135 <listitem><simpara> Class initialization function for the new type, or <link linkend="NULL--CAPS"><literal>NULL</literal></link>
136 </simpara></listitem></varlistentry>
137 <varlistentry><term><parameter>instance_init</parameter>&#160;:</term>
138 <listitem><simpara> Instance initialization function for the new type, or <link linkend="NULL--CAPS"><literal>NULL</literal></link>
139 </simpara></listitem></varlistentry>
140 </variablelist></refsect2>
141
142 </refsect1>
143
144
145
146
147 </refentry>