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

ArabicOpenTypeLayoutEngine Class Reference

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

#include <ArabicLayoutEngine.h>

Inheritance diagram for ArabicOpenTypeLayoutEngine::

OpenTypeLayoutEngine LayoutEngine UObject UMemory 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. 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 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...


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

Internal:
For internal use only.

Definition at line 32 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
Internal:
For internal use only.

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
Internal:
For internal use only.

virtual ArabicOpenTypeLayoutEngine::~ArabicOpenTypeLayoutEngine   [virtual]
 

The destructor, virtual for correct polymorphic invocation.

Internal:
For internal use only.


Member Function Documentation

virtual 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
Internal:
For internal use only.

Reimplemented from OpenTypeLayoutEngine.

Reimplemented in UnicodeArabicOpenTypeLayoutEngine.

virtual 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
Internal:
For internal use only.

Reimplemented from OpenTypeLayoutEngine.

virtual UClassID ArabicOpenTypeLayoutEngine::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 82 of file ArabicLayoutEngine.h.

UClassID ArabicOpenTypeLayoutEngine::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 89 of file ArabicLayoutEngine.h.


Member Data Documentation

const char ArabicOpenTypeLayoutEngine::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 142 of file ArabicLayoutEngine.h.


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