src/hb-coretext.cc | 24 ++++++++++++++---------- src/hb-coretext.h | 3 +++ src/hb-graphite2.cc | 30 ++++++++++++++++++++++++++---- src/hb-graphite2.h | 8 +++++++- src/hb-uniscribe.cc | 33 ++++++++++++++++----------------- 5 files changed, 66 insertions(+), 32 deletions(-)
New commits: commit 9a8395824bf51c2ff2cfe0887ecad52b3d2c02e2 Author: Behdad Esfahbod <[email protected]> Date: Sun Dec 9 18:47:36 2012 -0500 [coretext] Add hb_coretext_face_get_cg_font() Not sure if it's useful, but it was missing. diff --git a/src/hb-coretext.cc b/src/hb-coretext.cc index f626a2f..c0fe637 100644 --- a/src/hb-coretext.cc +++ b/src/hb-coretext.cc @@ -91,6 +91,14 @@ _hb_coretext_shaper_face_data_destroy (hb_coretext_shaper_face_data_t *data) free (data); } +CGFontRef +hb_coretext_face_get_ct_font (hb_face_t *face) +{ + if (unlikely (!hb_coretext_shaper_face_data_ensure (face))) return NULL; + hb_coretext_shaper_face_data_t *face_data = HB_SHAPER_DATA_GET (face); + return face_data->cg_font; +} + /* * shaper font data @@ -149,19 +157,19 @@ _hb_coretext_shaper_shape_plan_data_destroy (hb_coretext_shaper_shape_plan_data_ { } - -/* - * shaper - */ - CTFontRef hb_coretext_font_get_ct_font (hb_font_t *font) { - if (unlikely (!hb_coretext_shaper_font_data_ensure (font))) return 0; + if (unlikely (!hb_coretext_shaper_font_data_ensure (font))) return NULL; hb_coretext_shaper_font_data_t *font_data = HB_SHAPER_DATA_GET (font); return font_data->ct_font; } + +/* + * shaper + */ + hb_bool_t _hb_coretext_shape (hb_shape_plan_t *shape_plan, hb_font_t *font, diff --git a/src/hb-coretext.h b/src/hb-coretext.h index 0b34203..c4954fa 100644 --- a/src/hb-coretext.h +++ b/src/hb-coretext.h @@ -34,6 +34,9 @@ HB_BEGIN_DECLS +CGFontRef +hb_coretext_face_get_cg_font (hb_face_t *face); + CTFontRef hb_coretext_font_get_ct_font (hb_font_t *font); commit 86112356885fde32163882b6c9dd19a494304f7a Author: Behdad Esfahbod <[email protected]> Date: Sun Dec 9 18:47:09 2012 -0500 [coretext] Remove hack around GlyphID We not namespace our types, so the hack is not needed anymore. diff --git a/src/hb-coretext.cc b/src/hb-coretext.cc index dfb6341..f626a2f 100644 --- a/src/hb-coretext.cc +++ b/src/hb-coretext.cc @@ -29,10 +29,6 @@ #define HB_SHAPER coretext #include "hb-shaper-impl-private.hh" -#define GlyphID GlyphID_mac -#include <ApplicationServices/ApplicationServices.h> -#undef GlyphID - #include "hb-coretext.h" commit 8e58459aeb949591bb5bca340ef9bdd5cfd54e47 Author: Behdad Esfahbod <[email protected]> Date: Sun Dec 9 18:45:47 2012 -0500 [graphite2] "Update to new API" Part of patch from Martin Hosken. I believe he knows what he's doing :). diff --git a/src/hb-graphite2.cc b/src/hb-graphite2.cc index 4e7cfdc..16ef9a4 100644 --- a/src/hb-graphite2.cc +++ b/src/hb-graphite2.cc @@ -325,10 +325,18 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan, } ci++; - buffer->clear_output (); + //buffer->clear_output (); for (unsigned int i = 0; i < ci; ++i) - buffer->replace_glyphs (clusters[i].num_chars, clusters[i].num_glyphs, gids + clusters[i].base_glyph); - buffer->swap_buffers (); + { + for (unsigned int j = 0; j < clusters[i].num_glyphs; ++j) + { + hb_glyph_info_t *info = &buffer->info[clusters[i].base_glyph + j]; + info->codepoint = gids[clusters[i].base_glyph + j]; + info->cluster = gr_cinfo_base(gr_seg_cinfo(seg, clusters[i].base_char)); + } + } + buffer->len = glyph_count; + //buffer->swap_buffers (); if (HB_DIRECTION_IS_BACKWARD(buffer->props.direction)) curradvx = gr_seg_advance_X(seg); commit a5a4ab3846ef06769784e6469d76eace35e68805 Author: Behdad Esfahbod <[email protected]> Date: Sun Dec 9 18:44:41 2012 -0500 [graphite2] Add hb_graphite2_face_get_gr_face and hb_graphite2_font_get_gr_font Based on patch from Martin Hosken. I believe it returns NULL if the font doesn't have graphite tables, but have not tested. diff --git a/src/hb-graphite2.cc b/src/hb-graphite2.cc index a2ebbf7..4e7cfdc 100644 --- a/src/hb-graphite2.cc +++ b/src/hb-graphite2.cc @@ -141,6 +141,13 @@ _hb_graphite2_shaper_face_data_destroy (hb_graphite2_shaper_face_data_t *data) free (data); } +gr_face * +hb_graphite2_face_get_gr_face (hb_face_t *face) +{ + if (unlikely (!hb_graphite2_shaper_face_data_ensure (face))) return NULL; + return HB_SHAPER_DATA_GET (face)->grface; +} + /* * shaper font data @@ -168,6 +175,13 @@ _hb_graphite2_shaper_font_data_destroy (hb_graphite2_shaper_font_data_t *data) gr_font_destroy (data); } +gr_font * +hb_graphite2_font_get_gr_font (hb_font_t *font) +{ + if (unlikely (!hb_graphite2_shaper_font_data_ensure (font))) return NULL; + return HB_SHAPER_DATA_GET (font); +} + /* * shaper shape_plan data diff --git a/src/hb-graphite2.h b/src/hb-graphite2.h index 8122495..bea68f9 100644 --- a/src/hb-graphite2.h +++ b/src/hb-graphite2.h @@ -33,7 +33,13 @@ HB_BEGIN_DECLS #define HB_GRAPHITE2_TAG_SILF HB_TAG('S','i','l','f') -/* TODO add gr_font/face etc getters and other glue API */ + +gr_face * +hb_graphite2_face_get_gr_face (hb_face_t *face); + +gr_font * +hb_graphite2_font_get_gr_font (hb_font_t *font); + HB_END_DECLS commit 737ba156442f723d126c7c58c73729786b67c17a Author: Behdad Esfahbod <[email protected]> Date: Sun Dec 9 18:43:03 2012 -0500 [graphite2] Preload all tables Part of patch from Martin Hosken. diff --git a/src/hb-graphite2.cc b/src/hb-graphite2.cc index 6c890d4..a2ebbf7 100644 --- a/src/hb-graphite2.cc +++ b/src/hb-graphite2.cc @@ -113,7 +113,7 @@ _hb_graphite2_shaper_face_data_create (hb_face_t *face) hb_blob_destroy (silf_blob); data->face = face; - data->grface = gr_make_face (data, &hb_graphite2_get_table, gr_face_default); + data->grface = gr_make_face (data, &hb_graphite2_get_table, gr_face_preloadAll); if (unlikely (!data->grface)) { free (data); commit 0ae6dbf1b4de8a0326b8a2f201597427cecfb6db Author: Behdad Esfahbod <[email protected]> Date: Sun Dec 9 18:37:38 2012 -0500 Minor diff --git a/src/hb-uniscribe.cc b/src/hb-uniscribe.cc index ba66630..2f01c28 100644 --- a/src/hb-uniscribe.cc +++ b/src/hb-uniscribe.cc @@ -188,6 +188,22 @@ _hb_uniscribe_shaper_font_data_destroy (hb_uniscribe_shaper_font_data_t *data) free (data); } +LOGFONTW * +hb_uniscribe_font_get_logfontw (hb_font_t *font) +{ + if (unlikely (!hb_uniscribe_shaper_font_data_ensure (font))) return NULL; + hb_uniscribe_shaper_font_data_t *font_data = HB_SHAPER_DATA_GET (font); + return &font_data->log_font; +} + +HFONT +hb_uniscribe_font_get_hfont (hb_font_t *font) +{ + if (unlikely (!hb_uniscribe_shaper_font_data_ensure (font))) return NULL; + hb_uniscribe_shaper_font_data_t *font_data = HB_SHAPER_DATA_GET (font); + return font_data->hfont; +} + /* * shaper shape_plan data @@ -213,22 +229,6 @@ _hb_uniscribe_shaper_shape_plan_data_destroy (hb_uniscribe_shaper_shape_plan_dat * shaper */ -LOGFONTW * -hb_uniscribe_font_get_logfontw (hb_font_t *font) -{ - if (unlikely (!hb_uniscribe_shaper_font_data_ensure (font))) return NULL; - hb_uniscribe_shaper_font_data_t *font_data = HB_SHAPER_DATA_GET (font); - return &font_data->log_font; -} - -HFONT -hb_uniscribe_font_get_hfont (hb_font_t *font) -{ - if (unlikely (!hb_uniscribe_shaper_font_data_ensure (font))) return NULL; - hb_uniscribe_shaper_font_data_t *font_data = HB_SHAPER_DATA_GET (font); - return font_data->hfont; -} - hb_bool_t _hb_uniscribe_shape (hb_shape_plan_t *shape_plan, commit 3fe5c159d3532f8ce8a85d217a00681225dd8ed1 Author: Behdad Esfahbod <[email protected]> Date: Sun Dec 9 18:20:19 2012 -0500 Remove excess return Oops! diff --git a/src/hb-uniscribe.cc b/src/hb-uniscribe.cc index 18b88b2..ba66630 100644 --- a/src/hb-uniscribe.cc +++ b/src/hb-uniscribe.cc @@ -217,7 +217,6 @@ LOGFONTW * hb_uniscribe_font_get_logfontw (hb_font_t *font) { if (unlikely (!hb_uniscribe_shaper_font_data_ensure (font))) return NULL; - return NULL; hb_uniscribe_shaper_font_data_t *font_data = HB_SHAPER_DATA_GET (font); return &font_data->log_font; } _______________________________________________ HarfBuzz mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/harfbuzz
