[pango/harfbuzz-ng: 9/57] [HB] Remove hinting setting and use ppem==0 to mean "no hinting"



commit 2ea66938b387b3d492e45f6277666258366cf003
Author: Behdad Esfahbod <behdad behdad org>
Date:   Thu Jul 30 16:28:45 2009 -0400

    [HB] Remove hinting setting and use ppem==0 to mean "no hinting"

 pango/opentype/hb-blob.h                   |    3 --
 pango/opentype/hb-common.h                 |    9 +++++++
 pango/opentype/hb-ot-layout-gpos-private.h |   36 ++++++++++++++++++---------
 pango/opentype/hb-ot-layout-private.h      |    2 -
 pango/opentype/hb-ot-layout.cc             |    7 -----
 pango/opentype/hb-ot-layout.h              |    4 ---
 pango/pango-ot-info.c                      |   12 +++++----
 7 files changed, 40 insertions(+), 33 deletions(-)
---
diff --git a/pango/opentype/hb-blob.h b/pango/opentype/hb-blob.h
index 6cb7c34..1066821 100644
--- a/pango/opentype/hb-blob.h
+++ b/pango/opentype/hb-blob.h
@@ -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,
diff --git a/pango/opentype/hb-common.h b/pango/opentype/hb-common.h
index fab0cf4..c719d80 100644
--- a/pango/opentype/hb-common.h
+++ b/pango/opentype/hb-common.h
@@ -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 */
diff --git a/pango/opentype/hb-ot-layout-gpos-private.h b/pango/opentype/hb-ot-layout-gpos-private.h
index 619b4c4..b0695c1 100644
--- a/pango/opentype/hb-ot-layout-gpos-private.h
+++ b/pango/opentype/hb-ot-layout-gpos-private.h
@@ -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:
diff --git a/pango/opentype/hb-ot-layout-private.h b/pango/opentype/hb-ot-layout-private.h
index 12b1ee1..1ce32ed 100644
--- a/pango/opentype/hb-ot-layout-private.h
+++ b/pango/opentype/hb-ot-layout-private.h
@@ -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 */
diff --git a/pango/opentype/hb-ot-layout.cc b/pango/opentype/hb-ot-layout.cc
index c99e8ea..d101340 100644
--- a/pango/opentype/hb-ot-layout.cc
+++ b/pango/opentype/hb-ot-layout.cc
@@ -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)
 {
diff --git a/pango/opentype/hb-ot-layout.h b/pango/opentype/hb-ot-layout.h
index f1b4b45..d19f558 100644
--- a/pango/opentype/hb-ot-layout.h
+++ b/pango/opentype/hb-ot-layout.h
@@ -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);
 
diff --git a/pango/pango-ot-info.c b/pango/pango-ot-info.c
index 2a2c147..6b3a9be 100644
--- a/pango/pango-ot-info.c
+++ b/pango/pango-ot-info.c
@@ -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++)
     {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]