1
<refentry id="PangoEngineLang">
3
<refentrytitle role="top_of_page" id="PangoEngineLang.top_of_page">PangoEngineLang</refentrytitle>
4
<manvolnum>3</manvolnum>
5
<refmiscinfo>PANGO Library</refmiscinfo>
9
<refname>PangoEngineLang</refname>
10
<refpurpose>Rendering-system independent script engines</refpurpose>
12
<refsect1 id="PangoEngineLang.stability-level">
13
<title>Stability Level</title>
14
Unstable, unless otherwise indicated
17
<refsynopsisdiv id="PangoEngineLang.synopsis" role="synopsis">
18
<title role="synopsis.title">Synopsis</title>
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)
28
<refsect1 id="PangoEngineLang.object-hierarchy" role="object_hierarchy">
29
<title role="object_hierarchy.title">Object Hierarchy</title>
31
<link linkend="GObject">GObject</link>
32
+----<link linkend="PangoEngine">PangoEngine</link>
44
<refsect1 id="PangoEngineLang.description" role="desc">
45
<title role="desc.title">Description</title>
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>.
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>
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>
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,
73
PangoAnalysis *analysis,
76
} PangoEngineLangClass;
79
Class structure for <link linkend="PangoEngineLang"><type>PangoEngineLang</type></link></para>
81
</para><variablelist role="struct">
83
<term><structfield>script_break</structfield> ()</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.
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"
98
A string constant defining the engine type
100
These engines derive from <link linkend="PangoEngineLang"><type>PangoEngineLang</type></link>.
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>
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
112
static GType <replaceable>prefix</replaceable>_type;
113
static void <replaceable>prefix</replaceable>_register_type (GTypeModule module);
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:
123
<informalexample><programlisting>
124
PangoEngine *engine = g_object_new (<replaceable>prefix</replaceable>_type, NULL);
125
</programlisting></informalexample></para>
127
</para><variablelist role="params">
128
<varlistentry><term><parameter>name</parameter> :</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> :</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> :</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> :</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>