## PangoEngineLang

PangoEngineLang — Rendering-system independent script engines

## Stability Level

Unstable, unless otherwise indicated

## Synopsis

                        PangoEngineLang;
    struct              PangoEngineLangClass;
    #define             PANGO_ENGINE_TYPE_LANG
    #define             PANGO_ENGINE_LANG_DEFINE_TYPE       (name,
                                                             prefix,
                                                             class_init,
                                                             instance_init)

## Object Hierarchy

      GObject
       +----PangoEngine
             +----PangoEngineLang

## Description

The language engines are rendering-system independent engines that determine line, word, and character breaks for character strings. These engines are used in `pango_break()`.

## Details

### PangoEngineLang

    typedef struct _PangoEngineLang PangoEngineLang;

The PangoEngineLang class is implemented by engines that customize the rendering-system independent part of the Pango pipeline for a particular script or language. For instance, a custom PangoEngineLang could be provided for Thai to implement the dictionary-based word boundary lookups needed for that language.

### struct PangoEngineLangClass

    struct PangoEngineLangClass {
      void (*script_break) (PangoEngineLang *engine,
    			const char    *text,
    			int            len,
    			PangoAnalysis *analysis,
    			PangoLogAttr  *attrs,
    			int            attrs_len);
    };

Class structure for PangoEngineLang

`script_break` () | Provides a custom implementation of `pango_break()`. If `NULL`, `pango_default_break()` is used instead. If not `NULL`, for Pango versions before 1.16 (module interface version before 1.6.0), this was called instead of `pango_default_break()`, but in newer versions, `pango_default_break()` is always called and this is called after that to allow tailoring the breaking results.

### PANGO_ENGINE_TYPE_LANG

    #define PANGO_ENGINE_TYPE_LANG "PangoEngineLang"

A string constant defining the engine type for language engines. These engines derive from PangoEngineLang.

### PANGO_ENGINE_LANG_DEFINE_TYPE()

    #define             PANGO_ENGINE_LANG_DEFINE_TYPE(name, prefix, class_init, instance_init)

Outputs the necessary code for GObject type registration for a PangoEngineLang class defined in a module. Two static symbols are defined.

     static GType prefix_type;
     static void prefix_register_type (GTypeModule module);

The ``prefix``_register_type()`` function should be called in your `script_engine_init()` function for each type that your module implements, and then your `script_engine_create()` function can create instances of the object as follows:

    1
    PangoEngine *engine = g_object_new (<em class="replaceable"><code>prefix</code></em>_type, NULL);

`name` : | Name of the the type to register (for example:, `ArabicEngineFc`
`prefix` : | Prefix for symbols that will be defined (for example:, `arabic_engine_fc`
`class_init` : | Class initialization function for the new type, or `NULL`
`instance_init` : | Instance initialization function for the new type, or `NULL`