PangoEngineShape

PangoEngineShape — Rendering-system dependent script engines

Synopsis




struct      PangoEngineShape;
struct      PangoEngineShapeClass;
#define     PANGO_ENGINE_TYPE_SHAPE
#define     PANGO_ENGINE_SHAPE_DEFINE_TYPE  (name, prefix, class_init, instance_init)


Object Hierarchy


  GObject
   +----PangoEngine
         +----PangoEngineShape

Description

Details

struct PangoEngineShape

struct PangoEngineShape;

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 handling shaping Arabic for Fontconfig-based backends.


struct PangoEngineShapeClass

struct PangoEngineShapeClass {

  void (*script_shape) (PangoEngineShape *engine,
			PangoFont        *font,
			const char       *text,
			int               length,
			PangoAnalysis    *analysis,
			PangoGlyphString *glyphs);
  PangoCoverageLevel (*covers)   (PangoEngineShape *engine,
				  PangoFont        *font,
				  PangoLanguage    *language,
				  gunichar          wc);
};

Class structure for PangoEngineShape

void (*script_shape) (PangoEngineShape *engine, PangoFont *font, const char *text, int length, PangoAnalysis *analysis, PangoGlyphString *glyphs) 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 0, which is guaranteed never to render.
PangoCoverageLevel (*covers) (PangoEngineShape *engine, PangoFont *font, PangoLanguage *language, gunichar wc) 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"

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


PANGO_ENGINE_SHAPE_DEFINE_TYPE()

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

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:

 PangoEngine *engine = g_object_new (prefix_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