## PangoEngineShape PangoEngineShape — Rendering-system dependent script engines |

## Stability Level

Unstable, unless otherwise indicated

## Functions

#define | PANGO_ENGINE_SHAPE_DEFINE_TYPE()

## Types and Values

| PangoEngineShape
struct | PangoEngineShapeClass
#define | PANGO_ENGINE_TYPE_SHAPE

## Object Hierarchy

        GObject
        ╰── PangoEngine
            ╰── PangoEngineShape

## Description

The shape engines are rendering-system dependent engines that convert character strings into glyph strings. These engines are used in `pango_shape()`.

## Functions

### PANGO_ENGINE_SHAPE_DEFINE_TYPE()

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

`PANGO_ENGINE_SHAPE_DEFINE_TYPE` has been deprecated since version 1.38 and should not be used in newly-written code.

Outputs the necessary code for GObject type registration for a PangoEngineShape 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);

#### Parameters

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`. | [nullable]
instance_init | Instance initialization function for the new type, or `NULL`. | [nullable]

## Types and Values

### PangoEngineShape

    typedef struct _PangoEngineShape PangoEngineShape;

`PangoEngineShape` has been deprecated since version 1.38 and should not be used in newly-written code.

The PangoEngineShape class is implemented by engines that customize the rendering-system dependent part of the Pango pipeline for a particular script or language. A PangoEngineShape implementation is then specific to both a particular rendering system or group of rendering systems and to a particular script. For instance, there is one PangoEngineShape implementation to handle shaping Arabic for Fontconfig-based backends.

### struct PangoEngineShapeClass

    struct PangoEngineShapeClass {
      void (*script_shape) (PangoEngineShape    *engine,
    			PangoFont           *font,
    			const char          *item_text,
    			unsigned int         item_length,
    			const PangoAnalysis *analysis,
    			PangoGlyphString    *glyphs,
    			const char          *paragraph_text,
    			unsigned int         paragraph_length);
      PangoCoverageLevel (*covers)   (PangoEngineShape *engine,
    				  PangoFont        *font,
    				  PangoLanguage    *language,
    				  gunichar          wc);
    };

`PangoEngineShapeClass` has been deprecated since version 1.38 and should not be used in newly-written code.

Class structure for PangoEngineShape

#### Members

`script_shape` () | Given a font, a piece of text, and a PangoAnalysis structure, converts characters to glyphs and positions the resulting glyphs. The results are stored in the PangoGlyphString that is passed in. (The implementation should resize it appropriately using `pango_glyph_string_set_size()`). All fields of the `log_clusters` and `glyphs` array must be filled in, with the exception that Pango will automatically generate `glyphs->glyphs[i].attr.is_cluster_start` using the `log_clusters` array. Each input character must occur in one of the output logical clusters; if no rendering is desired for a character, this may involve inserting glyphs with the PangoGlyph ID PANGO_GLYPH_EMPTY, which is guaranteed never to render. If the shaping fails for any reason, the shaper should return with an empty (zero-size) glyph string. If the shaper has not set the size on the glyph string yet, simply returning signals the failure too. |
`covers` () | Returns the characters that this engine can cover with a given font for a given language. If not overridden, the default implementation simply returns the coverage information for the font itself unmodified. |

### PANGO_ENGINE_TYPE_SHAPE

    #define PANGO_ENGINE_TYPE_SHAPE "PangoEngineShape"

`PANGO_ENGINE_TYPE_SHAPE` has been deprecated since version 1.38 and should not be used in newly-written code.

A string constant defining the engine type for shaping engines. These engines derive from PangoEngineShape.