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

UnicodeArabicOpenTypeLayoutEngine Class Reference

The class implements OpenType layout for Arabic fonts which don't contain a GSUB table, using a canned GSUB table based on Unicode Arabic Presentation Forms. More...

#include <ArabicLayoutEngine.h>

Inheritance diagram for UnicodeArabicOpenTypeLayoutEngine:

ArabicOpenTypeLayoutEngine OpenTypeLayoutEngine LayoutEngine List of all members.

Public Methods

 UnicodeArabicOpenTypeLayoutEngine (const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode)
 This constructs an instance of UnicodeArabicOpenTypeLayoutEngine for a specific font, script and language. More...

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


Protected Methods

virtual le_int32 glyphPostProcessing (LEGlyphID tempGlyphs[], le_int32 tempCharIndices[], le_int32 tempGlyphCount, LEGlyphID *&glyphs, le_int32 *&charIndices, LEErrorCode &success)
 This method converts the Arabic Presentation Forms in the temp glyph array into actual glyph indices using ArabicOpenTypeLayoutEngine::mapCharsToGlyps. More...

virtual void mapCharsToGlyphs (const LEUnicode chars[], le_int32 offset, le_int32 count, le_bool reverse, le_bool mirror, LEGlyphID *&glyphs, le_int32 *&charIndices, LEErrorCode &success)
 This method copies the input characters into the output glyph index array, for use by the canned GSUB table. More...

virtual void adjustGlyphPositions (const LEUnicode chars[], le_int32 offset, le_int32 count, le_bool reverse, LEGlyphID glyphs[], le_int32 glyphCount, float positions[], LEErrorCode &success)
 This method ensures that all vowel and accent glyphs have a zero advance width by calling the adjustMarkGlyphs method. More...


Detailed Description

The class implements OpenType layout for Arabic fonts which don't contain a GSUB table, using a canned GSUB table based on Unicode Arabic Presentation Forms.

It overrides the mapCharsToGlyphs method to use the Presentation Forms as logical glyph indices. It overrides the glyphPostProcessing method to convert the Presentation Forms to actual glyph indices.

See also:
ArabicOpenTypeLayoutEngine

Definition at line 119 of file ArabicLayoutEngine.h.


Constructor & Destructor Documentation

UnicodeArabicOpenTypeLayoutEngine::UnicodeArabicOpenTypeLayoutEngine ( const LEFontInstance * fontInstance,
le_int32 scriptCode,
le_int32 languageCode )
 

This constructs an instance of UnicodeArabicOpenTypeLayoutEngine for a specific font, script and language.

Parameters:
fontInstance   - the font
scriptCode   - the script
languageCode   - the language

See also:
LEFontInstance , ScriptAndLanguageTags.h for script and language codes

UnicodeArabicOpenTypeLayoutEngine::~UnicodeArabicOpenTypeLayoutEngine ( ) [virtual]
 

The destructor, virtual for correct polymorphic invocation.


Member Function Documentation

void UnicodeArabicOpenTypeLayoutEngine::adjustGlyphPositions ( const LEUnicode chars[],
le_int32 offset,
le_int32 count,
le_bool reverse,
LEGlyphID glyphs[],
le_int32 glyphCount,
float positions[],
LEErrorCode & success ) [protected, virtual]
 

This method ensures that all vowel and accent glyphs have a zero advance width by calling the adjustMarkGlyphs method.

The character codes are used to identify the vowel and mark glyphs.

Parameters:
chars   - the input character context
offset   - the offset of the first character to process
count   - the number of characters to process
reverse   - true if the glyphs in the glyph array have been reordered
glyphs   - the input glyph array
glyphCount   - the number of glyphs
positions   - the position array, will be updated as needed
success   - output parameter set to an error code if the operation fails

Reimplemented from ArabicOpenTypeLayoutEngine.

le_int32 UnicodeArabicOpenTypeLayoutEngine::glyphPostProcessing ( LEGlyphID tempGlyphs[],
le_int32 tempCharIndices[],
le_int32 tempGlyphCount,
LEGlyphID *& glyphs,
le_int32 *& charIndices,
LEErrorCode & success ) [protected, virtual]
 

This method converts the Arabic Presentation Forms in the temp glyph array into actual glyph indices using ArabicOpenTypeLayoutEngine::mapCharsToGlyps.

Input paramters:

Parameters:
tempGlyphs   - the input presentation forms
tempCharIndices   - the input character index array
tempGlyphCount   - the number of Presentation Froms

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 glyph indices in the output glyph index array

Reimplemented from OpenTypeLayoutEngine.

void UnicodeArabicOpenTypeLayoutEngine::mapCharsToGlyphs ( const LEUnicode chars[],
le_int32 offset,
le_int32 count,
le_bool reverse,
le_bool mirror,
LEGlyphID *& glyphs,
le_int32 *& charIndices,
LEErrorCode & success ) [protected, virtual]
 

This method copies the input characters into the output glyph index array, for use by the canned GSUB table.

It also generates the character index array.

Input parameters:

Parameters:
chars   - the input character context
offset   - the offset of the first character to be mapped
count   - the number of characters to be mapped
reverse   - if true, the output will be in reverse order
mirror   - if true, do character mirroring

Output parameters:
Parameters:
glyphs   - the glyph array
charIndices   - the character index array
success   - set to an error code if the operation fails

Reimplemented from LayoutEngine.


The documentation for this class was generated from the following file:
Generated at Tue Jun 12 14:04:49 2001 for ICU 1.8.1 by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000