From 0090dc0f67b553d2f6eaaedc289c0956ade09ef6 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Thu, 30 Jul 2009 16:28:45 -0400 Subject: [PATCH] [HB] Remove hinting setting and use ppem==0 to mean "no hinting" --- src/hb-blob.h | 3 --- src/hb-common.h | 9 +++++++++ src/hb-ot-layout-gpos-private.h | 36 ++++++++++++++++++++++++------------ src/hb-ot-layout-private.h | 2 -- src/hb-ot-layout.cc | 7 ------- src/hb-ot-layout.h | 4 ---- 6 files changed, 33 insertions(+), 28 deletions(-) diff --git a/src/hb-blob.h b/src/hb-blob.h index 6cb7c34..1066821 100644 --- a/src/hb-blob.h +++ b/src/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/src/hb-common.h b/src/hb-common.h index fab0cf4..c719d80 100644 --- a/src/hb-common.h +++ b/src/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/src/hb-ot-layout-gpos-private.h b/src/hb-ot-layout-gpos-private.h index 619b4c4..b0695c1 100644 --- a/src/hb-ot-layout-gpos-private.h +++ b/src/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*)values++).get_delta (x_ppem) << 6; - if (format & yPlaDevice) + else + values++; + } + if (format & yPlaDevice) { + if (y_ppem) glyph_pos->y_pos += (base+*(OffsetTo*)values++).get_delta (y_ppem) << 6; - if (format & xAdvDevice) + else + values++; + } + if (format & xAdvDevice) { + if (x_ppem) glyph_pos->x_advance += (base+*(OffsetTo*)values++).get_delta (x_ppem) << 6; - if (format & yAdvDevice) + else + values++; + } + if (format & yAdvDevice) { + if (y_ppem) glyph_pos->y_advance += (base+*(OffsetTo*)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/src/hb-ot-layout-private.h b/src/hb-ot-layout-private.h index 12b1ee1..1ce32ed 100644 --- a/src/hb-ot-layout-private.h +++ b/src/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/src/hb-ot-layout.cc b/src/hb-ot-layout.cc index b3b0e3c..3ec654e 100644 --- a/src/hb-ot-layout.cc +++ b/src/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/src/hb-ot-layout.h b/src/hb-ot-layout.h index f1b4b45..d19f558 100644 --- a/src/hb-ot-layout.h +++ b/src/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); -- 2.7.4