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

ArabicOpenTypeLayoutEngine Class Reference

This class implements OpenType layout for Arabic fonts. More...

#include <ArabicLayoutEngine.h>

Inheritance diagram for ArabicOpenTypeLayoutEngine:

OpenTypeLayoutEngine LayoutEngine UnicodeArabicOpenTypeLayoutEngine List of all members.

Public Methods

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

 ArabicOpenTypeLayoutEngine (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 ~ArabicOpenTypeLayoutEngine ()
 The destructor, virtual for correct polymorphic invocation.


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 Arabic OpenType character processing. 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 applies the GPOS table if it is present, otherwise it ensures that all vowel and accent glyphs have a zero advance width by calling the adjustMarkGlyphs method. More...


Detailed Description

This class implements OpenType layout for Arabic fonts.

It overrides the characerProcessing method to assign the correct OpenType feature tags for the Arabic contextual forms. It also overrides the adjustGlyphPositions method to guarantee that all vowel and accent glyphs have zero advance width.

Definition at line 28 of file ArabicLayoutEngine.h.


Constructor & Destructor Documentation

ArabicOpenTypeLayoutEngine::ArabicOpenTypeLayoutEngine ( const LEFontInstance * fontInstance,
le_int32 scriptCode,
le_int32 languageCode,
const GlyphSubstitutionTableHeader * gsubTable )
 

This is the main constructor.

It constructs an instance of ArabicOpenTypeLayoutEngine 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

ArabicOpenTypeLayoutEngine::ArabicOpenTypeLayoutEngine ( 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

ArabicOpenTypeLayoutEngine::~ArabicOpenTypeLayoutEngine ( ) [virtual]
 

The destructor, virtual for correct polymorphic invocation.


Member Function Documentation

void ArabicOpenTypeLayoutEngine::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 applies the GPOS table if it is present, otherwise it ensures that all vowel and accent glyphs have a zero advance width by calling the adjustMarkGlyphs method.

If the font contains a GDEF table, that is used to identify voewls and accents. Otherwise the character codes are used.

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

Reimplemented in UnicodeArabicOpenTypeLayoutEngine.

le_int32 ArabicOpenTypeLayoutEngine::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 Arabic OpenType character processing.

It assigns the OpenType feature tags to the characters to generate the correct contextual forms and ligatures.

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.


The documentation for this class was generated from the following file:
Generated at Thu Mar 22 16:12:59 2001 for ICU 1.8 by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000