From 6a26d1aa8ad4cdce657ae0ae7c12b464b34b6bd1 Mon Sep 17 00:00:00 2001 From: Akira Kakuto Date: Mon, 23 Oct 2017 05:48:12 +0000 Subject: harfbuzz 1.6.1 git-svn-id: svn://tug.org/texlive/trunk@45584 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/libs/README | 2 +- Build/source/libs/harfbuzz/ChangeLog | 5 + Build/source/libs/harfbuzz/Makefile.am | 2 +- Build/source/libs/harfbuzz/Makefile.in | 2 +- Build/source/libs/harfbuzz/TLpatches/ChangeLog | 5 + Build/source/libs/harfbuzz/TLpatches/TL-Changes | 2 +- Build/source/libs/harfbuzz/configure | 24 +- .../libs/harfbuzz/harfbuzz-src/CMakeLists.txt | 306 ++++++++++- Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog | 589 +++++++++++++++++++++ .../source/libs/harfbuzz/harfbuzz-src/Makefile.am | 1 + Build/source/libs/harfbuzz/harfbuzz-src/NEWS | 13 + .../source/libs/harfbuzz/harfbuzz-src/configure.ac | 5 +- .../harfbuzz-src/replace-enum-strings.cmake | 21 + .../harfbuzz/harfbuzz-src/src/Makefile.sources | 6 +- .../libs/harfbuzz/harfbuzz-src/src/hb-blob.cc | 12 +- .../harfbuzz-src/src/hb-buffer-deserialize-json.hh | 4 +- .../harfbuzz-src/src/hb-buffer-deserialize-text.hh | 4 +- .../harfbuzz/harfbuzz-src/src/hb-buffer-private.hh | 4 +- .../harfbuzz-src/src/hb-buffer-serialize.cc | 16 +- .../libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc | 12 +- .../libs/harfbuzz/harfbuzz-src/src/hb-buffer.h | 4 +- .../harfbuzz/harfbuzz-src/src/hb-cache-private.hh | 74 --- .../libs/harfbuzz/harfbuzz-src/src/hb-common.cc | 18 +- .../libs/harfbuzz/harfbuzz-src/src/hb-common.h | 2 +- .../libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc | 68 +-- .../libs/harfbuzz/harfbuzz-src/src/hb-deprecated.h | 4 + .../harfbuzz/harfbuzz-src/src/hb-directwrite.cc | 28 +- .../libs/harfbuzz/harfbuzz-src/src/hb-face.cc | 10 +- .../libs/harfbuzz/harfbuzz-src/src/hb-font.cc | 36 +- .../source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc | 58 +- .../libs/harfbuzz/harfbuzz-src/src/hb-glib.cc | 2 +- .../harfbuzz-src/src/hb-gobject-structs.cc | 2 +- .../libs/harfbuzz/harfbuzz-src/src/hb-graphite2.cc | 26 +- .../libs/harfbuzz/harfbuzz-src/src/hb-icu.cc | 16 +- .../harfbuzz/harfbuzz-src/src/hb-mutex-private.hh | 2 +- .../harfbuzz/harfbuzz-src/src/hb-object-private.hh | 2 +- .../harfbuzz-src/src/hb-open-type-private.hh | 41 +- .../harfbuzz/harfbuzz-src/src/hb-ot-cbdt-table.hh | 4 +- .../harfbuzz/harfbuzz-src/src/hb-ot-cmap-table.hh | 2 +- .../libs/harfbuzz/harfbuzz-src/src/hb-ot-font.cc | 42 +- .../src/hb-ot-layout-common-private.hh | 16 +- .../harfbuzz-src/src/hb-ot-layout-gdef-table.hh | 6 +- .../harfbuzz-src/src/hb-ot-layout-gsub-table.hh | 2 +- .../src/hb-ot-layout-gsubgpos-private.hh | 54 +- .../harfbuzz-src/src/hb-ot-layout-jstf-table.hh | 4 +- .../harfbuzz-src/src/hb-ot-layout-private.hh | 21 +- .../libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc | 44 +- .../harfbuzz/harfbuzz-src/src/hb-ot-map-private.hh | 10 +- .../libs/harfbuzz/harfbuzz-src/src/hb-ot-map.cc | 6 +- .../harfbuzz/harfbuzz-src/src/hb-ot-math-table.hh | 12 +- .../src/hb-ot-shape-complex-arabic-fallback.hh | 14 +- .../harfbuzz-src/src/hb-ot-shape-complex-arabic.cc | 36 +- .../src/hb-ot-shape-complex-default.cc | 22 +- .../harfbuzz-src/src/hb-ot-shape-complex-hangul.cc | 12 +- .../harfbuzz-src/src/hb-ot-shape-complex-hebrew.cc | 18 +- .../harfbuzz-src/src/hb-ot-shape-complex-indic.cc | 26 +- .../src/hb-ot-shape-complex-myanmar.cc | 42 +- .../src/hb-ot-shape-complex-private.hh | 26 +- .../harfbuzz-src/src/hb-ot-shape-complex-thai.cc | 22 +- .../src/hb-ot-shape-complex-tibetan.cc | 20 +- .../harfbuzz-src/src/hb-ot-shape-complex-use.cc | 20 +- .../harfbuzz-src/src/hb-ot-shape-private.hh | 2 +- .../libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.cc | 8 +- .../libs/harfbuzz/harfbuzz-src/src/hb-ot-tag.cc | 2 +- .../libs/harfbuzz/harfbuzz-src/src/hb-ot-var.cc | 2 +- .../libs/harfbuzz/harfbuzz-src/src/hb-private.hh | 286 +++++++--- .../harfbuzz-src/src/hb-set-digest-private.hh | 144 +++++ .../harfbuzz/harfbuzz-src/src/hb-set-private.hh | 535 +++++++++++-------- .../libs/harfbuzz/harfbuzz-src/src/hb-set.cc | 3 +- .../source/libs/harfbuzz/harfbuzz-src/src/hb-set.h | 3 - .../harfbuzz/harfbuzz-src/src/hb-shape-plan.cc | 24 +- .../libs/harfbuzz/harfbuzz-src/src/hb-shape.cc | 8 +- .../harfbuzz/harfbuzz-src/src/hb-shaper-private.hh | 6 +- .../libs/harfbuzz/harfbuzz-src/src/hb-shaper.cc | 6 +- .../libs/harfbuzz/harfbuzz-src/src/hb-ucdn.cc | 2 +- .../harfbuzz-src/src/hb-unicode-private.hh | 4 +- .../libs/harfbuzz/harfbuzz-src/src/hb-unicode.cc | 4 +- .../libs/harfbuzz/harfbuzz-src/src/hb-uniscribe.cc | 52 +- .../source/libs/harfbuzz/harfbuzz-src/src/main.cc | 4 +- .../harfbuzz-src/src/test-buffer-serialize.cc | 8 +- .../harfbuzz/harfbuzz-src/src/test-size-params.cc | 6 +- .../harfbuzz-src/src/test-would-substitute.cc | 8 +- .../source/libs/harfbuzz/harfbuzz-src/src/test.cc | 12 +- Build/source/libs/harfbuzz/version.ac | 2 +- 84 files changed, 2132 insertions(+), 908 deletions(-) create mode 100644 Build/source/libs/harfbuzz/harfbuzz-src/replace-enum-strings.cmake delete mode 100644 Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cache-private.hh create mode 100644 Build/source/libs/harfbuzz/harfbuzz-src/src/hb-set-digest-private.hh (limited to 'Build') diff --git a/Build/source/libs/README b/Build/source/libs/README index 0a9fca8579b..bb468f5aaca 100644 --- a/Build/source/libs/README +++ b/Build/source/libs/README @@ -24,7 +24,7 @@ gmp 6.1.2 - checked 16dec16 graphite2 1.3.10 - checked 20jun17 http://sourceforge.net/projects/silgraphite/files/graphite2/ -harfbuzz 1.6.0 - checked 13oct17 +harfbuzz 1.6.1 - checked 23oct17 http://www.freedesktop.org/software/harfbuzz/release/ icu 58.2 - checked 13mar17 diff --git a/Build/source/libs/harfbuzz/ChangeLog b/Build/source/libs/harfbuzz/ChangeLog index ddde964b716..1109f2ba008 100644 --- a/Build/source/libs/harfbuzz/ChangeLog +++ b/Build/source/libs/harfbuzz/ChangeLog @@ -1,3 +1,8 @@ +2017-10-23 Akira Kakuto + + Import harfbuzz-1.6.1. + * Makefile.am, version.ac: Adjusted. + 2017-10-13 Akira Kakuto Import harfbuzz-1.6.0. diff --git a/Build/source/libs/harfbuzz/Makefile.am b/Build/source/libs/harfbuzz/Makefile.am index 20db1260d2b..f9a21085062 100644 --- a/Build/source/libs/harfbuzz/Makefile.am +++ b/Build/source/libs/harfbuzz/Makefile.am @@ -38,7 +38,6 @@ libharfbuzz_a_SOURCES = \ @HARFBUZZ_TREE@/src/hb-buffer-private.hh \ @HARFBUZZ_TREE@/src/hb-buffer-serialize.cc \ @HARFBUZZ_TREE@/src/hb-buffer.cc \ - @HARFBUZZ_TREE@/src/hb-cache-private.hh \ @HARFBUZZ_TREE@/src/hb-common.cc \ @HARFBUZZ_TREE@/src/hb-face-private.hh \ @HARFBUZZ_TREE@/src/hb-face.cc \ @@ -60,6 +59,7 @@ libharfbuzz_a_SOURCES = \ @HARFBUZZ_TREE@/src/hb-ot-var-mvar-table.hh \ @HARFBUZZ_TREE@/src/hb-ot-tag.cc \ @HARFBUZZ_TREE@/src/hb-private.hh \ + @HARFBUZZ_TREE@/src/hb-set-digest-private.hh \ @HARFBUZZ_TREE@/src/hb-set-private.hh \ @HARFBUZZ_TREE@/src/hb-set.cc \ @HARFBUZZ_TREE@/src/hb-shape.cc \ diff --git a/Build/source/libs/harfbuzz/Makefile.in b/Build/source/libs/harfbuzz/Makefile.in index 4b4da3592bd..4d0894a2505 100644 --- a/Build/source/libs/harfbuzz/Makefile.in +++ b/Build/source/libs/harfbuzz/Makefile.in @@ -650,7 +650,6 @@ libharfbuzz_a_SOURCES = @HARFBUZZ_TREE@/src/hb-atomic-private.hh \ @HARFBUZZ_TREE@/src/hb-buffer-private.hh \ @HARFBUZZ_TREE@/src/hb-buffer-serialize.cc \ @HARFBUZZ_TREE@/src/hb-buffer.cc \ - @HARFBUZZ_TREE@/src/hb-cache-private.hh \ @HARFBUZZ_TREE@/src/hb-common.cc \ @HARFBUZZ_TREE@/src/hb-face-private.hh \ @HARFBUZZ_TREE@/src/hb-face.cc \ @@ -672,6 +671,7 @@ libharfbuzz_a_SOURCES = @HARFBUZZ_TREE@/src/hb-atomic-private.hh \ @HARFBUZZ_TREE@/src/hb-ot-var-mvar-table.hh \ @HARFBUZZ_TREE@/src/hb-ot-tag.cc \ @HARFBUZZ_TREE@/src/hb-private.hh \ + @HARFBUZZ_TREE@/src/hb-set-digest-private.hh \ @HARFBUZZ_TREE@/src/hb-set-private.hh \ @HARFBUZZ_TREE@/src/hb-set.cc @HARFBUZZ_TREE@/src/hb-shape.cc \ @HARFBUZZ_TREE@/src/hb-shape-plan-private.hh \ diff --git a/Build/source/libs/harfbuzz/TLpatches/ChangeLog b/Build/source/libs/harfbuzz/TLpatches/ChangeLog index ae72eb2fb82..35c2a5446d1 100644 --- a/Build/source/libs/harfbuzz/TLpatches/ChangeLog +++ b/Build/source/libs/harfbuzz/TLpatches/ChangeLog @@ -1,3 +1,8 @@ +2017-10-14 Akira Kakuto + + Imported harfbuzz-1.6.1 source tree from: + http://www.freedesktop.org/software/harfbuzz/release/ + 2017-10-13 Akira Kakuto Imported harfbuzz-1.6.0 source tree from: diff --git a/Build/source/libs/harfbuzz/TLpatches/TL-Changes b/Build/source/libs/harfbuzz/TLpatches/TL-Changes index 83a9a4486e5..cd830ea0f19 100644 --- a/Build/source/libs/harfbuzz/TLpatches/TL-Changes +++ b/Build/source/libs/harfbuzz/TLpatches/TL-Changes @@ -1,4 +1,4 @@ -Changes applied to the harfbuzz-1.6.0/ tree as obtained from: +Changes applied to the harfbuzz-1.6.1/ tree as obtained from: http://www.freedesktop.org/software/harfbuzz/release/ Removed: diff --git a/Build/source/libs/harfbuzz/configure b/Build/source/libs/harfbuzz/configure index 6a5dc22921c..07cd82845f8 100755 --- a/Build/source/libs/harfbuzz/configure +++ b/Build/source/libs/harfbuzz/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for harfbuzz (TeX Live) 1.6.0. +# Generated by GNU Autoconf 2.69 for harfbuzz (TeX Live) 1.6.1. # # Report bugs to . # @@ -580,8 +580,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='harfbuzz (TeX Live)' PACKAGE_TARNAME='harfbuzz--tex-live-' -PACKAGE_VERSION='1.6.0' -PACKAGE_STRING='harfbuzz (TeX Live) 1.6.0' +PACKAGE_VERSION='1.6.1' +PACKAGE_STRING='harfbuzz (TeX Live) 1.6.1' PACKAGE_BUGREPORT='tex-k@tug.org' PACKAGE_URL='' @@ -1312,7 +1312,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures harfbuzz (TeX Live) 1.6.0 to adapt to many kinds of systems. +\`configure' configures harfbuzz (TeX Live) 1.6.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1383,7 +1383,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of harfbuzz (TeX Live) 1.6.0:";; + short | recursive ) echo "Configuration of harfbuzz (TeX Live) 1.6.1:";; esac cat <<\_ACEOF @@ -1490,7 +1490,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -harfbuzz (TeX Live) configure 1.6.0 +harfbuzz (TeX Live) configure 1.6.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2080,7 +2080,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by harfbuzz (TeX Live) $as_me 1.6.0, which was +It was created by harfbuzz (TeX Live) $as_me 1.6.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -4003,7 +4003,7 @@ fi # Define the identity of the package. PACKAGE='harfbuzz--tex-live-' - VERSION='1.6.0' + VERSION='1.6.1' cat >>confdefs.h <<_ACEOF @@ -4206,8 +4206,8 @@ WARNING_CFLAGS=$kpse_cv_warning_cflags HB_VERSION_MAJOR=1 HB_VERSION_MINOR=6 -HB_VERSION_MICRO=0 -HB_VERSION=1.6.0 +HB_VERSION_MICRO=1 +HB_VERSION=1.6.1 ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -6866,7 +6866,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by harfbuzz (TeX Live) $as_me 1.6.0, which was +This file was extended by harfbuzz (TeX Live) $as_me 1.6.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -6932,7 +6932,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -harfbuzz (TeX Live) config.status 1.6.0 +harfbuzz (TeX Live) config.status 1.6.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/CMakeLists.txt b/Build/source/libs/harfbuzz/harfbuzz-src/CMakeLists.txt index 650def81b57..8d2825758ab 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/CMakeLists.txt +++ b/Build/source/libs/harfbuzz/harfbuzz-src/CMakeLists.txt @@ -41,7 +41,7 @@ if (APPLE) endif () if (WIN32) option(HB_HAVE_UNISCRIBE "Enable Uniscribe shaper backend on Windows" OFF) - option(HB_HAVE_DIRECWRITE "Enable DirectWrite shaper backend on Windows" OFF) + option(HB_HAVE_DIRECTWRITE "Enable DirectWrite shaper backend on Windows" OFF) endif () option(HB_BUILD_UTILS "Build harfbuzz utils, needs cairo, freetype, and glib properly be installed" OFF) if (HB_BUILD_UTILS) @@ -49,12 +49,24 @@ if (HB_BUILD_UTILS) set(HB_HAVE_FREETYPE ON) endif () +option(HB_HAVE_GOBJECT "Enable GObject Bindings" OFF) +if (HB_HAVE_GOBJECT) + set(HB_HAVE_GLIB ON) +endif () + +option(HB_HAVE_INTROSPECTION "Enable building introspection (.gir/.typelib) files" OFF) +if (HB_HAVE_INTROSPECTION) + set(HB_HAVE_GOBJECT ON) + set(HB_HAVE_GLIB ON) +endif () + include_directories(AFTER ${PROJECT_SOURCE_DIR}/src ${PROJECT_BINARY_DIR}/src ) add_definitions(-DHAVE_OT) +add_definitions(-DHAVE_FALLBACK) if (BUILD_SHARED_LIBS) add_definitions(-DHAVE_ATEXIT) @@ -101,6 +113,7 @@ file(READ ${PROJECT_SOURCE_DIR}/src/hb-ucdn/Makefile.sources UCDNSOURCES) extract_make_variable(HB_BASE_sources ${SRCSOURCES} "${PROJECT_SOURCE_DIR}/src/") extract_make_variable(HB_BASE_headers ${SRCSOURCES} "${PROJECT_SOURCE_DIR}/src/") +extract_make_variable(HB_FALLBACK_sources ${SRCSOURCES} "${PROJECT_SOURCE_DIR}/src/") extract_make_variable(HB_OT_sources ${SRCSOURCES} "${PROJECT_SOURCE_DIR}/src/") extract_make_variable(HB_OT_headers ${SRCSOURCES} "${PROJECT_SOURCE_DIR}/src/") @@ -169,10 +182,13 @@ set(project_sources ${HB_BASE_sources} ${HB_BASE_RAGEL_GENERATED_sources} + ${HB_FALLBACK_sources} ${HB_OT_sources} ${HB_OT_RAGEL_GENERATED_sources} ) +set(project_extra_sources) + set(project_headers ${HB_VERSION_H} @@ -218,10 +234,8 @@ if (HB_BUILTIN_UCDN) include_directories(src/hb-ucdn) add_definitions(-DHAVE_UCDN) - list(APPEND project_sources - ${PROJECT_SOURCE_DIR}/src/hb-ucdn.cc - ${LIBHB_UCDN_sources} - ) + list(APPEND project_sources ${PROJECT_SOURCE_DIR}/src/hb-ucdn.cc) + list(APPEND project_extra_sources ${LIBHB_UCDN_sources}) endif () if (HB_HAVE_GLIB) @@ -298,6 +312,110 @@ if (WIN32 AND HB_HAVE_DIRECTWRITE) list(APPEND THIRD_PARTY_LIBS dwrite rpcrt4) endif () +if (HB_HAVE_GOBJECT) + include(FindPythonInterp) + include(FindPerl) + + # Use the hints from glib-2.0.pc to find glib-mkenums + find_package(PkgConfig) + pkg_check_modules(PC_GLIB QUIET glib-2.0) + find_program(GLIB_MKENUMS glib-mkenums + HINTS ${PC_glib_mkenums} + ) + set(GLIB_MKENUMS_CMD) + + if (WIN32 AND NOT MINGW) + # In Visual Studio builds, shebang lines are not supported + # in the standard cmd.exe shell that we use, so we need to + # first determine whether glib-mkenums is a Python or PERL + # script + execute_process(COMMAND "${PYTHON_EXECUTABLE}" "${GLIB_MKENUMS}" --version + RESULT_VARIABLE GLIB_MKENUMS_PYTHON + OUTPUT_QUIET ERROR_QUIET + ) + if (GLIB_MKENUMS_PYTHON EQUAL 0) + message("${GLIB_MKENUMS} is a Python script.") + set(GLIB_MKENUMS_CMD "${PYTHON_EXECUTABLE}" "${GLIB_MKENUMS}") + else () + execute_process(COMMAND "${PERL_EXECUTABLE}" "${GLIB_MKENUMS}" --version + RESULT_VARIABLE GLIB_MKENUMS_PERL + OUTPUT_QUIET ERROR_QUIET + ) + if (GLIB_MKENUMS_PERL EQUAL 0) + message("${GLIB_MKENUMS} is a PERL script.") + set(GLIB_MKENUMS_CMD "${PERL_EXECUTABLE}" "${GLIB_MKENUMS}") + endif () + if (NOT GLIB_MKENUMS_PERL EQUAL 0 AND NOT GLIB_MKENUMS_PYTHON EQUAL 0) + message(FATAL_ERROR "Unable to determine type of glib-mkenums script") + endif () + endif () + else () + set(GLIB_MKENUMS_CMD "${GLIB_MKENUMS}") + endif () + if (NOT GLIB_MKENUMS_CMD) + message(FATAL_ERROR "HB_HAVE_GOBJECT was set, but we failed to find glib-mkenums, which is required") + endif() + + pkg_check_modules(PC_GOBJECT QUIET gobject-2.0) + + find_library(GOBJECT_LIBRARIES NAMES gobject-2.0 HINTS ${PC_GLIB_LIBDIR} ${PC_GLIB_LIBRARY_DIRS}) + find_path(GOBJECT_INCLUDE_DIR NAMES glib-object.h HINTS ${PC_GLIB_INCLUDEDIR} ${PC_GLIB_INCLUDE_DIRS} PATH_SUFFIXES glib-2.0) + + include_directories(${GOBJECTCONFIG_INCLUDE_DIR} ${GOBJECT_INCLUDE_DIR}) + mark_as_advanced(GOBJECT_LIBRARIES GOBJECT_INCLUDE_DIR) + + list(APPEND hb_gobject_sources ${PROJECT_SOURCE_DIR}/src/hb-gobject-structs.cc) + list(APPEND hb_gobject_gen_sources + ${CMAKE_CURRENT_BINARY_DIR}/src/hb-gobject-enums.cc + ) + list(APPEND hb_gobject_structs_headers + ${PROJECT_SOURCE_DIR}/src/hb-gobject-structs.h + ) + list(APPEND hb_gobject_headers + ${PROJECT_SOURCE_DIR}/src/hb-gobject.h + ${hb_gobject_structs_headers} + ) + list(APPEND hb_gobject_gen_headers + ${CMAKE_CURRENT_BINARY_DIR}/src/hb-gobject-enums.h + ) + + add_custom_command ( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/src/hb-gobject-enums.h + COMMAND ${GLIB_MKENUMS_CMD} + --template=${PROJECT_SOURCE_DIR}/src/hb-gobject-enums.h.tmpl + --identifier-prefix hb_ + --symbol-prefix hb_gobject + ${hb_gobject_structs_headers} + ${project_headers} + > ${CMAKE_CURRENT_BINARY_DIR}/src/hb-gobject-enums.h.tmp + COMMAND "${CMAKE_COMMAND}" + "-DENUM_INPUT_SRC=${CMAKE_CURRENT_BINARY_DIR}/src/hb-gobject-enums.h.tmp" + "-DENUM_OUTPUT_SRC=${CMAKE_CURRENT_BINARY_DIR}/src/hb-gobject-enums.h" + -P ${PROJECT_SOURCE_DIR}/replace-enum-strings.cmake + DEPENDS ${PROJECT_SOURCE_DIR}/src/hb-gobject-enums.h.tmpl + ${hb_gobject_header} + ${project_headers} + ) + + add_custom_command ( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/src/hb-gobject-enums.cc + COMMAND ${GLIB_MKENUMS_CMD} + --template=${PROJECT_SOURCE_DIR}/src/hb-gobject-enums.cc.tmpl + --identifier-prefix hb_ + --symbol-prefix hb_gobject + ${hb_gobject_header} + ${project_headers} + > ${CMAKE_CURRENT_BINARY_DIR}/src/hb-gobject-enums.cc.tmp + COMMAND "${CMAKE_COMMAND}" + "-DENUM_INPUT_SRC=${CMAKE_CURRENT_BINARY_DIR}/src/hb-gobject-enums.cc.tmp" + "-DENUM_OUTPUT_SRC=${CMAKE_CURRENT_BINARY_DIR}/src/hb-gobject-enums.cc" + -P ${PROJECT_SOURCE_DIR}/replace-enum-strings.cmake + DEPENDS ${PROJECT_SOURCE_DIR}/src/hb-gobject-enums.cc.tmpl + ${CMAKE_CURRENT_BINARY_DIR}/src/hb-gobject-enums.h + ${hb_gobject_header} + ${project_headers} + ) +endif () ## Atomic ops availability detection file(WRITE "${PROJECT_BINARY_DIR}/try_compile_intel_atomic_primitives.c" @@ -332,9 +450,144 @@ endif () ## Define harfbuzz library -add_library(harfbuzz ${project_sources} ${project_headers}) +add_library(harfbuzz ${project_sources} ${project_extra_sources} ${project_headers}) target_link_libraries(harfbuzz ${THIRD_PARTY_LIBS}) +## Define harfbuzz-gobject library +if (HB_HAVE_GOBJECT) + add_library(harfbuzz-gobject + ${hb_gobject_sources} + ${hb_gobject_gen_sources} + ${hb_gobject_headers} + ${hb_gobject_gen_headers} + ) + include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR}/src) + add_dependencies(harfbuzz-gobject harfbuzz) + target_link_libraries(harfbuzz-gobject harfbuzz ${GOBJECT_LIBRARIES} ${THIRD_PARTY_LIBS}) +endif () + +# On Windows, g-ir-scanner requires a DLL build in order for it to work +if (WIN32) + if (NOT BUILD_SHARED_LIBS) + message("Building introspection files on Windows requires BUILD_SHARED_LIBS to be enabled.") + set(HB_HAVE_INTROSPECTION OFF) + endif () +endif () + +if (HB_HAVE_INTROSPECTION) + + find_package(PkgConfig) + pkg_check_modules(PC_GI QUIET gobject-introspection-1.0) + + find_program(G_IR_SCANNER g-ir-scanner + HINTS ${PC_g_ir_scanner} + ) + + find_program(G_IR_COMPILER g-ir-compiler + HINTS ${PC_g_ir_compiler} + ) + + if (WIN32 AND NOT MINGW) + # Note that since we already enable HB_HAVE_GOBJECT + # we would already have PYTHON_EXECUTABLE handy + set(G_IR_SCANNER_CMD "${PYTHON_EXECUTABLE}" "${G_IR_SCANNER}") + else () + set(G_IR_SCANNER_CMD "${G_IR_SCANNER}") + endif () + + # We need to account for the varying output directories + # when we build using Visual Studio projects + if("${CMAKE_GENERATOR}" MATCHES "Visual Studio*") + set (hb_libpath "${CMAKE_CURRENT_BINARY_DIR}/$") + else () + set (hb_libpath "$") + endif () + + # Get the CFlags that we used to build HarfBuzz/HarfBuzz-GObject + set (hb_defines_cflags "") + foreach(hb_cflag ${hb_cflags}) + list(APPEND hb_defines_cflags "-D${hb_cflag}") + endforeach(hb_cflag) + + # Get the other dependent libraries we used to build HarfBuzz/HarfBuzz-GObject + set (extra_libs "") + foreach (extra_lib ${THIRD_PARTY_LIBS}) + # We don't want the .lib extension here... + string(REPLACE ".lib" "" extra_lib_stripped "${extra_lib}") + list(APPEND extra_libs "--extra-library=${extra_lib_stripped}") + endforeach () + + set(introspected_sources) + foreach (f + ${project_headers} + ${project_sources} + ${hb_gobject_gen_sources} + ${hb_gobject_gen_headers} + ${hb_gobject_sources} + ${hb_gobject_headers} + ) + if (WIN32) + # Nasty issue: We need to make drive letters lower case, + # otherwise g-ir-scanner won't like it and give us a bunch + # of invalid items and unresolved types... + STRING(SUBSTRING "${f}" 0 1 drive) + STRING(SUBSTRING "${f}" 1 -1 path) + if (drive MATCHES "[A-Z]") + STRING(TOLOWER ${drive} drive_lower) + list(APPEND introspected_sources "${drive_lower}${path}") + else () + list(APPEND introspected_sources "${f}") + endif () + else () + list(APPEND introspected_sources "${f}") + endif () + endforeach () + + # Finally, build the introspection files... + add_custom_command ( + TARGET harfbuzz-gobject + POST_BUILD + COMMAND ${G_IR_SCANNER_CMD} + --warn-all --no-libtool --verbose + -n hb + --namespace=HarfBuzz + --nsversion=0.0 + --identifier-prefix=hb_ + --include GObject-2.0 + --pkg-export=harfbuzz + --cflags-begin + -I${PROJECT_SOURCE_DIR}/src + -I${PROJECT_BINARY_DIR}/src + ${hb_includedir_cflags} + ${hb_defines_cflags} + -DHB_H + -DHB_H_IN + -DHB_OT_H + -DHB_OT_H_IN + -DHB_GOBJECT_H + -DHB_GOBJECT_H_IN + -DHB_EXTERN= + --cflags-end + --library=harfbuzz-gobject + --library=harfbuzz + -L${hb_libpath} + ${extra_libs} + ${introspected_sources} + -o ${hb_libpath}/HarfBuzz-0.0.gir + DEPENDS harfbuzz-gobject harfbuzz + ) + + add_custom_command ( + TARGET harfbuzz-gobject + POST_BUILD + COMMAND "${G_IR_COMPILER}" + --verbose --debug + --includedir ${CMAKE_CURRENT_BINARY_DIR} + ${hb_libpath}/HarfBuzz-0.0.gir + -o ${hb_libpath}/HarfBuzz-0.0.typelib + DEPENDS ${hb_libpath}/HarfBuzz-0.0.gir harfbuzz-gobject + ) +endif () ## Additional framework build configs if (BUILD_FRAMEWORK) @@ -379,6 +632,9 @@ endif () ## Install if (NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL) install(FILES ${project_headers} DESTINATION include/harfbuzz) + if (HB_HAVE_GOBJECT) + install(FILES ${hb_gobject_headers} ${hb_gobject_gen_headers} DESTINATION include/harfbuzz) + endif () endif () if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL) @@ -388,4 +644,42 @@ if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL) RUNTIME DESTINATION bin FRAMEWORK DESTINATION Library/Frameworks ) + if (HB_BUILD_UTILS) + install(TARGETS hb-view + RUNTIME DESTINATION bin + ) + install(TARGETS hb-view + RUNTIME DESTINATION bin + ) + + install(TARGETS hb-shape + RUNTIME DESTINATION bin + ) + + install(TARGETS hb-ot-shape-closure + RUNTIME DESTINATION bin + ) + endif () + if (HB_HAVE_GOBJECT) + install(TARGETS harfbuzz-gobject + ARCHIVE DESTINATION lib + LIBRARY DESTINATION lib + RUNTIME DESTINATION bin + ) + if (HB_HAVE_INTROSPECTION) + if("${CMAKE_GENERATOR}" MATCHES "Visual Studio*") + set (hb_libpath "${CMAKE_CURRENT_BINARY_DIR}/$") + else () + set (hb_libpath "$") + endif () + + install(FILES "${hb_libpath}/HarfBuzz-0.0.gir" + DESTINATION share/gir-1.0 + ) + + install(FILES "${hb_libpath}/HarfBuzz-0.0.typelib" + DESTINATION lib/girepository-1.0 + ) + endif () + endif () endif () diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog b/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog index a1158c8cf3e..83425f3cf49 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog +++ b/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog @@ -1,3 +1,592 @@ +commit d59d5dc7d339deb45cc84cffd084b52752765a08 +Merge: ced86da7 3ee15a60 +Author: Behdad Esfahbod +Date: Sun Oct 22 17:08:29 2017 -0400 + + Merge commit '3ee15a60358f4d894bbf2431d7a7df38b7acc4ce' + +commit ced86da7ddbbd0d64f8ba1290b8e67600b1db2d4 +Author: Behdad Esfahbod +Date: Sun Oct 22 17:03:36 2017 -0400 + + Another try at fixing mingw32 build bot fail + + src/hb-private.hh | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit bc1183aa6ba45a527084d391d6e7f801d6196060 +Merge: d45a2138 bfe0faf1 +Author: Behdad Esfahbod +Date: Sun Oct 22 17:06:00 2017 -0400 + + Merge commit 'bfe0faf1a2d39302129a7202994456afd96694ca' + +commit 3ee15a60358f4d894bbf2431d7a7df38b7acc4ce +Author: Behdad Esfahbod +Date: Sun Oct 22 17:03:36 2017 -0400 + + Another try at fixing mingw32 build bot fail + + src/hb-private.hh | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit bfe0faf1a2d39302129a7202994456afd96694ca +Author: Behdad Esfahbod +Date: Sun Oct 22 15:54:50 2017 -0400 + + [docs] Deprecate hb_set_invert() + + docs/harfbuzz-sections.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d45a2138d9d54eab158046d6503f1bb104efce25 +Merge: d8adaa97 41b18251 +Author: ebraminio +Date: Sat Oct 21 10:19:55 2017 +0330 + + Merge pull request #572 from fanc999/master.msvc + + builds: Support HarfBuzz-GObject and introspection in CMake builds + +commit d8adaa97fbf33071b8a4b5c05c3f2f15f2fd22ea +Author: Behdad Esfahbod +Date: Fri Oct 20 13:57:43 2017 -0400 + + Another try at fixing build bots + + hb-ot-shape.cc:287:18: error: comparison of constant 32 with + expression of type 'hb_unicode_general_category_t' is always true + [-Werror,-Wtautological-constant-out-of-range-compare] + + src/hb-private.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 6058f98825e8f134893a1bbfb402e45d85b56ff0 +Author: Behdad Esfahbod +Date: Thu Oct 19 11:39:52 2017 -0700 + + Remove FLAG_SAFE() + + No flag is safe, over time... See previous commit. + + src/hb-ot-shape-complex-arabic.cc | 4 ++-- + src/hb-ot-shape-complex-indic.cc | 12 ++++++------ + src/hb-ot-shape-complex-use.cc | 2 +- + src/hb-private.hh | 5 ++--- + src/hb-unicode-private.hh | 4 ++-- + 5 files changed, 13 insertions(+), 14 deletions(-) + +commit 7c561dacc3c5fb9306db8bda27b7289331bd523f +Author: Behdad Esfahbod +Date: Thu Oct 19 11:35:51 2017 -0700 + + [myanmar] Fix unsafe usage of FLAG_SAFE() + + The commit f559c633073f63b9d87cb2440048b4413cfa1c05 caused + "undefined-shift" errors in Myanmar shaper as we changed the + numeric value of type D from 19 to 32 there, making the + "FLAG_SAFE (info.myanmar_category())" wrong. + + Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3546 + + src/hb-ot-shape-complex-myanmar.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 41b1825196235d4337c76f97e09f0b7c6d6c56ae +Author: Chun-wei Fan +Date: Thu Oct 19 18:36:32 2017 +0800 + + CMake builds: Support introspection builds + + This adds support for introspection builds on Windows that is + enabled by + the HB_HAVE_INTROSPECTION option, which will also enable + HB_HAVE_GOBJECT + (and so HB_HAVE_GLIB) as they are required for introspection. + + In order for this to work one must ensure that the Python installation + listed in PYTHON_EXECUTABLE is the same Python release series that was + used to build _giscanner.pyd (the Python module that is used by + g-ir-scanner), with the same architecture. PKG_CONFIG_PATH and PATH + must be set correctly if $(PREFIX)\bin and/or $(PREFIX)\lib\pkgconfig + are not in the standard PATH and PKG_CONFIG_PATH, which is actually + in-line with the *NIX builds. + + CMakeLists.txt | 161 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++--- + 1 file changed, 154 insertions(+), 7 deletions(-) + +commit 53db221259b5eea4d2244321b2fe96beb39aef7d +Author: Chun-wei Fan +Date: Wed Oct 18 15:43:57 2017 +0800 + + CMake: Support building HarfBuzz-GObject + + This adds support to the CMake build files to support building + HarfBuzz-GObject, which is actually a little bit complicated, + as we need to: + + -Run glib-mkenums, which is a Python (for newer GLib/GObject) or PERL + (for older, pre 2.53.4, GLib/GObject) script. This matters more for + Visual Studio builds as shebang lines are not supported, so we + need to + test-run it with PERL or Python to determine which is the correct + interpretor to use. + + -Next, we need to replace strings in the sources that we obtain from + running glib-mkenums. So, the solution here is to use a small + utility + CMake script for our purposes here, to maintain maximum + compatibility. + + -Ensure that things do work in the Visual Studio IDE builds. + + CMakeLists.txt | 128 + +++++++++++++++++++++++++++++++++++++++++++++ + Makefile.am | 1 + + replace-enum-strings.cmake | 21 ++++++++ + 3 files changed, 150 insertions(+) + +commit 162575f2c69f519aae1b18ff1c501e7e4c2cdd4b +Author: Chun-wei Fan +Date: Wed Oct 18 22:27:28 2017 +0800 + + CMake builds: Fix builds + + Include the fallback sources in the build, and update + src/Makefile.sources so that it can be read by the CMake build files. + + Fix a typo in the DirectWrite configure option so that we can properly + enable DirectWrite builds. + + Also, when building the utility program, install them as well. + + CMakeLists.txt | 21 ++++++++++++++++++++- + src/Makefile.sources | 4 +++- + 2 files changed, 23 insertions(+), 2 deletions(-) + +commit d6f612fac800c31989c298b5101845baed2297b1 +Author: Behdad Esfahbod +Date: Tue Oct 17 16:32:12 2017 -0700 + + [bsearch] Micro-optimization + + src/hb-open-type-private.hh | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 41b1984be946cc2f53313dd48eac392cc8a3ad2b +Author: Fredrik Roubert +Date: Tue Oct 17 15:06:31 2017 -0700 + + Switch from ICU deprecated unorm_normalize to unorm2_normalize. (#569) + + The new unorm2_normalize has been public API since ICU 4.4, while + the old unorm_normalize has been deprecated since ICU 56. + + Now, beginning with ICU 60, unorm_normalize will also be annotated + U_DEPRECATED and trigger the compiler -Wdeprecated-declarations + warning. + + src/hb-icu.cc | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit b98adefbb9ee45fc1e800a52f701bf4224e9bb81 +Author: Behdad Esfahbod +Date: Tue Oct 17 12:00:34 2017 -0700 + + Update docs symbols + + docs/harfbuzz-sections.txt | 2 ++ + 1 file changed, 2 insertions(+) + +commit ba8b56960733b25bbb88fbdb60e7e244127d6e0c +Author: Behdad Esfahbod +Date: Tue Oct 17 11:16:36 2017 -0700 + + Try fixing build on VC + + c:\projects\harfbuzz\src\hb-set-private.hh(151): error C2327: + 'hb_set_t::page_t::v': is not a type name, static, or enumerator + [C:\projects\harfbuzz\build\harfbuzz.vcxproj] + + src/hb-set-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 80cc0a7e3e05fb7fcfbdc0188cb60b115ad47d04 +Author: Behdad Esfahbod +Date: Tue Oct 17 11:14:48 2017 -0700 + + [coretext] Fix build + + error: static_assert expression is not an integral constant expression + + src/hb-coretext.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a11249ee93439856ea2410524b993ac1f1379961 +Author: Behdad Esfahbod +Date: Mon Oct 16 01:33:32 2017 -0400 + + [set] Fix merge logic + + src/hb-set-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ab8f327eb47184409d9e9208ca46b631d1afd0d4 +Author: Behdad Esfahbod +Date: Sun Oct 15 18:21:35 2017 -0400 + + Ouch. + + src/hb-set-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit bb9917913f735855aea54f41f10e0c7be3632e88 +Author: Behdad Esfahbod +Date: Sun Oct 15 18:20:25 2017 -0400 + + [set] Disable vectorization + + Fixes clang "non-const reference cannot bind to vector element" error. + + src/hb-set-private.hh | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 221ce6c18f2a1e878b68eb0a97f235efa4c044d3 +Author: Behdad Esfahbod +Date: Sun Oct 15 17:58:58 2017 -0400 + + Fix bots + + src/hb-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0cf7d957b7ffb17c4cec75b631c9829327ab5d52 +Author: Behdad Esfahbod +Date: Sun Oct 15 17:01:31 2017 -0400 + + [set] Remove TODO items not worth pursuing + + src/hb-set-private.hh | 2 -- + 1 file changed, 2 deletions(-) + +commit 10d43658e7655b36cb86e674dde8af4036b7cc52 +Author: Behdad Esfahbod +Date: Sun Oct 15 16:56:05 2017 -0400 + + [set] Speed up intersects() + + src/hb-set-private.hh | 8 ++------ + 1 file changed, 2 insertions(+), 6 deletions(-) + +commit 56ef4e0c52d5b474518bf0c1e4adba80f2ae6946 +Author: Behdad Esfahbod +Date: Sun Oct 15 16:38:29 2017 -0400 + + Simplify hb_prealloced_array_t initialization + + src/hb-private.hh | 13 +++++++------ + 1 file changed, 7 insertions(+), 6 deletions(-) + +commit 7737e87ac4582d57945f3ffbbae1012f62c6b482 +Author: Behdad Esfahbod +Date: Sun Oct 15 16:21:03 2017 -0400 + + Properly detect vector_size attribute and use fallback otherwise + + src/hb-private.hh | 67 + +++++++++++++++++++++++++++++++++++++++++++++++++++ + src/hb-set-private.hh | 62 + ++--------------------------------------------- + 2 files changed, 69 insertions(+), 60 deletions(-) + +commit f8a0ec50e23264fdfe9e3a5a2e0453a87f415b3d +Author: Behdad Esfahbod +Date: Sun Oct 15 16:10:35 2017 -0400 + + [set] Add fallback implementation of int-vector type + + src/hb-set-private.hh | 64 + ++++++++++++++++++++++++++++++++++++--------------- + 1 file changed, 45 insertions(+), 19 deletions(-) + +commit deed4a48d15d4a475f8695aa3269547adf63867a +Author: Behdad Esfahbod +Date: Sun Oct 15 16:53:09 2017 +0200 + + Faster hb_set_t + + Fixes https://github.com/behdad/harfbuzz/pull/23 + + src/hb-private.hh | 56 ++++--- + src/hb-set-private.hh | 431 + +++++++++++++++++++++++++++++++++++++++++--------- + test/api/test-set.c | 6 - + 3 files changed, 391 insertions(+), 102 deletions(-) + +commit 1d3971200be5b1c949d3eca185654e48584a0868 +Author: Behdad Esfahbod +Date: Sun Oct 15 16:15:24 2017 +0200 + + Deprecate hb_set_invert() + + src/hb-deprecated.h | 4 ++++ + src/hb-set.cc | 3 ++- + src/hb-set.h | 3 --- + 3 files changed, 6 insertions(+), 4 deletions(-) + +commit 5e74044b6bd78c495561eb7d2981415d2c3336f4 +Author: Behdad Esfahbod +Date: Sun Oct 15 16:15:06 2017 +0200 + + Add bfind() to prealloaced_array_t + + src/hb-private.hh | 31 ++++++++++++++++--------------- + 1 file changed, 16 insertions(+), 15 deletions(-) + +commit db5f7ef18916abb0907bc8b569a65c9c6bbd4015 +Author: Behdad Esfahbod +Date: Sun Oct 15 16:00:22 2017 +0200 + + Inline another bsearch() + + src/hb-ot-map-private.hh | 4 ++-- + src/hb-private.hh | 32 ++++++++++++++++++++++++++++---- + 2 files changed, 30 insertions(+), 6 deletions(-) + +commit 6fb4ac73f94636d19fcac143472b84f9d91985c9 +Author: Behdad Esfahbod +Date: Sun Oct 15 16:00:09 2017 +0200 + + Add popcount for 64bit ints + + src/hb-private.hh | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit 473b17af4d421f4ce7ac18c769731bb2aa4088f8 +Author: Behdad Esfahbod +Date: Sun Oct 15 14:10:34 2017 +0200 + + Remove unused hb_cache_t + + src/Makefile.sources | 1 - + src/hb-cache-private.hh | 74 + ------------------------------------------------- + src/hb-ft.cc | 2 -- + 3 files changed, 77 deletions(-) + +commit a433e60a43c4594c41a82c3741d3f870f6eec247 +Author: Behdad Esfahbod +Date: Sun Oct 15 14:09:46 2017 +0200 + + Remove unused hb_frozen_set_t + + src/hb-set-private.hh | 55 + --------------------------------------------------- + 1 file changed, 55 deletions(-) + +commit 826a1daf2f2075459ff25a20ed8abec030d95c52 +Author: Behdad Esfahbod +Date: Sun Oct 15 14:09:05 2017 +0200 + + Move set-digests into their own header file + + src/Makefile.sources | 1 + + src/hb-ot-layout-private.hh | 2 +- + src/hb-set-digest-private.hh | 144 + +++++++++++++++++++++++++++++++++++++++++++ + src/hb-set-private.hh | 113 --------------------------------- + 4 files changed, 146 insertions(+), 114 deletions(-) + +commit 3c13e153fe89d559d33027c0a5b30a19a6de1bad +Author: Behdad Esfahbod +Date: Sun Oct 15 14:02:58 2017 +0200 + + Try fixing AppVeyor bots + + src/hb-private.hh | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 7e3015a315afe2312134ac33b9cb2d73689a044f +Author: Behdad Esfahbod +Date: Sun Oct 15 12:13:19 2017 +0200 + + Fix warnings + + src/hb-font.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 2075008f3e0b1cfbd7006f1d8c1fa22ac014f4bb +Author: Behdad Esfahbod +Date: Sun Oct 15 12:12:10 2017 +0200 + + Use C++11 + + configure.ac | 3 +++ + 1 file changed, 3 insertions(+) + +commit dbdbfe3d7b36613d893832dcb1884c756c20bfda +Author: Behdad Esfahbod +Date: Sun Oct 15 12:11:08 2017 +0200 + + Use nullptr instead of NULL + + src/hb-blob.cc | 12 ++-- + src/hb-buffer-serialize.cc | 16 ++--- + src/hb-buffer.cc | 10 +-- + src/hb-common.cc | 18 ++--- + src/hb-coretext.cc | 66 ++++++++--------- + src/hb-directwrite.cc | 28 ++++---- + src/hb-face.cc | 10 +-- + src/hb-font.cc | 32 ++++----- + src/hb-ft.cc | 56 +++++++-------- + src/hb-glib.cc | 2 +- + src/hb-gobject-structs.cc | 2 +- + src/hb-graphite2.cc | 26 +++---- + src/hb-icu.cc | 4 +- + src/hb-mutex-private.hh | 2 +- + src/hb-object-private.hh | 2 +- + src/hb-open-type-private.hh | 32 ++++----- + src/hb-ot-cbdt-table.hh | 4 +- + src/hb-ot-cmap-table.hh | 2 +- + src/hb-ot-font.cc | 42 +++++------ + src/hb-ot-layout-common-private.hh | 14 ++-- + src/hb-ot-layout-gsub-table.hh | 2 +- + src/hb-ot-layout-gsubgpos-private.hh | 54 +++++++------- + src/hb-ot-layout-jstf-table.hh | 4 +- + src/hb-ot-layout.cc | 30 ++++---- + src/hb-ot-map-private.hh | 6 +- + src/hb-ot-map.cc | 4 +- + src/hb-ot-math-table.hh | 8 +-- + src/hb-ot-shape-complex-arabic-fallback.hh | 8 +-- + src/hb-ot-shape-complex-arabic.cc | 32 ++++----- + src/hb-ot-shape-complex-default.cc | 22 +++--- + src/hb-ot-shape-complex-hangul.cc | 12 ++-- + src/hb-ot-shape-complex-hebrew.cc | 18 ++--- + src/hb-ot-shape-complex-indic.cc | 12 ++-- + src/hb-ot-shape-complex-myanmar.cc | 40 +++++------ + src/hb-ot-shape-complex-private.hh | 26 +++---- + src/hb-ot-shape-complex-thai.cc | 22 +++--- + src/hb-ot-shape-complex-tibetan.cc | 20 +++--- + src/hb-ot-shape-complex-use.cc | 16 ++--- + src/hb-ot-shape-private.hh | 2 +- + src/hb-ot-shape.cc | 8 +-- + src/hb-ot-tag.cc | 2 +- + src/hb-ot-var.cc | 2 +- + src/hb-private.hh | 37 +++++----- + src/hb-set-private.hh | 2 +- + src/hb-shape-plan.cc | 24 +++---- + src/hb-shape.cc | 8 +-- + src/hb-shaper-private.hh | 6 +- + src/hb-shaper.cc | 6 +- + src/hb-ucdn.cc | 2 +- + src/hb-unicode.cc | 4 +- + src/hb-uniscribe.cc | 50 ++++++------- + src/main.cc | 4 +- + src/test-buffer-serialize.cc | 8 +-- + src/test-size-params.cc | 6 +- + src/test-would-substitute.cc | 8 +-- + src/test.cc | 12 ++-- + util/ansi-print.cc | 2 +- + util/hb-fc.cc | 6 +- + util/hb-ot-shape-closure.cc | 10 +-- + util/hb-shape.cc | 14 ++-- + util/helper-cairo.cc | 12 ++-- + util/main-font-text.hh | 4 +- + util/options.cc | 110 + ++++++++++++++--------------- + util/options.hh | 56 +++++++-------- + util/shape-consumer.hh | 10 +-- + 65 files changed, 563 insertions(+), 568 deletions(-) + +commit fbb937b6807597c9ae002280c6a6278a97b701f3 +Author: Behdad Esfahbod +Date: Sun Oct 15 12:04:16 2017 +0200 + + Don't use NULL in public headers + + src/hb-buffer.h | 4 ++-- + src/hb-common.h | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit c3448e8d21963eb7fc357a37a7a426a4bf130ef3 +Author: Behdad Esfahbod +Date: Sun Oct 15 12:02:00 2017 +0200 + + Use static_assert instead of custom ASSERT_STATIC + + src/hb-buffer-private.hh | 4 ++-- + src/hb-buffer.cc | 2 +- + src/hb-cache-private.hh | 4 ++-- + src/hb-coretext.cc | 2 +- + src/hb-open-type-private.hh | 6 +++--- + src/hb-ot-layout-common-private.hh | 2 +- + src/hb-ot-layout-gdef-table.hh | 6 +++--- + src/hb-ot-layout.cc | 14 ++++++------ + src/hb-ot-map.cc | 2 +- + src/hb-ot-math-table.hh | 4 ++-- + src/hb-ot-shape-complex-arabic-fallback.hh | 6 +++--- + src/hb-ot-shape-complex-indic.cc | 2 +- + src/hb-ot-shape-complex-use.cc | 2 +- + src/hb-private.hh | 34 + +++++++++++++----------------- + src/hb-set-private.hh | 8 +++---- + src/hb-uniscribe.cc | 2 +- + util/options.cc | 3 ++- + 17 files changed, 50 insertions(+), 53 deletions(-) + +commit 76dcbf8b23475b25f8f1918f982bfd8f0dd3456e +Author: Behdad Esfahbod +Date: Sun Oct 15 11:24:35 2017 +0200 + + Add polyfill for static_assert and nullptr + + Also fix hb_assert_constant_t. + + src/hb-private.hh | 38 ++++++++++++++++++++++++++++++++++---- + 1 file changed, 34 insertions(+), 4 deletions(-) + +commit dad431e75bf998dcb09cff795c0f1083b3bd5449 +Author: Behdad Esfahbod +Date: Sun Oct 15 10:55:32 2017 +0200 + + [util] Include hb-private.hh + + Simplifies compatibility issues by centralizing all boilerplate code + in hb-private.hh. + + util/options.hh | 31 +++++-------------------------- + 1 file changed, 5 insertions(+), 26 deletions(-) + +commit 81e2b9b8a959cb7d7503f58fca70761238697fc1 +Author: Behdad Esfahbod +Date: Sun Oct 15 10:48:19 2017 +0200 + + Never skip over CGJ + + We might want to tweak this some more. For now, never skipping over + it is better behavior than always skipping. + + Part of https://github.com/behdad/harfbuzz/issues/554 + + src/hb-ot-layout-private.hh | 19 + +++++++++++-------- + .../bf962d3202883a820aed019d9b5c1838c2ff69c6.ttf | Bin 0 -> + 2468 bytes + test/shaping/tests/default-ignorables.tests | 1 + + 3 files changed, 12 insertions(+), 8 deletions(-) + +commit 25846cc39fb8a9516b8de4333f909851d471156f +Author: Behdad Esfahbod +Date: Fri Oct 13 16:30:33 2017 +0200 + + 1.6.0 + + NEWS | 35 +++++++++++++++++++++++++++++++++++ + configure.ac | 2 +- + docs/harfbuzz-docs.xml | 4 ++++ + 3 files changed, 40 insertions(+), 1 deletion(-) + commit 74f1b88e3720103562552780af7058131c5492d5 Author: Behdad Esfahbod Date: Fri Oct 13 11:01:55 2017 +0200 diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/Makefile.am b/Build/source/libs/harfbuzz/harfbuzz-src/Makefile.am index 07b38c287df..fde5256422b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/Makefile.am +++ b/Build/source/libs/harfbuzz/harfbuzz-src/Makefile.am @@ -13,6 +13,7 @@ EXTRA_DIST = \ BUILD.md \ RELEASING.md \ CMakeLists.txt \ + replace-enum-strings.cmake \ $(NULL) MAINTAINERCLEANFILES = \ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/NEWS b/Build/source/libs/harfbuzz/harfbuzz-src/NEWS index 4973d124202..19daabf7620 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/NEWS +++ b/Build/source/libs/harfbuzz/harfbuzz-src/NEWS @@ -1,3 +1,16 @@ +Overview of changes leading to 1.6.1 +Sunday, October 22nd, 2017 +==================================== + +- Don't skip over COMBINING GRAPHEME JOINER when ligating, etc. + To be refined: https://github.com/behdad/harfbuzz/issues/554 +- Faster hb_set_t implementation. +- Don't use deprecated ICU API. +- Fix undefined-behavior in Myanmar shaper, introduced in 1.6.0 +- Deprecated API: + hb_set_invert() + + Overview of changes leading to 1.6.0 Friday, October the 13th, 2017 ==================================== diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac b/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac index 5b0797f995d..1e00e3d5fce 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac +++ b/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac @@ -1,6 +1,6 @@ AC_PREREQ([2.64]) AC_INIT([HarfBuzz], - [1.6.0], + [1.6.1], [https://github.com/behdad/harfbuzz/issues/new], [harfbuzz], [http://harfbuzz.org/]) @@ -80,6 +80,9 @@ if test "x$GCC" = "xyes"; then # Make symbols link locally LDFLAGS="$LDFLAGS -Bsymbolic-functions" + # Choose C++ version + CXXFLAGS="$CXXFLAGS -std=c++11" + # Make sure we don't link to libstdc++ CXXFLAGS="$CXXFLAGS -fno-rtti -fno-exceptions" diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/replace-enum-strings.cmake b/Build/source/libs/harfbuzz/harfbuzz-src/replace-enum-strings.cmake new file mode 100644 index 00000000000..42fdbff9002 --- /dev/null +++ b/Build/source/libs/harfbuzz/harfbuzz-src/replace-enum-strings.cmake @@ -0,0 +1,21 @@ +# CMake script to replace items +# in sources generated by glib-mkenums + +FILE(READ ${ENUM_INPUT_SRC} enum_in) + +STRING(REPLACE + "_t_get_type" + "_get_type" + enum_out_tmp + "${enum_in}" + ) + +STRING(REPLACE + "_T (" + " (" + enum_out + "${enum_out_tmp}" + ) + +FILE(WRITE ${ENUM_OUTPUT_SRC} "${enum_out}") +FILE(REMOVE ${ENUM_INPUT_SRC}) \ No newline at end of file diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.sources b/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.sources index 51e687b4a14..9fe8a40e3b0 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.sources +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.sources @@ -8,7 +8,6 @@ HB_BASE_sources = \ hb-buffer-private.hh \ hb-buffer-serialize.cc \ hb-buffer.cc \ - hb-cache-private.hh \ hb-common.cc \ hb-face-private.hh \ hb-face.cc \ @@ -30,6 +29,7 @@ HB_BASE_sources = \ hb-ot-post-table.hh \ hb-ot-tag.cc \ hb-private.hh \ + hb-set-digest-private.hh \ hb-set-private.hh \ hb-set.cc \ hb-shape.cc \ @@ -72,7 +72,9 @@ HB_NODIST_headers = \ hb-version.h \ $(NULL) -HB_FALLBACK_sources = hb-fallback-shape.cc +HB_FALLBACK_sources = \ + hb-fallback-shape.cc \ + $(NULL) HB_OT_sources = \ hb-ot-font.cc \ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-blob.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-blob.cc index 41e99da0dda..e390d7520c5 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-blob.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-blob.cc @@ -72,8 +72,8 @@ _hb_blob_destroy_user_data (hb_blob_t *blob) { if (blob->destroy) { blob->destroy (blob->user_data); - blob->user_data = NULL; - blob->destroy = NULL; + blob->user_data = nullptr; + blob->destroy = nullptr; } } @@ -194,12 +194,12 @@ hb_blob_get_empty (void) true, /* immutable */ - NULL, /* data */ + nullptr, /* data */ 0, /* length */ HB_MEMORY_MODE_READONLY, /* mode */ - NULL, /* user_data */ - NULL /* destroy */ + nullptr, /* user_data */ + nullptr /* destroy */ }; return const_cast (&_hb_blob_nil); @@ -379,7 +379,7 @@ hb_blob_get_data_writable (hb_blob_t *blob, unsigned int *length) if (length) *length = 0; - return NULL; + return nullptr; } if (length) diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-deserialize-json.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-deserialize-json.hh index 3f626bda40d..125a4192911 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-deserialize-json.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-deserialize-json.hh @@ -448,7 +448,7 @@ _hb_buffer_deserialize_glyphs_json (hb_buffer_t *buffer, const char *p = buf, *pe = buf + buf_len; /* Ensure we have positions. */ - (void) hb_buffer_get_glyph_positions (buffer, NULL); + (void) hb_buffer_get_glyph_positions (buffer, nullptr); while (p < pe && ISSPACE (*p)) p++; @@ -457,7 +457,7 @@ _hb_buffer_deserialize_glyphs_json (hb_buffer_t *buffer, *end_ptr = ++p; } - const char *tok = NULL; + const char *tok = nullptr; int cs; hb_glyph_info_t info = {0}; hb_glyph_position_t pos = {0}; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-deserialize-text.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-deserialize-text.hh index d2d8daae7ed..426b1375876 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-deserialize-text.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-deserialize-text.hh @@ -325,7 +325,7 @@ _hb_buffer_deserialize_glyphs_text (hb_buffer_t *buffer, const char *p = buf, *pe = buf + buf_len; /* Ensure we have positions. */ - (void) hb_buffer_get_glyph_positions (buffer, NULL); + (void) hb_buffer_get_glyph_positions (buffer, nullptr); while (p < pe && ISSPACE (*p)) p++; @@ -334,7 +334,7 @@ _hb_buffer_deserialize_glyphs_text (hb_buffer_t *buffer, *end_ptr = ++p; } - const char *eof = pe, *tok = NULL; + const char *eof = pe, *tok = nullptr; int cs; hb_glyph_info_t info = {0}; hb_glyph_position_t pos = {0}; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-private.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-private.hh index 37380b40d1c..1aa87b65c50 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-private.hh @@ -45,8 +45,8 @@ #define HB_BUFFER_MAX_LEN_DEFAULT 0x3FFFFFFF /* Shaping more than a billion chars? Let us know! */ #endif -ASSERT_STATIC (sizeof (hb_glyph_info_t) == 20); -ASSERT_STATIC (sizeof (hb_glyph_info_t) == sizeof (hb_glyph_position_t)); +static_assert ((sizeof (hb_glyph_info_t) == 20), ""); +static_assert ((sizeof (hb_glyph_info_t) == sizeof (hb_glyph_position_t)), ""); HB_MARK_AS_FLAG_T (hb_buffer_flags_t); HB_MARK_AS_FLAG_T (hb_buffer_serialize_flags_t); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-serialize.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-serialize.cc index 517d746efd5..ea62e9ffdb2 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-serialize.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-serialize.cc @@ -30,7 +30,7 @@ static const char *serialize_formats[] = { "text", "json", - NULL + nullptr }; /** @@ -90,7 +90,7 @@ hb_buffer_serialize_format_to_string (hb_buffer_serialize_format_t format) case HB_BUFFER_SERIALIZE_FORMAT_TEXT: return serialize_formats[0]; case HB_BUFFER_SERIALIZE_FORMAT_JSON: return serialize_formats[1]; default: - case HB_BUFFER_SERIALIZE_FORMAT_INVALID: return NULL; + case HB_BUFFER_SERIALIZE_FORMAT_INVALID: return nullptr; } } @@ -104,9 +104,9 @@ _hb_buffer_serialize_glyphs_json (hb_buffer_t *buffer, hb_font_t *font, hb_buffer_serialize_flags_t flags) { - hb_glyph_info_t *info = hb_buffer_get_glyph_infos (buffer, NULL); + hb_glyph_info_t *info = hb_buffer_get_glyph_infos (buffer, nullptr); hb_glyph_position_t *pos = (flags & HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS) ? - NULL : hb_buffer_get_glyph_positions (buffer, NULL); + nullptr : hb_buffer_get_glyph_positions (buffer, nullptr); *buf_consumed = 0; for (unsigned int i = start; i < end; i++) @@ -194,9 +194,9 @@ _hb_buffer_serialize_glyphs_text (hb_buffer_t *buffer, hb_font_t *font, hb_buffer_serialize_flags_t flags) { - hb_glyph_info_t *info = hb_buffer_get_glyph_infos (buffer, NULL); + hb_glyph_info_t *info = hb_buffer_get_glyph_infos (buffer, nullptr); hb_glyph_position_t *pos = (flags & HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS) ? - NULL : hb_buffer_get_glyph_positions (buffer, NULL); + nullptr : hb_buffer_get_glyph_positions (buffer, nullptr); *buf_consumed = 0; for (unsigned int i = start; i < end; i++) @@ -422,8 +422,8 @@ hb_bool_t hb_buffer_deserialize_glyphs (hb_buffer_t *buffer, const char *buf, int buf_len, /* -1 means nul-terminated */ - const char **end_ptr, /* May be NULL */ - hb_font_t *font, /* May be NULL */ + const char **end_ptr, /* May be nullptr */ + hb_font_t *font, /* May be nullptr */ hb_buffer_serialize_format_t format) { const char *end; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc index 171d1016e3f..73b3e4bd55b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc @@ -120,8 +120,8 @@ hb_buffer_t::enlarge (unsigned int size) } unsigned int new_allocated = allocated; - hb_glyph_position_t *new_pos = NULL; - hb_glyph_info_t *new_info = NULL; + hb_glyph_position_t *new_pos = nullptr; + hb_glyph_info_t *new_info = nullptr; bool separate_out = out_info != info; if (unlikely (_hb_unsigned_int_mul_overflows (size, sizeof (info[0])))) @@ -130,7 +130,7 @@ hb_buffer_t::enlarge (unsigned int size) while (size >= new_allocated) new_allocated += (new_allocated >> 1) + 32; - ASSERT_STATIC (sizeof (info[0]) == sizeof (pos[0])); + static_assert ((sizeof (info[0]) == sizeof (pos[0])), ""); if (unlikely (_hb_unsigned_int_mul_overflows (new_allocated, sizeof (info[0])))) goto done; @@ -1993,9 +1993,9 @@ hb_buffer_set_message_func (hb_buffer_t *buffer, buffer->message_data = user_data; buffer->message_destroy = destroy; } else { - buffer->message_func = NULL; - buffer->message_data = NULL; - buffer->message_destroy = NULL; + buffer->message_func = nullptr; + buffer->message_data = nullptr; + buffer->message_destroy = nullptr; } } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.h index 42564bb19be..a8a4b84e97b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.h +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.h @@ -132,8 +132,8 @@ typedef struct hb_segment_properties_t { #define HB_SEGMENT_PROPERTIES_DEFAULT {HB_DIRECTION_INVALID, \ HB_SCRIPT_INVALID, \ HB_LANGUAGE_INVALID, \ - NULL, \ - NULL} + (void *) 0, \ + (void *) 0} HB_EXTERN hb_bool_t hb_segment_properties_equal (const hb_segment_properties_t *a, diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cache-private.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cache-private.hh deleted file mode 100644 index 24957e1e96f..00000000000 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cache-private.hh +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright © 2012 Google, Inc. - * - * This is part of HarfBuzz, a text shaping library. - * - * Permission is hereby granted, without written agreement and without - * license or royalty fees, to use, copy, modify, and distribute this - * software and its documentation for any purpose, provided that the - * above copyright notice and the following two paragraphs appear in - * all copies of this software. - * - * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR - * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES - * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN - * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH - * DAMAGE. - * - * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, - * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS - * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO - * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. - * - * Google Author(s): Behdad Esfahbod - */ - -#ifndef HB_CACHE_PRIVATE_HH -#define HB_CACHE_PRIVATE_HH - -#include "hb-private.hh" - - -/* Implements a lock-free cache for int->int functions. */ - -template -struct hb_cache_t -{ - ASSERT_STATIC (key_bits >= cache_bits); - ASSERT_STATIC (key_bits + value_bits - cache_bits < 8 * sizeof (unsigned int)); - - inline void clear (void) - { - memset (values, 255, sizeof (values)); - } - - inline bool get (unsigned int key, unsigned int *value) - { - unsigned int k = key & ((1u<> value_bits) != (key >> cache_bits)) - return false; - *value = v & ((1u<> key_bits) || (value >> value_bits))) - return false; /* Overflows */ - unsigned int k = key & ((1u<>cache_bits)< hb_cmap_cache_t; -typedef hb_cache_t<16, 24, 8> hb_advance_cache_t; - - -#endif /* HB_CACHE_PRIVATE_HH */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.cc index 8e8e5565331..2f9b3b85319 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.cc @@ -274,13 +274,13 @@ retry: /* Not found; allocate one. */ hb_language_item_t *lang = (hb_language_item_t *) calloc (1, sizeof (hb_language_item_t)); if (unlikely (!lang)) - return NULL; + return nullptr; lang->next = first_lang; *lang = key; if (unlikely (!lang->lang)) { free (lang); - return NULL; + return nullptr; } if (!hb_atomic_ptr_cmpexch (&langs, first_lang, lang)) { @@ -318,7 +318,7 @@ hb_language_from_string (const char *str, int len) if (!str || !len || !*str) return HB_LANGUAGE_INVALID; - hb_language_item_t *item = NULL; + hb_language_item_t *item = nullptr; if (len >= 0) { /* NUL-terminate it. */ @@ -349,7 +349,7 @@ hb_language_from_string (const char *str, int len) const char * hb_language_to_string (hb_language_t language) { - /* This is actually NULL-safe! */ + /* This is actually nullptr-safe! */ return language->s; } @@ -369,7 +369,7 @@ hb_language_get_default (void) hb_language_t language = (hb_language_t) hb_atomic_ptr_get (&default_language); if (unlikely (language == HB_LANGUAGE_INVALID)) { - language = hb_language_from_string (setlocale (LC_CTYPE, NULL), -1); + language = hb_language_from_string (setlocale (LC_CTYPE, nullptr), -1); (void) hb_atomic_ptr_cmpexch (&default_language, HB_LANGUAGE_INVALID, language); } @@ -562,9 +562,9 @@ hb_user_data_array_t::set (hb_user_data_key_t *key, void * hb_user_data_array_t::get (hb_user_data_key_t *key) { - hb_user_data_item_t item = {NULL, NULL, NULL}; + hb_user_data_item_t item = {nullptr, nullptr, nullptr}; - return items.find (key, &item, lock) ? item.data : NULL; + return items.find (key, &item, lock) ? item.data : nullptr; } @@ -722,9 +722,9 @@ retry: if (unlikely (!C)) { - C = newlocale (LC_ALL_MASK, "C", NULL); + C = newlocale (LC_ALL_MASK, "C", nullptr); - if (!hb_atomic_ptr_cmpexch (&C_locale, NULL, C)) + if (!hb_atomic_ptr_cmpexch (&C_locale, nullptr, C)) { freelocale (C_locale); goto retry; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.h index 614a63aa60b..26200ce125b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.h +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.h @@ -134,7 +134,7 @@ hb_language_from_string (const char *str, int len); HB_EXTERN const char * hb_language_to_string (hb_language_t language); -#define HB_LANGUAGE_INVALID ((hb_language_t) NULL) +#define HB_LANGUAGE_INVALID ((hb_language_t) 0) HB_EXTERN hb_language_t hb_language_get_default (void); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc index 22661407dea..937822b8673 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc @@ -65,12 +65,12 @@ reference_table (hb_face_t *face HB_UNUSED, hb_tag_t tag, void *user_data) CGFontRef cg_font = reinterpret_cast (user_data); CFDataRef cf_data = CGFontCopyTableForTag (cg_font, tag); if (unlikely (!cf_data)) - return NULL; + return nullptr; const char *data = reinterpret_cast (CFDataGetBytePtr (cf_data)); const size_t length = CFDataGetLength (cf_data); if (!data || !length) - return NULL; + return nullptr; return hb_blob_create (data, length, HB_MEMORY_MODE_READONLY, reinterpret_cast (const_cast<__CFData *> (cf_data)), @@ -125,7 +125,7 @@ static void release_data (void *info, const void *data, size_t size) { assert (hb_blob_get_length ((hb_blob_t *) info) == size && - hb_blob_get_data ((hb_blob_t *) info, NULL) == data); + hb_blob_get_data ((hb_blob_t *) info, nullptr) == data); hb_blob_destroy ((hb_blob_t *) info); } @@ -133,7 +133,7 @@ release_data (void *info, const void *data, size_t size) static CGFontRef create_cg_font (hb_face_t *face) { - CGFontRef cg_font = NULL; + CGFontRef cg_font = nullptr; if (face->destroy == _hb_cg_font_release) { cg_font = CGFontRetain ((CGFontRef) face->user_data); @@ -161,7 +161,7 @@ create_cg_font (hb_face_t *face) static CTFontRef create_ct_font (CGFontRef cg_font, CGFloat font_size) { - CTFontRef ct_font = NULL; + CTFontRef ct_font = nullptr; /* CoreText does not enable trak table usage / tracking when creating a CTFont * using CTFontCreateWithGraphicsFont. The only way of enabling tracking seems @@ -174,23 +174,23 @@ create_ct_font (CGFontRef cg_font, CGFloat font_size) if (CFStringHasSuffix (cg_postscript_name, CFSTR ("-Bold"))) font_type = kCTFontUIFontEmphasizedSystem; - ct_font = CTFontCreateUIFontForLanguage (font_type, font_size, NULL); + ct_font = CTFontCreateUIFontForLanguage (font_type, font_size, nullptr); CFStringRef ct_result_name = CTFontCopyPostScriptName(ct_font); if (CFStringCompare (ct_result_name, cg_postscript_name, 0) != kCFCompareEqualTo) { CFRelease(ct_font); - ct_font = NULL; + ct_font = nullptr; } CFRelease (ct_result_name); } CFRelease (cg_postscript_name); if (!ct_font) - ct_font = CTFontCreateWithGraphicsFont (cg_font, font_size, NULL, NULL); + ct_font = CTFontCreateWithGraphicsFont (cg_font, font_size, nullptr, nullptr); if (unlikely (!ct_font)) { DEBUG_MSG (CORETEXT, cg_font, "Font CTFontCreateWithGraphicsFont() failed"); - return NULL; + return nullptr; } /* crbug.com/576941 and crbug.com/625902 and the investigation in the latter @@ -200,7 +200,7 @@ create_ct_font (CGFontRef cg_font, CGFloat font_size) * reconfiguring the cascade list causes CoreText crashes. For details, see * crbug.com/549610 */ // 0x00070000 stands for "kCTVersionNumber10_10", see CoreText.h - if (&CTGetCoreTextVersion != NULL && CTGetCoreTextVersion() < 0x00070000) { + if (&CTGetCoreTextVersion != nullptr && CTGetCoreTextVersion() < 0x00070000) { CFStringRef fontName = CTFontCopyPostScriptName (ct_font); bool isEmojiFont = CFStringCompare (fontName, CFSTR("AppleColorEmoji"), 0) == kCFCompareEqualTo; CFRelease (fontName); @@ -214,7 +214,7 @@ create_ct_font (CGFontRef cg_font, CGFloat font_size) * font fallback which we don't need anyway. */ { CTFontDescriptorRef last_resort_font_desc = get_last_resort_font_desc (); - CTFontRef new_ct_font = CTFontCreateCopyWithAttributes (ct_font, 0.0, NULL, last_resort_font_desc); + CTFontRef new_ct_font = CTFontCreateCopyWithAttributes (ct_font, 0.0, nullptr, last_resort_font_desc); CFRelease (last_resort_font_desc); if (new_ct_font) { @@ -257,7 +257,7 @@ _hb_coretext_shaper_face_data_create (hb_face_t *face) if (unlikely (!cg_font)) { DEBUG_MSG (CORETEXT, face, "CGFont creation failed.."); - return NULL; + return nullptr; } return (hb_coretext_shaper_face_data_t *) cg_font; @@ -275,7 +275,7 @@ _hb_coretext_shaper_face_data_destroy (hb_coretext_shaper_face_data_t *data) CGFontRef hb_coretext_face_get_cg_font (hb_face_t *face) { - if (unlikely (!hb_coretext_shaper_face_data_ensure (face))) return NULL; + if (unlikely (!hb_coretext_shaper_face_data_ensure (face))) return nullptr; return (CGFontRef) HB_SHAPER_DATA_GET (face); } @@ -288,7 +288,7 @@ hb_coretext_shaper_font_data_t * _hb_coretext_shaper_font_data_create (hb_font_t *font) { hb_face_t *face = font->face; - if (unlikely (!hb_coretext_shaper_face_data_ensure (face))) return NULL; + if (unlikely (!hb_coretext_shaper_face_data_ensure (face))) return nullptr; CGFontRef cg_font = (CGFontRef) HB_SHAPER_DATA_GET (face); CTFontRef ct_font = create_ct_font (cg_font, coretext_font_size (font->ptem)); @@ -296,7 +296,7 @@ _hb_coretext_shaper_font_data_create (hb_font_t *font) if (unlikely (!ct_font)) { DEBUG_MSG (CORETEXT, font, "CGFont creation failed.."); - return NULL; + return nullptr; } return (hb_coretext_shaper_font_data_t *) ct_font; @@ -333,7 +333,7 @@ _hb_coretext_shaper_shape_plan_data_destroy (hb_coretext_shaper_shape_plan_data_ CTFontRef hb_coretext_font_get_ct_font (hb_font_t *font) { - if (unlikely (!hb_coretext_shaper_font_data_ensure (font))) return NULL; + if (unlikely (!hb_coretext_shaper_font_data_ensure (font))) return nullptr; return (CTFontRef)HB_SHAPER_DATA_GET (font); } @@ -678,7 +678,7 @@ _hb_coretext_shape (hb_shape_plan_t *shape_plan, CFNumberCreate (kCFAllocatorDefault, kCFNumberIntType, &active_features[j].rec.feature), CFNumberCreate (kCFAllocatorDefault, kCFNumberIntType, &active_features[j].rec.setting) }; - ASSERT_STATIC (ARRAY_LENGTH (keys) == ARRAY_LENGTH (values)); + static_assert ((ARRAY_LENGTH_CONST (keys) == ARRAY_LENGTH_CONST (values)), ""); CFDictionaryRef dict = CFDictionaryCreate (kCFAllocatorDefault, (const void **) keys, (const void **) values, @@ -704,12 +704,12 @@ _hb_coretext_shape (hb_shape_plan_t *shape_plan, CTFontDescriptorRef font_desc = CTFontDescriptorCreateWithAttributes (attributes); CFRelease (attributes); - range->font = CTFontCreateCopyWithAttributes (ct_font, 0.0, NULL, font_desc); + range->font = CTFontCreateCopyWithAttributes (ct_font, 0.0, nullptr, font_desc); CFRelease (font_desc); } else { - range->font = NULL; + range->font = nullptr; } range->index_first = last_index; @@ -779,14 +779,14 @@ _hb_coretext_shape (hb_shape_plan_t *shape_plan, #define FAIL(...) \ HB_STMT_START { \ - DEBUG_MSG (CORETEXT, NULL, __VA_ARGS__); \ + DEBUG_MSG (CORETEXT, nullptr, __VA_ARGS__); \ ret = false; \ goto fail; \ } HB_STMT_END; bool ret = true; - CFStringRef string_ref = NULL; - CTLineRef line = NULL; + CFStringRef string_ref = nullptr; + CTLineRef line = nullptr; if (0) { @@ -798,8 +798,8 @@ resize_and_retry: assert (line); CFRelease (string_ref); CFRelease (line); - string_ref = NULL; - line = NULL; + string_ref = nullptr; + line = nullptr; /* Get previous start-of-scratch-area, that we use later for readjusting * our existing scratch arrays. */ @@ -820,7 +820,7 @@ resize_and_retry: scratch_size -= old_scratch_used; } { - string_ref = CFStringCreateWithCharactersNoCopy (NULL, + string_ref = CFStringCreateWithCharactersNoCopy (nullptr, pchars, chars_len, kCFAllocatorNull); if (unlikely (!string_ref)) @@ -937,7 +937,7 @@ resize_and_retry: CFArrayRef glyph_runs = CTLineGetGlyphRuns (line); unsigned int num_runs = CFArrayGetCount (glyph_runs); - DEBUG_MSG (CORETEXT, NULL, "Num runs: %d", num_runs); + DEBUG_MSG (CORETEXT, nullptr, "Num runs: %d", num_runs); buffer->len = 0; uint32_t status_and = ~0, status_or = 0; @@ -963,7 +963,7 @@ resize_and_retry: status_or |= run_status; status_and &= run_status; DEBUG_MSG (CORETEXT, run, "CTRunStatus: %x", run_status); - double run_advance = CTRunGetTypographicBounds (run, range_all, NULL, NULL, NULL); + double run_advance = CTRunGetTypographicBounds (run, range_all, nullptr, nullptr, nullptr); if (HB_DIRECTION_IS_VERTICAL (buffer->props.direction)) run_advance = -run_advance; DEBUG_MSG (CORETEXT, run, "Run advance: %g", run_advance); @@ -1089,7 +1089,7 @@ resize_and_retry: /* Testing used to indicate that CTRunGetGlyphsPtr, etc (almost?) always * succeed, and so copying data to our own buffer will be rare. Reports - * have it that this changed in OS X 10.10 Yosemite, and NULL is returned + * have it that this changed in OS X 10.10 Yosemite, and nullptr is returned * frequently. At any rate, we can test that codepath by setting USE_PTR * to false. */ @@ -1105,13 +1105,13 @@ resize_and_retry: { /* Setup glyphs */ SCRATCH_SAVE(); - const CGGlyph* glyphs = USE_PTR ? CTRunGetGlyphsPtr (run) : NULL; + const CGGlyph* glyphs = USE_PTR ? CTRunGetGlyphsPtr (run) : nullptr; if (!glyphs) { ALLOCATE_ARRAY (CGGlyph, glyph_buf, num_glyphs, goto resize_and_retry); CTRunGetGlyphs (run, range_all, glyph_buf); glyphs = glyph_buf; } - const CFIndex* string_indices = USE_PTR ? CTRunGetStringIndicesPtr (run) : NULL; + const CFIndex* string_indices = USE_PTR ? CTRunGetStringIndicesPtr (run) : nullptr; if (!string_indices) { ALLOCATE_ARRAY (CFIndex, index_buf, num_glyphs, goto resize_and_retry); CTRunGetStringIndices (run, range_all, index_buf); @@ -1133,7 +1133,7 @@ resize_and_retry: * advance (in the advance direction only), and for last glyph we set * whatever is needed to make the whole run's advance add up. */ SCRATCH_SAVE(); - const CGPoint* positions = USE_PTR ? CTRunGetPositionsPtr (run) : NULL; + const CGPoint* positions = USE_PTR ? CTRunGetPositionsPtr (run) : nullptr; if (!positions) { ALLOCATE_ARRAY (CGPoint, position_buf, num_glyphs, goto resize_and_retry); CTRunGetPositions (run, range_all, position_buf); @@ -1300,12 +1300,12 @@ _hb_coretext_aat_shaper_face_data_create (hb_face_t *face) if (hb_blob_get_length (blob)) { hb_blob_destroy (blob); - return hb_coretext_shaper_face_data_ensure (face) ? (hb_coretext_aat_shaper_face_data_t *) HB_SHAPER_DATA_SUCCEEDED : NULL; + return hb_coretext_shaper_face_data_ensure (face) ? (hb_coretext_aat_shaper_face_data_t *) HB_SHAPER_DATA_SUCCEEDED : nullptr; } hb_blob_destroy (blob); } - return NULL; + return nullptr; } void @@ -1323,7 +1323,7 @@ struct hb_coretext_aat_shaper_font_data_t {}; hb_coretext_aat_shaper_font_data_t * _hb_coretext_aat_shaper_font_data_create (hb_font_t *font) { - return hb_coretext_shaper_font_data_ensure (font) ? (hb_coretext_aat_shaper_font_data_t *) HB_SHAPER_DATA_SUCCEEDED : NULL; + return hb_coretext_shaper_font_data_ensure (font) ? (hb_coretext_aat_shaper_font_data_t *) HB_SHAPER_DATA_SUCCEEDED : nullptr; } void diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-deprecated.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-deprecated.h index 0398dfae60b..eac7efb42f1 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-deprecated.h +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-deprecated.h @@ -34,6 +34,7 @@ #include "hb-common.h" #include "hb-unicode.h" #include "hb-font.h" +#include "hb-set.h" HB_BEGIN_DECLS @@ -54,6 +55,9 @@ hb_font_funcs_set_glyph_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_func_t func, void *user_data, hb_destroy_func_t destroy); +HB_EXTERN void +hb_set_invert (hb_set_t *set); + #endif HB_END_DECLS diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-directwrite.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-directwrite.cc index 14df8221b1d..a6693ef3aed 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-directwrite.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-directwrite.cc @@ -140,7 +140,7 @@ _hb_directwrite_shaper_face_data_create(hb_face_t *face) hb_directwrite_shaper_face_data_t *data = (hb_directwrite_shaper_face_data_t *) malloc (sizeof (hb_directwrite_shaper_face_data_t)); if (unlikely (!data)) - return NULL; + return nullptr; // TODO: factory and fontFileLoader should be cached separately IDWriteFactory* dwriteFactory; @@ -153,7 +153,7 @@ _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, NULL), hb_blob_get_length (blob)); + (uint8_t*) hb_blob_get_data (blob, nullptr), hb_blob_get_length (blob)); IDWriteFontFileLoader *fontFileLoader = new DWriteFontFileLoader (fontFileStream); dwriteFactory->RegisterFontFileLoader (fontFileLoader); @@ -165,7 +165,7 @@ _hb_directwrite_shaper_face_data_create(hb_face_t *face) #define FAIL(...) \ HB_STMT_START { \ - DEBUG_MSG (DIRECTWRITE, NULL, __VA_ARGS__); \ + DEBUG_MSG (DIRECTWRITE, nullptr, __VA_ARGS__); \ return false; \ } HB_STMT_END; @@ -233,12 +233,12 @@ struct hb_directwrite_shaper_font_data_t { hb_directwrite_shaper_font_data_t * _hb_directwrite_shaper_font_data_create (hb_font_t *font) { - if (unlikely (!hb_directwrite_shaper_face_data_ensure (font->face))) return NULL; + if (unlikely (!hb_directwrite_shaper_face_data_ensure (font->face))) return nullptr; hb_directwrite_shaper_font_data_t *data = (hb_directwrite_shaper_font_data_t *) malloc (sizeof (hb_directwrite_shaper_font_data_t)); if (unlikely (!data)) - return NULL; + return nullptr; return data; } @@ -313,7 +313,7 @@ public: , mTextLength(textLength) , mLocaleName(localeName) , mReadingDirection(readingDirection) - , mCurrentRun(NULL) { }; + , mCurrentRun(nullptr) { }; ~TextAnalysis() { // delete runs, except mRunHead which is part of the TextAnalysis object @@ -337,7 +337,7 @@ public: mRunHead.mTextLength = mTextLength; mRunHead.mBidiLevel = (mReadingDirection == DWRITE_READING_DIRECTION_RIGHT_TO_LEFT); - mRunHead.nextRun = NULL; + mRunHead.nextRun = nullptr; mCurrentRun = &mRunHead; // Call each of the analyzers in sequence, recording their results. @@ -356,7 +356,7 @@ public: { if (textPosition >= mTextLength) { // No text at this position, valid query though. - *textString = NULL; + *textString = nullptr; *textLength = 0; } else { @@ -373,7 +373,7 @@ public: if (textPosition == 0 || textPosition > mTextLength) { // Either there is no text before here (== 0), or this // is an invalid position. The query is considered valid thouh. - *textString = NULL; + *textString = nullptr; *textLength = 0; } else { @@ -399,7 +399,7 @@ public: OUT IDWriteNumberSubstitution** numberSubstitution) { // We do not support number substitution. - *numberSubstitution = NULL; + *numberSubstitution = nullptr; *textLength = mTextLength - textPosition; return S_OK; @@ -617,14 +617,14 @@ _hb_directwrite_shape_full(hb_shape_plan_t *shape_plan, */ uint32_t textLength = buffer->len; - TextAnalysis analysis(textString, textLength, NULL, readingDirection); + TextAnalysis analysis(textString, textLength, nullptr, readingDirection); TextAnalysis::Run *runHead; HRESULT hr; hr = analysis.GenerateResults(analyzer, &runHead); #define FAIL(...) \ HB_STMT_START { \ - DEBUG_MSG (DIRECTWRITE, NULL, __VA_ARGS__); \ + DEBUG_MSG (DIRECTWRITE, nullptr, __VA_ARGS__); \ return false; \ } HB_STMT_END; @@ -639,7 +639,7 @@ _hb_directwrite_shape_full(hb_shape_plan_t *shape_plan, bool isRightToLeft = HB_DIRECTION_IS_BACKWARD (buffer->props.direction); const wchar_t localeName[20] = {0}; - if (buffer->props.language != NULL) + if (buffer->props.language != nullptr) { mbstowcs ((wchar_t*) localeName, hb_language_to_string (buffer->props.language), 20); @@ -672,7 +672,7 @@ retry_getglyphs: malloc (maxGlyphCount * sizeof (DWRITE_SHAPING_GLYPH_PROPERTIES)); hr = analyzer->GetGlyphs (textString, textLength, fontFace, false, - isRightToLeft, &runHead->mScript, localeName, NULL, &dwFeatures, + isRightToLeft, &runHead->mScript, localeName, nullptr, &dwFeatures, featureRangeLengths, 1, maxGlyphCount, clusterMap, textProperties, glyphIndices, glyphProperties, &glyphCount); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.cc index e96c8acd386..26fddbe5292 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.cc @@ -43,9 +43,9 @@ const hb_face_t _hb_face_nil = { true, /* immutable */ - NULL, /* reference_table_func */ - NULL, /* user_data */ - NULL, /* destroy */ + nullptr, /* reference_table_func */ + nullptr, /* user_data */ + nullptr, /* destroy */ 0, /* index */ 1000, /* upem */ @@ -57,7 +57,7 @@ const hb_face_t _hb_face_nil = { #undef HB_SHAPER_IMPLEMENT }, - NULL, /* shape_plans */ + nullptr, /* shape_plans */ }; @@ -109,7 +109,7 @@ _hb_face_for_data_closure_create (hb_blob_t *blob, unsigned int index) closure = (hb_face_for_data_closure_t *) calloc (1, sizeof (hb_face_for_data_closure_t)); if (unlikely (!closure)) - return NULL; + return nullptr; closure->blob = blob; closure->index = index; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.cc index 5673e66e3d0..f3534b686bf 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.cc @@ -36,7 +36,7 @@ */ static hb_bool_t -hb_font_get_font_h_extents_nil (hb_font_t *font, +hb_font_get_font_h_extents_nil (hb_font_t *font HB_UNUSED, void *font_data HB_UNUSED, hb_font_extents_t *metrics, void *user_data HB_UNUSED) @@ -60,7 +60,7 @@ hb_font_get_font_h_extents_parent (hb_font_t *font, } static hb_bool_t -hb_font_get_font_v_extents_nil (hb_font_t *font, +hb_font_get_font_v_extents_nil (hb_font_t *font HB_UNUSED, void *font_data HB_UNUSED, hb_font_extents_t *metrics, void *user_data HB_UNUSED) @@ -347,12 +347,12 @@ static const hb_font_funcs_t _hb_font_funcs_nil = { true, /* immutable */ { -#define HB_FONT_FUNC_IMPLEMENT(name) NULL, +#define HB_FONT_FUNC_IMPLEMENT(name) nullptr, HB_FONT_FUNCS_IMPLEMENT_CALLBACKS #undef HB_FONT_FUNC_IMPLEMENT }, { -#define HB_FONT_FUNC_IMPLEMENT(name) NULL, +#define HB_FONT_FUNC_IMPLEMENT(name) nullptr, HB_FONT_FUNCS_IMPLEMENT_CALLBACKS #undef HB_FONT_FUNC_IMPLEMENT }, @@ -370,12 +370,12 @@ static const hb_font_funcs_t _hb_font_funcs_parent = { true, /* immutable */ { -#define HB_FONT_FUNC_IMPLEMENT(name) NULL, +#define HB_FONT_FUNC_IMPLEMENT(name) nullptr, HB_FONT_FUNCS_IMPLEMENT_CALLBACKS #undef HB_FONT_FUNC_IMPLEMENT }, { -#define HB_FONT_FUNC_IMPLEMENT(name) NULL, +#define HB_FONT_FUNC_IMPLEMENT(name) nullptr, HB_FONT_FUNCS_IMPLEMENT_CALLBACKS #undef HB_FONT_FUNC_IMPLEMENT }, @@ -563,8 +563,8 @@ hb_font_funcs_set_##name##_func (hb_font_funcs_t *ffuncs, \ ffuncs->destroy.name = destroy; \ } else { \ ffuncs->get.f.name = hb_font_get_##name##_parent; \ - ffuncs->user_data.name = NULL; \ - ffuncs->destroy.name = NULL; \ + ffuncs->user_data.name = nullptr; \ + ffuncs->destroy.name = nullptr; \ } \ } @@ -1161,7 +1161,7 @@ hb_font_create_sub_font (hb_font_t *parent) font->num_coords = parent->num_coords; if (!font->num_coords) - font->coords = NULL; + font->coords = nullptr; else { unsigned int size = parent->num_coords * sizeof (parent->coords[0]); @@ -1192,7 +1192,7 @@ hb_font_get_empty (void) true, /* immutable */ - NULL, /* parent */ + nullptr, /* parent */ const_cast (&_hb_face_nil), 1000, /* x_scale */ @@ -1203,11 +1203,11 @@ hb_font_get_empty (void) 0, /* ptem */ 0, /* num_coords */ - NULL, /* coords */ + nullptr, /* coords */ const_cast (&_hb_font_funcs_nil), /* klass */ - NULL, /* user_data */ - NULL, /* destroy */ + nullptr, /* user_data */ + nullptr, /* destroy */ { #define HB_SHAPER_IMPLEMENT(shaper) HB_SHAPER_DATA_INVALID, @@ -1639,13 +1639,13 @@ hb_font_set_variations (hb_font_t *font, if (!variations_length) { - hb_font_set_var_coords_normalized (font, NULL, 0); + hb_font_set_var_coords_normalized (font, nullptr, 0); return; } unsigned int coords_length = hb_ot_var_get_axis_count (font->face); - int *normalized = coords_length ? (int *) calloc (coords_length, sizeof (int)) : NULL; + int *normalized = coords_length ? (int *) calloc (coords_length, sizeof (int)) : nullptr; if (unlikely (coords_length && !normalized)) return; @@ -1668,7 +1668,7 @@ hb_font_set_var_coords_design (hb_font_t *font, if (font->immutable) return; - int *normalized = coords_length ? (int *) calloc (coords_length, sizeof (int)) : NULL; + int *normalized = coords_length ? (int *) calloc (coords_length, sizeof (int)) : nullptr; if (unlikely (coords_length && !normalized)) return; @@ -1689,7 +1689,7 @@ hb_font_set_var_coords_normalized (hb_font_t *font, if (font->immutable) return; - int *copy = coords_length ? (int *) calloc (coords_length, sizeof (coords[0])) : NULL; + int *copy = coords_length ? (int *) calloc (coords_length, sizeof (coords[0])) : nullptr; if (unlikely (coords_length && !copy)) return; @@ -1749,7 +1749,7 @@ trampoline_create (FuncType func, trampoline_t *trampoline = (trampoline_t *) calloc (1, sizeof (trampoline_t)); if (unlikely (!trampoline)) - return NULL; + return nullptr; trampoline->closure.user_data = user_data; trampoline->closure.destroy = destroy; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc index 83af9942ec5..f578e9dc49b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc @@ -33,8 +33,6 @@ #include "hb-font-private.hh" -#include "hb-cache-private.hh" // Maybe use in the future? - #include FT_ADVANCES_H #include FT_MULTIPLE_MASTERS_H #include FT_TRUETYPE_TABLES_H @@ -83,7 +81,7 @@ _hb_ft_font_create (FT_Face ft_face, bool symbol, bool unref) hb_ft_font_t *ft_font = (hb_ft_font_t *) calloc (1, sizeof (hb_ft_font_t)); if (unlikely (!ft_font)) - return NULL; + return nullptr; ft_font->ft_face = ft_face; ft_font->symbol = symbol; @@ -158,7 +156,7 @@ FT_Face hb_ft_font_get_face (hb_font_t *font) { if (font->destroy != _hb_ft_font_destroy) - return NULL; + return nullptr; const hb_ft_font_t *ft_font = (const hb_ft_font_t *) font->user_data; @@ -424,7 +422,7 @@ hb_ft_get_font_h_extents (hb_font_t *font HB_UNUSED, return true; } -static hb_font_funcs_t *static_ft_funcs = NULL; +static hb_font_funcs_t *static_ft_funcs = nullptr; #ifdef HB_USE_ATEXIT static @@ -444,24 +442,24 @@ retry: { funcs = hb_font_funcs_create (); - hb_font_funcs_set_font_h_extents_func (funcs, hb_ft_get_font_h_extents, NULL, NULL); - //hb_font_funcs_set_font_v_extents_func (funcs, hb_ft_get_font_v_extents, NULL, NULL); - hb_font_funcs_set_nominal_glyph_func (funcs, hb_ft_get_nominal_glyph, NULL, NULL); - hb_font_funcs_set_variation_glyph_func (funcs, hb_ft_get_variation_glyph, NULL, NULL); - hb_font_funcs_set_glyph_h_advance_func (funcs, hb_ft_get_glyph_h_advance, NULL, NULL); - hb_font_funcs_set_glyph_v_advance_func (funcs, hb_ft_get_glyph_v_advance, NULL, NULL); - //hb_font_funcs_set_glyph_h_origin_func (funcs, hb_ft_get_glyph_h_origin, NULL, NULL); - hb_font_funcs_set_glyph_v_origin_func (funcs, hb_ft_get_glyph_v_origin, NULL, NULL); - hb_font_funcs_set_glyph_h_kerning_func (funcs, hb_ft_get_glyph_h_kerning, NULL, NULL); - //hb_font_funcs_set_glyph_v_kerning_func (funcs, hb_ft_get_glyph_v_kerning, NULL, NULL); - hb_font_funcs_set_glyph_extents_func (funcs, hb_ft_get_glyph_extents, NULL, NULL); - hb_font_funcs_set_glyph_contour_point_func (funcs, hb_ft_get_glyph_contour_point, NULL, NULL); - hb_font_funcs_set_glyph_name_func (funcs, hb_ft_get_glyph_name, NULL, NULL); - hb_font_funcs_set_glyph_from_name_func (funcs, hb_ft_get_glyph_from_name, NULL, NULL); + hb_font_funcs_set_font_h_extents_func (funcs, hb_ft_get_font_h_extents, nullptr, nullptr); + //hb_font_funcs_set_font_v_extents_func (funcs, hb_ft_get_font_v_extents, nullptr, nullptr); + hb_font_funcs_set_nominal_glyph_func (funcs, hb_ft_get_nominal_glyph, nullptr, nullptr); + hb_font_funcs_set_variation_glyph_func (funcs, hb_ft_get_variation_glyph, nullptr, nullptr); + hb_font_funcs_set_glyph_h_advance_func (funcs, hb_ft_get_glyph_h_advance, nullptr, nullptr); + hb_font_funcs_set_glyph_v_advance_func (funcs, hb_ft_get_glyph_v_advance, nullptr, nullptr); + //hb_font_funcs_set_glyph_h_origin_func (funcs, hb_ft_get_glyph_h_origin, nullptr, nullptr); + hb_font_funcs_set_glyph_v_origin_func (funcs, hb_ft_get_glyph_v_origin, nullptr, nullptr); + hb_font_funcs_set_glyph_h_kerning_func (funcs, hb_ft_get_glyph_h_kerning, nullptr, nullptr); + //hb_font_funcs_set_glyph_v_kerning_func (funcs, hb_ft_get_glyph_v_kerning, nullptr, nullptr); + hb_font_funcs_set_glyph_extents_func (funcs, hb_ft_get_glyph_extents, nullptr, nullptr); + hb_font_funcs_set_glyph_contour_point_func (funcs, hb_ft_get_glyph_contour_point, nullptr, nullptr); + hb_font_funcs_set_glyph_name_func (funcs, hb_ft_get_glyph_name, nullptr, nullptr); + hb_font_funcs_set_glyph_from_name_func (funcs, hb_ft_get_glyph_from_name, nullptr, nullptr); hb_font_funcs_make_immutable (funcs); - if (!hb_atomic_ptr_cmpexch (&static_ft_funcs, NULL, funcs)) { + if (!hb_atomic_ptr_cmpexch (&static_ft_funcs, nullptr, funcs)) { hb_font_funcs_destroy (funcs); goto retry; } @@ -490,17 +488,17 @@ reference_table (hb_face_t *face HB_UNUSED, hb_tag_t tag, void *user_data) /* Note: FreeType like HarfBuzz uses the NONE tag for fetching the entire blob */ - error = FT_Load_Sfnt_Table (ft_face, tag, 0, NULL, &length); + error = FT_Load_Sfnt_Table (ft_face, tag, 0, nullptr, &length); if (error) - return NULL; + return nullptr; buffer = (FT_Byte *) malloc (length); if (!buffer) - return NULL; + return nullptr; error = FT_Load_Sfnt_Table (ft_face, tag, 0, buffer, &length); if (error) - return NULL; + return nullptr; return hb_blob_create ((const char *) buffer, length, HB_MEMORY_MODE_WRITABLE, @@ -581,7 +579,7 @@ hb_ft_face_create_cached (FT_Face ft_face) if (ft_face->generic.finalizer) ft_face->generic.finalizer (ft_face); - ft_face->generic.data = hb_ft_face_create (ft_face, NULL); + ft_face->generic.data = hb_ft_face_create (ft_face, nullptr); ft_face->generic.finalizer = (FT_Generic_Finalizer) hb_ft_face_finalize; } @@ -633,7 +631,7 @@ hb_ft_font_changed (hb_font_t *font) #endif #ifdef HAVE_FT_GET_VAR_BLEND_COORDINATES - FT_MM_Var *mm_var = NULL; + FT_MM_Var *mm_var = nullptr; if (!FT_Get_MM_Var (ft_face, &mm_var)) { FT_Fixed *ft_coords = (FT_Fixed *) calloc (mm_var->num_axis, sizeof (FT_Fixed)); @@ -694,9 +692,9 @@ retry: { /* Not found; allocate one. */ if (FT_Init_FreeType (&library)) - return NULL; + return nullptr; - if (!hb_atomic_ptr_cmpexch (&ft_library, NULL, library)) { + if (!hb_atomic_ptr_cmpexch (&ft_library, nullptr, library)) { FT_Done_FreeType (library); goto retry; } @@ -724,7 +722,7 @@ hb_ft_font_set_funcs (hb_font_t *font) if (unlikely (!blob_length)) DEBUG_MSG (FT, font, "Font face has empty blob"); - FT_Face ft_face = NULL; + FT_Face ft_face = nullptr; FT_Error err = FT_New_Memory_Face (get_ft_library (), (const FT_Byte *) blob_data, blob_length, @@ -751,7 +749,7 @@ hb_ft_font_set_funcs (hb_font_t *font) { FT_Matrix matrix = { font->x_scale < 0 ? -1 : +1, 0, 0, font->y_scale < 0 ? -1 : +1}; - FT_Set_Transform (ft_face, &matrix, NULL); + FT_Set_Transform (ft_face, &matrix, nullptr); } unsigned int num_coords; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-glib.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-glib.cc index 8b499558b1b..5b0a1eb3253 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-glib.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-glib.cc @@ -370,7 +370,7 @@ hb_glib_get_unicode_funcs (void) static const hb_unicode_funcs_t _hb_glib_unicode_funcs = { HB_OBJECT_HEADER_STATIC, - NULL, /* parent */ + nullptr, /* parent */ true, /* immutable */ { #define HB_UNICODE_FUNC_IMPLEMENT(name) hb_glib_unicode_##name, diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gobject-structs.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gobject-structs.cc index fef00245b79..a96c35804d5 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gobject-structs.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gobject-structs.cc @@ -58,7 +58,7 @@ hb_gobject_##name##_get_type (void) \ static hb_##name##_t *_hb_##name##_reference (const hb_##name##_t *l) \ { \ hb_##name##_t *c = (hb_##name##_t *) calloc (1, sizeof (hb_##name##_t)); \ - if (unlikely (!c)) return NULL; \ + if (unlikely (!c)) return nullptr; \ *c = *l; \ return c; \ } \ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-graphite2.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-graphite2.cc index bc247c60cbc..6f0598dd0b8 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-graphite2.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-graphite2.cc @@ -59,7 +59,7 @@ static const void *hb_graphite2_get_table (const void *data, unsigned int tag, s hb_graphite2_shaper_face_data_t *face_data = (hb_graphite2_shaper_face_data_t *) data; hb_graphite2_tablelist_t *tlist = face_data->tlist; - hb_blob_t *blob = NULL; + hb_blob_t *blob = nullptr; for (hb_graphite2_tablelist_t *p = tlist; p; p = p->next) if (p->tag == tag) { @@ -74,7 +74,7 @@ static const void *hb_graphite2_get_table (const void *data, unsigned int tag, s hb_graphite2_tablelist_t *p = (hb_graphite2_tablelist_t *) calloc (1, sizeof (hb_graphite2_tablelist_t)); if (unlikely (!p)) { hb_blob_destroy (blob); - return NULL; + return nullptr; } p->blob = blob; p->tag = tag; @@ -100,20 +100,20 @@ _hb_graphite2_shaper_face_data_create (hb_face_t *face) if (!hb_blob_get_length (silf_blob)) { hb_blob_destroy (silf_blob); - return NULL; + return nullptr; } hb_blob_destroy (silf_blob); hb_graphite2_shaper_face_data_t *data = (hb_graphite2_shaper_face_data_t *) calloc (1, sizeof (hb_graphite2_shaper_face_data_t)); if (unlikely (!data)) - return NULL; + return nullptr; data->face = face; data->grface = gr_make_face (data, &hb_graphite2_get_table, gr_face_preloadAll); if (unlikely (!data->grface)) { free (data); - return NULL; + return nullptr; } return data; @@ -143,7 +143,7 @@ _hb_graphite2_shaper_face_data_destroy (hb_graphite2_shaper_face_data_t *data) gr_face * hb_graphite2_face_get_gr_face (hb_face_t *face) { - if (unlikely (!hb_graphite2_shaper_face_data_ensure (face))) return NULL; + if (unlikely (!hb_graphite2_shaper_face_data_ensure (face))) return nullptr; return HB_SHAPER_DATA_GET (face)->grface; } @@ -171,7 +171,7 @@ _hb_graphite2_shaper_font_data_destroy (hb_graphite2_shaper_font_data_t *data HB gr_font * hb_graphite2_font_get_gr_font (hb_font_t *font) { - return NULL; + return nullptr; } @@ -221,7 +221,7 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan, gr_face *grface = HB_SHAPER_DATA_GET (face)->grface; const char *lang = hb_language_to_string (hb_buffer_get_language (buffer)); - const char *lang_end = lang ? strchr (lang, '-') : NULL; + const char *lang_end = lang ? strchr (lang, '-') : nullptr; int lang_len = lang_end ? lang_end - lang : -1; gr_feature_val *feats = gr_face_featureval_for_lang (grface, lang ? hb_tag_from_string (lang, lang_len) : 0); @@ -232,7 +232,7 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan, gr_fref_set_feature_value (fref, features[i].value, feats); } - gr_segment *seg = NULL; + gr_segment *seg = nullptr; const gr_slot *is; unsigned int ci = 0, ic = 0; float curradvx = 0., curradvy = 0.; @@ -250,7 +250,7 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan, hb_tag_t script_tag[2]; hb_ot_tags_from_script (hb_buffer_get_script (buffer), &script_tag[0], &script_tag[1]); - seg = gr_make_seg (NULL, grface, + seg = gr_make_seg (nullptr, grface, script_tag[1] == HB_TAG_NONE ? script_tag[0] : script_tag[1], feats, gr_utf32, chars, buffer->len, @@ -368,7 +368,7 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan, /* Positioning. */ unsigned int currclus = (unsigned int) -1; const hb_glyph_info_t *info = buffer->info; - hb_glyph_position_t *pPos = hb_buffer_get_glyph_positions (buffer, NULL); + hb_glyph_position_t *pPos = hb_buffer_get_glyph_positions (buffer, nullptr); if (!HB_DIRECTION_IS_BACKWARD(buffer->props.direction)) { curradvx = 0; @@ -383,7 +383,7 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan, } else pPos->x_advance = 0.; - pPos->y_advance = gr_slot_advance_Y (is, grface, NULL) * yscale; + pPos->y_advance = gr_slot_advance_Y (is, grface, nullptr) * yscale; curradvy += pPos->y_advance; } } @@ -400,7 +400,7 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan, } else pPos->x_advance = 0.; - pPos->y_advance = gr_slot_advance_Y (is, grface, NULL) * yscale; + pPos->y_advance = gr_slot_advance_Y (is, grface, nullptr) * yscale; curradvy -= pPos->y_advance; pPos->x_offset = (gr_slot_origin_X (is) - info->var1.i32) * xscale - curradvx + pPos->x_advance; pPos->y_offset = gr_slot_origin_Y (is) * yscale - curradvy; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-icu.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-icu.cc index ee54721fd4c..a00803c98d0 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-icu.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-icu.cc @@ -34,7 +34,7 @@ #include "hb-unicode-private.hh" #include -#include +#include #include #include #include @@ -200,7 +200,7 @@ hb_icu_unicode_compose (hb_unicode_funcs_t *ufuncs HB_UNUSED, if (err) return false; icu_err = U_ZERO_ERROR; - len = unorm_normalize (utf16, len, UNORM_NFC, 0, normalized, ARRAY_LENGTH (normalized), &icu_err); + len = unorm2_normalize (unorm2_getNFCInstance (&icu_err), utf16, len, normalized, ARRAY_LENGTH (normalized), &icu_err); if (U_FAILURE (icu_err)) return false; if (u_countChar32 (normalized, len) == 1) { @@ -261,7 +261,7 @@ hb_icu_unicode_decompose (hb_unicode_funcs_t *ufuncs HB_UNUSED, if (err) return false; icu_err = U_ZERO_ERROR; - len = unorm_normalize (utf16, len, UNORM_NFD, 0, normalized, ARRAY_LENGTH (normalized), &icu_err); + len = unorm2_normalize (unorm2_getNFDInstance (&icu_err), utf16, len, normalized, ARRAY_LENGTH (normalized), &icu_err); if (U_FAILURE (icu_err)) return false; @@ -281,7 +281,7 @@ hb_icu_unicode_decompose (hb_unicode_funcs_t *ufuncs HB_UNUSED, * the second part :-(. */ UChar recomposed[20]; icu_err = U_ZERO_ERROR; - unorm_normalize (normalized, len, UNORM_NFC, 0, recomposed, ARRAY_LENGTH (recomposed), &icu_err); + unorm2_normalize (unorm2_getNFCInstance (&icu_err), normalized, len, recomposed, ARRAY_LENGTH (recomposed), &icu_err); if (U_FAILURE (icu_err)) return false; hb_codepoint_t c; @@ -297,7 +297,7 @@ hb_icu_unicode_decompose (hb_unicode_funcs_t *ufuncs HB_UNUSED, U16_PREV_UNSAFE (normalized, len, *b); /* Changes len in-place. */ UChar recomposed[18 * 2]; icu_err = U_ZERO_ERROR; - len = unorm_normalize (normalized, len, UNORM_NFC, 0, recomposed, ARRAY_LENGTH (recomposed), &icu_err); + len = unorm2_normalize (unorm2_getNFCInstance (&icu_err), normalized, len, recomposed, ARRAY_LENGTH (recomposed), &icu_err); if (U_FAILURE (icu_err)) return false; /* We expect that recomposed has exactly one character now. */ @@ -331,7 +331,7 @@ hb_icu_unicode_decompose_compatibility (hb_unicode_funcs_t *ufuncs HB_UNUSED, /* Normalise the codepoint using NFKD mode. */ icu_err = U_ZERO_ERROR; - len = unorm_normalize (utf16, len, UNORM_NFKD, 0, normalized, ARRAY_LENGTH (normalized), &icu_err); + len = unorm2_normalize (unorm2_getNFKDInstance (&icu_err), utf16, len, normalized, ARRAY_LENGTH (normalized), &icu_err); if (icu_err) return 0; @@ -351,7 +351,7 @@ hb_icu_get_unicode_funcs (void) static const hb_unicode_funcs_t _hb_icu_unicode_funcs = { HB_OBJECT_HEADER_STATIC, - NULL, /* parent */ + nullptr, /* parent */ true, /* immutable */ { #define HB_UNICODE_FUNC_IMPLEMENT(name) hb_icu_unicode_##name, @@ -364,7 +364,7 @@ hb_icu_get_unicode_funcs (void) if (!hb_atomic_ptr_get (&normalizer)) { UErrorCode icu_err = U_ZERO_ERROR; /* We ignore failure in getNFCInstace(). */ - (void) hb_atomic_ptr_cmpexch (&normalizer, NULL, unorm2_getNFCInstance (&icu_err)); + (void) hb_atomic_ptr_cmpexch (&normalizer, nullptr, unorm2_getNFCInstance (&icu_err)); } #endif return const_cast (&_hb_icu_unicode_funcs); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-mutex-private.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-mutex-private.hh index ed2703571c1..49ed10e08a6 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-mutex-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-mutex-private.hh @@ -68,7 +68,7 @@ typedef CRITICAL_SECTION hb_mutex_impl_t; #include typedef pthread_mutex_t hb_mutex_impl_t; #define HB_MUTEX_IMPL_INIT PTHREAD_MUTEX_INITIALIZER -#define hb_mutex_impl_init(M) pthread_mutex_init (M, NULL) +#define hb_mutex_impl_init(M) pthread_mutex_init (M, nullptr) #define hb_mutex_impl_lock(M) pthread_mutex_lock (M) #define hb_mutex_impl_unlock(M) pthread_mutex_unlock (M) #define hb_mutex_impl_finish(M) pthread_mutex_destroy (M) diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-object-private.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-object-private.hh index 6b73ff92d09..d678ae3692e 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-object-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-object-private.hh @@ -193,7 +193,7 @@ static inline void *hb_object_get_user_data (Type *obj, hb_user_data_key_t *key) { if (unlikely (!obj || hb_object_is_inert (obj))) - return NULL; + return nullptr; assert (hb_object_is_valid (obj)); return obj->header.user_data.get (key); } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type-private.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type-private.hh index d90d68c592c..f25341a8aa9 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type-private.hh @@ -85,7 +85,7 @@ static inline Type& StructAfter(TObject &X) #define _DEFINE_INSTANCE_ASSERTION1(_line, _assertion) \ inline void _instance_assertion_on_line_##_line (void) const \ { \ - ASSERT_STATIC (_assertion); \ + static_assert ((_assertion), ""); \ ASSERT_INSTANCE_POD (*this); /* Make sure it's POD. */ \ } # define _DEFINE_INSTANCE_ASSERTION0(_line, _assertion) _DEFINE_INSTANCE_ASSERTION1 (_line, _assertion) @@ -136,7 +136,7 @@ static const void *_NullPool[(256+8) / sizeof (void *)]; /* Generic nul-content Null objects. */ template static inline const Type& Null (void) { - ASSERT_STATIC (sizeof (Type) <= sizeof (_NullPool)); + static_assert ((sizeof (Type) <= sizeof (_NullPool)), ""); return *CastP (_NullPool); } @@ -147,7 +147,7 @@ template <> \ /*static*/ inline const Type& Null (void) { \ return *CastP (_Null##Type); \ } /* The following line really exists such that we end in a place needing semicolon */ \ -ASSERT_STATIC (Type::min_size + 1 <= sizeof (_Null##Type)) +static_assert (Type::min_size + 1 <= sizeof (_Null##Type), "Null pool too small. Enlarge.") /* Accessor macro. */ #define Null(Type) Null() @@ -192,9 +192,9 @@ struct hb_sanitize_context_t : { inline hb_sanitize_context_t (void) : debug_depth (0), - start (NULL), end (NULL), + start (nullptr), end (nullptr), writable (false), edit_count (0), - blob (NULL) {} + blob (nullptr) {} inline const char *get_name (void) { return "SANITIZE"; } template @@ -214,7 +214,7 @@ struct hb_sanitize_context_t : inline void start_processing (void) { - this->start = hb_blob_get_data (this->blob, NULL); + this->start = hb_blob_get_data (this->blob, nullptr); this->end = this->start + hb_blob_get_length (this->blob); assert (this->start <= this->end); /* Must not overflow. */ this->edit_count = 0; @@ -233,8 +233,8 @@ struct hb_sanitize_context_t : this->start, this->end, this->edit_count); hb_blob_destroy (this->blob); - this->blob = NULL; - this->start = this->end = NULL; + this->blob = nullptr; + this->start = this->end = nullptr; } inline bool check_range (const void *base, unsigned int len) const @@ -349,7 +349,7 @@ struct Sanitizer } else { unsigned int edit_count = c->edit_count; if (edit_count && !c->writable) { - c->start = hb_blob_get_data_writable (blob, NULL); + c->start = hb_blob_get_data_writable (blob, nullptr); c->end = c->start + hb_blob_get_length (blob); if (c->start) { @@ -374,7 +374,7 @@ struct Sanitizer static const Type* lock_instance (hb_blob_t *blob) { hb_blob_make_immutable (blob); - const char *base = hb_blob_get_data (blob, NULL); + const char *base = hb_blob_get_data (blob, nullptr); return unlikely (!base) ? &Null(Type) : CastP (base); } }; @@ -445,7 +445,7 @@ struct hb_serialize_context_t { if (unlikely (this->ran_out_of_room || this->end - this->head < ptrdiff_t (size))) { this->ran_out_of_room = true; - return NULL; + return nullptr; } memset (this->head, 0, size); char *ret = this->head; @@ -471,7 +471,7 @@ struct hb_serialize_context_t { unsigned int size = obj.get_size (); Type *ret = this->allocate_size (size); - if (unlikely (!ret)) return NULL; + if (unlikely (!ret)) return nullptr; memcpy (ret, obj, size); return ret; } @@ -481,7 +481,7 @@ struct hb_serialize_context_t { unsigned int size = obj.min_size; assert (this->start <= (char *) &obj && (char *) &obj <= this->head && (char *) &obj + size >= this->head); - if (unlikely (!this->allocate_size (((char *) &obj) + size - this->head))) return NULL; + if (unlikely (!this->allocate_size (((char *) &obj) + size - this->head))) return nullptr; return reinterpret_cast (&obj); } @@ -490,7 +490,7 @@ struct hb_serialize_context_t { unsigned int size = obj.get_size (); assert (this->start < (char *) &obj && (char *) &obj <= this->head && (char *) &obj + size >= this->head); - if (unlikely (!this->allocate_size (((char *) &obj) + size - this->head))) return NULL; + if (unlikely (!this->allocate_size (((char *) &obj) + size - this->head))) return nullptr; return reinterpret_cast (&obj); } @@ -1047,11 +1047,12 @@ struct SortedArrayOf : ArrayOf inline int bsearch (const SearchType &x) const { /* Hand-coded bsearch here since this is in the hot inner loop. */ + const Type *array = this->array; int min = 0, max = (int) this->len - 1; while (min <= max) { int mid = (min + max) / 2; - int c = this->array[mid].cmp (x); + int c = array[mid].cmp (x); if (c < 0) max = mid - 1; else if (c > 0) @@ -1073,7 +1074,7 @@ struct hb_lazy_loader_t inline void init (hb_face_t *face_) { face = face_; - instance = NULL; + instance = nullptr; } inline void fini (void) @@ -1096,7 +1097,7 @@ struct hb_lazy_loader_t p = const_cast (&OT::Null(T)); else p->init (face); - if (unlikely (!hb_atomic_ptr_cmpexch (const_cast(&instance), NULL, p))) + if (unlikely (!hb_atomic_ptr_cmpexch (const_cast(&instance), nullptr, p))) { if (p != &OT::Null(T)) p->fini (); @@ -1123,8 +1124,8 @@ struct hb_lazy_table_loader_t inline void init (hb_face_t *face_) { face = face_; - instance = NULL; - blob = NULL; + instance = nullptr; + blob = nullptr; } inline void fini (void) @@ -1140,7 +1141,7 @@ struct hb_lazy_table_loader_t { hb_blob_t *blob_ = OT::Sanitizer::sanitize (face->reference_table (T::tableTag)); p = const_cast(OT::Sanitizer::lock_instance (blob_)); - if (!hb_atomic_ptr_cmpexch (const_cast(&instance), NULL, p)) + if (!hb_atomic_ptr_cmpexch (const_cast(&instance), nullptr, p)) { hb_blob_destroy (blob_); goto retry; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cbdt-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cbdt-table.hh index 0a7fbf5b72a..3c6855b0549 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cbdt-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cbdt-table.hh @@ -245,7 +245,7 @@ struct IndexSubtableArray return &indexSubtablesZ[i]; } } - return NULL; + return nullptr; } protected: @@ -344,7 +344,7 @@ struct CBLC } } - return NULL; + return nullptr; } protected: diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cmap-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cmap-table.hh index 3a53a1cb561..93f38c56ab7 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cmap-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cmap-table.hh @@ -508,7 +508,7 @@ struct cmap * unsorted subtable list. */ int result = encodingRecord./*bsearch*/lsearch (key); if (result == -1 || !encodingRecord[result].subtable) - return NULL; + return nullptr; return &(this+encodingRecord[result].subtable); } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-font.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-font.cc index a56f4c07f70..06d1b80650a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-font.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-font.cc @@ -235,8 +235,8 @@ struct hb_ot_face_cbdt_accelerator_t cbdt_len = hb_blob_get_length (cbdt_blob); if (hb_blob_get_length (cblc_blob) == 0) { - cblc = NULL; - cbdt = NULL; + cblc = nullptr; + cbdt = nullptr; return; /* Not a bitmap font. */ } cblc = OT::Sanitizer::lock_instance (cblc_blob); @@ -349,8 +349,8 @@ struct hb_ot_face_cmap_accelerator_t { this->blob = OT::Sanitizer::sanitize (face->reference_table (HB_OT_TAG_cmap)); const OT::cmap *cmap = OT::Sanitizer::lock_instance (this->blob); - const OT::CmapSubtable *subtable = NULL; - const OT::CmapSubtableFormat14 *subtable_uvs = NULL; + const OT::CmapSubtable *subtable = nullptr; + const OT::CmapSubtableFormat14 *subtable_uvs = nullptr; bool symbol = false; /* 32-bit subtables. */ @@ -445,7 +445,7 @@ _hb_ot_font_create (hb_face_t *face) hb_ot_font_t *ot_font = (hb_ot_font_t *) calloc (1, sizeof (hb_ot_font_t)); if (unlikely (!ot_font)) - return NULL; + return nullptr; ot_font->cmap.init (face); ot_font->h_metrics.init (face, HB_OT_TAG_hhea, HB_OT_TAG_hmtx, HB_OT_TAG_HVAR, HB_OT_TAG_os2); @@ -563,7 +563,7 @@ hb_ot_get_font_v_extents (hb_font_t *font HB_UNUSED, return ot_font->v_metrics.has_font_extents; } -static hb_font_funcs_t *static_ot_funcs = NULL; +static hb_font_funcs_t *static_ot_funcs = nullptr; #ifdef HB_USE_ATEXIT static @@ -583,24 +583,24 @@ retry: { funcs = hb_font_funcs_create (); - hb_font_funcs_set_font_h_extents_func (funcs, hb_ot_get_font_h_extents, NULL, NULL); - hb_font_funcs_set_font_v_extents_func (funcs, hb_ot_get_font_v_extents, NULL, NULL); - hb_font_funcs_set_nominal_glyph_func (funcs, hb_ot_get_nominal_glyph, NULL, NULL); - hb_font_funcs_set_variation_glyph_func (funcs, hb_ot_get_variation_glyph, NULL, NULL); - hb_font_funcs_set_glyph_h_advance_func (funcs, hb_ot_get_glyph_h_advance, NULL, NULL); - hb_font_funcs_set_glyph_v_advance_func (funcs, hb_ot_get_glyph_v_advance, NULL, NULL); - //hb_font_funcs_set_glyph_h_origin_func (funcs, hb_ot_get_glyph_h_origin, NULL, NULL); - //hb_font_funcs_set_glyph_v_origin_func (funcs, hb_ot_get_glyph_v_origin, NULL, NULL); - //hb_font_funcs_set_glyph_h_kerning_func (funcs, hb_ot_get_glyph_h_kerning, NULL, NULL); TODO - //hb_font_funcs_set_glyph_v_kerning_func (funcs, hb_ot_get_glyph_v_kerning, NULL, NULL); - hb_font_funcs_set_glyph_extents_func (funcs, hb_ot_get_glyph_extents, NULL, NULL); - //hb_font_funcs_set_glyph_contour_point_func (funcs, hb_ot_get_glyph_contour_point, NULL, NULL); TODO - //hb_font_funcs_set_glyph_name_func (funcs, hb_ot_get_glyph_name, NULL, NULL); TODO - //hb_font_funcs_set_glyph_from_name_func (funcs, hb_ot_get_glyph_from_name, NULL, NULL); TODO + hb_font_funcs_set_font_h_extents_func (funcs, hb_ot_get_font_h_extents, nullptr, nullptr); + hb_font_funcs_set_font_v_extents_func (funcs, hb_ot_get_font_v_extents, nullptr, nullptr); + hb_font_funcs_set_nominal_glyph_func (funcs, hb_ot_get_nominal_glyph, nullptr, nullptr); + hb_font_funcs_set_variation_glyph_func (funcs, hb_ot_get_variation_glyph, nullptr, nullptr); + hb_font_funcs_set_glyph_h_advance_func (funcs, hb_ot_get_glyph_h_advance, nullptr, nullptr); + hb_font_funcs_set_glyph_v_advance_func (funcs, hb_ot_get_glyph_v_advance, nullptr, nullptr); + //hb_font_funcs_set_glyph_h_origin_func (funcs, hb_ot_get_glyph_h_origin, nullptr, nullptr); + //hb_font_funcs_set_glyph_v_origin_func (funcs, hb_ot_get_glyph_v_origin, nullptr, nullptr); + //hb_font_funcs_set_glyph_h_kerning_func (funcs, hb_ot_get_glyph_h_kerning, nullptr, nullptr); TODO + //hb_font_funcs_set_glyph_v_kerning_func (funcs, hb_ot_get_glyph_v_kerning, nullptr, nullptr); + hb_font_funcs_set_glyph_extents_func (funcs, hb_ot_get_glyph_extents, nullptr, nullptr); + //hb_font_funcs_set_glyph_contour_point_func (funcs, hb_ot_get_glyph_contour_point, nullptr, nullptr); TODO + //hb_font_funcs_set_glyph_name_func (funcs, hb_ot_get_glyph_name, nullptr, nullptr); TODO + //hb_font_funcs_set_glyph_from_name_func (funcs, hb_ot_get_glyph_from_name, nullptr, nullptr); TODO hb_font_funcs_make_immutable (funcs); - if (!hb_atomic_ptr_cmpexch (&static_ot_funcs, NULL, funcs)) { + if (!hb_atomic_ptr_cmpexch (&static_ot_funcs, nullptr, funcs)) { hb_font_funcs_destroy (funcs); goto retry; } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common-private.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common-private.hh index 578d850c184..ed18bd88f8c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common-private.hh @@ -214,7 +214,7 @@ struct LangSys } inline bool sanitize (hb_sanitize_context_t *c, - const Record::sanitize_closure_t * = NULL) const + const Record::sanitize_closure_t * = nullptr) const { TRACE_SANITIZE (this); return_trace (c->check_struct (this) && featureIndex.sanitize (c)); @@ -254,7 +254,7 @@ struct Script inline const LangSys& get_default_lang_sys (void) const { return this+defaultLangSys; } inline bool sanitize (hb_sanitize_context_t *c, - const Record