CMakeLists.txt | 23 ++++++++++++++++++----- configure.ac | 9 ++++++++- src/gen-def.py | 2 +- src/hb-directwrite.cc | 37 +++++++++++++++++++++---------------- src/hb-ot-color-svg-table.hh | 24 ++++++++++++++++-------- src/hb-private.hh | 13 +++++++++++++ test/api/CMakeLists.txt | 7 ++++++- test/api/hb-subset-test.h | 17 +++++++++++++++-- test/api/test-subset-cmap.c | 8 ++++---- test/api/test-subset-glyf.c | 23 ++++++++++++++--------- test/api/test-subset-hdmx.c | 8 ++++---- test/api/test-subset-hmtx.c | 17 ++++++++++------- test/api/test-subset-os2.c | 4 ++-- test/fuzzing/CMakeLists.txt | 2 +- test/shaping/CMakeLists.txt | 4 ++-- test/subset/CMakeLists.txt | 2 +- 16 files changed, 136 insertions(+), 64 deletions(-)
New commits: commit d4907e83ef8e0d03acb701957cc1ee9acacb0a19 Author: Ebrahim Byagowi <ebra...@gnu.org> Date: Wed Mar 14 11:04:28 2018 +0330 [dwrite] GCC/mingw/msys2 compatibility (#884) diff --git a/src/hb-directwrite.cc b/src/hb-directwrite.cc index 69a8aa20..40e9e39b 100644 --- a/src/hb-directwrite.cc +++ b/src/hb-directwrite.cc @@ -1,5 +1,5 @@ /* - * Copyright © 2015-2016 Ebrahim Byagowi + * Copyright © 2015-2018 Ebrahim Byagowi * * This is part of HarfBuzz, a text shaping library. * @@ -48,7 +48,8 @@ class DWriteFontFileLoader : public IDWriteFontFileLoader private: IDWriteFontFileStream *mFontFileStream; public: - DWriteFontFileLoader (IDWriteFontFileStream *fontFileStream) { + void init (IDWriteFontFileStream *fontFileStream) + { mFontFileStream = fontFileStream; } @@ -73,7 +74,7 @@ private: uint8_t *mData; uint32_t mSize; public: - DWriteFontFileStream(uint8_t *aData, uint32_t aSize) + void init (uint8_t *aData, uint32_t aSize) { mData = aData; mSize = aSize; @@ -150,10 +151,14 @@ _hb_directwrite_shaper_face_data_create(hb_face_t *face) HRESULT hr; hb_blob_t *blob = hb_face_reference_blob (face); - IDWriteFontFileStream *fontFileStream = new DWriteFontFileStream ( - (uint8_t*) hb_blob_get_data (blob, nullptr), hb_blob_get_length (blob)); - - IDWriteFontFileLoader *fontFileLoader = new DWriteFontFileLoader (fontFileStream); + DWriteFontFileStream *fontFileStream = (DWriteFontFileStream*) + malloc (sizeof (DWriteFontFileStream)); + fontFileStream->init ((uint8_t*) hb_blob_get_data (blob, nullptr), + hb_blob_get_length (blob)); + + DWriteFontFileLoader *fontFileLoader = (DWriteFontFileLoader*) + malloc (sizeof (DWriteFontFileLoader)); + fontFileLoader->init (fontFileStream); dwriteFactory->RegisterFontFileLoader (fontFileLoader); IDWriteFontFile *fontFile; @@ -164,12 +169,12 @@ _hb_directwrite_shaper_face_data_create(hb_face_t *face) #define FAIL(...) \ HB_STMT_START { \ DEBUG_MSG (DIRECTWRITE, nullptr, __VA_ARGS__); \ - return false; \ + return nullptr; \ } HB_STMT_END; if (FAILED (hr)) { FAIL ("Failed to load font file from data!"); - return false; + return nullptr; } BOOL isSupported; @@ -179,7 +184,7 @@ _hb_directwrite_shaper_face_data_create(hb_face_t *face) hr = fontFile->Analyze (&isSupported, &fileType, &faceType, &numberOfFaces); if (FAILED (hr) || !isSupported) { FAIL ("Font file is not supported."); - return false; + return nullptr; } #undef FAIL @@ -211,9 +216,9 @@ _hb_directwrite_shaper_face_data_destroy(hb_directwrite_shaper_face_data_t *data data->dwriteFactory->Release (); } if (data->fontFileLoader) - delete data->fontFileLoader; + free (data->fontFileLoader); if (data->fontFileStream) - delete data->fontFileStream; + free (data->fontFileStream); if (data->faceBlob) hb_blob_destroy (data->faceBlob); if (data) @@ -280,14 +285,14 @@ public: IFACEMETHOD_(ULONG, AddRef)() { return 1; } IFACEMETHOD_(ULONG, Release)() { return 1; } - // A single contiguous run of characters containing the same analysis + // A single contiguous run of characters containing the same analysis // results. struct Run { uint32_t mTextStart; // starting text position of this run uint32_t mTextLength; // number of contiguous code units covered uint32_t mGlyphStart; // starting glyph in the glyphs array - uint32_t mGlyphCount; // number of glyphs associated with this run of + uint32_t mGlyphCount; // number of glyphs associated with this run // text DWRITE_SCRIPT_ANALYSIS mScript; uint8_t mBidiLevel; @@ -604,7 +609,7 @@ _hb_directwrite_shape_full(hb_shape_plan_t *shape_plan, // TODO: Handle TEST_DISABLE_OPTIONAL_LIGATURES - DWRITE_READING_DIRECTION readingDirection = buffer->props.direction ? + DWRITE_READING_DIRECTION readingDirection = buffer->props.direction ? DWRITE_READING_DIRECTION_RIGHT_TO_LEFT : DWRITE_READING_DIRECTION_LEFT_TO_RIGHT; @@ -919,7 +924,7 @@ hb_directwrite_shape_experimental_width(hb_font_t *font, unsigned int num_features, float width) { - static char *shapers = "directwrite"; + static char *shapers = (char *) "directwrite"; hb_shape_plan_t *shape_plan = hb_shape_plan_create_cached (font->face, &buffer->props, features, num_features, &shapers); hb_bool_t res = _hb_directwrite_shape_full (shape_plan, font, buffer, commit 93f8f89dedd2f8cf5eb40165a20d009de24c5eda Author: Ebrahim Byagowi <ebra...@gnu.org> Date: Wed Mar 14 09:56:31 2018 +0330 [ci] Trying to fix gen-def issue on appveyor (#885) diff --git a/src/gen-def.py b/src/gen-def.py index 1673537c..74507e46 100755 --- a/src/gen-def.py +++ b/src/gen-def.py @@ -7,7 +7,7 @@ import io, os, re, sys headers_content = [] for h in os.environ["headers"].split (' '): if h.endswith (".h"): - with io.open(h, encoding='utf8') as f: headers_content.append (f.read ()) + with io.open (h, encoding='ISO-8859-1') as f: headers_content.append (f.read ()) result = """EXPORTS %s commit a12dd6f75d85cf29ed78182ac97a12ebbcf77375 Merge: 28f25f32 7c43adab Author: Ebrahim Byagowi <ebra...@gnu.org> Date: Wed Mar 14 02:54:07 2018 +0330 Merge pull request #877 from fanc999/master.msvc Fix CMake builds on Windows, MSVC in particular commit 7c43adab6deb9302a24cc857c4aaa9b6b62215d2 Author: Chun-wei Fan <fanchun...@src.gnome.org> Date: Mon Mar 12 16:43:53 2018 +0800 CMake: Fix utility program installation Put in the utility program that was missed in installation by replacing the one that was duplicated. diff --git a/CMakeLists.txt b/CMakeLists.txt index dca71ed0..53e89740 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -762,7 +762,7 @@ if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL) install(TARGETS hb-view RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) - install(TARGETS hb-view + install(TARGETS hb-subset RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) commit e9b8002a6024d7a9b6de204897345ae77bb50881 Author: Chun-wei Fan <fanchun...@src.gnome.org> Date: Mon Mar 12 16:23:57 2018 +0800 CMake: Fix introspection on Windows The list of source files to pass to g-ir-scanner is becoming too long for Windows, as Windows imposes a 8192-character limit for command lines, so we need to first transform that list into a listings file, and then use the --filelist option for g-ir-scanner to build the introspection files. diff --git a/CMakeLists.txt b/CMakeLists.txt index 62e79450..dca71ed0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -646,6 +646,11 @@ if (HB_HAVE_INTROSPECTION) endif () endforeach () + file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/src/hb_gir_list) + foreach (s ${introspected_sources}) + file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/src/hb_gir_list "${s}\n") + endforeach () + # Finally, build the introspection files... add_custom_command( TARGET harfbuzz-gobject @@ -675,9 +680,9 @@ if (HB_HAVE_INTROSPECTION) --library=harfbuzz -L${hb_libpath} ${extra_libs} - ${introspected_sources} + --filelist ${CMAKE_CURRENT_BINARY_DIR}/src/hb_gir_list -o ${hb_libpath}/HarfBuzz-0.0.gir - DEPENDS harfbuzz-gobject harfbuzz + DEPENDS harfbuzz-gobject harfbuzz ${CMAKE_CURRENT_BINARY_DIR}/src/hb_gir_list ) add_custom_command( commit 831d4a2dab1f229811c3a90b791f2a19c88fc1b5 Author: Chun-wei Fan <fanchun...@src.gnome.org> Date: Mon Mar 12 13:48:55 2018 +0800 test/api: Fix building subset tests Include stdbool.h in hb-setset-test.h instead of in the individual sources, if it is found; otherwise use a simplistic fallback for it if it is not found. Also declare variables at the top of the block, to build on pre-C99 compiliers. diff --git a/test/api/hb-subset-test.h b/test/api/hb-subset-test.h index f8386b16..49c3fddb 100644 --- a/test/api/hb-subset-test.h +++ b/test/api/hb-subset-test.h @@ -32,6 +32,18 @@ #include "hb-test.h" #include "hb-subset.h" +#ifdef HAVE_STDBOOL_H +# include <stdbool.h> +#else +typedef short bool; +# ifndef true +# define true 1 +# endif +# ifndef false +# define false 0 +# endif +#endif + HB_BEGIN_DECLS @@ -122,9 +134,10 @@ hb_subset_test_check (hb_face_t *expected, hb_face_t *actual, hb_tag_t table) { + hb_blob_t *expected_blob, *actual_blob; fprintf(stderr, "compare %c%c%c%c\n", HB_UNTAG(table)); - hb_blob_t *expected_blob = hb_face_reference_table (expected, table); - hb_blob_t *actual_blob = hb_face_reference_table (actual, table); + expected_blob = hb_face_reference_table (expected, table); + actual_blob = hb_face_reference_table (actual, table); hb_test_assert_blobs_equal (expected_blob, actual_blob); hb_blob_destroy (expected_blob); hb_blob_destroy (actual_blob); diff --git a/test/api/test-subset-cmap.c b/test/api/test-subset-cmap.c index 07715791..618b7259 100644 --- a/test/api/test-subset-cmap.c +++ b/test/api/test-subset-cmap.c @@ -24,8 +24,6 @@ * Google Author(s): Roderick Sheeter */ -#include <stdbool.h> - #include "hb-test.h" #include "hb-subset-test.h" @@ -38,9 +36,10 @@ test_subset_cmap (void) hb_face_t *face_ac = hb_subset_test_open_font ("fonts/Roboto-Regular.ac.cmap-format12-only.ttf"); hb_set_t *codepoints = hb_set_create (); + hb_face_t *face_abc_subset; hb_set_add (codepoints, 97); hb_set_add (codepoints, 99); - hb_face_t *face_abc_subset = hb_subset_test_create_subset (face_abc, hb_subset_test_create_input (codepoints)); + face_abc_subset = hb_subset_test_create_subset (face_abc, hb_subset_test_create_input (codepoints)); hb_set_destroy (codepoints); hb_subset_test_check (face_ac, face_abc_subset, HB_TAG ('c','m','a','p')); @@ -56,10 +55,11 @@ test_subset_cmap_noop (void) hb_face_t *face_abc = hb_subset_test_open_font("fonts/Roboto-Regular.abc.cmap-format12-only.ttf"); hb_set_t *codepoints = hb_set_create(); + hb_face_t *face_abc_subset; hb_set_add (codepoints, 97); hb_set_add (codepoints, 98); hb_set_add (codepoints, 99); - hb_face_t *face_abc_subset = hb_subset_test_create_subset (face_abc, hb_subset_test_create_input (codepoints)); + face_abc_subset = hb_subset_test_create_subset (face_abc, hb_subset_test_create_input (codepoints)); hb_set_destroy (codepoints); hb_subset_test_check (face_abc, face_abc_subset, HB_TAG ('c','m','a','p')); diff --git a/test/api/test-subset-glyf.c b/test/api/test-subset-glyf.c index 8e17e8d5..e72086a3 100644 --- a/test/api/test-subset-glyf.c +++ b/test/api/test-subset-glyf.c @@ -24,8 +24,6 @@ * Google Author(s): Garret Rieger */ -#include <stdbool.h> - #include "hb-test.h" #include "hb-subset-test.h" @@ -66,9 +64,10 @@ test_subset_glyf (void) hb_face_t *face_ac = hb_subset_test_open_font ("fonts/Roboto-Regular.ac.ttf"); hb_set_t *codepoints = hb_set_create(); + hb_face_t *face_abc_subset; hb_set_add (codepoints, 97); hb_set_add (codepoints, 99); - hb_face_t *face_abc_subset = hb_subset_test_create_subset (face_abc, hb_subset_test_create_input (codepoints)); + face_abc_subset = hb_subset_test_create_subset (face_abc, hb_subset_test_create_input (codepoints)); hb_set_destroy (codepoints); hb_subset_test_check (face_ac, face_abc_subset, HB_TAG ('g','l','y','f')); @@ -87,8 +86,9 @@ test_subset_glyf_with_components (void) hb_face_t *face_subset = hb_subset_test_open_font ("fonts/Roboto-Regular.components.subset.ttf"); hb_set_t *codepoints = hb_set_create(); + hb_face_t *face_generated_subset; hb_set_add (codepoints, 0x1fc); - hb_face_t *face_generated_subset = hb_subset_test_create_subset (face_components, hb_subset_test_create_input (codepoints)); + face_generated_subset = hb_subset_test_create_subset (face_components, hb_subset_test_create_input (codepoints)); hb_set_destroy (codepoints); hb_subset_test_check (face_subset, face_generated_subset, HB_TAG ('g','l','y','f')); @@ -106,10 +106,11 @@ test_subset_glyf_noop (void) hb_face_t *face_abc = hb_subset_test_open_font("fonts/Roboto-Regular.abc.ttf"); hb_set_t *codepoints = hb_set_create(); + hb_face_t *face_abc_subset; hb_set_add (codepoints, 97); hb_set_add (codepoints, 98); hb_set_add (codepoints, 99); - hb_face_t *face_abc_subset = hb_subset_test_create_subset (face_abc, hb_subset_test_create_input (codepoints)); + face_abc_subset = hb_subset_test_create_subset (face_abc, hb_subset_test_create_input (codepoints)); hb_set_destroy (codepoints); hb_subset_test_check (face_abc, face_abc_subset, HB_TAG ('g','l','y','f')); @@ -127,11 +128,13 @@ test_subset_glyf_strip_hints_simple (void) hb_face_t *face_ac = hb_subset_test_open_font ("fonts/Roboto-Regular.ac.nohints.ttf"); hb_set_t *codepoints = hb_set_create(); + hb_subset_input_t *input; + hb_face_t *face_abc_subset; hb_set_add (codepoints, 'a'); hb_set_add (codepoints, 'c'); - hb_subset_input_t *input = hb_subset_test_create_input (codepoints); + input = hb_subset_test_create_input (codepoints); *hb_subset_input_drop_hints(input) = true; - hb_face_t *face_abc_subset = hb_subset_test_create_subset (face_abc, input); + face_abc_subset = hb_subset_test_create_subset (face_abc, input); hb_set_destroy (codepoints); hb_subset_test_check (face_ac, face_abc_subset, HB_TAG ('l','o','c', 'a')); @@ -150,11 +153,13 @@ test_subset_glyf_strip_hints_composite (void) hb_face_t *face_subset = hb_subset_test_open_font ("fonts/Roboto-Regular.components.1fc.nohints.ttf"); hb_set_t *codepoints = hb_set_create(); + hb_subset_input_t *input; + hb_face_t *face_generated_subset; hb_set_add (codepoints, 0x1fc); - hb_subset_input_t *input = hb_subset_test_create_input (codepoints); + input = hb_subset_test_create_input (codepoints); *hb_subset_input_drop_hints(input) = true; - hb_face_t *face_generated_subset = hb_subset_test_create_subset (face_components, input); + face_generated_subset = hb_subset_test_create_subset (face_components, input); hb_set_destroy (codepoints); hb_subset_test_check (face_subset, face_generated_subset, HB_TAG ('g','l','y','f')); diff --git a/test/api/test-subset-hdmx.c b/test/api/test-subset-hdmx.c index 5211dbc4..609ee061 100644 --- a/test/api/test-subset-hdmx.c +++ b/test/api/test-subset-hdmx.c @@ -24,8 +24,6 @@ * Google Author(s): Garret Rieger */ -#include <stdbool.h> - #include "hb-test.h" #include "hb-subset-test.h" @@ -39,9 +37,10 @@ test_subset_hdmx_simple_subset (void) hb_face_t *face_ac = hb_subset_test_open_font ("fonts/Roboto-Regular.ac.ttf"); hb_set_t *codepoints = hb_set_create (); + hb_face_t *face_abc_subset; hb_set_add (codepoints, 'a'); hb_set_add (codepoints, 'c'); - hb_face_t *face_abc_subset = hb_subset_test_create_subset (face_abc, hb_subset_test_create_input (codepoints)); + face_abc_subset = hb_subset_test_create_subset (face_abc, hb_subset_test_create_input (codepoints)); hb_set_destroy (codepoints); hb_subset_test_check (face_ac, face_abc_subset, HB_TAG ('h','d','m','x')); @@ -57,10 +56,11 @@ test_subset_hdmx_noop (void) hb_face_t *face_abc = hb_subset_test_open_font("fonts/Roboto-Regular.abc.ttf"); hb_set_t *codepoints = hb_set_create(); + hb_face_t *face_abc_subset; hb_set_add (codepoints, 'a'); hb_set_add (codepoints, 'b'); hb_set_add (codepoints, 'c'); - hb_face_t *face_abc_subset = hb_subset_test_create_subset (face_abc, hb_subset_test_create_input (codepoints)); + face_abc_subset = hb_subset_test_create_subset (face_abc, hb_subset_test_create_input (codepoints)); hb_set_destroy (codepoints); hb_subset_test_check (face_abc, face_abc_subset, HB_TAG ('h','d','m','x')); diff --git a/test/api/test-subset-hmtx.c b/test/api/test-subset-hmtx.c index 2b764526..fc57718a 100644 --- a/test/api/test-subset-hmtx.c +++ b/test/api/test-subset-hmtx.c @@ -24,8 +24,6 @@ * Google Author(s): Roderick Sheeter */ -#include <stdbool.h> - #include "hb-test.h" #include "hb-subset-test.h" @@ -53,9 +51,10 @@ test_subset_hmtx_simple_subset (void) hb_face_t *face_ac = hb_subset_test_open_font ("fonts/Roboto-Regular.ac.ttf"); hb_set_t *codepoints = hb_set_create (); + hb_face_t *face_abc_subset; hb_set_add (codepoints, 'a'); hb_set_add (codepoints, 'c'); - hb_face_t *face_abc_subset = hb_subset_test_create_subset (face_abc, hb_subset_test_create_input (codepoints)); + face_abc_subset = hb_subset_test_create_subset (face_abc, hb_subset_test_create_input (codepoints)); hb_set_destroy (codepoints); check_num_hmetrics(face_abc_subset, 3); /* nothing has same width */ @@ -74,9 +73,10 @@ test_subset_hmtx_monospace (void) hb_face_t *face_ac = hb_subset_test_open_font ("fonts/Inconsolata-Regular.ac.ttf"); hb_set_t *codepoints = hb_set_create (); + hb_face_t *face_abc_subset; hb_set_add (codepoints, 'a'); hb_set_add (codepoints, 'c'); - hb_face_t *face_abc_subset = hb_subset_test_create_subset (face_abc, hb_subset_test_create_input (codepoints)); + face_abc_subset = hb_subset_test_create_subset (face_abc, hb_subset_test_create_input (codepoints)); hb_set_destroy (codepoints); check_num_hmetrics(face_abc_subset, 1); /* everything has same width */ @@ -95,9 +95,10 @@ test_subset_hmtx_keep_num_metrics (void) hb_face_t *face_ac = hb_subset_test_open_font ("fonts/Inconsolata-Regular.ac.widerc.ttf"); hb_set_t *codepoints = hb_set_create (); + hb_face_t *face_abc_subset; hb_set_add (codepoints, 'a'); hb_set_add (codepoints, 'c'); - hb_face_t *face_abc_subset = hb_subset_test_create_subset (face_abc, hb_subset_test_create_input (codepoints)); + face_abc_subset = hb_subset_test_create_subset (face_abc, hb_subset_test_create_input (codepoints)); hb_set_destroy (codepoints); check_num_hmetrics(face_abc_subset, 3); /* c is wider */ @@ -115,9 +116,10 @@ test_subset_hmtx_decrease_num_metrics (void) hb_face_t *face_ab = hb_subset_test_open_font ("fonts/Inconsolata-Regular.ab.ttf"); hb_set_t *codepoints = hb_set_create (); + hb_face_t *face_abc_subset; hb_set_add (codepoints, 'a'); hb_set_add (codepoints, 'b'); - hb_face_t *face_abc_subset = hb_subset_test_create_subset (face_abc, hb_subset_test_create_input (codepoints)); + face_abc_subset = hb_subset_test_create_subset (face_abc, hb_subset_test_create_input (codepoints)); hb_set_destroy (codepoints); check_num_hmetrics(face_abc_subset, 1); /* everything left has same width */ @@ -134,10 +136,11 @@ test_subset_hmtx_noop (void) hb_face_t *face_abc = hb_subset_test_open_font("fonts/Roboto-Regular.abc.ttf"); hb_set_t *codepoints = hb_set_create(); + hb_face_t *face_abc_subset; hb_set_add (codepoints, 'a'); hb_set_add (codepoints, 'b'); hb_set_add (codepoints, 'c'); - hb_face_t *face_abc_subset = hb_subset_test_create_subset (face_abc, hb_subset_test_create_input (codepoints)); + face_abc_subset = hb_subset_test_create_subset (face_abc, hb_subset_test_create_input (codepoints)); hb_set_destroy (codepoints); check_num_hmetrics(face_abc_subset, 4); /* nothing has same width */ diff --git a/test/api/test-subset-os2.c b/test/api/test-subset-os2.c index e9db9bed..de63a3fd 100644 --- a/test/api/test-subset-os2.c +++ b/test/api/test-subset-os2.c @@ -24,7 +24,6 @@ * Google Author(s): Garret Rieger */ -#include <stdbool.h> #include "hb-test.h" #include "hb-subset-test.h" @@ -36,8 +35,9 @@ test_subset_os2 (void) hb_face_t *face_b = hb_subset_test_open_font("fonts/Roboto-Regular.b.ttf"); hb_set_t *codepoints = hb_set_create(); + hb_face_t *face_abc_subset; hb_set_add (codepoints, 98); - hb_face_t *face_abc_subset = hb_subset_test_create_subset (face_abc, hb_subset_test_create_input (codepoints)); + face_abc_subset = hb_subset_test_create_subset (face_abc, hb_subset_test_create_input (codepoints)); hb_set_destroy (codepoints); hb_subset_test_check (face_b, face_abc_subset, HB_TAG ('O','S','/','2')); commit eda6a5ea807ba8a4e7fa20ad0273b394ed72d106 Author: Chun-wei Fan <fanchun...@src.gnome.org> Date: Mon Mar 12 13:38:01 2018 +0800 CMake: Fix running tests on Windows For the API tests, output the test programs at $(TOP_BUILDDIR) so that the freshly-built DLLs will be available for the test programs. For those that are run through the Python wrapper scripts, use ${PYTHON_EXECUTABLE} instead of plain 'python' in case the Python interpreter is not in the PATH. diff --git a/test/api/CMakeLists.txt b/test/api/CMakeLists.txt index f1a2300f..b540eb50 100644 --- a/test/api/CMakeLists.txt +++ b/test/api/CMakeLists.txt @@ -21,7 +21,12 @@ if (HB_HAVE_GLIB) message (FATAL_ERROR "No source file found for test ${test_name}") endif () target_link_libraries (${test_name} harfbuzz harfbuzz-subset) - add_test (${test_name} ${test_name}) + if (WIN32) + set_property (TARGET ${test_name} PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) + add_test (NAME ${test_name} COMMAND ${test_name}) + else (WIN32) + add_test (${test_name} ${test_name}) + endif (WIN32) endforeach () set_tests_properties (${TEST_PROGS} PROPERTIES ENVIRONMENT "G_TEST_SRCDIR=${CMAKE_CURRENT_SOURCE_DIR};G_TEST_BUILDDIR=${CMAKE_CURRENT_BINARY_DIR}" diff --git a/test/fuzzing/CMakeLists.txt b/test/fuzzing/CMakeLists.txt index e31c7442..fe4cf790 100644 --- a/test/fuzzing/CMakeLists.txt +++ b/test/fuzzing/CMakeLists.txt @@ -13,6 +13,6 @@ if (HB_CHECK) target_compile_definitions(hb-fuzzer PUBLIC ${FUZZING_CPPFLAGS}) add_test (NAME hb-fuzzer - COMMAND python run-fuzzer-tests.py $<TARGET_FILE:hb-fuzzer> + COMMAND "${PYTHON_EXECUTABLE}" run-fuzzer-tests.py $<TARGET_FILE:hb-fuzzer> WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) endif () diff --git a/test/shaping/CMakeLists.txt b/test/shaping/CMakeLists.txt index 4bdc5c9e..7c2c9990 100644 --- a/test/shaping/CMakeLists.txt +++ b/test/shaping/CMakeLists.txt @@ -3,7 +3,7 @@ if (HB_BUILD_UTILS) extract_make_variable (TESTS ${INHOUSE}) foreach (test IN ITEMS ${TESTS}) add_test (NAME ${test} - COMMAND python run-tests.py $<TARGET_FILE:hb-shape> "data/in-house/${test}" + COMMAND "${PYTHON_EXECUTABLE}" run-tests.py $<TARGET_FILE:hb-shape> "data/in-house/${test}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) endforeach () @@ -11,7 +11,7 @@ if (HB_BUILD_UTILS) extract_make_variable (TESTS ${TEXTRENDERING}) foreach (test IN ITEMS ${TESTS}) add_test (NAME ${test} - COMMAND python run-tests.py $<TARGET_FILE:hb-shape> "data/text-rendering-tests/${test}" + COMMAND "${PYTHON_EXECUTABLE}" run-tests.py $<TARGET_FILE:hb-shape> "data/text-rendering-tests/${test}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) endforeach () endif () diff --git a/test/subset/CMakeLists.txt b/test/subset/CMakeLists.txt index ea04105c..af2b41ab 100644 --- a/test/subset/CMakeLists.txt +++ b/test/subset/CMakeLists.txt @@ -3,7 +3,7 @@ if (HB_BUILD_UTILS) extract_make_variable (TESTS ${SOURCES}) foreach (test IN ITEMS ${TESTS}) add_test (NAME ${test} - COMMAND python run-tests.py $<TARGET_FILE:hb-subset> "data/${test}" + COMMAND "${PYTHON_EXECUTABLE}" run-tests.py $<TARGET_FILE:hb-subset> "data/${test}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) set_property(TEST ${test} PROPERTY SKIP_RETURN_CODE 77) endforeach () commit b9dcbb1f8312d8606b230f75594d40b7d4087004 Author: Chun-wei Fan <fanchun...@src.gnome.org> Date: Mon Mar 12 13:33:03 2018 +0800 hb-private.hh: Add fallback implementation for round() Add a simplistic round() implementation for our purposes, used when the compiler does not support round() directly. diff --git a/src/hb-private.hh b/src/hb-private.hh index daa496e9..62a103cf 100644 --- a/src/hb-private.hh +++ b/src/hb-private.hh @@ -1070,4 +1070,17 @@ struct hb_string_t }; +/* fallback for round() */ +#if !defined (HAVE_ROUND) && !defined (HAVE_DECL_ROUND) +static inline double +round (double x) +{ + if (x >= 0) + return floor (x + 0.5); + else + return ceil (x - 0.5); +} +#endif + + #endif /* HB_PRIVATE_HH */ commit 89dbabff65a39dfb0d9ad036516d5b96c37739de Author: Chun-wei Fan <fanchun...@src.gnome.org> Date: Mon Mar 12 13:27:38 2018 +0800 configure.ac/CMake: Check for round() and stdbool.h Not all the compilers that HarfBuzz is buildable on supports round() and has the header stdbool.h, so we check for them and define HAVE_ROUND and HAVE_STDBOOL_H repsectively in our CFLAGS so that we include them only when they are found, or use fallback implementations when necessary. Also include FindPythonInterp earlier as we need PYTHON_EXECUTABLE to be set for running the tests. diff --git a/CMakeLists.txt b/CMakeLists.txt index defd5d6c..62e79450 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -90,6 +90,8 @@ include_directories(AFTER add_definitions(-DHAVE_OT) add_definitions(-DHAVE_FALLBACK) +# We need PYTHON_EXECUTABLE to be set for running the tests... +include (FindPythonInterp) ## Functions and headers include (CheckFunctionExists) @@ -103,7 +105,10 @@ macro (check_funcs) # Similar to AC_CHECK_FUNCS of autotools endif () endforeach () endmacro () -check_funcs(atexit mprotect sysconf getpagesize mmap isatty newlocale strtod_l) +if (UNIX) + list(APPEND CMAKE_REQUIRED_LIBRARIES m) +endif () +check_funcs(atexit mprotect sysconf getpagesize mmap isatty newlocale strtod_l round) check_include_file(unistd.h HAVE_UNISTD_H) if (${HAVE_UNISTD_H}) add_definitions(-DHAVE_UNISTD_H) @@ -116,6 +121,10 @@ check_include_file(xlocale.h HAVE_XLOCALE_H) if (${HAVE_XLOCALE_H}) add_definitions(-DHAVE_XLOCALE_H) endif () +check_include_file(stdbool.h HAVE_STDBOOL_H) +if (${HAVE_STDBOOL_H}) + add_definitions(-DHAVE_STDBOOL_H) +endif () if (MSVC) @@ -385,7 +394,6 @@ if (WIN32 AND HB_HAVE_DIRECTWRITE) endif () if (HB_HAVE_GOBJECT) - include (FindPythonInterp) include (FindPerl) # Use the hints from glib-2.0.pc to find glib-mkenums diff --git a/configure.ac b/configure.ac index 1fb8a10a..031be4a7 100644 --- a/configure.ac +++ b/configure.ac @@ -78,8 +78,15 @@ GTK_DOC_CHECK([1.15],[--flavour no-tmpl]) ]) # Functions, and headers + AC_CHECK_FUNCS(atexit mprotect sysconf getpagesize mmap isatty newlocale strtod_l setlinebuf) -AC_CHECK_HEADERS(unistd.h sys/mman.h xlocale.h) + +save_libs="$LIBS" +LIBS="$LIBS -lm" +AC_CHECK_FUNCS([round], ,[AC_CHECK_DECLS([round], , ,[#include <math.h>])]) +LIBS="$save_libs" + +AC_CHECK_HEADERS(unistd.h sys/mman.h xlocale.h stdbool.h) # Compiler flags AC_CANONICAL_HOST commit 28f25f32fc63c3e1ae0d04b6eb5ea6b729fb2228 Author: Ebrahim Byagowi <ebra...@gnu.org> Date: Mon Mar 12 14:00:11 2018 +0330 [ot-color/SVG] Minor (#878) diff --git a/src/hb-ot-color-svg-table.hh b/src/hb-ot-color-svg-table.hh index 7e5161c9..3dc24e99 100644 --- a/src/hb-ot-color-svg-table.hh +++ b/src/hb-ot-color-svg-table.hh @@ -49,10 +49,15 @@ struct SVGDocumentIndexEntry } protected: - HBUINT16 startGlyphID; - HBUINT16 endGlyphID; - LOffsetTo<const uint8_t *> svgDoc; - HBUINT32 svgDocLength; + HBUINT16 startGlyphID; /* The first glyph ID in the range described by + * this index entry. */ + HBUINT16 endGlyphID; /* The last glyph ID in the range described by + * this index entry. Must be >= startGlyphID. */ + LOffsetTo<const uint8_t *> + svgDoc; /* Offset from the beginning of the SVG Document Index + * to an SVG document. Must be non-zero. */ + HBUINT32 svgDocLength; /* Length of the SVG document. + * Must be non-zero. */ public: DEFINE_SIZE_STATIC (12); }; @@ -81,7 +86,8 @@ struct SVGDocumentIndex // } protected: - ArrayOf<SVGDocumentIndexEntry> entries; + ArrayOf<SVGDocumentIndexEntry> + entries; /* Array of SVG Document Index Entries. */ public: DEFINE_SIZE_ARRAY (2, entries); }; @@ -98,9 +104,11 @@ struct SVG } protected: - HBUINT16 version; - LOffsetTo<SVGDocumentIndex> svgDocIndex; - HBUINT32 reserved; + HBUINT16 version; /* Table version (starting at 0). */ + LOffsetTo<SVGDocumentIndex> + svgDocIndex; /* Offset (relative to the start of the SVG table) to the + * SVG Documents Index. Must be non-zero. */ + HBUINT32 reserved; /* Set to 0. */ public: DEFINE_SIZE_STATIC (10); }; _______________________________________________ HarfBuzz mailing list HarfBuzz@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/harfbuzz