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 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...


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...


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)

Definition at line 35 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

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

virtual IndicOpenTypeLayoutEngine::~IndicOpenTypeLayoutEngine   [virtual]
 

The destructor, virtual for correct polymorphic invocation.


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

Reimplemented from OpenTypeLayoutEngine.

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.

Reimplemented from OpenTypeLayoutEngine.


The documentation for this class was generated from the following file:
Generated on Tue Apr 9 11:30:37 2002 for ICU 2.1 by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001