[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>
Thu, 30 Jul 2009 20:31:44 +0000 (16:31 -0400)
pango/opentype/hb-blob.h
pango/opentype/hb-common.h
pango/opentype/hb-ot-layout-gpos-private.h
pango/opentype/hb-ot-layout-private.h
pango/opentype/hb-ot-layout.cc
pango/opentype/hb-ot-layout.h
pango/pango-ot-info.c

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 c99e8ea..d101340 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);
 
index 2a2c147..6b3a9be 100644 (file)
@@ -558,14 +558,16 @@ _pango_ot_info_position    (const PangoOTInfo    *info,
   /* XXX */
   _hb_buffer_clear_positions (buffer->buffer);
 
-  hb_ot_layout_set_hinting (info->layout,
-                           buffer->font->is_hinted);
   hb_ot_layout_set_scale (info->layout,
                          info->face->size->metrics.x_scale,
                          info->face->size->metrics.y_scale);
-  hb_ot_layout_set_ppem (info->layout,
-                        info->face->size->metrics.x_ppem,
-                        info->face->size->metrics.y_ppem);
+
+  if (buffer->font->is_hinted)
+    hb_ot_layout_set_ppem (info->layout,
+                          info->face->size->metrics.x_ppem,
+                          info->face->size->metrics.y_ppem);
+  else
+    hb_ot_layout_set_ppem (info->layout, 0, 0);
 
   for (i = 0; i < ruleset->rules->len; i++)
     {