2
* @(#)GlyphPosnLookupProc.cpp 1.6 00/03/15
4
* (C) Copyright IBM Corp. 1998, 1999, 2000, 2001 - All Rights Reserved
9
#include "LEFontInstance.h"
10
#include "OpenTypeTables.h"
13
#include "ScriptAndLanguage.h"
14
#include "GlyphDefinitionTables.h"
15
#include "GlyphPositioningTables.h"
16
#include "SinglePositioningSubtables.h"
17
#include "PairPositioningSubtables.h"
18
//#include "CursivePositioningSubtables.h"
19
#include "MarkToBasePosnSubtables.h"
20
#include "MarkToLigaturePosnSubtables.h"
21
#include "MarkToMarkPosnSubtables.h"
22
//#include "ContextualPositioningSubtables.h"
23
#include "ContextualSubstSubtables.h"
24
#include "LookupProcessor.h"
25
#include "GlyphPosnLookupProc.h"
30
// Aside from the names, the contextual positioning subtables are
31
// the same as the contextual substitution subtables.
32
typedef ContextualSubstitutionSubtable ContextualPositioningSubtable;
33
typedef ChainingContextualSubstitutionSubtable ChainingContextualPositioningSubtable;
35
GlyphPositioningLookupProcessor::GlyphPositioningLookupProcessor(
36
const GlyphPositioningTableHeader *glyphPositioningTableHeader,
37
LETag scriptTag, LETag languageTag, const LETag *featureOrder)
39
(char *) glyphPositioningTableHeader,
40
SWAPW(glyphPositioningTableHeader->scriptListOffset),
41
SWAPW(glyphPositioningTableHeader->featureListOffset),
42
SWAPW(glyphPositioningTableHeader->lookupListOffset),
43
scriptTag, languageTag, featureOrder)
48
GlyphPositioningLookupProcessor::GlyphPositioningLookupProcessor()
52
le_uint32 GlyphPositioningLookupProcessor::applySubtable(const LookupSubtable *lookupSubtable, le_uint16 lookupType,
53
GlyphIterator *glyphIterator,
54
const LEFontInstance *fontInstance) const
65
const SinglePositioningSubtable *subtable = (const SinglePositioningSubtable *) lookupSubtable;
67
delta = subtable->process(glyphIterator, fontInstance);
73
const PairPositioningSubtable *subtable = (const PairPositioningSubtable *) lookupSubtable;
75
delta = subtable->process(glyphIterator, fontInstance);
82
const CursivePositioningSubtable *subtable = (const CursivePositioningSubtable *) lookupSubtable;
84
delta = subtable->process(glyphIterator, fontInstance);
91
const MarkToBasePositioningSubtable *subtable = (const MarkToBasePositioningSubtable *) lookupSubtable;
93
delta = subtable->process(glyphIterator, fontInstance);
97
case gpstMarkToLigature:
99
const MarkToLigaturePositioningSubtable *subtable = (const MarkToLigaturePositioningSubtable *) lookupSubtable;
101
delta = subtable->process(glyphIterator, fontInstance);
107
const MarkToMarkPositioningSubtable *subtable = (const MarkToMarkPositioningSubtable *) lookupSubtable;
109
delta = subtable->process(glyphIterator, fontInstance);
115
const ContextualPositioningSubtable *subtable = (const ContextualPositioningSubtable *) lookupSubtable;
117
delta = subtable->process(this, glyphIterator, fontInstance);
121
case gpstChainedContext:
123
const ChainingContextualPositioningSubtable *subtable = (const ChainingContextualPositioningSubtable *) lookupSubtable;
125
delta = subtable->process(this, glyphIterator, fontInstance);
136
GlyphPositioningLookupProcessor::~GlyphPositioningLookupProcessor()