[HB] Remove hinting setting and use ppem==0 to mean "no hinting"
authorBehdad Esfahbod <behdad@behdad.org>
Thu, 30 Jul 2009 20:28:45 +0000 (16:28 -0400)
committerBehdad Esfahbod <behdad@behdad.org>
Mon, 2 Nov 2009 19:40:24 +0000 (14:40 -0500)
src/hb-blob.h
src/hb-common.h
src/hb-ot-layout-gpos-private.h
src/hb-ot-layout-private.h
src/hb-ot-layout.cc
src/hb-ot-layout.h

index 6cb7c34..1066821 100644 (file)
@@ -31,9 +31,6 @@
 
 HB_BEGIN_DECLS
 
-typedef struct _hb_blob_t hb_blob_t;
-typedef void (*hb_destroy_func_t) (void *user_data);
-
 typedef enum {
   HB_MEMORY_MODE_DUPLICATE,
   HB_MEMORY_MODE_READONLY,
index fab0cf4..c719d80 100644 (file)
@@ -50,4 +50,13 @@ typedef uint32_t hb_codepoint_t;
 typedef int32_t hb_position_t;
 typedef int32_t hb_16dot16_t;
 
+typedef struct _hb_blob_t hb_blob_t;
+typedef void (*hb_destroy_func_t) (void *user_data);
+
+typedef struct _hb_font_callbacks_t hb_font_callbacks_t;
+typedef struct _hb_unicode_callbacks_t hb_unicode_callbacks_t;
+
+typedef struct _hb_face_t hb_face_t;
+typedef struct _hb_font_t hb_font_t;
+
 #endif /* HB_COMMON_H */
index 619b4c4..b0695c1 100644 (file)
@@ -109,19 +109,32 @@ struct ValueRecord {
     if (format & yAdvance)
       glyph_pos->y_advance += y_scale * *(SHORT*)values++ / 0x10000;
 
-    if (HB_LIKELY (!layout->gpos_info.dvi))
-    {
-      x_ppem = layout->gpos_info.x_ppem;
-      y_ppem = layout->gpos_info.y_ppem;
-      /* pixel -> fractional pixel */
-      if (format & xPlaDevice)
+    x_ppem = layout->gpos_info.x_ppem;
+    y_ppem = layout->gpos_info.y_ppem;
+    /* pixel -> fractional pixel */
+    if (format & xPlaDevice) {
+      if (x_ppem)
        glyph_pos->x_pos += (base+*(OffsetTo<Device>*)values++).get_delta (x_ppem) << 6;
-      if (format & yPlaDevice)
+      else
+        values++;
+    }
+    if (format & yPlaDevice) {
+      if (y_ppem)
        glyph_pos->y_pos += (base+*(OffsetTo<Device>*)values++).get_delta (y_ppem) << 6;
-      if (format & xAdvDevice)
+      else
+        values++;
+    }
+    if (format & xAdvDevice) {
+      if (x_ppem)
        glyph_pos->x_advance += (base+*(OffsetTo<Device>*)values++).get_delta (x_ppem) << 6;
-      if (format & yAdvDevice)
+      else
+        values++;
+    }
+    if (format & yAdvDevice) {
+      if (y_ppem)
        glyph_pos->y_advance += (base+*(OffsetTo<Device>*)values++).get_delta (y_ppem) << 6;
+      else
+        values++;
     }
   }
 };
@@ -179,11 +192,10 @@ struct AnchorFormat3
       *x = layout->gpos_info.x_scale * xCoordinate / 0x10000;
       *y = layout->gpos_info.y_scale * yCoordinate / 0x10000;
 
-      if (!layout->gpos_info.dvi)
-      {
+      if (layout->gpos_info.x_ppem)
        *x += (this+xDeviceTable).get_delta (layout->gpos_info.x_ppem) << 6;
+      if (layout->gpos_info.y_ppem)
        *y += (this+yDeviceTable).get_delta (layout->gpos_info.y_ppem) << 6;
-      }
   }
 
   private:
index 12b1ee1..1ce32ed 100644 (file)
@@ -51,8 +51,6 @@ struct _hb_ot_layout_t
     unsigned int x_ppem, y_ppem;
     hb_16dot16_t x_scale, y_scale;
 
-    hb_bool_t dvi;
-
     unsigned int last;        /* the last valid glyph--used with cursive positioning */
     hb_position_t anchor_x;   /* the coordinates of the anchor point */
     hb_position_t anchor_y;   /* of the last valid glyph */
index b3b0e3c..3ec654e 100644 (file)
@@ -115,13 +115,6 @@ hb_ot_layout_destroy (hb_ot_layout_t *layout)
 }
 
 void
-hb_ot_layout_set_hinting (hb_ot_layout_t *layout,
-                         hb_bool_t hinted)
-{
-  layout->gpos_info.dvi = !hinted;
-}
-
-void
 hb_ot_layout_set_scale (hb_ot_layout_t *layout,
                        hb_16dot16_t x_scale, hb_16dot16_t y_scale)
 {
index f1b4b45..d19f558 100644 (file)
@@ -54,10 +54,6 @@ void
 hb_ot_layout_destroy (hb_ot_layout_t *layout);
 
 void
-hb_ot_layout_set_hinting (hb_ot_layout_t *layout,
-                         hb_bool_t hinted);
-
-void
 hb_ot_layout_set_scale (hb_ot_layout_t *layout,
                        hb_16dot16_t x_scale, hb_16dot16_t y_scale);