.travis.yml | 2 CMakeLists.txt | 40 ++++++---- src/check-defs.sh | 4 - src/check-libstdc++.sh | 13 ++- src/hb-aat-layout-common-private.hh | 33 -------- test/shaping/data/text-rendering-tests/DISABLED | 7 + test/shaping/data/text-rendering-tests/Makefile.sources | 7 + test/shaping/data/text-rendering-tests/fonts/TestMORXEighteen.ttf |binary test/shaping/data/text-rendering-tests/fonts/TestMORXSeventeen.ttf |binary test/shaping/data/text-rendering-tests/fonts/TestMORXSixteen.ttf |binary test/shaping/data/text-rendering-tests/fonts/TestMORXTwenty.ttf |binary test/shaping/data/text-rendering-tests/fonts/TestMORXTwentyone.ttf |binary test/shaping/data/text-rendering-tests/fonts/TestMORXTwentytwo.ttf |binary test/shaping/data/text-rendering-tests/tests/MORX-14.tests | 1 test/shaping/data/text-rendering-tests/tests/MORX-16.tests | 1 test/shaping/data/text-rendering-tests/tests/MORX-17.tests | 1 test/shaping/data/text-rendering-tests/tests/MORX-18.tests | 4 + test/shaping/data/text-rendering-tests/tests/MORX-19.tests | 2 test/shaping/data/text-rendering-tests/tests/MORX-20.tests | 7 + test/shaping/data/text-rendering-tests/tests/MORX-21.tests | 1 test/shaping/data/text-rendering-tests/tests/MORX-22.tests | 1 21 files changed, 72 insertions(+), 52 deletions(-)
New commits: commit e89df6e1aee9cb6fe1268643ce19816808baf0c4 Author: Behdad Esfahbod <beh...@behdad.org> Date: Tue Jan 30 10:58:44 2018 -0800 [aat] Limit number of DontAdvance transitions Remove the faulty loop-detection logic. Use max-ops for breaking out of infinite loops or heavy work. https://twitter.com/behdadesfahbod/status/958065026262183936 diff --git a/src/hb-aat-layout-common-private.hh b/src/hb-aat-layout-common-private.hh index d62bafc5..b5395bba 100644 --- a/src/hb-aat-layout-common-private.hh +++ b/src/hb-aat-layout-common-private.hh @@ -615,13 +615,7 @@ struct StateTableDriver machine (machine_), buffer (buffer_), num_glyphs (face_->get_num_glyphs ()), - last_zero (0), - dont_advance_set (nullptr) {} - - inline ~StateTableDriver (void) - { - hb_set_destroy (dont_advance_set); - } + last_zero (0) {} template <typename context_t> inline void drive (context_t *c) @@ -648,27 +642,7 @@ struct StateTableDriver if (unlikely (!c->transition (this, entry))) break; - if (entry->flags & context_t::DontAdvance) - { - if (!last_was_dont_advance) - { - if (dont_advance_set) - dont_advance_set->clear (); - else - dont_advance_set = hb_set_create (); - } - - unsigned int key = info[buffer->idx].codepoint ^ (state << 16); - if (likely (!dont_advance_set->has (key))) - { - dont_advance_set->add (key); - last_was_dont_advance = true; - } - else - last_was_dont_advance = false; - } - else - last_was_dont_advance = false; + last_was_dont_advance = (entry->flags & context_t::DontAdvance) && buffer->max_ops--; state = entry->newState; @@ -692,9 +666,6 @@ struct StateTableDriver hb_buffer_t *buffer; unsigned int num_glyphs; unsigned int last_zero; - - private: - hb_set_t *dont_advance_set; /* Infinite-loop detection */ }; commit e00743b47d25a2487b7f232a514a042e2962a089 Author: Behdad Esfahbod <beh...@behdad.org> Date: Mon Jan 29 10:07:05 2018 -0800 [test/text-rendering-tests] Update from upstream diff --git a/test/shaping/data/text-rendering-tests/DISABLED b/test/shaping/data/text-rendering-tests/DISABLED index 45b8510a..1439d43f 100644 --- a/test/shaping/data/text-rendering-tests/DISABLED +++ b/test/shaping/data/text-rendering-tests/DISABLED @@ -16,6 +16,13 @@ tests/MORX-11.tests tests/MORX-12.tests tests/MORX-13.tests tests/MORX-14.tests +tests/MORX-16.tests +tests/MORX-17.tests +tests/MORX-18.tests +tests/MORX-19.tests +tests/MORX-20.tests +tests/MORX-21.tests +tests/MORX-22.tests # Rounding differences tests/SHARAN-1.tests diff --git a/test/shaping/data/text-rendering-tests/Makefile.sources b/test/shaping/data/text-rendering-tests/Makefile.sources index 311812c7..c28487f8 100644 --- a/test/shaping/data/text-rendering-tests/Makefile.sources +++ b/test/shaping/data/text-rendering-tests/Makefile.sources @@ -39,6 +39,13 @@ DISBALED_TESTS = \ tests/MORX-12.tests \ tests/MORX-13.tests \ tests/MORX-14.tests \ + tests/MORX-16.tests \ + tests/MORX-17.tests \ + tests/MORX-18.tests \ + tests/MORX-19.tests \ + tests/MORX-20.tests \ + tests/MORX-21.tests \ + tests/MORX-22.tests \ tests/MORX-1.tests \ tests/MORX-2.tests \ tests/MORX-3.tests \ diff --git a/test/shaping/data/text-rendering-tests/fonts/TestMORXEighteen.ttf b/test/shaping/data/text-rendering-tests/fonts/TestMORXEighteen.ttf new file mode 100644 index 00000000..91c364f3 Binary files /dev/null and b/test/shaping/data/text-rendering-tests/fonts/TestMORXEighteen.ttf differ diff --git a/test/shaping/data/text-rendering-tests/fonts/TestMORXSeventeen.ttf b/test/shaping/data/text-rendering-tests/fonts/TestMORXSeventeen.ttf new file mode 100644 index 00000000..9dd3a844 Binary files /dev/null and b/test/shaping/data/text-rendering-tests/fonts/TestMORXSeventeen.ttf differ diff --git a/test/shaping/data/text-rendering-tests/fonts/TestMORXSixteen.ttf b/test/shaping/data/text-rendering-tests/fonts/TestMORXSixteen.ttf new file mode 100644 index 00000000..e34e1fec Binary files /dev/null and b/test/shaping/data/text-rendering-tests/fonts/TestMORXSixteen.ttf differ diff --git a/test/shaping/data/text-rendering-tests/fonts/TestMORXTwenty.ttf b/test/shaping/data/text-rendering-tests/fonts/TestMORXTwenty.ttf new file mode 100644 index 00000000..769e29bc Binary files /dev/null and b/test/shaping/data/text-rendering-tests/fonts/TestMORXTwenty.ttf differ diff --git a/test/shaping/data/text-rendering-tests/fonts/TestMORXTwentyone.ttf b/test/shaping/data/text-rendering-tests/fonts/TestMORXTwentyone.ttf new file mode 100644 index 00000000..41016804 Binary files /dev/null and b/test/shaping/data/text-rendering-tests/fonts/TestMORXTwentyone.ttf differ diff --git a/test/shaping/data/text-rendering-tests/fonts/TestMORXTwentytwo.ttf b/test/shaping/data/text-rendering-tests/fonts/TestMORXTwentytwo.ttf new file mode 100644 index 00000000..4459e8a7 Binary files /dev/null and b/test/shaping/data/text-rendering-tests/fonts/TestMORXTwentytwo.ttf differ diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-14.tests b/test/shaping/data/text-rendering-tests/tests/MORX-14.tests index bff742f3..13692476 100644 --- a/test/shaping/data/text-rendering-tests/tests/MORX-14.tests +++ b/test/shaping/data/text-rendering-tests/tests/MORX-14.tests @@ -1 +1,2 @@ ../fonts/TestMORXFourteen.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0043,U+0044,U+0045:[B|C@626,0|D@1222,0|E@1896,0|A@2452,0] +../fonts/TestMORXFourteen.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0042,U+0042,U+0043,U+0043,U+0043,U+0044,U+0044,U+0044,U+0042,U+0043,U+0044,U+0043,U+0045:[B|B@626,0|B@1252,0|C@1878,0|C@2474,0|C@3070,0|D@3666,0|D@4340,0|D@5014,0|B@5688,0|C@6314,0|D@6910,0|C@7584,0|E@8180,0|A@8736,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-16.tests b/test/shaping/data/text-rendering-tests/tests/MORX-16.tests new file mode 100644 index 00000000..ce0d5b2f --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-16.tests @@ -0,0 +1 @@ +../fonts/TestMORXSixteen.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0043,U+0044,U+0045:[B|C@626,0|D@1222,0|E@1896,0|A@2452,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-17.tests b/test/shaping/data/text-rendering-tests/tests/MORX-17.tests new file mode 100644 index 00000000..6e1c94c4 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-17.tests @@ -0,0 +1 @@ +../fonts/TestMORXSeventeen.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042:[B|A@626,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-18.tests b/test/shaping/data/text-rendering-tests/tests/MORX-18.tests new file mode 100644 index 00000000..b032a76f --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-18.tests @@ -0,0 +1,4 @@ +../fonts/TestMORXEighteen.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0043,U+0044,U+0045:[A|B.alt@639,0|C@1639,0|D.alt1@2235,0|E@3235,0] +../fonts/TestMORXEighteen.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0042,U+0042,U+0044,U+0045:[A|B@639,0|B@1265,0|B.alt@1891,0|D.alt1@2891,0|E@3891,0] +../fonts/TestMORXEighteen.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0044,U+0045:[A|B.alt@639,0|D.alt1@1639,0|E@2639,0] +../fonts/TestMORXEighteen.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0045:[A|B@639,0|E@1265,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-19.tests b/test/shaping/data/text-rendering-tests/tests/MORX-19.tests new file mode 100644 index 00000000..e9b9dc44 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-19.tests @@ -0,0 +1,2 @@ +../fonts/TestMORXEighteen.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0043,U+0044,U+0045:[A.alt|C@1000,0|D.alt1@1596,0|E@2596,0] +../fonts/TestMORXEighteen.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0044:[D.alt] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-20.tests b/test/shaping/data/text-rendering-tests/tests/MORX-20.tests new file mode 100644 index 00000000..8d04192b --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-20.tests @@ -0,0 +1,7 @@ +../fonts/TestMORXTwenty.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0043,U+0044,U+0045:[A|B@639,0|C.alt@1265,0|D@2265,0|E.alt1@2939,0] +../fonts/TestMORXTwenty.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0043:[A|B@639,0|C.alt@1265,0] +../fonts/TestMORXTwenty.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0045:[A|B.alt@639,0|E.alt1@1639,0] +../fonts/TestMORXTwenty.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0045:[A.alt|E.alt1@1000,0] +../fonts/TestMORXTwenty.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0045,U+0045:[E|E@556,0] +../fonts/TestMORXTwenty.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041:[A.alt] +../fonts/TestMORXTwenty.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0045:[E] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-21.tests b/test/shaping/data/text-rendering-tests/tests/MORX-21.tests new file mode 100644 index 00000000..a6087559 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-21.tests @@ -0,0 +1 @@ +../fonts/TestMORXTwentyone.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0043,U+0044,U+0045:[A|B.alt@639,0|C@1639,0|D@2235,0|E@2909,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-22.tests b/test/shaping/data/text-rendering-tests/tests/MORX-22.tests new file mode 100644 index 00000000..960874c1 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-22.tests @@ -0,0 +1 @@ +../fonts/TestMORXTwentytwo.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041:[C] commit 29d901286e632fa4de5ea198cc455cae56bc09a8 Author: Ebrahim Byagowi <ebra...@gnu.org> Date: Tue Jan 30 10:01:46 2018 +0330 [cmake] Build src/ executables (#733) diff --git a/CMakeLists.txt b/CMakeLists.txt index c0853d6d..3a593666 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -126,7 +126,7 @@ if (BUILD_SHARED_LIBS) if (WIN32 AND NOT MINGW) add_definitions("-DHB_EXTERN=__declspec(dllexport) extern") else () - set (CMAKE_CXX_FLAGS "-fvisibility-inlines-hidden ${CMAKE_CXX_FLAGS}") + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility-inlines-hidden") endif () endif () @@ -272,8 +272,10 @@ if (HB_HAVE_FREETYPE) list(APPEND project_sources ${PROJECT_SOURCE_DIR}/src/hb-ft.cc) list(APPEND project_headers ${PROJECT_SOURCE_DIR}/src/hb-ft.h) + # So check_funcs can find its headers set (CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${FREETYPE_INCLUDE_DIRS}) set (CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${FREETYPE_LIBRARIES}) + check_funcs(FT_Get_Var_Blend_Coordinates FT_Set_Var_Blend_Coordinates FT_Done_MM_Var) endif () @@ -522,19 +524,16 @@ if (UNIX OR MINGW) link_libraries(-Bsymbolic-functions) # Make sure we don't link to libstdc++ - if (BUILD_SHARED_LIBS AND ( - CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR - CMAKE_CXX_COMPILER_ID STREQUAL "GNU" - )) - set (CMAKE_CXX_FLAGS "-fno-rtti -fno-exceptions ${CMAKE_CXX_FLAGS}") + if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti -fno-exceptions") + set (CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "m") # libm + set (CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "") + set_target_properties(harfbuzz PROPERTIES LINKER_LANGUAGE C) endif () - set (CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "m") # libm - set (CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "") - set_target_properties(harfbuzz PROPERTIES LINKER_LANGUAGE C) # No threadsafe statics as we do it ourselves if (BUILD_SHARED_LIBS) - set (CMAKE_CXX_FLAGS "-fno-threadsafe-statics ${CMAKE_CXX_FLAGS}") + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-threadsafe-statics") endif () endif () @@ -775,16 +774,29 @@ endif () if (UNIX AND CMAKE_GENERATOR STREQUAL "Ninja") if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - set (CMAKE_CXX_FLAGS "-fcolor-diagnostics ${CMAKE_CXX_FLAGS}") - set (CMAKE_C_FLAGS "-fcolor-diagnostics ${CMAKE_C_FLAGS}") + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fcolor-diagnostics") + set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fcolor-diagnostics") endif () if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - set (CMAKE_CXX_FLAGS "-fdiagnostics-color ${CMAKE_CXX_FLAGS}") - set (CMAKE_C_FLAGS "-fdiagnostics-color ${CMAKE_C_FLAGS}") + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdiagnostics-color") + set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdiagnostics-color") endif () endif () +## src/ executables +foreach (prog main test test-would-substitute test-size-params test-buffer-serialize hb-ot-tag) + set (prog_name ${prog}) + if (${prog_name} STREQUAL "test") + # test can not be used as a valid executable name on cmake, lets special case it + set (prog_name test-test) + endif () + add_executable(${prog_name} ${PROJECT_SOURCE_DIR}/src/${prog}.cc) + target_link_libraries(${prog_name} harfbuzz ${THIRD_PARTY_LIBS}) +endforeach () +set_target_properties(hb-ot-tag PROPERTIES COMPILE_FLAGS "-DMAIN") + + ## Tests if (UNIX OR MINGW) if (BUILD_SHARED_LIBS) commit 55cae0d72eecb5116008815b598481dd1404fc6a Author: Ebrahim Byagowi <ebra...@gnu.org> Date: Mon Jan 29 18:05:24 2018 +0330 [test] Use 'otool -L' where ldd doesn't exist (macOS) (#732) diff --git a/src/check-libstdc++.sh b/src/check-libstdc++.sh index 4295180c..e4aaeb2b 100755 --- a/src/check-libstdc++.sh +++ b/src/check-libstdc++.sh @@ -9,10 +9,15 @@ stat=0 if which ldd 2>/dev/null >/dev/null; then - : + LDD=ldd else - echo "check-libstdc++.sh: 'ldd' not found; skipping test" - exit 77 + # macOS specific tool + if which otool 2>/dev/null >/dev/null; then + LDD="otool -L" + else + echo "check-libstdc++.sh: 'ldd' not found; skipping test" + exit 77 + fi fi tested=false @@ -21,7 +26,7 @@ for suffix in so dylib; do if ! test -f "$so"; then continue; fi echo "Checking that we are not linking to libstdc++ or libc++" - if ldd $so | grep 'libstdc[+][+]\|libc[+][+]'; then + if $LDD $so | grep 'libstdc[+][+]\|libc[+][+]'; then echo "Ouch, linked to libstdc++ or libc++" stat=1 fi commit 2ec7dd1f6cb78ee6a0621aa98f18500d3318c90c Author: David Corbett <corbett....@husky.neu.edu> Date: Sun Jan 28 17:48:28 2018 -0500 Fix Travis build on macOS (#731) diff --git a/.travis.yml b/.travis.yml index b9913065..5516e711 100644 --- a/.travis.yml +++ b/.travis.yml @@ -55,7 +55,7 @@ matrix: - ./autogen.sh - ./configure $CONFIGURE_OPTS --with-coretext - make - - make check || (cat `find -name '*.log'` && false) + - make check || (cat `find . -name '*.log'` && false) notifications: irc: "irc.freenode.org#harfbuzz" diff --git a/src/check-defs.sh b/src/check-defs.sh index 9b4b7572..c6697831 100755 --- a/src/check-defs.sh +++ b/src/check-defs.sh @@ -27,11 +27,11 @@ for def in $defs; do so=$libs/lib${lib}.$suffix if ! test -f "$so"; then continue; fi - EXPORTED_SYMBOLS="`nm "$so" | grep ' [BCDGINRSTVW] .' | grep -v ' _fini\>\| _init\>\| _fdata\>\| _ftext\>\| _fbss\>\| __bss_start\>\| __bss_start__\>\| __bss_end__\>\| _edata\>\| _end\>\| _bss_end__\>\| __end__\>\| __gcov_flush\>\| llvm_' | cut -d' ' -f3`" - # On mac, C symbols are prefixed with _ if test $suffix = dylib; then prefix="_"; fi + EXPORTED_SYMBOLS="`nm "$so" | grep ' [BCDGINRSTVW] .' | grep -v " $prefix"'\(_fini\>\|_init\>\|_fdata\>\|_ftext\>\|_fbss\>\|__bss_start\>\|__bss_start__\>\|__bss_end__\>\|_edata\>\|_end\>\|_bss_end__\>\|__end__\>\|__gcov_flush\>\|llvm_\)' | cut -d' ' -f3`" + if test -f "$so"; then echo "Checking that $so has the same symbol list as $def" _______________________________________________ HarfBuzz mailing list HarfBuzz@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/harfbuzz