Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Search  

IndicOpenTypeLayoutEngine Class Reference

This class implements OpenType layout for Indic OpenType fonts, as specified by Microsoft in "Creating and Supporting OpenType Fonts for Indic Scripts" (http://www.microsoft.com/typography/otspec/indicot/default.htm). More...

#include <IndicLayoutEngine.h>

Inheritance diagram for IndicOpenTypeLayoutEngine::

OpenTypeLayoutEngine LayoutEngine UObject UMemory List of all members.

Public Methods

 IndicOpenTypeLayoutEngine (const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, const GlyphSubstitutionTableHeader *gsubTable)
 This is the main constructor. More...

 IndicOpenTypeLayoutEngine (const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode)
 This constructor is used when the font requires a "canned" GSUB table which can't be known until after this constructor has been invoked. More...

virtual ~IndicOpenTypeLayoutEngine ()
 The destructor, virtual for correct polymorphic invocation. More...

virtual UClassID getDynamicClassID () const
 ICU "poor man's RTTI", returns a UClassID for the actual class. More...


Static Public Methods

UClassID getStaticClassID ()
 ICU "poor man's RTTI", returns a UClassID for this class. More...


Protected Methods

virtual le_int32 characterProcessing (const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft, LEUnicode *&outChars, le_int32 *&charIndices, const LETag **&featureTags, LEErrorCode &success)
 This method does Indic OpenType character processing. More...

virtual le_int32 glyphProcessing (const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft, const LETag **&featureTags, LEGlyphID *&glyphs, le_int32 *&charIndices, LEErrorCode &success)
 This method does character to glyph mapping, applies the GSUB table and applies any post GSUB fixups for left matras. More...


Private Attributes

MPreFixupsfMPreFixups

Static Private Attributes

const char fgClassID
 The address of this static class variable serves as this class's ID for ICU "poor man's RTTI". More...


Detailed Description

This class implements OpenType layout for Indic OpenType fonts, as specified by Microsoft in "Creating and Supporting OpenType Fonts for Indic Scripts" (http://www.microsoft.com/typography/otspec/indicot/default.htm).

This class overrides the characterProcessing method to do Indic character processing and reordering, and the glyphProcessing method to implement post-GSUB processing for left matras. (See the MS spec. for more details)

Internal:
For internal use only.

Definition at line 39 of file IndicLayoutEngine.h.


Constructor & Destructor Documentation

IndicOpenTypeLayoutEngine::IndicOpenTypeLayoutEngine const LEFontInstance   fontInstance,
le_int32    scriptCode,
le_int32    languageCode,
const GlyphSubstitutionTableHeader *    gsubTable
 

This is the main constructor.

It constructs an instance of IndicOpenTypeLayoutEngine for a particular font, script and language. It takes the GSUB table as a parameter since LayoutEngine::layoutEngineFactory has to read the GSUB table to know that it has an Indic OpenType font.

Parameters:
fontInstance  - the font
scriptCode  - the script
langaugeCode  - the language
gsubTable  - the GSUB table
See also:
LayoutEngine::layoutEngineFactory , OpenTypeLayoutEngine , ScriptAndLangaugeTags.h for script and language codes
Internal:
For internal use only.

IndicOpenTypeLayoutEngine::IndicOpenTypeLayoutEngine const LEFontInstance   fontInstance,
le_int32    scriptCode,
le_int32    languageCode
 

This constructor is used when the font requires a "canned" GSUB table which can't be known until after this constructor has been invoked.

Parameters:
fontInstance  - the font
scriptCode  - the script
langaugeCode  - the language
See also:
OpenTypeLayoutEngine , ScriptAndLangaugeTags.h for script and language codes
Internal:
For internal use only.

virtual IndicOpenTypeLayoutEngine::~IndicOpenTypeLayoutEngine   [virtual]
 

The destructor, virtual for correct polymorphic invocation.

Internal:
For internal use only.


Member Function Documentation

virtual le_int32 IndicOpenTypeLayoutEngine::characterProcessing const LEUnicode    chars[],
le_int32    offset,
le_int32    count,
le_int32    max,
le_bool    rightToLeft,
LEUnicode *&    outChars,
le_int32 *&    charIndices,
const LETag **&    featureTags,
LEErrorCode   success
[protected, virtual]
 

This method does Indic OpenType character processing.

It assigns the OpenType feature tags to the characters, and may generate output characters which have been reordered. For some Indic scripts, it may also split some vowels, resulting in more output characters than input characters.

Input parameters:

Parameters:
chars  - the input character context
offset  - the index of the first character to process
count  - the number of characters to process
max  - the number of characters in the input context
rightToLeft  - true if the characters are in a right to left directional run
Output parameters:
Parameters:
outChars  - the output character arrayt
charIndices  - the output character index array
featureTags  - the output feature tag array
success  - set to an error code if the operation fails
Returns:
the output character count
Internal:
For internal use only.

Reimplemented from OpenTypeLayoutEngine.

virtual UClassID IndicOpenTypeLayoutEngine::getDynamicClassID void    const [inline, virtual]
 

ICU "poor man's RTTI", returns a UClassID for the actual class.

Draft:
This API has been introduced in ICU 2.2. It is still in draft state and may be modified in a future release.

Reimplemented from OpenTypeLayoutEngine.

Definition at line 89 of file IndicLayoutEngine.h.

UClassID IndicOpenTypeLayoutEngine::getStaticClassID void    [inline, static]
 

ICU "poor man's RTTI", returns a UClassID for this class.

Draft:
This API has been introduced in ICU 2.2. It is still in draft state and may be modified in a future release.

Reimplemented from OpenTypeLayoutEngine.

Definition at line 96 of file IndicLayoutEngine.h.

virtual le_int32 IndicOpenTypeLayoutEngine::glyphProcessing const LEUnicode    chars[],
le_int32    offset,
le_int32    count,
le_int32    max,
le_bool    rightToLeft,
const LETag **&    featureTags,
LEGlyphID *&    glyphs,
le_int32 *&    charIndices,
LEErrorCode   success
[protected, virtual]
 

This method does character to glyph mapping, applies the GSUB table and applies any post GSUB fixups for left matras.

It calls OpenTypeLayoutEngine::glyphProcessing to do the character to glyph mapping, and apply the GSUB table.

Note that in the case of "canned" GSUB tables, the output glyph indices may be "fake" glyph indices that need to be converted to "real" glyph indices by the glyphPostProcessing method.

Input parameters:

Parameters:
chars  - the input character context
offset  - the index of the first character to process
count  - the number of characters to process
max  - the number of characters in the input context
rightToLeft  - true if the characters are in a right to left directional run
featureTags  - the feature tag array
Output parameters:
Parameters:
glyphs  - the output glyph index array
charIndices  - the output character index array
success  - set to an error code if the operation fails
Returns:
the number of glyphs in the output glyph index array
Note: if the character index array was already set by the characterProcessing method, this method won't change it.

Internal:
For internal use only.

Reimplemented from OpenTypeLayoutEngine.


Member Data Documentation

MPreFixups* IndicOpenTypeLayoutEngine::fMPreFixups [private]
 

Definition at line 166 of file IndicLayoutEngine.h.

const char IndicOpenTypeLayoutEngine::fgClassID [static, private]
 

The address of this static class variable serves as this class's ID for ICU "poor man's RTTI".

Reimplemented from OpenTypeLayoutEngine.

Definition at line 164 of file IndicLayoutEngine.h.


The documentation for this class was generated from the following file:
Generated on Mon Nov 24 14:36:35 2003 for ICU 2.8 by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001