From 6af01a04b1fb6db7f6fadf19211d24b893c1c6bc Mon Sep 17 00:00:00 2001 From: Werner Lemberg Date: Sat, 28 Dec 2013 08:55:24 +0100 Subject: [PATCH] [autofit] Use `global' HarfBuzz font object. We now use `hb_font' instead of `hb_face' since yet-to-come changes need this. * src/autofit/afglobal.h: Include `hbshim.h'. (AF_FaceGlobalsRec) [FT_CONFIG_OPTION_USE_HARFBUZZ]: New member `hb_font'. * src/autofit/afglobal.c (af_face_globals_new) [FT_CONFIG_OPTION_USE_HARFBUZZ]: Create `hb_font'. (af_face_globals_free) [FT_CONFIG_OPTION_USE_HARFBUZZ]: Destroy `hb_font'. * src/autofit/hbshim.h: Include HarfBuzz headers. * src/autofit/hbshim.c: Include `hbshim.h' instead of HarfBuzz headers. (af_get_coverage): Updated. --- ChangeLog | 22 ++++++++++++++++++++++ src/autofit/afglobal.c | 10 ++++++++++ src/autofit/afglobal.h | 5 +++++ src/autofit/hbshim.c | 10 ++-------- src/autofit/hbshim.h | 4 ++++ 5 files changed, 43 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 112db7fb4..041ccf029 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,25 @@ +2013-12-28 Werner Lemberg + + [autofit] Use `global' HarfBuzz font object. + + We now use `hb_font' instead of `hb_face' since yet-to-come changes + need this. + + * src/autofit/afglobal.h: Include `hbshim.h'. + (AF_FaceGlobalsRec) [FT_CONFIG_OPTION_USE_HARFBUZZ]: New member + `hb_font'. + + * src/autofit/afglobal.c (af_face_globals_new) + [FT_CONFIG_OPTION_USE_HARFBUZZ]: Create `hb_font'. + (af_face_globals_free) [FT_CONFIG_OPTION_USE_HARFBUZZ]: Destroy + `hb_font'. + + * src/autofit/hbshim.h: Include HarfBuzz headers. + + * src/autofit/hbshim.c: Include `hbshim.h' instead of HarfBuzz + headers. + (af_get_coverage): Updated. + 2013-12-27 Werner Lemberg [autofit] Handle `DFLT' OpenType script for coverages. diff --git a/src/autofit/afglobal.c b/src/autofit/afglobal.c index fa4017de9..4c9ee1f21 100644 --- a/src/autofit/afglobal.c +++ b/src/autofit/afglobal.c @@ -20,6 +20,7 @@ #include "afranges.h" #include "hbshim.h" + /* get writing system specific header files */ #undef WRITING_SYSTEM #define WRITING_SYSTEM( ws, WS ) /* empty */ @@ -254,6 +255,10 @@ globals->glyph_styles = (FT_Byte*)( globals + 1 ); globals->module = module; +#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ + globals->hb_font = hb_ft_font_create( face, NULL ); +#endif + error = af_face_globals_compute_style_coverage( globals ); if ( error ) { @@ -295,6 +300,11 @@ } } +#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ + hb_font_destroy( globals->hb_font ); + globals->hb_font = NULL; +#endif + globals->glyph_count = 0; globals->glyph_styles = NULL; /* no need to free this one! */ globals->face = NULL; diff --git a/src/autofit/afglobal.h b/src/autofit/afglobal.h index 7785eead9..b5a908d8c 100644 --- a/src/autofit/afglobal.h +++ b/src/autofit/afglobal.h @@ -23,6 +23,7 @@ #include "aftypes.h" #include "afmodule.h" +#include "hbshim.h" FT_BEGIN_HEADER @@ -101,6 +102,10 @@ FT_BEGIN_HEADER FT_Long glyph_count; /* same as face->num_glyphs */ FT_Byte* glyph_styles; +#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ + hb_font_t* hb_font; +#endif + /* per-face auto-hinter properties */ FT_UInt increase_x_height; diff --git a/src/autofit/hbshim.c b/src/autofit/hbshim.c index 61a678b88..22adcaf01 100644 --- a/src/autofit/hbshim.c +++ b/src/autofit/hbshim.c @@ -18,14 +18,10 @@ #include #include FT_FREETYPE_H - +#include "hbshim.h" #ifdef FT_CONFIG_OPTION_USE_HARFBUZZ -#include -#include -#include - /*************************************************************************/ /* */ @@ -160,7 +156,7 @@ if ( !globals || !style_class || !gstyles ) return FT_THROW( Invalid_Argument ); - face = hb_ft_face_create( globals->face, NULL ); + face = hb_font_get_face( globals->hb_font ); lookups = hb_set_create(); glyphs = hb_set_create(); @@ -267,8 +263,6 @@ hb_set_destroy( lookups ); hb_set_destroy( glyphs ); - hb_face_destroy( face ); - return FT_Err_Ok; } diff --git a/src/autofit/hbshim.h b/src/autofit/hbshim.h index fdda2ace8..09df68098 100644 --- a/src/autofit/hbshim.h +++ b/src/autofit/hbshim.h @@ -26,6 +26,10 @@ #ifdef FT_CONFIG_OPTION_USE_HARFBUZZ +#include +#include +#include + FT_BEGIN_HEADER