summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrcombs <rcombs@rcombs.me>2020-05-27 13:01:09 -0500
committerOleg Oshmyan <chortos@inbox.lv>2020-10-22 04:28:24 +0300
commitf3e2c97e1818598afb0b1c7010003ffe4823ff21 (patch)
treed6a3df4e4e276bbaf7d8e80634793b42a90eff90
parent30bd3d34d32cebeb7b1af6b9e77f617ef1d2bb9a (diff)
downloadlibass-f3e2c97e1818598afb0b1c7010003ffe4823ff21.tar.bz2
libass-f3e2c97e1818598afb0b1c7010003ffe4823ff21.tar.xz
Make harfbuzz a hard dependency; closes #199
-rw-r--r--configure.ac13
-rw-r--r--libass/ass_render.c4
-rw-r--r--libass/ass_render.h6
-rw-r--r--libass/ass_render_api.c2
-rw-r--r--libass/ass_shaper.c37
5 files changed, 3 insertions, 59 deletions
diff --git a/configure.ac b/configure.ac
index 6408c67..f7215c1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -47,8 +47,6 @@ AC_ARG_ENABLE([coretext], AS_HELP_STRING([--disable-coretext],
[disable CoreText support (OSX only) @<:@default=check@:>@]))
AC_ARG_ENABLE([require-system-font-provider], AS_HELP_STRING([--disable-require-system-font-provider],
[allow compilation even if no system font provider was found @<:@default=enabled:>@]))
-AC_ARG_ENABLE([harfbuzz], AS_HELP_STRING([--disable-harfbuzz],
- [disable HarfBuzz support @<:@default=check@:>@]))
AC_ARG_ENABLE([asm], AS_HELP_STRING([--disable-asm],
[disable compiling with ASM @<:@default=check@:>@]))
AC_ARG_ENABLE([large-tiles], AS_HELP_STRING([--enable-large-tiles],
@@ -210,14 +208,11 @@ AC_LINK_IFELSE([
fi
AM_CONDITIONAL([DIRECTWRITE], [test x$directwrite = xtrue])
-if test x$enable_harfbuzz != xno; then
PKG_CHECK_MODULES([HARFBUZZ], harfbuzz >= 1.2.3, [
CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
LIBS="$LIBS $HARFBUZZ_LIBS"
- AC_DEFINE(CONFIG_HARFBUZZ, 1, [found harfbuzz-ng via pkg-config])
- harfbuzz=true
- ], [harfbuzz=false])
-fi
+ AC_DEFINE(CONFIG_HARFBUZZ, 1, [found harfbuzz via pkg-config])
+ ])
libpng=false
if test x$enable_test = xyes || test x$enable_compare = xyes; then
@@ -242,12 +237,10 @@ if test "$use_libiconv" = true; then
fi
pkg_requires="freetype2 >= 9.10.3"
pkg_requires="fribidi >= 0.19.0, ${pkg_requires}"
+pkg_requires="harfbuzz >= 1.2.3, ${pkg_requires}"
if test x$fontconfig = xtrue; then
pkg_requires="fontconfig >= 2.10.92, ${pkg_requires}"
fi
-if test x$harfbuzz = xtrue; then
- pkg_requires="harfbuzz >= 1.2.3, ${pkg_requires}"
-fi
if test x$enable_require_system_font_provider != xno &&
test x$fontconfig != xtrue &&
diff --git a/libass/ass_render.c b/libass/ass_render.c
index df4b5de..6a7f26e 100644
--- a/libass/ass_render.c
+++ b/libass/ass_render.c
@@ -113,11 +113,7 @@ ASS_Renderer *ass_renderer_init(ASS_Library *library)
goto fail;
ass_shaper_info(library);
-#ifdef CONFIG_HARFBUZZ
priv->settings.shaper = ASS_SHAPING_COMPLEX;
-#else
- priv->settings.shaper = ASS_SHAPING_SIMPLE;
-#endif
ass_msg(library, MSGL_V, "Initialized");
diff --git a/libass/ass_render.h b/libass/ass_render.h
index 2207850..359152a 100644
--- a/libass/ass_render.h
+++ b/libass/ass_render.h
@@ -26,9 +26,7 @@
#include FT_FREETYPE_H
#include FT_GLYPH_H
#include FT_SYNTHESIS_H
-#ifdef CONFIG_HARFBUZZ
#include <hb.h>
-#endif
#include "ass.h"
#include "ass_font.h"
@@ -128,11 +126,7 @@ typedef struct glyph_info {
ASS_Font *font;
int face_index;
int glyph_index;
-#ifdef CONFIG_HARFBUZZ
hb_script_t script;
-#else
- int script;
-#endif
double font_size;
char *drawing_text;
int drawing_scale;
diff --git a/libass/ass_render_api.c b/libass/ass_render_api.c
index 29465a9..319758d 100644
--- a/libass/ass_render_api.c
+++ b/libass/ass_render_api.c
@@ -70,13 +70,11 @@ void ass_set_storage_size(ASS_Renderer *priv, int w, int h)
void ass_set_shaper(ASS_Renderer *priv, ASS_ShapingLevel level)
{
-#ifdef CONFIG_HARFBUZZ
// select the complex shaper for illegal values
if (level == ASS_SHAPING_SIMPLE || level == ASS_SHAPING_COMPLEX)
priv->settings.shaper = level;
else
priv->settings.shaper = ASS_SHAPING_COMPLEX;
-#endif
}
void ass_set_margins(ASS_Renderer *priv, int t, int b, int l, int r)
diff --git a/libass/ass_shaper.c b/libass/ass_shaper.c
index 19cafaf..4a7c11e 100644
--- a/libass/ass_shaper.c
+++ b/libass/ass_shaper.c
@@ -27,7 +27,6 @@
#include <limits.h>
#include <stdbool.h>
-#ifdef CONFIG_HARFBUZZ
#include <hb-ft.h>
enum {
VERT = 0,
@@ -37,7 +36,6 @@ enum {
CLIG
};
#define NUM_FEATURES 5
-#endif
struct ass_shaper {
ASS_ShapingLevel shaping_level;
@@ -50,7 +48,6 @@ struct ass_shaper {
FriBidiStrIndex *cmap;
FriBidiParType base_direction;
-#ifdef CONFIG_HARFBUZZ
// OpenType features
int n_features;
hb_feature_t *features;
@@ -58,7 +55,6 @@ struct ass_shaper {
// Glyph metrics cache, to speed up shaping
Cache *metrics_cache;
-#endif
#ifdef USE_FRIBIDI_EX_API
FriBidiBracketType *btypes;
@@ -66,7 +62,6 @@ struct ass_shaper {
#endif
};
-#ifdef CONFIG_HARFBUZZ
struct ass_shaper_metrics_data {
Cache *metrics_cache;
GlyphMetricsHashKey hash_key;
@@ -78,7 +73,6 @@ struct ass_shaper_font_data {
hb_font_funcs_t *font_funcs[ASS_FONT_MAX_FACES];
struct ass_shaper_metrics_data *metrics_data[ASS_FONT_MAX_FACES];
};
-#endif
/**
* \brief Print version information
@@ -87,9 +81,7 @@ void ass_shaper_info(ASS_Library *lib)
{
ass_msg(lib, MSGL_INFO, "Shaper: FriBidi "
FRIBIDI_VERSION " (SIMPLE)"
-#ifdef CONFIG_HARFBUZZ
" HarfBuzz-ng %s (COMPLEX)", hb_version_string()
-#endif
);
}
@@ -118,10 +110,8 @@ static bool check_allocations(ASS_Shaper *shaper, size_t new_size)
*/
void ass_shaper_free(ASS_Shaper *shaper)
{
-#ifdef CONFIG_HARFBUZZ
ass_cache_done(shaper->metrics_cache);
free(shaper->features);
-#endif
free(shaper->event_text);
free(shaper->ctypes);
#ifdef USE_FRIBIDI_EX_API
@@ -134,14 +124,11 @@ void ass_shaper_free(ASS_Shaper *shaper)
void ass_shaper_empty_cache(ASS_Shaper *shaper)
{
-#ifdef CONFIG_HARFBUZZ
ass_cache_empty(shaper->metrics_cache);
-#endif
}
void ass_shaper_font_data_free(ASS_ShaperFontData *priv)
{
-#ifdef CONFIG_HARFBUZZ
int i;
for (i = 0; i < ASS_FONT_MAX_FACES; i++)
if (priv->fonts[i]) {
@@ -150,10 +137,8 @@ void ass_shaper_font_data_free(ASS_ShaperFontData *priv)
hb_font_funcs_destroy(priv->font_funcs[i]);
}
free(priv);
-#endif
}
-#ifdef CONFIG_HARFBUZZ
/**
* \brief set up the HarfBuzz OpenType feature list with some
* standard features.
@@ -722,15 +707,6 @@ void ass_shaper_determine_script(ASS_Shaper *shaper, GlyphInfo *glyphs,
}
}
-#else
-
-size_t ass_glyph_metrics_construct(void *key, void *value, void *priv)
-{
- return 0; // that function should be never used
-}
-
-#endif
-
/**
* \brief Shape event text with FriBidi. Does mirroring and simple
* Arabic shaping.
@@ -765,9 +741,7 @@ static void shape_fribidi(ASS_Shaper *shaper, GlyphInfo *glyphs, size_t len)
*/
void ass_shaper_set_kerning(ASS_Shaper *shaper, bool kern)
{
-#ifdef CONFIG_HARFBUZZ
shaper->features[KERN].value = kern;
-#endif
}
/**
@@ -779,9 +753,7 @@ void ass_shaper_find_runs(ASS_Shaper *shaper, ASS_Renderer *render_priv,
int i;
int shape_run = 0;
-#ifdef CONFIG_HARFBUZZ
ass_shaper_determine_script(shaper, glyphs, len);
-#endif
// find appropriate fonts for the shape runs
for (i = 0; i < len; i++) {
@@ -820,7 +792,6 @@ void ass_shaper_set_base_direction(ASS_Shaper *shaper, FriBidiParType dir)
*/
void ass_shaper_set_language(ASS_Shaper *shaper, const char *code)
{
-#ifdef CONFIG_HARFBUZZ
hb_language_t lang;
if (code)
@@ -829,7 +800,6 @@ void ass_shaper_set_language(ASS_Shaper *shaper, const char *code)
lang = HB_LANGUAGE_INVALID;
shaper->language = lang;
-#endif
}
/**
@@ -918,7 +888,6 @@ int ass_shaper_shape(ASS_Shaper *shaper, TextInfo *text_info)
}
}
-#ifdef CONFIG_HARFBUZZ
switch (shaper->shaping_level) {
case ASS_SHAPING_SIMPLE:
shape_fribidi(shaper, glyphs, text_info->length);
@@ -928,10 +897,6 @@ int ass_shaper_shape(ASS_Shaper *shaper, TextInfo *text_info)
shape_harfbuzz(shaper, glyphs, text_info->length);
break;
}
-#else
- shape_fribidi(shaper, glyphs, text_info->length);
- ass_shaper_skip_characters(text_info);
-#endif
return 0;
}
@@ -947,13 +912,11 @@ ASS_Shaper *ass_shaper_new(void)
shaper->base_direction = FRIBIDI_PAR_ON;
-#ifdef CONFIG_HARFBUZZ
if (!init_features(shaper))
goto error;
shaper->metrics_cache = ass_glyph_metrics_cache_create();
if (!shaper->metrics_cache)
goto error;
-#endif
return shaper;