[HB] Tweak some constants and fix Coverage
authorBehdad Esfahbod <behdad@behdad.org>
Mon, 18 May 2009 08:37:37 +0000 (04:37 -0400)
committerBehdad Esfahbod <behdad@behdad.org>
Mon, 2 Nov 2009 19:40:12 +0000 (14:40 -0500)
src/hb-ot-layout-common-private.h
src/hb-ot-layout-gsubgpos-private.h
src/hb-ot-layout-open-private.h

index 9e48db8..6b3e5e3 100644 (file)
@@ -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;
index f9a1f6b..01b7fae 100644 (file)
@@ -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;
index 0dd291a..98a2499 100644 (file)
@@ -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
 
 
 /*