summaryrefslogtreecommitdiff
path: root/src/autofit
diff options
context:
space:
mode:
authorWerner Lemberg <wl@gnu.org>2013-12-28 08:55:24 +0100
committerWerner Lemberg <wl@gnu.org>2013-12-28 08:55:24 +0100
commit6af01a04b1fb6db7f6fadf19211d24b893c1c6bc (patch)
treef709d9f451e2ed28fb39ce4ce91af5a4eda130aa /src/autofit
parentd32a7d32e4176fc63c7935d23042aeeed9b9ee93 (diff)
downloadfreetype2-6af01a04b1fb6db7f6fadf19211d24b893c1c6bc.tar.gz
[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.
Diffstat (limited to 'src/autofit')
-rw-r--r--src/autofit/afglobal.c10
-rw-r--r--src/autofit/afglobal.h5
-rw-r--r--src/autofit/hbshim.c10
-rw-r--r--src/autofit/hbshim.h4
4 files changed, 21 insertions, 8 deletions
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 <ft2build.h>
#include FT_FREETYPE_H
-
+#include "hbshim.h"
#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
-#include <hb.h>
-#include <hb-ot.h>
-#include <hb-ft.h>
-
/*************************************************************************/
/* */
@@ -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 <hb.h>
+#include <hb-ot.h>
+#include <hb-ft.h>
+
FT_BEGIN_HEADER