提交 13ed4405 编写于 作者: B Behdad Esfahbod

[HB] A step closer to working ChainContext

上级 e8cbaaf6
...@@ -156,12 +156,14 @@ struct Rule { ...@@ -156,12 +156,14 @@ struct Rule {
private: private:
inline bool apply (LOOKUP_ARGS_DEF, ContextLookupContext &context) const { inline bool apply (LOOKUP_ARGS_DEF, ContextLookupContext &context) const {
const LookupRecord *record = (const LookupRecord *) ((const char *) input + sizeof (input[0]) * (inputCount ? inputCount - 1 : 0)); const LookupRecord *lookupRecord = (const LookupRecord *)
((const char *) input +
sizeof (input[0]) * (inputCount ? inputCount - 1 : 0));
return context_lookup (LOOKUP_ARGS, return context_lookup (LOOKUP_ARGS,
inputCount, inputCount,
input, input,
lookupCount, lookupCount,
record, lookupRecord,
context); context);
} }
...@@ -274,7 +276,9 @@ struct ContextFormat3 { ...@@ -274,7 +276,9 @@ struct ContextFormat3 {
private: private:
inline bool apply_coverage (LOOKUP_ARGS_DEF, apply_lookup_func_t apply_func) const { inline bool apply_coverage (LOOKUP_ARGS_DEF, apply_lookup_func_t apply_func) const {
const LookupRecord *record = (const LookupRecord *) ((const char *) coverage + sizeof (coverage[0]) * glyphCount); const LookupRecord *lookupRecord = (const LookupRecord *)
((const char *) coverage +
sizeof (coverage[0]) * glyphCount);
struct ContextLookupContext context = { struct ContextLookupContext context = {
{match_coverage, apply_func}, {match_coverage, apply_func},
(char *) this (char *) this
...@@ -283,7 +287,7 @@ struct ContextFormat3 { ...@@ -283,7 +287,7 @@ struct ContextFormat3 {
glyphCount, glyphCount,
(const USHORT *) (coverage + 1), (const USHORT *) (coverage + 1),
lookupCount, lookupCount,
record, lookupRecord,
context); context);
} }
...@@ -346,14 +350,20 @@ struct ChainRule { ...@@ -346,14 +350,20 @@ struct ChainRule {
private: private:
inline bool apply (LOOKUP_ARGS_DEF, ChainContextLookupContext &context) const { inline bool apply (LOOKUP_ARGS_DEF, ChainContextLookupContext &context) const {
return false; const HeadlessArrayOf<USHORT> &input = * (const HeadlessArrayOf<USHORT> *)
// const LookupRecord *record = (const LookupRecord *) ((const char *) input + sizeof (input[0]) * (inputCount ? inputCount - 1 : 0)); ((const char *) &backtrack + backtrack.get_size ());
const ArrayOf<USHORT> &lookahead = * (const ArrayOf<USHORT> *)
((const char *) &input + input.get_size ());
const LookupRecord &lookupRecord = * (const LookupRecord *)
((const char *) &lookahead + lookahead.get_size ());
// XXXXXXXXXXXXXXXXXX
// return context_lookup (LOOKUP_ARGS, // return context_lookup (LOOKUP_ARGS,
// inputCount, // inputCount,
// input, // input,
// lookupCount, // lookupCount,
// record, // record,
// context); // context);
return false;
} }
...@@ -482,12 +492,18 @@ struct ChainContextFormat3 { ...@@ -482,12 +492,18 @@ struct ChainContextFormat3 {
private: private:
inline bool apply_coverage (LOOKUP_ARGS_DEF, apply_lookup_func_t apply_func) const { inline bool apply_coverage (LOOKUP_ARGS_DEF, apply_lookup_func_t apply_func) const {
// const LookupRecord *record = (const LookupRecord *) ((const char *) coverage + sizeof (coverage[0]) * glyphCount); const OffsetArrayOf<Coverage> &input = * (const OffsetArrayOf<Coverage> *)
((const char *) &backtrack + backtrack.get_size ());
const OffsetArrayOf<Coverage> &lookahead = * (const OffsetArrayOf<Coverage> *)
((const char *) &input + input.get_size ());
const LookupRecord &lookupRecord = * (const LookupRecord *)
((const char *) &lookahead + lookahead.get_size ());
struct ChainContextLookupContext context = { struct ChainContextLookupContext context = {
{match_coverage, apply_func}, {match_coverage, apply_func},
{(char *) this, (char *) this, (char *) this} {(char *) this, (char *) this, (char *) this}
}; };
/* /*
XXXXXXXXXXXXXXXXXXXXX
return context_lookup (LOOKUP_ARGS, return context_lookup (LOOKUP_ARGS,
glyphCount, glyphCount,
(const USHORT *) (coverage + 1), (const USHORT *) (coverage + 1),
...@@ -511,15 +527,15 @@ struct ChainContextFormat3 { ...@@ -511,15 +527,15 @@ struct ChainContextFormat3 {
private: private:
USHORT format; /* Format identifier--format = 3 */ USHORT format; /* Format identifier--format = 3 */
OffsetArrayOf<Coverage> OffsetArrayOf<Coverage>
backtrackCoverage; /* Array of coverage tables backtrack; /* Array of coverage tables
* in backtracking sequence, in glyph * in backtracking sequence, in glyph
* sequence order */ * sequence order */
OffsetArrayOf<Coverage> OffsetArrayOf<Coverage>
inputCoverageX ; /* Array of coverage inputX ; /* Array of coverage
* tables in input sequence, in glyph * tables in input sequence, in glyph
* sequence order */ * sequence order */
OffsetArrayOf<Coverage> OffsetArrayOf<Coverage>
lookaheadCoverageX; /* Array of coverage tables lookaheadX; /* Array of coverage tables
* in lookahead sequence, in glyph * in lookahead sequence, in glyph
* sequence order */ * sequence order */
ArrayOf<LookupRecord> ArrayOf<LookupRecord>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册