From: Behdad Esfahbod Date: Thu, 30 Jul 2009 20:28:45 +0000 (-0400) Subject: [HB] Remove hinting setting and use ppem==0 to mean "no hinting" X-Git-Tag: 1.25.1~99 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2ea66938b387b3d492e45f6277666258366cf003;p=platform%2Fupstream%2Fpango.git [HB] Remove hinting setting and use ppem==0 to mean "no hinting" --- 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*)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/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++) {