diff --git a/meson.build b/meson.build index 4ca64243a..31fa1aaf1 100644 --- a/meson.build +++ b/meson.build @@ -314,7 +314,7 @@ endif gdi_uniscribe_deps = [] # GDI (Uniscribe) (Windows) if host_machine.system() == 'windows' and not get_option('gdi').disabled() - if (get_option('directwrite').enabled() and + if (get_option('gdi').enabled() and not (cpp.has_header('usp10.h') and cpp.has_header('windows.h'))) error('GDI/Uniscribe was enabled explicitly, but required headers are missing.') endif @@ -334,10 +334,9 @@ endif # DirectWrite (Windows) if host_machine.system() == 'windows' and not get_option('directwrite').disabled() - if get_option('directwrite').enabled() and not cpp.has_header('dwrite_1.h') + if get_option('directwrite').enabled() and not cpp.has_header('dwrite_3.h') error('DirectWrite was enabled explicitly, but required header is missing.') endif - conf.set('HAVE_DIRECTWRITE', 1) endif diff --git a/src/hb-directwrite.cc b/src/hb-directwrite.cc index f138bd4f3..ddd765a84 100644 --- a/src/hb-directwrite.cc +++ b/src/hb-directwrite.cc @@ -28,9 +28,6 @@ #include "hb-shaper-impl.hh" -#include -#include - #include "hb-directwrite.h" #include "hb-ms-feature-ranges.hh" diff --git a/src/hb-directwrite.h b/src/hb-directwrite.h index 121569c15..b5b314e16 100644 --- a/src/hb-directwrite.h +++ b/src/hb-directwrite.h @@ -27,6 +27,8 @@ #include "hb.h" +#include + HB_BEGIN_DECLS HB_EXTERN hb_face_t * diff --git a/test/api/hb-test.h b/test/api/hb-test.h index 25d07ce0a..cdf355580 100644 --- a/test/api/hb-test.h +++ b/test/api/hb-test.h @@ -223,16 +223,6 @@ hb_test_add_func (const char *test_path, } #define hb_test_add(Func) hb_test_add_func (#Func, Func) -static inline void -hb_test_add_func_flavor (const char *test_path, - const char *flavor, - hb_test_func_t test_func) -{ - char *path = g_strdup_printf ("%s/%s", test_path, flavor); - hb_test_add_func (path, test_func); - g_free (path); -} -#define hb_test_add_flavor(Flavor, Func) hb_test_add_func (#Func, Flavor, Func) static inline void hb_test_add_data_func (const char *test_path, @@ -257,6 +247,7 @@ hb_test_add_data_func_flavor (const char *test_path, } #define hb_test_add_data_flavor(UserData, Flavor, Func) hb_test_add_data_func_flavor (#Func, Flavor, UserData, Func) +#define hb_test_add_flavor(Flavor, Func) hb_test_add_data_flavor (Flavor, Flavor, Func) static inline void hb_test_add_vtable (const char *test_path, diff --git a/test/api/meson.build b/test/api/meson.build index 0f7ac6900..24d0d854f 100644 --- a/test/api/meson.build +++ b/test/api/meson.build @@ -102,7 +102,17 @@ foreach source : tests cpp_args = [] test_name = source.split('.')[0] - deps = [glib_dep, freetype_dep, thread_dep, libharfbuzz_dep, libharfbuzz_icu_dep] + deps = [coretext_deps, + freetype_dep, + gdi_uniscribe_deps, + glib_dep, + graphite2_dep, + thread_dep, + libharfbuzz_dep, + libharfbuzz_icu_dep, + libharfbuzz_cairo_dep, + #libharfbuzz_gobject_dep + ] suite = ['api'] if test_name.contains('-subset') or test_name.contains('-instance') deps += libharfbuzz_subset_dep diff --git a/test/api/test-c.c b/test/api/test-c.c index 59eef4242..d0bdc9d6d 100644 --- a/test/api/test-c.c +++ b/test/api/test-c.c @@ -32,31 +32,54 @@ #endif #include +#include #include #include -#ifdef HAVE_GLIB -#include -#endif - -#ifdef HAVE_ICU -#include -#endif - -#ifdef HAVE_FREETYPE -#include -#endif - -#ifdef HAVE_UNISCRIBE -#include +#ifdef HAVE_CAIRO +#include #endif #ifdef HAVE_CORETEXT #include #endif +#ifdef HAVE_FREETYPE +#include +#endif + +#ifdef HAVE_FONTATIONS +#include +#endif + +#ifdef HAVE_GDI +#include +#endif + +#ifdef HAVE_GLIB +#include +#endif + +#ifdef HAVE_GRAPHITE2 +#include +#endif + +#ifdef HAVE_GOBJECT +//#include // Doesn't work uninstalled +#endif + +#ifdef HAVE_ICU +#include +#endif + +#ifdef HAVE_UNISCRIBE +#include +#endif + +#ifndef NO_MAIN int main (void) { return !*hb_shape_list_shapers (); } +#endif diff --git a/test/api/test-cplusplus.cc b/test/api/test-cplusplus.cc index 01b000271..74e4fb265 100644 --- a/test/api/test-cplusplus.cc +++ b/test/api/test-cplusplus.cc @@ -28,33 +28,12 @@ /* This file tests that all headers can be included from C++ files, * as well as test the C++ API. */ -#ifdef HAVE_CONFIG_H -#include -#endif +#define NO_MAIN +#include "test-c.c" +#undef NO_MAIN -#include -#include -#include -#include - -#ifdef HAVE_GLIB -#include -#endif - -#ifdef HAVE_ICU -#include -#endif - -#ifdef HAVE_FREETYPE -#include -#endif - -#ifdef HAVE_UNISCRIBE -#include -#endif - -#ifdef HAVE_CORETEXT -#include +#ifdef HAVE_DIRECTWRITE +#include #endif diff --git a/test/api/test-directwrite.cc b/test/api/test-directwrite.cc index 345b9d2a9..c48572192 100644 --- a/test/api/test-directwrite.cc +++ b/test/api/test-directwrite.cc @@ -25,8 +25,6 @@ */ -#include - #include "hb-test.h" #include "hb-directwrite.h" diff --git a/test/api/test-draw.c b/test/api/test-draw.c index a068c78f6..f8ec18ca3 100644 --- a/test/api/test-draw.c +++ b/test/api/test-draw.c @@ -26,12 +26,6 @@ #include #include -#ifdef HAVE_FREETYPE -#include -#endif -#ifdef HAVE_FONTATIONS -#include -#endif typedef struct draw_data_t { @@ -1078,8 +1072,9 @@ test_hb_draw_immutable (void) } static void -test_hb_draw_funcs (const char* font_funcs_name) +test_hb_draw_funcs (const void* user_data) { + const char *font_funcs_name = user_data; char str[1024]; draw_data_t draw_data = { .str = str, @@ -1097,12 +1092,6 @@ test_hb_draw_funcs (const char* font_funcs_name) char expected[] = "M50,0L50,750L450,750L450,0L50,0Z"; g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1); } - { - draw_data.consumed = 0; - hb_font_draw_glyph (font, 5, funcs, &draw_data); - char expected[] = "M15,0Q15,0 15,0Z"; - g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1); - } hb_font_destroy (font); } { @@ -1127,8 +1116,9 @@ test_hb_draw_funcs (const char* font_funcs_name) } static void -test_hb_draw_compare_ot_funcs (const char* font_funcs_name) +test_hb_draw_compare_ot_funcs (const void *user_data) { + const char* font_funcs_name = user_data; char str[1024]; draw_data_t draw_data = { .str = str, @@ -1162,34 +1152,6 @@ test_hb_draw_compare_ot_funcs (const char* font_funcs_name) hb_face_destroy (face); } -#ifdef HAVE_FREETYPE -static void -test_hb_draw_ft (void) -{ - test_hb_draw_funcs ("ft"); -} - -static void -test_hb_draw_compare_ot_ft (void) -{ - test_hb_draw_compare_ot_funcs ("ft"); -} -#endif - -#ifdef HAVE_FONTATIONS -static void -test_hb_draw_fontations (void) -{ - test_hb_draw_funcs ("fontations"); -} - -static void -test_hb_draw_compare_ot_fontations (void) -{ - test_hb_draw_compare_ot_funcs ("fontations"); -} -#endif - int main (int argc, char **argv) { @@ -1224,14 +1186,13 @@ main (int argc, char **argv) hb_test_add (test_hb_draw_synthetic_slant); hb_test_add (test_hb_draw_subfont_scale); hb_test_add (test_hb_draw_immutable); -#ifdef HAVE_FREETYPE - hb_test_add (test_hb_draw_ft); - hb_test_add (test_hb_draw_compare_ot_ft); -#endif -#ifdef HAVE_FONTATIONS - hb_test_add (test_hb_draw_fontations); - hb_test_add (test_hb_draw_compare_ot_fontations); -#endif + + const char **font_funcs = hb_font_list_funcs (); + for (const char **font_funcs_name = font_funcs; *font_funcs_name; font_funcs_name++) + { + hb_test_add_flavor (*font_funcs_name, test_hb_draw_funcs); + hb_test_add_flavor (*font_funcs_name, test_hb_draw_compare_ot_funcs); + } unsigned result = hb_test_run ();