From 2e8fb6c38dbc01cb77b384c0ae0212514dfbb588 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Mon, 18 May 2009 04:37:37 -0400 Subject: [PATCH] [HB] Tweak some constants and fix Coverage --- src/hb-ot-layout-common-private.h | 11 ++++++----- src/hb-ot-layout-gsubgpos-private.h | 2 ++ src/hb-ot-layout-open-private.h | 6 +++--- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/hb-ot-layout-common-private.h b/src/hb-ot-layout-common-private.h index 9e48db8..6b3e5e3 100644 --- a/src/hb-ot-layout-common-private.h +++ b/src/hb-ot-layout-common-private.h @@ -36,6 +36,7 @@ * */ + /* * Script, ScriptList, LangSys, Feature, FeatureList, Lookup, LookupList */ @@ -226,9 +227,9 @@ struct CoverageFormat1 { private: inline unsigned int get_coverage (hb_codepoint_t glyph_id) const { - GlyphID gid; - if (HB_UNLIKELY (glyph_id > 65535)) + if (HB_UNLIKELY (glyph_id > 0xFFFF)) return NOT_COVERED; + GlyphID gid; gid = glyph_id; // TODO: bsearch unsigned int num_glyphs = glyphArray.len; @@ -251,7 +252,7 @@ struct CoverageRangeRecord { private: inline unsigned int get_coverage (hb_codepoint_t glyph_id) const { if (glyph_id >= start && glyph_id <= end) - return startCoverageIndex + (glyph_id - start); + return (unsigned int) startCoverageIndex + (glyph_id - start); return NOT_COVERED; } @@ -272,8 +273,8 @@ struct CoverageFormat2 { // TODO: bsearch unsigned int count = rangeRecord.len; for (unsigned int i = 0; i < count; i++) { - int coverage = rangeRecord[i].get_coverage (glyph_id); - if (coverage >= 0) + unsigned int coverage = rangeRecord[i].get_coverage (glyph_id); + if (coverage != NOT_COVERED) return coverage; } return NOT_COVERED; diff --git a/src/hb-ot-layout-gsubgpos-private.h b/src/hb-ot-layout-gsubgpos-private.h index f9a1f6b..01b7fae 100644 --- a/src/hb-ot-layout-gsubgpos-private.h +++ b/src/hb-ot-layout-gsubgpos-private.h @@ -188,6 +188,8 @@ static inline bool apply_lookup (LOOKUP_ARGS_DEF, lookupRecord++; lookupCount--; i += buffer->in_pos - old_pos; + if (HB_UNLIKELY (buffer->in_pos == end)) + return true; if (!done) goto not_applied; diff --git a/src/hb-ot-layout-open-private.h b/src/hb-ot-layout-open-private.h index 0dd291a..98a2499 100644 --- a/src/hb-ot-layout-open-private.h +++ b/src/hb-ot-layout-open-private.h @@ -35,9 +35,9 @@ #define NO_INDEX ((unsigned int) 0xFFFF) -#define NO_CONTEXT ((unsigned int) -0x20000) -#define NOT_COVERED ((unsigned int) -1) -#define MAX_NESTING_LEVEL 32 +#define NO_CONTEXT ((unsigned int) 0x110000) +#define NOT_COVERED ((unsigned int) 0x110000) +#define MAX_NESTING_LEVEL 8 /* -- 2.7.4