From f71aeb3fe9f385a634c46188515206f91c087b82 Mon Sep 17 00:00:00 2001 From: Akira Kakuto Date: Mon, 18 May 2020 10:44:36 +0000 Subject: harfbuzz 2.6.6 git-svn-id: svn://tug.org/texlive/trunk@55197 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/libs/README | 4 +- Build/source/libs/harfbuzz/ChangeLog | 5 + Build/source/libs/harfbuzz/Makefile.am | 3 + Build/source/libs/harfbuzz/Makefile.in | 10 + Build/source/libs/harfbuzz/TLpatches/ChangeLog | 5 + Build/source/libs/harfbuzz/TLpatches/TL-Changes | 6 +- Build/source/libs/harfbuzz/configure | 24 +- Build/source/libs/harfbuzz/harfbuzz-src/BUILD.md | 7 +- .../libs/harfbuzz/harfbuzz-src/CMakeLists.txt | 108 +- Build/source/libs/harfbuzz/harfbuzz-src/CONFIG.md | 2 +- Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog | 30304 +++++++++++++------ .../source/libs/harfbuzz/harfbuzz-src/Makefile.am | 11 + Build/source/libs/harfbuzz/harfbuzz-src/NEWS | 20 + Build/source/libs/harfbuzz/harfbuzz-src/README | 4 +- Build/source/libs/harfbuzz/harfbuzz-src/README.md | 4 +- .../source/libs/harfbuzz/harfbuzz-src/RELEASING.md | 20 +- Build/source/libs/harfbuzz/harfbuzz-src/TESTING.md | 5 +- .../source/libs/harfbuzz/harfbuzz-src/config.h.in | 9 - .../source/libs/harfbuzz/harfbuzz-src/configure.ac | 8 +- .../source/libs/harfbuzz/harfbuzz-src/meson.build | 345 + .../libs/harfbuzz/harfbuzz-src/meson_options.txt | 36 + .../source/libs/harfbuzz/harfbuzz-src/mingw-ldd.py | 3 +- .../libs/harfbuzz/harfbuzz-src/src/Makefile.am | 76 +- .../harfbuzz/harfbuzz-src/src/Makefile.sources | 4 + .../harfbuzz/harfbuzz-src/src/check-libstdc++.sh | 3 +- .../harfbuzz-src/src/check-static-inits.sh | 13 +- .../harfbuzz/harfbuzz-src/src/check-symbols.sh | 11 +- .../harfbuzz/harfbuzz-src/src/fix_get_types.py | 15 + .../harfbuzz/harfbuzz-src/src/gen-arabic-table.py | 12 +- .../libs/harfbuzz/harfbuzz-src/src/gen-def.py | 33 +- .../harfbuzz/harfbuzz-src/src/gen-emoji-table.py | 8 +- .../harfbuzz/harfbuzz-src/src/gen-indic-table.py | 11 +- .../harfbuzz-src/src/gen-os2-unicode-ranges.py | 11 +- .../harfbuzz/harfbuzz-src/src/gen-tag-table.py | 41 +- .../harfbuzz/harfbuzz-src/src/gen-ucd-table.py | 9 +- .../harfbuzz/harfbuzz-src/src/gen-use-table.py | 19 +- .../harfbuzz-src/src/gen-vowel-constraints.py | 46 +- .../libs/harfbuzz/harfbuzz-src/src/harfbuzz.cc | 1 + .../harfbuzz/harfbuzz-src/src/hb-aat-fdsc-table.hh | 8 +- .../harfbuzz-src/src/hb-aat-layout-ankr-table.hh | 4 +- .../harfbuzz-src/src/hb-aat-layout-common.hh | 6 +- .../harfbuzz-src/src/hb-aat-layout-feat-table.hh | 10 +- .../harfbuzz-src/src/hb-aat-layout-just-table.hh | 44 +- .../harfbuzz-src/src/hb-aat-layout-kerx-table.hh | 50 +- .../harfbuzz-src/src/hb-aat-layout-morx-table.hh | 6 +- .../harfbuzz-src/src/hb-aat-layout-opbd-table.hh | 4 +- .../harfbuzz-src/src/hb-aat-layout-trak-table.hh | 8 +- .../harfbuzz/harfbuzz-src/src/hb-aat-layout.cc | 8 +- .../harfbuzz/harfbuzz-src/src/hb-aat-layout.hh | 10 +- .../libs/harfbuzz/harfbuzz-src/src/hb-aat-map.cc | 33 +- .../libs/harfbuzz/harfbuzz-src/src/hb-aat-map.hh | 13 +- .../libs/harfbuzz/harfbuzz-src/src/hb-algs.hh | 96 +- .../libs/harfbuzz/harfbuzz-src/src/hb-array.hh | 61 +- .../libs/harfbuzz/harfbuzz-src/src/hb-bimap.hh | 4 +- .../libs/harfbuzz/harfbuzz-src/src/hb-blob.cc | 76 +- .../libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc | 51 +- .../libs/harfbuzz/harfbuzz-src/src/hb-buffer.h | 2 +- .../libs/harfbuzz/harfbuzz-src/src/hb-buffer.hh | 6 +- .../harfbuzz-src/src/hb-cff-interp-common.hh | 35 +- .../harfbuzz-src/src/hb-cff-interp-cs-common.hh | 47 +- .../harfbuzz-src/src/hb-cff-interp-dict-common.hh | 15 - .../harfbuzz/harfbuzz-src/src/hb-cff2-interp-cs.hh | 7 +- .../libs/harfbuzz/harfbuzz-src/src/hb-common.cc | 57 +- .../libs/harfbuzz/harfbuzz-src/src/hb-config.hh | 1 + .../libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc | 69 +- .../libs/harfbuzz/harfbuzz-src/src/hb-coretext.h | 32 + .../libs/harfbuzz/harfbuzz-src/src/hb-debug.hh | 3 +- .../harfbuzz/harfbuzz-src/src/hb-directwrite.cc | 2 +- .../libs/harfbuzz/harfbuzz-src/src/hb-draw.cc | 261 + .../libs/harfbuzz/harfbuzz-src/src/hb-draw.h | 98 + .../libs/harfbuzz/harfbuzz-src/src/hb-draw.hh | 139 + .../libs/harfbuzz/harfbuzz-src/src/hb-face.cc | 4 +- .../libs/harfbuzz/harfbuzz-src/src/hb-face.hh | 2 +- .../libs/harfbuzz/harfbuzz-src/src/hb-font.cc | 144 +- .../libs/harfbuzz/harfbuzz-src/src/hb-font.h | 13 + .../libs/harfbuzz/harfbuzz-src/src/hb-font.hh | 3 +- .../source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc | 202 +- .../source/libs/harfbuzz/harfbuzz-src/src/hb-ft.h | 6 + .../libs/harfbuzz/harfbuzz-src/src/hb-glib.cc | 44 +- .../harfbuzz-src/src/hb-gobject-enums.cc.tmpl | 2 +- .../harfbuzz-src/src/hb-gobject-enums.h.tmpl | 2 +- .../harfbuzz-src/src/hb-gobject-structs.cc | 13 +- .../harfbuzz/harfbuzz-src/src/hb-gobject-structs.h | 2 +- .../libs/harfbuzz/harfbuzz-src/src/hb-gobject.h | 2 +- .../libs/harfbuzz/harfbuzz-src/src/hb-graphite2.cc | 18 +- .../libs/harfbuzz/harfbuzz-src/src/hb-graphite2.h | 10 +- .../libs/harfbuzz/harfbuzz-src/src/hb-icu.cc | 36 +- .../libs/harfbuzz/harfbuzz-src/src/hb-kern.hh | 3 +- .../libs/harfbuzz/harfbuzz-src/src/hb-machinery.hh | 22 +- .../libs/harfbuzz/harfbuzz-src/src/hb-map.cc | 2 +- .../libs/harfbuzz/harfbuzz-src/src/hb-map.hh | 6 +- .../libs/harfbuzz/harfbuzz-src/src/hb-meta.hh | 11 + .../libs/harfbuzz/harfbuzz-src/src/hb-null.hh | 12 +- .../harfbuzz/harfbuzz-src/src/hb-number-parser.hh | 43 +- .../harfbuzz/harfbuzz-src/src/hb-number-parser.rl | 21 +- .../libs/harfbuzz/harfbuzz-src/src/hb-number.cc | 95 +- .../libs/harfbuzz/harfbuzz-src/src/hb-open-file.hh | 6 +- .../libs/harfbuzz/harfbuzz-src/src/hb-open-type.hh | 57 +- .../harfbuzz/harfbuzz-src/src/hb-ot-cff-common.hh | 293 +- .../harfbuzz-src/src/hb-ot-cff1-std-str.hh | 425 + .../harfbuzz/harfbuzz-src/src/hb-ot-cff1-table.cc | 224 + .../harfbuzz/harfbuzz-src/src/hb-ot-cff1-table.hh | 420 +- .../harfbuzz/harfbuzz-src/src/hb-ot-cff2-table.cc | 69 + .../harfbuzz/harfbuzz-src/src/hb-ot-cff2-table.hh | 90 +- .../harfbuzz/harfbuzz-src/src/hb-ot-cmap-table.hh | 394 +- .../harfbuzz-src/src/hb-ot-color-cbdt-table.hh | 636 +- .../harfbuzz-src/src/hb-ot-color-colr-table.hh | 142 +- .../harfbuzz-src/src/hb-ot-color-cpal-table.hh | 2 +- .../harfbuzz-src/src/hb-ot-color-sbix-table.hh | 127 +- .../harfbuzz-src/src/hb-ot-color-svg-table.hh | 2 +- .../libs/harfbuzz/harfbuzz-src/src/hb-ot-font.cc | 25 +- .../harfbuzz/harfbuzz-src/src/hb-ot-gasp-table.hh | 4 +- .../harfbuzz/harfbuzz-src/src/hb-ot-glyf-table.hh | 676 +- .../harfbuzz/harfbuzz-src/src/hb-ot-hdmx-table.hh | 21 +- .../harfbuzz/harfbuzz-src/src/hb-ot-head-table.hh | 12 + .../harfbuzz/harfbuzz-src/src/hb-ot-hhea-table.hh | 61 +- .../harfbuzz/harfbuzz-src/src/hb-ot-hmtx-table.hh | 52 +- .../harfbuzz/harfbuzz-src/src/hb-ot-kern-table.hh | 37 +- .../harfbuzz-src/src/hb-ot-layout-common.hh | 828 +- .../harfbuzz-src/src/hb-ot-layout-gdef-table.hh | 130 +- .../harfbuzz-src/src/hb-ot-layout-gpos-table.hh | 535 +- .../harfbuzz-src/src/hb-ot-layout-gsub-table.hh | 122 +- .../harfbuzz-src/src/hb-ot-layout-gsubgpos.hh | 454 +- .../harfbuzz-src/src/hb-ot-layout-jstf-table.hh | 2 +- .../libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc | 127 +- .../libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.h | 24 +- .../libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.hh | 8 +- .../libs/harfbuzz/harfbuzz-src/src/hb-ot-map.hh | 4 +- .../harfbuzz/harfbuzz-src/src/hb-ot-math-table.hh | 131 +- .../harfbuzz/harfbuzz-src/src/hb-ot-maxp-table.hh | 7 +- .../harfbuzz/harfbuzz-src/src/hb-ot-meta-table.hh | 7 +- .../harfbuzz-src/src/hb-ot-name-language-static.hh | 15 +- .../harfbuzz/harfbuzz-src/src/hb-ot-name-table.hh | 87 +- .../harfbuzz/harfbuzz-src/src/hb-ot-os2-table.hh | 21 +- .../harfbuzz-src/src/hb-ot-os2-unicode-ranges.hh | 24 +- .../harfbuzz/harfbuzz-src/src/hb-ot-post-table.hh | 15 +- .../src/hb-ot-shape-complex-arabic-fallback.hh | 4 +- .../harfbuzz-src/src/hb-ot-shape-complex-arabic.cc | 10 +- .../src/hb-ot-shape-complex-default.cc | 20 + .../src/hb-ot-shape-complex-indic-machine.rl | 2 +- .../harfbuzz-src/src/hb-ot-shape-complex-indic.cc | 12 +- .../src/hb-ot-shape-complex-myanmar-machine.rl | 2 +- .../src/hb-ot-shape-complex-vowel-constraints.cc | 27 +- .../harfbuzz-src/src/hb-ot-shape-complex.hh | 5 +- .../harfbuzz-src/src/hb-ot-shape-fallback.cc | 6 +- .../harfbuzz-src/src/hb-ot-shape-normalize.cc | 6 +- .../libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.cc | 135 +- .../libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.hh | 7 +- .../harfbuzz/harfbuzz-src/src/hb-ot-stat-table.hh | 14 +- .../harfbuzz-src/src/hb-ot-var-avar-table.hh | 9 +- .../harfbuzz-src/src/hb-ot-var-fvar-table.hh | 34 +- .../harfbuzz-src/src/hb-ot-var-gvar-table.hh | 363 +- .../harfbuzz-src/src/hb-ot-var-hvar-table.hh | 329 +- .../harfbuzz-src/src/hb-ot-var-mvar-table.hh | 4 +- .../harfbuzz/harfbuzz-src/src/hb-ot-vorg-table.hh | 9 +- .../libs/harfbuzz/harfbuzz-src/src/hb-pool.hh | 4 +- .../libs/harfbuzz/harfbuzz-src/src/hb-sanitize.hh | 21 +- .../libs/harfbuzz/harfbuzz-src/src/hb-serialize.hh | 135 +- .../libs/harfbuzz/harfbuzz-src/src/hb-set.cc | 62 +- .../libs/harfbuzz/harfbuzz-src/src/hb-set.hh | 146 +- .../harfbuzz/harfbuzz-src/src/hb-shape-plan.cc | 2 +- .../libs/harfbuzz/harfbuzz-src/src/hb-shaper.hh | 2 +- .../libs/harfbuzz/harfbuzz-src/src/hb-static.cc | 36 + .../harfbuzz/harfbuzz-src/src/hb-string-array.hh | 4 + .../harfbuzz-src/src/hb-subset-cff-common.cc | 8 +- .../harfbuzz-src/src/hb-subset-cff-common.hh | 147 +- .../harfbuzz/harfbuzz-src/src/hb-subset-cff1.cc | 617 +- .../harfbuzz/harfbuzz-src/src/hb-subset-cff1.hh | 3 +- .../harfbuzz/harfbuzz-src/src/hb-subset-cff2.cc | 380 +- .../harfbuzz/harfbuzz-src/src/hb-subset-cff2.hh | 3 +- .../harfbuzz/harfbuzz-src/src/hb-subset-input.cc | 25 +- .../harfbuzz/harfbuzz-src/src/hb-subset-input.hh | 2 + .../harfbuzz/harfbuzz-src/src/hb-subset-plan.cc | 99 +- .../harfbuzz/harfbuzz-src/src/hb-subset-plan.hh | 12 + .../libs/harfbuzz/harfbuzz-src/src/hb-subset.cc | 263 +- .../libs/harfbuzz/harfbuzz-src/src/hb-subset.h | 9 + .../libs/harfbuzz/harfbuzz-src/src/hb-subset.hh | 5 +- .../libs/harfbuzz/harfbuzz-src/src/hb-ucd.cc | 18 +- .../harfbuzz-src/src/hb-unicode-emoji-table.hh | 4 +- .../libs/harfbuzz/harfbuzz-src/src/hb-unicode.cc | 2 +- .../libs/harfbuzz/harfbuzz-src/src/hb-unicode.hh | 6 +- .../libs/harfbuzz/harfbuzz-src/src/hb-uniscribe.cc | 24 +- .../libs/harfbuzz/harfbuzz-src/src/hb-vector.hh | 6 +- Build/source/libs/harfbuzz/harfbuzz-src/src/hb.h | 1 + Build/source/libs/harfbuzz/harfbuzz-src/src/hb.hh | 13 + .../source/libs/harfbuzz/harfbuzz-src/src/main.cc | 408 +- .../libs/harfbuzz/harfbuzz-src/src/meson.build | 669 + .../libs/harfbuzz/harfbuzz-src/src/test-array.cc | 76 + .../harfbuzz-src/src/test-buffer-serialize.cc | 2 +- .../libs/harfbuzz/harfbuzz-src/src/test-iter.cc | 2 +- .../libs/harfbuzz/harfbuzz-src/src/test-meta.cc | 5 + .../libs/harfbuzz/harfbuzz-src/src/test-number.cc | 29 - .../harfbuzz/harfbuzz-src/src/test-ot-color.cc | 348 - .../harfbuzz/harfbuzz-src/src/test-ot-glyphname.cc | 91 + Build/source/libs/harfbuzz/include/Makefile.am | 1 + Build/source/libs/harfbuzz/include/Makefile.in | 22 +- Build/source/libs/harfbuzz/version.ac | 2 +- 197 files changed, 30094 insertions(+), 14174 deletions(-) create mode 100644 Build/source/libs/harfbuzz/harfbuzz-src/meson.build create mode 100644 Build/source/libs/harfbuzz/harfbuzz-src/meson_options.txt create mode 100644 Build/source/libs/harfbuzz/harfbuzz-src/src/fix_get_types.py create mode 100644 Build/source/libs/harfbuzz/harfbuzz-src/src/hb-draw.cc create mode 100644 Build/source/libs/harfbuzz/harfbuzz-src/src/hb-draw.h create mode 100644 Build/source/libs/harfbuzz/harfbuzz-src/src/hb-draw.hh create mode 100644 Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff1-std-str.hh create mode 100644 Build/source/libs/harfbuzz/harfbuzz-src/src/meson.build create mode 100644 Build/source/libs/harfbuzz/harfbuzz-src/src/test-array.cc delete mode 100644 Build/source/libs/harfbuzz/harfbuzz-src/src/test-ot-color.cc create mode 100644 Build/source/libs/harfbuzz/harfbuzz-src/src/test-ot-glyphname.cc diff --git a/Build/source/libs/README b/Build/source/libs/README index f5139b84c49..5bdb9c3ea3b 100644 --- a/Build/source/libs/README +++ b/Build/source/libs/README @@ -25,8 +25,8 @@ graphite2 1.3.14 - checked 10apr20 http://sourceforge.net/projects/silgraphite/files/graphite2/ (requires C++11) -harfbuzz 2.6.4 - checked 30oct19 - http://www.freedesktop.org/software/harfbuzz/release/ +harfbuzz 2.6.6 - checked 18may20 + https://github.com/harfbuzz/harfbuzz/releases/download/2.6.6/ icu 63.1 - checked 8jan19 http://download.icu-project.org/files/icu4c/ diff --git a/Build/source/libs/harfbuzz/ChangeLog b/Build/source/libs/harfbuzz/ChangeLog index 5d6ae4e03df..970d34f29a2 100644 --- a/Build/source/libs/harfbuzz/ChangeLog +++ b/Build/source/libs/harfbuzz/ChangeLog @@ -1,3 +1,8 @@ +2020-05-18 Akira Kakuto + + Import harfbuzz-2.6.6. + * Makefile.am, include/Makefile.am, version.ac: Adjusted. + 2019-10-30 Akira Kakuto Import harfbuzz-2.6.4. diff --git a/Build/source/libs/harfbuzz/Makefile.am b/Build/source/libs/harfbuzz/Makefile.am index a8b9c05817f..e725e7f0d80 100644 --- a/Build/source/libs/harfbuzz/Makefile.am +++ b/Build/source/libs/harfbuzz/Makefile.am @@ -52,6 +52,8 @@ libharfbuzz_a_SOURCES = \ @HARFBUZZ_TREE@/src/hb-config.hh \ @HARFBUZZ_TREE@/src/hb-debug.hh \ @HARFBUZZ_TREE@/src/hb-dispatch.hh \ + @HARFBUZZ_TREE@/src/hb-draw.cc \ + @HARFBUZZ_TREE@/src/hb-draw.hh \ @HARFBUZZ_TREE@/src/hb-face.hh \ @HARFBUZZ_TREE@/src/hb-face.cc \ @HARFBUZZ_TREE@/src/hb-font.hh \ @@ -71,6 +73,7 @@ libharfbuzz_a_SOURCES = \ @HARFBUZZ_TREE@/src/hb-open-file.hh \ @HARFBUZZ_TREE@/src/hb-open-type.hh \ @HARFBUZZ_TREE@/src/hb-ot-cff-common.hh \ + @HARFBUZZ_TREE@/src/hb-ot-cff1-std-str.hh \ @HARFBUZZ_TREE@/src/hb-ot-cff1-table.cc \ @HARFBUZZ_TREE@/src/hb-ot-cff1-table.hh \ @HARFBUZZ_TREE@/src/hb-ot-cff2-table.cc \ diff --git a/Build/source/libs/harfbuzz/Makefile.in b/Build/source/libs/harfbuzz/Makefile.in index 325d211c553..02fc07cfc94 100644 --- a/Build/source/libs/harfbuzz/Makefile.in +++ b/Build/source/libs/harfbuzz/Makefile.in @@ -123,6 +123,7 @@ am_libharfbuzz_a_OBJECTS = @HARFBUZZ_TREE@/src/hb-blob.$(OBJEXT) \ @HARFBUZZ_TREE@/src/hb-buffer-serialize.$(OBJEXT) \ @HARFBUZZ_TREE@/src/hb-buffer.$(OBJEXT) \ @HARFBUZZ_TREE@/src/hb-common.$(OBJEXT) \ + @HARFBUZZ_TREE@/src/hb-draw.$(OBJEXT) \ @HARFBUZZ_TREE@/src/hb-face.$(OBJEXT) \ @HARFBUZZ_TREE@/src/hb-font.$(OBJEXT) \ @HARFBUZZ_TREE@/src/hb-map.$(OBJEXT) \ @@ -199,6 +200,7 @@ am__depfiles_remade = ./$(DEPDIR)/hbtest-dummy.Po \ @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-buffer-serialize.Po \ @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-buffer.Po \ @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-common.Po \ + @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-draw.Po \ @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-face.Po \ @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-fallback-shape.Po \ @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-font.Po \ @@ -726,6 +728,7 @@ libharfbuzz_a_SOURCES = @HARFBUZZ_TREE@/src/hb-algs.hh \ @HARFBUZZ_TREE@/src/hb-config.hh \ @HARFBUZZ_TREE@/src/hb-debug.hh \ @HARFBUZZ_TREE@/src/hb-dispatch.hh \ + @HARFBUZZ_TREE@/src/hb-draw.cc @HARFBUZZ_TREE@/src/hb-draw.hh \ @HARFBUZZ_TREE@/src/hb-face.hh @HARFBUZZ_TREE@/src/hb-face.cc \ @HARFBUZZ_TREE@/src/hb-font.hh @HARFBUZZ_TREE@/src/hb-font.cc \ @HARFBUZZ_TREE@/src/hb-iter.hh @HARFBUZZ_TREE@/src/hb-kern.hh \ @@ -740,6 +743,7 @@ libharfbuzz_a_SOURCES = @HARFBUZZ_TREE@/src/hb-algs.hh \ @HARFBUZZ_TREE@/src/hb-open-file.hh \ @HARFBUZZ_TREE@/src/hb-open-type.hh \ @HARFBUZZ_TREE@/src/hb-ot-cff-common.hh \ + @HARFBUZZ_TREE@/src/hb-ot-cff1-std-str.hh \ @HARFBUZZ_TREE@/src/hb-ot-cff1-table.cc \ @HARFBUZZ_TREE@/src/hb-ot-cff1-table.hh \ @HARFBUZZ_TREE@/src/hb-ot-cff2-table.cc \ @@ -977,6 +981,9 @@ clean-noinstLIBRARIES: @HARFBUZZ_TREE@/src/hb-common.$(OBJEXT): \ @HARFBUZZ_TREE@/src/$(am__dirstamp) \ @HARFBUZZ_TREE@/src/$(DEPDIR)/$(am__dirstamp) +@HARFBUZZ_TREE@/src/hb-draw.$(OBJEXT): \ + @HARFBUZZ_TREE@/src/$(am__dirstamp) \ + @HARFBUZZ_TREE@/src/$(DEPDIR)/$(am__dirstamp) @HARFBUZZ_TREE@/src/hb-face.$(OBJEXT): \ @HARFBUZZ_TREE@/src/$(am__dirstamp) \ @HARFBUZZ_TREE@/src/$(DEPDIR)/$(am__dirstamp) @@ -1140,6 +1147,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-buffer-serialize.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-buffer.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-common.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-draw.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-face.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-fallback-shape.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@@HARFBUZZ_TREE@/src/$(DEPDIR)/hb-font.Po@am__quote@ # am--include-marker @@ -1789,6 +1797,7 @@ distclean: distclean-recursive -rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-buffer-serialize.Po -rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-buffer.Po -rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-common.Po + -rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-draw.Po -rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-face.Po -rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-fallback-shape.Po -rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-font.Po @@ -1888,6 +1897,7 @@ maintainer-clean: maintainer-clean-recursive -rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-buffer-serialize.Po -rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-buffer.Po -rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-common.Po + -rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-draw.Po -rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-face.Po -rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-fallback-shape.Po -rm -f @HARFBUZZ_TREE@/src/$(DEPDIR)/hb-font.Po diff --git a/Build/source/libs/harfbuzz/TLpatches/ChangeLog b/Build/source/libs/harfbuzz/TLpatches/ChangeLog index 1d06132492a..9de6c0760d9 100644 --- a/Build/source/libs/harfbuzz/TLpatches/ChangeLog +++ b/Build/source/libs/harfbuzz/TLpatches/ChangeLog @@ -1,3 +1,8 @@ +2020-05-18 Akira Kakuto + + Imported harfbuzz-2.6.6 source tree from: + https://github.com/harfbuzz/harfbuzz/releases/download/2.6.6/ + 2019-10-30 Akira Kakuto Imported harfbuzz-2.6.4 source tree from: diff --git a/Build/source/libs/harfbuzz/TLpatches/TL-Changes b/Build/source/libs/harfbuzz/TLpatches/TL-Changes index 77c29b50e47..ee4823a12c0 100644 --- a/Build/source/libs/harfbuzz/TLpatches/TL-Changes +++ b/Build/source/libs/harfbuzz/TLpatches/TL-Changes @@ -1,5 +1,5 @@ -Changes applied to the harfbuzz-2.6.4/ tree as obtained from: - http://www.freedesktop.org/software/harfbuzz/release/ +Changes applied to the harfbuzz-2.6.6/ tree as obtained from: + https://github.com/harfbuzz/harfbuzz/releases/download/2.6.6/ Removed: COPYING @@ -22,5 +22,7 @@ Removed: Removed unused dirs: docs m4 + meson-cc-tests + subprojects test util diff --git a/Build/source/libs/harfbuzz/configure b/Build/source/libs/harfbuzz/configure index 7d83063b50b..2e5bc8eed6b 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) 2.6.4. +# Generated by GNU Autoconf 2.69 for harfbuzz (TeX Live) 2.6.6. # # Report bugs to . # @@ -580,8 +580,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='harfbuzz (TeX Live)' PACKAGE_TARNAME='harfbuzz--tex-live-' -PACKAGE_VERSION='2.6.4' -PACKAGE_STRING='harfbuzz (TeX Live) 2.6.4' +PACKAGE_VERSION='2.6.6' +PACKAGE_STRING='harfbuzz (TeX Live) 2.6.6' PACKAGE_BUGREPORT='tex-k@tug.org' PACKAGE_URL='' @@ -1311,7 +1311,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) 2.6.4 to adapt to many kinds of systems. +\`configure' configures harfbuzz (TeX Live) 2.6.6 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1382,7 +1382,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of harfbuzz (TeX Live) 2.6.4:";; + short | recursive ) echo "Configuration of harfbuzz (TeX Live) 2.6.6:";; esac cat <<\_ACEOF @@ -1487,7 +1487,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -harfbuzz (TeX Live) configure 2.6.4 +harfbuzz (TeX Live) configure 2.6.6 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2123,7 +2123,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 2.6.4, which was +It was created by harfbuzz (TeX Live) $as_me 2.6.6, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -4047,7 +4047,7 @@ fi # Define the identity of the package. PACKAGE='harfbuzz--tex-live-' - VERSION='2.6.4' + VERSION='2.6.6' # Some tools Automake needs. @@ -4241,8 +4241,8 @@ WARNING_CFLAGS=$kpse_cv_warning_cflags HB_VERSION_MAJOR=2 HB_VERSION_MINOR=6 -HB_VERSION_MICRO=4 -HB_VERSION=2.6.4 +HB_VERSION_MICRO=6 +HB_VERSION=2.6.6 ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -7919,7 +7919,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 2.6.4, which was +This file was extended by harfbuzz (TeX Live) $as_me 2.6.6, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -7985,7 +7985,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 2.6.4 +harfbuzz (TeX Live) config.status 2.6.6 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/BUILD.md b/Build/source/libs/harfbuzz/harfbuzz-src/BUILD.md index 4c1c306450c..652d8affd3d 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/BUILD.md +++ b/Build/source/libs/harfbuzz/harfbuzz-src/BUILD.md @@ -7,11 +7,8 @@ whereas on Fedora, RHEL, CentOS, and other Red Hat based systems you would do: sudo yum install gcc gcc-c++ freetype-devel glib2-devel cairo-devel -on Windows, consider using [vcpkg](https://github.com/Microsoft/vcpkg), -provided by Microsoft, for building HarfBuzz and other open-source libraries -but if you need to build harfbuzz from source, put ragel binary on your -PATH and follow appveyor CI's cmake -[build steps](https://github.com/harfbuzz/harfbuzz/blob/master/appveyor.yml). +on Windows, consider using [vcpkg](https://github.com/Microsoft/vcpkg) +or `meson build && ninja -Cbuild`. on macOS, using MacPorts: diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/CMakeLists.txt b/Build/source/libs/harfbuzz/harfbuzz-src/CMakeLists.txt index 2a8fd8b9797..71830b6f5a4 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/CMakeLists.txt +++ b/Build/source/libs/harfbuzz/harfbuzz-src/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 2.8.0) project(harfbuzz) -enable_testing() +message("HarfBuzz has a Meson port also and tries to migrate all the other build systems to it, please consider using it.") ## Limit framework build to Xcode generator if (BUILD_FRAMEWORK) @@ -53,7 +53,6 @@ if (HB_BUILD_UTILS) endif () option(HB_BUILD_SUBSET "Build harfbuzz-subset" ON) -option(HB_BUILD_TESTS "Build harfbuzz tests" ON) option(HB_HAVE_GOBJECT "Enable GObject Bindings" OFF) if (HB_HAVE_GOBJECT) @@ -66,25 +65,6 @@ if (HB_HAVE_INTROSPECTION) set (HB_HAVE_GLIB ON) endif () -option(HB_CHECK OFF "Do a configuration suitable for testing (shared library and enable all options)") -if (HB_CHECK) - set (BUILD_SHARED_LIBS ON) - set (HB_BUILD_UTILS ON) - set (HB_HAVE_ICU) - set (HB_HAVE_GLIB ON) - #set (HB_HAVE_GOBJECT ON) - #set (HB_HAVE_INTROSPECTION ON) - set (HB_HAVE_FREETYPE ON) - set (HB_HAVE_GRAPHITE2 ON) - if (WIN32) - set (HB_HAVE_UNISCRIBE ON) - set (HB_HAVE_GDI ON) - set (HB_HAVE_DIRECTWRITE ON) - elseif (APPLE) - set (HB_HAVE_CORETEXT ON) - endif () -endif () - include_directories(AFTER ${PROJECT_SOURCE_DIR}/src ${PROJECT_BINARY_DIR}/src @@ -108,7 +88,7 @@ endmacro () if (UNIX) list(APPEND CMAKE_REQUIRED_LIBRARIES m) endif () -check_funcs(atexit mprotect sysconf getpagesize mmap isatty newlocale strtod_l roundf) +check_funcs(atexit mprotect sysconf getpagesize mmap isatty roundf) check_include_file(unistd.h HAVE_UNISTD_H) if (${HAVE_UNISTD_H}) add_definitions(-DHAVE_UNISTD_H) @@ -117,10 +97,6 @@ check_include_file(sys/mman.h HAVE_SYS_MMAN_H) if (${HAVE_SYS_MMAN_H}) add_definitions(-DHAVE_SYS_MMAN_H) endif () -check_include_file(xlocale.h HAVE_XLOCALE_H) -if (${HAVE_XLOCALE_H}) - add_definitions(-DHAVE_XLOCALE_H) -endif () check_include_file(stdbool.h HAVE_STDBOOL_H) if (${HAVE_STDBOOL_H}) add_definitions(-DHAVE_STDBOOL_H) @@ -147,7 +123,7 @@ function (extract_make_variable variable makefile_source) set (${variable} ${listVar} PARENT_SCOPE) endfunction () -# http://stackoverflow.com/a/27630120 +# https://stackoverflow.com/a/27630120 function (add_prefix_to_list var prefix) set (listVar "") foreach (f ${${var}}) @@ -465,6 +441,19 @@ endif () add_library(harfbuzz ${project_sources} ${project_extra_sources} ${project_headers}) target_link_libraries(harfbuzz ${THIRD_PARTY_LIBS}) + +## Define harfbuzz-icu library +if (HB_HAVE_ICU) + add_library(harfbuzz-icu ${PROJECT_SOURCE_DIR}/src/hb-icu.cc ${PROJECT_SOURCE_DIR}/src/hb-icu.h) + add_dependencies(harfbuzz-icu harfbuzz) + target_link_libraries(harfbuzz-icu harfbuzz ${THIRD_PARTY_LIBS}) + + if (BUILD_SHARED_LIBS) + set_target_properties(harfbuzz harfbuzz-icu PROPERTIES VISIBILITY_INLINES_HIDDEN TRUE) + endif () +endif () + + ## Define harfbuzz-subset library if (HB_BUILD_SUBSET) add_library(harfbuzz-subset ${subset_project_sources} ${subset_project_headers}) @@ -615,12 +604,14 @@ if (HB_HAVE_INTROSPECTION) POST_BUILD COMMAND ${G_IR_SCANNER_CMD} --warn-all --no-libtool --verbose - -n hb --namespace=HarfBuzz --nsversion=0.0 + --symbol-prefix=hb + --symbol-prefix=hb_gobject --identifier-prefix=hb_ --include GObject-2.0 - --pkg-export=harfbuzz + --pkg-export=harfbuzz-gobject + --c-include=hb-gobject.h --cflags-begin -I${PROJECT_SOURCE_DIR}/src -I${PROJECT_BINARY_DIR}/src @@ -723,6 +714,14 @@ if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL) NAMESPACE harfbuzz:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/harfbuzz ) + if (HB_HAVE_ICU) + install(TARGETS harfbuzz-icu + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + FRAMEWORK DESTINATION Library/Frameworks + ) + endif () if (HB_BUILD_UTILS) if (WIN32 AND BUILD_SHARED_LIBS) install(TARGETS harfbuzz-subset @@ -767,54 +766,3 @@ if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL) endif () endif () endif () - -if (HB_BUILD_TESTS) - ## src/ executables - foreach (prog main test test-gsub-would-substitute test-gpos-size-params test-buffer-serialize test-unicode-ranges) # hb-ot-tag - set (prog_name ${prog}) - if (${prog_name} STREQUAL "test") - # test can not be used as a valid executable name on cmake, lets special case it - set (prog_name test-test) - endif () - add_executable(${prog_name} ${PROJECT_SOURCE_DIR}/src/${prog}.cc) - target_link_libraries(${prog_name} harfbuzz ${THIRD_PARTY_LIBS}) - endforeach () - # set_target_properties(hb-ot-tag PROPERTIES COMPILE_FLAGS "-DMAIN") - - ## Tests - if (UNIX OR MINGW) - if (BUILD_SHARED_LIBS) - # generate harfbuzz.def after build completion - add_custom_command(TARGET harfbuzz POST_BUILD - COMMAND "${PYTHON_EXECUTABLE}" ${PROJECT_SOURCE_DIR}/src/gen-def.py ${PROJECT_BINARY_DIR}/harfbuzz.def ${project_headers} - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/src) - - add_test(NAME check-static-inits.sh - COMMAND ${PROJECT_SOURCE_DIR}/src/check-static-inits.sh - WORKING_DIRECTORY ${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/harfbuzz.dir/src # ugly hack - ) - add_test(NAME check-libstdc++.sh COMMAND ${PROJECT_SOURCE_DIR}/src/check-libstdc++.sh) - add_test(NAME check-symbols.sh COMMAND ${PROJECT_SOURCE_DIR}/src/check-symbols.sh) - - set_tests_properties( - check-static-inits.sh check-libstdc++.sh check-symbols.sh - PROPERTIES - ENVIRONMENT "libs=.;srcdir=${PROJECT_SOURCE_DIR}/src" - SKIP_RETURN_CODE 77) - endif () - - add_test(NAME check-c-linkage-decls.sh COMMAND ./check-c-linkage-decls.sh) - add_test(NAME check-header-guards.sh COMMAND ./check-header-guards.sh) - add_test(NAME check-externs.sh COMMAND ./check-externs.sh) - add_test(NAME check-includes.sh COMMAND ./check-includes.sh) - set_tests_properties( - check-c-linkage-decls.sh check-header-guards.sh check-externs.sh check-includes.sh - PROPERTIES - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/src - SKIP_RETURN_CODE 77) - endif () - - # Needs to come last so that variables defined above are passed to - # subdirectories. - add_subdirectory(test) -endif () diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/CONFIG.md b/Build/source/libs/harfbuzz/harfbuzz-src/CONFIG.md index 46971b0f2d9..8aa9b1bfd18 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/CONFIG.md +++ b/Build/source/libs/harfbuzz/harfbuzz-src/CONFIG.md @@ -1,7 +1,7 @@ # Configuring HarfBuzz Most of the time you will not need any custom configuration. The configuration -options provided by `configure` or `cmake` should be enough. In particular, +options provided by `configure` or `meson` should be enough. In particular, if you just want HarfBuzz library plus hb-shape / hb-view utilities, make sure FreeType and Cairo are available and found during configuration. diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog b/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog index ec56461cbab..b0913850a51 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog +++ b/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog @@ -1,14266 +1,24645 @@ -commit 3a74ee528255cc027d84b204a87b5c25e47bff79 -Author: Behdad Esfahbod -Date: Tue Oct 29 12:27:03 2019 -0700 +commit 42025680cb0a30eba4ed48d125586a4dda3c973e +Author: Ebrahim Byagowi +Date: Tue May 12 00:14:33 2020 +0430 - 2.6.4 + 2.6.6 NEWS | 7 +++++++ configure.ac | 2 +- + meson.build | 2 +- src/hb-version.h | 4 ++-- - 3 files changed, 10 insertions(+), 3 deletions(-) + 4 files changed, 11 insertions(+), 4 deletions(-) -commit 3958f6fb2378d83dd5107d62a8464187c93707b0 +commit 57d67f177508c11a2a9b9e8aa5f2d3540b5319f5 Author: Ebrahim Byagowi -Date: Tue Oct 29 22:36:50 2019 +0330 +Date: Tue May 12 00:03:17 2020 +0430 - Add in_range in hb_bytes_t to merge range_checker_t with it + [RELEASE] minor update - src/hb-array.hh | 9 +++++++++ - src/hb-ot-glyf-table.hh | 28 ++++++++++++-------------- - src/hb-ot-var-gvar-table.hh | 49 +++++++++++++++------------------------------ - 3 files changed, 38 insertions(+), 48 deletions(-) + RELEASING.md | 20 +++++--------------- + 1 file changed, 5 insertions(+), 15 deletions(-) -commit 7915c5d6fa3efac99df08a54d4437eca0b780033 +commit b169a52c1e3c5d16adcf3e80cba37bb86adcbe77 +Author: Khaled Hosny +Date: Mon May 11 14:35:11 2020 +0200 + + [blob] Fix build when HAVE_MMAP is not defined + + src/hb-blob.cc | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +commit a2ce96881b40c1689319c1f699f1469afc3ffe40 Author: Ebrahim Byagowi -Date: Tue Oct 29 22:55:34 2019 +0330 +Date: Mon May 11 17:15:37 2020 +0430 - [ci] Check the recipt introduce in 7152ac3 + [cff] remove the not used member - .circleci/config.yml | 1 + - 1 file changed, 1 insertion(+) + src/hb-subset-cff1.cc | 4 ---- + 1 file changed, 4 deletions(-) -commit aa3831e295540083350c640d4a630f53e70d822f +commit 2cc78a58c3fecf7a3cb26c01949e9cd4d0cd9ee5 Author: Ebrahim Byagowi -Date: Tue Oct 29 21:37:07 2019 +0330 +Date: Mon May 11 15:56:54 2020 +0430 - [glyf] Use contour_bounds_t::empty to simplify get_extents logic + [number] minor - src/hb-ot-glyf-table.hh | 20 ++++++-------------- - 1 file changed, 6 insertions(+), 14 deletions(-) + src/hb-number-parser.hh | 16 +++++++--------- + src/hb-number-parser.rl | 8 +++----- + 2 files changed, 10 insertions(+), 14 deletions(-) -commit d59ae5836d1349b885db980cbb741da33caebfde +commit bb095e1bdd0f7f1de88651d6f7223bc04bf70d70 Author: Ebrahim Byagowi -Date: Tue Oct 29 21:30:04 2019 +0330 +Date: Sun May 10 22:00:05 2020 +0430 - [glyf] Refactor contour_bounds_t use to make its fields protected + [meson] make -subset target dependent to deps to get libm dependency - src/hb-ot-glyf-table.hh | 47 ++++++++++++++++++++++++++--------------------- - 1 file changed, 26 insertions(+), 21 deletions(-) + src/meson.build | 1 + + 1 file changed, 1 insertion(+) -commit 773ee8041e8905bfb06c1a71d2b4fc99110b3dc6 -Merge: 47b4074d 0efbda7a -Author: Behdad Esfahbod -Date: Tue Oct 29 10:58:56 2019 -0700 +commit dca8ba6b6d637ebfc51d658a893e8dbda28b7709 +Author: Ebrahim Byagowi +Date: Sun May 10 16:57:45 2020 +0430 - Merge pull request #2038 from ebraminio/glyf-contour - - Remove contour_point_t so we won't need to zero its unused var + [number] Make hb_parse_double simpler now that we don't have to mimic strtod -commit 0efbda7a40742cbdf30d5a85061ffb6a0a55bcc0 + src/hb-number-parser.hh | 23 ++++++++++++----------- + src/hb-number-parser.rl | 15 ++++++++------- + src/hb-number.cc | 25 +++++++++++++------------ + src/test-number.cc | 20 -------------------- + 4 files changed, 33 insertions(+), 50 deletions(-) + +commit 44fe1c8ff19048d11785ff154993d6637b447fdd Author: Ebrahim Byagowi -Date: Tue Oct 29 21:03:26 2019 +0330 +Date: Wed Mar 25 16:36:48 2020 +0430 - Remove contour_point_t so we won't need to zero its unused var + Remove xlocale use now that isn't available in most distros + + Our CI bots don't detect it in Alpine, ArchLinux, Ubuntu and Fedora + so let's get rid of it use the fallback we are using anyway for a + long time. - src/hb-ot-glyf-table.hh | 27 +++++++++++++-------------- - 1 file changed, 13 insertions(+), 14 deletions(-) + CMakeLists.txt | 6 +---- + configure.ac | 4 +-- + meson.build | 3 --- + src/hb-number.cc | 71 +----------------------------------------------------- + src/test-number.cc | 9 ------- + 5 files changed, 4 insertions(+), 89 deletions(-) -commit 47b4074d5f98d71d2983470602eff9b93f102af4 -Merge: dd8a8460 dd288840 -Author: Behdad Esfahbod -Date: Tue Oct 29 03:16:34 2019 -0700 +commit eea99d7b7253027570f7afe64ca63962618553b7 +Author: Ebrahim Byagowi +Date: Sun May 10 14:46:16 2020 +0430 - Merge pull request #2034 from khaledhosny/cmap-notdef + [meson] Let name_prefix of exported libraries the default - [cmap] Check GID before adding ranges in format 4 & 12 + meson complains about this and it is the default per #2256 + + Fixes #2256 -commit dd8a8460377ca54207877ea9da96931175dbb15f -Author: jfkthame -Date: Tue Oct 29 09:20:41 2019 +0000 + src/meson.build | 10 ++++------ + 1 file changed, 4 insertions(+), 6 deletions(-) - Use proper y-scale factor for height value +commit 2ac4222022ee261269994ce4eaf4d7c070152492 +Author: Ebrahim Byagowi +Date: Sun May 10 14:20:27 2020 +0430 - src/hb-ot-cff1-table.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + [meson] specify preferred linker to avoid stdc++ linking -commit 7152ac3fcfe8a599aa0d20f8d02ef38c69111231 -Author: Behdad Esfahbod -Date: Mon Oct 28 17:12:55 2019 -0700 + meson_options.txt | 2 ++ + src/meson.build | 19 ++++++++++++++++++- + 2 files changed, 20 insertions(+), 1 deletion(-) - Fix build - - $ make CPPFLAGS="-DHB_TINY -DHB_NO_OT_FONT" libharfbuzz-subset.la +commit 15083c24ee7c69e17eee4d99ee9db121a150338b +Author: Ebrahim Byagowi +Date: Sun May 10 14:12:20 2020 +0430 - src/hb-subset-plan.cc | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) + [meson] Reenable make check-symbols compatible with gcov -commit dd288840d6f87acd13b99b71408dcdb35a2be9cb + src/check-symbols.sh | 2 +- + src/meson.build | 29 ++++++++++++++++++++--------- + 2 files changed, 21 insertions(+), 10 deletions(-) + +commit 68855e4a6dedf40d643a1ec9ac89c9ae32ce763c Author: Khaled Hosny -Date: Tue Oct 29 01:45:49 2019 +0200 +Date: Fri May 8 00:51:15 2020 +0200 - [cmap] Check GID before adding ranges in format 4 & 12 - - Fixes https://github.com/harfbuzz/harfbuzz/issues/2031 + [docs] Don’t recommend outdated FDO releases pages - src/hb-ot-cmap-table.hh | 32 ++++++++++++++++++++++++-------- - test/api/fonts/cmunrm.otf | Bin 0 -> 330492 bytes - test/api/test-collect-unicodes.c | 22 ++++++++++++++++++++++ - 3 files changed, 46 insertions(+), 8 deletions(-) + docs/usermanual-install-harfbuzz.xml | 10 ++-------- + 1 file changed, 2 insertions(+), 8 deletions(-) -commit fd71c045b46380281ba8a7e351fac7248938c74c -Author: Behdad Esfahbod -Date: Mon Oct 28 17:06:53 2019 -0700 +commit 1ec77522d838dd751733d3927e3d9589bf298853 +Author: Ebrahim Byagowi +Date: Thu May 7 14:08:05 2020 +0430 - Hopefully fix up previous commit and bots + [docs] Simplify logo's SVG source, down scale png version + + * SVG version is simplified using SVGO and some hand tweak + * PNG result of SVG logo is optimized using pngwolf-zopfli + * Down scaled to fit visually a little better on docs page - src/hb.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + docs/HarfBuzz.png | Bin 8814 -> 4740 bytes + docs/HarfBuzz.svg | 283 ++---------------------------------------------------- + 2 files changed, 7 insertions(+), 276 deletions(-) -commit e832dc4c642f604d2cbb8e6b2f0b8d37151936f1 -Author: Behdad Esfahbod -Date: Mon Oct 28 17:02:40 2019 -0700 +commit 0b261c5d0b38f1b9a564798ea26edb698e872841 +Author: Ebrahim Byagowi +Date: Thu May 7 10:28:24 2020 +0430 - [config] Make HB_NO_ERRNO work with systems defining errno as a macro + [ci] disable clang-{everthing,*san} bots + + are flaky, will enable them somewhere else - src/hb.hh | 8 +++++--- - 1 file changed, 5 insertions(+), 3 deletions(-) + .circleci/config.yml | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) -commit ce11df1b5b8e49712bef249de19bc4768f3a691c -Author: Behdad Esfahbod -Date: Mon Oct 28 14:45:31 2019 -0700 +commit 385d64eef1d5dd37187310a08ca6f0408a2e4625 +Author: Ebrahim Byagowi +Date: Thu May 7 09:59:01 2020 +0430 - 2.6.3 + Add a not discardable bool type, hb_success_t - NEWS | 8 ++++++++ - configure.ac | 2 +- - src/hb-font.cc | 2 +- - src/hb-version.h | 4 ++-- - 4 files changed, 12 insertions(+), 4 deletions(-) + src/hb-open-type.hh | 4 ++-- + src/hb.hh | 12 ++++++++++++ + 2 files changed, 14 insertions(+), 2 deletions(-) -commit 5a59de2b983ed7a1c639ea3e4d23c341134cd6d5 -Author: Behdad Esfahbod -Date: Mon Oct 28 14:02:47 2019 -0700 +commit 1026b3d0b65fd101939ce8d2b74aaf074c44c3e6 +Author: jfkthame +Date: Wed May 6 21:32:24 2020 +0100 - Actually add +hb_font_get_nominal_glyphs() + [subset] Check vector resize() call for failure (#2389) - New API: - +hb_font_get_nominal_glyphs() + Other .resize() calls are checked, presumably this one should be as well. - src/hb-font.cc | 23 +++++++++++++++++++++++ - src/hb-font.h | 8 ++++++++ - 2 files changed, 31 insertions(+) + src/hb-subset-cff2.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 03028a5fe512978a8f8e2396001cf8e425b44f72 -Author: Behdad Esfahbod -Date: Mon Oct 28 13:46:56 2019 -0700 +commit 100d40c827eb8336b2b671856f151275d47e71ad +Author: jfkthame +Date: Wed May 6 01:48:24 2020 +0100 - Revert "Don't include codepoint 0 in the results of collect_unicodes." + [aat] Fix implementation of AAT kerning for Geeza Pro. (#2388) - This reverts commit 14ad96ffbf77c33d8d33d2686d17c2375381989e. + * [aat] Fix implementation of AAT kerning for Geeza Pro. - This was wrong. My bad! + Despite what the comment in the code used to say, it appears that Geeza Pro + does rely on accumulating kerning values from successive subtables. With + this change, the results now match Core Text rendering (and avoid the clear + visual breakage reported in #2358). - https://github.com/harfbuzz/harfbuzz/issues/2031 + Testcase: U+0644,U+064E,U+0645,U+064E,U+0651,U+0627 + + Fixes #2358. + + * [aat] Update test expectations, add new testcase. - src/hb-ot-cmap-table.hh | 8 +------- - 1 file changed, 1 insertion(+), 7 deletions(-) + src/hb-aat-layout-kerx-table.hh | 50 +++++++++++++--------------- + test/shaping/data/in-house/tests/macos.tests | 12 ++++--- + 2 files changed, 31 insertions(+), 31 deletions(-) -commit 2714dc31b8d0ffe3c043935dd7619be0dd7b7635 -Merge: aca63902 14ad96ff -Author: Behdad Esfahbod -Date: Mon Oct 28 13:01:34 2019 -0700 +commit 9fc774ab00be92dbfd1cc1c03b4e6cadcd9b7674 +Author: Ebrahim Byagowi +Date: Thu Apr 30 23:14:54 2020 +0430 - Merge pull request #2032 from googlefonts/collect_unicodes + minor spacing + + src/hb-blob.cc | 4 ++-- + src/hb-ot-color-cbdt-table.hh | 12 ++++++------ + 2 files changed, 8 insertions(+), 8 deletions(-) + +commit 09b9d63e56eb8dac50db9684cf5a77a84eb31a60 +Author: Khaled Hosny +Date: Thu Apr 30 18:51:46 2020 +0200 + + [blob] Try to support resource fork fonts on macOS - Don't include codepoint 0 in the results of collect_unicodes. + If the size of opened file is zero, try opening resource fork by + appending "/..namedfork/rsrc" to the file name. This is guarded with + __APPLE__ ifdef and uses _PATH_RSRCFORKSPEC macro from sys/paths.h. + + Defining HB_NO_RESOURCE_FORK will disable this fallback. + + Fixes https://github.com/harfbuzz/harfbuzz/issues/2383 -commit 14ad96ffbf77c33d8d33d2686d17c2375381989e -Author: Garret Rieger -Date: Mon Oct 28 12:56:04 2019 -0700 + src/hb-blob.cc | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 50 insertions(+) - Don't include codepoint 0 in the results of collect_unicodes. - It is always assumed to be the notdef glyph. +commit d6ddb232fc9b8c3a04398360a1d3a0b7931033e3 +Author: René Meusel +Date: Tue Apr 28 19:30:00 2020 +0200 - src/hb-ot-cmap-table.hh | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) + FIX: -Wextra-semi-stmt in Clang9 -commit aca63902814748b36bf6939421cfa95eed3a1ca7 + src/hb-coretext.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 8ba8980222731a51f23ebc12b0145d29caee1a91 Author: Ebrahim Byagowi -Date: Tue Oct 22 00:06:46 2019 +0330 +Date: Tue Apr 28 20:14:17 2020 +0430 - [gpos] Don't move pointer when match_glyph_data is not set + [ci] enable experimental apis in coverity scan - src/hb-ot-layout-gsubgpos.hh | 16 ++++++++-------- - 1 file changed, 8 insertions(+), 8 deletions(-) + .github/workflows/coverity-scan.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit defe9b6da018bc85750c999454c51fde0cadb9b2 -Author: Qunxin Liu -Date: Fri Oct 25 10:07:26 2019 -0700 +commit d63ee13a2a3d4e480bd563dcbac74817b675e812 +Author: Ebrahim Byagowi +Date: Tue Apr 28 20:01:11 2020 +0430 - crash fix : Heap-buffer-overflow READ 2 - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=18513 + [ci] enable more on coverity - src/hb-ot-layout-gpos-table.hh | 12 ++++++------ - ...z-testcase-minimized-hb-subset-fuzzer-5677906231033856 | Bin 0 -> 938 bytes - 2 files changed, 6 insertions(+), 6 deletions(-) + .github/workflows/coverity-scan.yml | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) -commit b2fcca6e14afc8085cc1c2491b2d7c780dad1450 -Author: Qunxin Liu -Date: Thu Oct 24 15:15:26 2019 -0700 +commit ace202e17e7f41aa3347618426b334be3d9f0e17 +Author: Ebrahim Byagowi +Date: Tue Apr 28 19:38:04 2020 +0430 - fuzzer crash fix - https://oss-fuzz.com/testcase-detail/5643107869917184 + [ci] remove trigger-coverity.sh + + hopefully not needed, we are submitting it in a bot - src/hb-ot-layout-gsubgpos.hh | 11 +++++++---- - ...-testcase-minimized-hb-subset-fuzzer-5643107869917184 | Bin 0 -> 3232 bytes - 2 files changed, 7 insertions(+), 4 deletions(-) + .ci/trigger-coverity.sh | 11 ----------- + 1 file changed, 11 deletions(-) -commit 9815ca0338b47c6ea4e82f2fbd39d70e3456aca1 +commit a22e6de0e96b68b28cd750e3041fdc864bf3331a Author: Ebrahim Byagowi -Date: Thu Oct 24 21:05:38 2019 +0330 +Date: Tue Apr 28 19:25:37 2020 +0430 - [ci] Use custom subset fuzzer timeout for failing sanitizer bots + [blob] close file reader handle + + fortunately it isn't in that use as having mmap reader as the default - .circleci/config.yml | 8 ++++---- - test/fuzzing/run-shape-fuzzer-tests.py | 3 ++- - test/fuzzing/run-subset-fuzzer-tests.py | 3 ++- - 3 files changed, 8 insertions(+), 6 deletions(-) + src/hb-blob.cc | 1 + + 1 file changed, 1 insertion(+) -commit b03b62cb304279195569180061cde745e0c9880a +commit 39976ee660ba82c75e4fa757134f7925740b1c4d Author: Ebrahim Byagowi -Date: Wed Oct 23 12:18:21 2019 +0330 +Date: Tue Apr 28 18:50:33 2020 +0430 - [ci] Add HB_NO_MT on non HB_TINY no-build-system builds + [ci] install fonttools in linux-ci bot - .circleci/config.yml | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) + .github/workflows/linux-ci.yml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit 5e489670e15329f5eced16e5a76145c6149a265f -Author: Behdad Esfahbod -Date: Tue Oct 22 15:03:47 2019 -0700 +commit 1801489b49f4c2c6ef82fba89440d4e766de3555 +Author: Ebrahim Byagowi +Date: Tue Apr 28 18:47:39 2020 +0430 - Remove hb-warning.cc - - Fixes https://github.com/harfbuzz/harfbuzz/issues/2005 + [ci] Add coverity scan bot - src/Makefile.sources | 1 - - src/harfbuzz.cc | 1 - - src/hb-atomic.hh | 16 +++++----------- - src/hb-mutex.hh | 25 ++++++------------------- - src/hb-warning.cc | 37 ------------------------------------- - 5 files changed, 11 insertions(+), 69 deletions(-) + .github/workflows/coverity-scan.yml | 38 +++++++++++++++++++++++++++++++++++++ + 1 file changed, 38 insertions(+) -commit 05bcdb39d8648c49f7984c404aee096f2ad1d655 -Author: Garret Rieger -Date: Mon Oct 21 16:10:06 2019 -0700 +commit 156714f797fcb5bc07ff5e22ae8ee8d78a7cf79b +Author: Ebrahim Byagowi +Date: Tue Apr 28 16:32:15 2020 +0430 - Add a specialization of array_t:hash for hb_bytes_t and hb_ubytes_t. + [ci] fix linux-ci bot + + It shows some percentage of coverage regression + as the switch from lcov to gcovr and autotools to meson while this travis to github actions switch. - src/hb-array.hh | 34 ++++++++++++++++++++++++---------- - src/hb-ot-layout-gsubgpos.hh | 2 -- - 2 files changed, 24 insertions(+), 12 deletions(-) + .github/workflows/linux-ci.yml | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) -commit 95ab110cd9a6083a854e538211618b2733aba643 -Author: Garret Rieger -Date: Mon Oct 21 13:15:46 2019 -0700 +commit 4b298cc6c4e3ecdde2d27dfa28e8cbb377a5e05d +Author: Ebrahim Byagowi +Date: Tue Apr 28 15:50:03 2020 +0430 - Optimize intersects_array to fix fuzzer timeout. + [ci] remove travis's clang bot + + we are testing it on other bots, let's remove it from travis - src/hb-ot-layout-gsubgpos.hh | 10 +++++----- - ...estcase-minimized-hb-subset-fuzzer-5763024094232576 | Bin 0 -> 125681 bytes - 2 files changed, 5 insertions(+), 5 deletions(-) + .travis.yml | 24 ++---------------------- + 1 file changed, 2 insertions(+), 22 deletions(-) -commit be5cdcdfa21a2d956fc8c445452a78e77ede95fb -Author: Garret Rieger -Date: Tue Oct 22 11:55:04 2019 -0700 +commit 34a4ce98f4ccf7c6aa6cb7d4e4497da4cf2aeb0f +Author: Ebrahim Byagowi +Date: Tue Apr 28 15:34:29 2020 +0430 - Store the hash value of a key in item_t in hb_map to reduce the number of hash computations. + [ci] run apt-get with sudo - src/hb-map.hh | 70 ++++++++++++++++++++++++++++++++++------------------------- - 1 file changed, 40 insertions(+), 30 deletions(-) + .github/workflows/linux-ci.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit b33a0d628e5e76992fdd02fd4178906137e6153c -Author: Qunxin Liu -Date: Mon Oct 21 13:24:52 2019 -0700 +commit f27c0065d42f22c3f1484d97cac34f727832ff78 +Author: Ebrahim Byagowi +Date: Tue Apr 28 15:30:25 2020 +0430 - fuzzer crash fix: Null-dereference WRITE - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=18363 + [ci] Add a GitHub CI bot + + Run coverage also - src/hb-ot-layout-common.hh | 4 +++- - ...z-testcase-minimized-hb-subset-fuzzer-5659903036751872 | Bin 0 -> 781 bytes - 2 files changed, 3 insertions(+), 1 deletion(-) - -commit cf414e361a99decd9c1710f1012236bffd067878 -Author: Garret Rieger -Date: Fri Sep 27 09:55:17 2019 -0700 - - Added profiling instructions to TESTING.md - - TESTING.md | 11 +++++++++++ - 1 file changed, 11 insertions(+) + .github/workflows/linux-ci.yml | 25 +++++++++++++++++++++++++ + 1 file changed, 25 insertions(+) -commit 1f0a9d9be979de01527c05f4dbe6fbc62799597c -Author: Qunxin Liu -Date: Tue Sep 17 11:10:08 2019 -0700 +commit 482f4aafd53982d96f08eaebe9af6e7dd4419dc9 +Author: Ebrahim Byagowi +Date: Tue Apr 28 15:29:19 2020 +0430 - [subset] GPOS Lookup Type 2: PairPos + [ci] Remove coverity and codecov + + * This coverity runner doesn't work from here but will try again in GitHub Actions bot + * Trying to move codecov to GitHub Actions - src/hb-ot-layout-gpos-table.hh | 131 ++++++++++++++++++++- - test/subset/data/Makefile.am | 1 + - test/subset/data/Makefile.sources | 1 + - ...s2_1_font7.keep-layout-retain-gids.21,23,25.otf | Bin 0 -> 1764 bytes - ...gpos2_1_font7.keep-layout-retain-gids.21,23.otf | Bin 0 -> 1632 bytes - ...eep-layout-retain-gids.retain-all-codepoint.otf | Bin 0 -> 3688 bytes - .../gpos2_1_font7.keep-layout.21,23,25.otf | Bin 0 -> 1428 bytes - .../gpos2_1_font7.keep-layout.21,23.otf | Bin 0 -> 1308 bytes - ...s2_1_font7.keep-layout.retain-all-codepoint.otf | Bin 0 -> 3688 bytes - ...s2_2_font5.keep-layout-retain-gids.21,23,25.otf | Bin 0 -> 1776 bytes - ...gpos2_2_font5.keep-layout-retain-gids.21,23.otf | Bin 0 -> 1644 bytes - ...eep-layout-retain-gids.retain-all-codepoint.otf | Bin 0 -> 3684 bytes - .../gpos2_2_font5.keep-layout.21,23,25.otf | Bin 0 -> 1440 bytes - .../gpos2_2_font5.keep-layout.21,23.otf | Bin 0 -> 1320 bytes - ...s2_2_font5.keep-layout.retain-all-codepoint.otf | Bin 0 -> 3684 bytes - test/subset/data/fonts/gpos2_1_font7.otf | Bin 0 -> 4584 bytes - test/subset/data/fonts/gpos2_2_font5.otf | Bin 0 -> 4580 bytes - test/subset/data/tests/layout.gpos2.tests | 12 ++ - 18 files changed, 139 insertions(+), 6 deletions(-) + .travis.yml | 13 ------------- + 1 file changed, 13 deletions(-) -commit e766783152b91fb20baf0c657586628fd7959b1b +commit 6890554256f96d2dee43261ad5012e788695754c Author: Ebrahim Byagowi -Date: Mon Oct 21 22:17:06 2019 +0330 +Date: Tue Apr 28 14:56:47 2020 +0430 - [fuzz] Add https://crbug.com/oss-fuzz/17898 testcase + [ci/meson] temporarily disable check-symbols + + will enable again - ...sterfuzz-testcase-hb-subset-fuzzer-5717414645334016 | Bin 0 -> 310324 bytes - 1 file changed, 0 insertions(+), 0 deletions(-) + src/meson.build | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) -commit b66094ada0ae7e69d5d08ee8423554629eabccaf +commit e53c44e3260d6136e27635b5bbcb2da43bc4f1b1 Author: Qunxin Liu -Date: Mon Sep 30 16:19:18 2019 -0700 +Date: Fri Apr 24 14:06:13 2020 -0700 - [subset] GSUB Lookup Type 6: ChainContextSubst + [subset] temporarily revert previous cmap commit + Required in https://github.com/harfbuzz/harfbuzz/issues/2356 - src/hb-ot-layout-common.hh | 260 ++++++++++++++------- - src/hb-ot-layout-gsubgpos.hh | 218 ++++++++++++++++- - test/subset/data/Makefile.am | 1 + - test/subset/data/Makefile.sources | 1 + - ...ules_f1.keep-layout-retain-gids.30,31,32,33.otf | Bin 0 -> 2380 bytes - ...eep-layout-retain-gids.retain-all-codepoint.otf | Bin 0 -> 3748 bytes - ...ultiple_subrules_f1.keep-layout.30,31,32,33.otf | Bin 0 -> 1916 bytes - ...ubrules_f1.keep-layout.retain-all-codepoint.otf | Bin 0 -> 3748 bytes - ...ules_f1.keep-layout-retain-gids.30,31,32,33.otf | Bin 0 -> 2408 bytes - ...eep-layout-retain-gids.retain-all-codepoint.otf | Bin 0 -> 3780 bytes - ...ultiple_subrules_f1.keep-layout.30,31,32,33.otf | Bin 0 -> 1944 bytes - ...ubrules_f1.keep-layout.retain-all-codepoint.otf | Bin 0 -> 3780 bytes - ...mple_f2.keep-layout-retain-gids.30,31,32,33.otf | Bin 0 -> 2368 bytes - ...eep-layout-retain-gids.retain-all-codepoint.otf | Bin 0 -> 3716 bytes - ...chaining3_simple_f2.keep-layout.30,31,32,33.otf | Bin 0 -> 1904 bytes - ..._simple_f2.keep-layout.retain-all-codepoint.otf | Bin 0 -> 3716 bytes - .../fonts/gsub_chaining1_multiple_subrules_f1.otf | Bin 0 -> 4700 bytes - .../fonts/gsub_chaining2_multiple_subrules_f1.otf | Bin 0 -> 4780 bytes - .../subset/data/fonts/gsub_chaining3_simple_f2.otf | Bin 0 -> 4668 bytes - test/subset/data/tests/layout.gsub6.tests | 12 + - 20 files changed, 405 insertions(+), 87 deletions(-) + src/hb-ot-cmap-table.hh | 3 ++- + test/api/test-subset-cmap.c | 4 +++- + test/subset/data/Makefile.sources | 2 +- + .../expected/japanese/Mplus1p-Regular.default.25771.ttf | Bin 1824 -> 0 bytes + .../japanese/Mplus1p-Regular.drop-hints.25771.ttf | Bin 1096 -> 0 bytes + .../japanese/Mplus1p-Regular.keep-gdef.25771.ttf | Bin 1860 -> 0 bytes + test/subset/data/tests/japanese.tests | 1 - + test/subset/meson.build | 1 - + 8 files changed, 6 insertions(+), 5 deletions(-) -commit eff91bbb4b1e6f4cc8401b1915d5ddad64e053bb -Author: Garret Rieger -Date: Wed Oct 16 16:58:57 2019 -0700 +commit 08428a15c392e2fff267aa3bc92b343f566c983a +Author: Ebrahim Byagowi +Date: Fri Apr 24 23:45:17 2020 +0430 - Add missing pop() for the failure case of script subsetting. + minor, spacing - src/hb-ot-layout-common.hh | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) + src/hb-aat-fdsc-table.hh | 4 +- + src/hb-aat-layout-just-table.hh | 8 +-- + src/hb-aat-layout-opbd-table.hh | 4 +- + src/hb-aat-layout-trak-table.hh | 2 +- + src/hb-ot-cff-common.hh | 3 +- + src/hb-ot-cmap-table.hh | 4 +- + src/hb-ot-hdmx-table.hh | 10 ++-- + src/hb-ot-hhea-table.hh | 61 ++++++++++--------- + src/hb-ot-hmtx-table.hh | 44 +++++++------- + src/hb-ot-kern-table.hh | 37 +++++++----- + src/hb-ot-layout-gsubgpos.hh | 2 +- + src/hb-ot-math-table.hh | 130 ++++++++++++++++++++++------------------ + src/hb-ot-maxp-table.hh | 7 ++- + src/hb-ot-meta-table.hh | 5 +- + src/hb-ot-name-table.hh | 8 +-- + src/hb-ot-post-table.hh | 2 +- + src/hb-ot-stat-table.hh | 14 ++--- + src/hb-ot-var-fvar-table.hh | 6 +- + src/hb-ot-vorg-table.hh | 7 ++- + 19 files changed, 194 insertions(+), 164 deletions(-) + +commit 89ad3c6cc520517af15174391a9725e634929107 +Author: Behdad Esfahbod +Date: Thu Apr 23 10:57:30 2020 -0700 + + Rename add_class to collect_class + + src/hb-ot-layout-common.hh | 10 +++++----- + src/hb-ot-layout-gdef-table.hh | 2 +- + src/hb-ot-layout-gsubgpos.hh | 2 +- + 3 files changed, 7 insertions(+), 7 deletions(-) -commit eab191fd9c851cb7881163ddd5e11a2ebc58cef4 -Author: Garret Rieger -Date: Wed Oct 2 14:28:53 2019 -0700 +commit 5cf53c06e66d3307d7b30ea32059437887abcab1 +Author: Behdad Esfahbod +Date: Thu Apr 23 10:55:41 2020 -0700 - Rewrite hash and == function for hb_array_t as a plain loop. - - Profling showed that the current implementation were accounting for nearly all processing time in some cases. These implementations look to be about 10x faster. + Rename add_coverage to collect_coverage - src/hb-array.hh | 21 +++++++++++---------- - 1 file changed, 11 insertions(+), 10 deletions(-) + src/hb-ot-layout-common.hh | 28 ++++++++++++++-------------- + src/hb-ot-layout-gpos-table.hh | 28 ++++++++++++++-------------- + src/hb-ot-layout-gsub-table.hh | 20 ++++++++++---------- + src/hb-ot-layout-gsubgpos.hh | 30 +++++++++++++++--------------- + 4 files changed, 53 insertions(+), 53 deletions(-) -commit 831daf4c76aed87d229b1edfb59a0a37caa8e581 -Author: Garret Rieger -Date: Tue Oct 1 17:46:27 2019 -0700 +commit 689f3f57fa26922af4f2ab451eb834ae6c3119b2 +Author: Behdad Esfahbod +Date: Thu Apr 23 10:51:12 2020 -0700 - Enforce HB_MAX_LANGSYS limit during layout subsetting. + [set] Add << overload for range-sink - src/hb-ot-layout-common.hh | 68 +++++++++++++-------- - ...ase-minimized-hb-subset-fuzzer-5721073428987904 | Bin 0 -> 349561 bytes - 2 files changed, 41 insertions(+), 27 deletions(-) + src/hb-set.hh | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) -commit 9871461bce9a1557807f69615300e5df4f6ae322 -Author: Garret Rieger -Date: Tue Oct 1 16:29:24 2019 -0700 +commit a7df5a7bdaef870617b6bdb7350a26ebbec5824a +Author: Behdad Esfahbod +Date: Thu Apr 23 10:50:02 2020 -0700 - Enforce HB_MAX_SCRIPTS during subsetting of the script table. + [hashmap] Minor - src/hb-ot-layout-common.hh | 46 +++++++++++++++++++++++++++++++++++++++++----- - 1 file changed, 41 insertions(+), 5 deletions(-) + src/hb-map.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 029775bcbd0a25ee1cdb6c0653a2ce189774490a +commit cc1ed76f381531c800833cb0f5b41fc524ed20a3 +Merge: 5a0936f5 a11db0b9 Author: Behdad Esfahbod -Date: Wed Oct 9 11:00:09 2019 +0700 - - [buffer] Minor; improve HB_NO_BUFFER_MESSAGE +Date: Fri Apr 24 08:15:32 2020 -0700 - src/hb-buffer.cc | 2 ++ - src/hb-buffer.hh | 2 +- - 2 files changed, 3 insertions(+), 1 deletion(-) + Merge pull request #1729 from n8willis/usermanual-integration + + [Docs] Usermanual: Add OS/platform-integration chapter -commit 9a68e6b901967da14a5da5acb535c944794627b8 -Author: Ebrahim Byagowi -Date: Wed Oct 16 13:28:15 2019 +0330 +commit 5a0936f53ef533787a91063c0884275cc121585f +Author: David Corbett +Date: Thu Apr 23 19:09:00 2020 -0400 - [doc] minor - - Addresses https://github.com/harfbuzz/harfbuzz/pull/2013/files#r335196908 + Increase the size of the serialization buffer - src/hb-common.h | 2 +- + util/options.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit b0b8551afc2ff86d027fdb380210601cb465af41 +commit a11db0b9d4d3e7cc22a4a53374d4f8a049ce067e +Merge: 1ed30515 19346524 +Author: Behdad Esfahbod +Date: Thu Apr 23 15:32:43 2020 -0700 + + Merge branch 'master' into usermanual-integration + +commit 19346524c698586c24b0461648b33373092c60df Author: Ebrahim Byagowi -Date: Sat Oct 12 21:12:19 2019 +0330 +Date: Thu Apr 23 14:22:33 2020 +0430 - [glyf] Use range_checker_t in composite_iter_t + minor, add an option to skip private APIs use in main.cc - src/hb-ot-glyf-table.hh | 12 +++++++----- - src/hb-ot-var-gvar-table.hh | 19 +++++++++---------- - 2 files changed, 16 insertions(+), 15 deletions(-) + src/main.cc | 4 ++++ + 1 file changed, 4 insertions(+) -commit 06e35ce052388e7ce079c0250db62428ae0c5bc8 +commit 2e3dfdcd5fe6ebf38872d8fd817a562bfade8c46 Author: Ebrahim Byagowi -Date: Sat Oct 12 15:16:31 2019 +0330 +Date: Thu Apr 23 14:04:24 2020 +0430 - [glyf] minor + [meson] make 'tests' option enabled by default + + Not sure what 'auto' can mean here but it makes my local test to not run properly - src/hb-ot-glyf-table.hh | 128 +++++++++++++++++++++++++----------------------- - 1 file changed, 67 insertions(+), 61 deletions(-) + meson_options.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit d13bb4bd94a6ba8cdd4a03d40d8089a8f8b3a7ec -Author: Ebrahim Byagowi -Date: Sat Oct 12 12:13:57 2019 +0330 +commit 6881939f77e2d89ceba4cb6ed08075b93de6e500 +Author: Hugo Beauzée-Luyssen +Date: Thu Apr 23 10:08:45 2020 +0200 - [glyf] other cleanups + src: meson: Reindent after last changes - src/hb-ot-glyf-table.hh | 338 +++++++++++++++++++++++------------------------- - 1 file changed, 160 insertions(+), 178 deletions(-) + src/meson.build | 162 ++++++++++++++++++++++++++++---------------------------- + 1 file changed, 81 insertions(+), 81 deletions(-) -commit e7aa8c5d22b034f3d7bcf187a63cdec27732fa8a -Author: Ebrahim Byagowi -Date: Sat Oct 12 11:25:32 2019 +0330 +commit e18858c68509e1d4576bb14c7a07a5e9818c50ae +Author: Hugo Beauzée-Luyssen +Date: Thu Apr 23 10:06:20 2020 +0200 - [glyf] Introduce glyf::Glyph, a hb_bytes_t/GlyphHeader pair + src: Don't build tests when they are disabled - src/hb-ot-glyf-table.hh | 177 +++++++++++++++++++++++++----------------------- - 1 file changed, 91 insertions(+), 86 deletions(-) + src/meson.build | 2 ++ + 1 file changed, 2 insertions(+) -commit 546ffc9faf869b4971765e9a4fd232cfe0eecaea +commit 0c65a232fa00a1eb09ca0e9d1d8d26747b27416e Author: Ebrahim Byagowi -Date: Sat Oct 12 09:51:57 2019 +0330 +Date: Thu Apr 23 11:23:54 2020 +0430 - [glyf] minor + minor, add unlikely around lookup_limit_exceeded checks + + addresses https://github.com/harfbuzz/harfbuzz/pull/2294#issuecomment-618022488 - src/hb-ot-glyf-table.hh | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) + src/hb-ot-layout-gsubgpos.hh | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) -commit 4299ea266e03b64db4e8a132983fed9fd0a967ee -Author: Ebrahim Byagowi -Date: Sat Oct 12 09:51:27 2019 +0330 +commit 3e686d24590fc0b30a4bbbf4dc762d6858de8e8f +Author: Evgeniy Reizner +Date: Wed Apr 22 13:44:53 2020 +0300 - [glyf] Move get_contour_points to GlyphHeader + [kern] Refactoring. - src/hb-ot-glyf-table.hh | 260 ++++++++++++++++++++++++++---------------------- - 1 file changed, 141 insertions(+), 119 deletions(-) + src/hb-kern.hh | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) -commit b918cd8c76a6333e43b9be23178afc9e74e17024 -Author: Ben Wagner -Date: Thu Oct 10 15:30:48 2019 -0400 +commit 186976ebd6cefdfe993b5ae400a559ca33c66688 +Author: Behdad Esfahbod +Date: Tue Apr 21 22:37:56 2020 -0700 - Document hb_feature_t. + [autotools] C++11 requirement is mandatory - This documents hb_feature_t. This is motivated mostly by the ambiguity - of the units for 'start' and 'end' (clusters) and whether they are - inclusive or exclusive. This also documents that for lookup type 3 the - value is the one based index into the alternates and that in a list of - features later feature values override previous feature values with the - same tag. + How was this not updated? - src/hb-common.h | 15 +++++++++++++++ - src/hb-shape.cc | 4 +++- - 2 files changed, 18 insertions(+), 1 deletion(-) + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit e637a4b3de2fb8bdbc1b82e822f4a6cc579e794b -Merge: 670fec23 e4464f44 +commit f4cd99f28eefe695b86876736166fd119e22e04e Author: Behdad Esfahbod -Date: Fri Oct 11 10:28:58 2019 +0700 +Date: Wed Apr 22 14:45:57 2020 -0700 - Merge pull request #2012 from harfbuzz/lepcha-oo + Reordering fails when GDEF table is absent #2140 - Reorder U+1C29 LEPCHA VOWEL SIGN OO + Preserve glyph class if there's no GDEF and no guess. + + Fixes https://github.com/harfbuzz/harfbuzz/issues/2140 -commit 670fec231d31bf7417de590efd3485f337a7330f -Author: Ebrahim Byagowi -Date: Thu Oct 10 09:21:08 2019 +0330 + src/hb-ot-layout-gsubgpos.hh | 41 ++++++++++++++++++++++------------------- + src/hb-ot-layout.hh | 8 ++++---- + 2 files changed, 26 insertions(+), 23 deletions(-) - Minor, add a zero length tolerant memset, hb_memset +commit 05be05eb65ed2a5d5d88df55f9e36d005408d66c +Author: Evgeniy Reizner +Date: Wed Apr 22 13:34:51 2020 +0300 - src/hb-algs.hh | 10 +++++++++- - src/hb-buffer.cc | 3 +-- - 2 files changed, 10 insertions(+), 3 deletions(-) + [kern] Test format 3. -commit e4464f4484009b4efe7144570384d836cb6bbac8 -Author: David Corbett -Date: Wed Oct 9 20:55:52 2019 -0400 + test/shaping/data/in-house/tests/macos.tests | 1 + + 1 file changed, 1 insertion(+) - Reorder U+1C29 LEPCHA VOWEL SIGN OO +commit c7afb6d7b83da9f7503a033d289d4bba6af2ae39 +Author: Khaled Hosny +Date: Wed Apr 22 15:18:40 2020 +0200 - src/gen-use-table.py | 3 +++ - src/hb-ot-shape-complex-use-table.cc | 2 +- - 2 files changed, 4 insertions(+), 1 deletion(-) + [docs] Fix broken link -commit e17e7443007fc0debc4a26e5cf37d5d76c747fbf -Author: Garret Rieger -Date: Wed Oct 9 11:45:42 2019 -0700 + src/hb-ot-layout.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) - Convert existing uses of serialize_append in gsub subsetting to use subset_offset_array. +commit bd8aa1b043a6fb9e1d5dce735715ae9530d9ff20 +Author: Behdad Esfahbod +Date: Tue Apr 21 22:19:46 2020 -0700 - src/hb-ot-layout-gsub-table.hh | 44 +++--------------------------------------- - 1 file changed, 3 insertions(+), 41 deletions(-) + Minor -commit 36f18cecbbaf8635a2179a827242ca99d5283666 -Author: Garret Rieger -Date: Mon Oct 7 14:02:31 2019 -0700 + src/hb-null.hh | 4 ++-- + src/hb-shaper.hh | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) - Add subset_offset_array helper function which simplifies subsetting offset arrays during stream operations. +commit b22f61d86a27e1dcbcab5ecdbbff579175dc5aaf +Author: ckitagawa +Date: Tue Apr 21 11:49:05 2020 -0400 - src/hb-ot-layout-common.hh | 54 ++++++++++++++++++++++++++++++++++++++++++ - src/hb-ot-layout-gsub-table.hh | 15 +----------- - 2 files changed, 55 insertions(+), 14 deletions(-) + Fix bug -commit dc45f225212da7b8eca0ddcb3c9cd66e65983605 + src/hb-ot-color-cbdt-table.hh | 7 ++++++- + ...-testcase-minimized-hb-subset-fuzzer-5684014636859392 | Bin 0 -> 7148 bytes + 2 files changed, 6 insertions(+), 1 deletion(-) + +commit 1cd14b40e794721d594553614cf4ece11410a934 Author: Ebrahim Byagowi -Date: Tue Oct 8 23:27:37 2019 +0330 +Date: Tue Apr 21 14:42:17 2020 +0430 - [ot-metrics] Don't use mixed scaled and not scaled for generating extents + minor, update ragel generated hb-number-parser.hh - src/hb-ot-cff1-table.cc | 4 ++-- - src/hb-ot-cff2-table.cc | 4 ++-- - src/hb-ot-color-sbix-table.hh | 7 +++++++ - src/hb-ot-glyf-table.hh | 6 +++--- - test/api/test-ot-extents-cff.c | 6 +++--- - 5 files changed, 17 insertions(+), 10 deletions(-) + src/hb-number-parser.hh | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) -commit b068e25f8f89d9b07963dddd5d5e14f61539556f +commit 6d5e8e5ee49aac1f51a35f67335ee2f633470d76 Author: Ebrahim Byagowi -Date: Tue Oct 8 16:29:15 2019 +0330 +Date: Tue Apr 21 14:38:09 2020 +0430 - [glyf] Address Behdad's reviews + minor - Addresses https://github.com/harfbuzz/harfbuzz/pull/1999#issuecomment-539298559 - * Don't check against Null pool - * Remove cryptic _tt suffix + following to c37100e7d - src/hb-ot-font.cc | 4 ++-- - src/hb-ot-hmtx-table.hh | 16 ++++++++-------- - 2 files changed, 10 insertions(+), 10 deletions(-) + src/hb-number-parser.rl | 2 -- + 1 file changed, 2 deletions(-) -commit 6961766db2c53ea813079c61e4d996234ae8be4f +commit 5b91c52083aee1653c0cf1e778923de00c08fa5d Author: Ebrahim Byagowi -Date: Tue Oct 8 16:26:48 2019 +0330 +Date: Mon Apr 20 21:44:01 2020 +0000 - [glyf] fix scaling direction + [ci] run experimental APIs tests - src/hb-ot-glyf-table.hh | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + .circleci/config.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 0527fda4c75e4354198df79275526d4726a3aacc +commit 750bb73e32f967ce40e29751338e6a64042b5674 Author: Ebrahim Byagowi -Date: Tue Oct 8 16:19:39 2019 +0330 +Date: Tue Apr 21 01:13:13 2020 +0430 - minor + [meson] Add an experimental-api option - src/hb-subset-cff-common.cc | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) + .circleci/config.yml | 4 ++-- + meson.build | 4 ++++ + meson_options.txt | 2 ++ + src/gen-def.py | 2 +- + src/main.cc | 12 ++++++------ + src/meson.build | 8 +++++++- + test/subset/meson.build | 23 ++++++++++++++--------- + 7 files changed, 36 insertions(+), 19 deletions(-) -commit b2628f1a3e3a6875dcdf7cb89f5b10a4ae76e6f9 -Author: Ebrahim Byagowi -Date: Tue Oct 8 15:09:09 2019 +0330 +commit 262eced2adae740de7dd7bcbb4359e892471536b +Author: Behdad Esfahbod +Date: Mon Apr 20 12:17:28 2020 -0700 - [glyf] Move glyph bytes drop hints logic to GlyphHeader + [subset] FeatureVariations subsetting is wrong + + Never drop FeatureVariationRecord for now. + + Fixes https://github.com/harfbuzz/harfbuzz/issues/2334 - src/hb-ot-glyf-table.hh | 92 ++++++++++++++++++++----------------------------- - 1 file changed, 37 insertions(+), 55 deletions(-) + src/hb-ot-layout-common.hh | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) -commit 1fb9c3b6463fdee9eb4dac697beab4d3d7a5fdcf +commit 2a549aadd334b43d37444fed37fdbf8ec673ec14 Author: Ebrahim Byagowi -Date: Tue Oct 8 13:50:16 2019 +0330 +Date: Tue Apr 21 00:32:34 2020 +0430 - [glyf] Implement depth limit for add_gid_and_children + minor - src/hb-ot-glyf-table.hh | 8 +++++--- - 1 file changed, 5 insertions(+), 3 deletions(-) + util/options.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit be0eddd41896824cb093024c2b4929b612ee1fae +commit 2be859d289a9e04199a29bd4b8d393a502ed4791 Author: Ebrahim Byagowi -Date: Tue Oct 8 13:46:55 2019 +0330 +Date: Mon Apr 20 23:48:23 2020 +0430 - [glyf] Move add_gid_and_children to glyf table + minor, replace nullptr checks with implicit ones - src/hb-ot-glyf-table.hh | 14 ++++++++++++++ - src/hb-subset-plan.cc | 19 +------------------ - 2 files changed, 15 insertions(+), 18 deletions(-) + src/hb-blob.cc | 12 ++++++------ + src/hb-cff-interp-common.hh | 6 +++--- + src/hb-cff-interp-cs-common.hh | 4 ++-- + src/hb-cff2-interp-cs.hh | 2 +- + src/hb-directwrite.cc | 2 +- + src/hb-ot-cff-common.hh | 18 ++++++++---------- + src/hb-ot-cff1-table.hh | 26 +++++++++++++------------- + src/hb-ot-cff2-table.hh | 6 +++--- + src/hb-ot-layout.cc | 2 +- + src/hb-ot-os2-unicode-ranges.hh | 3 +-- + src/hb-subset-cff-common.cc | 6 +++--- + src/hb-subset-cff-common.hh | 22 +++++++++++----------- + src/hb-subset-cff1.cc | 28 ++++++++++++++-------------- + src/hb-subset-cff2.cc | 17 ++++++++--------- + src/main.cc | 4 ++-- + src/test-buffer-serialize.cc | 2 +- + util/hb-subset.cc | 4 ++-- + util/options.cc | 10 ++++++---- + 18 files changed, 86 insertions(+), 88 deletions(-) -commit c7621cf21115aa563ee4fb9d2fcb601984848494 +commit 0181f03019ec13031c179727eb2a38c478c05f5c Author: Ebrahim Byagowi -Date: Tue Oct 8 13:24:26 2019 +0330 +Date: Mon Apr 20 17:07:09 2020 +0430 - Minor, replace hb_set_add with private API + [test] Workaround Windows pipe issue by storing ttx in a file - src/hb-ot-map.cc | 2 +- - src/hb-subset-cff-common.hh | 2 +- - src/hb-subset-cff1.cc | 2 +- - src/hb-subset-cff2.cc | 2 +- - src/hb-subset-plan.cc | 10 +++++----- - 5 files changed, 9 insertions(+), 9 deletions(-) + test/subset/run-tests.py | 40 +++++++++++++++++++++++++++++----------- + 1 file changed, 29 insertions(+), 11 deletions(-) -commit ad86806dcb702b25fac6a3364cf0f85e1b8f4b2a +commit 4cfb6cb9649fa58b606154e52bf7bb05d23f3f5b Author: Ebrahim Byagowi -Date: Tue Oct 8 12:14:14 2019 +0330 +Date: Mon Apr 20 16:40:25 2020 +0430 - [glyf] Move subset related methods inside GlyphHeader + [ci] Switch msys2 bot to meson - src/hb-ot-glyf-table.hh | 428 ++++++++++++++++++++++++------------------------ - src/hb-subset-plan.cc | 4 +- - 2 files changed, 214 insertions(+), 218 deletions(-) + appveyor.yml | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) -commit 7839e23558344f206175b5a798149e0f04f38266 +commit 2dda6dd744b192616c65ca4aa5fce8e90fd0ff30 Author: Ebrahim Byagowi -Date: Mon Oct 7 11:14:26 2019 +0330 +Date: Mon Apr 20 14:12:45 2020 +0430 - [glyf] minor + minor, tweak spacing + + turn 8 spaces to tab, add space before Null/Crap - src/hb-ot-glyf-table.hh | 38 +++++++++++++++----------------------- - 1 file changed, 15 insertions(+), 23 deletions(-) + src/hb-aat-layout-ankr-table.hh | 2 +- + src/hb-aat-layout-common.hh | 6 +- + src/hb-aat-layout-morx-table.hh | 6 +- + src/hb-aat-layout.cc | 2 +- + src/hb-aat-map.cc | 10 +-- + src/hb-aat-map.hh | 4 +- + src/hb-blob.cc | 2 +- + src/hb-buffer.cc | 2 +- + src/hb-buffer.h | 2 +- + src/hb-buffer.hh | 4 +- + src/hb-cff-interp-common.hh | 6 +- + src/hb-cff-interp-cs-common.hh | 2 +- + src/hb-cff2-interp-cs.hh | 2 +- + src/hb-draw.hh | 2 +- + src/hb-face.cc | 2 +- + src/hb-font.cc | 2 +- + src/hb-font.hh | 2 +- + src/hb-machinery.hh | 2 +- + src/hb-map.cc | 2 +- + src/hb-map.hh | 4 +- + src/hb-null.hh | 8 +- + src/hb-open-file.hh | 4 +- + src/hb-ot-cff-common.hh | 4 +- + src/hb-ot-cff1-table.hh | 107 ++++++++++++------------ + src/hb-ot-cff2-table.hh | 18 ++--- + src/hb-ot-cmap-table.hh | 34 ++++---- + src/hb-ot-color-cpal-table.hh | 2 +- + src/hb-ot-glyf-table.hh | 4 +- + src/hb-ot-hmtx-table.hh | 2 +- + src/hb-ot-layout-common.hh | 126 ++++++++++++++--------------- + src/hb-ot-layout-gdef-table.hh | 10 +-- + src/hb-ot-layout-gpos-table.hh | 26 +++--- + src/hb-ot-layout-gsubgpos.hh | 70 ++++++++-------- + src/hb-ot-layout.cc | 18 ++--- + src/hb-ot-name-table.hh | 2 +- + src/hb-ot-shape-complex-arabic-fallback.hh | 4 +- + src/hb-ot-shape-complex-arabic.cc | 2 +- + src/hb-ot-var-hvar-table.hh | 4 +- + src/hb-set.cc | 62 +++++++------- + src/hb-set.hh | 24 +++--- + src/hb-shape-plan.cc | 2 +- + src/hb-subset-cff-common.hh | 2 +- + src/hb-subset-cff1.cc | 12 +-- + src/hb-subset-cff2.cc | 6 +- + src/hb-subset.hh | 2 +- + src/hb-unicode.cc | 2 +- + src/hb-vector.hh | 6 +- + src/test-iter.cc | 2 +- + 48 files changed, 316 insertions(+), 315 deletions(-) -commit cbefbb2439c1a2f4c20877e611f8986b3933234e +commit ac26f19c9ea1ff170cd5226470115f7d08860e02 Author: Ebrahim Byagowi -Date: Mon Oct 7 10:15:18 2019 +0330 +Date: Sun Apr 19 22:25:14 2020 +0430 - [glyf] Move padding removal logic to GlyphHeader + Refactor test/api/meson.build and always run test-unicode test - src/hb-ot-glyf-table.hh | 219 +++++++++++++++++++++++------------------------- - 1 file changed, 105 insertions(+), 114 deletions(-) + test/api/meson.build | 39 ++++++++++----------------------------- + 1 file changed, 10 insertions(+), 29 deletions(-) -commit 1ab8f9aa7a182fa078f6c6a5a78ef95686b1ac54 +commit 0133cb55e2d76c81ccfeef3baf4c46e31297665c Author: Ebrahim Byagowi -Date: Mon Oct 7 08:24:12 2019 +0330 +Date: Sun Apr 19 22:42:57 2020 +0430 - [glyf] minor + Minor, use hb_sorted_array::bsearch where possible - src/hb-ot-glyf-table.hh | 15 +++++++++------ - 1 file changed, 9 insertions(+), 6 deletions(-) + src/hb-aat-layout.cc | 2 +- + src/hb-ot-cff1-table.cc | 4 ++-- + src/hb-ot-os2-unicode-ranges.hh | 7 +++---- + 3 files changed, 6 insertions(+), 7 deletions(-) -commit 13fb5612ad545b419ca217f031864dde1b71c43f -Author: Ebrahim Byagowi -Date: Sun Oct 6 23:24:06 2019 +0330 +commit 1ed30515cb6308f1cf651cd502012ee5c8bd24ef +Author: n8willis +Date: Sun Apr 19 15:38:52 2020 +0100 - [glyf] Aggregate get_offsets uses + [Docs, usernmanual] Fix with-icu=builtin explanation - src/hb-ot-glyf-table.hh | 29 +++++++---------------------- - 1 file changed, 7 insertions(+), 22 deletions(-) + docs/usermanual-integration.xml | 14 +++++++++----- + 1 file changed, 9 insertions(+), 5 deletions(-) -commit 5179b96958f2db71c315c1d8c224bab87e2f4ae8 -Author: Ebrahim Byagowi -Date: Tue Oct 8 11:09:12 2019 +0330 +commit d6edd9a4083f523b6290ba29c1fcbb5a6b7f96bb +Author: n8willis +Date: Sun Apr 19 15:26:28 2020 +0100 - [cff] minor on number_t + [Docs, usermanual] Reword hb_ft_font_create_referenced explanation - src/hb-cff-interp-common.hh | 11 ++++------- - 1 file changed, 4 insertions(+), 7 deletions(-) + docs/usermanual-integration.xml | 29 +++++++++++++++++++---------- + 1 file changed, 19 insertions(+), 10 deletions(-) -commit d73cdcf3612ae6114a0f828e0f667d447ed1a964 -Author: Ebrahim Byagowi -Date: Sun Oct 6 18:09:14 2019 +0330 +commit fb3acdbcb645f30671db0776577652d7545d21ed +Author: Christoph Reiter +Date: Sun Apr 19 14:57:04 2020 +0200 - [ot-font] Apply font scaling before turning to int + meson: only install gobject/icu headers if the features are enabled - src/hb-ot-cff1-table.cc | 12 ++++----- - src/hb-ot-cff1-table.hh | 2 +- - src/hb-ot-cff2-table.cc | 8 +++--- - src/hb-ot-color-cbdt-table.hh | 14 +++++----- - src/hb-ot-color-sbix-table.hh | 8 +++--- - src/hb-ot-font.cc | 12 +++------ - src/hb-ot-glyf-table.hh | 58 ++++++++++++++++++++---------------------- - src/hb-ot-hmtx-table.hh | 2 +- - src/hb-ot-var-hvar-table.hh | 5 ++-- - test/api/test-ot-extents-cff.c | 20 +++++++-------- - 10 files changed, 66 insertions(+), 75 deletions(-) + src/meson.build | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) -commit f2339964b713815c8e0e33699bf34ee24db12215 -Author: Ebrahim Byagowi -Date: Sun Oct 6 16:41:52 2019 +0330 +commit ad5dcda0b5a7fe3acb09615c0ba020927cca5cee +Author: Christoph Reiter +Date: Sun Apr 19 14:53:05 2020 +0200 - [glyf] minor, remove GlyphHeader::simple_* helpers + meson: install hb-icu.h header - src/hb-ot-glyf-table.hh | 16 +++------------- - 1 file changed, 3 insertions(+), 13 deletions(-) + src/meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 2d7ca6a76a754a42ec09a66319ac3e4ab5efc618 -Author: Ebrahim Byagowi -Date: Sun Oct 6 16:31:29 2019 +0330 +commit 2cc85281c2cc4169b972e9c5d951ddfcded6ddde +Author: Behdad Esfahbod +Date: Sat Apr 18 16:29:32 2020 -0700 - [glyf] Move get_instruction_length inside GlyphHeader struct + [serializer] Make snapshot()/revert() revert current object links + + Fixes https://github.com/harfbuzz/harfbuzz/issues/2325 - src/hb-ot-glyf-table.hh | 153 ++++++++++++++++++++++++++---------------------- - 1 file changed, 84 insertions(+), 69 deletions(-) + src/hb-serialize.hh | 38 +++++++++++++++++++++++++------------- + 1 file changed, 25 insertions(+), 13 deletions(-) -commit 50aef4d7f80b6c8a19481ad3d0fa89c7c7f222c2 -Author: Ebrahim Byagowi -Date: Sun Oct 6 14:00:07 2019 +0330 +commit 6f6e78a26ecdd874403b7fe397e335f386ac02e7 +Author: Behdad Esfahbod +Date: Sat Apr 18 16:12:18 2020 -0700 - [glyf] cleanup + Fix float-to-double warnings + + ./hb-ot-glyf-table.hh:978:37: warning: implicit conversion increases floating-point precision: 'float' to 'double' [-Wdouble-promotion] - src/hb-ot-glyf-table.hh | 128 +++++++++++++++++++++--------------------------- - 1 file changed, 55 insertions(+), 73 deletions(-) + src/hb-ot-glyf-table.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit ee3f4630d70099c42fd9c84796b29a236f6135b6 -Author: Ebrahim Byagowi -Date: Sun Oct 6 13:56:35 2019 +0330 +commit c37100e7d9a1bcce35c9db651f404a1a87c8a1a1 +Author: Behdad Esfahbod +Date: Sat Apr 18 16:02:55 2020 -0700 - [glyf] Remove get_composite_iter and refactor bytes_for_glyph for shape uses + Clean up math.h and float.h includes - src/hb-ot-glyf-table.hh | 42 ++++++++++++++++-------------------------- - src/hb-subset-plan.cc | 2 +- - 2 files changed, 17 insertions(+), 27 deletions(-) + src/hb-cff-interp-dict-common.hh | 2 -- + src/hb-number-parser.hh | 2 -- + src/hb-ot-glyf-table.hh | 2 -- + src/hb.hh | 1 + + 4 files changed, 1 insertion(+), 6 deletions(-) -commit 8378ab96e28fa34f154583850ff1c2c672a4310d +commit c6b3f73b098225728d36448e15499473ff9419b8 Author: Ebrahim Byagowi -Date: Sun Oct 6 13:49:45 2019 +0330 +Date: Sun Apr 19 00:54:24 2020 +0430 - [glyf] Rewrite composite iterator to new iterators convention + [meson] Make harfbuzz-icu separate module optout-able - src/hb-ot-glyf-table.hh | 201 ++++++++++++++++++++---------------------------- - src/hb-subset-plan.cc | 10 +-- - 2 files changed, 85 insertions(+), 126 deletions(-) + meson.build | 3 +++ + meson_options.txt | 2 ++ + src/meson.build | 13 ++++++++++--- + test/api/meson.build | 2 +- + 4 files changed, 16 insertions(+), 4 deletions(-) -commit b7684fa9f42dffa6bd81acfade163123b30800b8 -Merge: 79ec65ae 21c80d95 -Author: Ebrahim Byagowi -Date: Sun Oct 6 09:00:48 2019 +0330 +commit 8ae06c9489f132844cbede80b5fe8241ce47fc0e +Author: Christoph Reiter +Date: Sat Apr 18 20:22:45 2020 +0200 - Merge pull request #1999 from ebraminio/glyf-var + meson: build a separate library for harfbuzz-icu - Implement gvar table and variable glyf - -commit 21c80d955f69c1242c77e0ec7ccd852360dd54dd -Author: Ebrahim Byagowi -Date: Sat Oct 5 23:58:52 2019 +0330 - - [gvar] minor + This adds a seperate library like with autotools. + + This also fixes the ico feature option which was just set to required:false + when disabled instead of really disabling it. + Disabling is still broken with msvc because it then tries to find the library + another way, but that's broken for all other deps as well so I left it as is. + + For tests only test-unicode.c is using icu specific functions so split it out + into its own category which depends on harfbuzz-icu. + + Fixes #2338 - src/hb-ot-var-gvar-table.hh | 43 +++++++++++++++++++++---------------------- - 1 file changed, 21 insertions(+), 22 deletions(-) + meson.build | 7 +++++-- + src/meson.build | 33 +++++++++++++++++++++++++++------ + test/api/meson.build | 16 +++++++++++++++- + 3 files changed, 47 insertions(+), 9 deletions(-) -commit 5752863640cf4292dec313edebb57aecd47496f3 -Author: Ebrahim Byagowi -Date: Sat Oct 5 23:51:50 2019 +0330 +commit 2354a90008043b0679e46c09165a9e53e47d39ab +Author: Christoph Reiter +Date: Sat Apr 18 20:28:25 2020 +0200 - [glyf][gvar] Make HB_NO_VAR buildable + tests: fix subset/run-tests.py under Windows + + It assumed that stdout of a subprocess in binary mode was using + utf-8 which isn't the case. Instead open stdout of the subprocess + in text mode and let Python handle the decoding. - src/hb-ot-font.cc | 2 ++ - src/hb-ot-glyf-table.hh | 6 ++++++ - src/hb-ot-hmtx-table.hh | 8 ++++++++ - 3 files changed, 16 insertions(+) + test/subset/run-tests.py | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) -commit 8e33510343d151afe49730f3a0b263a2853822b8 -Author: Ebrahim Byagowi -Date: Fri Oct 4 01:11:03 2019 +0330 +commit c1228990b9693226d8d14740414e4e93597f4a0f +Author: Christoph Reiter +Date: Sat Apr 18 15:29:56 2020 +0200 - [gvar] minor + autotools: Add fix_get_types.py to EXTRA_DIST + + So it ends up in the release tarball and can be used in the meson build. + + Fixes #2337 - src/hb-ot-var-gvar-table.hh | 132 ++++++++++++++++++++++---------------------- - 1 file changed, 66 insertions(+), 66 deletions(-) + src/Makefile.am | 1 + + 1 file changed, 1 insertion(+) -commit b3afa8164460d63031a80d399200bcaa769c0fa1 -Author: Ebrahim Byagowi -Date: Fri Oct 4 00:32:04 2019 +0330 +commit dced2fbee97a4f8af9572076306d3b2e6476640e +Author: Christoph Reiter +Date: Sat Apr 18 14:37:03 2020 +0200 - [glyf] Use common convention of other tables access, format + meson: complete introspection build config + + Pass the same config to gobject-introspection as with cmake/autotools. + + This makes sure the c-include and package name is included in the gir + and also fixes the build because of the missing HB_AAT_H* defines. + + Fixes #2336 - src/hb-ot-face-table-list.hh | 1 + - src/hb-ot-glyf-table.hh | 65 +++++++++++++++++++------------------------- - 2 files changed, 29 insertions(+), 37 deletions(-) + src/meson.build | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) -commit 88bd342c0ff686daad88bb6b4f2968bbd8b01a24 -Author: Ebrahim Byagowi -Date: Thu Oct 3 22:45:37 2019 +0330 +commit 22f7c61acf8073cb8db8db47e92aef18864a85c6 +Author: ariza +Date: Fri Apr 17 23:49:51 2020 -0700 - [glyf] minor + implement SID to glyph ID mapping with predefined Charset + Also fixes oss-fuzz 21769 - src/hb-ot-glyf-table.hh | 247 +++++++++++++++++++++++--------------------- - src/hb-ot-var-gvar-table.hh | 54 +++++----- - 2 files changed, 155 insertions(+), 146 deletions(-) + src/hb-ot-cff1-table.cc | 99 +++++++++++++++++++++ + src/hb-ot-cff1-table.hh | 29 +++++- + test/api/test-ot-glyphname.c | 15 ++++ + ...case-minimized-hb-shape-fuzzer-5769590820044800 | Bin 0 -> 87807 bytes + 4 files changed, 142 insertions(+), 1 deletion(-) -commit ee7610181cee5bbc0b5dc291228fbe032097bde4 +commit f9bc373381ddf8553f943b774596ae5a53bf2641 Author: Ebrahim Byagowi -Date: Thu Oct 3 15:59:45 2019 +0330 +Date: Fri Apr 17 22:37:48 2020 +0430 - [hmtx] Use more conventional internal API style + 2.6.5 - src/Makefile.sources | 1 - - src/harfbuzz.cc | 1 - - src/hb-ot-font.cc | 12 ++++++++++++ - src/hb-ot-hmtx-table.cc | 42 ------------------------------------------ - src/hb-ot-hmtx-table.hh | 18 ++++++++++-------- - 5 files changed, 22 insertions(+), 52 deletions(-) + NEWS | 13 +++++++++++++ + configure.ac | 2 +- + meson.build | 2 +- + src/hb-ft.cc | 4 ++-- + src/hb-version.h | 4 ++-- + 5 files changed, 19 insertions(+), 6 deletions(-) -commit c9577a630fd5bd08482ee7b94bc03c91fcf366c7 +commit a8455292f4fc44ffee5a4efae04cd94195696908 Author: Ebrahim Byagowi -Date: Thu Oct 3 15:48:35 2019 +0330 +Date: Fri Apr 17 22:50:48 2020 +0430 - [hmtx] Use more optimal way to access glyf table + [layout] minor on doc - src/hb-ot-hmtx-table.cc | 20 ++++---------------- - src/hb-ot-hmtx-table.hh | 4 ++-- - 2 files changed, 6 insertions(+), 18 deletions(-) + src/hb-ot-layout.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit b9ff43c162e8f61cff8e48d3dcbf7c1fe263d625 -Author: Michiharu Ariza -Date: Tue Oct 1 16:13:40 2019 +0330 +commit fefaa8c835cf42f3ee5327a927aac62a10165019 +Author: Ebrahim Byagowi +Date: Fri Apr 17 22:28:09 2020 +0430 - Implement gvar table and variable glyf + [test] define G_APPROX_VALUE and EPSILON only when used - Split from Ariza's "[subset] TrueType/CFF2 variable font" work on #1594 + resolves -Weverything bot complain - src/Makefile.sources | 2 + - src/harfbuzz.cc | 1 + - src/hb-ot-font.cc | 4 +- - src/hb-ot-glyf-table.hh | 618 ++++++++++++++--- - src/hb-ot-hmtx-table.cc | 54 ++ - src/hb-ot-hmtx-table.hh | 33 +- - src/hb-ot-var-gvar-table.hh | 734 +++++++++++++++++++++ - test/api/Makefile.am | 1 + - .../SourceSansVariable-Roman-nohvar-41,C1.ttf | Bin 0 -> 4696 bytes - test/api/fonts/SourceSansVariable-Roman.anchor.ttf | Bin 0 -> 4708 bytes - .../api/fonts/SourceSansVariable-Roman.modcomp.ttf | Bin 0 -> 3252 bytes - .../fonts/SourceSerifVariable-Roman-VVAR.abc.ttf | Bin 0 -> 5632 bytes - test/api/test-ot-metrics-tt-var.c | 250 +++++++ - 13 files changed, 1588 insertions(+), 109 deletions(-) + test/api/test-var-coords.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) -commit 79ec65ae10f959aeddaa1e39eba5226c604a8c87 +commit 29c903223b31c30ad609a23c75a98231674c3a73 Author: Ebrahim Byagowi -Date: Thu Oct 3 14:27:51 2019 +0330 +Date: Fri Apr 17 22:11:40 2020 +0430 - [ot-font] Use var vmtx side bearing in calculating v-origin + Move hb_ot_layout_closure_{features,lookups} behind EXPERIMENTAL flag - src/hb-ot-font.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/gen-def.py | 4 +++- + src/hb-ot-layout.cc | 2 ++ + src/hb-ot-layout.h | 2 ++ + src/hb-subset-plan.cc | 6 ++++++ + test/api/test-ot-face.c | 4 ++++ + test/api/test-subset-gpos.c | 4 ++++ + test/subset/data/Makefile.sources | 13 ++++++++----- + test/subset/meson.build | 18 +++++++++--------- + 8 files changed, 38 insertions(+), 15 deletions(-) -commit 3fd555be543a3e9bf9fee509327dbbc9a7b51cdb +commit 9b7fb5c23fb7b333e0e81b8c82160aac4a21b27e Author: Ebrahim Byagowi -Date: Thu Oct 3 13:02:41 2019 +0330 +Date: Fri Apr 17 20:12:24 2020 +0430 - [hmtx] Prepare to fix and minor fixes + Move hb_font_get_var_coords_design behind HB_EXPERIMENTAL_API - src/hb-ot-hmtx-table.hh | 41 ++++++++++++++++------------------------- - src/hb-ot-var-hvar-table.hh | 9 +++++---- - 2 files changed, 21 insertions(+), 29 deletions(-) + src/gen-def.py | 3 ++- + src/hb-font.cc | 4 +++- + src/hb-font.h | 2 ++ + test/api/test-var-coords.c | 2 ++ + 4 files changed, 9 insertions(+), 2 deletions(-) -commit 6d09b5a8a0f6ed7a2a92d91ac3d027bd54c452be -Author: Michiharu Ariza -Date: Thu Oct 3 12:01:39 2019 +0330 +commit 41c671e701e13bdd4a196030b74172fe1c6b7ccf +Author: Behdad Esfahbod +Date: Fri Apr 17 08:37:25 2020 -0700 - Implement hmtx/vmtx metrics read from hvar/vvar + [build] Adjust check-symbols for -flto + + Fixes https://github.com/harfbuzz/harfbuzz/issues/2328 - src/hb-ot-hmtx-table.hh | 46 ++++++++++++++++++++++++++++++++++++++++----- - src/hb-ot-var-hvar-table.hh | 19 +++++++++++++------ - 2 files changed, 54 insertions(+), 11 deletions(-) + src/check-symbols.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit cfafee52e4ff0441a33530847533f1b1f6019006 -Author: Ebrahim Byagowi -Date: Wed Oct 2 09:22:46 2019 +0330 +commit e7d5fa4a5891a4fb4c4a5d8ba0a05540c4358a33 +Author: n8willis +Date: Fri Apr 17 15:54:40 2020 +0100 - Add Repology badges by @luzpaz + [Usermanual, utilities] - correct DocBook tags - fixes #2002 - to track downstream packaging of harfbuzz + Changes stray DocBook tags on this page to . No instances found in the other docs. - README.md | 9 +++++++++ - 1 file changed, 9 insertions(+) + docs/usermanual-utilities.xml | 28 ++++++++++++++-------------- + 1 file changed, 14 insertions(+), 14 deletions(-) -commit 2d7221a0e3552b1d902629d4ab6c0ce22db983a6 +commit 8f6d0f8401ffd011332981fd9ba6d38d18b6cf3b Author: Ebrahim Byagowi -Date: Tue Oct 1 15:05:02 2019 +0330 +Date: Fri Apr 17 11:30:27 2020 +0430 - [cff] minor + [os2] minor, fix font_page_t enum naming + + As https://github.com/harfbuzz/harfbuzz/pull/986#pullrequestreview-395052800 - src/hb-ot-cff-common.hh | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) + src/hb-ot-os2-table.hh | 17 +++++++++-------- + 1 file changed, 9 insertions(+), 8 deletions(-) -commit 0558413f27e9a18188c0e3d55f5ee57ea42b1548 +commit 818f109bdec9659c05f9fd9a1de1db85ece65cbe Author: Ebrahim Byagowi -Date: Tue Oct 1 13:49:55 2019 +0330 +Date: Thu Apr 16 21:25:32 2020 +0430 - Minor, tweak spaces + Use float in avar calculation instead ints and checking their overflows - src/hb-aat-layout-kerx-table.hh | 4 ++-- - src/hb-array.hh | 4 ++-- - src/hb-buffer.hh | 3 +-- - src/hb-font.h | 4 ++-- - src/hb-font.hh | 8 ++++---- - src/hb-open-file.hh | 2 +- - src/hb-open-type.hh | 10 +++++----- - src/hb-ot-cff-common.hh | 4 ++-- - src/hb-ot-cff1-table.cc | 11 +++++------ - src/hb-ot-cff1-table.hh | 24 ++++++++++++------------ - src/hb-ot-cff2-table.cc | 4 ++-- - src/hb-ot-cmap-table.hh | 6 ++---- - src/hb-ot-color-cbdt-table.hh | 2 +- - src/hb-ot-color-cpal-table.hh | 2 +- - src/hb-ot-kern-table.hh | 12 ++++++------ - src/hb-ot-layout-common.hh | 2 +- - src/hb-ot-layout-gpos-table.hh | 14 +++++++------- - src/hb-ot-os2-table.hh | 4 ++-- - src/hb-ot-shape-complex-myanmar.cc | 4 ++-- - src/hb-subset-cff-common.hh | 2 +- - src/hb-unicode.cc | 8 ++++---- - src/hb-unicode.h | 20 ++++++++++---------- - src/hb-vector.hh | 4 ++-- - src/main.cc | 37 +++++++++++++++++++++++-------------- - src/test-iter.cc | 2 +- - 25 files changed, 101 insertions(+), 96 deletions(-) + src/hb-algs.hh | 12 ------------ + src/hb-ot-var-avar-table.hh | 9 ++------- + src/hb.hh | 4 ---- + 3 files changed, 2 insertions(+), 23 deletions(-) -commit 51b720f686adf45bc1b6db3aa76b7d2e62ad1304 +commit 9ffa50fe5dfeb7e999a178e031d7092121e0c146 Author: Ebrahim Byagowi -Date: Tue Oct 1 12:06:22 2019 +0330 +Date: Thu Apr 16 21:25:32 2020 +0430 - Fix -Wsizeof-array-div clang warning + Add an appropriate fallback to hb_int_mul_overflows - src/hb-ot-shape-complex-arabic-fallback.hh | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/hb-algs.hh | 15 ++++++++------- + src/hb-ot-var-avar-table.hh | 6 +++--- + src/hb.hh | 4 ++++ + 3 files changed, 15 insertions(+), 10 deletions(-) -commit faace9437ea09d89ef5f5f9c9fc3ce0dbc672142 -Merge: e48ef080 f0dd724c -Author: Behdad Esfahbod -Date: Mon Sep 30 13:34:05 2019 -0700 +commit 32f431406e602e977bde17e335a4ad086064494e +Author: Ebrahim Byagowi +Date: Thu Apr 16 22:07:07 2020 +0430 - Merge pull request #1807 from harfbuzz/subset-varstore + [docs] minor - VariationStore serializer + Fixes https://github.com/harfbuzz/harfbuzz/issues/2321 -commit e48ef0804ad7e4abd35ff3646fa6ed10ad32f1ef -Author: Behdad Esfahbod -Date: Mon Sep 30 12:39:06 2019 -0700 + docs/usermanual-buffers-language-script-and-direction.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) - 2.6.2 +commit a5e5a79004c5ebdef52ab282c7772ab0d9cf354b +Author: Ebrahim Byagowi +Date: Thu Apr 16 01:38:43 2020 +0430 - NEWS | 6 ++++++ - configure.ac | 2 +- - src/hb-version.h | 4 ++-- - 3 files changed, 9 insertions(+), 3 deletions(-) + [tests] Enable the just added macOS test for older version + + The test is added in 7035c9cd but the same font is available in older versions of macOS + so let's run it in older versions also. + + It doesn't matter much, more for consistency reasons. -commit d6ad613159aabce42fc21d57f6f1a4762c5617bf -Author: Behdad Esfahbod -Date: Tue Sep 10 15:31:44 2019 -0700 + test/shaping/data/in-house/tests/macos.tests | 3 +++ + 1 file changed, 3 insertions(+) - [docs] Misc fixes +commit 7035c9cdfe38dd6654bd9b71e3bb5cbf49e4014d +Author: Jonathan Kew +Date: Fri Apr 3 19:00:42 2020 +0100 - docs/harfbuzz-sections.txt | 4 ++-- - src/hb-gdi.cc | 2 +- - src/hb-ot-layout.cc | 2 +- - 3 files changed, 4 insertions(+), 4 deletions(-) + Add test for #2290. + + This tests that we can set two separate Type=Ligature selectors at the same time, + common=off + discretionary=on. -commit 2dce85ed06a8cc7ca20900c65662af659c53e717 -Author: Ebrahim Byagowi -Date: Thu Sep 26 21:15:59 2019 +0330 + test/shaping/data/in-house/tests/macos.tests | 1 + + 1 file changed, 1 insertion(+) - [icu] Remove HB_ICU_STMT (#1993) +commit 573b6bf82692c5fdd54d55a512405f7f75556362 +Author: Jonathan Kew +Date: Mon Mar 30 23:20:30 2020 +0100 + + Handle non-exclusive features when mapping OpenType tags to AAT feature type/selector pairs. - And ignore extra semicolon error to ICU versions < 65 + Fixes #2290. - src/hb-icu.cc | 43 ++++++++++++++++++++++++------------------- - 1 file changed, 24 insertions(+), 19 deletions(-) + src/hb-aat-layout-feat-table.hh | 2 ++ + src/hb-aat-layout-morx-table.hh | 6 ++++-- + src/hb-aat-map.cc | 15 ++++++++++++--- + src/hb-aat-map.hh | 13 +++++++++---- + 4 files changed, 27 insertions(+), 9 deletions(-) -commit d6a83abd6a0c684bd9a27f593d5be388819022b7 -Author: Iceflower -Date: Thu Sep 26 11:42:11 2019 +0200 +commit b57b9042420538f998cc0941407be8059b6e7562 +Author: n8willis +Date: Wed Apr 15 18:46:31 2020 +0100 - Define HB_UNUSED for clang + Add detail to hb_ft_font_create inline comments + + Providing lengthier explanation for how the destroy function works on the hb_font_t but that destroying the FT_Face (and not destroying it too early) remains the client's responsibility. - src/hb.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ft.cc | 6 ++++++ + 1 file changed, 6 insertions(+) -commit c4567968cd175dc367ab951c9e3141ab5c03c2d6 -Author: Iceflower -Date: Thu Sep 26 11:35:27 2019 +0200 +commit 1bca2be256ce1c2c4d74efac2286db80dbfa5c48 +Author: n8willis +Date: Wed Apr 15 18:30:47 2020 +0100 - [dwrite] Fix extra semicolon issue + Rewrite hb_ft_font_set_funcs inline explanation - src/hb-directwrite.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ft.cc | 13 +++++++++++-- + 1 file changed, 11 insertions(+), 2 deletions(-) -commit b0c3eb06b64dcfcfee09a25dde8250804484f77d -Author: Qunxin Liu -Date: Wed Sep 18 16:11:44 2019 -0700 +commit 80c01d768734faafe5701414bd63c63cd243a404 +Author: n8willis +Date: Wed Apr 15 18:08:55 2020 +0100 - [subset] GPOS Lookup Type 3: CursivePos + Update hb-ft.cc - src/hb-ot-layout-common.hh | 33 ++++++++ - src/hb-ot-layout-gpos-table.hh | 87 ++++++++++++++++++++- - test/subset/data/Makefile.am | 1 + - test/subset/data/Makefile.sources | 1 + - .../gpos3_font3.keep-layout-retain-gids.28,29.otf | Bin 0 -> 1712 bytes - .../gpos3_font3.keep-layout-retain-gids.28,2B.otf | Bin 0 -> 1860 bytes - .../gpos3_font3.keep-layout-retain-gids.29,2B.otf | Bin 0 -> 1772 bytes - ...eep-layout-retain-gids.retain-all-codepoint.otf | Bin 0 -> 3692 bytes - .../layout.gpos3/gpos3_font3.keep-layout.28,29.otf | Bin 0 -> 1328 bytes - .../layout.gpos3/gpos3_font3.keep-layout.28,2B.otf | Bin 0 -> 1456 bytes - .../layout.gpos3/gpos3_font3.keep-layout.29,2B.otf | Bin 0 -> 1368 bytes - ...pos3_font3.keep-layout.retain-all-codepoint.otf | Bin 0 -> 3692 bytes - test/subset/data/fonts/gpos3_font3.otf | Bin 0 -> 4624 bytes - test/subset/data/tests/layout.gpos3.tests | 12 +++ - 14 files changed, 132 insertions(+), 2 deletions(-) + src/hb-ft.cc | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) -commit 68d39ea4866a9d2bae60107619aad25dac6da241 -Author: Ebrahim Byagowi -Date: Tue Sep 24 13:52:46 2019 +0330 +commit 9457b60edc6f3c7b3b4ccf7460d4569c072bc98e +Author: n8willis +Date: Mon Apr 13 17:01:15 2020 +0100 - Revert previous change and fix -Wrange-loop-analysis complains + Update usermanual-integration.xml - src/hb-ot-layout-gpos-table.hh | 6 +++--- - src/hb-ot-vorg-table.hh | 2 +- - 2 files changed, 4 insertions(+), 4 deletions(-) + docs/usermanual-integration.xml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit cbc0646a6cfc0f6a04804d6888636f12130cd51b -Author: Ebrahim Byagowi -Date: Tue Sep 24 12:08:12 2019 +0330 +commit 05b7bdb4dd57d1bf233379e0f4ae5ec6451113d7 +Author: n8willis +Date: Mon Apr 13 16:59:41 2020 +0100 - Minor, normalize for each calls + Update usermanual-integration.xml - src/hb-ot-glyf-table.hh | 5 +---- - src/hb-ot-layout-gpos-table.hh | 10 +++++----- - src/hb-ot-name-table.hh | 3 +-- - src/hb-ot-vorg-table.hh | 3 +-- - 4 files changed, 8 insertions(+), 13 deletions(-) + docs/usermanual-integration.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 22b6c6a5c7b9bebe123822c702b9661e144ebd6b -Author: Ebrahim Byagowi -Date: Tue Sep 24 12:06:28 2019 +0330 +commit f782d736cefa7808ef31712bcc6a51cfa2d02826 +Author: n8willis +Date: Mon Apr 13 16:57:36 2020 +0100 - [serialize] use for each as #resolve_links, format + Update usermanual-integration.xml - src/hb-serialize.hh | 22 +++++++--------------- - 1 file changed, 7 insertions(+), 15 deletions(-) + docs/usermanual-integration.xml | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) -commit 512551f27600adac875de3381533b52d78f6b22d -Author: Qunxin Liu <48925186+qxliu76@users.noreply.github.com> -Date: Mon Sep 23 17:28:16 2019 -0700 +commit 17b60efc38fbc32953424fa9a21daf3738ff8935 +Author: n8willis +Date: Mon Apr 13 16:51:58 2020 +0100 - memory leak fix in serializer (#1988) + Update docs/usermanual-integration.xml + + Co-Authored-By: Khaled Hosny - src/hb-serialize.hh | 1 + - 1 file changed, 1 insertion(+) + docs/usermanual-integration.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit f0a7677993e51ba4076a0f9a0e7d032d99917d34 -Author: Ebrahim Byagowi -Date: Mon Sep 23 21:09:39 2019 +0330 +commit 9b91669cb4e92281f155e4b1b1cef26ba562e786 +Author: n8willis +Date: Mon Apr 13 16:40:15 2020 +0100 - [gpos] minor + Update hb-ft.cc - src/hb-ot-layout-gpos-table.hh | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) + src/hb-ft.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 035ec3d1b46b8e60bea3aa8dcf29cf47a5a42d57 -Author: Ebrahim Byagowi -Date: Mon Sep 23 20:51:43 2019 +0330 +commit 3a47921e88ad20873e08e19dff22205ecdf48f98 +Author: n8willis +Date: Mon Apr 13 15:42:00 2020 +0100 - [cmap] remove has_format14, minor format - - fixes #1986 + Update usermanual-integration.xml - src/hb-ot-cmap-table.hh | 9 ++++----- - 1 file changed, 4 insertions(+), 5 deletions(-) + docs/usermanual-integration.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit c1a585fab0c17fe47b0728cf67920791c2173019 -Author: Ebrahim Byagowi -Date: Sat Sep 21 23:30:52 2019 +0430 +commit a29578c17a10f409db651ed55f20ca3eb20953ae +Author: n8willis +Date: Mon Apr 13 15:30:18 2020 +0100 - [gpos] minor + Update usermanual-integration.xml - src/hb-ot-layout-gpos-table.hh | 22 +++++++--------------- - 1 file changed, 7 insertions(+), 15 deletions(-) + docs/usermanual-integration.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit d87d38998a4ff7bec3d8fb658dc9299f144a2fcb -Author: Ebrahim Byagowi -Date: Sat Sep 21 17:27:39 2019 +0430 +commit c241e82f00dad423bf1d15cc8e365224fb7a8575 +Author: n8willis +Date: Mon Apr 13 15:28:42 2020 +0100 - Fix clang -Wrange-loop-analysis complains - - ./hb-ot-layout-gpos-table.hh:674:43: error: loop variable '_' is always a copy because the range of type 'hb_zip_iter_t > &>, hb_iter_type > &> >' (aka 'hb_zip_iter_t >, hb_array_t > >') does not return a reference [-Werror,-Wrange-loop-analysis] - for (const hb_pair_t& _ : hb_zip (val_iter, first_val_iter)) - ^ - ./hb-ot-layout-gpos-table.hh:674:12: note: use non-reference type 'hb_pair_t' (aka 'hb_pair_t, IntType >') - for (const hb_pair_t& _ : hb_zip (val_iter, first_val_iter)) + Update docs/usermanual-integration.xml - and - - In file included from hb-subset.cc:44: - ./hb-ot-vorg-table.hh:87:34: error: loop variable '_' is always a copy because the range of type 'hb_map_iter_t, const hb_set_t *, OT::HBGlyphID OT::VertOriginMetric::*, nullptr>, (lambda at ./hb-ot-vorg-table.hh:100:15), hb_function_sortedness_t::NOT_SORTED, nullptr>' does not return a reference [-Werror,-Wrange-loop-analysis] - for (const VertOriginMetric& _ : it) - ^ - ./hb-ot-vorg-table.hh:113:17: note: in instantiation of function template specialization 'OT::VORG::serialize, const hb_set_t *, OT::HBGlyphID OT::VertOriginMetric::*, nullptr>, (lambda at ./hb-ot-vorg-table.hh:100:15), hb_function_sortedness_t::NOT_SORTED, nullptr>, nullptr>' requested here - vorg_prime->serialize (c->serializer, it, defaultVertOriginY); - ^ - ./hb-ot-vorg-table.hh:87:10: note: use non-reference type 'OT::VertOriginMetric' - for (const VertOriginMetric& _ : it) - ^~~~~~~~~~~~~~~~~~~~~~~~~~~ + Co-Authored-By: Khaled Hosny - src/hb-ot-layout-gpos-table.hh | 2 +- - src/hb-ot-vorg-table.hh | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) + docs/usermanual-integration.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 6e42a418c8fe4231c3cc080bc771455578b0cce0 -Author: Ebrahim Byagowi -Date: Sat Sep 21 16:25:54 2019 +0430 +commit fd59cc700ade05fa86b89d10cf07eef7f57c9973 +Author: n8willis +Date: Mon Apr 13 15:15:00 2020 +0100 - Minor, turn more of hb_apply to for each + Update src/hb-glib.cc + + Co-Authored-By: Khaled Hosny - src/hb-ot-glyf-table.hh | 5 ++--- - src/hb-ot-layout-gpos-table.hh | 42 ++++++++++++++---------------------------- - src/hb-ot-name-table.hh | 5 ++--- - src/hb-ot-vorg-table.hh | 5 ++--- - 4 files changed, 20 insertions(+), 37 deletions(-) + src/hb-glib.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 0665dce1163317390adbed9394cce2b1325ddb6c -Author: Ebrahim Byagowi -Date: Sat Sep 21 17:22:02 2019 +0430 +commit fb9d106797f4ae458717dd9e9d0b2c9eca4b89c2 +Author: n8willis +Date: Mon Apr 13 15:14:42 2020 +0100 - [fuzzer] Don't process output in debug mode as it causes timeout + Update src/hb-graphite2.cc + + Co-Authored-By: Khaled Hosny - test/fuzzing/run-shape-fuzzer-tests.py | 7 ++++++- - test/fuzzing/run-subset-fuzzer-tests.py | 7 ++++++- - 2 files changed, 12 insertions(+), 2 deletions(-) + src/hb-graphite2.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit dc886f6638f50e45e73d01e49db77b4bcefc85e1 -Author: Ebrahim Byagowi -Date: Sat Sep 14 11:18:47 2019 +0430 +commit a199eab20eca8710e58fab845b8c330aada797a3 +Author: n8willis +Date: Mon Apr 13 15:14:28 2020 +0100 - [ci] Re-enable debug builds on fedora bot + Update src/hb-graphite2.cc + + Co-Authored-By: Khaled Hosny - .circleci/config.yml | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/hb-graphite2.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 70228f68ac413ee19281861e3039a82d90c17f2a -Author: Ebrahim Byagowi -Date: Sat Sep 21 16:24:41 2019 +0430 +commit aff21795b2da558e8f595706e7a46f11b891f8be +Author: n8willis +Date: Mon Apr 13 15:14:06 2020 +0100 - [ci] Enable HB_WITH_WIN1256 on -Weverything bot + Update src/hb-icu.cc - To catch its compile warnings, #1969 related + Co-Authored-By: Khaled Hosny - .circleci/config.yml | 2 +- + src/hb-icu.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 385741d565de1cc90de23664f8e66fc77c31efae -Author: Ebrahim Byagowi -Date: Sat Sep 21 15:26:14 2019 +0430 +commit ccc235698394aab2cea69bd2e00a0caa766d577b +Author: n8willis +Date: Mon Apr 13 15:13:56 2020 +0100 - [cmap] Turn hb_apply into foreach where possible + Update src/hb-graphite2.h + + Co-Authored-By: Khaled Hosny - src/hb-ot-cmap-table.hh | 151 +++++++++++++++++++----------------------------- - 1 file changed, 61 insertions(+), 90 deletions(-) + src/hb-graphite2.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 1023c2cc6de0f33602df8709134bef8cdb66ba0c -Author: Ebrahim Byagowi -Date: Sat Sep 21 14:33:43 2019 +0430 +commit 0d5695983e8bf3184ecd4cb92f737b9dfe5d6d25 +Author: Qunxin Liu +Date: Sun Apr 5 18:44:26 2020 -0700 - [cmap] minor + [subset] fixes dangling object_t issue in FeatureVariationRecord + Fixes https://crbug.com/oss-fuzz/21560 + revert () does not clean up useless object_t. Adjust the order of + subsetting substitutions and conditions to avoid dangling object_t. - src/hb-ot-cmap-table.hh | 62 ++++++++++++++++++------------------------------- - 1 file changed, 22 insertions(+), 40 deletions(-) + src/hb-ot-layout-common.hh | 9 +++++---- + ...z-testcase-minimized-hb-subset-fuzzer-5759725666041856 | Bin 0 -> 114 bytes + 2 files changed, 5 insertions(+), 4 deletions(-) -commit ead46eefe3bf2bea61c86689f4c5a1da9b7e446b +commit 57b7de032f60d0499ae2debb293d0f8456acfdfb Author: Ebrahim Byagowi -Date: Sat Sep 21 14:25:11 2019 +0430 +Date: Sun Apr 5 17:07:48 2020 +0430 - minor, use internal API instead public hb_set_has + [subset] Fail ClassDefFormat1 serialization if no space available + + Fixes https://crbug.com/oss-fuzz/21580 - src/hb-ot-cmap-table.hh | 4 ++-- - src/hb-subset-plan.cc | 2 +- - 2 files changed, 3 insertions(+), 3 deletions(-) + src/hb-ot-layout-common.hh | 2 +- + ...-testcase-minimized-hb-subset-fuzzer-5704307501694976 | Bin 0 -> 1062 bytes + 2 files changed, 1 insertion(+), 1 deletion(-) -commit d8af4e7701fe63d63f6669706ce7a5bb3a15a19d -Author: Ebrahim Byagowi -Date: Sat Sep 21 14:19:14 2019 +0430 +commit c8cc1e378df500122d8082a2038d68179eec63d0 +Author: Qunxin Liu +Date: Thu Apr 2 16:57:01 2020 -0700 - [cmap] minor, turn 8 spaces to tab + fix issues in ClassDefFormat1 serialize: + glyph ids in Iterator may be non-consecutive, + so the number in classValue might be larger than length of the Iterator - src/hb-ot-cmap-table.hh | 228 ++++++++++++++++++++++++------------------------ - src/hb-subset-plan.cc | 6 +- - 2 files changed, 117 insertions(+), 117 deletions(-) + src/hb-ot-layout-common.hh | 20 +++++++++++++++----- + src/hb-ot-layout-gpos-table.hh | 2 +- + ...f => Roboto-Regular.keep-gdef-gpos.1E00,303.ttf} | Bin 2520 -> 2648 bytes + ...03.ttf => Roboto-Regular.keep-gdef-gpos.303.ttf} | Bin 2192 -> 2240 bytes + ...=> Roboto-Regular.keep-gdef-gpos.309,20,30F.ttf} | Bin 2288 -> 2336 bytes + ...23.ttf => Roboto-Regular.keep-gdef-gpos.323.ttf} | Bin 2084 -> 2132 bytes + ...f => Roboto-Regular.keep-gdef-gpos.41,42,43.ttf} | Bin 2536 -> 2736 bytes + test/subset/data/profiles/keep-gdef-gpos.txt | 1 + + test/subset/data/tests/layout.gdef.tests | 2 +- + 9 files changed, 18 insertions(+), 7 deletions(-) -commit 4315666283a7d1b175d1c3ed43b5ac85fdc84a50 -Author: Qunxin Liu -Date: Thu Aug 29 11:17:20 2019 -0700 +commit 4a49b36a9e244e176a8e6d9ae9d6caadabfbcc6c +Author: Ebrahim Byagowi +Date: Fri Apr 3 19:36:48 2020 +0430 - [subset] updates according to review comments + [tests/macos] Adopt added Apple Chancery tests with older macos versions - src/hb-ot-cmap-table.hh | 95 ++++++++++++++++++++++++------------------------- - 1 file changed, 47 insertions(+), 48 deletions(-) + test/shaping/data/in-house/tests/macos.tests | 30 ++++++++++++++++++++++------ + 1 file changed, 24 insertions(+), 6 deletions(-) -commit bf66d1bf589b6af2ceb30c18619f210b718c9db9 -Author: Qunxin Liu -Date: Wed Aug 21 14:24:33 2019 -0700 +commit 75cae46dc2702e4edd32a92fe59300172931ed9f +Author: Ebrahim Byagowi +Date: Fri Apr 3 20:04:16 2020 +0430 - [subset] Add integration tests for cmap14 + [aat] minor spacing - test/subset/data/Makefile.am | 1 + - test/subset/data/Makefile.sources | 1 + - .../cmap14/cmap14_font1.default.4E00,4E02,4E03.otf | Bin 0 -> 1360 bytes - .../cmap14/cmap14_font1.default.4E00,4E03.otf | Bin 0 -> 1236 bytes - .../cmap14/cmap14_font1.default.4E00,4E05,4E07.otf | Bin 0 -> 1328 bytes - .../cmap14/cmap14_font1.default.4E02,4E03,4E08.otf | Bin 0 -> 1576 bytes - .../expected/cmap14/cmap14_font1.default.4E02.otf | Bin 0 -> 996 bytes - .../expected/cmap14/cmap14_font1.default.4E03.otf | Bin 0 -> 1080 bytes - .../cmap14_font1.default.4E05,4E07,4E08,4E09.otf | Bin 0 -> 1848 bytes - .../cmap14/cmap14_font1.default.4E08,4E09.otf | Bin 0 -> 1720 bytes - .../expected/cmap14/cmap14_font1.default.4E08.otf | Bin 0 -> 1384 bytes - .../cmap14_font1.default.retain-all-codepoint.otf | Bin 0 -> 2348 bytes - ...font1.drop-hints-retain-gids.4E00,4E02,4E03.otf | Bin 0 -> 1388 bytes - ...ap14_font1.drop-hints-retain-gids.4E00,4E03.otf | Bin 0 -> 1272 bytes - ...font1.drop-hints-retain-gids.4E00,4E05,4E07.otf | Bin 0 -> 1396 bytes - ...font1.drop-hints-retain-gids.4E02,4E03,4E08.otf | Bin 0 -> 1720 bytes - .../cmap14_font1.drop-hints-retain-gids.4E02.otf | Bin 0 -> 1028 bytes - .../cmap14_font1.drop-hints-retain-gids.4E03.otf | Bin 0 -> 1124 bytes - ....drop-hints-retain-gids.4E05,4E07,4E08,4E09.otf | Bin 0 -> 1984 bytes - ...ap14_font1.drop-hints-retain-gids.4E08,4E09.otf | Bin 0 -> 1872 bytes - .../cmap14_font1.drop-hints-retain-gids.4E08.otf | Bin 0 -> 1544 bytes - ...drop-hints-retain-gids.retain-all-codepoint.otf | Bin 0 -> 2436 bytes - .../cmap14_font1.drop-hints.4E00,4E02,4E03.otf | Bin 0 -> 1292 bytes - .../cmap14/cmap14_font1.drop-hints.4E00,4E03.otf | Bin 0 -> 1168 bytes - .../cmap14_font1.drop-hints.4E00,4E05,4E07.otf | Bin 0 -> 1260 bytes - .../cmap14_font1.drop-hints.4E02,4E03,4E08.otf | Bin 0 -> 1512 bytes - .../cmap14/cmap14_font1.drop-hints.4E02.otf | Bin 0 -> 928 bytes - .../cmap14/cmap14_font1.drop-hints.4E03.otf | Bin 0 -> 1012 bytes - ...cmap14_font1.drop-hints.4E05,4E07,4E08,4E09.otf | Bin 0 -> 1780 bytes - .../cmap14/cmap14_font1.drop-hints.4E08,4E09.otf | Bin 0 -> 1652 bytes - .../cmap14/cmap14_font1.drop-hints.4E08.otf | Bin 0 -> 1316 bytes - ...map14_font1.drop-hints.retain-all-codepoint.otf | Bin 0 -> 2280 bytes - .../cmap14_font1.name-ids.4E00,4E02,4E03.otf | Bin 0 -> 1292 bytes - .../cmap14/cmap14_font1.name-ids.4E00,4E03.otf | Bin 0 -> 1168 bytes - .../cmap14_font1.name-ids.4E00,4E05,4E07.otf | Bin 0 -> 1260 bytes - .../cmap14_font1.name-ids.4E02,4E03,4E08.otf | Bin 0 -> 1508 bytes - .../expected/cmap14/cmap14_font1.name-ids.4E02.otf | Bin 0 -> 928 bytes - .../expected/cmap14/cmap14_font1.name-ids.4E03.otf | Bin 0 -> 1012 bytes - .../cmap14_font1.name-ids.4E05,4E07,4E08,4E09.otf | Bin 0 -> 1780 bytes - .../cmap14/cmap14_font1.name-ids.4E08,4E09.otf | Bin 0 -> 1652 bytes - .../expected/cmap14/cmap14_font1.name-ids.4E08.otf | Bin 0 -> 1316 bytes - .../cmap14_font1.name-ids.retain-all-codepoint.otf | Bin 0 -> 2280 bytes - .../cmap14_font1.retain-gids.4E00,4E02,4E03.otf | Bin 0 -> 1452 bytes - .../cmap14/cmap14_font1.retain-gids.4E00,4E03.otf | Bin 0 -> 1340 bytes - .../cmap14_font1.retain-gids.4E00,4E05,4E07.otf | Bin 0 -> 1464 bytes - .../cmap14_font1.retain-gids.4E02,4E03,4E08.otf | Bin 0 -> 1788 bytes - .../cmap14/cmap14_font1.retain-gids.4E02.otf | Bin 0 -> 1096 bytes - .../cmap14/cmap14_font1.retain-gids.4E03.otf | Bin 0 -> 1192 bytes - ...map14_font1.retain-gids.4E05,4E07,4E08,4E09.otf | Bin 0 -> 2048 bytes - .../cmap14/cmap14_font1.retain-gids.4E08,4E09.otf | Bin 0 -> 1940 bytes - .../cmap14/cmap14_font1.retain-gids.4E08.otf | Bin 0 -> 1608 bytes - ...ap14_font1.retain-gids.retain-all-codepoint.otf | Bin 0 -> 2500 bytes - test/subset/data/fonts/cmap14_font1.otf | Bin 0 -> 4484 bytes - test/subset/data/tests/cmap14.tests | 21 +++++++++++++++++++++ - 54 files changed, 23 insertions(+) + src/hb-aat-map.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 2583afa0eb90134274ddd92864ea5270eeebc52e -Author: Qunxin Liu -Date: Fri Aug 16 13:54:24 2019 -0700 +commit 37377763842c80bf261d7bc0b3502cd5213244a4 +Author: Ebrahim Byagowi +Date: Fri Apr 3 20:03:20 2020 +0430 - [subset] subsetting cmap14 + [aat] add the bug link, minor - src/hb-ot-cmap-table.hh | 295 +++++++++++++++++++++++++++++++++++++++++++----- - 1 file changed, 265 insertions(+), 30 deletions(-) + src/hb-aat-map.cc | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) -commit 078ddbd0f6ad660e740809b7f4c067e02309b98d -Author: Qunxin Liu -Date: Wed Aug 7 13:17:26 2019 -0700 +commit 548a25259e183f95713c0fdf0ad8c9450af73252 +Author: Jonathan Kew +Date: Fri Apr 3 16:18:20 2020 +0100 - [subset] glyph closure for CMAP14 + Add a test for #2307. - src/hb-ot-cmap-table.hh | 34 +++++++++++++++++++++++++++++++++- - src/hb-subset-plan.cc | 10 ++++++++++ - 2 files changed, 43 insertions(+), 1 deletion(-) + test/shaping/data/in-house/tests/macos.tests | 1 + + 1 file changed, 1 insertion(+) -commit bbe878006d347893fc70e282c2aaafef5dd622b4 -Author: Ebrahim Byagowi -Date: Wed Sep 18 22:22:01 2019 +0430 +commit 1faf0caae165f680689610b20c467b9308275308 +Author: Jonathan Kew +Date: Fri Apr 3 16:10:34 2020 +0100 - Avoid bitwise negate of enum value + Special-case 'smcp' when checking for exposed AAT features. - Fixes this -fno-sanitize-recover=undefined fail, + This may be implemented by selectors under either LETTER_CASE or LOWER_CASE feature types + in AAT, so we need to check for the presence of either one. - hb-ot-map.hh:188:1: runtime error: load of value 4294967294, which is not a valid value for type 'hb_ot_map_feature_flags_t' - #0 0x7f62bfa9b227 in operator&=(hb_ot_map_feature_flags_t&, hb_ot_map_feature_flags_t) /home/ebrahim/Desktop/harfbuzz/src/./hb-ot-map.hh:188:1 - #1 0x7f62bfa9b227 in hb_ot_map_builder_t::compile(hb_ot_map_t&, hb_ot_shape_plan_key_t const&) /home/ebrahim/Desktop/harfbuzz/src/hb-ot-map.cc:194 - #2 0x7f62bface650 in hb_ot_shape_planner_t::compile(hb_ot_shape_plan_t&, hb_ot_shape_plan_key_t const&) /home/ebrahim/Desktop/harfbuzz/src/hb-ot-shape.cc:108:7 - #3 0x7f62bfacec1e in hb_ot_shape_plan_t::init0(hb_face_t*, hb_shape_plan_key_t const*) /home/ebrahim/Desktop/harfbuzz/src/hb-ot-shape.cc:225:11 - #4 0x7f62bfae1318 in hb_shape_plan_create2 /home/ebrahim/Desktop/harfbuzz/src/hb-shape-plan.cc:232:7 - #5 0x7f62bfae1d2a in hb_shape_plan_create_cached2 /home/ebrahim/Desktop/harfbuzz/src/hb-shape-plan.cc:489:33 - #6 0x7f62bfae2527 in hb_shape_full /home/ebrahim/Desktop/harfbuzz/src/hb-shape.cc:135:33 - #7 0x55ed360b6588 in shape_options_t::shape(hb_font_t*, hb_buffer_t*, char const**) /home/ebrahim/Desktop/harfbuzz/util/./options.hh:242:10 - #8 0x55ed360b5d9c in shape_consumer_t::consume_line(char const*, unsigned int, char const*, char const*) /home/ebrahim/Desktop/harfbuzz/util/./shape-consumer.hh:67:19 - #9 0x55ed360b549f in main_font_text_t, 2147483647, 0>::main(int, char**) /home/ebrahim/Desktop/harfbuzz/util/./main-font-text.hh:81:16 - #10 0x55ed360b4e23 in main /home/ebrahim/Desktop/harfbuzz/util/hb-shape.cc:189:17 - #11 0x7f62bf104ee2 in __libc_start_main (/usr/lib/libc.so.6+0x26ee2) - #12 0x55ed3608f7ad in _start (/home/ebrahim/Desktop/harfbuzz/util/.libs/lt-hb-shape+0xd7ad) + Fixes #2307. - src/hb-ot-map.cc | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) + src/hb-aat-map.cc | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) -commit e6909ee58d0f7b954f3bb227c2f90ca4cfd0c858 -Author: Ebrahim Byagowi -Date: Wed Sep 18 22:12:25 2019 +0430 +commit 120d86fa189ca4f3dbb8502e92f7ac63f66d0037 +Author: Jonathan Kew +Date: Fri Apr 3 15:10:14 2020 +0100 - minor + Add tests for #2305. - src/hb-buffer.cc | 2 +- - src/hb-common.cc | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) + test/shaping/data/in-house/tests/macos.tests | 5 +++++ + 1 file changed, 5 insertions(+) -commit bb41b74fd1fb42b08e9069c22ee046daeee98e6b -Author: Ebrahim Byagowi -Date: Wed Sep 18 00:55:24 2019 +0430 +commit b87cf6e8d44aa60e162a68225394386cecb0e690 +Author: Jonathan Kew +Date: Fri Apr 3 15:02:07 2020 +0100 - Don't rely on undefined left shift of negative value behavior + Fix sense of comparsion in hb_aat_map_builder_t::feature_info_t. - Fixes this -fno-sanitize-recover=undefined check, + This makes bsearch actually work for the features array. - hb-ft.cc:869:27: runtime error: left shift of negative value -16384 - #0 0x7ff8f47da843 in hb_ft_font_set_funcs /home/ebrahim/Desktop/harfbuzz/src/hb-ft.cc:869:27 - #1 0x55f20a66c7d6 in font_options_t::get_font() const /home/ebrahim/Desktop/harfbuzz/util/options.cc:731:3 - #2 0x55f20a668c1f in shape_consumer_t::init(hb_buffer_t*, font_options_t const*) /home/ebrahim/Desktop/harfbuzz/util/./shape-consumer.hh:47:42 - #3 0x55f20a668441 in main_font_text_t, 2147483647, 0>::main(int, char**) /home/ebrahim/Desktop/harfbuzz/util/./main-font-text.hh:75:14 - #4 0x55f20a667f91 in main /home/ebrahim/Desktop/harfbuzz/util/hb-shape.cc:180:21 - #5 0x7ff8f3df7ee2 in __libc_start_main (/usr/lib/libc.so.6+0x26ee2) - #6 0x55f20a6427ad in _start (/home/ebrahim/Desktop/harfbuzz/util/.libs/lt-hb-shape+0xd7ad) + Fixes #2305. - src/hb-ft.cc | 2 +- + src/hb-aat-map.hh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit b73313ade75130bf86ad1efbd312ce4106166089 -Author: Ebrahim Byagowi -Date: Wed Sep 18 00:50:32 2019 +0430 +commit b027cb518dc7e6ac7e41e617364476e3c7839792 +Author: Jonathan Kew +Date: Mon Mar 30 18:47:22 2020 +0100 - Don't seek of out-of-bound value even if the result is not used - - Fixes this -fno-sanitize-recover=undefined fail, + Set sequence number when adding feature to aat map builder, to support stable sort. - /set/iter: hb-algs.hh:1016:60: runtime error: index 4294967295 out of bounds for type 'unsigned long long const[8]' - #0 0x4d1e09 in hb_vector_size_t::operator[](unsigned int) const /home/user/code/harfbuzz/src/./hb-algs.hh:1016:60 - #1 0x4d8b5f in hb_set_t::page_t::previous(unsigned int*) const /home/user/code/harfbuzz/src/./hb-set.hh:139:53 - #2 0x4d0ada in hb_set_t::previous(unsigned int*) const /home/user/code/harfbuzz/src/./hb-set.hh:602:36 - #3 0x4cd76f in hb_set_previous /home/user/code/harfbuzz/src/hb-set.cc:494:15 - #4 0x4ca8af in test_set_iter /home/user/code/harfbuzz/test/api/test-set.c:310:3 - #5 0x7f3a4f3e0f49 (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x72f49) - #6 0x7f3a4f3e0e7a (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x72e7a) - #7 0x7f3a4f3e1121 in g_test_run_suite (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x73121) - #8 0x7f3a4f3e1140 in g_test_run (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x73140) - #9 0x4c8894 in hb_test_run /home/user/code/harfbuzz/test/api/./hb-test.h:88:10 - #10 0x4c8894 in main /home/user/code/harfbuzz/test/api/test-set.c:408:10 - #11 0x7f3a4e3d2b96 in __libc_start_main /build/glibc-OTsEL5/glibc-2.27/csu/../csu/libc-start.c:310 - #12 0x41e7d9 in _start (/home/user/code/harfbuzz/test/api/test-set+0x41e7d9) + Fixes #2288. - src/hb-set.hh | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) + src/hb-aat-map.cc | 2 ++ + 1 file changed, 2 insertions(+) -commit d8af9ee017ed1018343d30272f55b90dd03a3559 +commit e0e77270641fb932552b36bbb35813fbc5cfac1e Author: Ebrahim Byagowi -Date: Wed Sep 18 00:47:55 2019 +0430 +Date: Fri Apr 3 01:12:16 2020 +0430 - Don't rely on nullptr deref recovery - - Fixes this -fno-sanitize-recover=undefined fail, - - /types/language: hb-common.cc:385:20: runtime error: member access within null pointer of type 'const struct hb_language_impl_t' - #0 0x4caa34 in hb_language_to_string /home/user/code/harfbuzz/src/hb-common.cc:385:20 - #1 0x4c9be8 in test_types_language /home/user/code/harfbuzz/test/api/test-common.c:205:3 - #2 0x7f9557e72f49 (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x72f49) - #3 0x7f9557e72e7a (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x72e7a) - #4 0x7f9557e73121 in g_test_run_suite (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x73121) - #5 0x7f9557e73140 in g_test_run (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x73140) - #6 0x4c88a3 in hb_test_run /home/user/code/harfbuzz/test/api/./hb-test.h:88:10 - #7 0x4c88a3 in main /home/user/code/harfbuzz/test/api/test-common.c:224:10 - #8 0x7f9556e64b96 in __libc_start_main /build/glibc-OTsEL5/glibc-2.27/csu/../csu/libc-start.c:310 - #9 0x41e7d9 in _start (/home/user/code/harfbuzz/test/api/test-common+0x41e7d9) + [ci] Update macOS 10.15's version - src/hb-common.cc | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) + .circleci/config.yml | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) -commit bfb155a5f19b26f9dcff667a76a24cd5c3b83234 +commit 89fa70f511a62fedc46e68f692b6f19e119d647e Author: Ebrahim Byagowi -Date: Wed Sep 18 00:44:52 2019 +0430 +Date: Fri Apr 3 00:05:40 2020 +0430 - Don't call memset when length is zero - - Fixes this -fno-sanitize-recover=undefined check, - - /buffer/positions/empty: hb-buffer.cc:327:11: runtime error: null pointer passed as argument 1, which is declared to never be null - - /usr/include/string.h:60:62: note: nonnull attribute specified here - #0 0x4cf31c in hb_buffer_t::clear_positions() /home/user/code/harfbuzz/src/hb-buffer.cc:327:3 - #1 0x4d4dd4 in hb_buffer_get_glyph_positions /home/user/code/harfbuzz/src/hb-buffer.cc:1418:13 - #2 0x4cb553 in test_buffer_positions /home/user/code/harfbuzz/test/api/test-buffer.c:305:3 - #3 0x7f324187bf49 (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x72f49) - #4 0x7f324187be7a (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x72e7a) - #5 0x7f324187be7a (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x72e7a) - #6 0x7f324187c121 in g_test_run_suite (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x73121) - #7 0x7f324187c140 in g_test_run (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x73140) - #8 0x4c8bd3 in hb_test_run /home/user/code/harfbuzz/test/api/./hb-test.h:88:10 - #9 0x4c8bd3 in main /home/user/code/harfbuzz/test/api/test-buffer.c:884:10 - #10 0x7f324086db96 in __libc_start_main /build/glibc-OTsEL5/glibc-2.27/csu/../csu/libc-start.c:310 - #11 0x41e919 in _start (/home/user/code/harfbuzz/test/api/test-buffer+0x41e919) + [aat] minor over previous feat related changes - src/hb-buffer.cc | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) + src/hb-aat-layout-feat-table.hh | 2 +- + src/hb-aat-map.cc | 12 +++++------- + test/shaping/data/in-house/tests/macos.tests | 14 ++++++++++++-- + 3 files changed, 18 insertions(+), 10 deletions(-) -commit 5a1cc199ab7b619935af04584ecc650216a83d66 -Author: Ebrahim Byagowi -Date: Wed Sep 18 00:43:44 2019 +0430 +commit 58b4d18b53a530b1bbc2fea2c3123754b9be4868 +Author: Jonathan Kew +Date: Thu Apr 2 17:54:09 2020 +0100 - [ci] Run -fno-sanitize-recover=undefined checks + Add a couple testcases for issue 2285. + + A few simple testcases to confirm that setting liga=0 does not break shaping with + the Tibetan AAT font Kokonor, but does still disable common ligatures in Times. - .circleci/config.yml | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + test/shaping/data/in-house/tests/macos.tests | 6 ++++++ + 1 file changed, 6 insertions(+) -commit c930ae2bd8b6f626ddec0628ae6b38e3134e3c97 -Author: Ebrahim Byagowi -Date: Mon Sep 16 14:04:34 2019 +0430 +commit b1c0b9da2ff105d3476fed411e1d7010decb394e +Author: Jonathan Kew +Date: Thu Apr 2 14:39:13 2020 +0100 - Avoid stdint.h in Kernel module compiles + [AAT] Don't map OT tags to AAT feature types that are not exposed. + + If an AAT feature type is not exposed in the 'feat' table, we assume it is not intended + to be user-controllable and so we should not map any OT feature tag requests to it. + + Fixes #2285. - src/hb-common.h | 2 ++ - 1 file changed, 2 insertions(+) + src/hb-aat-layout-feat-table.hh | 6 ++++++ + src/hb-aat-map.cc | 7 +++++++ + 2 files changed, 13 insertions(+) -commit 412d6cac3a46d710159ed4b3cc3bb59fd5876d5f -Author: Ebrahim Byagowi -Date: Mon Sep 16 13:50:11 2019 +0430 +commit e0c3979af1c84f82b8879c710a07f027fe32f564 +Author: Qunxin Liu +Date: Wed Apr 1 16:49:53 2020 -0700 - Extract an avoid errno compile flag + typo fix - src/hb-blob.cc | 1 - - src/hb-config.hh | 1 + - src/hb.hh | 9 +++++++-- - 3 files changed, 8 insertions(+), 3 deletions(-) + src/hb-ot-layout-common.hh | 2 +- + src/hb-ot-layout-gsubgpos.hh | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) -commit 8a16d6f1c13388e6d9ca844a309632ec583ee1a2 -Author: Ebrahim Byagowi -Date: Sun Sep 15 20:43:33 2019 +0430 +commit 65f413630366ded4867522ca9ffa0d7e936380ac +Author: ariza +Date: Wed Apr 1 19:49:18 2020 -0700 - [doc] fix minor typo + minor; fixes #2292 - src/hb-ot-layout.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-serialize.hh | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) -commit aab279b33dda45ae0e45c887f2fad6381b5138dc -Author: Ebrahim Byagowi -Date: Sat Sep 14 11:20:09 2019 +0430 +commit 014e038b2c2fd55e0bffbe5c5adc893c07df187a +Author: Garret Rieger +Date: Tue Mar 31 16:29:29 2020 -0700 - [ci] Install cmake on macOS cmake/amalgam tester + [subset] Bail out of context lookup expansion once the lookup limit is encountered. - .circleci/config.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-layout-gsubgpos.hh | 8 ++++++++ + ...testcase-minimized-hb-shape-fuzzer-5158673602314240 | Bin 0 -> 881650 bytes + 2 files changed, 8 insertions(+) -commit f3214df6f63919ebe73c713b1e80bba1097a0cea -Author: Ebrahim Byagowi -Date: Sat Sep 14 10:56:00 2019 +0430 +commit 5d345d0cd169dcc8c0205918a6e064f03e4bc07a +Author: Garret Rieger +Date: Tue Mar 31 17:46:19 2020 -0700 - [coretext] Fix double promotion warnings by making casts explicit + [subset] Limit the number of lookup indices processed subsetting Feature. + > Also, remove two unnessecary full iterations of the lookup index iterator during serialization of the index array. Fixes fuzzer found timeout. - src/hb-coretext.cc | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/hb-ot-layout-common.hh | 25 +++++++++++++++------ + ...ase-minimized-hb-subset-fuzzer-5719588814979072 | Bin 0 -> 1048576 bytes + 2 files changed, 18 insertions(+), 7 deletions(-) -commit cbbb6fa45519a8670870c784841d7b9e1ab71dd1 +commit 1b64b73080994ac577a6d936a0109b3c6f5d21de +Author: Khaled Hosny +Date: Mon Mar 30 16:49:23 2020 +0200 + + Revert "Add messages for GPOS/GSUB phases" + + This reverts commit b07714d6b53bb20a2796f5efa607dc32aac587f1. + + src/hb-ot-layout.cc | 2 -- + 1 file changed, 2 deletions(-) + +commit 2e1bf61dd5afcef71957b349254b80e7cfd14e45 Author: Ebrahim Byagowi -Date: Sat Sep 14 10:53:12 2019 +0430 +Date: Thu Mar 26 22:59:26 2020 +0430 - [ci] Don't build cmake tests in macOS bot + [gsubgpos] Use FeatureVariations::NOT_FOUND_INDEX instead Index:: + + As noted by https://github.com/harfbuzz/harfbuzz/issues/2280#issuecomment-604386389 + + Added on b143e34, fixed on 2571891 + + Closes #2280 - .circleci/config.yml | 2 +- + src/hb-ot-layout-gsubgpos.hh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 6e4736a3c5acc0eea1b16c79b95d1a3082baa320 +commit 96d792ae80c448715ef317c9f69eb30dc3d34a10 Author: Ebrahim Byagowi -Date: Sat Sep 14 10:38:52 2019 +0430 +Date: Tue Mar 24 14:05:47 2020 +0430 - [name] Undef entry_{index,score} to avoid collision in amalgam builds + [avar] Prevent mul overflow + + Fixes https://crbug.com/oss-fuzz/21350 - src/hb-ot-name-table.hh | 3 +++ - 1 file changed, 3 insertions(+) + src/hb-algs.hh | 29 ++++++++++++++++----- + src/hb-ot-var-avar-table.hh | 10 ++++--- + ...tcase-minimized-hb-draw-fuzzer-5712313459146752 | Bin 0 -> 146696 bytes + 3 files changed, 30 insertions(+), 9 deletions(-) -commit d512087e4dfb5d9483b78eaf8443b4fa8724b8e1 +commit 18fc9197e23460f2599670b65548d07a522d5a73 Author: Ebrahim Byagowi -Date: Sat Sep 14 10:36:29 2019 +0430 +Date: Thu Mar 26 13:34:28 2020 +0430 - Rename GlyphID to HBGlyphID + [meson] Run check-symbols.sh and check-static-inits.sh correctly - Avoid collision with macOS's ATSUnicodeTypes.h GlyphID + * Search src/ build directory for objects in check-static-inits.sh + * Find .def files in src/ build directory in src/check-symbols.sh + * Pass builddir also in autotools also, we may just remove libs passing after autotools removal + * Move harfbuzz_subset_def target so can be referenced as a check-static-inits.sh dependency - src/hb-aat-layout-bsln-table.hh | 4 +- - src/hb-aat-layout-common.hh | 16 +++---- - src/hb-aat-layout-just-table.hh | 8 ++-- - src/hb-aat-layout-kerx-table.hh | 4 +- - src/hb-aat-layout-morx-table.hh | 32 ++++++------- - src/hb-open-type.hh | 4 +- - src/hb-ot-cmap-table.hh | 4 +- - src/hb-ot-color-cbdt-table.hh | 8 ++-- - src/hb-ot-color-colr-table.hh | 4 +- - src/hb-ot-glyf-table.hh | 2 +- - src/hb-ot-layout-base-table.hh | 2 +- - src/hb-ot-layout-common.hh | 22 ++++----- - src/hb-ot-layout-gpos-table.hh | 2 +- - src/hb-ot-layout-gsub-table.hh | 72 +++++++++++++++--------------- - src/hb-ot-layout-jstf-table.hh | 2 +- - src/hb-ot-math-table.hh | 4 +- - src/hb-ot-shape-complex-arabic-fallback.hh | 14 +++--- - src/hb-ot-vorg-table.hh | 2 +- - 18 files changed, 103 insertions(+), 103 deletions(-) + src/Makefile.am | 1 + + src/check-static-inits.sh | 13 ++++++++-- + src/check-symbols.sh | 7 +++--- + src/meson.build | 63 +++++++++++++++++++++++++---------------------- + 4 files changed, 50 insertions(+), 34 deletions(-) -commit bf08611044d83b6f5d6dec443f5216db259b4085 +commit 9c2c9553eb85b272c2838f5fc60301aafe361549 Author: Ebrahim Byagowi -Date: Sat Sep 14 10:35:08 2019 +0430 +Date: Thu Mar 26 13:24:38 2020 +0430 - [ci] Update and compile cmake/amalgam on macOS bot + [test] Check -subset also doesn't link to lib[std]c++ - .circleci/config.yml | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) + src/check-libstdc++.sh | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) -commit 229ef1d29d5c7a370ebb10a1131c04719f34dc81 -Author: Behdad Esfahbod -Date: Tue Sep 10 10:31:07 2019 -0700 +commit 25718913d4263ed709bd7142a107e128c9f91d4c +Author: Ebrahim Byagowi +Date: Thu Mar 26 14:04:37 2020 +0430 - Rename Fixed to HBFixed - - Fixes(!!) https://github.com/harfbuzz/harfbuzz/issues/1966 + [gsubgpos] minor build fix - src/hb-aat-fdsc-table.hh | 4 ++-- - src/hb-aat-layout-just-table.hh | 20 ++++++++++---------- - src/hb-aat-layout-trak-table.hh | 8 ++++---- - src/hb-open-type.hh | 4 ++-- - src/hb-ot-post-table.hh | 2 +- - src/hb-ot-stat-table.hh | 14 +++++++------- - src/hb-ot-var-fvar-table.hh | 16 ++++++++-------- - 7 files changed, 34 insertions(+), 34 deletions(-) + src/hb-ot-layout-gsubgpos.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 170b5dd856b1ba8f26e79863fe0c64a52eb68951 -Author: Behdad Esfahbod -Date: Sun Sep 8 16:34:11 2019 -0400 +commit b143e34ee1bb56d104e33b78abff70302a93d3d0 +Author: Ebrahim Byagowi +Date: Thu Mar 26 11:58:45 2020 +0430 - [aat] Minor + [gsubgpos] Initialize variation index on HB_NO_VAR + + hb_shape_plan_key_t::equal expects hb_ot_shape_plan_key_t be initialized by + hb_ot_layout_table_find_feature_variations calls but it won't get initialized + when HB_NO_VAR build config is used. + + Related to https://github.com/harfbuzz/harfbuzz/issues/2280 - src/hb-aat-layout-morx-table.hh | 14 +++++--------- - 1 file changed, 5 insertions(+), 9 deletions(-) + src/hb-ot-layout-gsubgpos.hh | 1 + + 1 file changed, 1 insertion(+) -commit a0695687eb03bcf80c4dec19917127cdd8d8797d -Author: Behdad Esfahbod -Date: Sun Sep 8 16:32:12 2019 -0400 +commit 071e2e345fb0a78d13462744dca9b1a8b15e78cb +Author: Ebrahim Byagowi +Date: Thu Mar 26 12:01:53 2020 +0430 - [aat] Minor + minor - src/hb-aat-layout-morx-table.hh | 2 -- - 1 file changed, 2 deletions(-) + src/hb-ot-layout-gsubgpos.hh | 2 +- + src/hb-ot-shape.hh | 6 +++--- + 2 files changed, 4 insertions(+), 4 deletions(-) -commit 4905a2198b4c47c12c6356f72ae0d2b178630d25 +commit cc977b6e5c263803abc47f52538b530458f08f16 Author: Ebrahim Byagowi -Date: Mon Sep 9 12:36:12 2019 +0430 +Date: Thu Mar 26 11:18:02 2020 +0430 - [number] Add static to hb-number-parser.hh functions + [gsubgpos] Minor simplification + + Just changed the order, no functional change - src/hb-number-parser.hh | 4 ++-- - src/hb-number-parser.rl | 4 ++-- - 2 files changed, 4 insertions(+), 4 deletions(-) + src/hb-ot-layout-gsubgpos.hh | 23 ++++++++++++----------- + 1 file changed, 12 insertions(+), 11 deletions(-) -commit 30e5cdfbf1ce2aadadf29ccfd0733355ced2d065 +commit 1a48278511c396799693f23dde98c82b44a5f7d3 Author: Ebrahim Byagowi -Date: Mon Sep 9 00:28:16 2019 +0430 +Date: Thu Mar 26 11:15:09 2020 +0430 - [number] Optimize _pow10 constants (#1963) + [gsubgpos] Minor style improve - src/hb-number-parser.hh | 43 +++++++++++++++++++------------------------ - src/hb-number-parser.rl | 31 +++++++++++++------------------ - 2 files changed, 32 insertions(+), 42 deletions(-) + src/hb-ot-layout-gsubgpos.hh | 24 ++++++------------------ + 1 file changed, 6 insertions(+), 18 deletions(-) -commit 3f2cdf07a417f81aeeb1e296db493b6e02d76ba8 -Author: Behdad Esfahbod -Date: Sun Sep 8 15:08:02 2019 -0400 +commit 4ad686b9c0460bdc88663b882e5039b808bf8cce +Author: Garret Rieger +Date: Wed Mar 25 23:32:28 2020 -0700 - Change HB_VAR_ARRAY to 1 again + [subset] fix fuzzer timeout in layout closure - To fix MSVC bots, while I work on changing this to 0 permanently. + Bail out of chain context lookup expansion once the lookup limit is encountered. - src/hb.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-layout-gsubgpos.hh | 26 +++++++++++++++++++++ + ...ase-minimized-hb-subset-fuzzer-5713850117914624 | Bin 0 -> 1048576 bytes + 2 files changed, 26 insertions(+) -commit 39cf8e21be2bf69717cf60a339b3ad26c6f7985b +commit f0ce56bbd031a8b922e9695670c09c8a385c657f Author: Ebrahim Byagowi -Date: Sat Sep 7 15:27:30 2019 +0430 +Date: Tue Mar 24 22:53:38 2020 +0430 - [number] Add overflow checks used to be done in parse_bcd + [meson] Don't compile test-bimap on msvc either - Which were removed in 1083df8 + MSVC doens't like its NullPool, + + test-bimap.cc.obj : error LNK2019: unresolved external symbol "unsigned __int64 const * const _hb_NullPool" (?_hb_NullPool@@3QB_KB) referenced in function - src/hb-number-parser.hh | 60 +++++++++++++++++++++++++++++++++---------------- - src/hb-number-parser.rl | 38 ++++++++++++++++++++++++------- - 2 files changed, 71 insertions(+), 27 deletions(-) + src/meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 47d82713a144e06e00a486b3aa7d3934d62d68fd +commit 22f311e100bf18728f3d697b724e643a4a5c917e Author: Ebrahim Byagowi -Date: Fri Sep 6 20:33:10 2019 +0430 +Date: Tue Mar 24 22:43:02 2020 +0430 - Replace strtod with a ragel implementation - - Use a ragel based number parser when strtod_l couldn't be found - as libc's strtod may is locale sensetivity which we need to not. + [meson] Don't compile noinst_programs in msvc for now - src/Makefile.sources | 2 + - src/hb-number-parser.hh | 223 ++++++++++++++++++++++++++++++++++++++++++++++++ - src/hb-number-parser.rl | 122 ++++++++++++++++++++++++++ - src/hb-number.cc | 3 +- - src/test-number.cc | 30 +++++++ - 5 files changed, 379 insertions(+), 1 deletion(-) + src/meson.build | 40 ++++++++++++++++++++++------------------ + 1 file changed, 22 insertions(+), 18 deletions(-) -commit 80613e5b9ee31125f4390012719e6f39970118d3 +commit 7054b122068f14fda3442c1a3d2c05562ef8453d Author: Ebrahim Byagowi -Date: Sat Sep 7 14:25:54 2019 +0430 +Date: Tue Mar 24 22:35:41 2020 +0430 - Minor, remove unused header + [meson] Mark rest of non-install executables explicitly - src/hb-common.cc | 3 --- - 1 file changed, 3 deletions(-) + src/meson.build | 12 ++++++------ + test/api/meson.build | 2 ++ + test/fuzzing/meson.build | 1 + + 3 files changed, 9 insertions(+), 6 deletions(-) -commit 5902198cee9b9939ae310f459f9f18f5f1b07424 -Author: Behdad Esfahbod -Date: Fri Sep 6 21:36:31 2019 -0400 +commit 68df3f7dacfa85d61fa7c059a13a09925b613484 +Author: Ebrahim Byagowi +Date: Tue Mar 24 20:58:38 2020 +0430 - [kerx] Fix offset issue in kern format 2 - - Fixes tests with HB_VAR_ARRAY != 1, as done in previous commit. + [meson] test/api, separate subset tests - src/hb-aat-layout-common.hh | 2 +- - src/hb-aat-layout-kerx-table.hh | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) + test/api/meson.build | 20 ++++++++++++++++---- + 1 file changed, 16 insertions(+), 4 deletions(-) -commit 861547d5315be4cb22f3a1e7cd59696d8657ca49 -Author: Behdad Esfahbod -Date: Fri Sep 6 16:55:00 2019 -0400 +commit 600bf21fbc9076e1a7c276b41a7fcd610dae8adc +Author: Ebrahim Byagowi +Date: Tue Mar 24 20:08:40 2020 +0430 - Change HB_VAR_ARRAY from 1 to 0 - - Going to see which compilers it breaks and special-case those... + [meson] Add draw-fuzzer runner - src/hb.hh | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) + test/fuzzing/meson.build | 22 ++++++++++++++-------- + 1 file changed, 14 insertions(+), 8 deletions(-) -commit 0e294c455e7f2e50172f65463ab016f1372d4c59 -Author: Behdad Esfahbod -Date: Fri Sep 6 16:54:27 2019 -0400 +commit 466dbaa2583c9570016208655951b0b2466ac6c7 +Author: Ebrahim Byagowi +Date: Tue Mar 24 19:52:43 2020 +0430 - Rename VAR to HB_VAR_ARRAY + [meson] Add a note on meson stability status - src/hb-machinery.hh | 2 +- - src/hb-open-type.hh | 8 ++++---- - src/hb-ot-cff-common.hh | 6 +++--- - src/hb-ot-cff1-table.hh | 4 ++-- - src/hb-ot-layout-common.hh | 2 +- - src/hb-ot-maxp-table.hh | 2 +- - src/hb-string-array.hh | 2 +- - src/hb.hh | 2 +- - 8 files changed, 14 insertions(+), 14 deletions(-) + meson.build | 2 ++ + 1 file changed, 2 insertions(+) -commit c379faed2bcca1cc1a81b0de132fc3c4f7f7a080 -Author: Behdad Esfahbod -Date: Fri Sep 6 16:41:12 2019 -0400 +commit 28deb6b718997976a519e66e9aa8c15d8f117217 +Author: Ebrahim Byagowi +Date: Tue Mar 24 19:41:53 2020 +0430 - Fix a few struct size declarations - - Was wrong. As excercised by defining VAR to other than 1 in hb.hh. + [meson] test/fuzzing simplify - src/hb-aat-layout-feat-table.hh | 2 +- - src/hb-ot-cff-common.hh | 2 +- - src/hb-ot-color-sbix-table.hh | 2 +- - src/hb-ot-layout-common.hh | 2 +- - 4 files changed, 4 insertions(+), 4 deletions(-) + test/fuzzing/meson.build | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) -commit 7d4da8b86242d5a541e501937ddf321716b43f07 -Author: Evgeniy Reizner -Date: Fri Sep 6 19:24:32 2019 +0300 +commit 78622231ac6da55bf86e598a7bca9e50471c03ab +Author: Ebrahim Byagowi +Date: Tue Mar 24 19:39:42 2020 +0430 - Remove duplicated tests from test-ot-tag (#1958) + [meson] More comment on tests are causing timeout failure - test/api/test-ot-tag.c | 3 --- - 1 file changed, 3 deletions(-) + test/fuzzing/meson.build | 3 ++- + test/subset/meson.build | 5 +++-- + 2 files changed, 5 insertions(+), 3 deletions(-) -commit 3aceee2527ad921e0d589e42a1fe451e0fc67ee0 -Author: Behdad Esfahbod -Date: Fri Sep 6 12:17:18 2019 -0400 +commit 9bc792f416dddd4aabb99780c632010d97054f5d +Author: Ebrahim Byagowi +Date: Tue Mar 24 19:37:56 2020 +0430 - Revert "[null] Silence undefined-behavior complaints with too-small null bytes" - - This reverts commit 911c76abcdfe89770b252eb0d4eb621c0db00ad5. - - Broke tests. I'm not sure I understand why. At any rate, this was a - bad way to fix. I'll look into understanding as well as better fix. + [meson] Don't set MALLOC_PERTURB_ as it is already set by meson - src/hb-null.hh | 6 ------ - 1 file changed, 6 deletions(-) - -commit 911c76abcdfe89770b252eb0d4eb621c0db00ad5 -Author: Behdad Esfahbod -Date: Fri Sep 6 11:53:11 2019 -0400 - - [null] Silence undefined-behavior complaints with too-small null bytes - - Fixes https://bugzilla.mozilla.org/show_bug.cgi?id=1577584 - - src/hb-null.hh | 6 ++++++ - 1 file changed, 6 insertions(+) - -commit 3c81246f66585edd8ee4515d226b133c290e9d7c -Author: Behdad Esfahbod -Date: Sun Sep 1 19:25:50 2019 -0500 - - [subset] Use newer iter tools in SinglePosFormat1 - - src/hb-ot-layout-gpos-table.hh | 8 ++------ - 1 file changed, 2 insertions(+), 6 deletions(-) + test/api/meson.build | 9 ++------- + 1 file changed, 2 insertions(+), 7 deletions(-) -commit 9510e918f72d2496f5e2ec84c58e79af944c8a0b -Author: Behdad Esfahbod -Date: Sun Sep 1 16:25:33 2019 -0500 +commit e8808c1c203c306f7b7667f9a0f32422c9f7abbb +Author: Ebrahim Byagowi +Date: Tue Mar 24 19:15:09 2020 +0430 - [iter] Partialize hb_zip() + [meson] Minor, replace tabs with spaces - src/hb-iter.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + .editorconfig | 1 + + meson.build | 4 ++-- + src/meson.build | 32 ++++++++++++++++---------------- + test/shaping/meson.build | 16 ++++++++-------- + 4 files changed, 27 insertions(+), 26 deletions(-) -commit 52d19ba4591e822708e52a8fc96d9821fe2668f4 -Author: Behdad Esfahbod -Date: Sun Sep 1 19:42:08 2019 -0500 +commit 4dfda9feaa431c2ab19d87cb177cc2502f5f0c21 +Author: Ebrahim Byagowi +Date: Tue Mar 24 19:33:31 2020 +0430 - Minor + [meson] Update and simplify test/shaping - test/subset/Makefile.am | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) + test/shaping/meson.build | 538 +++++++++++++++++++++++------------------------ + 1 file changed, 268 insertions(+), 270 deletions(-) -commit cad698568a36ea6c929b4c888bd5e8aafe8d39e3 +commit f22e92bb300775c1d494c841c6fb26b0bbc96668 Author: Ebrahim Byagowi -Date: Wed Sep 4 10:59:19 2019 +0430 +Date: Tue Mar 24 19:32:55 2020 +0430 - Use roundf to fix cast to int difference of msys2 w64 + [meson] Update test/api from autotools - src/test-number.cc | 14 +++++++------- - 1 file changed, 7 insertions(+), 7 deletions(-) + test/api/meson.build | 118 ++++++++++++++++++++++++++++++--------------------- + 1 file changed, 70 insertions(+), 48 deletions(-) -commit 88c73359da3f7078d02f27087790c7109ab4d248 +commit e248a4e46c5c94b6de349d0fd0e1765b29acad99 Author: Ebrahim Byagowi -Date: Wed Sep 4 11:16:18 2019 +0430 +Date: Tue Mar 24 18:56:49 2020 +0430 - Check roundf availibity in autotools - - Hmm, not sure how I missed it. + [make] Minor reordering on test/api/Makefile.am - configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + test/api/Makefile.am | 30 +++++++++++------------------- + 1 file changed, 11 insertions(+), 19 deletions(-) -commit 1083df8b80b08aa1a4f2dabfe414aaa4a0ec8aa1 +commit 2db8279162be7ac184ccf99982fad2aeeb0d7540 Author: Ebrahim Byagowi -Date: Wed Sep 4 01:22:21 2019 +0430 +Date: Tue Mar 24 18:55:56 2020 +0430 - Use hb_parse_double in CFF::dict_opset_t::parse_bcd + [meson] Don't compile test-{algs,iter,meta} on msvc - src/Makefile.sources | 2 + - src/hb-cff-interp-dict-common.hh | 136 +++++++++------------------------------ - 2 files changed, 31 insertions(+), 107 deletions(-) + src/meson.build | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) -commit 57f88e11d4c48f40a2e56625a54bdfed4aae601a +commit 3385afacd3daabc98e69d1880dad558faa932842 Author: Ebrahim Byagowi -Date: Wed Sep 4 01:20:50 2019 +0430 +Date: Tue Mar 24 18:55:01 2020 +0430 - [number] Turn hb_parse_float into hb_parse_double + [meson] Don't run check-includes if is amalgam build - src/hb-common.cc | 6 +++++- - src/hb-number.cc | 16 ++++++++-------- - src/hb-number.hh | 4 ++-- - src/test-number.cc | 44 ++++++++++++++++++++++---------------------- - 4 files changed, 37 insertions(+), 33 deletions(-) + src/meson.build | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) -commit 65690b5a4bf1186a072e8e918c5e01464f918d46 +commit 6a8a1dc5bb67e2acd3fb3e8aae4cb558e3b093f7 Author: Ebrahim Byagowi -Date: Tue Sep 3 23:09:47 2019 +0430 +Date: Tue Mar 24 16:04:33 2020 +0430 - [number] Add whole buffer check and test it + [meson] Port src/ binary artifacts to meson - src/hb-algs.hh | 6 ++---- - src/hb-buffer-serialize.cc | 12 ++++-------- - src/hb-number.cc | 39 ++++++++++++++++++++++++--------------- - src/hb-number.hh | 9 ++++++--- - src/test-number.cc | 19 ++++++++++++++++--- - 5 files changed, 52 insertions(+), 33 deletions(-) + src/meson.build | 416 +++++++++++++++++++++++++++++++++++++++++--------------- + 1 file changed, 306 insertions(+), 110 deletions(-) -commit 3661eb6105a33a763736d8dc4a2cd95c01aa4332 +commit d57fc627e9923579aed3d451c8f3b15520805fc1 Author: Ebrahim Byagowi -Date: Tue Sep 3 19:43:14 2019 +0430 +Date: Tue Mar 24 16:03:04 2020 +0430 - Don't check null terminaion of source in hb_codepoint_parse - - This isn't what intended originally, just checking if consumed - all the buffer is enough. + [meson] raise timeout value of subset fuzzer - src/hb-algs.hh | 4 ++-- - src/test-number.cc | 32 +++++++++++++++++++++++++++++++- - 2 files changed, 33 insertions(+), 3 deletions(-) + test/fuzzing/meson.build | 2 ++ + 1 file changed, 2 insertions(+) -commit 3a162727501ad0c56d5d6561cace115d858eacb7 +commit 4738dff18e7644306c3526b8cc9429fda6d6db0d Author: Ebrahim Byagowi -Date: Tue Sep 3 17:19:33 2019 +0430 +Date: Mon Mar 23 23:37:49 2020 +0430 - [test] resolve msvc complain on signedness comparing + [make] minor move on Makefile.am - src/test-number.cc | 14 +++++++------- - 1 file changed, 7 insertions(+), 7 deletions(-) + src/Makefile.am | 40 ++++++++++++++++++++-------------------- + 1 file changed, 20 insertions(+), 20 deletions(-) -commit 005389beb5a28e2a94b40d0bb8229e9598b84b1d -Author: Ebrahim Byagowi -Date: Tue Sep 3 17:00:46 2019 +0430 +commit b07714d6b53bb20a2796f5efa607dc32aac587f1 +Author: Simon Cozens +Date: Sat Mar 14 17:55:27 2020 +0000 - Use hb_parse_uint in deserializer token parser + Add messages for GPOS/GSUB phases - src/hb-buffer-serialize.cc | 9 ++++++--- - 1 file changed, 6 insertions(+), 3 deletions(-) + src/hb-ot-layout.cc | 2 ++ + 1 file changed, 2 insertions(+) -commit 3d5b1df7ab689871db37ec9a2f5b1ff1665fdb20 +commit 748e1cf8980e8c54b61ec86599f94450e98ad47a Author: Ebrahim Byagowi -Date: Tue Sep 3 16:58:16 2019 +0430 +Date: Sat Mar 21 23:31:52 2020 +0430 - [number] Add test + [subset] Avoid linking to libstdc++ in libharfbuzz-subset.so + + Just like other targets (except harfbuzz-icu) avoid linking to libstdc++ - src/Makefile.am | 6 +- - src/test-number.cc | 180 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 185 insertions(+), 1 deletion(-) + src/Makefile.am | 1 + + 1 file changed, 1 insertion(+) -commit b5e6805ee777347ae13ba0133ca0d64252ef9d55 +commit 761695264b309693346dd027d38e6bc53056c3ab Author: Ebrahim Byagowi -Date: Tue Sep 3 15:23:40 2019 +0430 +Date: Thu Mar 19 11:43:37 2020 +0330 - [number] Minor tweak on parser related codes + [tests] Remove py2 workaround for lack of timeout in subprocess - src/hb-algs.hh | 6 +++--- - src/hb-buffer-serialize.cc | 6 ++---- - src/hb-common.cc | 14 ++++++-------- - src/hb-number.cc | 6 ++---- - 4 files changed, 13 insertions(+), 19 deletions(-) + test/fuzzing/run-draw-fuzzer-tests.py | 28 ++++++---------------------- + test/fuzzing/run-shape-fuzzer-tests.py | 28 ++++++---------------------- + test/fuzzing/run-subset-fuzzer-tests.py | 32 ++++++++------------------------ + 3 files changed, 20 insertions(+), 68 deletions(-) -commit e2cecf1f34fe1cc62fd8260172f9bd694a17fac5 +commit b5526a09ff89780de4584ff422127cb962b138f3 Author: Ebrahim Byagowi -Date: Tue Sep 3 15:14:21 2019 +0430 +Date: Wed Mar 18 23:58:20 2020 +0330 - [number] Remove parsing code duplication of the calls using lambda + [tools] Remove in-house 'which' now that we have py3 - src/hb-number.cc | 57 +++++++++++++++++++------------------------------------- - 1 file changed, 19 insertions(+), 38 deletions(-) + test/fuzzing/run-draw-fuzzer-tests.py | 22 ++-------------------- + test/fuzzing/run-shape-fuzzer-tests.py | 22 ++-------------------- + test/fuzzing/run-subset-fuzzer-tests.py | 22 ++-------------------- + test/subset/run-tests.py | 22 +++------------------- + 4 files changed, 9 insertions(+), 79 deletions(-) -commit a77bb7eb41d34b19a672bb4ede038cc1b19a3945 +commit a0c58be371f67aa03335f40b98aa7073f1968cab Author: Ebrahim Byagowi -Date: Tue Sep 3 14:49:14 2019 +0430 +Date: Wed Mar 18 23:40:59 2020 +0330 - Move hb_codepoint_parse to hb_parse_uint + [tools] Remove py2 remains - src/hb-algs.hh | 20 +++++++++----------- - src/hb-buffer-serialize.cc | 1 - - src/hb-common.cc | 1 - - src/hb-number.cc | 26 +++++++++++++++++++++++--- - src/hb-number.hh | 3 +++ - src/hb.hh | 3 ++- - 6 files changed, 37 insertions(+), 17 deletions(-) + src/gen-os2-unicode-ranges.py | 5 ----- + src/gen-use-table.py | 7 +------ + test/shaping/hb_test_tools.py | 4 ---- + 3 files changed, 1 insertion(+), 15 deletions(-) -commit 43372fbb5afe31ea1e66d450f29de718b6190828 +commit 2e29a4077b48e11d5c33a0d054dafcd17749ff07 Author: Ebrahim Byagowi -Date: Tue Sep 3 01:02:40 2019 +0430 +Date: Sat Mar 14 16:34:36 2020 +0330 - Merge and aggregate number parsing logics to form hb-number + [ci/appveyor] Adopt with Meson - src/Makefile.sources | 2 + - src/harfbuzz.cc | 1 + - src/hb-buffer-serialize.cc | 41 +++++--------- - src/hb-common.cc | 121 +++------------------------------------ - src/hb-number.cc | 138 +++++++++++++++++++++++++++++++++++++++++++++ - src/hb-number.hh | 35 ++++++++++++ - 6 files changed, 197 insertions(+), 141 deletions(-) + appveyor.yml | 59 +++++++++++++---------------------------------------------- + 1 file changed, 13 insertions(+), 46 deletions(-) -commit d50d2fcbc7233f0473493e17ab3fb243d8d30edd +commit 03564fd2cfa752c28a3f306994cfc8865d208cfd Author: Ebrahim Byagowi -Date: Tue Sep 3 05:02:06 2019 +0430 +Date: Sat Mar 14 20:09:00 2020 +0330 - Fallback if roundf didn't exist, like in dietlibc (#1953) + [test] fix misspell - CMakeLists.txt | 2 +- - src/hb.hh | 9 +++++++++ - 2 files changed, 10 insertions(+), 1 deletion(-) + test/shaping/run-tests.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit d3b984d3790d61931d4427ad7c0ae6547f8f1076 +commit 1b8a37f75f44bf6cd20250c0dcfc1c0a70879aa5 Author: Ebrahim Byagowi -Date: Mon Sep 2 18:18:25 2019 +0430 +Date: Sat Mar 14 20:06:41 2020 +0330 - Revert in-house pow10 (d80a3ea) and fix oss-fuzz/16922 + [test] minor fix - Probably can be fixed but merging it was wrong so let's revert. + oops... - src/hb-cff-interp-dict-common.hh | 37 ++------------------- - ...ase-minimized-hb-subset-fuzzer-5728664968232960 | Bin 0 -> 28 bytes - 2 files changed, 3 insertions(+), 34 deletions(-) + test/shaping/run-tests.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 41d6e95b0d47c874b73b314cd147e6ea8ec5ddfb +commit 0423da33732cda737354f52b37053809a80571b1 Author: Ebrahim Byagowi -Date: Mon Sep 2 01:41:48 2019 +0430 +Date: Sat Mar 14 20:05:23 2020 +0330 - [subset] Use internal API of hb_set_t + [test] minor fix + + macos tests are using absolute path which aren't relevant in Windows - src/hb-subset.cc | 7 +++---- - 1 file changed, 3 insertions(+), 4 deletions(-) + test/shaping/run-tests.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 8ccf328d548a51140e22fe61ba6fdae3f7194aa2 +commit 74fdd34f4d1912b506b2e640f52b3606dad4a3aa Author: Ebrahim Byagowi -Date: Mon Sep 2 00:02:06 2019 +0430 +Date: Sat Mar 14 20:03:14 2020 +0330 - [subset] Run once for a tag + [test] make run-tests.py work on Windows - src/hb-subset.cc | 5 ++++- + test/shaping/run-tests.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) -commit 0954c8f7a003b4130cfdc1b3f29db8c57953a78f -Author: Khaled Hosny -Date: Sun Sep 1 17:09:08 2019 +0200 +commit 93b3e30215599fad6ec40351e5eef0a91e2ae031 +Author: Tim-Philipp Müller +Date: Sat Mar 14 11:27:50 2020 +0000 - [ft] Prefer symbol cmap subtable if found (#1948) + [meson] fix icu-related linking errors in test with amalgam build - Similar to commit d304d60e4d49df14ed85d6646680085f27bafbf2 for ot-font. + test-unicode.c:960: undefined reference to `hb_icu_get_unicode_funcs' + test-unicode.c:961: undefined reference to `hb_icu_get_unicode_funcs' + + For now add the icu sources to libharfbuzz also for the amalgam + build, later we need to have a separate harfbuzz-icu module and + link against that, and/or generate harfbuzz.cc. - src/hb-ft.cc | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/meson.build | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) -commit 4375858792f3e3cc2fae72c3ae3327f52884f780 -Author: Ebrahim Byagowi -Date: Sun Sep 1 15:13:05 2019 +0430 +commit a3892be70108adb0cbafcff9bf4c2ebc0f65acb0 +Author: Tim-Philipp Müller +Date: Sat Mar 14 01:08:15 2020 +0000 - [editorconfig] Treat Ragel files also as C sources + [meson] fix spurious warning when building test/api C sources + + Fixes compiler warning + + test-unicode.c:589:1: warning: ‘test_unicode_properties_lenient’ defined but not used + + which didn't happen with autotools. + + Reason it does with meson is that the setup for C was slightly wrong. + We would only add -DHAVE_CONFIG_H to cpp_args which is only valid when + compiling C++ code, but not plain C code, and many of these tests were + plain C. + + Instead pass -DHAVE_CONFIG_H via add_project_arguments() and make sure + to set both c_args and cpp_args when building test executables. + + Fixes https://github.com/harfbuzz/harfbuzz/issues/2257 - .editorconfig | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + meson.build | 5 +++-- + test/api/meson.build | 3 +-- + 2 files changed, 4 insertions(+), 4 deletions(-) -commit d80a3ea983534e291aee273dba5b1c6e889dadfa -Author: Ebrahim Byagowi -Date: Sun Sep 1 14:05:16 2019 +0430 +commit bb8aaa310887aa6b4a5ec2bfa9ee0330f1619c75 +Author: Tim-Philipp Müller +Date: Sat Mar 14 01:05:38 2020 +0000 - [cff] Implement in-house power of 10 + [meson] use add_project_arguments() instead of add_global_arguments() - A minimal power only for natural numbers exponents of ten, for portability. + .. and simplify, can pass two languages in one go. - Found the idea in Tcl/Tk but wrote it myself after weeks and it turned out - being a different implementation, reverse direction, constexpr, etc. + add_global_arguments() won't work if harfbuzz is used as a + meson subproject. - src/hb-cff-interp-dict-common.hh | 37 ++++++++++++++++++++++++++++++++++--- - 1 file changed, 34 insertions(+), 3 deletions(-) + meson.build | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) -commit f441a7c00837fbe7843df6faedd5f6383c2258c3 -Author: Ebrahim Byagowi -Date: Sun Sep 1 02:18:09 2019 +0430 +commit 2f556c38c08d6d19bed115cc5ab5e0e369d9b4d0 +Author: Garret Rieger +Date: Fri Mar 13 12:21:10 2020 -0700 - Don't allow reference blob be accessed using empty tag in hb_face_reference_table (#1947) + [subset] Fix crash when serializer runs out of room during gpos subsetting. - src/hb-face.cc | 3 +++ - src/hb-subset.cc | 5 ----- - 2 files changed, 3 insertions(+), 5 deletions(-) + src/hb-ot-layout-gpos-table.hh | 1 + + 1 file changed, 1 insertion(+) -commit c9eb913f4cf3d9d4a28059c7ecf7145ad3c49c65 -Author: Behdad Esfahbod -Date: Sat Aug 31 15:21:02 2019 -0500 +commit 430bf696537a4cf19e3ad371c4485f9580b4433b +Author: Garret Rieger +Date: Fri Mar 13 11:20:34 2020 -0700 - [iter] Simplify hb_chop() + Add potentially crashing font as a fuzzer seed. - src/hb-iter.hh | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + test/fuzzing/fonts/kanit.ttf | Bin 0 -> 160304 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) -commit 67ec9fa9e48714f595ab17bb8a673b5ee7c73aa8 -Author: Behdad Esfahbod -Date: Sat Aug 31 14:51:49 2019 -0500 +commit c54ab9ba791efe5492dac89c64ac449de308eb6f +Author: Ebrahim Byagowi +Date: Fri Mar 13 14:41:28 2020 +0330 - [iter] Add hb_chop() + Provide meson wrap files on release tarball - src/hb-iter.hh | 14 ++++++++++++++ - src/test-iter.cc | 2 +- - 2 files changed, 15 insertions(+), 1 deletion(-) + Makefile.am | 7 +++++++ + 1 file changed, 7 insertions(+) -commit 5828d8e83c023547f0add77b6413967056c2a13c -Author: Behdad Esfahbod -Date: Sat Aug 31 14:36:44 2019 -0500 +commit f1dd605cd9023b697c319b6640fdc25f78ef7e8c +Author: Ebrahim Byagowi +Date: Fri Mar 13 14:40:07 2020 +0330 - [iter] Add hb_take() specialization for arrays + [docs] Update to mention meson - src/hb-iter.hh | 11 +++++++++++ - 1 file changed, 11 insertions(+) + BUILD.md | 7 ++----- + CONFIG.md | 2 +- + TESTING.md | 5 ++--- + 3 files changed, 5 insertions(+), 9 deletions(-) -commit 398b296f3b205daa8964de1a63957efeb59f6bdf -Author: Behdad Esfahbod -Date: Sat Aug 31 12:44:24 2019 -0500 +commit 838346c54a332cc7acafea676b4272ab8419c9e8 +Author: Chun-wei Fan +Date: Fri Mar 13 18:01:17 2020 +0800 - [iter] Add hb_len() + meson: Support GDI integration + + ...and supersede the configuration option uniscribe with gdi, as Uniscribe is + tightly tied to GDI. This means that enabling GDI would also mean enabling + Uniscribe. - src/hb-iter.hh | 8 ++++++++ - src/test-iter.cc | 2 +- - 2 files changed, 9 insertions(+), 1 deletion(-) + meson.build | 9 +++++---- + meson_options.txt | 4 ++-- + src/meson.build | 5 +++++ + 3 files changed, 12 insertions(+), 6 deletions(-) -commit 875131d47854c162c1d0a39a5c0f8f8d0c5f24e0 -Author: Behdad Esfahbod -Date: Sat Aug 31 12:42:52 2019 -0500 +commit 9d0e6aef8abe12270df161d7535d6bc741cf4c31 +Author: Chun-wei Fan +Date: Fri Mar 13 16:56:55 2020 +0800 - [iter] Add hb_take() + Meson: Look harder for Cairo on Visual Studio + + Since Cairo's build system for Visual Studio does not generate pkg-config files + for us, look for cairo.h and cairo.lib manually if the pkg-config files cannot + be found. + + Also look for cairo-ft more carefully: ensure that we have cairo-ft.h, and one + of its symbols can be found in the same cairo.lib that we previously found. - src/hb-iter.hh | 12 ++++++++++-- - src/test-iter.cc | 1 + - 2 files changed, 11 insertions(+), 2 deletions(-) + meson.build | 18 +++++++++++++++--- + 1 file changed, 15 insertions(+), 3 deletions(-) -commit 1f88dae9f54d18cd740f149d020b2bb435dc9378 -Author: Behdad Esfahbod -Date: Sat Aug 31 12:24:42 2019 -0500 +commit 5efce600ab3a8e4e7f429f5d683595c33d6cbe45 +Author: Chun-wei Fan +Date: Fri Mar 13 16:40:20 2020 +0800 - [iter] Make iota() accept invokable for increasing to next item + Meson: Try harder to look for ICU on Visual Studio + + ICU's Visual Studio build files do not generate pkg-config files for us, unless + it is built with Cygwin instead of the project files. If pkg-config files for + ICU cannot be found, look for its headers and .lib manually. - src/hb-iter.hh | 21 ++++++++++++++++----- - src/test-iter.cc | 1 + - 2 files changed, 17 insertions(+), 5 deletions(-) + meson.build | 21 ++++++++++++++++++++- + 1 file changed, 20 insertions(+), 1 deletion(-) -commit 3bc86fb237b668e738a78397be04c603e7cf083b -Author: Behdad Esfahbod -Date: Fri Aug 30 16:39:52 2019 -0500 +commit 7baa8e0dbe816769f1ceeffdc2e72af7797e5df9 +Author: Chun-wei Fan +Date: Fri Mar 13 16:21:25 2020 +0800 - [algs] Fix hb_inc/dec signature + meson: Updates to Uniscribe and DirectWrite build support + + Update the DirectWrite support to look for dwrite_1.h, and give the green light + for both the DirectWrite and Uniscribe build options. - src/hb-algs.hh | 5 +++-- - src/test-algs.cc | 4 ++++ - 2 files changed, 7 insertions(+), 2 deletions(-) + meson.build | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) -commit b1378d8a217a53e17562abebee22276e09528f8c -Author: Behdad Esfahbod -Date: Fri Aug 30 12:10:45 2019 -0500 +commit 733414b286b544b54c48e72ba8ae78d5584c157d +Author: Chun-wei Fan +Date: Fri Mar 13 16:15:21 2020 +0800 - [iter] Add hb_repeat() + meson: Try harder to find FreeType on Visual Studio + + If we can't find FreeType via pkg-config or CMake, try looking for it manually, + before we attempt to build it as a fallback. - src/hb-iter.hh | 37 +++++++++++++++++++++++++++++++++---- - src/test-iter.cc | 3 +++ - 2 files changed, 36 insertions(+), 4 deletions(-) + meson.build | 14 ++++++++++++-- + 1 file changed, 12 insertions(+), 2 deletions(-) -commit 966a18b92a8b95d8024ae67bc237eeffe5019711 -Author: Behdad Esfahbod -Date: Fri Aug 30 12:07:17 2019 -0500 +commit 4b4d5c295d584809e0281b27687757e895e7edfc +Author: Chun-wei Fan +Date: Fri Mar 13 16:00:09 2020 +0800 - [iter] Remove some && + src/meson.build: Some cleanups for Visual Studio builds + + We don't actually need the .def files (vs_module_defs) entry when we are + building DLLs with Visual Studio as long as we have HB_DLL_EXPORT defined. + + Plus, to maintain compatibility with the CMake builds, for Visual Studio builds + we do not prefix the libraries with 'lib', nor have a '-0' suffix for the DLL + file name. - src/hb-iter.hh | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/meson.build | 26 +++++++++++++++----------- + 1 file changed, 15 insertions(+), 11 deletions(-) -commit de45775c37873dd5818058dfe316cc0e98590334 -Author: Behdad Esfahbod -Date: Fri Aug 30 12:02:46 2019 -0500 +commit da95a8c239bda7020716cc8c7ba34c380f68ffc3 +Author: Chun-wei Fan +Date: Fri Mar 13 15:49:08 2020 +0800 - [iter] Use hb_ridentity instead of lazy + + Shaping tests: Skip FreeType tests if support not present + + HarfBuzz could have been built without FreeType, so we skip the test + when hb-shape reports that the font function `ft' is unknown - src/hb-iter.hh | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + test/shaping/run-tests.py | 40 +++++++++++++++++++++++++++------------- + 1 file changed, 27 insertions(+), 13 deletions(-) -commit ce4d63beec08995aaa6b8b45f7986f074a73f295 -Author: Behdad Esfahbod -Date: Fri Aug 30 11:59:50 2019 -0500 +commit 91ca17e1fd8145e863a5df27092ddd20aa2599f5 +Author: Chun-wei Fan +Date: Fri Mar 13 12:19:32 2020 +0800 - [iter] Separate hb_iota implementation from hb_range + src/hb-gobject-enums.cc.tmpl: Replace © with (C) + + This was, we also avoid Visual Studio compiler warnings C4828 as that sign is + not favored when /utf-8 is enabled, which is the norm nowadays as Visual Studio + 2015 or later is required to build harfbuzz nowadays. - src/hb-iter.hh | 29 +++++++++++++++++++++++++++-- - 1 file changed, 27 insertions(+), 2 deletions(-) + src/hb-gobject-enums.cc.tmpl | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 814dc3cbe5a5e51b48cb962a6f7053797bbb8e0d -Author: Behdad Esfahbod -Date: Fri Aug 30 10:20:30 2019 -0500 +commit 62fb6738d5115298ee7c72a4da3d9858b08a7269 +Author: Chun-wei Fan +Date: Fri Mar 13 12:18:09 2020 +0800 - [iter] Rename + Fix gen-def for harefbuzz-gobject - Moving towards making iota useful for non-integers. + The © sign is causing issues for the script, so replace those with (C) - src/hb-iter.hh | 35 ++++++++++++++++++----------------- - 1 file changed, 18 insertions(+), 17 deletions(-) + src/hb-gobject-enums.h.tmpl | 2 +- + src/hb-gobject-structs.h | 2 +- + src/hb-gobject.h | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) -commit 2d5643aed4a5a4bc3ea129d4af3dcbe7af7b9995 -Author: Behdad Esfahbod -Date: Fri Aug 30 09:51:22 2019 -0500 +commit 8d425ed446e6b6cce30c5da16d9ad7d492f0c368 +Author: Chun-wei Fan +Date: Fri Mar 13 12:15:28 2020 +0800 - [algs] Add hb_inc() and hb_dec()) + meson: Fix harfbuzz-gobject builds without introspection + + Make the `sources:` field reflect the items depending on whether introspection + is being built - src/hb-algs.hh | 12 ++++++++++++ - 1 file changed, 12 insertions(+) + src/meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 7eafe94705bb818aac71fbc142158a22da622d19 -Author: Behdad Esfahbod -Date: Fri Aug 30 09:40:40 2019 -0500 +commit 3341d5346e530cd67d23f93cbc85e21bba7e8d0e +Author: Chun-wei Fan +Date: Fri Mar 13 12:07:06 2020 +0800 - Revert "[array] Add chop()" - - This reverts commit 545fe9d9f0870568c40c17591f3f224c228feba6. + meson: Don't apply -DHB_DLL_EXPORT to all targets - Breaks gcc 4.8 and MSVC all versions. + Only have it apply to the libraries when they are not built statically on + Visual Studio + + meson.build | 1 - + src/meson.build | 11 ++++++++--- + 2 files changed, 8 insertions(+), 4 deletions(-) + +commit a224f4179fea20b782cc131e4840c258cc3600ad +Author: Ebrahim Byagowi +Date: Fri Mar 13 08:33:34 2020 +0330 + + Turn more of simple dagger chains to foreach - Will add hb_chop() that works on all iterators instead. + Less noise, as was agreed before and applied 385741d also - src/hb-array.hh | 14 -------------- - 1 file changed, 14 deletions(-) + src/hb-ot-cff-common.hh | 21 ++++--- + src/hb-ot-cmap-table.hh | 142 ++++++++++++++++++++++-------------------------- + src/hb-ot-hdmx-table.hh | 7 +-- + src/hb-pool.hh | 4 +- + 4 files changed, 79 insertions(+), 95 deletions(-) -commit 28c8dcb53f0af0dd3f4e7909285e67865a10b67b +commit 755a77d6608c5b6d4e9ee3374a4721c77ff693ac Author: Ebrahim Byagowi -Date: Sat Aug 31 12:27:14 2019 +0430 +Date: Wed Jan 29 22:26:04 2020 +0330 - [subset] minor + Move outline draw API behind HB_EXPERIMENTAL_API directive - src/hb-subset.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + .circleci/config.yml | 2 ++ + docs/harfbuzz-sections.txt | 21 --------------------- + src/gen-def.py | 24 +++++++++++++++++++++++- + src/hb-draw.cc | 24 +++++++++++++----------- + src/hb-draw.h | 4 +++- + src/hb-draw.hh | 2 ++ + src/hb-font.h | 2 ++ + src/hb-ot-cff1-table.cc | 2 ++ + src/hb-ot-cff1-table.hh | 2 ++ + src/hb-ot-cff2-table.cc | 2 ++ + src/hb-ot-cff2-table.hh | 2 ++ + src/hb-ot-glyf-table.hh | 2 ++ + src/main.cc | 4 ++++ + test/api/test-draw.c | 7 +++++++ + test/api/test-ot-face.c | 2 ++ + test/fuzzing/hb-draw-fuzzer.cc | 8 ++++++++ + 16 files changed, 76 insertions(+), 34 deletions(-) -commit 545fe9d9f0870568c40c17591f3f224c228feba6 -Author: Behdad Esfahbod -Date: Thu Aug 29 15:48:21 2019 -0700 +commit dfab7a254655f5ef5d68a2b92f0d5c197517c853 +Author: Ebrahim Byagowi +Date: Thu Mar 12 21:05:01 2020 +0330 - [array] Add chop() - - Takes n, and returns iterator of iterators that contain up to - n items each. Basically cuts the array into subarrays of size n. - The last sub-array might contain fewer. - - Ideally this should become a generic iter tool, not array-specific, - so we can use it in GPOS to chop a value matrix into rows and elements. + [cmake] Bring it back to release tarball - src/hb-array.hh | 14 ++++++++++++++ - 1 file changed, 14 insertions(+) + .circleci/config.yml | 6 ++++-- + Makefile.am | 3 ++- + 2 files changed, 6 insertions(+), 3 deletions(-) -commit c72589f13f24ca24a0613f7d9bc28b7fe1ef25c0 -Author: Behdad Esfahbod -Date: Thu Aug 29 15:45:21 2019 -0700 +commit e860000db5c393139c546a1273ba37983c729b41 +Author: Ebrahim Byagowi +Date: Thu Mar 12 21:04:06 2020 +0330 - [iter] Change item_size to get_item_size() - - By moving access to hb_static_size(Type) into a function instead of - a class-const, we can refer to iter types of incomplete types, which - come handy when a method of hb_array_t wants to return iterator - of hb_array_t. That kind of stuff. Next commit needs this to - build on clang... + [cmake] Suggest Meson port in CMake - src/hb-array.hh | 8 ++++---- - src/hb-iter.hh | 4 ++-- - 2 files changed, 6 insertions(+), 6 deletions(-) + CMakeLists.txt | 2 ++ + 1 file changed, 2 insertions(+) -commit d58e248df62457bdc8a5bab743e5de26c6fc57be -Author: Behdad Esfahbod -Date: Thu Aug 29 15:23:48 2019 -0700 +commit b1c3d0b8b0f3d8f644e7bc2f0e4aae2d383f4d79 +Author: Ebrahim Byagowi +Date: Thu Mar 12 20:59:18 2020 +0330 - [array] Add truncate() method + [cmake] cleanup - src/hb-array.hh | 4 ++++ - 1 file changed, 4 insertions(+) + CMakeLists.txt | 21 --------------------- + 1 file changed, 21 deletions(-) -commit a06edf1430ba73d24104fce5406f2bc787ce5f11 -Author: Behdad Esfahbod -Date: Thu Aug 29 15:21:18 2019 -0700 +commit cc63eb66ce7e8579c92303f8b9d8a8183ec76513 +Author: Ebrahim Byagowi +Date: Thu Mar 12 14:53:26 2020 +0330 - [array] Use injected class name more + [editorconfig] Add meson config - src/hb-array.hh | 24 ++++++++++++------------ - 1 file changed, 12 insertions(+), 12 deletions(-) + .editorconfig | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) -commit e0e0c8c10948212e97426e987b6f296dc4270c43 -Author: Behdad Esfahbod -Date: Thu Aug 29 14:58:16 2019 -0700 +commit 1dd389668847bcbc5e94573c80bb71bb87ee0d9c +Author: Ebrahim Byagowi +Date: Thu Mar 12 13:41:10 2020 +0330 - Minor + [meson] Make it work on autotools dist - src/hb-ot-layout-gpos-table.hh | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) + .circleci/config.yml | 3 ++- + Makefile.am | 3 +++ + src/Makefile.am | 1 + + util/Makefile.am | 2 ++ + 4 files changed, 8 insertions(+), 1 deletion(-) -commit 0313ef86e32a217e14950d46a3c3b98362a53dee -Author: qxliu76 <48925186+qxliu76@users.noreply.github.com> -Date: Thu Aug 29 14:09:05 2019 -0700 +commit 47a047bd16c072d883a86a8dfc6ab22de9a4be5b +Author: Ebrahim Byagowi +Date: Thu Mar 12 14:47:40 2020 +0330 - bug fix in optimizing coverage table format (#1942) + [ci] Remove the not used azure-pipelines.yml - We are comparing number of shorts, NOT number of bytes. + We will use GitHub Actions instead, same infrastructure anyway, or even better, CircleCI's Windows support - src/hb-ot-layout-common.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + azure-pipelines.yml | 21 --------------------- + 1 file changed, 21 deletions(-) -commit 38f95baf6b7a74547906e8e813c826ee8f8c272f -Author: Behdad Esfahbod -Date: Thu Aug 29 13:40:46 2019 -0700 +commit 834a224a507bc8b971b280483de3f067a709611f +Author: Garret Rieger +Date: Thu Mar 12 03:02:36 2020 -0700 - [subset] in SingleSubst subsetting, check for substitute in glyphset + [subset] Put a limit on the number of lookup indices that can be visited during closures - That matches what fonttools does and allows for specifying exact - glyphset for subset. + Fixes https://crbug.com/oss-fuzz/21025 - src/hb-ot-layout-gsub-table.hh | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) + src/hb-ot-layout-common.hh | 3 +++ + src/hb-ot-layout-gsubgpos.hh | 20 +++++++++++++++++--- + ...case-minimized-hb-subset-fuzzer-5662792105590784 | Bin 0 -> 1047599 bytes + 3 files changed, 20 insertions(+), 3 deletions(-) -commit 499029644f35be7feedca7edf4610b2594855f01 +commit 31218b41c6bf8e8d43220f7bc87af03a7c70783b Author: Ebrahim Byagowi -Date: Thu Aug 29 15:09:39 2019 +0430 +Date: Wed Mar 11 22:27:32 2020 +0330 - [gsub] Fix clang's semicolon complains + [meson] Explicit state C++11 for older compilers + + Needed as https://circleci.com/gh/harfbuzz/harfbuzz/132417 - src/hb-ot-layout-gsub-table.hh | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) + meson.build | 1 + + 1 file changed, 1 insertion(+) -commit 28620310b8a86092074d5a1c40c87fdc9a91ba61 +commit 749cf378e81be77eb7d23ba1a4f26e5dbbc67037 Author: Ebrahim Byagowi -Date: Thu Aug 29 14:55:54 2019 +0430 +Date: Wed Mar 11 22:25:27 2020 +0330 - [test] Avoid alloca use as clang complain - - Fixes https://circleci.com/gh/harfbuzz/harfbuzz/108171 complain + [meson] test meson's own unity feature also - test/api/test-ot-color.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) + .circleci/config.yml | 2 ++ + 1 file changed, 2 insertions(+) -commit 875985cd481f1609d10ad0472f1e77af075c93bc +commit f8c8be05640618cadbbcb5e4717261e6360828d5 Author: Ebrahim Byagowi -Date: Thu Aug 29 14:51:22 2019 +0430 +Date: Wed Mar 11 20:51:40 2020 +0330 - [subset] Don't allow malicious fonts to insert unlimited table headers - - Fixes https://crbug.com/oss-fuzz/16810 + [meson] Add amalgam build option - src/hb-subset.cc | 5 +++++ - ...estcase-minimized-hb-subset-fuzzer-5675720390475776 | Bin 0 -> 299037 bytes - 2 files changed, 5 insertions(+) + .circleci/config.yml | 7 +++++-- + meson_options.txt | 3 +++ + src/meson.build | 5 +++++ + 3 files changed, 13 insertions(+), 2 deletions(-) -commit dc9222b1dd197ba50f7b63eb97f3fe0891a7b7b5 -Author: Behdad Esfahbod -Date: Wed Aug 28 15:38:46 2019 -0700 +commit 365d2d3cc32fc0117d88e4a161a34c952151ba58 +Author: Ebrahim Byagowi +Date: Wed Mar 11 20:16:36 2020 +0330 - [subset] Implement AlternateSubst subsetting + [meson] Add needed compiler flags - src/hb-ot-layout-gsub-table.hh | 61 +++++++++++++++++++++++++++++++++++++----- - 1 file changed, 55 insertions(+), 6 deletions(-) + meson.build | 13 +++++++++++++ + 1 file changed, 13 insertions(+) -commit 23681b6da4368895fc049beda5a79af58aad8d69 -Author: Behdad Esfahbod -Date: Wed Aug 28 15:30:37 2019 -0700 +commit 12df69e59c1e54137c36113a5ceb1e3000e0dc0f +Author: Ebrahim Byagowi +Date: Wed Mar 11 21:52:43 2020 +0330 - Minor + Minor, delete not needed cmake testing file - src/hb-ot-layout-gsub-table.hh | 21 ++++++++------------- - 1 file changed, 8 insertions(+), 13 deletions(-) + test/subset/CMakeLists.txt | 10 ---------- + 1 file changed, 10 deletions(-) -commit 33c8e2303c23e8dfacb79ac15d8a0e6c7f866c89 -Author: Behdad Esfahbod -Date: Wed Aug 28 15:25:55 2019 -0700 +commit 943bfeda53f6a8e0aa9b32c7cb0fcc9d01b7dcff +Author: Ebrahim Byagowi +Date: Wed Mar 11 20:30:41 2020 +0330 - [subset] Implement MultipleSubst subsetting + [meson] Enable more of the subset tests - src/hb-ot-layout-gsub-table.hh | 50 ++++++++++++++++++++++++++++++++++++++++-- - 1 file changed, 48 insertions(+), 2 deletions(-) + test/subset/meson.build | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) -commit 5c43a7ba7e4cac229593f9cbe1017d3c55b111ac -Author: Behdad Esfahbod -Date: Wed Aug 28 15:09:58 2019 -0700 +commit c494d7abcd626c274477319859b9bcb873aca388 +Author: Ebrahim Byagowi +Date: Wed Mar 11 19:44:13 2020 +0330 - [GSUB] Use dagger in Ligature::intersects() + Remove cmake testing and add meson build bot + + CMake tests are broken anyway as py3 changes so let's get rid of them - src/hb-ot-layout-gsub-table.hh | 8 +------- - 1 file changed, 1 insertion(+), 7 deletions(-) + .circleci/config.yml | 90 ++++----------------------------------------- + CMakeLists.txt | 52 -------------------------- + Makefile.am | 2 +- + test/CMakeLists.txt | 4 -- + test/Makefile.am | 2 +- + test/api/CMakeLists.txt | 36 ------------------ + test/api/Makefile.am | 2 +- + test/fuzzing/CMakeLists.txt | 27 -------------- + test/fuzzing/Makefile.am | 2 +- + test/shaping/CMakeLists.txt | 28 -------------- + test/shaping/Makefile.am | 2 +- + test/subset/Makefile.am | 2 +- + 12 files changed, 13 insertions(+), 236 deletions(-) -commit b8c642c1f597fb28ef323ac3cd78541eb462a2f7 -Author: Behdad Esfahbod -Date: Wed Aug 28 15:06:45 2019 -0700 +commit 1c3f80ba136bffec00343bae87269bbc9c33ecde +Author: Ebrahim Byagowi +Date: Wed Mar 11 19:29:47 2020 +0330 - Minor + [meson] Minor updates - src/hb-ot-layout-gsub-table.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + meson.build | 4 ++-- + test/fuzzing/meson.build | 2 ++ + test/subset/meson.build | 22 +++++++++++++++++++++- + 3 files changed, 25 insertions(+), 3 deletions(-) -commit dc2c9aa0c398ac068e1385fffe1fb2b28c80d099 -Author: Behdad Esfahbod -Date: Wed Aug 28 15:05:49 2019 -0700 +commit 68f982415be747b8fd675d3eb55332a8277805e5 +Author: Aaron Boxer +Date: Mon Jul 22 12:12:02 2019 -0600 - Rename + meson: update to latest master - src/hb-open-type.hh | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) + meson_options.txt | 2 -- + src/meson.build | 21 ++++++++++++--------- + util/meson.build | 1 + + 3 files changed, 13 insertions(+), 11 deletions(-) -commit bc5ef765a874ecd9fc0634dccf0848d1ee839c9a -Author: Behdad Esfahbod -Date: Wed Aug 28 14:51:28 2019 -0700 +commit 535186fd84d0fba3710cb33a4983efbbc074fcca +Author: Tim-Philipp Müller +Date: Mon Dec 3 20:51:06 2018 +0100 - [subset] Subset ligature substitutes! - - Test with: + meson: provide a harfbuzz-config for use from CMake - $ ./hb-subset -o out.ttf NotoSansArabic-Regular.ttf --drop-tables= سلام && ./hb-view out.ttf سلام + See #822 and #1437. - src/hb-ot-layout-gsub-table.hh | 79 ++++++++++++++++++++++++++++++++++++++++-- - 1 file changed, 76 insertions(+), 3 deletions(-) + meson.build | 16 ++++++++++++++++ + src/meson.build | 14 +++++++++++++- + 2 files changed, 29 insertions(+), 1 deletion(-) -commit 42d887bd221879f57ef939838d4f72bf38268943 -Author: Behdad Esfahbod -Date: Wed Aug 28 14:47:14 2019 -0700 +commit 6afa7e1c3682b70ea49e3ec0f75a4e0b1deae3cc +Author: Tim-Philipp Müller +Date: Sun Dec 2 01:28:23 2018 +0000 - Beef up HeadlessArrayOf<> - - Should be merged with ArrayOf... - https://github.com/harfbuzz/harfbuzz/issues/1937 + meson: update harfbuzz version - src/hb-open-type.hh | 37 ++++++++++++++++++++++++++++++------- - 1 file changed, 30 insertions(+), 7 deletions(-) + meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 3ca809e3623e59b9a99bc0b9e5d10b02238bba3c -Author: Behdad Esfahbod -Date: Wed Aug 28 13:49:35 2019 -0700 +commit f1e5f4a78440b2f43a8a3fb753fe88971eddad8b +Author: Tim-Philipp Müller +Date: Sun Dec 2 00:33:43 2018 +0000 - Add ArrayOf::pop() + meson: tests: shaping: add aots tests - src/hb-open-type.hh | 2 ++ - 1 file changed, 2 insertions(+) + test/shaping/meson.build | 139 +++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 139 insertions(+) -commit 307bd6d79f11eb175f06c08c321947a447496291 -Author: Behdad Esfahbod -Date: Wed Aug 28 13:49:17 2019 -0700 +commit 84725fb005777990890a85ba9e67566c7f2e0a74 +Author: Tim-Philipp Müller +Date: Sun Dec 2 00:32:57 2018 +0000 - Add arithmetic operators to IntType<> + meson: tests: shaping: add missing in-house tests - src/hb-open-type.hh | 8 ++++++++ - 1 file changed, 8 insertions(+) + test/shaping/meson.build | 2 ++ + 1 file changed, 2 insertions(+) -commit 2e1d00c85bba98f08a728c4f6f8112d5a25d8062 -Author: Behdad Esfahbod -Date: Wed Aug 28 13:49:04 2019 -0700 +commit 8fc66dbf9f95c707f57c7714b0ee1c88338d4bd3 +Author: Tim-Philipp Müller +Date: Sat Dec 1 21:15:33 2018 +0000 - [debug] Minor + meson: tests: subset: no need to check for 'which' command any more + + Test runner script now handles that. - src/hb-debug.hh | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + test/subset/meson.build | 33 +++++++++++++-------------------- + 1 file changed, 13 insertions(+), 20 deletions(-) -commit 062cad5e28574f9f004f917afa7d010fa68fdad0 -Author: Behdad Esfahbod -Date: Wed Aug 28 13:33:08 2019 -0700 +commit 0976300be4f4f3c049f48fdc29bcabb385b6e182 +Author: Tim-Philipp Müller +Date: Sat Dec 1 21:10:57 2018 +0000 - Add ArrayOf::serialize_append + meson: pin glib wrap to 2.58.1 release - src/hb-open-type.hh | 12 ++++++++++++ - 1 file changed, 12 insertions(+) + subprojects/glib.wrap | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit b66076812d067f893a5a422af2656916ff479d8f -Author: Adrian Wong -Date: Wed Aug 28 21:31:27 2019 +1000 +commit 0fcf098206e669ab4ca17e2e04c4aa52e6ef0e90 +Author: Tim-Philipp Müller +Date: Sat Dec 1 18:22:46 2018 +0000 - Adjustments to the generated Indic table output (#1936) - - * Add empty parentheses after print call - - * Minor: newlines. Move #pragma pop down one; #endif up one - - * Adjust #define ISC/IMC output - - * Regenerate Indic table + meson: fix linking on MSVC - src/gen-indic-table.py | 21 ++++--- - src/hb-ot-shape-complex-indic-table.cc | 109 +++++++++++++++++---------------- - 2 files changed, 70 insertions(+), 60 deletions(-) + meson.build | 1 + + 1 file changed, 1 insertion(+) -commit 4ef08dbce1a9acd7e941168245c96e010248ecb6 -Author: Ebrahim Byagowi -Date: Tue Aug 27 14:49:46 2019 +0430 +commit 4a47f1aabc300317a87c581b71e21048416d2c20 +Author: Tim-Philipp Müller +Date: Sat Dec 1 11:05:27 2018 +0000 - Use hb_bytes_t as in hb_blob_t + meson: suppress some spurious compiler warnings with MSVC - src/hb-blob.hh | 8 ++------ - 1 file changed, 2 insertions(+), 6 deletions(-) + meson.build | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) -commit dce42cef2b769379a0690053da0e7467ff086195 -Author: Ebrahim Byagowi -Date: Tue Aug 27 14:32:05 2019 +0430 +commit 7eaf3754dc39f91295ba769714e01e37ddf23189 +Author: Tim-Philipp Müller +Date: Fri Nov 16 16:26:06 2018 +0000 - [glyf] Move GlyphHeader::from_bytes to hb_bytes_t, introduce .as () + meson: update for changes in master + + And remove header files from sources list, Meson figures + out header dependencies by itself (via the compiler). - src/hb-array.hh | 6 ++++++ - src/hb-ot-glyf-table.hh | 24 +++++++++--------------- - 2 files changed, 15 insertions(+), 15 deletions(-) + src/meson.build | 104 +++++--------------------------------------------------- + 1 file changed, 9 insertions(+), 95 deletions(-) -commit 6e82d59b4f72e8f2ff1830fb384907dcba95962a -Author: Ebrahim Byagowi -Date: Tue Aug 27 12:33:42 2019 +0430 +commit 04438554c838abcfc860a646df866cb3baed5621 +Author: Khaled Hosny +Date: Thu Nov 15 00:25:41 2018 +0200 - [glyf] Revert the way indexToLocFormat is set + meson: Update build files after rebase - src/hb-ot-glyf-table.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/meson.build | 111 ++++++++++++++++++++++++++++++++++++++++++++--- + test/api/meson.build | 16 +++++-- + test/fuzzing/meson.build | 2 - + test/shaping/meson.build | 64 ++++++++++++++++++++++++++- + 4 files changed, 181 insertions(+), 12 deletions(-) -commit 88e9db19d29480fadcd4f49f0f4d9029ac64b429 -Author: Ebrahim Byagowi -Date: Tue Aug 27 02:44:26 2019 +0430 +commit 618584e9234c13369505b5064949214d0871e2d0 +Author: Tim-Philipp Müller +Date: Wed Nov 14 20:19:36 2018 +0000 - [subset] Remove subset table size assertion + meson: rename incbase to incconfig - As https://github.com/harfbuzz/harfbuzz/pull/1930#issuecomment-525036802 + Makes it clearer what it's for: config.h. See #4. - src/hb-subset.cc | 1 - - 1 file changed, 1 deletion(-) + meson.build | 2 +- + src/meson.build | 6 +++--- + test/api/meson.build | 2 +- + test/fuzzing/meson.build | 2 +- + util/meson.build | 8 ++++---- + 5 files changed, 10 insertions(+), 10 deletions(-) -commit a0b4ac4dce392326284138fc47cf3741e2798e21 -Author: Ebrahim Byagowi -Date: Sat Aug 24 17:57:14 2019 +0430 +commit 14b5c774c205a1f8db72fa68a3e626391e917e09 +Author: Khaled Hosny +Date: Wed Nov 14 21:05:47 2018 +0200 - Turn 8 spaces to tab across the project + meson: Fix include directory when used as subproject - According to the current code style of the project + HarfBuzz headers are under src/ not the root directory, without using + incsrc no headers will be found by the dependent project. I think + incbase is superfluous, it should be replaced by incsrc or dropped. - src/hb-aat-layout-kerx-table.hh | 12 +- - src/hb-aat-layout-morx-table.hh | 16 +-- - src/hb-aat-layout-trak-table.hh | 6 +- - src/hb-array.hh | 4 +- - src/hb-blob.cc | 4 +- - src/hb-buffer-serialize.cc | 2 +- - src/hb-buffer.cc | 22 ++-- - src/hb-buffer.h | 4 +- - src/hb-common.cc | 4 +- - src/hb-coretext.cc | 50 ++++---- - src/hb-dispatch.hh | 2 +- - src/hb-font.cc | 16 +-- - src/hb-ft.cc | 2 +- - src/hb-graphite2.cc | 10 +- - src/hb-iter.hh | 4 +- - src/hb-kern.hh | 6 +- - src/hb-machinery.hh | 2 +- - src/hb-object.hh | 2 +- - src/hb-open-file.hh | 4 +- - src/hb-open-type.hh | 2 +- - src/hb-ot-cmap-table.hh | 252 ++++++++++++++++++------------------- - src/hb-ot-color-cbdt-table.hh | 2 +- - src/hb-ot-color-cpal-table.hh | 2 +- - src/hb-ot-color-sbix-table.hh | 8 +- - src/hb-ot-font.cc | 16 +-- - src/hb-ot-hmtx-table.hh | 62 ++++----- - src/hb-ot-layout-common.hh | 16 +-- - src/hb-ot-layout-gdef-table.hh | 4 +- - src/hb-ot-layout-gpos-table.hh | 74 +++++------ - src/hb-ot-layout.cc | 26 ++-- - src/hb-ot-layout.h | 18 +-- - src/hb-ot-map.cc | 2 +- - src/hb-ot-maxp-table.hh | 2 +- - src/hb-ot-name-table.hh | 8 +- - src/hb-ot-name.cc | 2 +- - src/hb-ot-shape-complex-arabic.cc | 14 +-- - src/hb-ot-shape-complex-hangul.cc | 12 +- - src/hb-ot-shape-complex-indic.cc | 34 ++--- - src/hb-ot-shape-complex-khmer.cc | 2 +- - src/hb-ot-shape-complex-myanmar.cc | 2 +- - src/hb-ot-shape-complex-use.cc | 2 +- - src/hb-ot-shape-fallback.cc | 46 +++---- - src/hb-ot-shape-normalize.cc | 4 +- - src/hb-ot-shape.cc | 16 +-- - src/hb-ot-stat-table.hh | 4 +- - src/hb-ot-var-avar-table.hh | 2 +- - src/hb-ot-var-fvar-table.hh | 6 +- - src/hb-ot-vorg-table.hh | 28 ++--- - src/hb-pool.hh | 2 +- - src/hb-sanitize.hh | 6 +- - src/hb-set.hh | 36 +++--- - src/hb-shape-plan.cc | 50 ++++---- - src/hb-subset-cff2.cc | 18 +-- - src/hb-subset-input.cc | 2 +- - src/hb-subset-plan.cc | 34 ++--- - src/hb-subset-plan.hh | 8 +- - src/hb-subset.h | 2 +- - src/hb-uniscribe.cc | 8 +- - src/hb-utf.hh | 8 +- - src/hb-vector.hh | 2 +- - src/hb.hh | 12 +- - src/test-ot-color.cc | 4 +- - src/test-unicode-ranges.cc | 6 +- - test/api/hb-subset-test.h | 6 +- - test/api/test-buffer.c | 2 +- - test/api/test-object.c | 2 +- - test/api/test-ot-math.c | 132 +++++++++---------- - test/api/test-unicode.c | 16 +-- - util/ansi-print.cc | 26 ++-- - util/hb-fc-list.c | 2 +- - util/hb-fc.cc | 4 +- - util/hb-shape.cc | 2 +- - util/hb-subset.cc | 10 +- - util/helper-cairo-ansi.cc | 4 +- - util/helper-cairo.cc | 2 +- - util/options-subset.cc | 26 ++-- - util/options.cc | 50 ++++---- - util/options.hh | 8 +- - 78 files changed, 662 insertions(+), 668 deletions(-) + src/meson.build | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) -commit 269a120f137ca69ca83b6fa00bb6a0ff1a87ae3e -Author: Ebrahim Byagowi -Date: Sun Aug 25 20:37:00 2019 +0430 +commit 6abe7983edcf820d7b8b35e1a7dddaaf3d0f1346 +Author: Tim-Philipp Müller +Date: Wed Nov 14 13:49:03 2018 +0000 - [subset] Raise the bar in new vs old table size + meson: add g-i introspection + + meson_options.txt | 4 ++-- + src/meson.build | 24 ++++++++++++++++++++++++ + 2 files changed, 26 insertions(+), 2 deletions(-) + +commit 6147df337ee5a0b8135453443c696f85624dbfa3 +Author: Tim-Philipp Müller +Date: Wed Nov 14 10:12:40 2018 +0000 + + meson: add option to disable tests + + meson.build | 5 ++++- + meson_options.txt | 4 ++-- + 2 files changed, 6 insertions(+), 3 deletions(-) + +commit d230a02048efb860190a6d694ecc2729d4c4fb12 +Author: Tim-Philipp Müller +Date: Mon Nov 12 19:41:39 2018 +0000 + + meson: generate .def file for MSVC symbol export on the fly - https://crbug.com/oss-fuzz/16740 + Fix symbol export with MSVC when features are disabled, + such as GLib. We need to generate the list of exported + symbols on the fly to make sure we only export symbols + that are actually available. - This is actually an interesting thing that {h,v}mtx allocates as - much as a font pretends to have glyphs but the solution is not - that obvious as regular fonts can have less than actually containing - metrics in their {h,v}mtx. This change raises the bar to consider this - hmtx 4 byte for every glyph case. + Needs some minor modifications to the gen-def.py script: + - accept header list also via command line args; we can't + pass things to a configure_file() command via the environment + in Meson. + - strip any leading 'src/' from library filename. This might + be there because in Meson the script might be called from + the top-level directory and not the current source directory. - Initially we wanted to just find things allocating crazy amount of - memory but having the assert has led to interesting findings also - so let's don't remove the assert and see what we can find elsewhere. + Remove .def files again which had been checked in for earlier + versions of the Meson port. - src/hb-subset.cc | 2 +- - ...z-testcase-minimized-hb-subset-fuzzer-5667673584697344 | Bin 0 -> 178 bytes - 2 files changed, 1 insertion(+), 1 deletion(-) + src/gen-def.py | 2 +- + src/harfbuzz-gobject.def | 33 ----- + src/harfbuzz-icu.def | 5 - + src/harfbuzz-subset.def | 12 -- + src/harfbuzz.def | 310 ----------------------------------------------- + src/meson.build | 56 ++++++--- + 6 files changed, 38 insertions(+), 380 deletions(-) -commit 2f8e823331aca2c73b940f057f4b149a89af0502 -Author: Ebrahim Byagowi -Date: Sun Aug 25 12:37:40 2019 +0430 +commit 4840c8237e484177b676e774ffebbdf40c654133 +Author: Tim-Philipp Müller +Date: Mon Nov 12 16:56:56 2018 +0000 - [glyf] minor + meson: add option and build system plumbing for CoreText on macOS/iOS + + Untested though. - src/hb-ot-glyf-table.hh | 5 ++--- - 1 file changed, 2 insertions(+), 3 deletions(-) + meson.build | 21 +++++++++++++++++++++ + meson_options.txt | 2 ++ + src/meson.build | 9 +++++---- + 3 files changed, 28 insertions(+), 4 deletions(-) -commit 07e467a30e2bab9731900d72dbf926dbe6fc6e1d -Author: Ebrahim Byagowi -Date: Sun Aug 25 00:36:58 2019 +0430 +commit 83ebbe4ade0c74ec83d62fcfc6ba04de87384ff5 +Author: Tim-Philipp Müller +Date: Mon Nov 12 16:56:56 2018 +0000 - [glyf] Move GlyphHeader size checking to a static method + meson: add option and build system plumbing for DirectWrite on Windows + + Untested though. - src/hb-ot-glyf-table.hh | 69 ++++++++++++++++++++++++++----------------------- - 1 file changed, 36 insertions(+), 33 deletions(-) + meson.build | 10 ++++++++++ + meson_options.txt | 2 ++ + src/meson.build | 9 +++++---- + 3 files changed, 17 insertions(+), 4 deletions(-) -commit 139d14dc899250cf06a8d03b70504687184d5c7f -Author: Ebrahim Byagowi -Date: Sat Aug 24 17:23:16 2019 +0430 +commit b7796a5d6984d40a44fbd828a6d3006c71f1cb3d +Author: Tim-Philipp Müller +Date: Mon Nov 12 16:56:56 2018 +0000 - [glyf] Move GlyphHeader related logics to its, making its fields protected + meson: add option and build system plumbing for uniscribe on Windows + + Untested though. - src/hb-ot-glyf-table.hh | 73 +++++++++++++++++++++++++------------------------ - 1 file changed, 38 insertions(+), 35 deletions(-) + meson.build | 14 ++++++++++++++ + meson_options.txt | 2 ++ + src/meson.build | 9 +++++---- + 3 files changed, 21 insertions(+), 4 deletions(-) -commit d57819cbdbab18ccf20caa25cb72cd66efe30848 -Author: Ebrahim Byagowi -Date: Sat Aug 24 16:26:42 2019 +0430 +commit c81290b0c11a6bcc960ab5d043502ac3a5998abd +Author: Tim-Philipp Müller +Date: Mon Nov 12 15:58:09 2018 +0000 - [glyf] format source + meson: add feature option for internal ucdn lib - src/hb-ot-glyf-table.hh | 282 ++++++++++++++++++++++++++---------------------- - 1 file changed, 154 insertions(+), 128 deletions(-) + meson_options.txt | 2 ++ + src/meson.build | 17 ++++++++--------- + 2 files changed, 10 insertions(+), 9 deletions(-) -commit 2aef3013f3e6d71eacd0123f4faa63445034c32b -Author: Ebrahim Byagowi -Date: Sat Aug 24 02:59:18 2019 +0430 +commit 49ba211a9d4518ebba0c44e2d22946e23a2cead8 +Author: Tim-Philipp Müller +Date: Mon Nov 12 15:36:27 2018 +0000 - [subset] Consider instruction length place itself + meson: add options to enable/disable various features - Now fixes https://crbug.com/oss-fuzz/16639 completely + And fix build without GLib. Fixes #2. - src/hb-ot-glyf-table.hh | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) + meson.build | 16 ++++++++-------- + meson_options.txt | 21 +++++++++++++++++++++ + util/meson.build | 4 ++++ + 3 files changed, 33 insertions(+), 8 deletions(-) -commit 922898c814b328712fac6c3259740804679dae11 -Author: Ebrahim Byagowi -Date: Fri Aug 23 22:04:14 2019 +0430 +commit c5f2e5e5abb9754460e9db37b54cd314b665a8d2 +Author: Tim-Philipp Müller +Date: Mon Nov 12 10:05:04 2018 +0000 - [subset] Fail on table grow more than 16x+4096 + meson: use proxy-libintl from frida - src/hb-subset.cc | 1 + - 1 file changed, 1 insertion(+) + subprojects/proxy-libintl.wrap | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit 28aba780c4035cc85a31b778db0f5553c896dd6a -Author: Ebrahim Byagowi -Date: Fri Aug 23 16:47:15 2019 +0430 +commit 54417b127b3cfb4952788f8535ad5bfa788fb2b8 +Author: Tim-Philipp Müller +Date: Mon Nov 12 10:04:15 2018 +0000 - [subset] Fix blob leak of _subset2 when returns early + meson: fix glib git url - Fixes https://crbug.com/oss-fuzz/16639 + It's on gitlab now. + + Fixes #1 - src/hb-subset.cc | 2 ++ - ...z-testcase-minimized-hb-subset-fuzzer-5754526379802624 | Bin 0 -> 288 bytes - 2 files changed, 2 insertions(+) + subprojects/glib.wrap | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit 541f3c2d7dcae47eb55650082e372286369d4a55 -Author: Behdad Esfahbod -Date: Fri Aug 23 12:25:58 2019 -0700 +commit f65def4dc7bad244742be1f6aed2552c23d12b8f +Author: Nirbheek Chauhan +Date: Fri Oct 12 19:41:49 2018 +0530 - [debug] Fix extra semicolon issue + meson: Declare dependencies for use as a subproject - https://github.com/harfbuzz/harfbuzz/issues/1923 + Also use fallbacks for dependencies that have meson build files - src/hb-debug.hh | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) + meson.build | 28 ++++++++++++++++++++++------ + src/meson.build | 17 +++++++++++++++++ + 2 files changed, 39 insertions(+), 6 deletions(-) -commit 4dcaca84115bf8de130fc2c9e03bd7e63fcf9607 -Author: Behdad Esfahbod -Date: Fri Aug 23 12:24:15 2019 -0700 +commit 14432b3ded153972b02fe2aed4f5c3d095ef5b4a +Author: Mathieu Duponchelle +Date: Wed Jul 4 17:54:28 2018 +0200 - Whitespace + meson: remove debug message - src/hb-debug.hh | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + meson.build | 2 -- + 1 file changed, 2 deletions(-) -commit 569426d861ac9336f4083e55f98284b4c647c795 -Author: Behdad Esfahbod -Date: Fri Aug 23 11:54:20 2019 -0700 +commit 07cadc9c870c9ed49973ecf8828cbbe9e3e9daf2 +Author: Mathieu Duponchelle +Date: Mon Jun 18 17:18:05 2018 +0200 - [debug] Fix build with HB_DEBUG - - Fixes https://github.com/harfbuzz/harfbuzz/issues/1923 + meson: update minimum meson version - src/hb-debug.hh | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) + meson.build | 1 + + 1 file changed, 1 insertion(+) -commit f233e6c8014cde9b2396c5350c29a3277cd3a657 -Author: Khaled Hosny -Date: Fri Aug 23 13:15:37 2019 +0200 +commit 04bcdb9c73ff47a4b624608b69bde86b88505588 +Author: Mathieu Duponchelle +Date: Tue Jun 5 20:59:29 2018 +0200 - [doc] Update list of default features in the manual - - Fixes https://github.com/harfbuzz/harfbuzz/issues/1921 + meson: misc fixes - docs/usermanual-opentype-features.xml | 8 +++++--- - 1 file changed, 5 insertions(+), 3 deletions(-) + meson.build | 24 +++++++++++++----------- + 1 file changed, 13 insertions(+), 11 deletions(-) -commit be97e9d678017d4ec66625fa2b17ef3485552cad -Author: Behdad Esfahbod -Date: Thu Aug 22 15:52:24 2019 -0700 +commit 29c47d8eb5adf4967fe0b05013d0f53856066288 +Author: Mathieu Duponchelle +Date: Tue Jun 5 18:19:29 2018 +0200 - 2.6.1 + meson: pass subdirs to pkgconfig.generate() - NEWS | 11 +++++++++++ - configure.ac | 2 +- - src/hb-version.h | 4 ++-- - 3 files changed, 14 insertions(+), 3 deletions(-) + src/meson.build | 3 +++ + 1 file changed, 3 insertions(+) -commit d304d60e4d49df14ed85d6646680085f27bafbf2 -Author: Behdad Esfahbod -Date: Wed Aug 21 12:30:22 2019 -0700 +commit 484313ff3667f279f0a1d98021b2e5719508ad31 +Author: Mathieu Duponchelle +Date: Tue Jun 5 02:15:43 2018 +0200 - [ot-font] Prefer symbol cmap subtable if found - - Fixes https://github.com/harfbuzz/harfbuzz/issues/1918 - - Hopefully doesn't break anyone... + meson: install - src/hb-ot-cmap-table.hh | 16 +++++++++------- - 1 file changed, 9 insertions(+), 7 deletions(-) + meson.build | 1 + + src/meson.build | 32 +++++++++++++++++++++++++++++--- + util/meson.build | 14 +++++++++----- + 3 files changed, 39 insertions(+), 8 deletions(-) -commit 2a3d4987a75fb2cd51ccf4c1d08baba383ceda7b -Author: Ebrahim Byagowi -Date: Wed Aug 21 03:02:01 2019 +0430 +commit d4a723732791a4806d92828d55fd6138d857722d +Author: Mathieu Duponchelle +Date: Thu May 17 16:25:22 2018 -0700 - Remove hb_directwrite_shape_experimental_width public API - - I had specially exposed the API as I didn't know how to embed harfbuzz - easily elsewhere but now with harfbuzz.cc it has become very easy - and I don't like to see its use anywhere as it has a bad naming and - its Kashida adding is bogus and only useful to check where it should - be added, not visually useful however. + meson: all tests passing on Windows / MSVC - src/hb-directwrite.cc | 29 ++++++----------------------- - src/hb-directwrite.h | 5 ----- - 2 files changed, 6 insertions(+), 28 deletions(-) + src/harfbuzz-gobject.def | 33 +++++ + src/harfbuzz-icu.def | 5 + + src/harfbuzz-subset.def | 12 ++ + src/harfbuzz.def | 310 +++++++++++++++++++++++++++++++++++++++++ + subprojects/.gitignore | 2 + + subprojects/proxy-libintl.wrap | 4 + + subprojects/zlib.wrap | 4 + + test/fuzzing/meson.build | 6 +- + test/shaping/meson.build | 8 +- + test/subset/meson.build | 27 ++-- + 10 files changed, 393 insertions(+), 18 deletions(-) -commit 163a66dc737645852d7515381304d69706688e16 -Author: Behdad Esfahbod -Date: Tue Aug 20 14:22:57 2019 -0700 +commit 99b26789d2ff2874ec8adf760416f2434e3093ad +Author: Mathieu Duponchelle +Date: Thu May 17 14:53:20 2018 -0700 - [test] Add test for aaa85931f3542639cd9d0dfb92fd6baab5b0298d + meson: more windows fixes - test/api/test-shape.c | 48 ++++++++++++++++++++++++++++++------------------ - 1 file changed, 30 insertions(+), 18 deletions(-) + src/meson.build | 14 +++++++++++--- + util/meson.build | 59 ++++++++++++++++++++++++++++++-------------------------- + 2 files changed, 43 insertions(+), 30 deletions(-) -commit aaa85931f3542639cd9d0dfb92fd6baab5b0298d -Author: Behdad Esfahbod -Date: Tue Aug 20 13:06:10 2019 -0700 +commit 7ee650b173dc39fa998fb16aa10206dc8501a004 +Author: Mathieu Duponchelle +Date: Thu May 17 23:52:36 2018 +0200 - [font] Update multipliers when creating sub_font + meson: refactor fuzzing test + + test/fuzzing/meson.build | 16 +++++++++++----- + 1 file changed, 11 insertions(+), 5 deletions(-) + +commit fce88f9905f336aa83c934f346c44eb0829abeae +Author: Mathieu Duponchelle +Date: Thu May 17 16:20:10 2018 +0200 + + meson: add subproject wraps for dependencies + + meson.build | 29 ++++++++++------------------- + subprojects/.gitignore | 6 ++++++ + subprojects/expat.wrap | 10 ++++++++++ + subprojects/fontconfig.wrap | 5 +++++ + subprojects/freetype2.wrap | 5 +++++ + subprojects/glib.wrap | 5 +++++ + subprojects/libffi.wrap | 4 ++++ + 7 files changed, 45 insertions(+), 19 deletions(-) + +commit 920efc0ef72eb4bb5dce02ee9f9adcdd5fdf8f7a +Author: Mathieu Duponchelle +Date: Thu May 17 01:28:53 2018 +0200 + + Add Meson build definitions + + Fixes #490 + + http://mesonbuild.com + + meson-cc-tests/intel-atomic-primitives-test.c | 6 + + meson-cc-tests/solaris-atomic-operations.c | 8 + + meson.build | 189 ++++++++++++++++++++ + src/fix_get_types.py | 15 ++ + src/meson.build | 237 ++++++++++++++++++++++++++ + test/api/meson.build | 51 ++++++ + test/fuzzing/meson.build | 32 ++++ + test/meson.build | 4 + + test/shaping/meson.build | 110 ++++++++++++ + test/subset/meson.build | 20 +++ + util/meson.build | 51 ++++++ + 11 files changed, 723 insertions(+) + +commit 0615c7b64b63400b2a70a1a6dd8a57d0b0fff10c +Author: Khaled Hosny +Date: Tue Mar 10 21:57:31 2020 +0200 + + Remove workaround for old pkg-config - Fixes https://github.com/harfbuzz/harfbuzz/issues/1910 + Add FreeType dependency to .pc, Ubuntu 14.4 is long dead. + + Fixes https://github.com/harfbuzz/harfbuzz/issues/1565 - src/hb-font.cc | 1 + - 1 file changed, 1 insertion(+) + src/Makefile.am | 7 +------ + 1 file changed, 1 insertion(+), 6 deletions(-) -commit bbad1b8298125d78c159ed7fdd7bde6a3f3fff56 +commit 78eabf247e3127413a80ad92f7d576b00a438687 Author: Ebrahim Byagowi -Date: Tue Aug 20 14:46:48 2019 +0430 +Date: Tue Mar 10 13:34:42 2020 +0330 - [trak] minor, use roundf instead round to normalize the use - - The change to `round` wasn't intended + [test] Enable OT funcs on tests that are working - src/hb-aat-layout-trak-table.hh | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + .../data/in-house/tests/indic-joiners.tests | 8 +-- + test/shaping/data/in-house/tests/use.tests | 2 +- + .../data/text-rendering-tests/tests/AVAR-1.tests | 34 ++++++------ + .../data/text-rendering-tests/tests/CFF-1.tests | 26 ++++----- + .../data/text-rendering-tests/tests/CFF-2.tests | 26 ++++----- + .../data/text-rendering-tests/tests/CFF2-1.tests | 18 +++---- + .../data/text-rendering-tests/tests/CMAP-1.tests | 8 +-- + .../data/text-rendering-tests/tests/CMAP-2.tests | 4 +- + .../data/text-rendering-tests/tests/CMAP-3.tests | 40 +++++++------- + .../data/text-rendering-tests/tests/CVAR-1.tests | 6 +-- + .../data/text-rendering-tests/tests/CVAR-2.tests | 6 +-- + .../data/text-rendering-tests/tests/GLYF-1.tests | 2 +- + .../data/text-rendering-tests/tests/GPOS-1.tests | 38 ++++++------- + .../data/text-rendering-tests/tests/SHARAN-1.tests | 12 ++--- + .../data/text-rendering-tests/tests/SHBALI-1.tests | 44 +++++++-------- + .../data/text-rendering-tests/tests/SHBALI-2.tests | 24 ++++----- + .../data/text-rendering-tests/tests/SHKNDA-2.tests | 32 +++++------ + .../data/text-rendering-tests/tests/SHKNDA-3.tests | 62 +++++++++++----------- + 18 files changed, 196 insertions(+), 196 deletions(-) -commit e67cb500e9c5f6717d0d1cd152de84d88ec7370e +commit 47f5a860362180f6655d49956d7d12e0d296463d Author: Ebrahim Byagowi -Date: Tue Aug 20 13:30:34 2019 +0430 +Date: Tue Mar 10 13:57:46 2020 +0330 - [readme] add oss-fuzz badge - - Related: - https://github.com/google/oss-fuzz/pull/2513 - https://github.com/systemd/systemd/commit/ce2098b7e9443cd6f31fb70af7f72308cd2962a3 + minor, use NN on every OffsetTo> - README.md | 1 + - 1 file changed, 1 insertion(+) + src/hb-aat-layout-feat-table.hh | 2 +- + src/hb-aat-layout-trak-table.hh | 2 +- + src/hb-ot-meta-table.hh | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) -commit d59d89b28128cf644d76098c709b9309b834eb09 +commit 648338c7d495f69a896348faabd2175c1e21981f Author: Ebrahim Byagowi -Date: Tue Aug 20 13:07:17 2019 +0430 +Date: Tue Mar 10 13:12:00 2020 +0330 - [test] Rebase 10.14 trak related test + [gvar] Add fields docs from ot-spec as other tables - test/shaping/data/in-house/tests/macos.tests | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-var-gvar-table.hh | 151 ++++++++++++++++++++++++++------------------ + 1 file changed, 88 insertions(+), 63 deletions(-) -commit 20b1a27c8a319d43a582c3efa8233b9f2c3cc73e -Merge: 5ee1e451 37de38ad +commit 1b3b96973bc00294f00adc18104ab12997b75661 Author: Ebrahim Byagowi -Date: Tue Aug 20 13:04:51 2019 +0430 +Date: Tue Mar 10 12:46:09 2020 +0330 - Merge remove-coretext-96dpi-assumption, @drott - - Remove assumption about Core Text working in 96 DPI + [gvar] Don't copy shared tuples into gvar's accelerator -commit 37de38adeae48e1855c2431a39639db873a74554 -Merge: f401f85a 5ee1e451 + src/hb-ot-var-gvar-table.hh | 26 +++++++------------------- + 1 file changed, 7 insertions(+), 19 deletions(-) + +commit 29dd1fe506d254abdf8b4cccd7dfdf48d6f5e7e6 Author: Ebrahim Byagowi -Date: Tue Aug 20 12:59:33 2019 +0430 +Date: Tue Mar 10 11:41:51 2020 +0330 - Merge branch 'master' into remove-coretext-96dpi-assumption + [gvar] Don't check again against face num glyph + + Done once by sanitize_shallow -commit 5ee1e451cfc75dc6ddbc3ae300ba7394a0cd560e -Author: Behdad Esfahbod -Date: Mon Aug 19 14:23:17 2019 -0700 + src/hb-ot-var-gvar-table.hh | 4 ---- + 1 file changed, 4 deletions(-) - Minor touch-up for recent change +commit d4b11817600e3ac444895336dd78a72dbeaf2a56 +Author: Ebrahim Byagowi +Date: Tue Mar 10 11:29:56 2020 +0330 - src/hb-ot-var-avar-table.hh | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) + [gvar] minor, rename gvar_table to table -commit 33489928444b94bdd2cc523dac14707eb29d667e + src/hb-ot-var-gvar-table.hh | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +commit 5c376938644f820c7fd69991c8d2e9c4952145c4 Author: Ebrahim Byagowi -Date: Wed Aug 7 20:07:58 2019 +0430 +Date: Tue Mar 10 10:51:38 2020 +0330 - [avar] Implement inverse map, unmap + [gvar] Remove axisCount comparison with fvar as we runtime check that - src/hb-ot-var-avar-table.hh | 30 ++++++++++++++++++++++++------ - 1 file changed, 24 insertions(+), 6 deletions(-) + src/hb-ot-var-gvar-table.hh | 10 +++------- + 1 file changed, 3 insertions(+), 7 deletions(-) -commit 981f5a54c3cbc1de45ba941fdf5315c62d86b6f3 +commit ba22df36adf2d60df442330ac13618fe640f8d4c Author: Ebrahim Byagowi -Date: Wed Aug 7 18:45:39 2019 +0430 +Date: Tue Mar 10 10:42:20 2020 +0330 - [fvar] Implement inverse normalize, unnormalize + minor + + makes search for sanitize calls easier for me - src/hb-ot-var-fvar-table.hh | 14 ++++++++++++++ - 1 file changed, 14 insertions(+) + src/hb-ot-color-svg-table.hh | 2 +- + src/hb-ot-hmtx-table.hh | 4 ++-- + src/hb-ot-layout-gdef-table.hh | 4 ++-- + src/hb-ot-layout-gsubgpos.hh | 2 +- + src/hb-ot-name-table.hh | 2 +- + 5 files changed, 7 insertions(+), 7 deletions(-) -commit dcb4cd400fb44172872a20ba54baa011d748b61d -Author: Behdad Esfahbod -Date: Mon Aug 19 11:35:37 2019 -0700 +commit 8ca9df7acb6283eb68fcf3d66aacac6faafcc94c +Author: Ebrahim Byagowi +Date: Tue Mar 10 10:40:05 2020 +0330 - Minor + [subset] Remove not needed blob sanitize call - src/hb-font.cc | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) + src/hb-subset-cff1.cc | 10 +++------- + src/hb-subset-cff2.cc | 11 +++-------- + 2 files changed, 6 insertions(+), 15 deletions(-) -commit ca54440324745afc388edac40ad1047e92567fdb +commit 07acd1a0426a5ba3f4924e3bb79a6715c164782c Author: Ebrahim Byagowi -Date: Sun Aug 18 11:58:04 2019 +0430 +Date: Sun Mar 8 23:39:24 2020 +0330 - Remove continuous development helper script + [subset] Rename src_base args to base to match sanitize methods - Not have used it personally for a long time, lets remove it + So it will become easier to follow that serialize methods signatures should + match with their sanitize methods counterparts. - src/dev-run.sh | 99 ---------------------------------------------------------- - 1 file changed, 99 deletions(-) + src/hb-open-type.hh | 18 ++---- + src/hb-ot-cmap-table.hh | 37 ++++++----- + src/hb-ot-color-cbdt-table.hh | 4 +- + src/hb-ot-layout-common.hh | 135 +++++++++++++++++------------------------ + src/hb-ot-layout-gpos-table.hh | 51 +++++++--------- + src/hb-ot-layout-gsubgpos.hh | 6 +- + src/hb-ot-name-table.hh | 5 +- + 7 files changed, 108 insertions(+), 148 deletions(-) -commit 40aef1b473f63701ab901880d764e33682f13414 -Author: Khaled Hosny -Date: Fri Aug 16 01:00:30 2019 +0200 +commit 188a0a47c225a0bf1869b2d4c14db96055c2099c +Author: ariza +Date: Sat Mar 7 11:02:36 2020 -0800 - [ot-shape] Keep horizontal_features array sorted + removed default base; replaced w/ bias if required - src/hb-ot-shape.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-open-type.hh | 11 +++---- + src/hb-ot-cmap-table.hh | 18 +++++------ + src/hb-ot-color-cbdt-table.hh | 7 ++--- + src/hb-ot-color-sbix-table.hh | 10 +++--- + src/hb-ot-layout-common.hh | 70 +++++++++++++++++------------------------- + src/hb-ot-layout-gdef-table.hh | 20 ++++++------ + src/hb-ot-layout-gpos-table.hh | 55 ++++++++++++++++----------------- + src/hb-ot-layout-gsub-table.hh | 8 ++--- + src/hb-ot-layout-gsubgpos.hh | 30 ++++++++---------- + src/hb-ot-name-table.hh | 2 +- + src/hb-serialize.hh | 22 +++++-------- + 11 files changed, 112 insertions(+), 141 deletions(-) -commit da5118da77898ae4778af1ace4af52334b210dd6 -Author: Khaled Hosny -Date: Fri Aug 16 00:48:26 2019 +0200 +commit 4c3af7d406359d2addd51b2fc91d49b3a8d45c29 +Author: blueshade7 +Date: Thu Mar 5 15:40:44 2020 -0800 - [ot-shape] Enable abvm/blwm features by default - - Core Text seems to apply them to Latin text, but Uniscribe doesn’t. + add "add_link()" with bias arg - See https://github.com/harfbuzz/harfbuzz/pull/1908#issuecomment-521819343 + issue #2227 - src/hb-ot-shape-complex-indic.cc | 9 --------- - src/hb-ot-shape-complex-khmer.cc | 9 --------- - src/hb-ot-shape-complex-myanmar.cc | 21 --------------------- - src/hb-ot-shape-complex-use.cc | 14 -------------- - src/hb-ot-shape.cc | 2 ++ - test/shaping/data/in-house/Makefile.sources | 2 +- - .../ea3f63620511b2097200d23774ffef197e829e69.ttf | Bin 0 -> 1804 bytes - .../f79eb71df4e4c9c273b67b89a06e5ff9e3c1f834.ttf | Bin 0 -> 1860 bytes - test/shaping/data/in-house/tests/dist.tests | 1 - - .../data/in-house/tests/positioning-features.tests | 3 +++ - 10 files changed, 6 insertions(+), 55 deletions(-) + src/hb-ot-cff-common.hh | 2 +- + src/hb-serialize.hh | 37 +++++++++++++++++++++---------------- + 2 files changed, 22 insertions(+), 17 deletions(-) -commit 2164bd6f29df265acdc04b84f5f94cf63b2cea8a -Author: Khaled Hosny -Date: Fri Aug 16 00:28:41 2019 +0200 +commit bdf372b24c19516c7e608b3eb254fb3720b36b6c +Author: Ebrahim Byagowi +Date: Sun Mar 8 00:47:25 2020 +0330 - [ot-shape] Enable dist feature by default (#1908) + [subset/cbdt] Release the referenced cbdt table on error - Fixes https://github.com/harfbuzz/harfbuzz/issues/1907 + Just accidentally spotted it, when the table has less than 4 bytes - src/hb-ot-shape-complex-indic.cc | 2 -- - src/hb-ot-shape-complex-khmer.cc | 2 -- - src/hb-ot-shape-complex-myanmar.cc | 1 - - src/hb-ot-shape-complex-use.cc | 1 - - src/hb-ot-shape.cc | 1 + - test/shaping/data/in-house/Makefile.sources | 1 + - .../fonts/53a91c20e33a596f2be17fb68b382d6b7eb85d5c.ttf | Bin 0 -> 2020 bytes - test/shaping/data/in-house/tests/dist.tests | 1 + - 8 files changed, 3 insertions(+), 6 deletions(-) + src/hb-ot-color-cbdt-table.hh | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) -commit bc27f86ffef537835f6c9dbbecbc2ee6792cb127 +commit 0d729b4b7237934abfca0b5738ad4383f3f22476 Author: Ebrahim Byagowi -Date: Wed Aug 14 22:37:00 2019 +0430 +Date: Sat Mar 7 11:53:12 2020 +0330 - Move HB_NO_VAR to a better place in hb-font.cc + [avar] Fix out-of-bound read when input is bigger than all the coords - Needed for other works + 'i' shouldn't become equal to array's length which as the increament + is happened at end of the loop, if the input is bigger than all the + table coords, it will be equal to array's length. + + Fixes https://crbug.com/oss-fuzz/21092 - src/hb-font.cc | 5 ++--- - 1 file changed, 2 insertions(+), 3 deletions(-) + src/hb-ot-var-avar-table.hh | 2 +- + ...zz-testcase-minimized-hb-draw-fuzzer-5681465586352128 | Bin 0 -> 4448 bytes + 2 files changed, 1 insertion(+), 1 deletion(-) -commit 1cc844da66ab527991ff96efdf10d97f6b626bfe +commit 6924e29f62a320c91d987a91d4efa752d13c7660 Author: Ebrahim Byagowi -Date: Wed Aug 14 19:10:02 2019 +0430 +Date: Tue Mar 3 13:11:11 2020 +0330 - minor + [var] Fix hb_ot_var_get_axis_infos's offset semantic - Use hb_font_t coords directly + The API was adding offset to input's infos buffer index also which is + unusual between our APIs and wrong. - src/hb-ot-cff2-table.cc | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) + src/hb-ot-var-fvar-table.hh | 26 ++++---------------------- + test/api/test-var-coords.c | 25 +++++++++++++++++++++++++ + 2 files changed, 29 insertions(+), 22 deletions(-) -commit 6a194b6876db12f083ae5391ca01972168d4e68a +commit b7617f6b3cfa0abf10292ea79bcd53ef61a08e90 Author: Ebrahim Byagowi -Date: Wed Aug 14 18:49:57 2019 +0430 +Date: Thu Mar 5 12:07:33 2020 +0330 - Minor, remove trailing spaces in hb-font.{cc,h} as .editorconfig + [glyf] Update to latests of ttf-parser - src/hb-font.cc | 338 ++++++++++++++++++++++++++++----------------------------- - src/hb-font.h | 26 ++--- - 2 files changed, 182 insertions(+), 182 deletions(-) + src/hb-ot-glyf-table.hh | 45 +++++++++++++++++++++------------------------ + 1 file changed, 21 insertions(+), 24 deletions(-) -commit 3ae44645d60fe8271ad18b004434d475eaeb7ad6 -Author: Ebrahim Byagowi -Date: Wed Aug 14 14:34:55 2019 +0430 +commit 0b290538646b08d391321fcbb9a1cb5f648d83ff +Author: ariza +Date: Wed Mar 4 22:31:21 2020 -0800 - Fix caret_count value when AAT is disabled - - Set caret_count to zero as that is what we want to happen inside lcar when - there is no result. + removed unused code - src/hb-ot-layout.cc | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) + src/hb-ot-cff1-table.hh | 24 ++++++++++++------------ + src/hb-ot-cff2-table.hh | 10 +++++----- + src/hb-subset-cff-common.hh | 6 +++--- + src/hb-subset-cff1.cc | 16 ++++++++-------- + 4 files changed, 28 insertions(+), 28 deletions(-) -commit a5aa67b9f288687e21ca7a9887483f7fe1cbce54 -Author: Ebrahim Byagowi -Date: Wed Aug 14 14:29:01 2019 +0430 +commit e8f010d7938b9f8c6065ca455c6b24968fcfd898 +Author: ariza +Date: Wed Mar 4 16:54:27 2020 -0800 - [lcar] Use multiformat convention + removed unused code & data; rename - src/hb-aat-layout-lcar-table.hh | 115 +++++++++++++++++++++++++++++++--------- - 1 file changed, 90 insertions(+), 25 deletions(-) + src/hb-cff-interp-dict-common.hh | 13 -------- + src/hb-ot-cff-common.hh | 62 +------------------------------------- + src/hb-ot-cff1-table.hh | 65 ++++++++-------------------------------- + src/hb-ot-cff2-table.hh | 44 ++++----------------------- + src/hb-subset-cff-common.hh | 52 +++----------------------------- + src/hb-subset-cff1.cc | 18 +++++------ + 6 files changed, 31 insertions(+), 223 deletions(-) -commit bfffe85dd7d7557e10ec9f9886b86fe0d8b4a7a2 -Author: Ebrahim Byagowi -Date: Wed Aug 14 13:55:49 2019 +0430 +commit 14a7b6f1ab1926680369bf43efc9ee8d5f89402d +Author: Garret Rieger +Date: Wed Feb 26 15:09:04 2020 -0800 - [opbd] Use multiformat convention on the table + Set hb_buffer_t to use array_t.reverse(). - src/hb-aat-layout-opbd-table.hh | 116 ++++++++++++++++++++++++++++++---------- - 1 file changed, 89 insertions(+), 27 deletions(-) + src/Makefile.am | 6 ++++- + src/hb-array.hh | 25 ++++++++++-------- + src/hb-buffer.cc | 18 ++----------- + src/test-array.cc | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 97 insertions(+), 28 deletions(-) + +commit 5935a1dc0b45d1256c81b214222125b47e3db345 +Author: ariza +Date: Tue Mar 3 12:12:51 2020 -0800 + + add pop_discard() calls to errror returns + + src/hb-subset-cff1.cc | 135 ++++++++++++++++++++++++++++++++++---------------- + src/hb-subset-cff2.cc | 54 +++++++++++++------- + 2 files changed, 130 insertions(+), 59 deletions(-) + +commit c05458ec7f11753be95d1c3cdd7c377d07d7b981 +Author: ariza +Date: Mon Mar 2 16:51:19 2020 -0800 + + update cff & cff2 subsetters + + src/hb-ot-cff-common.hh | 201 ++++---- + src/hb-ot-cff1-table.hh | 58 ++- + src/hb-ot-cff2-table.hh | 9 +- + src/hb-subset-cff-common.hh | 63 +-- + src/hb-subset-cff1.cc | 526 ++++++--------------- + src/hb-subset-cff2.cc | 320 ++++--------- + test/api/fonts/AdobeVFPrototype.ac.nohints.otf | Bin 6220 -> 4212 bytes + .../fonts/AdobeVFPrototype.ac.nosubrs.nohints.otf | Bin 6100 -> 4092 bytes + test/api/fonts/cff1_expert.2D,F6E9,FB00.otf | Bin 3096 -> 1412 bytes + 9 files changed, 430 insertions(+), 747 deletions(-) + +commit 446d1e3bbce4627f2edf24bb991fe606465f2d7e +Author: Ebrahim Byagowi +Date: Wed Mar 4 23:32:50 2020 +0330 + + [fuzz] Add more of fixed cases + + ...fuzz-testcase-hb-subset-fuzzer-5686749313892352 | Bin 0 -> 2808 bytes + ...case-minimized-harfbuzz_fuzzer-5017946948370432 | Bin 0 -> 1321 bytes + ...case-minimized-harfbuzz_fuzzer-5170405903695872 | Bin 0 -> 1271 bytes + ...case-minimized-harfbuzz_fuzzer-6223034666713088 | Bin 0 -> 1260 bytes + ...case-minimized-hb-shape-fuzzer-5154718402215936 | Bin 0 -> 226 bytes + ...case-minimized-hb-shape-fuzzer-5196560812474368 | Bin 0 -> 1816 bytes + ...case-minimized-hb-shape-fuzzer-5632586529898496 | Bin 0 -> 695 bytes + ...case-minimized-hb-shape-fuzzer-5642666339991552 | Bin 0 -> 32 bytes + ...case-minimized-hb-shape-fuzzer-5642899625082880 | Bin 0 -> 759578 bytes + ...case-minimized-hb-shape-fuzzer-5648999235715072 | Bin 0 -> 297 bytes + ...case-minimized-hb-shape-fuzzer-5652700541222912 | Bin 0 -> 232 bytes + ...case-minimized-hb-shape-fuzzer-5711096049041408 | Bin 0 -> 93 bytes + ...case-minimized-hb-shape-fuzzer-5711472756260864 | Bin 0 -> 154432 bytes + ...case-minimized-hb-shape-fuzzer-5742079188140032 | Bin 0 -> 16731 bytes + ...case-minimized-hb-shape-fuzzer-5749627240841216 | Bin 0 -> 99 bytes + ...case-minimized-hb-shape-fuzzer-6306977171374080 | Bin 0 -> 713443 bytes + ...ase-minimized-hb-subset-fuzzer-5160311461511168 | Bin 0 -> 68 bytes + ...ase-minimized-hb-subset-fuzzer-5640452927127552 | Bin 0 -> 32376 bytes + ...ase-minimized-hb-subset-fuzzer-5640889218629632 | Bin 0 -> 1490 bytes + ...ase-minimized-hb-subset-fuzzer-5641053680173056 | Bin 0 -> 2863 bytes + ...ase-minimized-hb-subset-fuzzer-5674228796358656 | Bin 0 -> 913 bytes + ...ase-minimized-hb-subset-fuzzer-5675720390475776 | Bin 299037 -> 131084 bytes + ...ase-minimized-hb-subset-fuzzer-5678476148867072 | Bin 0 -> 113915 bytes + ...ase-minimized-hb-subset-fuzzer-5685097303375872 | Bin 0 -> 134 bytes + ...ase-minimized-hb-subset-fuzzer-5695865298092032 | Bin 0 -> 139054 bytes + ...ase-minimized-hb-subset-fuzzer-5697351339999232 | Bin 0 -> 391689 bytes + ...ase-minimized-hb-subset-fuzzer-5708063625969664 | Bin 0 -> 155466 bytes + ...ase-minimized-hb-subset-fuzzer-5711849555755008 | Bin 0 -> 1896 bytes + ...ase-minimized-hb-subset-fuzzer-5733203291144192 | Bin 0 -> 34 bytes + ...ase-minimized-hb-subset-fuzzer-5735719311507456 | Bin 0 -> 879 bytes + ...ase-minimized-hb-subset-fuzzer-5745268385906688 | Bin 0 -> 291536 bytes + ...ase-minimized-hb-subset-fuzzer-5756658848890880 | Bin 0 -> 2734 bytes + ...ase-minimized-hb-subset-fuzzer-5758358618898432 | Bin 0 -> 20112 bytes + ...ase-minimized-hb-subset-fuzzer-5764020596899840 | Bin 0 -> 1766 bytes + test/fuzzing/fonts/fuzz-0-harfbuzz_hb-fuzzer | Bin 0 -> 3266 bytes + 35 files changed, 0 insertions(+), 0 deletions(-) + +commit 9004848560141d98dff61eda2dea01412ddc24ea +Author: Ebrahim Byagowi +Date: Wed Mar 4 12:12:35 2020 +0330 + + [gvar] Make sure font's num_coords matches with gvar.axisCount + + src/hb-ot-glyf-table.hh | 2 +- + src/hb-ot-var-gvar-table.hh | 11 ++++++----- + 2 files changed, 7 insertions(+), 6 deletions(-) -commit d6206dbcc4e4ef8c034ee714e74d3a76c5333a12 +commit 1af3363f9e4b52d68e6dd5600cef4479614292d5 Author: Ebrahim Byagowi -Date: Wed Aug 14 11:24:06 2019 +0430 +Date: Wed Mar 4 11:32:01 2020 +0330 - [opbd] Turn OpticalBounds fields to FWORD + [gvar] Use hb_array_t instead indexing raw pointers - src/hb-aat-layout-opbd-table.hh | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) + src/hb-ot-var-gvar-table.hh | 39 ++++++++++++++++++--------------------- + 1 file changed, 18 insertions(+), 21 deletions(-) -commit 6461143b44f81a4190d3f1cb02238750536f08e4 -Author: Behdad Esfahbod -Date: Tue Aug 13 22:20:54 2019 -0700 +commit 99b5b3f1b125010aea0cbb9183950fa18fe089b5 +Author: Ebrahim Byagowi +Date: Wed Mar 4 11:15:46 2020 +0330 - 2.6.0 + [gvar] Make sure TupleVarHeader has the needed size + + Fixes https://crbug.com/oss-fuzz/21026 - NEWS | 23 +++++++++++++++++++++++ - configure.ac | 2 +- - docs/harfbuzz-docs.xml | 4 ++++ - src/hb-font.cc | 2 +- - src/hb-gdi.cc | 2 +- - src/hb-ot-layout.cc | 2 ++ - src/hb-ot-layout.h | 2 +- - src/hb-ot-meta.cc | 4 ++-- - src/hb-ot-meta.h | 2 +- - src/hb-ot-metrics.cc | 8 ++++---- - src/hb-ot-metrics.h | 2 +- - src/hb-version.h | 6 +++--- - 12 files changed, 44 insertions(+), 15 deletions(-) + src/hb-ot-var-gvar-table.hh | 2 +- + ...zz-testcase-minimized-hb-draw-fuzzer-5703524300357632 | Bin 0 -> 1515 bytes + 2 files changed, 1 insertion(+), 1 deletion(-) -commit e56d4ff43b97ca35a8324be2acf1c8644f3b0a24 -Author: Behdad Esfahbod -Date: Tue Aug 13 21:02:47 2019 -0700 +commit b398748d8bd61dbf61a3f8ec7e6aaf715bf57f65 +Author: Ebrahim Byagowi +Date: Wed Mar 4 11:18:19 2020 +0330 - Rename hb_ot_meta_get_entries() to +hb_ot_meta_get_entry_tags() + [algs] Add hb_clamp + + Similar to stl and glsl's clamp - docs/harfbuzz-sections.txt | 2 +- - src/hb-ot-meta.cc | 8 ++++---- - src/hb-ot-meta.h | 8 ++++---- - src/test-ot-meta.cc | 4 ++-- - test/api/test-ot-face.c | 2 +- - test/api/test-ot-meta.c | 6 +++--- - 6 files changed, 15 insertions(+), 15 deletions(-) + src/hb-algs.hh | 7 +++++++ + src/hb-ot-var-fvar-table.hh | 2 +- + src/hb-sanitize.hh | 6 +++--- + 3 files changed, 11 insertions(+), 4 deletions(-) -commit aade9b70aabd8a97dd8a28cda2cf4d0694dd7350 -Author: Behdad Esfahbod -Date: Tue Aug 13 16:09:20 2019 -0700 +commit 558f922788ccceaa80c31bf0e379be4c96598d13 +Author: Ebrahim Byagowi +Date: Tue Mar 3 20:27:19 2020 +0330 - [pool] Fix alignment assertion - - I *think* it should fix https://github.com/harfbuzz/harfbuzz/issues/1901 - - Ie. if on a system, alignof(void*) < sizeof(void*)... + [fuzz] Avoid empty memcpy and ubsan complain by length checking before memcpy - src/hb-pool.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + test/fuzzing/hb-shape-fuzzer.cc | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) -commit b31d627f151c8eeeb12ed84c3282392d6adbc5b4 +commit 6543d166fded5aefb223bcaf614985654a2dafc0 Author: Ebrahim Byagowi -Date: Sun Aug 11 23:34:48 2019 +0430 +Date: Tue Mar 3 20:26:46 2020 +0330 - Increase subset fuzzer timeout to 16s + [fuzz] Remove the not yet fixed timeout, going to investigate + + ...zz-testcase-minimized-harfbuzz_fuzzer-5754958982021120 | Bin 319 -> 0 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) + +commit 2bbf1c8673a549be22b316a8055c080787129f55 +Author: Ebrahim Byagowi +Date: Tue Mar 3 19:42:38 2020 +0330 + + [fuzz] Add more of supposed to already be fixed cases from Chromium bug tracker + + ...usterfuzz-testcase-harfbuzz_fuzzer-4822416500195328 | Bin 0 -> 16800 bytes + ...usterfuzz-testcase-harfbuzz_fuzzer-5598263003840512 | Bin 0 -> 16800 bytes + ...usterfuzz-testcase-harfbuzz_fuzzer-6327734241591296 | Bin 0 -> 30 bytes + ...testcase-minimized-harfbuzz_fuzzer-4601449528688640 | Bin 0 -> 99 bytes + ...testcase-minimized-harfbuzz_fuzzer-4684060812378112 | Bin 0 -> 604 bytes + ...testcase-minimized-harfbuzz_fuzzer-4710179695493120 | Bin 0 -> 982 bytes + ...testcase-minimized-harfbuzz_fuzzer-4850271066914816 | Bin 0 -> 386 bytes + ...testcase-minimized-harfbuzz_fuzzer-4977194146988032 | Bin 0 -> 520 bytes + ...testcase-minimized-harfbuzz_fuzzer-5012913062150144 | Bin 0 -> 283 bytes + ...testcase-minimized-harfbuzz_fuzzer-5103148350963712 | Bin 0 -> 112 bytes + ...testcase-minimized-harfbuzz_fuzzer-5151890782027776 | Bin 0 -> 318 bytes + ...testcase-minimized-harfbuzz_fuzzer-5157039562162176 | Bin 0 -> 363 bytes + ...testcase-minimized-harfbuzz_fuzzer-5163560220753920 | Bin 0 -> 520 bytes + ...testcase-minimized-harfbuzz_fuzzer-5180622648770560 | Bin 0 -> 110 bytes + ...testcase-minimized-harfbuzz_fuzzer-5221177988743168 | Bin 0 -> 936 bytes + ...testcase-minimized-harfbuzz_fuzzer-5334300410773504 | Bin 0 -> 99 bytes + ...testcase-minimized-harfbuzz_fuzzer-5644474732249088 | Bin 0 -> 568 bytes + ...testcase-minimized-harfbuzz_fuzzer-5677289226108928 | Bin 0 -> 47 bytes + ...testcase-minimized-harfbuzz_fuzzer-5719356528656384 | Bin 0 -> 330 bytes + ...testcase-minimized-harfbuzz_fuzzer-5754958982021120 | Bin 0 -> 319 bytes + ...testcase-minimized-harfbuzz_fuzzer-5952939792531456 | 0 + ...testcase-minimized-harfbuzz_fuzzer-6107935408390144 | Bin 0 -> 16800 bytes + ...testcase-minimized-harfbuzz_fuzzer-6120104833843200 | Bin 0 -> 81 bytes + ...testcase-minimized-harfbuzz_fuzzer-6128803416637440 | Bin 0 -> 4041 bytes + ...testcase-minimized-harfbuzz_fuzzer-6142466903506944 | Bin 0 -> 926 bytes + ...testcase-minimized-harfbuzz_fuzzer-6198448785981440 | Bin 0 -> 2357 bytes + ...testcase-minimized-harfbuzz_fuzzer-6462232674959360 | Bin 0 -> 2738 bytes + ...testcase-minimized-harfbuzz_fuzzer-6600932143136768 | Bin 0 -> 988 bytes + ...testcase-minimized-harfbuzz_fuzzer-6603291950841856 | Bin 0 -> 1384 bytes + ...testcase-minimized-harfbuzz_fuzzer-6712347260092416 | Bin 0 -> 196336 bytes + ...case-minimized-harfbuzz_fuzzer.exe-5470269447340032 | Bin 0 -> 341 bytes + ...z-testcase-minimized-hb-set-fuzzer-6255224052514816 | 1 + + test/fuzzing/fonts/fuzz-0-harfbuzz_fuzzer | Bin 0 -> 982 bytes + test/fuzzing/fonts/fuzz-1-harfbuzz_fuzzer | Bin 0 -> 10424 bytes + test/fuzzing/fonts/fuzz-1-harfbuzz_fuzzer(1) | Bin 0 -> 16144 bytes + test/fuzzing/fonts/fuzz-2-harfbuzz_fuzzer | Bin 0 -> 1010 bytes + test/fuzzing/fonts/fuzz-2-harfbuzz_fuzzer(1) | Bin 0 -> 1010 bytes + test/fuzzing/fonts/fuzz-3-harfbuzz_fuzzer | Bin 0 -> 6791 bytes + test/fuzzing/fonts/fuzz-3-harfbuzz_fuzzer(1) | Bin 0 -> 2625 bytes + test/fuzzing/fonts/fuzz-3-harfbuzz_fuzzer(2) | Bin 0 -> 2813 bytes + test/fuzzing/fonts/fuzz-3-harfbuzz_fuzzer(3) | Bin 0 -> 2813 bytes + test/fuzzing/fonts/fuzz-3-harfbuzz_fuzzer(4) | Bin 0 -> 646 bytes + test/fuzzing/fonts/fuzz-3-harfbuzz_fuzzer(5) | Bin 0 -> 6791 bytes + 43 files changed, 1 insertion(+) + +commit f745777c60455e31d4f30ca0b06f06b8d062b013 +Author: Ebrahim Byagowi +Date: Tue Mar 3 19:14:41 2020 +0330 + + minor, debug bit, ops + + src/hb-ot-layout-gsubgpos.hh | 1 - + 1 file changed, 1 deletion(-) + +commit f253f06cf368d74f1ec5d84c6439ae2a571e99f1 +Author: Ebrahim Byagowi +Date: Tue Mar 3 18:57:13 2020 +0330 + + [fuzz] Add another fixed case - To satisfy -valgrind and -tsan bots, very ugly + https://crbug.com/oss-fuzz/14626 + + another numerous subtables count which is fixed by d38360397 - test/fuzzing/run-subset-fuzzer-tests.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-layout-gsubgpos.hh | 1 + + ...testcase-minimized-hb-shape-fuzzer-5712050577211392 | Bin 0 -> 647751 bytes + 2 files changed, 1 insertion(+) -commit 5b9cf191fe1fb13bd4bf914e0f4c03c3b2795a73 +commit d38360397609d2f3d2dd115bcb0f58d10a1bb4a3 Author: Ebrahim Byagowi -Date: Sun Aug 11 23:07:29 2019 +0430 +Date: Mon Mar 2 22:41:08 2020 +0330 - [ci] Disable vcpkg thus running the test suit in Windows + Limit OT::Lookup subtables (#2219) - vcpkg apparently doesn't like to work the same way used to anymore, lets disable it + Fixes https://crbug.com/oss-fuzz/13943 - appveyor.yml | 20 ++++++++++---------- - 1 file changed, 10 insertions(+), 10 deletions(-) + src/hb-ot-layout-common.hh | 7 +++++-- + src/hb-sanitize.hh | 13 +++++++++++-- + ...testcase-minimized-hb-shape-fuzzer-5666162551029760 | Bin 0 -> 202319 bytes + 3 files changed, 16 insertions(+), 4 deletions(-) -commit 60d9f0097580a339c7ffe582cc0657698e315cea +commit 29efd964f20625e12e697d74ae226b0d3b158aa5 Author: Ebrahim Byagowi -Date: Sun Aug 11 16:15:19 2019 +0430 +Date: Mon Mar 2 14:22:29 2020 +0330 - Implement opbd table parsing + [fuzz] Add cases that marked as wontfix - https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6opbd.html + Let's see if they were really false alarms, if so, let's just have them. - src/Makefile.sources | 1 + - src/hb-aat-layout-opbd-table.hh | 111 ++++++++++++++++++++++++++++++++++++++++ - src/hb-ot-face-table-list.hh | 1 + - src/hb-ot-layout.cc | 1 + - 4 files changed, 114 insertions(+) + ...usterfuzz-testcase-hb-shape-fuzzer-5072750494875648 | Bin 0 -> 35 bytes + ...usterfuzz-testcase-hb-shape-fuzzer-5638729035677696 | Bin 0 -> 946 bytes + ...usterfuzz-testcase-hb-shape-fuzzer-5643643755429888 | Bin 0 -> 1776 bytes + ...usterfuzz-testcase-hb-shape-fuzzer-5644258942386176 | Bin 0 -> 61 bytes + ...usterfuzz-testcase-hb-shape-fuzzer-5657878543728640 | Bin 0 -> 1828 bytes + ...usterfuzz-testcase-hb-shape-fuzzer-5680362806575104 | Bin 0 -> 564 bytes + ...usterfuzz-testcase-hb-shape-fuzzer-5689920685867008 | Bin 0 -> 42 bytes + ...sterfuzz-testcase-hb-subset-fuzzer-5756332481708032 | Bin 0 -> 6065 bytes + ...estcase-minimized-hb-subset-fuzzer-5121706490593280 | Bin 0 -> 161328 bytes + ...estcase-minimized-hb-subset-fuzzer-5759783999635456 | Bin 0 -> 165952 bytes + 10 files changed, 0 insertions(+), 0 deletions(-) -commit 8762676e34cef13f4b263b377b485b199b66d4d1 +commit 60262e4ca9dc8acd740e47b14d6e7b586c16ceac Author: Ebrahim Byagowi -Date: Sat Aug 10 01:26:55 2019 +0430 +Date: Sat Feb 29 22:57:59 2020 +0330 - [os2] Replace null pool addr compare by checking vital fields (#1896) + [var] Build end-points array on gvar itself - src/hb-ot-os2-table.hh | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/hb-ot-glyf-table.hh | 13 +++---------- + src/hb-ot-var-gvar-table.hh | 8 ++++++-- + 2 files changed, 9 insertions(+), 12 deletions(-) -commit 1f926fb2b642094a15e686be6a910e709b15ebd0 +commit cb65150fecee43b47cb706ed51be4f428b8f33df Author: Ebrahim Byagowi -Date: Wed Aug 7 20:22:20 2019 +0430 +Date: Sat Feb 29 16:12:54 2020 +0330 - [fvar] Use roundf instead hardcoding round logic + [draw] minor - src/hb-ot-var-fvar-table.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + test/fuzzing/hb-draw-fuzzer.cc | 6 ------ + 1 file changed, 6 deletions(-) -commit 60485ab0473630c585bb96fcdc14dbe415edf4f2 +commit 44169f3396af0c60ebc74fd4c624988d871dcf0f Author: Ebrahim Byagowi -Date: Wed Aug 7 23:23:06 2019 +0430 +Date: Sat Feb 29 16:04:03 2020 +0330 - [os2] Get defined lower/upper optical size + [draw] Fix invalid rendering of some glyph on Estedad-VF + + Basically reverts 11f3fca so I can do the same tested and better later + + Fixes #2215 - src/hb-ot-os2-table.hh | 17 +++++++++++++++++ - 1 file changed, 17 insertions(+) + src/hb-ot-glyf-table.hh | 15 ++++++++--- + src/hb-ot-var-gvar-table.hh | 26 ++++++------------ + test/api/fonts/Estedad-VF.ttf | Bin 0 -> 94364 bytes + test/api/fonts/README | 2 ++ + test/api/test-draw.c | 61 ++++++++++++++++++++++++++++++++++++++++++ + 5 files changed, 83 insertions(+), 21 deletions(-) -commit 321d5588d4fa96bcc4aa558d2f982430031f242e -Author: Qunxin Liu -Date: Tue Jul 2 16:30:57 2019 -0700 +commit 86c40b3a1d8c7d970ce1b450f4dfadef8d9d0126 +Author: Ebrahim Byagowi +Date: Sat Feb 29 14:11:46 2020 +0330 - [subset] Add subsetting for GPOS Lookup Type 1: Single Adjustment Positioning Subtable + [fuzz/draw] Call _get_glyph_extents + + Other render related APIs also may be added also later such + as ot-color and future rendering things. - src/hb-ot-layout-gpos-table.hh | 157 ++++++++++++++++++++- - test/subset/data/Makefile.am | 1 + - test/subset/data/Makefile.sources | 1 + - .../gpos1_2_font.keep-layout-retain-gids.41,43.otf | Bin 0 -> 2068 bytes - .../gpos1_2_font.keep-layout-retain-gids.41,46.otf | Bin 0 -> 2232 bytes - .../gpos1_2_font.keep-layout-retain-gids.43,46.otf | Bin 0 -> 2096 bytes - ...eep-layout-retain-gids.retain-all-codepoint.otf | Bin 0 -> 3668 bytes - test/subset/data/fonts/gpos1_2_font.otf | Bin 0 -> 4564 bytes - test/subset/data/tests/layout.gpos.tests | 11 ++ - 9 files changed, 166 insertions(+), 4 deletions(-) + test/fuzzing/hb-draw-fuzzer.cc | 13 +++++++++++-- + 1 file changed, 11 insertions(+), 2 deletions(-) -commit 37572882e7a685d804384eaf11f0f3e53af38341 -Author: Qunxin Liu -Date: Tue Jun 25 13:17:30 2019 -0700 +commit 5ab50eebd7846b79528058a1e4e83bb181416c30 +Author: Michiharu Ariza +Date: Sat Feb 29 01:32:29 2020 -0800 - [subset] cmap table to use _subset2 and new iterator frameworks + collect_unicodes() with clamp, calling add_range() + + Use add_range instead an inner loop, clamp its input number by + number of glyphs a face has. + + Even the face cmap12 and 13 have 32-bit hb_codepoint_t, which is here + used to make timeout, face's maxp has 16-bit gid limitation at least for now, + using that makes sure we both fix and the timeout and don't need to change + much things here also in order to support 32-bit gids also someday. + + Fixes #2204 - src/hb-ot-cmap-table.hh | 670 +++++++++++------------ - src/hb-subset.cc | 2 +- - test/api/fonts/Roboto-Regular.D7,D8,D9,DA,DE.ttf | Bin 2816 -> 2532 bytes - test/api/fonts/Roboto-Regular.abc.ttf | Bin 2460 -> 2168 bytes - test/api/fonts/Roboto-Regular.ac.ttf | Bin 2268 -> 1988 bytes - 5 files changed, 320 insertions(+), 352 deletions(-) + src/hb-face.cc | 2 +- + src/hb-ot-cmap-table.hh | 30 ++++++++++++--------- + .../fonts/1746cad6bc3fb2b355db50a5af37c9b58d9ad376 | Bin 0 -> 23293 bytes + 3 files changed, 19 insertions(+), 13 deletions(-) -commit 06596cf90700ff76f23297141c656dfc317eece6 -Author: Khaled Hosny -Date: Sat Aug 3 13:55:34 2019 +0200 +commit 414529e45a4cb3ee444c2dd5a2a9cbd6be0598af +Author: Garret Rieger +Date: Fri Feb 28 15:15:55 2020 -0800 - Some styling + [subset] Limit the number of feature indices processed during script subsetting. - README.python.md | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) + src/hb-ot-layout-common.hh | 20 ++++++++++++++++++-- + src/hb-ot-layout-gsubgpos.hh | 2 +- + 2 files changed, 19 insertions(+), 3 deletions(-) -commit 5848c890cf2f8a14c9d9e329c4f8283feac1f0c3 -Author: Ebrahim Byagowi -Date: Sat Aug 3 14:19:28 2019 +0430 +commit 75622b0d246eefe5d912a6918d14c7250ebaea78 +Author: Garret Rieger +Date: Fri Feb 28 14:11:48 2020 -0800 - [metrics] Add metrics tags documentation + [subset] Limit the number of features processed in the feature closure. - src/hb-ot-metrics.h | 28 ++++++++++++++++++++++++++++ - 1 file changed, 28 insertions(+) + src/hb-ot-layout-gsubgpos.hh | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) -commit 4d1872b8e019659a92a59b1d7cba6fd81ed3607d -Author: Ebrahim Byagowi -Date: Sat Aug 3 14:06:46 2019 +0430 +commit 410b4881d088e924781385d1958878f2923645d0 +Author: Garret Rieger +Date: Fri Feb 28 10:38:27 2020 -0800 - [base] Add documentation for baseline tags from ot spec + [subset] Add fuzzer timeout testcase. - src/hb-ot-layout.h | 19 ++++++++++++++++++- - 1 file changed, 18 insertions(+), 1 deletion(-) + ...estcase-minimized-hb-subset-fuzzer-6276691949518848 | Bin 0 -> 184722 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) -commit bbeee84a7f048633b0aaa95aa6129871a3a22164 -Author: Ebrahim Byagowi -Date: Sat Aug 3 13:47:55 2019 +0430 +commit c66ee213b70eb204b750675d60f25549d942d3d7 +Author: Garret Rieger +Date: Thu Feb 27 12:25:01 2020 -0800 - [meta] Add metadata tags documentation from ot spec + Limit the number of feature indices processed during feature collection. - src/hb-ot-meta.h | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) + src/hb-ot-layout-common.hh | 5 +++++ + src/hb-ot-layout.cc | 14 +++++++++++--- + 2 files changed, 16 insertions(+), 3 deletions(-) -commit 521c7013abab84a0994fda3977ccd1ba3d496242 +commit e57ced5fc06bd14a579a983db73e94416f6fedf4 Author: Ebrahim Byagowi -Date: Tue Jul 30 18:10:40 2019 +0430 +Date: Fri Feb 28 23:29:05 2020 +0330 - [cpal] revert port to dagger + [gvar] Add other possibly fixed fuzzer case - It has a different semantic, maybe we should just do a zero memset, - letting Behdad to decide. + Speculatively should've been fixed by 61208401 + + https://crbug.com/oss-fuzz/20924 related - src/hb-ot-color-cpal-table.hh | 5 ++--- - 1 file changed, 2 insertions(+), 3 deletions(-) + ...zz-testcase-minimized-hb-draw-fuzzer-5750654771658752 | Bin 0 -> 4004 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) -commit 8014ce198a09d20cb947e4a465c7d893a84c55be +commit 758fda728ba5c9d4542ea2385482f7d090ffda0d Author: Ebrahim Byagowi -Date: Tue Jul 30 17:31:34 2019 +0430 +Date: Fri Feb 28 23:19:06 2020 +0330 - [cpal] port to dagger (#1887) + [glyf] Don't accept gids higher than maxp's glyphs number + + This specially becomes concerning on sub-components where a gvar table + that is sanitized using maxp's glyphs number overflows when a high gid + accepted here goes to it, maybe an additional check can be put there + also, this however feels to be enough. + + Fixes https://crbug.com/oss-fuzz/20944 - src/hb-ot-color-cpal-table.hh | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) + src/hb-ot-glyf-table.hh | 1 + + ...zz-testcase-minimized-hb-draw-fuzzer-5668491560747008 | Bin 0 -> 8771 bytes + 2 files changed, 1 insertion(+) -commit d67201da5a2142cb9d039a8cb2cb713556d945af +commit e642aab1166cf7782fb55f1721eba057c2bfd609 Author: Ebrahim Byagowi -Date: Tue Jul 30 17:20:18 2019 +0430 +Date: Fri Feb 28 22:24:25 2020 +0330 - [colr] minor + [subset] Add source_blob as a hb_subset_context_t field (#2203) + + So no more double sanitizing source table. - src/hb-ot-color-colr-table.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-color-sbix-table.hh | 23 ++++++++--------------- + src/hb-ot-var-gvar-table.hh | 27 ++++++--------------------- + src/hb-subset.cc | 2 +- + src/hb-subset.hh | 5 ++++- + 4 files changed, 19 insertions(+), 38 deletions(-) -commit 8c0a2e68ad91e55a11162da0cddb355810a4c8a0 +commit e90213868b121af72d19b6022a671ebe72ff55aa Author: Ebrahim Byagowi -Date: Tue Jul 30 13:16:15 2019 +0430 +Date: Fri Feb 28 21:24:27 2020 +0330 - [fuzz] Add dummy call of the added APIs (#1886) + Revert "collect_unicodes() to check gid < num_glyphs with cmap 12" + + Didn't fix the case actually, making bots to fail. + + This reverts commit 15b43a410400c74a32d40f4b89dbea02fa7cd6e1. - test/api/test-ot-face.c | 10 ++++++++++ - 1 file changed, 10 insertions(+) + src/hb-face.cc | 2 +- + src/hb-ot-cmap-table.hh | 30 +++++++++------------ + .../fonts/1746cad6bc3fb2b355db50a5af37c9b58d9ad376 | Bin 23293 -> 0 bytes + 3 files changed, 13 insertions(+), 19 deletions(-) -commit e5cf9718c07c8bf1fc20cd573cef2d125c28281f +commit 61208401f41f5d41f32d436cee500c630706f6be Author: Ebrahim Byagowi -Date: Tue Jul 30 04:44:23 2019 +0430 +Date: Fri Feb 28 21:09:07 2020 +0330 - [colr][feat][meta] Port sub_array iteration to dagger (#1868) + [gvar] Use hb_bytes_t.check_range instead having in house one + + And use TupleVarHeader calculated size for validity check. + + Fixes https://crbug.com/oss-fuzz/20919 and possibly other gvar related issues - src/hb-aat-layout-feat-table.hh | 37 ++++++++++++++++++------------------- - src/hb-ot-color-colr-table.hh | 14 ++++++-------- - src/hb-ot-meta-table.hh | 8 +++++--- - 3 files changed, 29 insertions(+), 30 deletions(-) + src/hb-ot-var-gvar-table.hh | 36 ++++++++------------- + ...tcase-minimized-hb-draw-fuzzer-5686960406659072 | Bin 0 -> 4004 bytes + 2 files changed, 13 insertions(+), 23 deletions(-) -commit 9f2b4956b484b802eb37f36974c11785c90493ce -Author: Ebrahim Byagowi -Date: Tue Jul 30 04:42:51 2019 +0430 +commit 15b43a410400c74a32d40f4b89dbea02fa7cd6e1 +Author: Michiharu Ariza +Date: Fri Feb 28 08:45:39 2020 -0800 - [base] Add hb_ot_layout_get_baseline API + collect_unicodes() to check gid < num_glyphs with cmap 12 + + fixes #2204 - docs/harfbuzz-sections.txt | 2 + - src/hb-ot-face-table-list.hh | 6 ++- - src/hb-ot-layout.cc | 87 ++++++++++++-------------------------------- - src/hb-ot-layout.h | 32 ++++++++++++++++ - test/api/test-baseline.c | 4 +- - 5 files changed, 63 insertions(+), 68 deletions(-) + src/hb-face.cc | 2 +- + src/hb-ot-cmap-table.hh | 30 ++++++++++++--------- + .../fonts/1746cad6bc3fb2b355db50a5af37c9b58d9ad376 | Bin 0 -> 23293 bytes + 3 files changed, 19 insertions(+), 13 deletions(-) -commit 40a4b6ddbdc84a25f76bd4d7ff41b1322fe95b83 +commit 868ecf7b2660747f7628df2b3a17a8d68b0325eb Author: Ebrahim Byagowi -Date: Sat Jul 27 13:33:46 2019 +0430 +Date: Fri Feb 28 19:50:30 2020 +0330 - [var] Add a new API, hb_font_set_var_named_instance + [draw] Add fuzzer runner - docs/harfbuzz-sections.txt | 1 + - src/hb-font.cc | 28 ++++++++++++++++++++++++++++ - src/hb-font.h | 4 ++++ - test/api/test-ot-extents-cff.c | 32 ++++++++++++++++++++++++++++++++ - 4 files changed, 65 insertions(+) + test/fuzzing/Makefile.am | 3 + + test/fuzzing/run-draw-fuzzer-tests.py | 107 ++++++++++++++++++++++++++++++++++ + 2 files changed, 110 insertions(+) -commit b6a2281f1a2d29cc5797f4f266800f7141591585 -Author: Ebrahim Byagowi -Date: Tue Jul 30 03:45:45 2019 +0430 +commit b0749bfaa53cdf34180b2d15c6e3840f03d5ece2 +Author: Qunxin Liu +Date: Fri Feb 14 13:49:44 2020 -0800 - [meta] Make values match their enum type naming + [subset] GDEF LigCaretList subsetting support - src/hb-ot-meta.h | 10 +++++----- - test/api/test-ot-meta.c | 4 ++-- - 2 files changed, 7 insertions(+), 7 deletions(-) + src/hb-ot-layout-gdef-table.hh | 73 +++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 72 insertions(+), 1 deletion(-) -commit 20072a2eca8943a82e36cbb603ad31481cfc56cd -Author: Ebrahim Byagowi -Date: Tue Jul 30 03:43:15 2019 +0430 +commit 002f0e20c4c6e35e0ff379ff58cfe1e19067133a +Author: ariza +Date: Thu Feb 27 17:34:26 2020 -0800 - [metrics] Make values match their enum type naming + reimplment serialize_int using check_assign() - src/hb-ot-font.cc | 12 +++--- - src/hb-ot-metrics.cc | 100 ++++++++++++++++++++++----------------------- - src/hb-ot-metrics.h | 58 +++++++++++++------------- - test/api/test-ot-metrics.c | 26 ++++++------ - 4 files changed, 98 insertions(+), 98 deletions(-) + src/hb-cff-interp-common.hh | 23 ++++++++++------------- + src/hb-ot-cff-common.hh | 24 +++++++++++++----------- + src/hb-subset-cff1.cc | 2 +- + 3 files changed, 24 insertions(+), 25 deletions(-) -commit ed2965a8527ee89994c8eecf451bf71846b3ca86 +commit 14b134379d7a34af1a78b0ea930a6fab79779723 Author: Ebrahim Byagowi -Date: Tue Jul 30 03:34:10 2019 +0430 +Date: Thu Feb 27 15:58:58 2020 +0330 - [base] Don't use enum inside the table + [gvar] Minor, check whether sub_array result also have enough room - src/hb-ot-layout-base-table.hh | 31 ++++++++++++++----------------- - 1 file changed, 14 insertions(+), 17 deletions(-) + src/hb-ot-var-gvar-table.hh | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) -commit 388fa9b32611a8726b9bbfe7ccf8cdbcd818fd70 +commit 8eba66c1c6d19bcc779a3b4e7b68251511986ee8 Author: Ebrahim Byagowi -Date: Sat Jul 27 14:56:18 2019 +0430 +Date: Thu Feb 27 15:58:58 2020 +0330 - [lcar] flip for and switch position + [gvar] Fix invalid memory access by refactoring GlyphVarData fetch logic + + Fixes https://crbug.com/oss-fuzz/20906 - src/hb-aat-layout-lcar-table.hh | 16 ++++++++++------ - 1 file changed, 10 insertions(+), 6 deletions(-) + src/hb-ot-var-gvar-table.hh | 70 +++++++++++---------- + ...tcase-minimized-hb-draw-fuzzer-5088336521986048 | Bin 0 -> 1413 bytes + 2 files changed, 36 insertions(+), 34 deletions(-) -commit f0dd724c1e091f42f289efbebd2c50e830e59c6e -Merge: 68ac767e 4e1da6bb -Author: blueshade7 -Date: Mon Jul 29 14:21:05 2019 -0700 +commit f44e1dc07d24abb4c9311d4a55725219665ca84c +Author: Evgeniy Reizner +Date: Thu Feb 27 02:02:22 2020 +0200 - Merge branch 'master' into subset-varstore + Fix spelling. -commit 4e1da6bb612b0c6386ab143dbb4ca19ff25bc2ba -Author: Ebrahim Byagowi -Date: Mon Jul 29 22:03:56 2019 +0430 + src/hb-ot-glyf-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) - [metrics] Rename hb_ot_metrics_t to hb_ot_metrics_tag_t +commit 5ad761b943721c3541d0ca0472f34f7d54b89b5b +Author: Qunxin Liu +Date: Tue Feb 11 13:05:40 2020 -0800 - src/hb-ot-metrics.cc | 22 +++++++++++----------- - src/hb-ot-metrics.h | 16 ++++++++-------- - src/hb-ot-metrics.hh | 6 +++--- - 3 files changed, 22 insertions(+), 22 deletions(-) + [subset] GDEF MarkGlyphSets subsetting support -commit 2c2a2b97dbe24ae2e09018f435559c97a460bdcb -Author: Ebrahim Byagowi -Date: Mon Jul 29 22:01:13 2019 +0430 + src/hb-ot-layout-gdef-table.hh | 43 ++++++++++++++++++++- + test/subset/data/Makefile.am | 1 + + test/subset/data/Makefile.sources | 1 + + .../Roboto-Regular.default.1E00,303.ttf | Bin 0 -> 2456 bytes + .../layout.gdef/Roboto-Regular.default.303.ttf | Bin 0 -> 2128 bytes + .../Roboto-Regular.default.309,20,30F.ttf | Bin 0 -> 2220 bytes + .../layout.gdef/Roboto-Regular.default.323.ttf | Bin 0 -> 2020 bytes + .../Roboto-Regular.default.41,42,43.ttf | Bin 0 -> 2480 bytes + .../Roboto-Regular.drop-hints.1E00,303.ttf | Bin 0 -> 1204 bytes + .../layout.gdef/Roboto-Regular.drop-hints.303.ttf | Bin 0 -> 1012 bytes + .../Roboto-Regular.drop-hints.309,20,30F.ttf | Bin 0 -> 1068 bytes + .../layout.gdef/Roboto-Regular.drop-hints.323.ttf | Bin 0 -> 952 bytes + .../Roboto-Regular.drop-hints.41,42,43.ttf | Bin 0 -> 1188 bytes + .../Roboto-Regular.keep-gdef.1E00,303.ttf | Bin 0 -> 2520 bytes + .../layout.gdef/Roboto-Regular.keep-gdef.303.ttf | Bin 0 -> 2192 bytes + .../Roboto-Regular.keep-gdef.309,20,30F.ttf | Bin 0 -> 2288 bytes + .../layout.gdef/Roboto-Regular.keep-gdef.323.ttf | Bin 0 -> 2084 bytes + .../Roboto-Regular.keep-gdef.41,42,43.ttf | Bin 0 -> 2536 bytes + test/subset/data/tests/layout.gdef.tests | 14 +++++++ + 19 files changed, 58 insertions(+), 1 deletion(-) + +commit fcd7f33bbb12d66b3a50caa448cb91ef7c0daa9e +Author: Qunxin Liu +Date: Mon Feb 10 10:36:50 2020 -0800 + + [subset] GDEF glyphClassDef subsetting support + glyphClassDef uses the same ClassDef format. However, glyphClassDef table + uses predefined class values so we do not remap class values. + + src/hb-ot-layout-common.hh | 42 ++++++++++++--------- + ...Mplus1p-Regular.keep-gdef.1D715,1D7D8,41,42.ttf | Bin 0 -> 2148 bytes + .../japanese/Mplus1p-Regular.keep-gdef.25771.ttf | Bin 0 -> 1860 bytes + ...lar.keep-gdef.3042,3044,3046,3048,304A,304B.ttf | Bin 0 -> 2572 bytes + ...lar.keep-gdef.3042,3044,3046,73E0,5EA6,8F38.ttf | Bin 0 -> 2816 bytes + .../Mplus1p-Regular.keep-gdef.61,63,65,6B.ttf | Bin 0 -> 2116 bytes + ...lar.keep-gdef.660E,6975,73E0,5EA6,8F38,6E05.ttf | Bin 0 -> 3112 bytes + .../japanese/Mplus1p-Regular.keep-gdef.660E.ttf | Bin 0 -> 1852 bytes + test/subset/data/profiles/keep-gdef.txt | 1 + + test/subset/data/tests/japanese.tests | 1 + + 10 files changed, 26 insertions(+), 18 deletions(-) + +commit 50129b03a1cc0bb08231d46571a34aca85b7b14f +Author: Garret Rieger +Date: Tue Feb 25 17:39:59 2020 -0800 - [meta] Rename hb_ot_meta_t to hb_ot_meta_tag_t + Add a reverse () call to hb_array_t. - src/hb-ot-meta-table.hh | 10 +++++----- - src/hb-ot-meta.cc | 10 +++++----- - src/hb-ot-meta.h | 14 +++++++------- - src/test-ot-meta.cc | 4 ++-- - test/api/test-ot-meta.c | 6 +++--- - 5 files changed, 22 insertions(+), 22 deletions(-) + src/hb-array.hh | 15 +++++++++++++++ + src/hb-ot-cmap-table.hh | 26 +++++++++++++++----------- + 2 files changed, 30 insertions(+), 11 deletions(-) -commit 7bcc5dfa97a43d9c5f6dfdb87b4f0d5a589ecd48 -Author: Behdad Esfahbod -Date: Sun Jul 28 20:55:50 2019 -0700 +commit 38c6598c1c7d645b46970ec2e7f345d45dd38380 +Author: Garret Rieger +Date: Tue Feb 25 17:20:05 2020 -0800 - [iter] Fix accumulate to accept const types + Switch to C style comments. - src/hb-iter.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-cmap-table.hh | 38 +++++++++++++++++++++----------------- + 1 file changed, 21 insertions(+), 17 deletions(-) -commit e21bdf500d4ecc3a5fd6f79aabf6232f3967035e -Author: Ebrahim Byagowi -Date: Sun Jul 28 22:59:09 2019 +0430 +commit 52b6e0baa0c479511d3e06d3a71a65f73e88cfdc +Author: Garret Rieger +Date: Mon Feb 10 12:26:40 2020 -0800 - Increase subset fuzzer timeout to 8s - - Probably we should just remove timeout when running tsan and vaglrind here, the flaky bots + When serializing cmap14 order the offsets from smallest to largest. + Current versions of OTS fail fonts with cmap 14's who's last offset does not point to the a block at the end of the table. - test/fuzzing/run-subset-fuzzer-tests.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-cmap-table.hh | 115 ++++++++++++++++++++++++++++++++++-------------- + 1 file changed, 83 insertions(+), 32 deletions(-) -commit 87454c447d705327a26c1f879e0a4f3002ae2667 -Author: Ebrahim Byagowi -Date: Sun Jul 28 20:46:47 2019 +0430 +commit a99134c5bee945e144b9429ba4a4d58ff18313b4 +Author: ariza +Date: Wed Feb 26 09:58:03 2020 -0800 - [base] fix logic + add oss-fuzz 20886 test file - src/hb-ot-layout-base-table.hh | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) + ...-testcase-minimized-hb-subset-fuzzer-5641370503217152 | Bin 0 -> 3099 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) -commit 69655d5bc3c7b240424545bdef197d9d7251e509 -Author: Ebrahim Byagowi -Date: Sun Jul 28 20:39:20 2019 +0430 +commit d0aaba5c5087781c7231e26fdd190c65baebde95 +Author: ariza +Date: Wed Feb 26 09:35:32 2020 -0800 - [base] minor + fixes oss-fuzz 20886 + + hb_set_t::resize () is needed after compact() - src/hb-ot-layout-base-table.hh | 5 ++--- - 1 file changed, 2 insertions(+), 3 deletions(-) + src/hb-set.hh | 1 + + 1 file changed, 1 insertion(+) -commit d9c44e7239daf59e283fecd4166c984b43d48e24 +commit 05a25c1a5bfbc70ed9151ab9c368ddc6aa4e8fd4 Author: Ebrahim Byagowi -Date: Sun Jul 28 20:35:32 2019 +0430 +Date: Wed Feb 26 19:35:27 2020 +0330 - [base] Check if the returned base_coord is valid + [cff] minor, remove unused fields - src/hb-ot-layout-base-table.hh | 13 ++++++++----- - 1 file changed, 8 insertions(+), 5 deletions(-) + src/hb-ot-cff1-table.cc | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) -commit 53853c044a6382ece51393dfc3a4fe6a5f8a5a23 +commit 9fe0dc3464391e1cd51c01c499b6110d99895d25 Author: Ebrahim Byagowi -Date: Sun Jul 28 20:23:48 2019 +0430 +Date: Wed Feb 26 17:40:44 2020 +0330 - [meta] minor + [draw] Pass draw_helper_t itself around instead recreating it + + Specially helpful if we want to change the design - src/hb-ot-meta-table.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-draw.cc | 7 ++++--- + src/hb-draw.hh | 4 ++-- + src/hb-ot-cff1-table.cc | 43 ++++++++++++++++++++----------------------- + src/hb-ot-cff1-table.hh | 4 ++-- + src/hb-ot-cff2-table.cc | 23 ++++++++++------------- + src/hb-ot-cff2-table.hh | 4 ++-- + src/hb-ot-glyf-table.hh | 42 ++++++++++++++++++++---------------------- + 7 files changed, 60 insertions(+), 67 deletions(-) -commit ed126d8c37c45d8d60eb0368143c6776d1fcfbff +commit 1b8b8638980d4276f424e8c4f59731f50832d119 Author: Ebrahim Byagowi -Date: Sun Jul 28 20:21:59 2019 +0430 +Date: Wed Feb 26 16:36:48 2020 +0330 - [base] fix build + minor - src/hb-ot-layout-base-table.hh | 3 +++ - 1 file changed, 3 insertions(+) + test/fuzzing/hb-draw-fuzzer.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit c7b22b96cc64c81248362a70f2d60d93ee520f2d +commit 4cdaa9d1f4ca4e9225fab6383f16d24f9a323995 Author: Ebrahim Byagowi -Date: Sun Jul 28 19:46:57 2019 +0430 +Date: Wed Feb 26 16:27:04 2020 +0330 - [base] minor + [glyf] Simplify contour end logic + + So no need for infinite loop here - src/hb-ot-layout-base-table.hh | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) + src/hb-ot-glyf-table.hh | 53 +++++++++++++++++++++---------------------------- + 1 file changed, 23 insertions(+), 30 deletions(-) -commit a157342fce2616141ee62d68ad8e3fb93e52187e +commit 132fcfbc4733c521733e9fea84e19c58746980f2 Author: Ebrahim Byagowi -Date: Sun Jul 28 18:54:13 2019 +0430 +Date: Wed Feb 26 16:15:17 2020 +0330 - [base] Fix use of bsearch + [fuzz] minor don't abort main.cc when the file was empty or not found - src/hb-ot-layout-base-table.hh | 94 ++++++++++++++---------------------------- - 1 file changed, 31 insertions(+), 63 deletions(-) + test/fuzzing/main.cc | 7 +------ + 1 file changed, 1 insertion(+), 6 deletions(-) -commit eddd45653282ffff8ef002ad2163bcf8bf4f3df1 +commit 84163c83d398665c694b1c90d1a94344e95464b7 Author: Ebrahim Byagowi -Date: Sun Jul 28 02:21:54 2019 +0430 +Date: Wed Feb 26 15:58:11 2020 +0330 - [base] minor spacing + [draw] Skip commands and paths not contributing anything + + They aren't contributing to rendering and making issue for stroking, let's skip them + ourselves as Skia does also https://skia-review.googlesource.com/c/skia/+/268166 + + They are useful for extracting extents and so which that functionality won't be effected by this change. - src/hb-ot-layout-base-table.hh | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) + src/hb-draw.hh | 22 ++++++++++++++++------ + test/api/test-draw.c | 8 ++++---- + test/fuzzing/hb-draw-fuzzer.cc | 8 +++++++- + 3 files changed, 27 insertions(+), 11 deletions(-) -commit 0a18efd766b3b6cc987ee18785f7858fe2bd1c67 -Author: Behdad Esfahbod -Date: Fri Jul 26 14:34:26 2019 -0700 +commit 073d4954e01c45e8dd1cf63a53ad35563f46ef17 +Author: Ebrahim Byagowi +Date: Wed Feb 26 15:40:40 2020 +0330 - Minor + [draw] Port glyf path extract to draw_helper_t - src/hb-ot-layout-gsub-table.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-draw.hh | 44 +++++++++++++------- + src/hb-ot-glyf-table.hh | 104 +++++++++++------------------------------------- + 2 files changed, 52 insertions(+), 96 deletions(-) -commit 60d0fe2eda9c0eb67f50d61e905b584b8edc3e95 -Merge: 6d53cda1 658424b2 +commit 0ebf3a4e62f5f54f3557e954f4493b4de43990dd Author: Ebrahim Byagowi -Date: Sat Jul 27 01:20:55 2019 +0430 +Date: Wed Feb 26 15:14:41 2020 +0330 - Merge pull request #1872 from darktohka/cmake-regex-fix - - [cmake] Fix CMake build on newer CMake versions + [draw] Move common CFF path building logic to draw_helper_t -commit 658424b29efbc758541a790193c42171bb7fa965 -Author: Derzsi Dániel -Date: Fri Jul 26 22:52:03 2019 +0300 + src/hb-draw.hh | 70 +++++++++++++++++++++++++++++++++++++++++++++++++ + src/hb-ot-cff1-table.cc | 60 +++++++++--------------------------------- + src/hb-ot-cff2-table.cc | 67 ++++++++-------------------------------------- + 3 files changed, 93 insertions(+), 104 deletions(-) - [cmake] Fix CMake build on newer CMake versions +commit c400cb8863abb5f894e021da5d524c1e28b1e980 +Merge: c21eb86b 4081439d +Author: Michiharu Ariza +Date: Tue Feb 25 16:06:03 2020 -0800 + + Re-implement hb_set_t::del_range (#2194) - Unfortunately, newer CMake versions die during regex variable extraction, causing the build to fail. + * optimize hb_set_del_range() - This is caused by the lack of escaping used around variables in the extract_make_variable function, causing these variables to be automatically unwrapped into empty strings. + fix issue #2193 + + * fixed bug & added tests + + * coding & comment tweaks - CMakeLists.txt | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) +commit c21eb86bfd671b04aca54395988cbfe6c9fd2e27 +Merge: 152000d9 4aa354be +Author: Ebrahim Byagowi +Date: Wed Feb 26 02:54:38 2020 +0330 -commit 6d53cda1baf130853e5725fe8fea1d1c5f766a79 -Author: Zero King -Date: Fri Jul 26 15:43:51 2019 +0000 + Merge pull request #2163 from harfbuzz/absolute-link + + added add_link_abs() - [util] Fix memory leak +commit 4081439d2a49f5dfde2f9043b0e53f2008ff211f +Author: ariza +Date: Tue Feb 25 15:03:12 2020 -0800 - util/options.cc | 1 + - 1 file changed, 1 insertion(+) + tweak reflecting review & add test cases -commit d3d99f8bb6ad77d1ac73901885acfffd3bb3e7f7 + src/hb-set.hh | 37 ++++++++++++++++++++++--------------- + test/api/test-set.c | 53 +++++++++++++++++++++++++++++++++++------------------ + 2 files changed, 57 insertions(+), 33 deletions(-) + +commit 152000d9c761233261cfbfb22e771eb97576aab3 Author: Ebrahim Byagowi -Date: Fri Jul 26 16:46:04 2019 +0430 +Date: Tue Feb 25 20:07:25 2020 +0330 - [metrics] Expose raw OS2/HHEA asc/dsc values using private tags (#1867) + [fuzz] Practice variations on font object - src/hb-ot-metrics.cc | 16 ++++++++++++++++ - 1 file changed, 16 insertions(+) + test/api/test-ot-face.c | 8 +++----- + test/fuzzing/hb-shape-fuzzer.cc | 16 ++++++++++++++-- + 2 files changed, 17 insertions(+), 7 deletions(-) -commit aaffe41094f8ddefad6f33e86cbd04a24dd9bfff +commit 036d868913b2d4564880d588eb67c48924bd861b Author: Ebrahim Byagowi -Date: Fri Jul 26 01:14:37 2019 +0430 +Date: Mon Feb 24 10:34:51 2020 +0330 - [meta] minor, simplify iterator + [draw] Add a fuzzer + + Specially checks correctness of the API semantics: + * no move happens when a path is already opened with move-to. + * no path will be left open and close-path will happen at the end of opened paths. + * no path opens with a move-to and will be closed with no length. + * paths start and ending points matches. + * no line/quadratic/cubic command will be issued when no path is started. - src/hb-ot-meta-table.hh | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) + test/fuzzing/Makefile.am | 9 ++++ + test/fuzzing/hb-draw-fuzzer.cc | 117 +++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 126 insertions(+) -commit 62932c14bd256f10031380047ededd93a2aacd88 -Author: Ebrahim Byagowi -Date: Fri Jul 26 00:30:29 2019 +0430 +commit de896278f7534c876d28d9b5cf344c5d707d3490 +Author: ariza +Date: Tue Feb 25 07:12:20 2020 -0800 - [meta] Rename ot-metadata to ot-meta per review + coding & comment tweaks - docs/harfbuzz-sections.txt | 7 +++--- - src/Makefile.am | 8 +++---- - src/Makefile.sources | 4 ++-- - src/harfbuzz.cc | 2 +- - src/hb-ot-meta-table.hh | 8 +++---- - src/{hb-ot-metadata.cc => hb-ot-meta.cc} | 22 +++++++++--------- - src/{hb-ot-metadata.h => hb-ot-meta.h} | 30 ++++++++++++------------- - src/hb-ot.h | 2 +- - src/{test-ot-metadata.cc => test-ot-meta.cc} | 10 ++++----- - test/api/Makefile.am | 2 +- - test/api/{test-ot-metadata.c => test-ot-meta.c} | 26 ++++++++++----------- - 11 files changed, 61 insertions(+), 60 deletions(-) + src/hb-set.hh | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) -commit 821d9e9034c57c5c593741284b134c76cc3c7c0f +commit 2f97aa65e556b6ce0ce220c088a3da5504738189 Author: Ebrahim Byagowi -Date: Fri Jul 26 00:08:58 2019 +0430 +Date: Tue Feb 25 18:07:44 2020 +0330 - Use .sub_array for DataMap tags iteration + [cff] Make sure previous is ended on processing a seac - src/hb-ot-meta-table.hh | 8 +++----- - 1 file changed, 3 insertions(+), 5 deletions(-) + src/hb-ot-cff1-table.cc | 3 +++ + 1 file changed, 3 insertions(+) -commit a250af98ae74c94ac3aa069e6e5958a937586bfc +commit acc2d4738eec3444b6f789ccbd30a7790383f2c8 Author: Ebrahim Byagowi -Date: Wed Jul 24 03:10:41 2019 +0430 +Date: Tue Feb 25 18:05:48 2020 +0330 - [meta] Add max value to hb_ot_metadata_t + [cff] Make path extract easier to read and more defensive - src/hb-ot-metadata.h | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) + src/hb-ot-cff1-table.cc | 8 ++++---- + src/hb-ot-cff2-table.cc | 8 ++++---- + 2 files changed, 8 insertions(+), 8 deletions(-) -commit 80e246a1f2b3c4e3c25a4a3ec042e7610944abd4 +commit b59eb54f70c20d0260026067177a958e11c3a044 Author: Ebrahim Byagowi -Date: Wed Jul 24 03:08:34 2019 +0430 +Date: Tue Feb 25 10:30:59 2020 +0330 - [meta] Add a test program for metadata + [glyf] Refactor, move get_points inside Glyph - src/Makefile.am | 5 ++++ - src/test-ot-metadata.cc | 70 +++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 75 insertions(+) + src/hb-ot-glyf-table.hh | 267 +++++++++++++++++++++++------------------------- + 1 file changed, 125 insertions(+), 142 deletions(-) -commit bc65ebbce765545bc4455d8ae5ba4a6a99201e41 -Author: Ebrahim Byagowi -Date: Wed Jul 24 02:28:09 2019 +0430 +commit 173b745da8bfd8bda710c90ab48427364068eeb5 +Author: ariza +Date: Mon Feb 24 22:56:57 2020 -0800 - [meta] hb_ot_metadata_get_entries, tags iteration API + fixed bug & added tests - src/hb-ot-meta-table.hh | 17 +++++++++++++++++ - src/hb-ot-metadata.cc | 28 ++++++++++++++++++++++++---- - src/hb-ot-metadata.h | 8 +++++++- - test/api/test-ot-metadata.c | 26 ++++++++++++++++++++++++++ - 4 files changed, 74 insertions(+), 5 deletions(-) + src/hb-set.hh | 3 ++- + test/api/test-set.c | 10 ++++++---- + 2 files changed, 8 insertions(+), 5 deletions(-) -commit 3ac03bd67cb9f4a72e636bf56bc4a79e04bcba62 -Author: Ebrahim Byagowi -Date: Mon Jul 22 23:35:08 2019 +0430 +commit a5012e97c4a392d2788777580e0d08b44e036750 +Author: ariza +Date: Mon Feb 24 17:09:48 2020 -0800 - [meta] New API, hb_ot_metadata_reference_entry for fetching meta entries + optimize hb_set_del_range() + + fix issue #2193 - docs/harfbuzz-sections.txt | 6 +++++ - src/Makefile.sources | 2 ++ - src/harfbuzz.cc | 1 + - src/hb-config.hh | 1 + - src/hb-ot-face-table-list.hh | 4 ++- - src/hb-ot-face.cc | 1 + - src/hb-ot-layout.cc | 1 - - src/hb-ot-meta-table.hh | 20 +++++++++++++++ - src/hb-ot-metadata.cc | 57 ++++++++++++++++++++++++++++++++++++++++++ - src/hb-ot-metadata.h | 57 ++++++++++++++++++++++++++++++++++++++++++ - src/hb-ot.h | 1 + - test/api/Makefile.am | 1 + - test/api/fonts/meta.ttf | Bin 0 -> 320 bytes - test/api/test-ot-metadata.c | 58 +++++++++++++++++++++++++++++++++++++++++++ - 14 files changed, 208 insertions(+), 2 deletions(-) + src/hb-set.hh | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++--- + test/api/test-set.c | 29 +++++++++++++++++++++++++++ + 2 files changed, 82 insertions(+), 3 deletions(-) -commit aab8e084873eb098c55ed2569c15bb308c59e436 +commit 96b71e802fe8d1fa9a14d1dece7935f4eb9789af Author: Ebrahim Byagowi -Date: Fri Jul 26 02:19:22 2019 +0430 +Date: Mon Feb 24 23:00:58 2020 +0330 - minor spacing fix (#1869) + [fuzz] make the custom loader to handle multiple files + + Actually this was the way it used to work :) - src/hb-open-type.hh | 16 ++++++++-------- - src/hb-ot-vorg-table.hh | 2 +- - src/hb-vector.hh | 8 ++++---- - 3 files changed, 13 insertions(+), 13 deletions(-) + test/fuzzing/main.cc | 27 ++++++++++++--------------- + 1 file changed, 12 insertions(+), 15 deletions(-) -commit d791446a930f8e2009c5ab5ea389da98d1ed9b95 +commit 1f5a54c768159e1bcf1c772ab236737994f638aa Author: Ebrahim Byagowi -Date: Fri Jul 26 02:12:06 2019 +0430 +Date: Mon Feb 24 13:18:24 2020 +0330 - [feat] minor + [gvar] fix infinite loop introduced by 11f3fca + + The attempt on removing end_points had made the code unreadable + and has intrdouced infinite, fixed by making the code clear what + it tries to achieve. - src/hb-aat-layout-feat-table.hh | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) + src/hb-ot-var-gvar-table.hh | 22 ++++++++++++++++------ + test/api/fonts/TestGVAREight.ttf | Bin 0 -> 4692 bytes + test/api/test-ot-metrics-tt-var.c | 18 ++++++++++++++++++ + 3 files changed, 34 insertions(+), 6 deletions(-) -commit 356b68a00afaf972908cb2a478170e3933eaf974 +commit f00eb4ebfa02dea593c4842a7672aa2640a6bbf2 Author: Ebrahim Byagowi -Date: Thu Jul 25 23:22:00 2019 +0430 +Date: Mon Feb 24 09:21:25 2020 +0330 - [metrics] Add a test that actually practices variation (#1858) + [gvar] Don't compare against Null address - test/api/fonts/TestCFF2VF.otf | Bin 0 -> 3636 bytes - test/api/test-ot-metrics.c | 28 ++++++++++++++++++++++++++-- - 2 files changed, 26 insertions(+), 2 deletions(-) + src/hb-ot-var-gvar-table.hh | 18 ++++++++++-------- + 1 file changed, 10 insertions(+), 8 deletions(-) -commit a744fdc6c8217d0d4bfce30e638ed2e5200cf380 +commit 19b78d56cdec354d4f35bf6ae529f670cba88fb3 Author: Ebrahim Byagowi -Date: Thu Jul 25 14:49:02 2019 +0430 +Date: Mon Feb 24 09:08:01 2020 +0330 - Add _MAX_VALUE to hb_ot_metrics_t (#1861) + [gvar] Accept coord_count even if is higher than gvar's axisCount - src/hb-ot-metrics.cc | 4 ++-- - src/hb-ot-metrics.h | 4 +++- - 2 files changed, 5 insertions(+), 3 deletions(-) + src/hb-ot-var-gvar-table.hh | 1 + + 1 file changed, 1 insertion(+) -commit 069872c51b31fe1a618e3ca5c3b0ab8ccba0cf81 +commit 197e2e929b7184b8c1365b08a1b275871fc08012 Author: Ebrahim Byagowi -Date: Thu Jul 25 14:27:43 2019 +0430 +Date: Mon Feb 24 08:53:53 2020 +0330 - minor + [gvar] Return gracefully even if gvar wasn't used at all - src/hb-ot-layout.cc | 2 +- + src/hb-ot-var-gvar-table.hh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 737eb85a4ec8861791157d83dd170ac48fa2cfc7 +commit 346ab9884b019ce919c2ab2ee3a3c373bec6fc33 Author: Ebrahim Byagowi -Date: Thu Jul 25 14:26:30 2019 +0430 +Date: Mon Feb 24 08:46:08 2020 +0330 - Add _MAX_VALUE to disabled baseline types enum + [gvar] Return gracefully even if coords_count != gvar's axis count + + It shouldn't be that common to have the situation, even so, no need to + reject entire a glyph even if gvar isn't used. - src/hb-ot-layout.cc | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) + src/hb-ot-var-gvar-table.hh | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) -commit dd9a0ed3f0c0a8a94e107689318463d62414cf60 +commit 5f23a76e99f627f06ff7e56dddd9b53b4cbaae84 Author: Ebrahim Byagowi -Date: Wed Jul 24 00:47:19 2019 +0430 +Date: Mon Feb 24 08:23:23 2020 +0330 - Replace 0x7FFFFFFFu in enums with HB_TAG_MAX_SIGNED + [cff] Don't remove coords const qualification + + We should find some way to audit all the const removals, perhaps by + enabling -Wold-style-cast warning on the project and turning all the + implicit const removals to const_cast. - src/hb-aat-layout.h | 4 ++-- - src/hb-ot-var.h | 2 +- - 2 files changed, 3 insertions(+), 3 deletions(-) + src/hb-cff2-interp-cs.hh | 5 ++--- + src/hb-ot-layout-common.hh | 4 ++-- + 2 files changed, 4 insertions(+), 5 deletions(-) -commit 636ae422372ed7f17b695e78c9c9015188b204e8 -Author: Ebrahim Byagowi -Date: Mon Jul 22 22:50:21 2019 +0430 +commit ff5223ba6075ea4d9c9844e3733ad7a0dc5875bd +Author: Michiharu Ariza +Date: Sun Feb 23 15:53:21 2020 -0800 - minor, comment out meta table in list till its use - - src/hb-ot-face-table-list.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 04c11a19b75663af35d16c827e295aa2e555d110 -Merge: 41ab56e0 c9796d15 -Author: Khaled Hosny -Date: Mon Jul 22 16:44:47 2019 +0200 - - Merge pull request #1851 from khaledhosny/fix-sbix-extents + remove invalid glyphs from closure (#2188) - Fix sbix glyph extents + fix issue #2186 -commit 41ab56e09586b675b1c5de745cf5f520a808bba1 + src/hb-ot-layout-gsubgpos.hh | 1 + + 1 file changed, 1 insertion(+) + +commit e17fd0d91cbd69fa9c01b20bd5c448d0a4fe0e67 Author: Ebrahim Byagowi -Date: Mon Jul 22 18:46:52 2019 +0430 +Date: Sun Feb 23 23:58:39 2020 +0330 - Implement meta table parsing + [tools] More on py3 compatibility - src/Makefile.sources | 1 + - src/hb-ot-face-table-list.hh | 1 + - src/hb-ot-layout.cc | 15 ++++---- - src/hb-ot-meta-table.hh | 89 ++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 99 insertions(+), 7 deletions(-) + src/gen-tag-table.py | 23 +++++++---------------- + src/gen-vowel-constraints.py | 13 ++++--------- + test/shaping/hb-diff | 2 +- + test/shaping/hb_test_tools.py | 6 +++--- + 4 files changed, 15 insertions(+), 29 deletions(-) -commit a51aa951b5ad8da4ac7effc891437345e012a0ac +commit 0cf050a7b13703e0d665f8dd263cc0d22a95c4f1 Author: Ebrahim Byagowi -Date: Mon Jul 22 18:35:55 2019 +0430 +Date: Sun Feb 23 23:00:48 2020 +0330 - [metrics] Fix _get_variation API to works with actual coord values + [draw] Merge consequent move-to commands of CFF/CFF2 - src/hb-ot-metrics.cc | 16 ++++++++-------- - src/hb-ot-metrics.h | 2 +- - test/api/test-ot-metrics.c | 2 +- - 3 files changed, 10 insertions(+), 10 deletions(-) + src/hb-ot-cff1-table.cc | 4 ++-- + src/hb-ot-cff2-table.cc | 7 ++----- + test/api/fonts/Stroking.otf | Bin 0 -> 1060 bytes + test/api/test-draw.c | 26 +++++++++++++++++++++++++- + 4 files changed, 29 insertions(+), 8 deletions(-) -commit 77141dff7d73fa6290f51c9e1ca56ce51a5deec0 -Author: Behdad Esfahbod -Date: Mon Jul 22 07:48:32 2019 -0400 +commit 86bd5a0ba12e389eb0742bf63eb9c88ca3fd8786 +Author: Ebrahim Byagowi +Date: Sun Feb 23 22:46:26 2020 +0330 - [metrics] _-prefix internal symbol + [draw] End CFF paths with a line-to + + Issue a line-to command when start and end point of a path isn't same, matches freetype also. - src/hb-ot-font.cc | 12 ++++++------ - src/hb-ot-metrics.cc | 8 ++++---- - src/hb-ot-metrics.hh | 6 +++--- - 3 files changed, 13 insertions(+), 13 deletions(-) + src/hb-ot-cff1-table.cc | 35 ++++++++++++++++++++++++++++++++--- + src/hb-ot-cff2-table.cc | 40 ++++++++++++++++++++++++++++++++++++---- + test/api/test-draw.c | 16 +++++++++------- + 3 files changed, 77 insertions(+), 14 deletions(-) -commit 89228ccb9a81b728bc9955082c17c68c848c50c4 -Author: Behdad Esfahbod -Date: Mon Jul 22 07:07:37 2019 -0400 +commit a46ba770ab6ce2f3fd2c420f550600d2589642d3 +Author: Ebrahim Byagowi +Date: Sat Feb 22 17:15:00 2020 +0330 - Fix warning on IBM compilers - - Fixes https://github.com/harfbuzz/harfbuzz/issues/1852 + [number] minor - src/hb.hh | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) + src/hb-number-parser.hh | 4 ++-- + src/hb-number-parser.rl | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) -commit c9796d15e1ec5f8939f8b1ae368cb3352b6a9cb9 -Author: Khaled Hosny -Date: Mon Jul 22 03:57:24 2019 +0200 +commit 4aa354beba8b01f32257225de052b5e6a6feab3a +Author: ariza +Date: Thu Feb 20 05:03:15 2020 -0800 - Fix sbix glyph extents - - * The ‘height’ needs to be negated since the API returns “distance from - top to bottom side”. - * Similarly, the ‘y_offset‘ needs to be added to the height to get the - ‘y_bearing’, since sbix’s offset is “the point in the glyph relative - to its lower-left corner which corresponds to the origin” while - ‘y_bearing’ is the “top side of glyph from origin”. - - With these changes the sbix glyph metrics return values similar to other - tables, as they were otherwise unusable. + chain second OffsetTo::serialize_copy() to first - src/hb-ot-color-sbix-table.hh | 4 ++-- - test/api/test-ot-color.c | 4 ++-- - .../fonts/fcbaa518d3cce441ed37ae3b1fed6a19e9b54efd.ttf | Bin 0 -> 3128 bytes - test/shaping/data/in-house/tests/color-fonts.tests | 1 + - 4 files changed, 5 insertions(+), 4 deletions(-) + src/hb-open-type.hh | 18 ++---------------- + 1 file changed, 2 insertions(+), 16 deletions(-) -commit 759f3bd486c99bb09fb9fa5f42e621ec21399df8 -Author: Ebrahim Byagowi -Date: Mon Jul 22 02:06:07 2019 +0430 +commit 6120f50c8f52ff2e8e3c7d4f86f17fc259dcec50 +Author: ariza +Date: Wed Feb 19 13:55:39 2020 -0800 - [metrics] Don't use metrics API in _common - - As it is exposed with a different condition + fix Head with link.bias - src/hb-ot-metrics.cc | 2 +- + src/hb-serialize.hh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit eb8bd2f7eccde483d33406f102c69260fde6fe23 -Author: Ebrahim Byagowi -Date: Tue Jul 16 22:27:01 2019 +0430 +commit e65bff09433b66c207f1c40cd6e5b73c7f19d7cd +Author: ariza +Date: Wed Feb 19 13:38:04 2020 -0800 - Add hb_gdi_face_create API - - Based on Konstantin Ritt work posted on mailing list + workaround whence_t as bit-field - CMakeLists.txt | 8 +++++ - appveyor.yml | 2 +- - configure.ac | 23 +++++++++++++++ - docs/harfbuzz-sections.txt | 5 ++++ - src/Makefile.am | 8 +++++ - src/Makefile.sources | 3 ++ - src/harfbuzz.cc | 1 + - src/hb-directwrite.cc | 9 ++---- - src/hb-gdi.cc | 73 ++++++++++++++++++++++++++++++++++++++++++++++ - src/hb-gdi.h | 39 +++++++++++++++++++++++++ - src/hb-uniscribe.cc | 7 ----- - src/hb.hh | 5 ++++ - 12 files changed, 168 insertions(+), 15 deletions(-) + src/hb-serialize.hh | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) -commit 3d03bb84d44bc9ef8a77e974d0e937a3385ffb92 -Author: Ebrahim Byagowi -Date: Sun Jul 21 12:38:04 2019 +0430 +commit 1aed6d223ccf7e3cce5ed277200c57d4ecf9e2a7 +Author: ariza +Date: Wed Feb 19 13:20:29 2020 -0800 - [metrics] minor, tweak comment + fix whence=Head; position as 28 bits - src/hb-ot-metrics.cc | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) + src/hb-serialize.hh | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) -commit e540d402f6120e8761ff655bdbffb07d91a5f643 -Author: Behdad Esfahbod -Date: Fri Jul 19 11:19:31 2019 -0700 +commit 4ca8e0d9891591c56ecca7e4cea3e06c6a5a8e38 +Author: ariza +Date: Wed Feb 19 12:52:18 2020 -0800 - [docs] Minor + re-implement Tail; rewrote name table with it - docs/harfbuzz-sections.txt | 2 ++ - src/hb-ot-math.h | 2 +- - 2 files changed, 3 insertions(+), 1 deletion(-) + src/hb-open-type.hh | 24 ++++++++++++++++++++ + src/hb-ot-name-table.hh | 16 ++++---------- + src/hb-serialize.hh | 58 ++++++++++++++++++------------------------------- + 3 files changed, 49 insertions(+), 49 deletions(-) -commit 00e13985fbc5291850b8ea3d021e5f83c8a297e3 -Author: Ebrahim Byagowi -Date: Sat Jul 20 23:03:51 2019 +0430 +commit c1313e4be24017478deacfec1d9ee0284c411bbd +Author: ariza +Date: Mon Feb 17 17:33:18 2020 -0800 - Revert hhea fallback to OS/2 to its reverse way - - As searching number of hhea having fonts beats the number of OS/2 - having ones in macOS 10.14.2 + minor: undid unintended change - src/hb-ot-metrics.cc | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) + src/hb-serialize.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit c13ef9cc64a447e74abfed75f4f418bf644be88d -Author: Ebrahim Byagowi -Date: Sat Jul 20 15:01:37 2019 +0430 +commit 9c65680b48fc993b31526c8aa9b9b71d772fdb52 +Author: ariza +Date: Mon Feb 17 16:59:45 2020 -0800 - Bring back asc/desc abs logic used to be in hmtx table + rename enums to avoid conflict on win - src/hb-ot-metrics.cc | 21 ++++++++++++++++++--- - 1 file changed, 18 insertions(+), 3 deletions(-) + src/hb-serialize.hh | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) -commit 772e62688cd72c02910f623653d2ec8ef6990928 -Author: Ebrahim Byagowi -Date: Sat Jul 20 14:50:31 2019 +0430 +commit 555f6f1daa5cc1365930e2b6ed7283c704b3b438 +Author: ariza +Date: Mon Feb 17 16:29:40 2020 -0800 - Make HB_TINY builds work again by separating the always needed part + merge add_link_abs() into add_link() - src/hb-ot-font.cc | 12 +++++----- - src/hb-ot-metrics.cc | 62 ++++++++++++++++++++++++++++++++++++++++------------ - src/hb-ot-metrics.hh | 5 +++++ - 3 files changed, 59 insertions(+), 20 deletions(-) + src/hb-serialize.hh | 92 ++++++++++++++++++++++++++--------------------------- + 1 file changed, 46 insertions(+), 46 deletions(-) -commit cb704337407ae9ccb57ae7631567002028b93c84 -Author: Ebrahim Byagowi -Date: Sat Jul 20 14:33:57 2019 +0430 +commit 017cd945bf6351a89c661ba00b0f7e1dad69b52a +Author: ariza +Date: Thu Feb 6 16:11:58 2020 -0800 - Merge _get_position_internal into _get_position + added add_link_abs() - src/hb-ot-metrics.cc | 143 ++++++++++++++++++--------------------------------- - src/hb-ot-metrics.hh | 5 -- - 2 files changed, 49 insertions(+), 99 deletions(-) + src/hb-serialize.hh | 69 ++++++++++++++++++++++++++++++++++++++++++++--------- + 1 file changed, 58 insertions(+), 11 deletions(-) -commit ac3518af58464b33f1b16b34b8846c302b935208 +commit 07504569d5e7ca2f7da987fc016fc4141eeca263 Author: Ebrahim Byagowi -Date: Sat Jul 20 14:03:36 2019 +0430 +Date: Fri Feb 21 13:05:44 2020 +0330 - Define post table only when used + [gsub] minor format - src/hb-ot-face-table-list.hh | 2 ++ - 1 file changed, 2 insertions(+) + src/hb-ot-layout-gsub-table.hh | 19 +++++++++---------- + 1 file changed, 9 insertions(+), 10 deletions(-) -commit 471f798ace08b4551f0c9ead6855a4e49b72ba25 +commit 411225426ffca0b93f4e83f7a488a62a54b17880 +Author: Garret Rieger +Date: Thu Feb 20 13:43:06 2020 -0800 + + Fix glyph closure for alternate substitution. + It was not filtering on the glyphs to be retained. + + src/hb-ot-layout-gsub-table.hh | 1 + + test/subset/data/Makefile.am | 1 + + test/subset/data/Makefile.sources | 1 + + ...te_substitution.keep-layout-retain-gids.53A9,53F1.otf | Bin 0 -> 5108 bytes + ...ternate_substitution.keep-layout-retain-gids.53A9.otf | Bin 0 -> 4676 bytes + ...ternate_substitution.keep-layout-retain-gids.53F1.otf | Bin 0 -> 3012 bytes + ...tion.keep-layout-retain-gids.retain-all-codepoint.otf | Bin 0 -> 6820 bytes + ...gsub_alternate_substitution.keep-layout.53A9,53F1.otf | Bin 0 -> 4984 bytes + .../gsub_alternate_substitution.keep-layout.53A9.otf | Bin 0 -> 4524 bytes + .../gsub_alternate_substitution.keep-layout.53F1.otf | Bin 0 -> 2816 bytes + ...ate_substitution.keep-layout.retain-all-codepoint.otf | Bin 0 -> 6728 bytes + test/subset/data/fonts/gsub_alternate_substitution.otf | Bin 0 -> 8448 bytes + test/subset/data/tests/layout.gsub3.tests | 12 ++++++++++++ + 13 files changed, 15 insertions(+) + +commit da37880e172c207001ceff65c51276538a2d90db +Author: Ebrahim Byagowi +Date: Thu Feb 20 19:01:43 2020 +0330 + + [draw] Add a private bit field instead null-checking quad-to callback + + This doesn't imply the the design is good or stable just is better + to not fail due to null quad-to callback so as our quad-cubic curves + translation is currently table limited which can be revisited anytime. + + src/hb-draw.cc | 9 ++++++++- + src/hb-draw.hh | 1 + + src/hb-ot-glyf-table.hh | 4 ++-- + 3 files changed, 11 insertions(+), 3 deletions(-) + +commit 79b2b8a91fe5c011bda03a5350a3f482e053d0ba Author: Ebrahim Byagowi -Date: Sat Jul 20 14:00:20 2019 +0430 +Date: Wed Feb 19 16:41:13 2020 +0330 - Merge ot-metrics-internal.cc with ot-metrics now that isn't needed in subset + minor - src/Makefile.sources | 3 -- - src/harfbuzz.cc | 1 - - src/hb-ot-metrics-internal.cc | 100 ------------------------------------------ - src/hb-ot-metrics.cc | 71 +++++++++++++++++++++++++++++- - 4 files changed, 70 insertions(+), 105 deletions(-) + CMakeLists.txt | 2 +- + m4/ax_cxx_compile_stdcxx.m4 | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) -commit 29444d7e9fd5007bf39efa2cf57a0117aabfc770 +commit 8c652f72fc1323b811b5cde53604f0a71334efa2 Author: Ebrahim Byagowi -Date: Sat Jul 20 13:52:21 2019 +0430 +Date: Wed Feb 19 16:32:44 2020 +0330 - Don't cache ascender/descender metrics + Minor, switch to https links where possible - src/hb-ot-font.cc | 24 ++++++++---------------- - src/hb-ot-hmtx-table.hh | 20 -------------------- - 2 files changed, 8 insertions(+), 36 deletions(-) + src/gen-tag-table.py | 2 +- + src/hb-ot-cff1-table.hh | 2 +- + src/hb-ot-shape-complex-arabic.cc | 2 +- + src/hb-unicode-emoji-table.hh | 4 ++-- + test/api/hb-test.h | 8 ++++---- + test/shaping/hb_test_tools.py | 2 +- + 6 files changed, 10 insertions(+), 10 deletions(-) -commit 5e28c2654d030655d7b93ec0d6213d2b9fb2956e +commit bbcbcafc2579a3d4b1dbe743fa77a0167e3f949c Author: Ebrahim Byagowi -Date: Sat Jul 20 14:08:11 2019 +0430 +Date: Wed Feb 19 16:21:47 2020 +0330 - [doc] minor, improve hb-ot-metrics doc a bit + [tool] Minor, move input files link - src/hb-ot-metrics.cc | 11 ++++++----- - 1 file changed, 6 insertions(+), 5 deletions(-) + src/gen-tag-table.py | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) -commit ac8b6e330a443a66c3e0fb83af9794310688d848 -Merge: ec8dde81 08b48e89 +commit 83db1e117e4d6f5624eafa6fe51b1622a8642b65 Author: Ebrahim Byagowi -Date: Sat Jul 20 13:16:16 2019 +0430 +Date: Wed Feb 19 15:15:18 2020 +0330 - Merge pull request #1844 from ebraminio/hhea + [ci] Compatibility with Python 3 - Fallback hhea's ascender/descender to OS2 + Disabled CMake test runners as it goes for Python 2 and updated the bots + + Install Python 3 on macOS 10.12 bot -commit 08b48e89d3c1bafe252badc7c65a9fc2f166a693 + .circleci/config.yml | 14 ++++++-------- + 1 file changed, 6 insertions(+), 8 deletions(-) + +commit 8d199077045bd28cc74d4dc66fc6e1a734ea3bda +Author: Ebrahim Byagowi +Date: Wed Feb 19 14:56:55 2020 +0330 + + Remove python2 support from tests/utils scripts + + mingw-ldd.py | 3 +- + src/gen-arabic-table.py | 4 +- + src/gen-def.py | 4 +- + src/gen-emoji-table.py | 3 +- + src/gen-indic-table.py | 4 +- + src/gen-os2-unicode-ranges.py | 6 +- + src/gen-tag-table.py | 10 +-- + src/gen-ucd-table.py | 4 +- + src/gen-use-table.py | 4 +- + src/gen-vowel-constraints.py | 4 +- + src/sample.py | 19 +---- + test/fuzzing/run-shape-fuzzer-tests.py | 4 +- + test/fuzzing/run-subset-fuzzer-tests.py | 4 +- + .../data/text-rendering-tests/extract-tests.py | 4 +- + test/shaping/hb-diff | 2 +- + test/shaping/hb-diff-colorize | 2 +- + test/shaping/hb-diff-filter-failures | 2 +- + test/shaping/hb-diff-stat | 2 +- + test/shaping/hb-unicode-decode | 2 +- + test/shaping/hb-unicode-encode | 2 +- + test/shaping/hb-unicode-prettyname | 2 +- + test/shaping/hb_test_tools.py | 86 ++-------------------- + test/shaping/record-test.sh | 2 +- + test/shaping/run-tests.py | 4 +- + test/subset/generate-expected-outputs.py | 4 +- + test/subset/run-tests.py | 4 +- + test/subset/subset_test_suite.py | 2 +- + 27 files changed, 35 insertions(+), 158 deletions(-) + +commit 2c9fbf5561e4ca5abe93ce3990c0cca3982f3517 +Author: Rico Tzschichholz +Date: Wed Feb 12 14:59:52 2020 +0100 + + Improve GIR build + + CMakeLists.txt | 6 ++++-- + src/Makefile.am | 11 ++++++++++- + 2 files changed, 14 insertions(+), 3 deletions(-) + +commit bd13470f23744a5bbe44b7b20846e112579abe0d Author: Ebrahim Byagowi -Date: Sat Jul 20 12:53:40 2019 +0430 +Date: Wed Feb 19 13:19:38 2020 +0330 - [os2] minor spacing tweaks + [ci] Update Ubuntu bots versions - src/hb-ot-os2-table.hh | 11 +++++------ - 1 file changed, 5 insertions(+), 6 deletions(-) + .circleci/config.yml | 40 ++++++++++++++++++++-------------------- + 1 file changed, 20 insertions(+), 20 deletions(-) -commit 54b9ab704dbf62e2916f1d5276ffef2543bcc2a7 -Author: Ebrahim Byagowi -Date: Sat Jul 20 12:51:38 2019 +0430 +commit 493e40ff787222af598b4227f40af7718548f335 +Author: Qunxin Liu +Date: Tue Feb 18 13:09:08 2020 -0800 - Fallback hhea's ascender/descender to OS2 + [subset] add one empty byte to glyf table + if it's going to end up empty after subsetting + This will make OTS happy and match what fontTools is doing now. - src/hb-ot-metrics-internal.cc | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) + src/hb-ot-glyf-table.hh | 12 ++++++++++++ + .../colr/TwemojiMozilla.subset.default.32.ttf | Bin 4660 -> 4664 bytes + ...wemojiMozilla.subset.drop-hints-retain-gids.32.ttf | Bin 4640 -> 4644 bytes + .../colr/TwemojiMozilla.subset.drop-hints.32.ttf | Bin 4640 -> 4644 bytes + .../colr/TwemojiMozilla.subset.retain-gids.32.ttf | Bin 4660 -> 4664 bytes + 5 files changed, 12 insertions(+) -commit ec8dde8142fbf9e5bc0aee9318a7c4e73d61c758 -Author: Behdad Esfahbod -Date: Fri Jul 19 11:13:50 2019 -0700 +commit a7dec0cb515d5f9ffc6cf39e712ed0b0b93bd1f0 +Author: Ebrahim Byagowi +Date: Tue Feb 18 16:22:12 2020 +0330 - [metrics] Fall back to hhea if OS2 metrics are empty - - Reinstates previous logic, even if it might be unnecessary. + [glyf] Tweak path_builder_t - src/hb-ot-metrics-internal.cc | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) + src/hb-ot-glyf-table.hh | 66 ++++++++++++++++++++++++++++--------------------- + 1 file changed, 38 insertions(+), 28 deletions(-) -commit 2e5b49d11d1dbfd44d8c640cb9ce5de7d26ca873 +commit d52ea2a42ce9332564cc2f049734545796e0c79b Author: Ebrahim Byagowi -Date: Fri Jul 19 11:41:07 2019 +0430 +Date: Tue Feb 18 15:46:02 2020 +0330 - Add HB_NO_METRICS and fix HB_TINY build (#1839) + [glyf] minor - src/hb-config.hh | 1 + - src/hb-ot-face-table-list.hh | 2 -- - src/hb-ot-metrics-internal.cc | 8 +++++++- - src/hb-ot-metrics.cc | 6 ++++++ - 4 files changed, 14 insertions(+), 3 deletions(-) + src/hb-ot-glyf-table.hh | 15 +++++++++------ + 1 file changed, 9 insertions(+), 6 deletions(-) -commit bdfdac0f26aafb3e9ff2db123116f0406fa49efc +commit 3b0c58f811203ac59d96d94ab3675a1b85adb411 Author: Ebrahim Byagowi -Date: Fri Jul 19 10:33:00 2019 +0430 +Date: Tue Feb 18 15:42:48 2020 +0330 - [ci][fuzzer] print valgrind failure if an error happened + [glyf] minor, use private font coords to simplify - test/fuzzing/run-shape-fuzzer-tests.py | 34 +++++++++++++++++----------------- - 1 file changed, 17 insertions(+), 17 deletions(-) + src/hb-ot-glyf-table.hh | 8 ++------ + 1 file changed, 2 insertions(+), 6 deletions(-) -commit 2bd953ff4f656f042dba2845f0479a7fe7c439a6 -Author: Behdad Esfahbod -Date: Thu Jul 18 14:25:45 2019 -0700 +commit dcd2729e717f48013e07d0b93b64826507c049cc +Author: Ebrahim Byagowi +Date: Tue Feb 18 15:38:57 2020 +0330 - [metrics] Fix weird use of xor - - I believe that was a try to use one approach as fallback to other. But - felt wrong. Just believe what's in OS/2 table to be correct. + [glyf] Move contour_bounds_t into scope it is actually used - src/hb-ot-metrics-internal.cc | 12 ++++++------ - src/hb-ot-os2-table.hh | 2 +- - 2 files changed, 7 insertions(+), 7 deletions(-) + src/hb-ot-glyf-table.hh | 81 ++++++++++++++++++++++++------------------------- + 1 file changed, 40 insertions(+), 41 deletions(-) -commit 9675a067bf1cc0e5d4707c1345736fda4be75b82 -Author: Behdad Esfahbod -Date: Thu Jul 18 14:15:08 2019 -0700 +commit 8bb47fa17d53d8e4c729d427b7a5d49d8e14953c +Author: Ebrahim Byagowi +Date: Tue Feb 18 15:06:43 2020 +0330 - [ot-metrics] Touch up + [glyf] minor, spacing - src/harfbuzz.cc | 2 ++ - src/hb-ot-hmtx-table.hh | 19 +++++++++---------- - 2 files changed, 11 insertions(+), 10 deletions(-) + src/hb-ot-glyf-table.hh | 46 +++++++++++++++++++++++----------------------- + 1 file changed, 23 insertions(+), 23 deletions(-) -commit 87e628436e32786635796fbb07ed200f8c0da68f +commit 21a5fe4f0981bbae8eaa9caec9c288e44c716470 Author: Ebrahim Byagowi -Date: Tue Nov 20 23:26:46 2018 +0330 +Date: Tue Feb 18 14:38:55 2020 +0330 - Implement a simple API for fetching opentype metrics - - Fixes https://github.com/harfbuzz/harfbuzz/pull/1432 + [glyf] Make returning phantoms to not require another vector - docs/harfbuzz-sections.txt | 9 +++ - src/Makefile.sources | 6 ++ - src/hb-ot-face-table-list.hh | 2 + - src/hb-ot-hhea-table.hh | 2 + - src/hb-ot-hmtx-table.hh | 62 +++++++++---------- - src/hb-ot-layout.cc | 1 - - src/hb-ot-metrics-internal.cc | 94 +++++++++++++++++++++++++++++ - src/hb-ot-metrics.cc | 135 ++++++++++++++++++++++++++++++++++++++++++ - src/hb-ot-metrics.h | 92 ++++++++++++++++++++++++++++ - src/hb-ot-metrics.hh | 35 +++++++++++ - src/hb-ot-os2-table.hh | 4 ++ - src/hb-ot-post-table.hh | 5 +- - src/hb-ot.h | 1 + - test/api/Makefile.am | 1 + - test/api/test-ot-metrics.c | 54 +++++++++++++++++ - 15 files changed, 467 insertions(+), 36 deletions(-) + src/hb-ot-glyf-table.hh | 27 +++++++++++++-------------- + 1 file changed, 13 insertions(+), 14 deletions(-) -commit ed67efcc8c3638c625b2904833af3f27ef51db14 -Author: David Corbett -Date: Mon Jun 17 10:16:24 2019 -0400 +commit 5c03fbe7e0b563ac0f1ce8f867bd747c5e72da86 +Author: Ebrahim Byagowi +Date: Tue Feb 18 13:55:28 2020 +0330 - Revert "[Myanmar] Prevent reordering between Asat and Dot below" - - This reverts commit 1c8654ead41ca746d577549c92d2a41c594ab639. + [glyf] do a phantom only iteration when possible - src/hb-unicode.hh | 3 --- - 1 file changed, 3 deletions(-) + src/hb-ot-glyf-table.hh | 50 +++++++++++++++++++++++++++++++------------------ + 1 file changed, 32 insertions(+), 18 deletions(-) -commit 504bb17287c978d60a4a515555852465319f74ed +commit 11f3fca01d6840f3a690b59040ad7452e5343abf Author: Ebrahim Byagowi -Date: Wed Jul 17 22:57:46 2019 +0430 +Date: Tue Feb 18 12:53:20 2020 +0330 - [ci] Bring back -linux-arm64 bot - - Let's see if 576065b has fixed it + [glyf/gvar] Remove need of passing end points vector around - .circleci/config.yml | 16 ++++++++-------- - 1 file changed, 8 insertions(+), 8 deletions(-) + src/hb-ot-glyf-table.hh | 30 +++++++++--------------------- + src/hb-ot-var-gvar-table.hh | 24 ++++++++++++------------ + 2 files changed, 21 insertions(+), 33 deletions(-) -commit 6157bbe5127bbcbd17348622601976cffcd11c63 -Author: Behdad Esfahbod -Date: Wed Jul 17 11:20:08 2019 -0700 +commit 0f2c2d989b6ad4ddd5bb7d64d90aa3e57dc85a68 +Author: Ebrahim Byagowi +Date: Tue Feb 18 11:52:16 2020 +0330 - Revert "Revert previous change" + [glyf] Push consumer machine one more level further + + src/hb-ot-glyf-table.hh | 69 +++++++++++++++++++++++++------------------------ + 1 file changed, 35 insertions(+), 34 deletions(-) + +commit 11f5f7c59cbf5a430a99831c1d6f0a8ac93090b0 +Author: Ebrahim Byagowi +Date: Mon Feb 17 23:44:31 2020 +0330 + + [glyf] Adopt a state machine like style for the path builder - This reverts commit b8e90ca1a10fbd472eda1aa8cc3797011da52356. + Toward making glyf path reader alloc free at least on gvar absence. + + src/hb-ot-glyf-table.hh | 279 +++++++++++++++++++++++++----------------------- + 1 file changed, 145 insertions(+), 134 deletions(-) + +commit 60f8f384f9d272a8ae2795e3e7a533bdec452da9 +Author: Ebrahim Byagowi +Date: Mon Feb 17 10:11:49 2020 +0330 + + [glyf] Switch to ttf-parser's glyf to path algorithm - Works now. + It consumes each point at a time and doesn't need to know contour size before hand - src/hb-subset-plan.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-glyf-table.hh | 151 ++++++++++++++++------- + test/api/test-draw.c | 309 +++++++++++++++++++++++------------------------- + 2 files changed, 254 insertions(+), 206 deletions(-) -commit 576065b4429109359c3af491b34b9ab0c6b149ee -Author: Behdad Esfahbod -Date: Wed Jul 17 11:19:34 2019 -0700 +commit 3c792c2aa5ccbe5760a7415df24e8bf04edf7914 +Author: ariza +Date: Mon Feb 17 07:18:08 2020 -0800 - [iter] Fix reduce type deduction + add test cases for hb_unwrap_type - src/hb-iter.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/test-meta.cc | 5 +++++ + 1 file changed, 5 insertions(+) -commit 4552864c82c876da738ec3bf772cc089216f2fd2 -Author: Ebrahim Byagowi -Date: Wed Jul 17 22:08:39 2019 +0430 +commit 168ceeac496f15b4c81b106cfb790dd5739a0143 +Author: ariza +Date: Fri Feb 14 11:56:56 2020 -0800 - [ci] Disable -linux-arm64 bot + renamed to hb_unrwap_type(); now recursive + + src/hb-meta.hh | 13 ++++++------- + 1 file changed, 6 insertions(+), 7 deletions(-) + +commit 71552ecc269c84aab46aa8f078526a546a288925 +Author: ariza +Date: Thu Feb 13 12:58:22 2020 -0800 + + add hb_get_type + + src/hb-meta.hh | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit 65858463523aa5abb776d0181bf14da7bfb2931e +Author: ariza +Date: Sun Feb 16 17:16:29 2020 -0800 + + pop_pack(share=false) in end_serialize() - This is its failure https://circleci.com/gh/harfbuzz/harfbuzz/99864 + issue #2177 + + src/hb-serialize.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 39fb57c0e456ec352b2d0a6e6dc61b9bdee85665 +Author: Michiharu Ariza +Date: Sun Feb 16 08:38:41 2020 -0800 + + add share option to pop_pack() (#2176) - Trying to fix like ee05627, interestingly, makes the bot and the - others to fail like this https://circleci.com/gh/harfbuzz/harfbuzz/99841 + as a solution for #2164 - .circleci/config.yml | 16 ++++++++-------- - 1 file changed, 8 insertions(+), 8 deletions(-) + src/hb-serialize.hh | 21 +++++++++++++++------ + 1 file changed, 15 insertions(+), 6 deletions(-) -commit b8e90ca1a10fbd472eda1aa8cc3797011da52356 -Author: Ebrahim Byagowi -Date: Wed Jul 17 21:38:19 2019 +0430 +commit 9c6499d9f4556b9755487c1755e4d2386979d82b +Author: ariza +Date: Sun Feb 16 00:56:31 2020 -0800 - Revert previous change + rewrite read_points() to take lambda & consts args - Interestingly all of the bots disagreed with the change and the complain is... weird. + replacing awkward x/y_setter_t structs - src/hb-subset-plan.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-glyf-table.hh | 35 ++++++++++++----------------------- + 1 file changed, 12 insertions(+), 23 deletions(-) -commit ee05627aff2993c51ed8a4bff3170450c000a28a +commit a94d1af193ac1601a1725266dbb0dd51195af98b Author: Ebrahim Byagowi -Date: Wed Jul 17 21:28:25 2019 +0430 +Date: Wed Feb 12 19:25:10 2020 +0330 - Improve syntax to make out linux-arm64 a little happy - - Decided to apply is we did the same on other places however this won't - fix all of its complains + [fuzz] minor style fixes - src/hb-subset-plan.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + test/fuzzing/hb-set-fuzzer.cc | 51 +++++++++++++++++++++---------------------- + 1 file changed, 25 insertions(+), 26 deletions(-) -commit 6a6bf7b7bc4a0b375fcf04ff7c674bf76e6d51aa +commit 1c015d3e9f5d514da9647dab258af0a09b3ba550 Author: Ebrahim Byagowi -Date: Wed Jul 17 21:22:38 2019 +0430 +Date: Wed Feb 12 19:19:37 2020 +0330 - Downgrade -Wdeprecated-declarations to warning - - Fixes #1834 at least till fix of #1829 + [fuzz] minor fuzzer case move, oops - src/hb.hh | 1 + - 1 file changed, 1 insertion(+) + ...fuzz-testcase-minimized-hb-shape-fuzzer-5658272078495744 | Bin + 1 file changed, 0 insertions(+), 0 deletions(-) -commit 25e2562fdff6c14a9cb70999a1ad71ee1bdff494 -Author: Behdad Esfahbod -Date: Wed Jul 17 09:35:56 2019 -0700 +commit 49341faee27df689e1c155b1990874c2679b563f +Author: Ebrahim Byagowi +Date: Wed Feb 12 19:15:16 2020 +0330 - [amalgam] Fix redundant-declaration warning/error + [fuzz] minor, move two fuzzer cases to their correct place - src/hb-unicode.cc | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) + ...fuzz-testcase-minimized-hb-shape-fuzzer-5658272078495744 | Bin + ...erfuzz-testcase-minimized-hb-set-fuzzer-6255224052514816 | 0 + 2 files changed, 0 insertions(+), 0 deletions(-) -commit c184180228540c23405aaa03b6b571bb41103b45 -Author: Ali Javadi -Date: Tue Jul 16 22:10:24 2019 +0430 +commit d663e28af1b84f27bea9730a9a8f18212387bb7f +Author: Behdad Esfahbod +Date: Wed Feb 12 15:41:21 2020 +0000 - Fix C++20 compile warning on implicit capture of this with '=' default capture (#1833) + [serialize] Catch signedness overflows in check_assign() - Happens when compiled with -std=c++2a, the fix just makes the captures explicit to resolve the issue. Just adding this in addition to = doesn't work in C++11. - - src/hb-ot-layout-gpos-table.hh:737:18: warning: implicit capture of 'this' with a capture default of '=' is deprecated [-Wdeprecated-this-capture] - { return (this+_).intersects (glyphs, valueFormat); }) - ^ - src/hb-ot-layout-gpos-table.hh:736:16: note: add an explicit capture of 'this' to capture '*this' by reference - | hb_map ([=] (const OffsetTo &_) - ^ - , this + Should address https://github.com/harfbuzz/harfbuzz/pull/2163#pullrequestreview-355137936 - src/hb-ot-layout-gpos-table.hh | 2 +- + src/hb-serialize.hh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 1f94388516befe137d265c261f687a47ce6f8e69 +commit 97229244ebd2e50ec0021ecd442e3c1c27156a5c Author: Ebrahim Byagowi -Date: Tue Jul 16 11:24:29 2019 +0430 +Date: Wed Feb 12 15:41:22 2020 +0330 - [usp] define atfree callback only if used + [fuzzer] Fix hb-set-fuzzer minor overflow issue + + Size shouldn't be smaller than the struct not its pointer size. + + Fixes https://crbug.com/oss-fuzz/20655 - src/hb-uniscribe.cc | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) + .../clusterfuzz-testcase-minimized-hb-set-fuzzer-6255224052514816 | 1 + + test/fuzzing/hb-set-fuzzer.cc | 8 ++++---- + 2 files changed, 5 insertions(+), 4 deletions(-) -commit 1da1b4dc94c500e4c9c833ab74fced07364d13fb -Author: Qunxin Liu -Date: Wed Jun 26 13:23:24 2019 -0700 +commit 7b42403c1c03e6f2f32fcc792b588ca5a42b1e19 +Author: Garret Rieger +Date: Tue Feb 11 12:25:57 2020 -0800 - [subset] For option "--unicodes", add support for "*" to retain all code points + Add explicit values to the set fuzzer enums. - ...aa-Regular-new.default.retain-all-codepoint.ttf | Bin 0 -> 97204 bytes - ...drop-hints-retain-gids.retain-all-codepoint.ttf | Bin 0 -> 65976 bytes - ...Regular-new.drop-hints.retain-all-codepoint.ttf | Bin 0 -> 65936 bytes - ...a-Regular-new.name-ids.retain-all-codepoint.ttf | Bin 0 -> 96948 bytes - ...egular-new.retain-gids.retain-all-codepoint.ttf | Bin 0 -> 97244 bytes - ...to-Regular.abc.default.retain-all-codepoint.ttf | Bin 0 -> 2168 bytes - ...drop-hints-retain-gids.retain-all-codepoint.ttf | Bin 0 -> 924 bytes - ...Regular.abc.drop-hints.retain-all-codepoint.ttf | Bin 0 -> 924 bytes - ...o-Regular.abc.name-ids.retain-all-codepoint.ttf | Bin 0 -> 2168 bytes - ...egular.abc.retain-gids.retain-all-codepoint.ttf | Bin 0 -> 2168 bytes - test/subset/data/tests/basics.tests | 1 + - test/subset/subset_test_suite.py | 20 +++++++--- - util/hb-subset.cc | 7 ++++ - util/options.cc | 44 ++++++++++++--------- - 14 files changed, 48 insertions(+), 24 deletions(-) + test/fuzzing/hb-set-fuzzer.cc | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) -commit 68ac767e430c4dfe4c556b2c4f962cc3dfc5d3e4 -Author: blueshade7 -Date: Fri Jul 12 23:02:29 2019 -0700 +commit e805923310af6b502e94903b504477266b55b028 +Author: Garret Rieger +Date: Tue Feb 11 12:20:54 2020 -0800 - added skip(), get_next_value() to inc_bimap to subset VarStore with retain-gids + Add a few basic seeds for the set fuzzer. - src/hb-bimap.hh | 25 ++++++++++++++++++++++++- - src/hb-ot-layout-common.hh | 14 +++++++------- - 2 files changed, 31 insertions(+), 8 deletions(-) + test/fuzzing/sets/intersect_01 | Bin 0 -> 21 bytes + test/fuzzing/sets/subtract_01 | Bin 0 -> 21 bytes + test/fuzzing/sets/symmetric_diff_01 | Bin 0 -> 21 bytes + test/fuzzing/sets/union_01 | Bin 0 -> 21 bytes + 4 files changed, 0 insertions(+), 0 deletions(-) -commit 4730b350b7ee90338caf3e962343af42412ce3df -Author: Behdad Esfahbod -Date: Fri Jul 12 15:38:35 2019 -0700 +commit ff984ed3cdd18290ed3a37c76961176d9f86c9cd +Author: Ebrahim Byagowi +Date: Tue Feb 11 19:50:51 2020 +0330 - Revert "Update Graphite API to latest (#1215)" + Use multiplication to avoid undefined behaviour per clang - This reverts commit e4e74c2751ac24178086cce2811d34d8019b6f85. + Newer versions of MSVC with /we4146 don't like putting negative sign behind a + unsigned number as https://github.com/harfbuzz/harfbuzz/pull/2069 + That however have made https://crbug.com/1050424 this complain: + src/hb-ot-color-sbix-table.hh:304:28: runtime error: negation of -2147483648 cannot be represented in type 'int'; + cast to an unsigned type to negate this value to itself + which apparently can be fixed using this change. - See https://github.com/harfbuzz/harfbuzz/issues/1829 + Let's see if this won't make another ubsan complain! - src/hb-graphite2.cc | 28 +--------------------------- - 1 file changed, 1 insertion(+), 27 deletions(-) + src/hb-ot-color-sbix-table.hh | 2 +- + ...zz-testcase-minimized-hb_shape_fuzzer-5633785895911424 | Bin 0 -> 582 bytes + 2 files changed, 1 insertion(+), 1 deletion(-) -commit f8242b61ab01002e9f7374daa8755e92c6a92eb4 +commit 21e1b1310ab20628d0a81c02b17cc5e49a56a4a7 Author: Ebrahim Byagowi -Date: Thu Jul 11 15:10:36 2019 +0430 +Date: Tue Feb 11 17:08:55 2020 +0330 - [fuzz] Increase subset runner timeout for tsan bot - - Now is flaky let's just increase and maybe investigate later + [colr] minor style fix - test/fuzzing/run-subset-fuzzer-tests.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-color-colr-table.hh | 87 ++++++++++++++++++++++--------------------- + 1 file changed, 44 insertions(+), 43 deletions(-) -commit b65bad18aa527684af999b5808a9087404c0759a +commit cbb45c3ee7be42091a04fc1edfd98a07cfcd864c Author: Ebrahim Byagowi -Date: Thu Jul 11 14:31:55 2019 +0430 +Date: Tue Feb 11 16:46:14 2020 +0330 - [fuzz] Don't fail when blob is empty + [subset/colr] minor improve to resolve msvc complain - And enable more tests able to trig the issue. + MSVC says, + hb-ot-color-colr-table.hh(215): warning C4700: uninitialized local variable 'new_record' used [build\harfbuzz-subset.vcxproj] + harfbuzz-subset.vcxproj -> build\Debug\harfbuzz-subset.lib - ...zz-testcase-minimized-hb-subset-fuzzer-5738978499624960 | Bin 0 -> 28 bytes - test/fuzzing/hb-subset-fuzzer.cc | 2 +- - test/fuzzing/run-subset-fuzzer-tests.py | 9 +++++---- - 3 files changed, 6 insertions(+), 5 deletions(-) + src/hb-ot-color-colr-table.hh | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) -commit 7a9d643c297990f9889a2f7b4a470ef933bac131 -Author: Ebrahim Byagowi -Date: Thu Jul 11 01:35:06 2019 +0430 +commit bca9bc6b92cfdba1118f74c1d1d6fdb1301f5c81 +Author: Garret Rieger +Date: Thu Feb 6 13:02:58 2020 -0800 - Fix unintialized memory read in cmap subset (#1826) + Add hb-set-fuzzer. + It fuzzes all of the hb_set process methods (intersection, subtraction, union, and symmetric difference). - src/hb-ot-cmap-table.hh | 10 +++++++++- - 1 file changed, 9 insertions(+), 1 deletion(-) + test/fuzzing/Makefile.am | 11 +++++++ + test/fuzzing/hb-set-fuzzer.cc | 77 +++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 88 insertions(+) -commit a6065d05cf38620c06b6dd10b8a841ed236f76c2 +commit 352ac63ef937629385da7517408cd3d6df7db08a Author: Ebrahim Byagowi -Date: Wed Jul 10 16:41:40 2019 +0430 +Date: Tue Feb 11 03:03:03 2020 +0330 - Don't call memcpy when a table is empty + Fix an unlikely UAF on the deprecated _set_glyph_func API + + Fixes https://github.com/harfbuzz/harfbuzz/issues/2168 - src/hb-open-file.hh | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) + src/hb-font.cc | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) -commit c85f624b519df1db141bf55d9452bc2837ef35c4 +commit 6a390df8af534cc95c19a07ec2bbdd818ade6cac Author: Ebrahim Byagowi -Date: Wed Jul 10 14:28:06 2019 +0430 +Date: Mon Feb 10 17:19:23 2020 +0330 - Force blob generation and memory check in hb-subset-fuzzer + [tools] Print unicode links on gen-* tools output + + As Behdad's review - test/fuzzing/hb-subset-fuzzer.cc | 14 ++++++++++++++ - 1 file changed, 14 insertions(+) + src/gen-arabic-table.py | 13 +++++++------ + src/gen-emoji-table.py | 7 ++++--- + src/gen-indic-table.py | 12 ++++++------ + src/gen-ucd-table.py | 7 ++++--- + src/gen-use-table.py | 14 +++++++------- + src/gen-vowel-constraints.py | 6 ++++-- + 6 files changed, 32 insertions(+), 27 deletions(-) -commit 2e7021da7d1726a37822e6a001b9218f82255bc8 -Author: Dominik Röttsches -Date: Mon Jul 8 10:19:49 2019 +0300 +commit 4dc87365d79d9cb0ad85b351b6afe978c3abee3c +Author: Evgeniy Reizner +Date: Sun Feb 9 18:39:33 2020 +0200 - Revert "Minor" - revert moving extern "C" definitions in-function + Add links to files used by python scripts. - This reverts commit 62e60322cb9e18b3ee75f1b4a2a6d3069f587407 since it - breaks building HarfBuzz as part of Chromium. - - Fixes https://github.com/harfbuzz/harfbuzz/issues/1821. + Closes #2150 - src/hb-unicode.cc | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) + src/gen-arabic-table.py | 5 +++++ + src/gen-emoji-table.py | 2 ++ + src/gen-indic-table.py | 5 +++++ + src/gen-tag-table.py | 4 ++++ + src/gen-ucd-table.py | 2 ++ + src/gen-use-table.py | 6 ++++++ + src/gen-vowel-constraints.py | 2 ++ + 7 files changed, 26 insertions(+) -commit f18ea1dd3a9961661a383b2966de57ea68a267e7 -Author: Behdad Esfahbod -Date: Fri Jul 5 13:56:45 2019 -0700 +commit 40166eb0e5d4095772059d509aa647ef4118f794 +Author: Ebrahim Byagowi +Date: Sat Feb 8 13:17:06 2020 +0330 - [font] Remove division when scaling + [var] Fix the just introduced hb_font_set_var_coords_design storing bug - Yoohoo. This seems to be precise enough! Let's see if it sticks. - I'm asking Dominik to run this in Chrome test suite and report. + The memcpy call was using the current coords count which is zero initially so no copy at all. - Fixes https://github.com/harfbuzz/harfbuzz/issues/1801 + Sad that no test has caught it, should see why, will however with the upcoming style API tests. - src/hb-font.hh | 23 +++++++++-------------- - src/hb-ot-math-table.hh | 16 ++++++++-------- - 2 files changed, 17 insertions(+), 22 deletions(-) + src/hb-font.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit b847769292aca13345fd1facae35aaf999198ad4 -Author: Behdad Esfahbod -Date: Fri Jul 5 13:52:09 2019 -0700 +commit 5c1a023f67806ee5316518d11f3c236c66fa5c87 +Author: Ebrahim Byagowi +Date: Sat Feb 8 10:57:07 2020 +0330 - [font] Keep font-space to user-space multiplier + [tool] Optimize COLR glyph dump - Part of https://github.com/harfbuzz/harfbuzz/issues/1801 + Move palette colors fetching out of gid iteration so not + fetching all the colors of a palette each time. - src/hb-font.cc | 5 +++++ - src/hb-font.hh | 13 +++++++++++-- - 2 files changed, 16 insertions(+), 2 deletions(-) + src/main.cc | 91 +++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 46 insertions(+), 45 deletions(-) -commit df6edcd44ceb63d01d9c0d6d2aa06b6c6cbb914d -Author: Behdad Esfahbod -Date: Fri Jul 5 13:45:15 2019 -0700 +commit 0b76e8130e1711754184118fdef8523e943d51c9 +Author: Ebrahim Byagowi +Date: Tue Aug 20 15:15:22 2019 +0430 - Make face immutable in hb_font_set_face() + Don't use _normalize_variations to avoid twice axis fetch - src/hb-font.cc | 1 + - 1 file changed, 1 insertion(+) + src/hb-font.cc | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) -commit 0d425e1eeaea97bf5e4fc9ce40e549332bc0cea1 -Author: Behdad Esfahbod -Date: Fri Jul 5 13:18:05 2019 -0700 +commit ab2d3ec542799baa0ac056cfcd264e5b3c301d82 +Author: Ebrahim Byagowi +Date: Wed Aug 14 18:42:51 2019 +0430 - [ot-font] Optimize rounding - - Part of https://github.com/harfbuzz/harfbuzz/issues/1801 + [var] Implement hb_font_get_var_coords_design - The assumption that compiler optimizes "upem/2" to a shift only - works if upem is unsigned... Anyway, spoon-feed the compiler. - - src/hb-font.hh | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) + Hold design coords and simulate when normalized coords are set directly. -commit 144326e215671a42fb3ac9f00ddef779ba354345 -Author: Simon Sapin -Date: Fri Jul 5 19:05:11 2019 +0200 + docs/harfbuzz-sections.txt | 1 + + src/hb-font.cc | 121 ++++++++++++++++++++++++++++++++++++--------- + src/hb-font.h | 4 ++ + src/hb-font.hh | 1 + + test/api/Makefile.am | 1 + + test/api/test-var-coords.c | 76 ++++++++++++++++++++++++++++ + 6 files changed, 180 insertions(+), 24 deletions(-) - Clusters are reversed based on the direction, not script - - Fixes https://github.com/harfbuzz/harfbuzz/issues/1818 +commit 5a10f3a0551c2e62bc0969fd857033ed53f10943 +Author: Garret Rieger +Date: Fri Feb 7 10:38:27 2020 -0800 - docs/usermanual-clusters.xml | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) + Use vector instead of map during page compaction in hb-set. -commit cf1a782a5ca82a880906cae3d4cb76b10ec2aad2 -Author: Simon Sapin -Date: Thu Jul 4 21:06:59 2019 +0200 + src/hb-set.hh | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) - Docs: fix a typo in function name +commit 2742c8162479a33d9276fa7a1e6deecc65fef5aa +Author: Garret Rieger +Date: Tue Jan 28 13:55:31 2020 -0800 - docs/usermanual-fonts-and-faces.xml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + Fix page_map corruption in hb_set_t during process(). + + If a process operation results in less pages then the current set has, it will likely corrupt the page_map since it overwrites page_map entries ahead of where it's processing. This fixes that problem by removing page_map entries that will be dropped. Then dropping orphaned pages and re-indexing retained pages. -commit ffa736f151f27adb76fb0bf91e18e1ec5cb8fe8d -Author: Simon Sapin -Date: Thu Jul 4 23:05:50 2019 +0200 + src/hb-set.hh | 51 ++++++++++++++++++++++++++++++++-- + test/api/test-set.c | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 127 insertions(+), 3 deletions(-) - hb_set_previous_range docs: fix presumed copy/paste error +commit eb7849a806699c1c5efc435cf39ee3a0eb9b9e1c +Author: Qunxin Liu +Date: Wed Feb 5 15:29:03 2020 -0800 - src/hb-set.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + [subset] GPOS6 MarkToMark subsetting support -commit 641f33738089ef7ccbedce09886309edcd2e1718 -Author: Simon Sapin -Date: Thu Jul 4 23:03:45 2019 +0200 + src/hb-ot-layout-gpos-table.hh | 66 ++++++++++++++++++++- + test/subset/data/Makefile.am | 1 + + test/subset/data/Makefile.sources | 1 + + ...6_font1.keep-layout-retain-gids.41,42,43,44.otf | Bin 0 -> 2320 bytes + ...6_font1.keep-layout-retain-gids.41,42,43,45.otf | Bin 0 -> 2328 bytes + ...pos6_font1.keep-layout-retain-gids.41,42,43.otf | Bin 0 -> 2080 bytes + .../gpos6_font1.keep-layout-retain-gids.41,42.otf | Bin 0 -> 1888 bytes + ...ont1.keep-layout-retain-gids.41,43,44,45,46.otf | Bin 0 -> 2688 bytes + ...pos6_font1.keep-layout-retain-gids.41,43,44.otf | Bin 0 -> 2324 bytes + ...pos6_font1.keep-layout-retain-gids.41,43,45.otf | Bin 0 -> 2336 bytes + .../gpos6_font1.keep-layout-retain-gids.41,43.otf | Bin 0 -> 2092 bytes + .../gpos6_font1.keep-layout-retain-gids.41.otf | Bin 0 -> 1872 bytes + ...eep-layout-retain-gids.retain-all-codepoint.otf | Bin 0 -> 3748 bytes + .../gpos6_font1.keep-layout.41,42,43,44.otf | Bin 0 -> 1616 bytes + .../gpos6_font1.keep-layout.41,42,43,45.otf | Bin 0 -> 1608 bytes + .../gpos6_font1.keep-layout.41,42,43.otf | Bin 0 -> 1380 bytes + .../layout.gpos6/gpos6_font1.keep-layout.41,42.otf | Bin 0 -> 1184 bytes + .../gpos6_font1.keep-layout.41,43,44,45,46.otf | Bin 0 -> 1968 bytes + .../gpos6_font1.keep-layout.41,43,44.otf | Bin 0 -> 1608 bytes + .../gpos6_font1.keep-layout.41,43,45.otf | Bin 0 -> 1608 bytes + .../layout.gpos6/gpos6_font1.keep-layout.41,43.otf | Bin 0 -> 1376 bytes + .../layout.gpos6/gpos6_font1.keep-layout.41.otf | Bin 0 -> 1172 bytes + ...pos6_font1.keep-layout.retain-all-codepoint.otf | Bin 0 -> 3748 bytes + test/subset/data/fonts/gpos6_font1.otf | Bin 0 -> 4688 bytes + test/subset/data/tests/layout.gpos6.tests | 18 ++++++ + 25 files changed, 84 insertions(+), 2 deletions(-) + +commit 82afc75835364338b8db4e978ad8a0c466e41225 +Author: Qunxin Liu +Date: Tue Feb 4 13:24:37 2020 -0800 - Docs typo fix: slower → lower + [subset] GPOS4 MarkBase subsetting support - src/hb-set.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-open-type.hh | 7 + + src/hb-ot-layout-gpos-table.hh | 145 ++++++++++++++++++++- + test/subset/data/Makefile.am | 1 + + test/subset/data/Makefile.sources | 1 + + ...chors_1.keep-layout-retain-gids.41,42,43,44.otf | Bin 0 -> 2344 bytes + ...chors_1.keep-layout-retain-gids.41,42,43,45.otf | Bin 0 -> 2352 bytes + ..._anchors_1.keep-layout-retain-gids.41,42,43.otf | Bin 0 -> 2104 bytes + ...ple_anchors_1.keep-layout-retain-gids.41,42.otf | Bin 0 -> 1912 bytes + ...rs_1.keep-layout-retain-gids.41,43,44,45,46.otf | Bin 0 -> 2712 bytes + ..._anchors_1.keep-layout-retain-gids.41,43,44.otf | Bin 0 -> 2348 bytes + ..._anchors_1.keep-layout-retain-gids.41,43,45.otf | Bin 0 -> 2360 bytes + ...ple_anchors_1.keep-layout-retain-gids.41,43.otf | Bin 0 -> 2116 bytes + ...ltiple_anchors_1.keep-layout-retain-gids.41.otf | Bin 0 -> 1896 bytes + ...eep-layout-retain-gids.retain-all-codepoint.otf | Bin 0 -> 3772 bytes + ..._multiple_anchors_1.keep-layout.41,42,43,44.otf | Bin 0 -> 1640 bytes + ..._multiple_anchors_1.keep-layout.41,42,43,45.otf | Bin 0 -> 1632 bytes + ...os4_multiple_anchors_1.keep-layout.41,42,43.otf | Bin 0 -> 1404 bytes + .../gpos4_multiple_anchors_1.keep-layout.41,42.otf | Bin 0 -> 1208 bytes + ...ltiple_anchors_1.keep-layout.41,43,44,45,46.otf | Bin 0 -> 1992 bytes + ...os4_multiple_anchors_1.keep-layout.41,43,44.otf | Bin 0 -> 1632 bytes + ...os4_multiple_anchors_1.keep-layout.41,43,45.otf | Bin 0 -> 1632 bytes + .../gpos4_multiple_anchors_1.keep-layout.41,43.otf | Bin 0 -> 1400 bytes + .../gpos4_multiple_anchors_1.keep-layout.41.otf | Bin 0 -> 1196 bytes + ..._anchors_1.keep-layout.retain-all-codepoint.otf | Bin 0 -> 3772 bytes + .../subset/data/fonts/gpos4_multiple_anchors_1.otf | Bin 0 -> 4712 bytes + test/subset/data/tests/layout.gpos4.tests | 18 +++ + 26 files changed, 169 insertions(+), 3 deletions(-) + +commit 4dc3db7344b464695d3c8cfdb7f3e5d518b4a6ac +Author: Ebrahim Byagowi +Date: Thu Feb 6 12:12:41 2020 +0330 + + Minor, fix warnings raised when built with -std=c++2a + + Follow up to c184180, + + It was raising, + + src/hb-ot-layout-common.hh:1067:63: warning: implicit capture of 'this' with a capture default of '=' is deprecated [-Wdeprecated-this-capture] + | hb_filter ([=] (const OffsetTo &_) { return (this+_).intersects (glyphset, lookup_type); }) + ^ + src/hb-ot-layout-common.hh:1067:19: note: add an explicit capture of 'this' to capture '*this' by reference + | hb_filter ([=] (const OffsetTo &_) { return (this+_).intersects (glyphset, lookup_type); }) + ^ + , this + + and + + src/hb-ot-layout-common.hh:2626:38: warning: implicit capture of 'this' with a capture default of '=' is deprecated [-Wdeprecated-this-capture] + { r.collect_lookups (this, lookup_indexes); }) + ^ + src/hb-ot-layout-common.hh:2625:18: note: add an explicit capture of 'this' to capture '*this' by reference + | hb_apply ([=] (const FeatureTableSubstitutionRecord& r) + ^ + , this + + and + + src/hb-ot-hdmx-table.hh:141:44: error: implicit capture of 'this' with a capture default of '=' is deprecated [-Werror,-Wdeprecated-this-capture] + return device_record->widthsZ.as_array (get_num_glyphs ()) [_]; + ^ + src/hb-ot-hdmx-table.hh:137:17: note: add an explicit capture of 'this' to capture '*this' by reference + | hb_map ([=] (hb_codepoint_t _) + ^ + , this + + .circleci/config.yml | 4 +++- + src/hb-ot-hdmx-table.hh | 4 ++-- + src/hb-ot-layout-common.hh | 18 ++++++++---------- + 3 files changed, 13 insertions(+), 13 deletions(-) -commit 9fea6b4dd41bfe2b85f788523162658a7ab9bd49 +commit b4d3bf1d8a97b77cbea6dd770a16aea618af7aee Author: Ebrahim Byagowi -Date: Fri Jul 5 18:46:41 2019 +0430 +Date: Sun Feb 2 14:32:38 2020 +0330 - [amalgam] Use it in cmake port and fix conflicts (#1812) + [draw] Add hb_draw_funcs_is_immutable and hb_draw_funcs_make_immutable - .circleci/config.yml | 8 ++--- - CMakeLists.txt | 74 ++++-------------------------------------- - src/Makefile.am | 2 ++ - src/hb-cff-interp-common.hh | 6 ++-- - src/hb-cff-interp-cs-common.hh | 2 +- - src/hb-coretext.cc | 4 +-- - src/hb-directwrite.cc | 14 ++++---- - src/hb-ft.cc | 4 +-- - 8 files changed, 27 insertions(+), 87 deletions(-) + docs/harfbuzz-sections.txt | 2 ++ + src/hb-draw.cc | 32 ++++++++++++++++++++++++++++++++ + src/hb-draw.h | 6 ++++++ + test/api/test-draw.c | 13 +++++++++++++ + 4 files changed, 53 insertions(+) -commit b240d701fd98efa59a7f772ff39654fc95b8fc8f -Author: Behdad Esfahbod -Date: Wed Jul 3 12:17:57 2019 -0700 +commit 63b8190db884d9ae88a80336067eab539a44b882 +Author: Ebrahim Byagowi +Date: Thu Feb 6 11:38:11 2020 +0330 - [amalgam] Include integration source files as well - - Just for those that are normally built into libharfbuzz itself. + [test] minor - Part of https://github.com/harfbuzz/harfbuzz/issues/1809 + Remained from previous naming. - src/Makefile.am | 12 ++++++++++-- - src/harfbuzz.cc | 6 ++++++ - 2 files changed, 16 insertions(+), 2 deletions(-) + test/api/test-draw.c | 32 ++++++++++++++++---------------- + 1 file changed, 16 insertions(+), 16 deletions(-) -commit d51524204528b36907ab0f48bf2a48ec124c93d9 -Author: Behdad Esfahbod -Date: Wed Jul 3 12:10:03 2019 -0700 +commit 3a98c7fae196fd149078af4553b966dc1c8d763b +Author: Ebrahim Byagowi +Date: Thu Feb 6 01:11:00 2020 +0330 - [amalgam] Rename hb.cc to harfbuzz.cc + [glyf] Skip empty contours - Part of https://github.com/harfbuzz/harfbuzz/issues/1809 + As https://savannah.nongnu.org/bugs/index.php?57701 - src/Makefile.am | 8 ++++---- - src/{hb.cc => harfbuzz.cc} | 0 - 2 files changed, 4 insertions(+), 4 deletions(-) + src/hb-ot-glyf-table.hh | 8 ++++++ + test/api/fonts/Stroking.ttf | Bin 0 -> 3380 bytes + test/api/test-draw.c | 60 +++++++++++++++++++++++++++++++++++++++++--- + 3 files changed, 65 insertions(+), 3 deletions(-) -commit 4cb180d227c1adc32e921c241a93cd1f50a98d33 -Author: Behdad Esfahbod -Date: Tue Jul 2 19:44:18 2019 -0700 +commit c31762e9e89bc440d21a94d8da34608d1649dc85 +Author: Ebrahim Byagowi +Date: Wed Feb 5 23:12:37 2020 +0330 - Revert "Use constexpr to replace passthru_ bools" - - This reverts commit c4aa10ebc8dc28b1f9c90af2ca2092a7535f8395. + [test] minor - Broke several compilers... Sigh. The version without constexpr - didn't fully optimize out the unreachable code on clang. - So, revert it is... - - src/hb-algs.hh | 8 ++++++++ - src/hb-set.hh | 18 ++++++++---------- - 2 files changed, 16 insertions(+), 10 deletions(-) + don't test first ten glyph, just testing cp just like other API calls is enough -commit c4aa10ebc8dc28b1f9c90af2ca2092a7535f8395 -Author: Behdad Esfahbod -Date: Tue Jul 2 19:15:03 2019 -0700 + test/api/test-ot-face.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) - Use constexpr to replace passthru_ bools +commit 03f778cf3c1170051c3cfb21d9a835252a0123c9 +Author: ckitagawa +Date: Wed Feb 5 09:26:45 2020 -0500 - src/hb-algs.hh | 8 -------- - src/hb-set.hh | 18 ++++++++++-------- - 2 files changed, 10 insertions(+), 16 deletions(-) + [cmap] remove dead code -commit 2e48fd077954410f59156b3100c16bf56a507948 -Author: Behdad Esfahbod -Date: Tue Jul 2 17:55:58 2019 -0700 + src/hb-ot-cmap-table.hh | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) - Sprinkle constexpr around - - Being conservative. Also not sure it makes any real difference - in our codebase. +commit 43253e404d25da31d8b8a57f1fc3ef5c2bb1d1fd +Merge: 71a20186 774725b4 +Author: Ebrahim Byagowi +Date: Wed Feb 5 17:45:19 2020 +0330 - src/hb-algs.hh | 48 ++++++++++++++++++++++++------------------------ - src/hb-meta.hh | 18 +++++++++--------- - 2 files changed, 33 insertions(+), 33 deletions(-) + Merge remote-tracking branch 'upstream/master' -commit df4448064e370a410404708a15ce819daf1d9386 -Author: Behdad Esfahbod -Date: Tue Jul 2 17:11:09 2019 -0700 +commit 71a201860023e61ef413b5bf05449c624d3ff575 +Author: Ebrahim Byagowi +Date: Wed Feb 5 17:15:50 2020 +0330 - Remove unused 'inline' specifier + [cbdt] minor, tweak spaces - src/hb-ot-map.hh | 4 ++-- - src/hb-shape-plan.hh | 18 +++++++++--------- - 2 files changed, 11 insertions(+), 11 deletions(-) + src/hb-ot-color-cbdt-table.hh | 437 +++++++++++++++++++++--------------------- + 1 file changed, 214 insertions(+), 223 deletions(-) -commit 04a4957040380bba58880ff51d529c5cccf1d2c7 -Author: Behdad Esfahbod -Date: Tue Jul 2 16:19:18 2019 -0700 +commit eaa2402a793501bc03e7aa7e662333da2b1aadb1 +Author: Ebrahim Byagowi +Date: Wed Feb 5 17:02:03 2020 +0330 - [amalgam] Add hb.cc to git + [cbdt] Merge hb-ot-color-cbdt-table.cc into its header file - Part of https://github.com/harfbuzz/harfbuzz/issues/1809 + Not needed as far as can be said. - src/Makefile.am | 1 + - src/hb.cc | 44 ++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 45 insertions(+) - -commit 62e60322cb9e18b3ee75f1b4a2a6d3069f587407 -Author: Behdad Esfahbod -Date: Tue Jul 2 16:07:03 2019 -0700 + src/Makefile.sources | 2 -- + src/harfbuzz.cc | 1 - + src/hb-ot-color-cbdt-table.cc | 75 ------------------------------------------- + src/hb-ot-color-cbdt-table.hh | 55 ++++++++++++++++++++++++------- + 4 files changed, 43 insertions(+), 90 deletions(-) - Minor +commit a7f694d4b0d5e95a6202da926ba3c29df6fbb6f0 +Merge: 43016715 b114b26a +Author: Ebrahim Byagowi +Date: Wed Feb 5 16:31:21 2020 +0330 - src/hb-unicode.cc | 5 ++--- - 1 file changed, 2 insertions(+), 3 deletions(-) + Merge branch 'subset_cblc' into master -commit ceb4c212dc91a277f646c4a5354e4362f548a9f6 -Author: Behdad Esfahbod -Date: Tue Jul 2 16:02:13 2019 -0700 +commit 774725b43a05d7e44286a809bb3767f18189c1a4 +Author: ckitagawa-work <59700018+ckitagawa-work@users.noreply.github.com> +Date: Wed Feb 5 07:43:10 2020 -0500 - [amalgam] Fix UCD issue + [subset] Avoid incorrectly dropping cmap for NotoColorEmoji.ttf - This actually makes it build now! + NotoColorEmoji.ttf uses two cmap subtables - Part https://github.com/harfbuzz/harfbuzz/issues/1809 + Format 14 | Platform ID 0 | Platform Encoding ID 5 + Format 12 | Platform ID 3 | Platform Encoding ID 10 - Keeping open to add tests, CI, etc. + This combination results in the cmap table being dropped during subsetting despite being valid/required. - src/hb-ucd.cc | 5 +---- - src/hb-unicode.cc | 2 -- - src/hb-unicode.hh | 3 +++ - 3 files changed, 4 insertions(+), 6 deletions(-) + src/hb-ot-cmap-table.hh | 2 +- + test/api/fonts/NotoColorEmoji.cmap.38,AE,2049.ttf | Bin 0 -> 10032 bytes + test/api/fonts/NotoColorEmoji.cmap.ttf | Bin 0 -> 10052 bytes + test/api/test-subset-cmap.c | 44 +++++++++++++++++++++ + .../cmap14/cmap14_font2.default.4E00,4E02,4E03.otf | Bin 0 -> 1360 bytes + .../cmap14/cmap14_font2.default.4E00,4E03.otf | Bin 0 -> 1236 bytes + .../cmap14/cmap14_font2.default.4E00,4E05,4E07.otf | Bin 0 -> 1332 bytes + .../cmap14/cmap14_font2.default.4E02,4E03,4E08.otf | Bin 0 -> 1576 bytes + .../expected/cmap14/cmap14_font2.default.4E02.otf | Bin 0 -> 992 bytes + .../expected/cmap14/cmap14_font2.default.4E03.otf | Bin 0 -> 1076 bytes + .../cmap14_font2.default.4E05,4E07,4E08,4E09.otf | Bin 0 -> 1848 bytes + .../cmap14/cmap14_font2.default.4E08,4E09.otf | Bin 0 -> 1716 bytes + .../expected/cmap14/cmap14_font2.default.4E08.otf | Bin 0 -> 1380 bytes + .../cmap14_font2.default.retain-all-codepoint.otf | Bin 0 -> 2344 bytes + ...font2.drop-hints-retain-gids.4E00,4E02,4E03.otf | Bin 0 -> 1388 bytes + ...ap14_font2.drop-hints-retain-gids.4E00,4E03.otf | Bin 0 -> 1272 bytes + ...font2.drop-hints-retain-gids.4E00,4E05,4E07.otf | Bin 0 -> 1400 bytes + ...font2.drop-hints-retain-gids.4E02,4E03,4E08.otf | Bin 0 -> 1720 bytes + .../cmap14_font2.drop-hints-retain-gids.4E02.otf | Bin 0 -> 1024 bytes + .../cmap14_font2.drop-hints-retain-gids.4E03.otf | Bin 0 -> 1120 bytes + ....drop-hints-retain-gids.4E05,4E07,4E08,4E09.otf | Bin 0 -> 1984 bytes + ...ap14_font2.drop-hints-retain-gids.4E08,4E09.otf | Bin 0 -> 1868 bytes + .../cmap14_font2.drop-hints-retain-gids.4E08.otf | Bin 0 -> 1540 bytes + ...drop-hints-retain-gids.retain-all-codepoint.otf | Bin 0 -> 2432 bytes + .../cmap14_font2.drop-hints.4E00,4E02,4E03.otf | Bin 0 -> 1292 bytes + .../cmap14/cmap14_font2.drop-hints.4E00,4E03.otf | Bin 0 -> 1168 bytes + .../cmap14_font2.drop-hints.4E00,4E05,4E07.otf | Bin 0 -> 1264 bytes + .../cmap14_font2.drop-hints.4E02,4E03,4E08.otf | Bin 0 -> 1512 bytes + .../cmap14/cmap14_font2.drop-hints.4E02.otf | Bin 0 -> 924 bytes + .../cmap14/cmap14_font2.drop-hints.4E03.otf | Bin 0 -> 1008 bytes + ...cmap14_font2.drop-hints.4E05,4E07,4E08,4E09.otf | Bin 0 -> 1780 bytes + .../cmap14/cmap14_font2.drop-hints.4E08,4E09.otf | Bin 0 -> 1648 bytes + .../cmap14/cmap14_font2.drop-hints.4E08.otf | Bin 0 -> 1312 bytes + ...map14_font2.drop-hints.retain-all-codepoint.otf | Bin 0 -> 2276 bytes + .../cmap14_font2.name-ids.4E00,4E02,4E03.otf | Bin 0 -> 1292 bytes + .../cmap14/cmap14_font2.name-ids.4E00,4E03.otf | Bin 0 -> 1168 bytes + .../cmap14_font2.name-ids.4E00,4E05,4E07.otf | Bin 0 -> 1264 bytes + .../cmap14_font2.name-ids.4E02,4E03,4E08.otf | Bin 0 -> 1508 bytes + .../expected/cmap14/cmap14_font2.name-ids.4E02.otf | Bin 0 -> 924 bytes + .../expected/cmap14/cmap14_font2.name-ids.4E03.otf | Bin 0 -> 1008 bytes + .../cmap14_font2.name-ids.4E05,4E07,4E08,4E09.otf | Bin 0 -> 1780 bytes + .../cmap14/cmap14_font2.name-ids.4E08,4E09.otf | Bin 0 -> 1648 bytes + .../expected/cmap14/cmap14_font2.name-ids.4E08.otf | Bin 0 -> 1312 bytes + .../cmap14_font2.name-ids.retain-all-codepoint.otf | Bin 0 -> 2276 bytes + .../cmap14_font2.retain-gids.4E00,4E02,4E03.otf | Bin 0 -> 1452 bytes + .../cmap14/cmap14_font2.retain-gids.4E00,4E03.otf | Bin 0 -> 1340 bytes + .../cmap14_font2.retain-gids.4E00,4E05,4E07.otf | Bin 0 -> 1468 bytes + .../cmap14_font2.retain-gids.4E02,4E03,4E08.otf | Bin 0 -> 1788 bytes + .../cmap14/cmap14_font2.retain-gids.4E02.otf | Bin 0 -> 1092 bytes + .../cmap14/cmap14_font2.retain-gids.4E03.otf | Bin 0 -> 1188 bytes + ...map14_font2.retain-gids.4E05,4E07,4E08,4E09.otf | Bin 0 -> 2048 bytes + .../cmap14/cmap14_font2.retain-gids.4E08,4E09.otf | Bin 0 -> 1936 bytes + .../cmap14/cmap14_font2.retain-gids.4E08.otf | Bin 0 -> 1604 bytes + ...ap14_font2.retain-gids.retain-all-codepoint.otf | Bin 0 -> 2496 bytes + test/subset/data/fonts/cmap14_font2.otf | Bin 0 -> 4480 bytes + test/subset/data/tests/cmap14.tests | 1 + + 56 files changed, 46 insertions(+), 1 deletion(-) + +commit 43016715e1b4d48bc0cf598f374ffa9213b5fe2e +Author: Ebrahim Byagowi +Date: Wed Feb 5 15:02:20 2020 +0330 + + [subset] minor on _subset + + src/hb-subset.cc | 32 ++++++++++++++------------------ + 1 file changed, 14 insertions(+), 18 deletions(-) -commit 7ca54811f471a28163de6b3c561990c85aa39880 -Author: Behdad Esfahbod -Date: Tue Jul 2 16:00:58 2019 -0700 +commit dcb5dfc970f2720b9c76efd672c83cf2bdbd4bf0 +Author: Ebrahim Byagowi +Date: Wed Feb 5 15:01:25 2020 +0330 - [amalgam] Fix CFF - - Part of https://github.com/harfbuzz/harfbuzz/issues/1809 + [subset] minor on tables iteration - src/hb-ot-cff1-table.cc | 18 +++++++++--------- - src/hb-ot-cff2-table.cc | 16 ++++++++-------- - 2 files changed, 17 insertions(+), 17 deletions(-) + src/hb-subset.cc | 38 +++++++++++++++++--------------------- + 1 file changed, 17 insertions(+), 21 deletions(-) -commit 3724f13ba0292055197efdbfcacfe3d7b067175c -Author: Behdad Esfahbod -Date: Tue Jul 2 15:23:00 2019 -0700 +commit a8593339e2bd76eef30d0b87a9f509c5f2e8366c +Author: Ebrahim Byagowi +Date: Wed Feb 5 15:00:25 2020 +0330 - [amalgam] Finish fixing Indic-like shapers - - Part of https://github.com/harfbuzz/harfbuzz/issues/1809 + [subset] minor on switch statements - src/hb-ot-shape-complex-indic.cc | 34 +++++++++++++++++----------------- - src/hb-ot-shape-complex-indic.hh | 9 ++++++++- - src/hb-ot-shape-complex-khmer.cc | 18 +++++++++--------- - src/hb-ot-shape-complex-khmer.hh | 17 ++++++++--------- - src/hb-ot-shape-complex-myanmar.cc | 8 ++++---- - src/hb-ot-shape-complex-myanmar.hh | 16 ++++++++-------- - src/hb-ot-shape-complex-use.cc | 14 +++++++------- - 7 files changed, 61 insertions(+), 55 deletions(-) + src/hb-subset.cc | 166 ++++++++++++++++++------------------------------------- + 1 file changed, 55 insertions(+), 111 deletions(-) -commit eb37bc9d93b3abebee24390708940510fe37477a -Author: Behdad Esfahbod -Date: Tue Jul 2 15:19:39 2019 -0700 +commit b1f63109c6f084ee1b963ebcb85b440f8639e322 +Author: Ebrahim Byagowi +Date: Wed Feb 5 00:28:21 2020 +0330 - [use] Remove Syriac features + [subset] Optimize _is_table_present - This was non-standard, and unused anyway. + One call for most of the fonts and no malloc - src/hb-ot-shape-complex-use.cc | 7 +------ - 1 file changed, 1 insertion(+), 6 deletions(-) + src/hb-subset.cc | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) -commit dc480fc4717937d53cf38860a5c5d48211e8cbc8 -Author: Behdad Esfahbod -Date: Tue Jul 2 15:17:56 2019 -0700 +commit 25707e37e32777aee76317c55a234921c4a3b51e +Author: Ebrahim Byagowi +Date: Wed Feb 5 00:27:28 2020 +0330 - [amalgam] More Indic-like issues - - Part of https://github.com/harfbuzz/harfbuzz/issues/1809 + [cff] minor - src/hb-ot-shape-complex-indic.cc | 76 +++++++++++++++++++++------------------- - src/hb-ot-shape-complex-khmer.cc | 36 ++++++++++--------- - src/hb-ot-shape-complex-use.cc | 32 ++++++++--------- - 3 files changed, 74 insertions(+), 70 deletions(-) + src/hb-ot-cff1-table.hh | 5 +---- + src/hb-ot-cff2-table.hh | 5 +---- + 2 files changed, 2 insertions(+), 8 deletions(-) -commit d8b5353e07650cf243ba182dbf52e7f198719762 -Author: Behdad Esfahbod -Date: Tue Jul 2 15:09:26 2019 -0700 +commit 0d61926ca7c2f3e1d06231dd659ff3c43aa41746 +Author: ckitagawa +Date: Tue Feb 4 13:36:51 2020 -0500 - [amalgam] More - - Part of https://github.com/harfbuzz/harfbuzz/issues/1809 + [subset] Keep head when no glyf table - src/hb-ot-shape-complex-myanmar.cc | 28 ++++++++++++++-------------- - src/hb-ot-shape-complex-use.cc | 28 ++++++++++++++-------------- - 2 files changed, 28 insertions(+), 28 deletions(-) + src/hb-ot-cff1-table.hh | 12 +------ + src/hb-ot-cff2-table.hh | 12 +------ + src/hb-ot-head-table.hh | 12 +++++++ + src/hb-subset.cc | 91 ++++++++++++++++++++++++++++++------------------- + 4 files changed, 69 insertions(+), 58 deletions(-) -commit d115a9e022c0b687fb402cfd2b90d516beded5c0 -Author: Behdad Esfahbod -Date: Tue Jul 2 14:42:45 2019 -0700 +commit 7f9b2228a610ad614b77b24503bf02f95e0bf4b8 +Author: Ebrahim Byagowi +Date: Tue Feb 4 23:05:46 2020 +0330 - [amalgam] Fix most duplicate-id instances in Indic-like shapers + [glyf] minor - Part of https://github.com/harfbuzz/harfbuzz/issues/1809 + Improve using https://developer.blender.org/diffusion/B/browse/master/source/blender/blenlib/intern/freetypefont.c$572 - src/hb-ot-layout.hh | 22 +++++ - src/hb-ot-shape-complex-indic-machine.hh | 6 +- - src/hb-ot-shape-complex-indic-machine.rl | 6 +- - src/hb-ot-shape-complex-indic.cc | 130 +++++++++---------------- - src/hb-ot-shape-complex-indic.hh | 26 +++++ - src/hb-ot-shape-complex-khmer-machine.hh | 6 +- - src/hb-ot-shape-complex-khmer-machine.rl | 6 +- - src/hb-ot-shape-complex-khmer.cc | 97 ++++++------------- - src/hb-ot-shape-complex-myanmar-machine.hh | 4 +- - src/hb-ot-shape-complex-myanmar-machine.rl | 4 +- - src/hb-ot-shape-complex-myanmar.cc | 69 ++++++-------- - src/hb-ot-shape-complex-use-machine.hh | 4 +- - src/hb-ot-shape-complex-use-machine.rl | 4 +- - src/hb-ot-shape-complex-use.cc | 148 ++++++++++++----------------- - 14 files changed, 230 insertions(+), 302 deletions(-) + src/hb-ot-glyf-table.hh | 14 ++++++-------- + 1 file changed, 6 insertions(+), 8 deletions(-) -commit c073233f45da6ad8131dd38cb43b125f48c17432 -Author: Behdad Esfahbod -Date: Tue Jul 2 14:26:45 2019 -0700 +commit 5b436033851960ea3638fbf882100b8c04d6d5a3 +Author: Ebrahim Byagowi +Date: Tue Feb 4 21:29:19 2020 +0330 - Add make rule to build hb.cc - - Part of https://github.com/harfbuzz/harfbuzz/issues/1809 + [subset] Rename _subset2 to _subset - src/Makefile.am | 6 ++++++ - 1 file changed, 6 insertions(+) + src/hb-subset.cc | 62 +++++++++++++++++++------------------------------------- + 1 file changed, 21 insertions(+), 41 deletions(-) -commit f1d20d9b4dcbeead3757650b9286393918b4be8a -Author: Behdad Esfahbod -Date: Tue Jul 2 14:18:38 2019 -0700 +commit 2792fb8ba1b542b4f974c272a51014aadbecc670 +Author: ariza +Date: Sun Feb 2 22:00:53 2020 -0800 - Add ucd-table make target + first rewrite of cff/cff2 _subset with _subset2 - src/Makefile.am | 23 +++++++++++++++-------- - src/gen-ucd-table.py | 8 +++++--- - 2 files changed, 20 insertions(+), 11 deletions(-) + src/hb-ot-cff1-table.hh | 12 ++---- + src/hb-ot-cff2-table.hh | 12 ++---- + src/hb-subset-cff1.cc | 106 ++++++++++++++++++++---------------------------- + src/hb-subset-cff1.hh | 3 +- + src/hb-subset-cff2.cc | 90 ++++++++++++++++------------------------ + src/hb-subset-cff2.hh | 3 +- + src/hb-subset.cc | 4 +- + 7 files changed, 89 insertions(+), 141 deletions(-) -commit 634390ecaf600176245e3354edd8dfdcb7f64cc5 -Author: blueshade7 -Date: Mon Jul 1 18:52:57 2019 -0700 +commit b114b26a56234c17c620f69d30b1f388fc5fb6df +Author: ckitagawa +Date: Tue Feb 4 09:49:24 2020 -0500 - added VariationStore serializer to be used by HVAR/VVAR subsetters + Add guard to copy_glyph_at_idx - src/hb-ot-layout-common.hh | 165 ++++++++++++++++++++++++++++++++++++++++++++- - 1 file changed, 163 insertions(+), 2 deletions(-) + src/hb-ot-color-cbdt-table.cc | 2 +- + src/hb-ot-color-cbdt-table.hh | 9 ++++++++- + 2 files changed, 9 insertions(+), 2 deletions(-) -commit 040b261deeed8924edcb087e27a61392d1f85023 -Author: Michiharu Ariza -Date: Sun Jun 30 16:13:07 2019 -0700 +commit b2a68ed587b9931168bba5cae684e40840afc699 +Author: Ebrahim Byagowi +Date: Sat Feb 1 23:16:26 2020 +0330 - add bimap test along with bug fix/tweaks + [name] Minor, use subtraction instead ternary operator + + Guess ternary was a bit more legible, apparently however we agreed to use subtraction, + https://github.com/harfbuzz/harfbuzz/pull/2139#discussion_r372582005 - src/Makefile.am | 6 ++++- - src/hb-bimap.hh | 4 +++ - src/test-bimap.cc | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 85 insertions(+), 1 deletion(-) + src/hb-ot-name-table.hh | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) -commit 9c93f5cc2de5c60d5464a65890fc7d8c25aa9702 -Merge: ad341d5f 4ab2d1d6 -Author: Ebrahim Byagowi -Date: Mon Jul 1 20:08:22 2019 +0430 +commit 490ef1cc236ae77b8168218d77cbc3b85ecb81bc +Author: Qunxin Liu +Date: Tue Jan 28 15:57:33 2020 -0800 + + [subset] Fix namerecord ordering + This will fix inconsistency with fontTools. + Also according to the spec, namerecords must be sorted + first by platform ID, then by platform-specific ID, + then by language ID, and then by name ID. + + src/hb-ot-name-table.hh | 37 ++++++++++++++++++++- + ...numMyeongjo-Regular-subset.default.61,62,63.ttf | Bin 0 -> 4128 bytes + .../NanumMyeongjo-Regular-subset.default.61,63.ttf | Bin 0 -> 3580 bytes + .../NanumMyeongjo-Regular-subset.default.61.ttf | Bin 0 -> 3156 bytes + .../NanumMyeongjo-Regular-subset.default.62.ttf | Bin 0 -> 3180 bytes + .../NanumMyeongjo-Regular-subset.default.63.ttf | Bin 0 -> 3048 bytes + ...Regular-subset.default.retain-all-codepoint.ttf | Bin 0 -> 9524 bytes + ...ular-subset.drop-hints-retain-gids.61,62,63.ttf | Bin 0 -> 1452 bytes + ...Regular-subset.drop-hints-retain-gids.61,63.ttf | Bin 0 -> 1284 bytes + ...jo-Regular-subset.drop-hints-retain-gids.61.ttf | Bin 0 -> 1128 bytes + ...jo-Regular-subset.drop-hints-retain-gids.62.ttf | Bin 0 -> 1144 bytes + ...jo-Regular-subset.drop-hints-retain-gids.63.ttf | Bin 0 -> 1116 bytes + ...drop-hints-retain-gids.retain-all-codepoint.ttf | Bin 0 -> 3536 bytes + ...Myeongjo-Regular-subset.drop-hints.61,62,63.ttf | Bin 0 -> 1452 bytes + ...numMyeongjo-Regular-subset.drop-hints.61,63.ttf | Bin 0 -> 1276 bytes + .../NanumMyeongjo-Regular-subset.drop-hints.61.ttf | Bin 0 -> 1128 bytes + .../NanumMyeongjo-Regular-subset.drop-hints.62.ttf | Bin 0 -> 1140 bytes + .../NanumMyeongjo-Regular-subset.drop-hints.63.ttf | Bin 0 -> 1104 bytes + ...ular-subset.drop-hints.retain-all-codepoint.ttf | Bin 0 -> 3536 bytes + ...umMyeongjo-Regular-subset.name-ids.61,62,63.ttf | Bin 0 -> 3924 bytes + ...NanumMyeongjo-Regular-subset.name-ids.61,63.ttf | Bin 0 -> 3376 bytes + .../NanumMyeongjo-Regular-subset.name-ids.61.ttf | Bin 0 -> 2952 bytes + .../NanumMyeongjo-Regular-subset.name-ids.62.ttf | Bin 0 -> 2976 bytes + .../NanumMyeongjo-Regular-subset.name-ids.63.ttf | Bin 0 -> 2844 bytes + ...egular-subset.name-ids.retain-all-codepoint.ttf | Bin 0 -> 9320 bytes + ...ngjo-Regular-subset.name-languages.61,62,63.ttf | Bin 0 -> 4172 bytes + ...yeongjo-Regular-subset.name-languages.61,63.ttf | Bin 0 -> 3624 bytes + ...umMyeongjo-Regular-subset.name-languages.61.ttf | Bin 0 -> 3200 bytes + ...umMyeongjo-Regular-subset.name-languages.62.ttf | Bin 0 -> 3224 bytes + ...umMyeongjo-Regular-subset.name-languages.63.ttf | Bin 0 -> 3092 bytes + ...-subset.name-languages.retain-all-codepoint.ttf | Bin 0 -> 9568 bytes + ...yeongjo-Regular-subset.name-legacy.61,62,63.ttf | Bin 0 -> 4128 bytes + ...umMyeongjo-Regular-subset.name-legacy.61,63.ttf | Bin 0 -> 3580 bytes + ...NanumMyeongjo-Regular-subset.name-legacy.61.ttf | Bin 0 -> 3156 bytes + ...NanumMyeongjo-Regular-subset.name-legacy.62.ttf | Bin 0 -> 3180 bytes + ...NanumMyeongjo-Regular-subset.name-legacy.63.ttf | Bin 0 -> 3048 bytes + ...lar-subset.name-legacy.retain-all-codepoint.ttf | Bin 0 -> 9524 bytes + ...yeongjo-Regular-subset.retain-gids.61,62,63.ttf | Bin 0 -> 4128 bytes + ...umMyeongjo-Regular-subset.retain-gids.61,63.ttf | Bin 0 -> 3588 bytes + ...NanumMyeongjo-Regular-subset.retain-gids.61.ttf | Bin 0 -> 3156 bytes + ...NanumMyeongjo-Regular-subset.retain-gids.62.ttf | Bin 0 -> 3184 bytes + ...NanumMyeongjo-Regular-subset.retain-gids.63.ttf | Bin 0 -> 3060 bytes + ...lar-subset.retain-gids.retain-all-codepoint.ttf | Bin 0 -> 9524 bytes + .../japanese/Mplus1p-Regular.default.25771.ttf | Bin 1824 -> 1824 bytes + .../japanese/Mplus1p-Regular.drop-hints.25771.ttf | Bin 1096 -> 1096 bytes + .../data/fonts/NanumMyeongjo-Regular-subset.ttf | Bin 0 -> 9964 bytes + test/subset/data/tests/basics.tests | 1 + + 47 files changed, 37 insertions(+), 1 deletion(-) - Merge pull request #1806 from carlo-bramini/master +commit e128f8027888536cb8f84f950bd2dbd6ecaf67a9 +Author: ckitagawa +Date: Tue Jan 21 13:35:43 2020 -0500 + + parent 777ba47b50f6379b9f9abf1d72559316b7116b9e + author ckitagawa 1579631743 -0500 + committer ckitagawa 1580506176 -0500 - Make harfbuzz working on all existing versions of Windows + [subset] Add CBLC support -commit 4ab2d1d6767568c45495be515e016805cce0c69a -Author: Ebrahim Byagowi -Date: Mon Jul 1 19:30:21 2019 +0430 + src/Makefile.sources | 2 + + src/harfbuzz.cc | 1 + + src/hb-ot-cmap-table.hh | 6 +- + src/hb-ot-color-cbdt-table.cc | 75 ++++ + src/hb-ot-color-cbdt-table.hh | 411 ++++++++++++++++++++- + src/hb-ot-head-table.hh | 12 + + src/hb-subset.cc | 98 +++-- + test/api/Makefile.am | 2 + + .../fonts/NotoColorEmoji.subset.default.2049.ttf | Bin 0 -> 3112 bytes + .../api/fonts/NotoColorEmoji.subset.default.39.ttf | Bin 0 -> 1920 bytes + ...oji.subset.index_format3.default.38,AE,2049.ttf | Bin 0 -> 7536 bytes + .../fonts/NotoColorEmoji.subset.index_format3.ttf | Bin 0 -> 10112 bytes + ...set.multiple_size_tables.default.38,AE,2049.ttf | Bin 0 -> 14140 bytes + .../NotoColorEmoji.subset.multiple_size_tables.ttf | Bin 0 -> 19280 bytes + test/api/fonts/NotoColorEmoji.subset.ttf | Bin 0 -> 10124 bytes + test/api/test-subset-cbdt.c | 158 ++++++++ + .../fonts/NotoColorEmoji.subset.index_format3.ttf | Bin 0 -> 10112 bytes + .../NotoColorEmoji.subset.multiple_size_tables.ttf | Bin 0 -> 19280 bytes + test/fuzzing/fonts/NotoColorEmoji.subset.ttf | Bin 0 -> 10124 bytes + test/subset/data/Makefile.am | 1 + + test/subset/data/Makefile.sources | 1 + + .../cbdt/NotoColorEmoji.subset.default.2049.ttf | Bin 0 -> 3112 bytes + .../cbdt/NotoColorEmoji.subset.default.38,2049.ttf | Bin 0 -> 4084 bytes + .../cbdt/NotoColorEmoji.subset.default.38,20E3.ttf | Bin 0 -> 3568 bytes + ...rEmoji.subset.default.38,39,AE,2049,38,20E3.ttf | Bin 0 -> 10124 bytes + .../NotoColorEmoji.subset.default.38,AE,2049.ttf | Bin 0 -> 7544 bytes + .../cbdt/NotoColorEmoji.subset.default.39.ttf | Bin 0 -> 1920 bytes + .../cbdt/NotoColorEmoji.subset.default.AE.ttf | Bin 0 -> 4412 bytes + ...lorEmoji.subset.drop-hints-retain-gids.2049.ttf | Bin 0 -> 3136 bytes + ...Emoji.subset.drop-hints-retain-gids.38,2049.ttf | Bin 0 -> 4108 bytes + ...Emoji.subset.drop-hints-retain-gids.38,20E3.ttf | Bin 0 -> 3600 bytes + ...rop-hints-retain-gids.38,39,AE,2049,38,20E3.ttf | Bin 0 -> 10124 bytes + ...ji.subset.drop-hints-retain-gids.38,AE,2049.ttf | Bin 0 -> 7564 bytes + ...ColorEmoji.subset.drop-hints-retain-gids.39.ttf | Bin 0 -> 1928 bytes + ...ColorEmoji.subset.drop-hints-retain-gids.AE.ttf | Bin 0 -> 4428 bytes + .../cbdt/NotoColorEmoji.subset.drop-hints.2049.ttf | Bin 0 -> 3112 bytes + .../NotoColorEmoji.subset.drop-hints.38,2049.ttf | Bin 0 -> 4084 bytes + .../NotoColorEmoji.subset.drop-hints.38,20E3.ttf | Bin 0 -> 3568 bytes + ...oji.subset.drop-hints.38,39,AE,2049,38,20E3.ttf | Bin 0 -> 10124 bytes + ...NotoColorEmoji.subset.drop-hints.38,AE,2049.ttf | Bin 0 -> 7544 bytes + .../cbdt/NotoColorEmoji.subset.drop-hints.39.ttf | Bin 0 -> 1920 bytes + .../cbdt/NotoColorEmoji.subset.drop-hints.AE.ttf | Bin 0 -> 4412 bytes + .../NotoColorEmoji.subset.gap.default.2049.ttf | Bin 0 -> 3112 bytes + .../NotoColorEmoji.subset.gap.default.38,2049.ttf | Bin 0 -> 4084 bytes + .../NotoColorEmoji.subset.gap.default.38,20E3.ttf | Bin 0 -> 3568 bytes + ...ji.subset.gap.default.38,39,AE,2049,38,20E3.ttf | Bin 0 -> 9188 bytes + ...otoColorEmoji.subset.gap.default.38,AE,2049.ttf | Bin 0 -> 7544 bytes + .../cbdt/NotoColorEmoji.subset.gap.default.39.ttf | Bin 0 -> 908 bytes + .../cbdt/NotoColorEmoji.subset.gap.default.AE.ttf | Bin 0 -> 4412 bytes + ...moji.subset.gap.drop-hints-retain-gids.2049.ttf | Bin 0 -> 3136 bytes + ...i.subset.gap.drop-hints-retain-gids.38,2049.ttf | Bin 0 -> 4108 bytes + ...i.subset.gap.drop-hints-retain-gids.38,20E3.ttf | Bin 0 -> 3600 bytes + ...rop-hints-retain-gids.38,39,AE,2049,38,20E3.ttf | Bin 0 -> 9188 bytes + ...ubset.gap.drop-hints-retain-gids.38,AE,2049.ttf | Bin 0 -> 7564 bytes + ...rEmoji.subset.gap.drop-hints-retain-gids.39.ttf | Bin 0 -> 916 bytes + ...rEmoji.subset.gap.drop-hints-retain-gids.AE.ttf | Bin 0 -> 4428 bytes + .../NotoColorEmoji.subset.gap.drop-hints.2049.ttf | Bin 0 -> 3112 bytes + ...otoColorEmoji.subset.gap.drop-hints.38,2049.ttf | Bin 0 -> 4084 bytes + ...otoColorEmoji.subset.gap.drop-hints.38,20E3.ttf | Bin 0 -> 3568 bytes + ...subset.gap.drop-hints.38,39,AE,2049,38,20E3.ttf | Bin 0 -> 9188 bytes + ...ColorEmoji.subset.gap.drop-hints.38,AE,2049.ttf | Bin 0 -> 7544 bytes + .../NotoColorEmoji.subset.gap.drop-hints.39.ttf | Bin 0 -> 908 bytes + .../NotoColorEmoji.subset.gap.drop-hints.AE.ttf | Bin 0 -> 4412 bytes + .../NotoColorEmoji.subset.gap.retain-gids.2049.ttf | Bin 0 -> 3136 bytes + ...toColorEmoji.subset.gap.retain-gids.38,2049.ttf | Bin 0 -> 4108 bytes + ...toColorEmoji.subset.gap.retain-gids.38,20E3.ttf | Bin 0 -> 3600 bytes + ...ubset.gap.retain-gids.38,39,AE,2049,38,20E3.ttf | Bin 0 -> 9188 bytes + ...olorEmoji.subset.gap.retain-gids.38,AE,2049.ttf | Bin 0 -> 7564 bytes + .../NotoColorEmoji.subset.gap.retain-gids.39.ttf | Bin 0 -> 916 bytes + .../NotoColorEmoji.subset.gap.retain-gids.AE.ttf | Bin 0 -> 4428 bytes + ...olorEmoji.subset.index_format3.default.2049.ttf | Bin 0 -> 3112 bytes + ...rEmoji.subset.index_format3.default.38,2049.ttf | Bin 0 -> 4080 bytes + ...rEmoji.subset.index_format3.default.38,20E3.ttf | Bin 0 -> 3564 bytes + ...index_format3.default.38,39,AE,2049,38,20E3.ttf | Bin 0 -> 10112 bytes + ...oji.subset.index_format3.default.38,AE,2049.ttf | Bin 0 -> 7536 bytes + ...oColorEmoji.subset.index_format3.default.39.ttf | Bin 0 -> 1920 bytes + ...oColorEmoji.subset.index_format3.default.AE.ttf | Bin 0 -> 4412 bytes + ...t.index_format3.drop-hints-retain-gids.2049.ttf | Bin 0 -> 3136 bytes + ...ndex_format3.drop-hints-retain-gids.38,2049.ttf | Bin 0 -> 4104 bytes + ...ndex_format3.drop-hints-retain-gids.38,20E3.ttf | Bin 0 -> 3596 bytes + ...rop-hints-retain-gids.38,39,AE,2049,38,20E3.ttf | Bin 0 -> 10112 bytes + ...x_format3.drop-hints-retain-gids.38,AE,2049.ttf | Bin 0 -> 7556 bytes + ...set.index_format3.drop-hints-retain-gids.39.ttf | Bin 0 -> 1928 bytes + ...set.index_format3.drop-hints-retain-gids.AE.ttf | Bin 0 -> 4428 bytes + ...rEmoji.subset.index_format3.drop-hints.2049.ttf | Bin 0 -> 3112 bytes + ...oji.subset.index_format3.drop-hints.38,2049.ttf | Bin 0 -> 4080 bytes + ...oji.subset.index_format3.drop-hints.38,20E3.ttf | Bin 0 -> 3564 bytes + ...ex_format3.drop-hints.38,39,AE,2049,38,20E3.ttf | Bin 0 -> 10112 bytes + ....subset.index_format3.drop-hints.38,AE,2049.ttf | Bin 0 -> 7536 bytes + ...lorEmoji.subset.index_format3.drop-hints.39.ttf | Bin 0 -> 1920 bytes + ...lorEmoji.subset.index_format3.drop-hints.AE.ttf | Bin 0 -> 4412 bytes + ...Emoji.subset.index_format3.retain-gids.2049.ttf | Bin 0 -> 3136 bytes + ...ji.subset.index_format3.retain-gids.38,2049.ttf | Bin 0 -> 4104 bytes + ...ji.subset.index_format3.retain-gids.38,20E3.ttf | Bin 0 -> 3596 bytes + ...x_format3.retain-gids.38,39,AE,2049,38,20E3.ttf | Bin 0 -> 10112 bytes + ...subset.index_format3.retain-gids.38,AE,2049.ttf | Bin 0 -> 7556 bytes + ...orEmoji.subset.index_format3.retain-gids.39.ttf | Bin 0 -> 1928 bytes + ...orEmoji.subset.index_format3.retain-gids.AE.ttf | Bin 0 -> 4428 bytes + ...ji.subset.multiple_size_tables.default.2049.ttf | Bin 0 -> 5312 bytes + ...subset.multiple_size_tables.default.38,2049.ttf | Bin 0 -> 7244 bytes + ...subset.multiple_size_tables.default.38,20E3.ttf | Bin 0 -> 6212 bytes + ...e_size_tables.default.38,39,AE,2049,38,20E3.ttf | Bin 0 -> 19280 bytes + ...set.multiple_size_tables.default.38,AE,2049.ttf | Bin 0 -> 14140 bytes + ...moji.subset.multiple_size_tables.default.39.ttf | Bin 0 -> 2928 bytes + ...moji.subset.multiple_size_tables.default.AE.ttf | Bin 0 -> 7916 bytes + ...ple_size_tables.drop-hints-retain-gids.2049.ttf | Bin 0 -> 5336 bytes + ..._size_tables.drop-hints-retain-gids.38,2049.ttf | Bin 0 -> 7268 bytes + ..._size_tables.drop-hints-retain-gids.38,20E3.ttf | Bin 0 -> 6244 bytes + ...rop-hints-retain-gids.38,39,AE,2049,38,20E3.ttf | Bin 0 -> 19280 bytes + ...ze_tables.drop-hints-retain-gids.38,AE,2049.ttf | Bin 0 -> 14164 bytes + ...tiple_size_tables.drop-hints-retain-gids.39.ttf | Bin 0 -> 2936 bytes + ...tiple_size_tables.drop-hints-retain-gids.AE.ttf | Bin 0 -> 7932 bytes + ...subset.multiple_size_tables.drop-hints.2049.ttf | Bin 0 -> 5312 bytes + ...set.multiple_size_tables.drop-hints.38,2049.ttf | Bin 0 -> 7244 bytes + ...set.multiple_size_tables.drop-hints.38,20E3.ttf | Bin 0 -> 6212 bytes + ...ize_tables.drop-hints.38,39,AE,2049,38,20E3.ttf | Bin 0 -> 19280 bytes + ....multiple_size_tables.drop-hints.38,AE,2049.ttf | Bin 0 -> 14140 bytes + ...i.subset.multiple_size_tables.drop-hints.39.ttf | Bin 0 -> 2928 bytes + ...i.subset.multiple_size_tables.drop-hints.AE.ttf | Bin 0 -> 7916 bytes + ...ubset.multiple_size_tables.retain-gids.2049.ttf | Bin 0 -> 5336 bytes + ...et.multiple_size_tables.retain-gids.38,2049.ttf | Bin 0 -> 7268 bytes + ...et.multiple_size_tables.retain-gids.38,20E3.ttf | Bin 0 -> 6244 bytes + ...ze_tables.retain-gids.38,39,AE,2049,38,20E3.ttf | Bin 0 -> 19280 bytes + ...multiple_size_tables.retain-gids.38,AE,2049.ttf | Bin 0 -> 14164 bytes + ....subset.multiple_size_tables.retain-gids.39.ttf | Bin 0 -> 2936 bytes + ....subset.multiple_size_tables.retain-gids.AE.ttf | Bin 0 -> 7932 bytes + .../NotoColorEmoji.subset.retain-gids.2049.ttf | Bin 0 -> 3136 bytes + .../NotoColorEmoji.subset.retain-gids.38,2049.ttf | Bin 0 -> 4108 bytes + .../NotoColorEmoji.subset.retain-gids.38,20E3.ttf | Bin 0 -> 3600 bytes + ...ji.subset.retain-gids.38,39,AE,2049,38,20E3.ttf | Bin 0 -> 10124 bytes + ...otoColorEmoji.subset.retain-gids.38,AE,2049.ttf | Bin 0 -> 7564 bytes + .../cbdt/NotoColorEmoji.subset.retain-gids.39.ttf | Bin 0 -> 1928 bytes + .../cbdt/NotoColorEmoji.subset.retain-gids.AE.ttf | Bin 0 -> 4428 bytes + .../data/fonts/NotoColorEmoji.subset.gap.ttf | Bin 0 -> 9188 bytes + .../fonts/NotoColorEmoji.subset.index_format3.ttf | Bin 0 -> 10112 bytes + .../NotoColorEmoji.subset.multiple_size_tables.ttf | Bin 0 -> 19280 bytes + test/subset/data/fonts/NotoColorEmoji.subset.ttf | Bin 0 -> 10124 bytes + test/subset/data/tests/cbdt.tests | 20 + + 138 files changed, 747 insertions(+), 40 deletions(-) + +commit b4377afd28c8158ff0c8234aa9b2bfec3a54abd1 +Author: Evgeniy Reizner +Date: Fri Jan 31 15:11:45 2020 +0200 - [dwrite] Apply minor style improves + Minor hb_ot_layout documentation fixes. - src/hb-directwrite.cc | 16 ++++++++-------- - 1 file changed, 8 insertions(+), 8 deletions(-) + src/hb-ot-layout.cc | 8 ++++---- + src/hb-ot-layout.h | 10 +++++----- + 2 files changed, 9 insertions(+), 9 deletions(-) -commit 5ebd265e66cbcd167469837dcf8647484310dfb5 -Author: Carlo Bramini <30959007+carlo-bramini@users.noreply.github.com> -Date: Mon Jul 1 16:06:43 2019 +0200 +commit 0216a96b0fd6bd1ab4030cd7097873a1063cd846 +Author: Qunxin Liu +Date: Thu Jan 30 12:36:58 2020 -0800 - Fix error rised by GCC8+ + [subset] Fix simple glyph trim_padding in glyf table + Detail: when numOfContours = 1 and flag = 0x31 + xCoordinates and yCoordinates would be empty - src/hb-directwrite.cc | 10 ++++++++++ - 1 file changed, 10 insertions(+) + src/hb-ot-glyf-table.hh | 1 - + 1 file changed, 1 deletion(-) -commit 693dacbb1c0bc805e3e6aedaca5a57f04eb6ec9c -Author: Carlo Bramini <30959007+carlo-bramini@users.noreply.github.com> -Date: Mon Jul 1 13:31:26 2019 +0200 +commit b6a8f5e63c144868edb0259e45b33e14275d1e3e +Author: Qunxin Liu +Date: Tue Jan 28 09:30:51 2020 -0800 + + [subset] CMAP table subsetting fix + Not all codepoints smaller than 0xFFFF go to cmap4 table. + Only subset codepoints existing in each table. + This will also make harfbuzz consistent with fontTools' behavior + + src/hb-ot-cmap-table.hh | 15 ++++++++++++--- + test/subset/data/Makefile.am | 1 + + test/subset/data/Makefile.sources | 1 + + .../expected/cmap/AdobeBlank-Regular.default.61,62.ttf | Bin 0 -> 1336 bytes + .../cmap/AdobeBlank-Regular.default.61,FEFA.ttf | Bin 0 -> 1348 bytes + .../cmap/AdobeBlank-Regular.default.FEE6,FECF.ttf | Bin 0 -> 1300 bytes + .../cmap/AdobeBlank-Regular.default.FEF9,FEFA.ttf | Bin 0 -> 1288 bytes + .../expected/cmap/AdobeBlank-Regular.default.FEFA.ttf | Bin 0 -> 1268 bytes + .../AdobeBlank-Regular.drop-hints-retain-gids.61,62.ttf | Bin 0 -> 1552 bytes + ...dobeBlank-Regular.drop-hints-retain-gids.61,FEFA.ttf | Bin 0 -> 8316 bytes + ...beBlank-Regular.drop-hints-retain-gids.FEE6,FECF.ttf | Bin 0 -> 8188 bytes + ...beBlank-Regular.drop-hints-retain-gids.FEF9,FEFA.ttf | Bin 0 -> 8256 bytes + .../AdobeBlank-Regular.drop-hints-retain-gids.FEFA.ttf | Bin 0 -> 8240 bytes + .../cmap/AdobeBlank-Regular.drop-hints.61,62.ttf | Bin 0 -> 1164 bytes + .../cmap/AdobeBlank-Regular.drop-hints.61,FEFA.ttf | Bin 0 -> 1176 bytes + .../cmap/AdobeBlank-Regular.drop-hints.FEE6,FECF.ttf | Bin 0 -> 1128 bytes + .../cmap/AdobeBlank-Regular.drop-hints.FEF9,FEFA.ttf | Bin 0 -> 1116 bytes + .../cmap/AdobeBlank-Regular.drop-hints.FEFA.ttf | Bin 0 -> 1096 bytes + .../expected/cmap/AdobeBlank-Regular.name-ids.61,62.ttf | Bin 0 -> 1084 bytes + .../cmap/AdobeBlank-Regular.name-ids.61,FEFA.ttf | Bin 0 -> 1096 bytes + .../cmap/AdobeBlank-Regular.name-ids.FEE6,FECF.ttf | Bin 0 -> 1048 bytes + .../cmap/AdobeBlank-Regular.name-ids.FEF9,FEFA.ttf | Bin 0 -> 1036 bytes + .../expected/cmap/AdobeBlank-Regular.name-ids.FEFA.ttf | Bin 0 -> 1016 bytes + .../cmap/AdobeBlank-Regular.retain-gids.61,62.ttf | Bin 0 -> 1724 bytes + .../cmap/AdobeBlank-Regular.retain-gids.61,FEFA.ttf | Bin 0 -> 8488 bytes + .../cmap/AdobeBlank-Regular.retain-gids.FEE6,FECF.ttf | Bin 0 -> 8360 bytes + .../cmap/AdobeBlank-Regular.retain-gids.FEF9,FEFA.ttf | Bin 0 -> 8428 bytes + .../cmap/AdobeBlank-Regular.retain-gids.FEFA.ttf | Bin 0 -> 8412 bytes + test/subset/data/fonts/AdobeBlank-Regular.ttf | Bin 0 -> 72408 bytes + test/subset/data/tests/cmap.tests | 16 ++++++++++++++++ + 30 files changed, 30 insertions(+), 3 deletions(-) + +commit 777ba47b50f6379b9f9abf1d72559316b7116b9e +Merge: 5b069c36 92f43a99 +Author: Ebrahim Byagowi +Date: Thu Jan 30 22:38:43 2020 +0330 + + Merge pull request #2132 from ckitagawa-work/subset_colr + + [subset] Add COLR support + +commit 5b069c3612e0347db4b7932135f6a3b9e1f84f58 +Author: Ebrahim Byagowi +Date: Thu Jan 30 18:05:01 2020 +0330 + + [draw][docs] update to new terminology + + src/hb-draw.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) - Use lower case file name with #include - - I tried to cross compile harfbuzz for Windows and an error was generated because `DWrite_1.h` was not found. - This happened because the filesystem is case sensitive and for this reason that include file was not found. - The right name of the file to be used is `dwrite_1.h`, with all letters not capitalized: - https://docs.microsoft.com/en-us/windows/desktop/api/dwrite_1/ - I also verified in the installation of VS2017 with Windows Kit v10 and in that place it was also lower case. - So, in my opinion it should be better to change this. +commit 920dca4550f73f05d79e95ddf537054e2775f7e5 +Author: Ebrahim Byagowi +Date: Thu Jan 30 18:03:06 2020 +0330 - src/hb-directwrite.cc | 2 +- + [draw][docs] update to new terminlogy + + src/hb-draw.cc | 32 ++++++++++++++++---------------- + 1 file changed, 16 insertions(+), 16 deletions(-) + +commit 1632726c1fbcd49d8c27c03948859e80476b41bd +Author: Ebrahim Byagowi +Date: Thu Jan 30 16:48:34 2020 +0330 + + [draw] minor + + src/hb-draw.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit a4543d408b31376c38bab878b2f72d4323abc564 -Author: Carlo Bramini <30959007+carlo-bramini@users.noreply.github.com> -Date: Sun Jun 30 15:06:30 2019 +0200 +commit 92f43a99c685752416f216c22b6edb9d87ce5d35 +Author: ckitagawa +Date: Wed Jan 29 16:06:55 2020 -0500 - Empty DIRECTWRITE_LIBS - - Not used anymore since DWRITE is loaded dynamically. + [subset] COLR, simplify logic and use add_array - configure.ac | 2 +- + src/hb-ot-color-colr-table.hh | 15 ++++++--------- + 1 file changed, 6 insertions(+), 9 deletions(-) + +commit fba5128a9e9459de5b08367c96d05674aa1363a9 +Author: ckitagawa +Date: Wed Jan 29 10:24:55 2020 -0500 + + Fix build + + src/hb-ot-color-colr-table.hh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 601b6825b05f67354b48dd3629b95e0d8bf68a14 -Author: Carlo Bramini <30959007+carlo-bramini@users.noreply.github.com> -Date: Sun Jun 30 15:03:44 2019 +0200 +commit 7d542a5274d56229a72c30e53aecbae8ea938f4e +Author: ckitagawa +Date: Wed Jan 29 10:20:00 2020 -0500 - Dynamically load DWRITE - - Also checks if DWriteCreateFactory() has been executed successfully. + Refactor to two iterators - src/hb-directwrite.cc | 41 +++++++++++++++++++++++++++++++++-------- - 1 file changed, 33 insertions(+), 8 deletions(-) + src/hb-ot-color-colr-table.hh | 142 ++++++++++++--------- + src/hb-subset-plan.cc | 2 +- + .../TwemojiMozilla.subset.default.32,3299.ttf | Bin 0 -> 5264 bytes + test/api/test-subset-colr.c | 21 +++ + 4 files changed, 105 insertions(+), 60 deletions(-) -commit ad341d5f1624f4e30b2d0eb2a171054a973053b5 -Author: Behdad Esfahbod -Date: Fri Jun 28 16:00:37 2019 -0700 +commit 0aed54dca6fefbc26f466ace6c105881c536baa2 +Author: ckitagawa +Date: Fri Jan 24 15:51:06 2020 -0500 - [config] Fix CoreText build with NO_AAT + Use one-liner methods - src/hb-aat-layout.cc | 8 +++++--- - 1 file changed, 5 insertions(+), 3 deletions(-) + src/hb-ot-color-colr-table.hh | 18 ++++-------------- + 1 file changed, 4 insertions(+), 14 deletions(-) -commit 3f806673fbeacdbe1b31399394ccc26c773a794b -Author: Ebrahim Byagowi -Date: Sat Jun 29 00:00:00 2019 +0430 +commit 81c469eb62294666c27bcd82e4e6fcad742dcbf3 +Author: ckitagawa +Date: Fri Jan 24 15:49:25 2020 -0500 - Apply some minor improves on CFFIndex + Try to fix Wrange-loop-analysis - src/hb-ot-cff-common.hh | 38 +++++++++++++------------------------- - 1 file changed, 13 insertions(+), 25 deletions(-) + src/hb-ot-color-colr-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit ddd29e5594ccc9d0281e6da7373a1f115f6f6f3a -Author: Ebrahim Byagowi -Date: Fri Jun 28 23:44:14 2019 +0430 +commit 0d1ba94ac7910f0fc8232c539d4f6709cd2493fd +Author: ckitagawa +Date: Fri Jan 24 15:44:40 2020 -0500 - minor, reuse StructAtOffset logic in StructAtOffsetOrNull + Minor style fixes - src/hb-ot-cff-common.hh | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) + src/hb-ot-color-colr-table.hh | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) -commit 9db7ce73d7ac6566837cdd70d38c45f3aefd7769 -Author: Ebrahim Byagowi -Date: Fri Jun 28 23:11:52 2019 +0430 +commit 49b98e865007bbbfd5780b301a68daa7b3800ec3 +Author: ckitagawa +Date: Fri Jan 24 15:39:02 2020 -0500 - minor style improve in hb-cff-interp-common.hh + Fix nullptr de-reference failure if both blobs in a subset test are 0 in size - src/hb-cff-interp-common.hh | 91 +++++++++++++++------------------------------ - 1 file changed, 30 insertions(+), 61 deletions(-) + test/api/hb-subset-test.h | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) -commit 9a7b7bd9fc5bde7796ffdd997ee65cb33cbf6b29 +commit ed857c4680721d767ce9c60cf081ad0a1bcee8e6 +Author: ckitagawa +Date: Fri Jan 24 08:52:23 2020 -0500 + + [subset] Add COLR support + + src/hb-ot-color-colr-table.hh | 127 ++++++++++++++++++++- + src/hb-subset-plan.cc | 5 + + src/hb-subset.cc | 4 + + test/api/Makefile.am | 2 + + .../api/fonts/TwemojiMozilla.subset.default.32.ttf | Bin 0 -> 4660 bytes + .../fonts/TwemojiMozilla.subset.default.3297.ttf | Bin 0 -> 5068 bytes + test/api/fonts/TwemojiMozilla.subset.ttf | Bin 0 -> 5712 bytes + test/api/test-subset-colr.c | 99 ++++++++++++++++ + test/fuzzing/fonts/TwemojiMozilla.subset.ttf | Bin 0 -> 5712 bytes + test/subset/data/Makefile.am | 1 + + test/subset/data/Makefile.sources | 1 + + .../TwemojiMozilla.subset.default.32,3297,3299.ttf | Bin 0 -> 5624 bytes + .../colr/TwemojiMozilla.subset.default.32,3297.ttf | Bin 0 -> 5088 bytes + .../colr/TwemojiMozilla.subset.default.32,3299.ttf | Bin 0 -> 5264 bytes + .../colr/TwemojiMozilla.subset.default.32.ttf | Bin 0 -> 4660 bytes + .../TwemojiMozilla.subset.default.3297,3299.ttf | Bin 0 -> 5604 bytes + .../colr/TwemojiMozilla.subset.default.3297.ttf | Bin 0 -> 5068 bytes + .../colr/TwemojiMozilla.subset.default.3299.ttf | Bin 0 -> 5244 bytes + ....subset.drop-hints-retain-gids.32,3297,3299.ttf | Bin 0 -> 5604 bytes + ...zilla.subset.drop-hints-retain-gids.32,3297.ttf | Bin 0 -> 5084 bytes + ...zilla.subset.drop-hints-retain-gids.32,3299.ttf | Bin 0 -> 5264 bytes + ...ojiMozilla.subset.drop-hints-retain-gids.32.ttf | Bin 0 -> 4640 bytes + ...lla.subset.drop-hints-retain-gids.3297,3299.ttf | Bin 0 -> 5588 bytes + ...iMozilla.subset.drop-hints-retain-gids.3297.ttf | Bin 0 -> 5064 bytes + ...iMozilla.subset.drop-hints-retain-gids.3299.ttf | Bin 0 -> 5244 bytes + ...emojiMozilla.subset.drop-hints.32,3297,3299.ttf | Bin 0 -> 5604 bytes + .../TwemojiMozilla.subset.drop-hints.32,3297.ttf | Bin 0 -> 5068 bytes + .../TwemojiMozilla.subset.drop-hints.32,3299.ttf | Bin 0 -> 5244 bytes + .../colr/TwemojiMozilla.subset.drop-hints.32.ttf | Bin 0 -> 4640 bytes + .../TwemojiMozilla.subset.drop-hints.3297,3299.ttf | Bin 0 -> 5584 bytes + .../colr/TwemojiMozilla.subset.drop-hints.3297.ttf | Bin 0 -> 5048 bytes + .../colr/TwemojiMozilla.subset.drop-hints.3299.ttf | Bin 0 -> 5224 bytes + ...mojiMozilla.subset.retain-gids.32,3297,3299.ttf | Bin 0 -> 5624 bytes + .../TwemojiMozilla.subset.retain-gids.32,3297.ttf | Bin 0 -> 5104 bytes + .../TwemojiMozilla.subset.retain-gids.32,3299.ttf | Bin 0 -> 5284 bytes + .../colr/TwemojiMozilla.subset.retain-gids.32.ttf | Bin 0 -> 4660 bytes + ...TwemojiMozilla.subset.retain-gids.3297,3299.ttf | Bin 0 -> 5608 bytes + .../TwemojiMozilla.subset.retain-gids.3297.ttf | Bin 0 -> 5084 bytes + .../TwemojiMozilla.subset.retain-gids.3299.ttf | Bin 0 -> 5264 bytes + test/subset/data/fonts/TwemojiMozilla.subset.ttf | Bin 0 -> 5712 bytes + test/subset/data/tests/colr.tests | 17 +++ + 41 files changed, 255 insertions(+), 1 deletion(-) + +commit d106900bfd61ed45fbd4ffd93875d167d86e01e4 +Author: Ebrahim Byagowi +Date: Tue Jan 28 15:26:13 2020 +0330 + + [draw][glyf] Implement quadratic to cubic call translation + + src/hb-draw.cc | 7 +----- + src/hb-draw.h | 3 +++ + src/hb-ot-glyf-table.hh | 58 ++++++++++++++++++++++++++++++++++++++++++++----- + test/api/test-draw.c | 27 +++++++++++++++++++++-- + 4 files changed, 81 insertions(+), 14 deletions(-) + +commit 74fdcdcac8bf0467c50ddf6793b147e93b790a52 +Author: Ebrahim Byagowi +Date: Tue Jan 28 13:45:22 2020 +0330 + + [draw] Rename conic_to to quadratic_to + + docs/harfbuzz-sections.txt | 4 ++-- + src/hb-draw.cc | 16 ++++++++-------- + src/hb-draw.h | 10 +++++----- + src/hb-draw.hh | 2 +- + src/hb-ot-glyf-table.hh | 4 ++-- + src/main.cc | 8 ++++---- + test/api/test-draw.c | 8 ++++---- + 7 files changed, 26 insertions(+), 26 deletions(-) + +commit ac81e94016be3fb638c16bae38bd61cc131104ac +Author: Ebrahim Byagowi +Date: Tue Jan 28 12:34:47 2020 +0330 + + Rename hb_outline_decompose to hb_font_draw_glyph and hb_outline_decompose_funcs_t to hb_draw_funcs_t + + docs/harfbuzz-sections.txt | 38 ++++++------- + src/Makefile.sources | 6 +-- + src/harfbuzz.cc | 2 +- + src/hb-config.hh | 2 +- + src/{hb-outline.cc => hb-draw.cc} | 91 +++++++++++++++---------------- + src/hb-draw.h | 87 ++++++++++++++++++++++++++++++ + src/{hb-outline.hh => hb-draw.hh} | 18 +++---- + src/hb-font.h | 5 ++ + src/hb-ot-cff1-table.cc | 12 ++--- + src/hb-ot-cff1-table.hh | 2 +- + src/hb-ot-cff2-table.cc | 8 +-- + src/hb-ot-cff2-table.hh | 2 +- + src/hb-ot-glyf-table.hh | 4 +- + src/hb-outline.h | 92 -------------------------------- + src/hb.h | 2 +- + src/main.cc | 26 ++++----- + test/api/Makefile.am | 2 +- + test/api/{test-outline.c => test-draw.c} | 70 ++++++++++++------------ + test/api/test-ot-face.c | 6 +-- + 19 files changed, 238 insertions(+), 237 deletions(-) + +commit cf5f94675669154ab84695e5b24a1d54d2ad8c5e +Author: Ebrahim Byagowi +Date: Mon Jan 27 23:38:39 2020 +0330 + + [outline] use hb_object_is_immutable instead comparing to Null + + src/hb-outline.cc | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 981125aa2adbe4f513d3ecf357459e5bcfd06d0a Author: Ebrahim Byagowi -Date: Fri Jun 28 22:53:51 2019 +0430 +Date: Sat Jan 25 21:31:36 2020 +0330 - style fix for pylint complain + Rename hb_ot_glyph_* to hb_outline_* - src/gen-emoji-table.py | 20 ++++++++++---------- - 1 file changed, 10 insertions(+), 10 deletions(-) + docs/harfbuzz-sections.txt | 38 +++++----- + src/Makefile.sources | 6 +- + src/harfbuzz.cc | 2 +- + src/hb-config.hh | 2 +- + src/hb-ot-cff1-table.cc | 12 ++-- + src/hb-ot-cff1-table.hh | 2 +- + src/hb-ot-cff2-table.cc | 8 +-- + src/hb-ot-cff2-table.hh | 2 +- + src/hb-ot-glyf-table.hh | 4 +- + src/hb-ot-glyph.h | 92 ------------------------ + src/hb-ot.h | 1 - + src/{hb-ot-glyph.cc => hb-outline.cc} | 88 +++++++++++------------ + src/hb-outline.h | 92 ++++++++++++++++++++++++ + src/{hb-ot-glyph.hh => hb-outline.hh} | 18 ++--- + src/hb.h | 1 + + src/main.cc | 26 +++---- + test/api/Makefile.am | 2 +- + test/api/test-ot-face.c | 6 +- + test/api/{test-ot-glyph.c => test-outline.c} | 104 +++++++++++++-------------- + 19 files changed, 253 insertions(+), 253 deletions(-) -commit 8d36ef50c8712be476572514d73b7bddf43e5951 -Author: Behdad Esfahbod -Date: Thu Jun 27 14:48:10 2019 -0700 +commit 30857089a59b673b80b1fbaafe8ed65ae21ed472 +Author: Ebrahim Byagowi +Date: Mon Jan 27 21:16:57 2020 +0330 - [config] Add links + [test][glyph] add subcomponent scale test - CONFIG.md | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) + test/api/test-ot-glyph.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) -commit f53590971c5326dd15f4296764bfd1255ec0506a -Author: Behdad Esfahbod -Date: Thu Jun 27 13:42:51 2019 -0700 +commit d809aca8d05c64c0e871923b36bdd3b17a85358d +Author: Ebrahim Byagowi +Date: Mon Jan 27 20:52:56 2020 +0330 - [test] Make Unicode tests strict against internal UCD + [test] test for not applying morx on horizontal runs if gsub exists - https://github.com/harfbuzz/harfbuzz/pull/1799 + https://github.com/harfbuzz/harfbuzz/pull/2130 - test/api/test-unicode.c | 30 ++++++++++++++++++++++-------- - 1 file changed, 22 insertions(+), 8 deletions(-) + test/shaping/data/in-house/tests/macos.tests | 2 ++ + 1 file changed, 2 insertions(+) -commit d42264f151a61a4a77e5d5712e535fc6e2daf338 -Author: David Corbett -Date: Wed Jun 26 21:10:11 2019 -0400 +commit cd7b46ca1569850929974ef146aa1ca083c2557d +Author: Evgeniy Reizner +Date: Sun Jan 26 20:46:19 2020 +0200 - Test at least one character per Unicode version + Use correct return type in _unsafe_to_break_find_min_cluster. - test/api/test-unicode.c | 142 ++++++++++++++++++++++++++++++++++++++++++++++-- - 1 file changed, 138 insertions(+), 4 deletions(-) + src/hb-buffer.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 7185bd6ffb4dd8c0efebdab5b930e62c5695e3ab -Merge: cd65305b 8341c0b3 +commit 1438bae7a5a2c7cc631e041bcf75745578935014 Author: Ebrahim Byagowi -Date: Thu Jun 27 22:09:28 2019 +0430 +Date: Sun Jan 26 23:48:30 2020 +0330 - Merge pull request #1800 from harfbuzz/harfbuzz/cffnull_fix2 - - [CFF] fix for Subrs null ptr access + [ot-glyph] Add fontkit non variables fonts tests -commit 8341c0b304ee3bb0b7d150bcfb42a8b9e6448687 -Author: Michiharu Ariza -Date: Thu Jun 27 08:43:31 2019 -0700 + test/api/fonts/Mada-VF.ttf | Bin 0 -> 120384 bytes + .../fonts/NotoSansCJKkr-Regular-subset-colon.ttf | Bin 0 -> 2084 bytes + test/api/fonts/OpenSans-Regular.ttf | Bin 0 -> 217360 bytes + test/api/fonts/SourceSansPro-Regular.otf | Bin 0 -> 220852 bytes + test/api/test-ot-glyph.c | 113 ++++++++++++++++++++- + 5 files changed, 112 insertions(+), 1 deletion(-) - add test case file +commit 9bb1c79a2c41b85ab48ef0086a412e08ce18acd8 +Author: Ebrahim Byagowi +Date: Sun Jan 26 22:10:47 2020 +0330 - ...z-testcase-minimized-harfbuzz_fuzzer-5093685255077888 | Bin 0 -> 1160 bytes - 1 file changed, 0 insertions(+), 0 deletions(-) + [ot-glyph][test] Avoid sprintf use -commit 01832fd16b605971466fc3b174cb932787ef4bfb -Author: Michiharu Ariza -Date: Wed Jun 26 15:58:38 2019 -0700 + test/api/test-ot-glyph.c | 160 ++++++++++++++++++++++++++++++++++------------- + 1 file changed, 116 insertions(+), 44 deletions(-) - alternate fix for https://crbug.com/971933 +commit 99f8e52d5e32b837648550b5cf09267ea7efcb48 +Author: Ebrahim Byagowi +Date: Sun Jan 26 17:02:11 2020 +0330 - src/hb-cff-interp-cs-common.hh | 6 +++--- - src/hb-cff1-interp-cs.hh | 2 +- - src/hb-cff2-interp-cs.hh | 2 +- - 3 files changed, 5 insertions(+), 5 deletions(-) + [ot-glyph] Add fontkits's variations toSVG tests -commit cd65305b059e7495f4f993d25cfda4d88781589b -Author: Behdad Esfahbod -Date: Wed Jun 26 14:57:48 2019 -0700 + test/api/fonts/AdobeVFPrototype-Subset.otf | Bin 0 -> 7096 bytes + test/api/fonts/TestGVARFour.ttf | Bin 0 -> 3204 bytes + test/api/fonts/TestGVAROne.ttf | Bin 0 -> 14312 bytes + test/api/fonts/TestGVARThree.ttf | Bin 0 -> 14336 bytes + test/api/fonts/TestGVARTwo.ttf | Bin 0 -> 15668 bytes + test/api/test-ot-glyph.c | 246 ++++++++++++++++++++++++++++- + 6 files changed, 244 insertions(+), 2 deletions(-) - [config] Don't disable emoji sequences in HB_TINY - - It makes sense to disable this code these if editing is not needed. - However, this is also necessary to correctly display emoji sequences - in right-to-left direction. For that reason, don't auto-disable it. +commit e44982f5485571e852810cad7e55eca5c14e3758 +Author: Ebrahim Byagowi +Date: Sun Jan 26 14:30:03 2020 +0330 - src/hb-config.hh | 1 - - src/hb-ot-shape.cc | 2 +- - src/hb-unicode.cc | 2 +- - 3 files changed, 2 insertions(+), 3 deletions(-) + [ot-glyph] Add ttf-parser's outline_glyph tests -commit 7298716a3cfbdabedd15960404623317a64db3ae -Author: Behdad Esfahbod -Date: Wed Jun 26 14:51:17 2019 -0700 + test/api/fonts/README | 2 + + test/api/fonts/glyphs.ttf | Bin 0 -> 808 bytes + test/api/test-ot-glyph.c | 92 ++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 94 insertions(+) - [config] Compile out modified combining-class if HB_NO_OT_SHAPE +commit 5440313924172e155e34391f033f5e6c5e2390b3 +Author: Ebrahim Byagowi +Date: Sun Jan 26 00:07:28 2020 +0330 + + Update COPYING - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + 2020 update and add my name for years had more or less considerable contributions - src/hb-unicode.cc | 2 ++ - 1 file changed, 2 insertions(+) + COPYING | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) -commit 1cdd0fa60d9a6aaddc20e646d294d642e2db9be4 -Author: Behdad Esfahbod -Date: Wed Jun 26 14:49:15 2019 -0700 +commit cd266e4f3d3c8ef338c007a93a2ae356467d7953 +Author: Ebrahim Byagowi +Date: Sat Jan 25 21:33:38 2020 +0330 - [emoji] Port generator to packtab + minor - src/gen-emoji-table.py | 18 ++++-- - src/hb-unicode-emoji-table.hh | 126 ++++++++++++++++-------------------------- - src/hb-unicode.cc | 5 +- - 3 files changed, 60 insertions(+), 89 deletions(-) + src/hb-ot-glyph.hh | 3 --- + 1 file changed, 3 deletions(-) -commit 5130c90ac0173c542b550049c93738ab5de84bb9 -Author: Behdad Esfahbod -Date: Wed Jun 26 14:29:39 2019 -0700 +commit f9070cfef8b0bb3e9dc5a934d24ef6348eb19880 +Author: Ebrahim Byagowi +Date: Fri Jan 24 22:19:03 2020 +0330 - [config] Add HB_NO_EMOJI - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + Run morx if run is horizontal or GSUB doesn't exist - src/hb-config.hh | 1 + - src/hb-ot-shape.cc | 2 ++ - src/hb-unicode.cc | 2 ++ - 3 files changed, 5 insertions(+) + src/hb-ot-shape.cc | 13 +++++++++++-- + 1 file changed, 11 insertions(+), 2 deletions(-) -commit 9d5b5348c7ca1e39faa9e197fdebfb8f5d3aeece -Author: Behdad Esfahbod -Date: Wed Jun 26 13:58:40 2019 -0700 +commit 58976972508d6f6d564cb3305bbb6f706bd1ba33 +Author: Ebrahim Byagowi +Date: Sat Jan 25 00:32:46 2020 +0330 - [config] Add HB_NO_SHAPER + [test] Increase subset timeout - Don't know who would want when why. But makes sense to have. + No random timeout please - src/hb-shaper-list.hh | 6 ++++++ - src/hb-shaper.cc | 2 ++ - 2 files changed, 8 insertions(+) + test/fuzzing/run-subset-fuzzer-tests.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 8fe15485cbc2f56adb29d4d5f0c3957869bd0e1a -Author: Behdad Esfahbod -Date: Wed Jun 26 13:49:42 2019 -0700 +commit d1830437c92caf1ba3869c9ddae8acb5f8f96739 +Author: Ebrahim Byagowi +Date: Sat Jan 25 00:09:47 2020 +0330 - [config] Add HB_NO_OT_TAG + [tests] Apply expected results of Mplus1p-Regular subset - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + Related to #2131 - src/hb-config.hh | 1 + - src/hb-ot-layout.cc | 4 ++++ - src/hb-ot-tag.cc | 5 +++++ - src/hb-uniscribe.cc | 4 ++++ - 4 files changed, 14 insertions(+) - -commit 7dcf8e126ecf52c67f59745e04d21df68b1a6992 -Author: Behdad Esfahbod -Date: Wed Jun 26 13:44:10 2019 -0700 + .../japanese/Mplus1p-Regular.default.25771.ttf | Bin 1976 -> 1824 bytes + .../japanese/Mplus1p-Regular.drop-hints.25771.ttf | Bin 1248 -> 1096 bytes + 2 files changed, 0 insertions(+), 0 deletions(-) - [config] Fix build with HB_NO_OT_LAYOUT +commit 8e0898080faf6e8aeee0b1e41e842fe7611d9c44 +Author: Ebrahim Byagowi +Date: Fri Jan 24 23:39:44 2020 +0330 - src/hb-ot-face-table-list.hh | 2 ++ - src/hb-ot-layout-gpos-table.hh | 3 ++- - src/hb-ot-layout-gsub-table.hh | 5 +++-- - src/hb-ot-layout-gsubgpos.hh | 8 +++++++- - 4 files changed, 14 insertions(+), 4 deletions(-) + [sbix] minor style fixes -commit 2804790bceb9398cc9b668ca63f5aa9ffe29beeb -Author: Behdad Esfahbod -Date: Wed Jun 26 13:38:14 2019 -0700 + src/hb-ot-color-sbix-table.hh | 55 +++++++++++++++++++++++-------------------- + 1 file changed, 29 insertions(+), 26 deletions(-) - [config] Add dependency +commit 36a5c042d701f19f574442d987b1c3dcf7d5943b +Author: Qunxin Liu +Date: Tue Jan 21 13:37:28 2020 -0800 + + [subset] Add "--name-languages" and "--name-legacy" options + Make name table subsetting consistent with fontTools + + src/hb-ot-name-table.hh | 11 ++++ + src/hb-subset-input.cc | 23 ++++++++ + src/hb-subset-input.hh | 2 + + src/hb-subset-plan.cc | 3 ++ + src/hb-subset-plan.hh | 4 ++ + src/hb-subset.h | 9 ++++ + test/api/hb-subset-test.h | 5 ++ + .../Comfortaa-Regular-new.default.61,62,63.ttf | Bin 7460 -> 7392 bytes + .../basics/Comfortaa-Regular-new.default.61,63.ttf | Bin 7104 -> 7036 bytes + .../basics/Comfortaa-Regular-new.default.61.ttf | Bin 6752 -> 6684 bytes + .../basics/Comfortaa-Regular-new.default.62.ttf | Bin 6696 -> 6628 bytes + .../basics/Comfortaa-Regular-new.default.63.ttf | Bin 6676 -> 6608 bytes + ...aa-Regular-new.default.retain-all-codepoint.ttf | Bin 182944 -> 182876 bytes + ...Regular-new.drop-hints-retain-gids.61,62,63.ttf | Bin 4912 -> 4844 bytes + ...aa-Regular-new.drop-hints-retain-gids.61,63.ttf | Bin 4620 -> 4552 bytes + ...ortaa-Regular-new.drop-hints-retain-gids.61.ttf | Bin 4056 -> 3988 bytes + ...ortaa-Regular-new.drop-hints-retain-gids.62.ttf | Bin 4296 -> 4228 bytes + ...ortaa-Regular-new.drop-hints-retain-gids.63.ttf | Bin 4304 -> 4236 bytes + ...drop-hints-retain-gids.retain-all-codepoint.ttf | Bin 151740 -> 151672 bytes + .../Comfortaa-Regular-new.drop-hints.61,62,63.ttf | Bin 2920 -> 2852 bytes + .../Comfortaa-Regular-new.drop-hints.61,63.ttf | Bin 2620 -> 2552 bytes + .../basics/Comfortaa-Regular-new.drop-hints.61.ttf | Bin 2308 -> 2240 bytes + .../basics/Comfortaa-Regular-new.drop-hints.62.ttf | Bin 2296 -> 2228 bytes + .../basics/Comfortaa-Regular-new.drop-hints.63.ttf | Bin 2296 -> 2228 bytes + ...Regular-new.drop-hints.retain-all-codepoint.ttf | Bin 151676 -> 151608 bytes + .../Comfortaa-Regular-new.name-ids.61,62,63.ttf | Bin 7204 -> 7132 bytes + .../Comfortaa-Regular-new.name-ids.61,63.ttf | Bin 6848 -> 6776 bytes + .../basics/Comfortaa-Regular-new.name-ids.61.ttf | Bin 6496 -> 6424 bytes + .../basics/Comfortaa-Regular-new.name-ids.62.ttf | Bin 6440 -> 6368 bytes + .../basics/Comfortaa-Regular-new.name-ids.63.ttf | Bin 6420 -> 6348 bytes + ...a-Regular-new.name-ids.retain-all-codepoint.ttf | Bin 182688 -> 182616 bytes + ...mfortaa-Regular-new.name-languages.61,62,63.ttf | Bin 0 -> 7392 bytes + .../Comfortaa-Regular-new.name-languages.61,63.ttf | Bin 0 -> 7036 bytes + .../Comfortaa-Regular-new.name-languages.61.ttf | Bin 0 -> 6684 bytes + .../Comfortaa-Regular-new.name-languages.62.ttf | Bin 0 -> 6628 bytes + .../Comfortaa-Regular-new.name-languages.63.ttf | Bin 0 -> 6608 bytes + ...lar-new.name-languages.retain-all-codepoint.ttf | Bin 0 -> 182876 bytes + .../Comfortaa-Regular-new.name-legacy.61,62,63.ttf | Bin 0 -> 7392 bytes + .../Comfortaa-Regular-new.name-legacy.61,63.ttf | Bin 0 -> 7036 bytes + .../Comfortaa-Regular-new.name-legacy.61.ttf | Bin 0 -> 6684 bytes + .../Comfortaa-Regular-new.name-legacy.62.ttf | Bin 0 -> 6628 bytes + .../Comfortaa-Regular-new.name-legacy.63.ttf | Bin 0 -> 6608 bytes + ...egular-new.name-legacy.retain-all-codepoint.ttf | Bin 0 -> 182876 bytes + .../Comfortaa-Regular-new.retain-gids.61,62,63.ttf | Bin 9452 -> 9384 bytes + .../Comfortaa-Regular-new.retain-gids.61,63.ttf | Bin 9104 -> 9036 bytes + .../Comfortaa-Regular-new.retain-gids.61.ttf | Bin 8500 -> 8432 bytes + .../Comfortaa-Regular-new.retain-gids.62.ttf | Bin 8696 -> 8628 bytes + .../Comfortaa-Regular-new.retain-gids.63.ttf | Bin 8684 -> 8616 bytes + ...egular-new.retain-gids.retain-all-codepoint.ttf | Bin 183008 -> 182940 bytes + .../Roboto-Regular.abc.name-languages.61,62,63.ttf | Bin 0 -> 2168 bytes + .../Roboto-Regular.abc.name-languages.61,63.ttf | Bin 0 -> 1988 bytes + .../Roboto-Regular.abc.name-languages.61.ttf | Bin 0 -> 1792 bytes + .../Roboto-Regular.abc.name-languages.62.ttf | Bin 0 -> 1740 bytes + .../Roboto-Regular.abc.name-languages.63.ttf | Bin 0 -> 1716 bytes + ...lar.abc.name-languages.retain-all-codepoint.ttf | Bin 0 -> 2168 bytes + .../Roboto-Regular.abc.name-legacy.61,62,63.ttf | Bin 0 -> 2168 bytes + .../Roboto-Regular.abc.name-legacy.61,63.ttf | Bin 0 -> 1988 bytes + .../basics/Roboto-Regular.abc.name-legacy.61.ttf | Bin 0 -> 1792 bytes + .../basics/Roboto-Regular.abc.name-legacy.62.ttf | Bin 0 -> 1740 bytes + .../basics/Roboto-Regular.abc.name-legacy.63.ttf | Bin 0 -> 1716 bytes + ...egular.abc.name-legacy.retain-all-codepoint.ttf | Bin 0 -> 2168 bytes + ...eSansPro-Regular.default.1FC,21,41,20,62,63.otf | Bin 2384 -> 2180 bytes + .../SourceSansPro-Regular.default.61,62,63.otf | Bin 2096 -> 1892 bytes + ...ourceSansPro-Regular.default.D7,D8,D9,DA,DE.otf | Bin 2212 -> 2008 bytes + ...subroutinize-retain-gids.1FC,21,41,20,62,63.otf | Bin 20000 -> 19796 bytes + ...Regular.desubroutinize-retain-gids.61,62,63.otf | Bin 2196 -> 1992 bytes + ...r.desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf | Bin 30412 -> 30208 bytes + ...o-Regular.desubroutinize.1FC,21,41,20,62,63.otf | Bin 2240 -> 2036 bytes + ...urceSansPro-Regular.desubroutinize.61,62,63.otf | Bin 2000 -> 1796 bytes + ...nsPro-Regular.desubroutinize.D7,D8,D9,DA,DE.otf | Bin 2196 -> 1992 bytes + ...subroutinize-retain-gids.1FC,21,41,20,62,63.otf | Bin 19840 -> 19636 bytes + ...p-hints-desubroutinize-retain-gids.61,62,63.otf | Bin 2072 -> 1868 bytes + ...s-desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf | Bin 30264 -> 30060 bytes + ...rop-hints-desubroutinize.1FC,21,41,20,62,63.otf | Bin 2080 -> 1876 bytes + ...-Regular.drop-hints-desubroutinize.61,62,63.otf | Bin 1876 -> 1672 bytes + ...ar.drop-hints-desubroutinize.D7,D8,D9,DA,DE.otf | Bin 2048 -> 1844 bytes + ...r.drop-hints-retain-gids.1FC,21,41,20,62,63.otf | Bin 19932 -> 19728 bytes + ...Pro-Regular.drop-hints-retain-gids.61,62,63.otf | Bin 2108 -> 1904 bytes + ...gular.drop-hints-retain-gids.D7,D8,D9,DA,DE.otf | Bin 30276 -> 30072 bytes + ...nsPro-Regular.drop-hints.1FC,21,41,20,62,63.otf | Bin 2164 -> 1960 bytes + .../SourceSansPro-Regular.drop-hints.61,62,63.otf | Bin 1940 -> 1736 bytes + ...ceSansPro-Regular.drop-hints.D7,D8,D9,DA,DE.otf | Bin 2064 -> 1860 bytes + ...sPro-Regular.retain-gids.1FC,21,41,20,62,63.otf | Bin 20152 -> 19948 bytes + .../SourceSansPro-Regular.retain-gids.61,62,63.otf | Bin 2264 -> 2060 bytes + ...eSansPro-Regular.retain-gids.D7,D8,D9,DA,DE.otf | Bin 30428 -> 30224 bytes + .../Roboto-Regular.default.1FC,21,41,20,62,63.ttf | Bin 3164 -> 2984 bytes + .../full-font/Roboto-Regular.default.61,62,63.ttf | Bin 2760 -> 2580 bytes + .../Roboto-Regular.default.D7,D8,D9,DA,DE.ttf | Bin 3124 -> 2944 bytes + ...oboto-Regular.drop-hints.1FC,21,41,20,62,63.ttf | Bin 1616 -> 1436 bytes + .../Roboto-Regular.drop-hints.61,62,63.ttf | Bin 1408 -> 1228 bytes + .../Roboto-Regular.drop-hints.D7,D8,D9,DA,DE.ttf | Bin 1644 -> 1464 bytes + ...ifVariable-Roman.default.1FC,21,41,20,62,63.ttf | Bin 4132 -> 3572 bytes + .../SourceSerifVariable-Roman.default.61,62,63.ttf | Bin 4100 -> 3540 bytes + ...eSerifVariable-Roman.default.D7,D8,D9,DA,DE.ttf | Bin 4592 -> 4032 bytes + ...ariable-Roman.drop-hints.1FC,21,41,20,62,63.ttf | Bin 4132 -> 3572 bytes + ...urceSerifVariable-Roman.drop-hints.61,62,63.ttf | Bin 4100 -> 3540 bytes + ...rifVariable-Roman.drop-hints.D7,D8,D9,DA,DE.ttf | Bin 4592 -> 4032 bytes + .../Mplus1p-Regular.default.1D715,1D7D8,41,42.ttf | Bin 2260 -> 2108 bytes + ...gular.default.3042,3044,3046,3048,304A,304B.ttf | Bin 2684 -> 2532 bytes + ...gular.default.3042,3044,3046,73E0,5EA6,8F38.ttf | Bin 2928 -> 2776 bytes + .../Mplus1p-Regular.default.61,63,65,6B.ttf | Bin 2228 -> 2076 bytes + ...gular.default.660E,6975,73E0,5EA6,8F38,6E05.ttf | Bin 3224 -> 3072 bytes + .../japanese/Mplus1p-Regular.default.660E.ttf | Bin 1968 -> 1816 bytes + ...plus1p-Regular.drop-hints.1D715,1D7D8,41,42.ttf | Bin 1532 -> 1380 bytes + ...ar.drop-hints.3042,3044,3046,3048,304A,304B.ttf | Bin 1956 -> 1804 bytes + ...ar.drop-hints.3042,3044,3046,73E0,5EA6,8F38.ttf | Bin 2200 -> 2048 bytes + .../Mplus1p-Regular.drop-hints.61,63,65,6B.ttf | Bin 1500 -> 1348 bytes + ...ar.drop-hints.660E,6975,73E0,5EA6,8F38,6E05.ttf | Bin 2496 -> 2344 bytes + .../japanese/Mplus1p-Regular.drop-hints.660E.ttf | Bin 1240 -> 1088 bytes + test/subset/data/profiles/name-languages.txt | 1 + + test/subset/data/profiles/name-legacy.txt | 1 + + test/subset/data/tests/basics.tests | 2 + + test/subset/generate-expected-outputs.py | 6 +-- + util/options-subset.cc | 58 +++++++++++++++++++++ + 114 files changed, 121 insertions(+), 4 deletions(-) + +commit b7762c70680324fca0c1ae26ad3b7f432c0c990e +Author: Ebrahim Byagowi +Date: Fri Jan 24 21:20:07 2020 +0330 + + Disable hb_ot_glyph_decompose in HB_TINY - src/hb-ot-shape.cc | 4 ++++ - 1 file changed, 4 insertions(+) + src/hb-config.hh | 1 + + src/hb-ot-glyph.cc | 2 +- + src/main.cc | 5 +++++ + 3 files changed, 7 insertions(+), 1 deletion(-) -commit b0fd16eec62dea29d984bab879064ae9d91afdfc -Author: Behdad Esfahbod -Date: Wed Jun 26 13:31:51 2019 -0700 +commit 0e4b2676bdffeef3cb79b235bc9624f2a49dccad +Author: ckitagawa-work <59700018+ckitagawa-work@users.noreply.github.com> +Date: Fri Jan 24 12:16:08 2020 -0500 - [config] Add dependency + [subset] sbix fix missed offset is_null() check - src/hb-config.hh | 4 ++++ - 1 file changed, 4 insertions(+) + src/hb-ot-color-sbix-table.hh | 9 ++++++--- + ...testcase-minimized-hb-subset-fuzzer-5747280156295168 | Bin 0 -> 98811 bytes + 2 files changed, 6 insertions(+), 3 deletions(-) -commit 12092a46d8826eec5dcf69e7817921380e4bc507 -Author: Behdad Esfahbod -Date: Wed Jun 26 13:31:01 2019 -0700 +commit 5532374f61284a254d5b2a8de9472c64f138c854 +Author: Ebrahim Byagowi +Date: Thu Jan 23 20:27:21 2020 +0330 - [config] Rename HB_NO_SHAPE_AAT to HB_NO_AAT_SHAPE + [ot-glyph] Add a test for #2053 - src/hb-aat-map.cc | 2 +- - src/hb-config.hh | 2 +- - src/hb-ot-kern-table.hh | 14 +++++++------- - src/hb-ot-layout.cc | 2 +- - src/hb-ot-shape.cc | 36 ++++++++++++++++++------------------ - src/hb-ot-shape.hh | 8 ++++---- - 6 files changed, 32 insertions(+), 32 deletions(-) + test/api/fonts/README | 2 ++ + test/api/fonts/RanaKufi-Regular.subset.otf | Bin 0 -> 2260 bytes + test/api/test-ot-glyph.c | 26 ++++++++++++++++++++++++++ + 3 files changed, 28 insertions(+) -commit bb4bbe617d3878ca7e5e359ada493c68ec7f0a90 -Author: Behdad Esfahbod -Date: Wed Jun 26 13:29:58 2019 -0700 +commit f7187e90d2ec703f8f99f94077c5e449541c0462 +Author: Ebrahim Byagowi +Date: Fri Jan 24 20:22:27 2020 +0330 - [config] Add HB_NO_OT_LAYOUT + [cmake] Don't build src/main - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + Closes #2108 - src/hb-config.hh | 1 + - src/hb-ot-layout.cc | 7 +++++++ - src/hb-ot-map.cc | 7 +++++++ - 3 files changed, 15 insertions(+) + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit ab40a2feecf53d2ef787b7785132bf57e5bdcff9 -Author: Behdad Esfahbod -Date: Wed Jun 26 13:25:02 2019 -0700 +commit 1a6d53d3c05ee5bce7bd3e2a86471a84377d21c0 +Author: Ebrahim Byagowi +Date: Fri Jan 24 20:00:23 2020 +0330 - [config] Enable HB_NO_OT_FONT in HB_NO_OT + [ci] Increase msan and fedora-O0 bots subset fuzzer timeout - CONFIG.md | 4 ++-- - src/hb-config.hh | 1 + - 2 files changed, 3 insertions(+), 2 deletions(-) + .circleci/config.yml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit 7aad53657eb23264f658711a71da3e50f2264455 -Author: Behdad Esfahbod -Date: Wed Jun 26 13:21:03 2019 -0700 +commit 2d14735588e8a7a22e2c9801d70374835a058898 +Author: Ebrahim Byagowi +Date: Fri Jan 24 19:41:26 2020 +0330 + + [src/main] separate the places use private API, minor + + src/main.cc | 191 +++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 100 insertions(+), 91 deletions(-) + +commit 23277beef968aae8639f18f913eac8c69d323478 +Author: Ebrahim Byagowi +Date: Fri Jan 24 18:49:48 2020 +0330 + + Fold src/test-ot-glyph and src/test-ot-color into src/main + + src/Makefile.am | 10 -- + src/main.cc | 305 ++++++++++++++++++++++++++++++++++++++++++-- + src/test-ot-color.cc | 347 --------------------------------------------------- + src/test-ot-glyph.cc | 143 --------------------- + 4 files changed, 297 insertions(+), 508 deletions(-) + +commit b72337e57e791dd7f043a910273c0b433922d8e2 +Author: Ebrahim Byagowi +Date: Thu Jan 23 21:23:13 2020 +0330 + + [test] Adopt test-ot-color with ot-glyph and remove freetype/cairo dependecy + + src/Makefile.am | 8 +- + src/test-ot-color.cc | 237 +++++++++++++++++++++++++-------------------------- + 2 files changed, 120 insertions(+), 125 deletions(-) + +commit e171beeb5f3f26dee84373b4db223512675f5837 +Author: Ebrahim Byagowi +Date: Fri Jan 24 19:51:21 2020 +0330 + + Revert "[subset] Add "--name-languages" and "--name-legacy" options" + + Causes tests failures, please reapply when tests are fixed, thanks. + + This reverts commit fd85818b5b85fb0ad2db71c60e94ca0689d38bca. + + src/hb-ot-name-table.hh | 11 ---- + src/hb-subset-input.cc | 23 -------- + src/hb-subset-input.hh | 2 - + src/hb-subset-plan.cc | 3 -- + src/hb-subset-plan.hh | 4 -- + src/hb-subset.h | 9 ---- + test/api/hb-subset-test.h | 5 -- + .../Comfortaa-Regular-new.default.61,62,63.ttf | Bin 7392 -> 7460 bytes + .../basics/Comfortaa-Regular-new.default.61,63.ttf | Bin 7036 -> 7104 bytes + .../basics/Comfortaa-Regular-new.default.61.ttf | Bin 6684 -> 6752 bytes + .../basics/Comfortaa-Regular-new.default.62.ttf | Bin 6628 -> 6696 bytes + .../basics/Comfortaa-Regular-new.default.63.ttf | Bin 6608 -> 6676 bytes + ...aa-Regular-new.default.retain-all-codepoint.ttf | Bin 182876 -> 182944 bytes + ...Regular-new.drop-hints-retain-gids.61,62,63.ttf | Bin 4844 -> 4912 bytes + ...aa-Regular-new.drop-hints-retain-gids.61,63.ttf | Bin 4552 -> 4620 bytes + ...ortaa-Regular-new.drop-hints-retain-gids.61.ttf | Bin 3988 -> 4056 bytes + ...ortaa-Regular-new.drop-hints-retain-gids.62.ttf | Bin 4228 -> 4296 bytes + ...ortaa-Regular-new.drop-hints-retain-gids.63.ttf | Bin 4236 -> 4304 bytes + ...drop-hints-retain-gids.retain-all-codepoint.ttf | Bin 151672 -> 151740 bytes + .../Comfortaa-Regular-new.drop-hints.61,62,63.ttf | Bin 2852 -> 2920 bytes + .../Comfortaa-Regular-new.drop-hints.61,63.ttf | Bin 2552 -> 2620 bytes + .../basics/Comfortaa-Regular-new.drop-hints.61.ttf | Bin 2240 -> 2308 bytes + .../basics/Comfortaa-Regular-new.drop-hints.62.ttf | Bin 2228 -> 2296 bytes + .../basics/Comfortaa-Regular-new.drop-hints.63.ttf | Bin 2228 -> 2296 bytes + ...Regular-new.drop-hints.retain-all-codepoint.ttf | Bin 151608 -> 151676 bytes + .../Comfortaa-Regular-new.name-ids.61,62,63.ttf | Bin 7132 -> 7204 bytes + .../Comfortaa-Regular-new.name-ids.61,63.ttf | Bin 6776 -> 6848 bytes + .../basics/Comfortaa-Regular-new.name-ids.61.ttf | Bin 6424 -> 6496 bytes + .../basics/Comfortaa-Regular-new.name-ids.62.ttf | Bin 6368 -> 6440 bytes + .../basics/Comfortaa-Regular-new.name-ids.63.ttf | Bin 6348 -> 6420 bytes + ...a-Regular-new.name-ids.retain-all-codepoint.ttf | Bin 182616 -> 182688 bytes + ...mfortaa-Regular-new.name-languages.61,62,63.ttf | Bin 7392 -> 0 bytes + .../Comfortaa-Regular-new.name-languages.61,63.ttf | Bin 7036 -> 0 bytes + .../Comfortaa-Regular-new.name-languages.61.ttf | Bin 6684 -> 0 bytes + .../Comfortaa-Regular-new.name-languages.62.ttf | Bin 6628 -> 0 bytes + .../Comfortaa-Regular-new.name-languages.63.ttf | Bin 6608 -> 0 bytes + ...lar-new.name-languages.retain-all-codepoint.ttf | Bin 182876 -> 0 bytes + .../Comfortaa-Regular-new.name-legacy.61,62,63.ttf | Bin 7392 -> 0 bytes + .../Comfortaa-Regular-new.name-legacy.61,63.ttf | Bin 7036 -> 0 bytes + .../Comfortaa-Regular-new.name-legacy.61.ttf | Bin 6684 -> 0 bytes + .../Comfortaa-Regular-new.name-legacy.62.ttf | Bin 6628 -> 0 bytes + .../Comfortaa-Regular-new.name-legacy.63.ttf | Bin 6608 -> 0 bytes + ...egular-new.name-legacy.retain-all-codepoint.ttf | Bin 182876 -> 0 bytes + .../Comfortaa-Regular-new.retain-gids.61,62,63.ttf | Bin 9384 -> 9452 bytes + .../Comfortaa-Regular-new.retain-gids.61,63.ttf | Bin 9036 -> 9104 bytes + .../Comfortaa-Regular-new.retain-gids.61.ttf | Bin 8432 -> 8500 bytes + .../Comfortaa-Regular-new.retain-gids.62.ttf | Bin 8628 -> 8696 bytes + .../Comfortaa-Regular-new.retain-gids.63.ttf | Bin 8616 -> 8684 bytes + ...egular-new.retain-gids.retain-all-codepoint.ttf | Bin 182940 -> 183008 bytes + .../Roboto-Regular.abc.name-languages.61,62,63.ttf | Bin 2168 -> 0 bytes + .../Roboto-Regular.abc.name-languages.61,63.ttf | Bin 1988 -> 0 bytes + .../Roboto-Regular.abc.name-languages.61.ttf | Bin 1792 -> 0 bytes + .../Roboto-Regular.abc.name-languages.62.ttf | Bin 1740 -> 0 bytes + .../Roboto-Regular.abc.name-languages.63.ttf | Bin 1716 -> 0 bytes + ...lar.abc.name-languages.retain-all-codepoint.ttf | Bin 2168 -> 0 bytes + .../Roboto-Regular.abc.name-legacy.61,62,63.ttf | Bin 2168 -> 0 bytes + .../Roboto-Regular.abc.name-legacy.61,63.ttf | Bin 1988 -> 0 bytes + .../basics/Roboto-Regular.abc.name-legacy.61.ttf | Bin 1792 -> 0 bytes + .../basics/Roboto-Regular.abc.name-legacy.62.ttf | Bin 1740 -> 0 bytes + .../basics/Roboto-Regular.abc.name-legacy.63.ttf | Bin 1716 -> 0 bytes + ...egular.abc.name-legacy.retain-all-codepoint.ttf | Bin 2168 -> 0 bytes + ...eSansPro-Regular.default.1FC,21,41,20,62,63.otf | Bin 2180 -> 2384 bytes + .../SourceSansPro-Regular.default.61,62,63.otf | Bin 1892 -> 2096 bytes + ...ourceSansPro-Regular.default.D7,D8,D9,DA,DE.otf | Bin 2008 -> 2212 bytes + ...subroutinize-retain-gids.1FC,21,41,20,62,63.otf | Bin 19796 -> 20000 bytes + ...Regular.desubroutinize-retain-gids.61,62,63.otf | Bin 1992 -> 2196 bytes + ...r.desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf | Bin 30208 -> 30412 bytes + ...o-Regular.desubroutinize.1FC,21,41,20,62,63.otf | Bin 2036 -> 2240 bytes + ...urceSansPro-Regular.desubroutinize.61,62,63.otf | Bin 1796 -> 2000 bytes + ...nsPro-Regular.desubroutinize.D7,D8,D9,DA,DE.otf | Bin 1992 -> 2196 bytes + ...subroutinize-retain-gids.1FC,21,41,20,62,63.otf | Bin 19636 -> 19840 bytes + ...p-hints-desubroutinize-retain-gids.61,62,63.otf | Bin 1868 -> 2072 bytes + ...s-desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf | Bin 30060 -> 30264 bytes + ...rop-hints-desubroutinize.1FC,21,41,20,62,63.otf | Bin 1876 -> 2080 bytes + ...-Regular.drop-hints-desubroutinize.61,62,63.otf | Bin 1672 -> 1876 bytes + ...ar.drop-hints-desubroutinize.D7,D8,D9,DA,DE.otf | Bin 1844 -> 2048 bytes + ...r.drop-hints-retain-gids.1FC,21,41,20,62,63.otf | Bin 19728 -> 19932 bytes + ...Pro-Regular.drop-hints-retain-gids.61,62,63.otf | Bin 1904 -> 2108 bytes + ...gular.drop-hints-retain-gids.D7,D8,D9,DA,DE.otf | Bin 30072 -> 30276 bytes + ...nsPro-Regular.drop-hints.1FC,21,41,20,62,63.otf | Bin 1960 -> 2164 bytes + .../SourceSansPro-Regular.drop-hints.61,62,63.otf | Bin 1736 -> 1940 bytes + ...ceSansPro-Regular.drop-hints.D7,D8,D9,DA,DE.otf | Bin 1860 -> 2064 bytes + ...sPro-Regular.retain-gids.1FC,21,41,20,62,63.otf | Bin 19948 -> 20152 bytes + .../SourceSansPro-Regular.retain-gids.61,62,63.otf | Bin 2060 -> 2264 bytes + ...eSansPro-Regular.retain-gids.D7,D8,D9,DA,DE.otf | Bin 30224 -> 30428 bytes + .../Roboto-Regular.default.1FC,21,41,20,62,63.ttf | Bin 2984 -> 3164 bytes + .../full-font/Roboto-Regular.default.61,62,63.ttf | Bin 2580 -> 2760 bytes + .../Roboto-Regular.default.D7,D8,D9,DA,DE.ttf | Bin 2944 -> 3124 bytes + ...oboto-Regular.drop-hints.1FC,21,41,20,62,63.ttf | Bin 1436 -> 1616 bytes + .../Roboto-Regular.drop-hints.61,62,63.ttf | Bin 1228 -> 1408 bytes + .../Roboto-Regular.drop-hints.D7,D8,D9,DA,DE.ttf | Bin 1464 -> 1644 bytes + ...ifVariable-Roman.default.1FC,21,41,20,62,63.ttf | Bin 3572 -> 4132 bytes + .../SourceSerifVariable-Roman.default.61,62,63.ttf | Bin 3540 -> 4100 bytes + ...eSerifVariable-Roman.default.D7,D8,D9,DA,DE.ttf | Bin 4032 -> 4592 bytes + ...ariable-Roman.drop-hints.1FC,21,41,20,62,63.ttf | Bin 3572 -> 4132 bytes + ...urceSerifVariable-Roman.drop-hints.61,62,63.ttf | Bin 3540 -> 4100 bytes + ...rifVariable-Roman.drop-hints.D7,D8,D9,DA,DE.ttf | Bin 4032 -> 4592 bytes + .../Mplus1p-Regular.default.1D715,1D7D8,41,42.ttf | Bin 2108 -> 2260 bytes + ...gular.default.3042,3044,3046,3048,304A,304B.ttf | Bin 2532 -> 2684 bytes + ...gular.default.3042,3044,3046,73E0,5EA6,8F38.ttf | Bin 2776 -> 2928 bytes + .../Mplus1p-Regular.default.61,63,65,6B.ttf | Bin 2076 -> 2228 bytes + ...gular.default.660E,6975,73E0,5EA6,8F38,6E05.ttf | Bin 3072 -> 3224 bytes + .../japanese/Mplus1p-Regular.default.660E.ttf | Bin 1816 -> 1968 bytes + ...plus1p-Regular.drop-hints.1D715,1D7D8,41,42.ttf | Bin 1380 -> 1532 bytes + ...ar.drop-hints.3042,3044,3046,3048,304A,304B.ttf | Bin 1804 -> 1956 bytes + ...ar.drop-hints.3042,3044,3046,73E0,5EA6,8F38.ttf | Bin 2048 -> 2200 bytes + .../Mplus1p-Regular.drop-hints.61,63,65,6B.ttf | Bin 1348 -> 1500 bytes + ...ar.drop-hints.660E,6975,73E0,5EA6,8F38,6E05.ttf | Bin 2344 -> 2496 bytes + .../japanese/Mplus1p-Regular.drop-hints.660E.ttf | Bin 1088 -> 1240 bytes + test/subset/data/profiles/name-languages.txt | 1 - + test/subset/data/profiles/name-legacy.txt | 1 - + test/subset/data/tests/basics.tests | 2 - + test/subset/generate-expected-outputs.py | 6 ++- + util/options-subset.cc | 58 --------------------- + 114 files changed, 4 insertions(+), 121 deletions(-) + +commit 298c46afbfd48f014243be7d3e6dbba5e69d242d +Author: Dominik Röttsches +Date: Fri Jan 24 12:11:07 2020 +0200 - [config] Add HB_NO_OT_SHAPE / HB_NO_OT + Only prefer AAT morx for horizontal layout - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 - - CONFIG.md | 14 ++++++++++++++ - src/gen-indic-table.py | 6 ++++++ - src/gen-use-table.py | 6 ++++++ - src/gen-vowel-constraints.py | 7 +++++++ - src/hb-config.hh | 4 ++++ - src/hb-ot-shape-complex-arabic.cc | 6 ++++++ - src/hb-ot-shape-complex-default.cc | 7 +++++++ - src/hb-ot-shape-complex-hangul.cc | 7 +++++++ - src/hb-ot-shape-complex-hebrew.cc | 7 +++++++ - src/hb-ot-shape-complex-indic-table.cc | 6 ++++++ - src/hb-ot-shape-complex-indic.cc | 7 +++++++ - src/hb-ot-shape-complex-khmer.cc | 7 +++++++ - src/hb-ot-shape-complex-myanmar.cc | 7 +++++++ - src/hb-ot-shape-complex-thai.cc | 7 +++++++ - src/hb-ot-shape-complex-use-table.cc | 6 ++++++ - src/hb-ot-shape-complex-use.cc | 7 +++++++ - src/hb-ot-shape-complex-vowel-constraints.cc | 6 ++++++ - src/hb-ot-shape-fallback.cc | 7 +++++++ - src/hb-ot-shape-normalize.cc | 7 +++++++ - src/hb-ot-shape.cc | 7 +++++++ - src/hb-shape-plan.cc | 10 ++++++++++ - src/hb-shape-plan.hh | 4 ++++ - src/hb-shaper-list.hh | 2 ++ - 23 files changed, 154 insertions(+) + Fixes #2124. -commit cee9f6e044278b590694f4dff6f22eaad9371385 -Author: Behdad Esfahbod -Date: Wed Jun 26 13:01:58 2019 -0700 + src/hb-ot-shape.cc | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) - Fail compile if no shapers enabled +commit fd85818b5b85fb0ad2db71c60e94ca0689d38bca +Author: Qunxin Liu +Date: Tue Jan 21 13:37:28 2020 -0800 + + [subset] Add "--name-languages" and "--name-legacy" options + Make name table subsetting consistent with fontTools + + src/hb-ot-name-table.hh | 11 ++++ + src/hb-subset-input.cc | 23 ++++++++ + src/hb-subset-input.hh | 2 + + src/hb-subset-plan.cc | 3 ++ + src/hb-subset-plan.hh | 4 ++ + src/hb-subset.h | 9 ++++ + test/api/hb-subset-test.h | 5 ++ + .../Comfortaa-Regular-new.default.61,62,63.ttf | Bin 7460 -> 7392 bytes + .../basics/Comfortaa-Regular-new.default.61,63.ttf | Bin 7104 -> 7036 bytes + .../basics/Comfortaa-Regular-new.default.61.ttf | Bin 6752 -> 6684 bytes + .../basics/Comfortaa-Regular-new.default.62.ttf | Bin 6696 -> 6628 bytes + .../basics/Comfortaa-Regular-new.default.63.ttf | Bin 6676 -> 6608 bytes + ...aa-Regular-new.default.retain-all-codepoint.ttf | Bin 182944 -> 182876 bytes + ...Regular-new.drop-hints-retain-gids.61,62,63.ttf | Bin 4912 -> 4844 bytes + ...aa-Regular-new.drop-hints-retain-gids.61,63.ttf | Bin 4620 -> 4552 bytes + ...ortaa-Regular-new.drop-hints-retain-gids.61.ttf | Bin 4056 -> 3988 bytes + ...ortaa-Regular-new.drop-hints-retain-gids.62.ttf | Bin 4296 -> 4228 bytes + ...ortaa-Regular-new.drop-hints-retain-gids.63.ttf | Bin 4304 -> 4236 bytes + ...drop-hints-retain-gids.retain-all-codepoint.ttf | Bin 151740 -> 151672 bytes + .../Comfortaa-Regular-new.drop-hints.61,62,63.ttf | Bin 2920 -> 2852 bytes + .../Comfortaa-Regular-new.drop-hints.61,63.ttf | Bin 2620 -> 2552 bytes + .../basics/Comfortaa-Regular-new.drop-hints.61.ttf | Bin 2308 -> 2240 bytes + .../basics/Comfortaa-Regular-new.drop-hints.62.ttf | Bin 2296 -> 2228 bytes + .../basics/Comfortaa-Regular-new.drop-hints.63.ttf | Bin 2296 -> 2228 bytes + ...Regular-new.drop-hints.retain-all-codepoint.ttf | Bin 151676 -> 151608 bytes + .../Comfortaa-Regular-new.name-ids.61,62,63.ttf | Bin 7204 -> 7132 bytes + .../Comfortaa-Regular-new.name-ids.61,63.ttf | Bin 6848 -> 6776 bytes + .../basics/Comfortaa-Regular-new.name-ids.61.ttf | Bin 6496 -> 6424 bytes + .../basics/Comfortaa-Regular-new.name-ids.62.ttf | Bin 6440 -> 6368 bytes + .../basics/Comfortaa-Regular-new.name-ids.63.ttf | Bin 6420 -> 6348 bytes + ...a-Regular-new.name-ids.retain-all-codepoint.ttf | Bin 182688 -> 182616 bytes + ...mfortaa-Regular-new.name-languages.61,62,63.ttf | Bin 0 -> 7392 bytes + .../Comfortaa-Regular-new.name-languages.61,63.ttf | Bin 0 -> 7036 bytes + .../Comfortaa-Regular-new.name-languages.61.ttf | Bin 0 -> 6684 bytes + .../Comfortaa-Regular-new.name-languages.62.ttf | Bin 0 -> 6628 bytes + .../Comfortaa-Regular-new.name-languages.63.ttf | Bin 0 -> 6608 bytes + ...lar-new.name-languages.retain-all-codepoint.ttf | Bin 0 -> 182876 bytes + .../Comfortaa-Regular-new.name-legacy.61,62,63.ttf | Bin 0 -> 7392 bytes + .../Comfortaa-Regular-new.name-legacy.61,63.ttf | Bin 0 -> 7036 bytes + .../Comfortaa-Regular-new.name-legacy.61.ttf | Bin 0 -> 6684 bytes + .../Comfortaa-Regular-new.name-legacy.62.ttf | Bin 0 -> 6628 bytes + .../Comfortaa-Regular-new.name-legacy.63.ttf | Bin 0 -> 6608 bytes + ...egular-new.name-legacy.retain-all-codepoint.ttf | Bin 0 -> 182876 bytes + .../Comfortaa-Regular-new.retain-gids.61,62,63.ttf | Bin 9452 -> 9384 bytes + .../Comfortaa-Regular-new.retain-gids.61,63.ttf | Bin 9104 -> 9036 bytes + .../Comfortaa-Regular-new.retain-gids.61.ttf | Bin 8500 -> 8432 bytes + .../Comfortaa-Regular-new.retain-gids.62.ttf | Bin 8696 -> 8628 bytes + .../Comfortaa-Regular-new.retain-gids.63.ttf | Bin 8684 -> 8616 bytes + ...egular-new.retain-gids.retain-all-codepoint.ttf | Bin 183008 -> 182940 bytes + .../Roboto-Regular.abc.name-languages.61,62,63.ttf | Bin 0 -> 2168 bytes + .../Roboto-Regular.abc.name-languages.61,63.ttf | Bin 0 -> 1988 bytes + .../Roboto-Regular.abc.name-languages.61.ttf | Bin 0 -> 1792 bytes + .../Roboto-Regular.abc.name-languages.62.ttf | Bin 0 -> 1740 bytes + .../Roboto-Regular.abc.name-languages.63.ttf | Bin 0 -> 1716 bytes + ...lar.abc.name-languages.retain-all-codepoint.ttf | Bin 0 -> 2168 bytes + .../Roboto-Regular.abc.name-legacy.61,62,63.ttf | Bin 0 -> 2168 bytes + .../Roboto-Regular.abc.name-legacy.61,63.ttf | Bin 0 -> 1988 bytes + .../basics/Roboto-Regular.abc.name-legacy.61.ttf | Bin 0 -> 1792 bytes + .../basics/Roboto-Regular.abc.name-legacy.62.ttf | Bin 0 -> 1740 bytes + .../basics/Roboto-Regular.abc.name-legacy.63.ttf | Bin 0 -> 1716 bytes + ...egular.abc.name-legacy.retain-all-codepoint.ttf | Bin 0 -> 2168 bytes + ...eSansPro-Regular.default.1FC,21,41,20,62,63.otf | Bin 2384 -> 2180 bytes + .../SourceSansPro-Regular.default.61,62,63.otf | Bin 2096 -> 1892 bytes + ...ourceSansPro-Regular.default.D7,D8,D9,DA,DE.otf | Bin 2212 -> 2008 bytes + ...subroutinize-retain-gids.1FC,21,41,20,62,63.otf | Bin 20000 -> 19796 bytes + ...Regular.desubroutinize-retain-gids.61,62,63.otf | Bin 2196 -> 1992 bytes + ...r.desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf | Bin 30412 -> 30208 bytes + ...o-Regular.desubroutinize.1FC,21,41,20,62,63.otf | Bin 2240 -> 2036 bytes + ...urceSansPro-Regular.desubroutinize.61,62,63.otf | Bin 2000 -> 1796 bytes + ...nsPro-Regular.desubroutinize.D7,D8,D9,DA,DE.otf | Bin 2196 -> 1992 bytes + ...subroutinize-retain-gids.1FC,21,41,20,62,63.otf | Bin 19840 -> 19636 bytes + ...p-hints-desubroutinize-retain-gids.61,62,63.otf | Bin 2072 -> 1868 bytes + ...s-desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf | Bin 30264 -> 30060 bytes + ...rop-hints-desubroutinize.1FC,21,41,20,62,63.otf | Bin 2080 -> 1876 bytes + ...-Regular.drop-hints-desubroutinize.61,62,63.otf | Bin 1876 -> 1672 bytes + ...ar.drop-hints-desubroutinize.D7,D8,D9,DA,DE.otf | Bin 2048 -> 1844 bytes + ...r.drop-hints-retain-gids.1FC,21,41,20,62,63.otf | Bin 19932 -> 19728 bytes + ...Pro-Regular.drop-hints-retain-gids.61,62,63.otf | Bin 2108 -> 1904 bytes + ...gular.drop-hints-retain-gids.D7,D8,D9,DA,DE.otf | Bin 30276 -> 30072 bytes + ...nsPro-Regular.drop-hints.1FC,21,41,20,62,63.otf | Bin 2164 -> 1960 bytes + .../SourceSansPro-Regular.drop-hints.61,62,63.otf | Bin 1940 -> 1736 bytes + ...ceSansPro-Regular.drop-hints.D7,D8,D9,DA,DE.otf | Bin 2064 -> 1860 bytes + ...sPro-Regular.retain-gids.1FC,21,41,20,62,63.otf | Bin 20152 -> 19948 bytes + .../SourceSansPro-Regular.retain-gids.61,62,63.otf | Bin 2264 -> 2060 bytes + ...eSansPro-Regular.retain-gids.D7,D8,D9,DA,DE.otf | Bin 30428 -> 30224 bytes + .../Roboto-Regular.default.1FC,21,41,20,62,63.ttf | Bin 3164 -> 2984 bytes + .../full-font/Roboto-Regular.default.61,62,63.ttf | Bin 2760 -> 2580 bytes + .../Roboto-Regular.default.D7,D8,D9,DA,DE.ttf | Bin 3124 -> 2944 bytes + ...oboto-Regular.drop-hints.1FC,21,41,20,62,63.ttf | Bin 1616 -> 1436 bytes + .../Roboto-Regular.drop-hints.61,62,63.ttf | Bin 1408 -> 1228 bytes + .../Roboto-Regular.drop-hints.D7,D8,D9,DA,DE.ttf | Bin 1644 -> 1464 bytes + ...ifVariable-Roman.default.1FC,21,41,20,62,63.ttf | Bin 4132 -> 3572 bytes + .../SourceSerifVariable-Roman.default.61,62,63.ttf | Bin 4100 -> 3540 bytes + ...eSerifVariable-Roman.default.D7,D8,D9,DA,DE.ttf | Bin 4592 -> 4032 bytes + ...ariable-Roman.drop-hints.1FC,21,41,20,62,63.ttf | Bin 4132 -> 3572 bytes + ...urceSerifVariable-Roman.drop-hints.61,62,63.ttf | Bin 4100 -> 3540 bytes + ...rifVariable-Roman.drop-hints.D7,D8,D9,DA,DE.ttf | Bin 4592 -> 4032 bytes + .../Mplus1p-Regular.default.1D715,1D7D8,41,42.ttf | Bin 2260 -> 2108 bytes + ...gular.default.3042,3044,3046,3048,304A,304B.ttf | Bin 2684 -> 2532 bytes + ...gular.default.3042,3044,3046,73E0,5EA6,8F38.ttf | Bin 2928 -> 2776 bytes + .../Mplus1p-Regular.default.61,63,65,6B.ttf | Bin 2228 -> 2076 bytes + ...gular.default.660E,6975,73E0,5EA6,8F38,6E05.ttf | Bin 3224 -> 3072 bytes + .../japanese/Mplus1p-Regular.default.660E.ttf | Bin 1968 -> 1816 bytes + ...plus1p-Regular.drop-hints.1D715,1D7D8,41,42.ttf | Bin 1532 -> 1380 bytes + ...ar.drop-hints.3042,3044,3046,3048,304A,304B.ttf | Bin 1956 -> 1804 bytes + ...ar.drop-hints.3042,3044,3046,73E0,5EA6,8F38.ttf | Bin 2200 -> 2048 bytes + .../Mplus1p-Regular.drop-hints.61,63,65,6B.ttf | Bin 1500 -> 1348 bytes + ...ar.drop-hints.660E,6975,73E0,5EA6,8F38,6E05.ttf | Bin 2496 -> 2344 bytes + .../japanese/Mplus1p-Regular.drop-hints.660E.ttf | Bin 1240 -> 1088 bytes + test/subset/data/profiles/name-languages.txt | 1 + + test/subset/data/profiles/name-legacy.txt | 1 + + test/subset/data/tests/basics.tests | 2 + + test/subset/generate-expected-outputs.py | 6 +-- + util/options-subset.cc | 58 +++++++++++++++++++++ + 114 files changed, 121 insertions(+), 4 deletions(-) + +commit c370da45ff0dd64c2868be313e640272931cffed +Author: Qunxin Liu +Date: Wed Jan 22 11:36:15 2020 -0800 - src/hb-shaper.cc | 1 + - 1 file changed, 1 insertion(+) + [subset] Cmap table: remove encodingRecord entry for empty cmap4 subtable -commit 8786820a5a7406be95bc4a6b6e2aca736126420c -Author: Behdad Esfahbod -Date: Wed Jun 26 12:53:57 2019 -0700 + src/hb-ot-cmap-table.hh | 10 ++++++---- + test/api/fonts/Roboto-Regular.empty.ttf | Bin 0 -> 1456 bytes + test/api/test-subset-cmap.c | 21 +++++++++++++++++++++ + .../japanese/Mplus1p-Regular.default.25771.ttf | Bin 0 -> 1976 bytes + .../japanese/Mplus1p-Regular.drop-hints.25771.ttf | Bin 0 -> 1248 bytes + test/subset/data/tests/japanese.tests | 1 + + 6 files changed, 28 insertions(+), 4 deletions(-) - [src] Add make targets "tiny" and "tinyz" +commit d3fff622b35725bbdfb07fea98a58f56199991f4 +Author: ckitagawa +Date: Thu Jan 23 11:36:47 2020 -0500 - src/Makefile.am | 4 ++++ - 1 file changed, 4 insertions(+) + Move push call to caller -commit b14e413fae8f14b75c5956e9b38e413c878ded0c -Author: Behdad Esfahbod -Date: Wed Jun 26 10:44:10 2019 -0700 + src/hb-ot-color-sbix-table.hh | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) - 2.5.3 +commit 7dc341fe745bc1784b08efd4c658de292b958b0d +Author: ckitagawa +Date: Thu Jan 23 11:09:15 2020 -0500 - NEWS | 7 +++++++ - configure.ac | 2 +- - src/hb-version.h | 4 ++-- - 3 files changed, 10 insertions(+), 3 deletions(-) + [subset] Fix UBSAN issue in sbix -commit 3bfa878c98cceeaae074d81c14329e358bea8912 -Author: Behdad Esfahbod -Date: Tue Jun 25 19:07:07 2019 -0700 + src/hb-ot-color-sbix-table.hh | 5 +++-- + ...z-testcase-minimized-hb-subset-fuzzer-5753173985984512 | Bin 0 -> 616 bytes + 2 files changed, 3 insertions(+), 2 deletions(-) - [gen-ucd] Protect against accidents like previous commit - - https://github.com/harfbuzz/harfbuzz/pull/1796 +commit acb4627ebaf595e266cf294ef047e87084b520da +Author: ariza +Date: Wed Jan 22 12:28:30 2020 -0800 - src/gen-ucd-table.py | 24 +++++++++++------------- - 1 file changed, 11 insertions(+), 13 deletions(-) + add api test -commit f4ea1a9afb4849e7cfb7a5eb9e81e4f656c3f89e -Author: David Corbett -Date: Tue Jun 25 21:08:14 2019 -0400 + test/api/fonts/AdobeVFPrototype.WA.gpos.otf | Bin 0 -> 3948 bytes + test/api/fonts/AdobeVFPrototype.WAV.gpos.otf | Bin 0 -> 4448 bytes + test/api/test-subset-gpos.c | 27 +++++++++++++++++++++++++++ + 3 files changed, 27 insertions(+) - [ucd] Include scripts added in Unicode 10 or later +commit 1ab3924b3171b408438f5df6a4d48124d9d1bd68 +Author: ariza +Date: Wed Jan 22 11:20:56 2020 -0800 - src/gen-ucd-table.py | 2 +- - src/hb-ucd-table.hh | 970 +++++++++++++++++++++++++++------------------------ - 2 files changed, 511 insertions(+), 461 deletions(-) + refix PR #2087 subset PairPos1 + + also added oss-fuzz 20211 data fixed by this -commit 10bd6b8d913a57260b35c1ef830db37c06eebd18 -Author: Michiharu Ariza -Date: Thu Jun 20 16:22:08 2019 -0700 + src/hb-ot-layout-gpos-table.hh | 10 ++++------ + ...-testcase-minimized-hb-subset-fuzzer-5206191479455744 | Bin 0 -> 3558 bytes + 2 files changed, 4 insertions(+), 6 deletions(-) - minor +commit 7633b7695e5b6188d6180fc5592c0678f03327ed +Merge: 3747b329 02f324c9 +Author: Ebrahim Byagowi +Date: Thu Jan 23 18:51:40 2020 +0330 - src/hb-bimap.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + Merge pull request #2016 from ebraminio/glyf + + Implement glyph outline path API -commit f3ee2bd020f8ca313fae783cc49a374f1377e877 -Author: Michiharu Ariza -Date: Thu Jun 20 14:33:09 2019 -0700 +commit 02f324c9499a95463c363926a0f38c261fad7117 +Author: Ebrahim Byagowi +Date: Thu Jan 23 15:12:12 2020 +0330 - add ops & methods to hb_bimap_t making it more like hb_map_t - moved has () to hb_bimap_t from hb_inc_bimap_t - moved identity () to hb_inc_bimap_t - removed forward() + [ot-glyph] remove open callback + + Apparently it wasn't requested actually and can be detected easily + as paths are opened usually when move command is issued anyway. - src/hb-bimap.hh | 38 ++++++++++++++++++++++++-------------- - src/hb-ot-cff-common.hh | 2 +- - src/hb-ot-cff1-table.hh | 4 ++-- - src/hb-subset-cff-common.cc | 2 +- - src/hb-subset-cff-common.hh | 4 ++-- - src/hb-subset-cff1.cc | 4 ++-- - src/hb-subset-cff2.cc | 2 +- - 7 files changed, 33 insertions(+), 23 deletions(-) + docs/harfbuzz-sections.txt | 2 -- + src/hb-ot-cff1-table.cc | 2 +- + src/hb-ot-cff2-table.cc | 2 +- + src/hb-ot-glyf-table.hh | 1 - + src/hb-ot-glyph.cc | 31 ++++++++----------------------- + src/hb-ot-glyph.h | 5 ----- + src/hb-ot-glyph.hh | 1 - + src/test-ot-glyph.cc | 1 + + test/api/test-ot-glyph.c | 4 ---- + 9 files changed, 11 insertions(+), 38 deletions(-) -commit 094966959f96d9a41fb612fd0b870f5ae8f5a954 -Author: Michiharu Ariza -Date: Mon Jun 17 22:12:40 2019 -0700 +commit 684ff3e0cd77dfa5e83c2110ea613b8b9678d4f5 +Author: Ebrahim Byagowi +Date: Thu Jan 23 14:48:59 2020 +0330 - add hb_bimap_t, subclass hb_inc_bimap_t replacing CFF::remap_t + [ot-glyph] noop->nil, fix close path - src/Makefile.sources | 1 + - src/hb-bimap.hh | 129 ++++++++++++++++++++++++++++++++++++++++++++ - src/hb-ot-cff-common.hh | 64 +++------------------- - src/hb-ot-cff1-table.hh | 16 +++--- - src/hb-subset-cff-common.cc | 12 ++--- - src/hb-subset-cff-common.hh | 40 ++++++-------- - src/hb-subset-cff1.cc | 26 ++++----- - src/hb-subset-cff2.cc | 31 +++++------ - 8 files changed, 191 insertions(+), 128 deletions(-) + src/hb-ot-cff1-table.cc | 10 +++++----- + src/hb-ot-cff2-table.cc | 6 +++--- + src/hb-ot-glyph.cc | 23 ++++++++++------------- + test/api/test-ot-glyph.c | 22 +++++++++++----------- + 4 files changed, 29 insertions(+), 32 deletions(-) -commit 0660175dc82d82bbb38c45b9cb53190e06f55750 -Author: David Corbett -Date: Tue Jun 25 10:14:03 2019 -0400 +commit 3747b329b2a8be0f234fca861364951bf9de1797 +Author: ckitagawa +Date: Wed Jan 22 09:07:32 2020 -0500 - Categorize U+1133B for use in Tamil + Address garretrieger@'s comments - src/hb-ot-shape-complex-indic.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-color-sbix-table.hh | 18 ++++++++---------- + 1 file changed, 8 insertions(+), 10 deletions(-) -commit fb0df17b2701c1c5623198440aa88a676985bd4f -Author: David Corbett -Date: Mon Jun 24 21:54:26 2019 -0400 +commit b18cb5b5ee56477e85cf82b299ac08df6202b148 +Author: ckitagawa +Date: Tue Jan 21 15:43:12 2020 -0500 - Correct "nonunihan" to "nounihan" + Add second fixed test - src/gen-ucd-table.py | 4 ++-- - src/hb-ucd-table.hh | 2 +- - 2 files changed, 3 insertions(+), 3 deletions(-) + ...estcase-minimized-hb-subset-fuzzer-5747028458209280 | Bin 0 -> 100109 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) -commit bb4cdf8e0bcc98a036c22cfd44242502b107fb32 -Author: Ebrahim Byagowi -Date: Tue Jun 25 01:42:42 2019 +0430 +commit af62c1c3b036904a18e0ed0748ead255029bc9f3 +Author: ckitagawa +Date: Tue Jan 21 15:19:33 2020 -0500 - Replace create_from_file with empty blob if HB_NO_OPEN is defined + Fix style issue - src/main.cc | 4 ++++ - src/test-buffer-serialize.cc | 4 ++++ - src/test-gpos-size-params.cc | 4 ++++ - src/test-gsub-would-substitute.cc | 4 ++++ - src/test-ot-color.cc | 4 ++++ - src/test-ot-name.cc | 4 ++++ - src/test.cc | 4 ++++ - 7 files changed, 28 insertions(+) + src/hb-ot-color-sbix-table.hh | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) -commit ccf1448238c91da3cba8370ee527229013f6d362 -Author: GaryQian -Date: Mon Jun 24 12:57:13 2019 -0700 +commit 8614a30bc9763ba7f8b452df5527d806bacf4fd9 +Author: ckitagawa +Date: Tue Jan 21 15:14:03 2020 -0500 - Cast long->size_t to ensure comparison of similar types + [subset] Fix sbix fuzz problem - src/hb-common.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-color-sbix-table.hh | 20 +++++++++++++------- + ...case-minimized-hb-subset-fuzzer-5741295280848896 | Bin 0 -> 98822 bytes + 2 files changed, 13 insertions(+), 7 deletions(-) -commit ec8e635e0c1a8e5c631a90820be68cf07c52c1a0 -Author: Behdad Esfahbod -Date: Mon Jun 24 12:37:23 2019 -0700 +commit 72cbfb9059ac4f041cffaef86a1d8067a93b16ec +Author: ariza +Date: Sat Jan 18 16:35:52 2020 -0800 - [ucd] Use custom encoding to shrink composition data - - Saves another 2.5kb. + remove empty lookup subtables - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + Added a variant of subset_offset_array which takes an extra arg passed to serialize_subset for this impl. + Added a new api test "test-subset-gpos" for this. - src/gen-ucd-table.py | 22 +- - src/hb-algs.hh | 5 + - src/hb-ucd-table.hh | 963 ++++++++++++++++++++++++++++++++++----------------- - src/hb-ucd.cc | 49 ++- - 4 files changed, 704 insertions(+), 335 deletions(-) + src/hb-ot-layout-common.hh | 70 ++++++++++++++++++++++++----- + src/hb-ot-layout-gpos-table.hh | 6 +++ + src/hb-ot-layout-gsub-table.hh | 6 +++ + test/api/Makefile.am | 2 + + test/api/fonts/Roboto-Regular-gpos-.aw.ttf | Bin 0 -> 2368 bytes + test/api/fonts/Roboto-Regular-gpos-aw.ttf | Bin 0 -> 2232 bytes + test/api/test-subset-gpos.c | 65 +++++++++++++++++++++++++++ + 7 files changed, 139 insertions(+), 10 deletions(-) -commit 9c933acaa443889bc2484dbe3ef3e990b299cd52 -Author: Behdad Esfahbod -Date: Sun Jun 23 17:14:27 2019 -0700 +commit a3cf4ae0804f2971bcda4266dbeec245bce21eb1 +Author: Qunxin Liu +Date: Fri Jan 17 13:02:47 2020 -0800 + + [subset] Add more tests for GPOS1 subsetting + These tests were left out because of issue: https://github.com/fonttools/fonttools/issues/1709 + Now re-adding these tests since the issue is resolved. + + .../gpos1_2_font.keep-layout-retain-gids.41.otf | Bin 0 -> 1932 bytes + .../layout.gpos/gpos1_2_font.keep-layout.41,43.otf | Bin 0 -> 1352 bytes + .../layout.gpos/gpos1_2_font.keep-layout.41,46.otf | Bin 0 -> 1484 bytes + .../expected/layout.gpos/gpos1_2_font.keep-layout.41.otf | Bin 0 -> 1232 bytes + .../layout.gpos/gpos1_2_font.keep-layout.42,44.otf | Bin 0 -> 1268 bytes + .../layout.gpos/gpos1_2_font.keep-layout.43,46.otf | Bin 0 -> 1348 bytes + .../gpos1_2_font.keep-layout.retain-all-codepoint.otf | Bin 0 -> 3668 bytes + test/subset/data/tests/layout.gpos.tests | 2 ++ + 8 files changed, 2 insertions(+) + +commit 8f49aaa16f2dff5902142988b3a5a039a03129eb +Author: Michiharu Ariza +Date: Thu Jan 16 15:15:15 2020 -0800 - [ucd] Save a few more bytes - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + minor: un-include glyf.hh in gvar.hh - src/gen-ucd-table.py | 11 ++++++----- - src/hb-ucd-table.hh | 34 +++++++++++++++++----------------- - src/hb-ucd.cc | 12 ++++++------ - 3 files changed, 29 insertions(+), 28 deletions(-) + src/hb-ot-var-gvar-table.hh | 1 - + 1 file changed, 1 deletion(-) -commit 9bd8d66c2ba97aec57597ff85e059a7618260a1c +commit c828d7bf76dd039be1775edff1d798dbcc10708b +Author: Michiharu Ariza +Date: Wed Jan 15 15:32:44 2020 -0800 + + [subset] fixed GPOS device table sanitize & serialize (#2087) + + src/hb-ot-layout-gpos-table.hh | 112 ++++++++++++++++++++++++++++++++++------- + 1 file changed, 93 insertions(+), 19 deletions(-) + +commit e565d1f9bcf3d9bf607e194e3a9cf06f5d2e3633 Author: Qunxin Liu -Date: Wed Jun 12 11:02:48 2019 -0700 +Date: Fri Nov 1 10:21:36 2019 -0700 + + [subset] subset lookup/feature/script lists for GSUB/GPOS + + src/hb-ot-layout-common.hh | 396 +++++++++++++++++---- + src/hb-ot-layout-gpos-table.hh | 5 +- + src/hb-ot-layout-gsub-table.hh | 5 +- + src/hb-ot-layout-gsubgpos.hh | 41 ++- + test/api/test-ot-face.c | 7 + + .../gpos1_2_font.keep-layout-retain-gids.42,44.otf | Bin 0 -> 1992 bytes + ...s2_1_font7.keep-layout-retain-gids.41,42,43.otf | Bin 0 -> 1988 bytes + .../gpos2_1_font7.keep-layout.41,42,43.otf | Bin 0 -> 1288 bytes + ...s2_2_font5.keep-layout-retain-gids.41,42,43.otf | Bin 0 -> 1988 bytes + .../gpos2_2_font5.keep-layout.41,42,43.otf | Bin 0 -> 1288 bytes + ...pos3_font3.keep-layout-retain-gids.41,42,43.otf | Bin 0 -> 1984 bytes + .../gpos3_font3.keep-layout.41,42,43.otf | Bin 0 -> 1284 bytes + ...ubrules_f1.keep-layout-retain-gids.41,42,43.otf | Bin 0 -> 2044 bytes + ...1_multiple_subrules_f1.keep-layout.41,42,43.otf | Bin 0 -> 1344 bytes + ...ubrules_f1.keep-layout-retain-gids.41,42,43.otf | Bin 0 -> 2044 bytes + ...2_multiple_subrules_f1.keep-layout.41,42,43.otf | Bin 0 -> 1344 bytes + ..._simple_f2.keep-layout-retain-gids.41,42,43.otf | Bin 0 -> 2020 bytes + ...ub_chaining3_simple_f2.keep-layout.41,42,43.otf | Bin 0 -> 1320 bytes + test/subset/data/tests/layout.gpos.tests | 1 + + test/subset/data/tests/layout.gpos2.tests | 1 + + test/subset/data/tests/layout.gpos3.tests | 1 + + test/subset/data/tests/layout.gsub6.tests | 1 + + 22 files changed, 380 insertions(+), 78 deletions(-) + +commit 93376a64362a0d062aa3f9f39bfe0d7b4328a92e +Author: ckitagawa +Date: Wed Jan 15 13:11:40 2020 -0500 + + Add unittests + + src/hb-subset-input.cc | 2 - + test/api/Makefile.am | 2 + + test/api/fonts/sbix.ttf | Bin 0 -> 193528 bytes + test/api/fonts/sbix_X.ttf | Bin 0 -> 121168 bytes + test/api/test-subset-sbix.c | 81 +++++++++++++++++++++ + .../data/expected/sbix/sbix.default.58,59.ttf | Bin 196080 -> 193528 bytes + test/subset/data/expected/sbix/sbix.default.58.ttf | Bin 122736 -> 121168 bytes + test/subset/data/expected/sbix/sbix.default.59.ttf | Bin 90344 -> 89364 bytes + .../sbix/sbix.drop-hints-retain-gids.58,59.ttf | Bin 196080 -> 193528 bytes + .../sbix/sbix.drop-hints-retain-gids.58.ttf | Bin 122736 -> 121168 bytes + .../sbix/sbix.drop-hints-retain-gids.59.ttf | Bin 90384 -> 89404 bytes + .../data/expected/sbix/sbix.drop-hints.58,59.ttf | Bin 196080 -> 193528 bytes + .../data/expected/sbix/sbix.drop-hints.58.ttf | Bin 122736 -> 121168 bytes + .../data/expected/sbix/sbix.drop-hints.59.ttf | Bin 90344 -> 89364 bytes + .../data/expected/sbix/sbix.retain-gids.58,59.ttf | Bin 196080 -> 193528 bytes + .../data/expected/sbix/sbix.retain-gids.58.ttf | Bin 122736 -> 121168 bytes + .../data/expected/sbix/sbix.retain-gids.59.ttf | Bin 90384 -> 89404 bytes + test/subset/data/fonts/sbix.ttf | Bin 196080 -> 193528 bytes + 18 files changed, 83 insertions(+), 2 deletions(-) + +commit 6bcf57eaa3d9b1381e384743a2fbee912d72474e +Author: ckitagawa +Date: Tue Jan 14 14:56:02 2020 -0500 + + Simplify copy and add fuzzing coverage + + src/hb-ot-color-sbix-table.hh | 7 ++----- + test/fuzzing/fonts/sbix.ttf | Bin 0 -> 196080 bytes + 2 files changed, 2 insertions(+), 5 deletions(-) - [subset] VORG table to use _subset2 method and new iterator frameworks +commit 78b50a67be6fb40e715132eabe9b05c64ddd99c8 +Author: ckitagawa +Date: Tue Jan 14 11:01:09 2020 -0500 - src/hb-ot-vorg-table.hh | 128 ++++++++++++++---------------------------------- - src/hb-subset.cc | 2 +- - 2 files changed, 39 insertions(+), 91 deletions(-) + Address initial comments -commit 8062979990d348671b465c877e4dd672e1337665 -Merge: ad97ec95 c2d7dfc6 -Author: Ebrahim Byagowi -Date: Sun Jun 23 11:19:48 2019 +0430 + src/hb-ot-color-sbix-table.hh | 49 +++++++++------------ + .../data/expected/sbix/sbix.default.58,59.ttf | Bin 0 -> 196080 bytes + .../sbix/sbix.drop-hints-retain-gids.58,59.ttf | Bin 0 -> 196080 bytes + .../data/expected/sbix/sbix.drop-hints.58,59.ttf | Bin 0 -> 196080 bytes + .../data/expected/sbix/sbix.retain-gids.58,59.ttf | Bin 0 -> 196080 bytes + test/subset/data/tests/sbix.tests | 2 +- + 6 files changed, 23 insertions(+), 28 deletions(-) - Merge pull request #1788 from jameshilliard/configure-svg - - Add missing cairo-svg dependency to test-ot-color +commit 43b6c865aeb763944362375e1c345afcd60211b4 +Author: ckitagawa +Date: Thu Jan 9 10:44:20 2020 -0500 -commit c2d7dfc68ffcb389c9f73b5ef94da7b270bdcf9e -Author: James Hilliard -Date: Sat Jun 22 19:38:48 2019 -0600 + [subset] Support sbix subsetting - Add missing cairo-svg dependency to test-ot-color + src/hb-ot-color-sbix-table.hh | 126 +++++++++++++++++++++ + src/hb-subset.cc | 4 + + test/subset/data/Makefile.am | 1 + + test/subset/data/Makefile.sources | 1 + + test/subset/data/expected/sbix/sbix.default.58.ttf | Bin 0 -> 122736 bytes + test/subset/data/expected/sbix/sbix.default.59.ttf | Bin 0 -> 90344 bytes + .../sbix/sbix.drop-hints-retain-gids.58.ttf | Bin 0 -> 122736 bytes + .../sbix/sbix.drop-hints-retain-gids.59.ttf | Bin 0 -> 90384 bytes + .../data/expected/sbix/sbix.drop-hints.58.ttf | Bin 0 -> 122736 bytes + .../data/expected/sbix/sbix.drop-hints.59.ttf | Bin 0 -> 90344 bytes + .../data/expected/sbix/sbix.retain-gids.58.ttf | Bin 0 -> 122736 bytes + .../data/expected/sbix/sbix.retain-gids.59.ttf | Bin 0 -> 90384 bytes + test/subset/data/fonts/sbix.ttf | Bin 0 -> 196080 bytes + test/subset/data/tests/sbix.tests | 13 +++ + test/subset/generate-expected-outputs.py | 1 + + test/subset/run-tests.py | 3 +- + 16 files changed, 148 insertions(+), 1 deletion(-) + +commit 79fed9a1e42397ed4044d3ce8f042309f0e4cde8 +Author: Ebrahim Byagowi +Date: Tue Jan 14 17:23:30 2020 +0330 + + [ot-glyph] Add open/close callbacks - src/test-ot-color.cc | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) + docs/harfbuzz-sections.txt | 4 ++++ + src/hb-ot-cff1-table.cc | 4 ++-- + src/hb-ot-cff2-table.cc | 4 ++-- + src/hb-ot-glyf-table.hh | 9 ++++++-- + src/hb-ot-glyph.cc | 39 +++++++++++++++++++++++++++++++ + src/hb-ot-glyph.h | 10 ++++++++ + src/hb-ot-glyph.hh | 2 ++ + src/test-ot-glyph.cc | 6 +++++ + test/api/test-ot-glyph.c | 57 +++++++++++++++++++++++++++++----------------- + 9 files changed, 108 insertions(+), 27 deletions(-) -commit ad97ec95019b1e5170d00953d4dfe392cfb4abb0 -Author: Behdad Esfahbod -Date: Fri Jun 21 00:44:29 2019 -0700 +commit ec1fba1388c329c7216bcdaa9a86627abfc85637 +Author: Ebrahim Byagowi +Date: Mon Jan 13 19:31:18 2020 +0330 - [config/ucd] Add HB_NO_UNICODE_UNASSIGNED and activate in HB_TINY - - Saves another 12kb: - - $ python ./gen-ucd-table.py ucd.nounihan.grouped.zip > hb-ucd-table.hh && make -j5 CPPFLAGS='-Os -DHB_TINY' -C ~/hb/build/src/ && size ~/hb/build/src/.libs/libharfbuzz_la-hb-ucd.o - INFO: Loading UCDXML... - INFO: Preparing data tables... - INFO: Generating output... - INFO: Compression=1: - INFO: Dataset=gc FullCost=18612 - INFO: Dataset=ccc FullCost=3550 - INFO: Dataset=bmg FullCost=1548 - INFO: Dataset=sc FullCost=17765 - INFO: Dataset=dm FullCost=13325 - INFO: Compression=3: - INFO: Dataset=gc FullCost=10726 - INFO: Dataset=ccc FullCost=2389 - INFO: Dataset=bmg FullCost=1052 - INFO: Dataset=sc FullCost=13669 - INFO: Dataset=dm FullCost=7780 - INFO: Compression=5: - INFO: Dataset=gc FullCost=8274 - INFO: Dataset=ccc FullCost=2055 - INFO: Dataset=bmg FullCost=908 - INFO: Dataset=sc FullCost=4073 - INFO: Dataset=dm FullCost=7780 - INFO: Done. - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + [ot-glyph] make hb_ot_glyph_decompose_funcs_t struct opaque - CONFIG.md | 3 +- - src/gen-ucd-table.py | 27 +- - src/hb-config.hh | 1 + - src/hb-ucd-table.hh | 1161 +++++++++++++++++++++++++++++++++++++++++++++++++- - 4 files changed, 1185 insertions(+), 7 deletions(-) + docs/harfbuzz-sections.txt | 11 +++- + src/Makefile.sources | 1 + + src/hb-ot-cff1-table.cc | 11 ++-- + src/hb-ot-cff1-table.hh | 2 +- + src/hb-ot-cff2-table.cc | 7 +- + src/hb-ot-cff2-table.hh | 2 +- + src/hb-ot-glyf-table.hh | 3 +- + src/hb-ot-glyph.cc | 156 ++++++++++++++++++++++++++++++++++++++++++++- + src/hb-ot-glyph.h | 41 ++++++++---- + src/hb-ot-glyph.hh | 44 +++++++++++++ + src/test-ot-glyph.cc | 14 ++-- + test/api/test-ot-face.c | 34 ++-------- + test/api/test-ot-glyph.c | 51 ++++++--------- + 13 files changed, 281 insertions(+), 96 deletions(-) + +commit 8ffc9add2237899afc57184ad3297404659bc1cd +Author: Qunxin Liu +Date: Thu Oct 31 15:59:02 2019 -0700 -commit ccea7fa119d139b6a3a429b3b81fac8448f3bab1 -Author: Behdad Esfahbod -Date: Fri Jun 21 00:42:06 2019 -0700 + [subset] layout closure_features and store them in subset-plan - [config] Make test build under HB_TINY + docs/harfbuzz-sections.txt | 1 + + src/hb-ot-layout-common.hh | 35 ++++++++++++++++++++++++++++ + src/hb-ot-layout-gsubgpos.hh | 14 +++++++++++ + src/hb-ot-layout.cc | 21 +++++++++++++++++ + src/hb-ot-layout.h | 6 +++++ + src/hb-subset-plan.cc | 55 +++++++++++++++++++++++++++++++------------- + src/hb-subset-plan.hh | 4 ++++ + 7 files changed, 120 insertions(+), 16 deletions(-) - src/test-gpos-size-params.cc | 9 +++++++-- - 1 file changed, 7 insertions(+), 2 deletions(-) +commit 66dfd605b5b9aaf74ff806ba1719ca09a1003909 +Author: Dominik Röttsches +Date: Mon Jan 13 15:50:27 2020 +0200 -commit 12cec6c12ec1856e483097e702126214dd25a34a + Fix duplicate check in hb_ot_rotate chars + + Fixes #2099. Fix indentation in mirroring section as well. + + src/hb-ot-shape.cc | 1 - + 1 file changed, 1 deletion(-) + +commit d7c3cb18ee6b2ffe529c5d703fae1cd965f39dc9 Author: Ebrahim Byagowi -Date: Fri Jun 21 22:39:42 2019 +0430 +Date: Mon Jan 13 17:35:57 2020 +0330 - Don't define hb_blob_create_from_file if HB_NO_OPEN is defined + [ot-glyph] minor on tests - src/hb-blob.cc | 6 ++---- - 1 file changed, 2 insertions(+), 4 deletions(-) + src/test-ot-glyph.cc | 28 +++++++---------- + test/api/test-ot-face.c | 13 ++++---- + test/api/test-ot-glyph.c | 81 ++++++++++++++++++++++++++++++++++-------------- + 3 files changed, 77 insertions(+), 45 deletions(-) -commit 7f3b409e85897ff267f1b6a5ce1b5cdafbfe7afe -Author: Behdad Esfahbod -Date: Thu Jun 20 14:24:43 2019 -0700 +commit dc03a993d0f2b6db7c5cfb11eaa6e8a4f6f274e6 +Author: Ebrahim Byagowi +Date: Sun Jan 12 14:21:29 2020 +0330 - Fix build with -O0 + Fix collect lookups logic of FeatureTableSubstitution (#2097) - message_impl was not defined. That causes trouble if compiler didn't - optimize the unreachable call out... + https://crbug.com/oss-fuzz/20036 - src/hb-buffer.cc | 1 - - src/hb-buffer.hh | 4 ++++ - 2 files changed, 4 insertions(+), 1 deletion(-) + src/hb-ot-layout-common.hh | 6 +++--- + ...-testcase-minimized-hb-subset-fuzzer-5715299773186048 | Bin 0 -> 6717 bytes + 2 files changed, 3 insertions(+), 3 deletions(-) -commit 6b44bf85382146b355a5a3cbbfde48166721ce52 -Author: Behdad Esfahbod -Date: Thu Jun 20 11:57:19 2019 -0700 +commit a32ecc15aec6518f5a126fb8f3643e563327f74d +Author: Ebrahim Byagowi +Date: Sat Jan 11 15:37:24 2020 +0330 - 2.5.2 + Fix collect lookups logic of FeatureVariationRecord + + As "Offset to a feature table substitution table, from beginning of the FeatureVariations table." + from https://docs.microsoft.com/en-us/typography/opentype/spec/chapter2 the record should + match its sanitize logic not the reverse way. + + Fixes https://crbug.com/oss-fuzz/20021 and https://crbug.com/oss-fuzz/20022 - NEWS | 12 ++++++++++++ - configure.ac | 2 +- - src/hb-version.h | 4 ++-- - 3 files changed, 15 insertions(+), 3 deletions(-) + src/hb-ot-layout-common.hh | 7 ++++--- + ...zz-testcase-minimized-hb-subset-fuzzer-5167653459329024 | Bin 0 -> 46 bytes + ...zz-testcase-minimized-hb-subset-fuzzer-5642531954229248 | Bin 0 -> 46 bytes + 3 files changed, 4 insertions(+), 3 deletions(-) -commit e9f7b338ef599b9cbffa125fe594a9939b8517cb -Author: Behdad Esfahbod -Date: Thu Jun 20 11:48:44 2019 -0700 +commit 1a4c658b43152ab01bcb6d151940c09cc1e8fc56 +Author: Ebrahim Byagowi +Date: Sat Jan 11 01:30:05 2020 +0330 - [config] Adjust description of HB_LEAN + Use REPLACEME tag - https://github.com/harfbuzz/harfbuzz/commit/d84932ba50482b3b47e393714eb77b19173d1f14 + So we can use the version we like when we decide what it should be while the next release + and can review the API before the release one other time. - CONFIG.md | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/hb-ot-layout.cc | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) -commit fce3bf8127321bb53b14eb8a5528a2347cd9be8a -Author: Behdad Esfahbod -Date: Wed Jun 19 20:34:29 2019 -0700 +commit d7454cf07eeb87600d8fcf23ada3617b6bda0f35 +Merge: 9cd76813 0b39c480 +Author: Ebrahim Byagowi +Date: Sat Jan 11 01:24:39 2020 +0330 - [config] Add HB_NO_LAYOUT_COLLECT_GLYPHS - - Part of + [subset] closure lookups for GSUB/GPOS - src/hb-config.hh | 1 + - src/hb-ot-layout.cc | 2 ++ - 2 files changed, 3 insertions(+) +commit 0b39c48064864850193bc80e2566839546be3551 +Author: Qunxin Liu +Date: Tue Oct 22 16:00:43 2019 -0700 -commit 6c725c7799bf4870fb8b4f896a537a2c0f7a1ccc -Author: Behdad Esfahbod -Date: Wed Jun 19 20:12:25 2019 -0700 + [subset] closure lookups for GSUB/GPOS - [config] Add HB_NO_LAYOUT_FEATURE_PARAMS - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + docs/harfbuzz-sections.txt | 1 + + src/hb-ot-layout-common.hh | 30 ++++++++ + src/hb-ot-layout-gpos-table.hh | 42 +++++++++++ + src/hb-ot-layout-gsub-table.hh | 39 ++++++++++ + src/hb-ot-layout-gsubgpos.hh | 158 ++++++++++++++++++++++++++++++++++++++++- + src/hb-ot-layout.cc | 44 ++++++++++++ + src/hb-ot-layout.h | 6 ++ + src/hb-subset-plan.cc | 56 +++++++++++++-- + src/hb-subset-plan.hh | 4 ++ + test/api/test-ot-face.c | 5 ++ + 10 files changed, 379 insertions(+), 6 deletions(-) - src/hb-config.hh | 1 + - src/hb-ot-layout-common.hh | 7 +++++-- - src/hb-ot-layout.cc | 6 ++---- - 3 files changed, 8 insertions(+), 6 deletions(-) +commit 42f4f1ea5013e9879fdb008021956c32247fa3db +Author: Ebrahim Byagowi +Date: Sat Jan 11 00:00:51 2020 +0330 -commit 27de7c44fe80e69c527578c99c26280ba9f26c15 -Author: Behdad Esfahbod -Date: Wed Jun 19 20:07:02 2019 -0700 + [ot-glyph] Add tests for hb_ot_glyph_decompose - [config] Add HB_NO_FACE_COLLECT_UNICODES - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + src/hb-ot-glyf-table.hh | 2 +- + test/api/Makefile.am | 1 + + test/api/test-ot-face.c | 24 +++--- + test/api/test-ot-glyph.c | 190 +++++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 207 insertions(+), 10 deletions(-) - src/hb-config.hh | 1 + - src/hb-face.cc | 5 ++--- - src/hb-ot-face-table-list.hh | 2 ++ - 3 files changed, 5 insertions(+), 3 deletions(-) +commit 06a1fcb3b47050257f7819eb3d6043cf78ebbac2 +Author: Ebrahim Byagowi +Date: Fri Jan 10 23:12:30 2020 +0330 -commit 3caa32d737e7c2b4fe6ccd10950760998524f573 -Author: Behdad Esfahbod -Date: Wed Jun 19 19:50:54 2019 -0700 + [ot-glyphs] fix the tests - [config] Add HB_NO_CMAP_LEGACY_SUBTABLES + src/hb-ot-cff1-table.cc | 4 ++-- + src/hb-ot-cff2-table.cc | 2 +- + src/hb-ot-glyph.h | 2 +- + test/api/test-ot-face.c | 25 +++++++++++++++++++++++-- + 4 files changed, 27 insertions(+), 6 deletions(-) + +commit 084a8182fb5c79cb8ebb41e015992fc4e4daea4a +Author: Ebrahim Byagowi +Date: Fri Jan 10 22:14:46 2020 +0330 + + [ot-glyphs] Move CFF glyph decompose logic to their tables - Part of https://vimeo.com/331852453/06eec89c65 + Thus making path decompose zero alloc on CFF/CFF2 - src/hb-config.hh | 1 + - src/hb-ot-cmap-table.hh | 16 ++++++++++++---- - 2 files changed, 13 insertions(+), 4 deletions(-) + docs/harfbuzz-sections.txt | 14 ++++---- + src/hb-ot-cff1-table.cc | 85 +++++++++++++++++++++++++++------------------- + src/hb-ot-cff1-table.hh | 3 +- + src/hb-ot-cff2-table.cc | 62 ++++++++++++++++----------------- + src/hb-ot-cff2-table.hh | 6 ++-- + src/hb-ot-glyph.cc | 41 ++-------------------- + 6 files changed, 93 insertions(+), 118 deletions(-) -commit 8e3cde67dfa4aa17c0f1156b4a4acd0c95bdbe6f -Author: Behdad Esfahbod -Date: Wed Jun 19 19:58:24 2019 -0700 +commit 61185235025db6b205dea65c5423905d69c457cd +Author: Ebrahim Byagowi +Date: Fri Jan 10 21:08:21 2020 +0330 - Fix MSVC build - - MSVC warning: - - c:\projects\harfbuzz\src\hb-ot-layout-gsubgpos.hh(2732): error C2121: '#': invalid character: possibly the result of a macro expansion [C:\projects\harfbuzz\build\harfbuzz.vcxproj] - - Clang warning for it: + [ot-glyph] move glyph decompose logic of glyf to itself - ./hb-ot-layout-gsubgpos.hh:2729:2: error: embedding a directive within macro arguments has undefined behavior [-Werror,-Wembedded-directive] + One less vector allocation yet isn't zero alloc yet + which needs more work. - src/hb-ot-layout-gsubgpos.hh | 18 +++++++++++------- - src/hb.hh | 1 + - 2 files changed, 12 insertions(+), 7 deletions(-) + src/hb-ot-glyf-table.hh | 31 +++++++++++++++---------------- + src/hb-ot-glyph.cc | 16 ++++++---------- + src/test-ot-glyph.cc | 7 ++++++- + 3 files changed, 27 insertions(+), 27 deletions(-) -commit c8f529a07eca06acf2216935921377e7cad8436f -Author: Behdad Esfahbod -Date: Wed Jun 19 19:33:15 2019 -0700 +commit 017f606c83cbf410cb61b7a4cdc2e9cd1bb3e1b6 +Author: Ebrahim Byagowi +Date: Fri Jan 10 20:44:15 2020 +0330 - [config] Add HB_NO_HINTING, enabled by HB_TINY - - Disables HintingDevice tables and Anchors addressing contour points. - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + [ot-glyph] rewrite the API - src/hb-config.hh | 3 ++- - src/hb-ot-layout-common.hh | 6 ++++++ - src/hb-ot-layout-gpos-table.hh | 7 +++++++ - 3 files changed, 15 insertions(+), 1 deletion(-) + src/hb-ot-glyph.cc | 176 ++++++++++++--------------------------------------- + src/hb-ot-glyph.h | 59 +++++++++-------- + src/test-ot-glyph.cc | 83 +++++++++++++++--------- + 3 files changed, 126 insertions(+), 192 deletions(-) -commit a849873124efea6577b4938b23501d9e4f4af2f4 -Author: Behdad Esfahbod -Date: Wed Jun 19 19:26:22 2019 -0700 +commit 9cd76813ab0280238dd7baa1bc58405333e5fa5d +Author: Evgeniy Reizner +Date: Fri Jan 10 17:36:41 2020 +0200 - [config] Add HB_NO_VAR to disable variations support, enabled by HB_TINY - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + Fix malformed readme. (#2093) - src/hb-config.hh | 1 + - src/hb-font.cc | 3 ++- - src/hb-ot-face-table-list.hh | 2 ++ - src/hb-ot-layout-common.hh | 34 ++++++++++++++++++++++++++++------ - src/hb-ot-layout-gsubgpos.hh | 18 +++++++++++++++--- - src/hb-ot-var.cc | 7 ++++++- - src/hb-subset-plan.cc | 2 ++ - 7 files changed, 56 insertions(+), 11 deletions(-) + README.md | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit 230adf2c417bbb6b5f367eb857dd6f98bea3ef26 -Author: Behdad Esfahbod -Date: Wed Jun 19 18:49:52 2019 -0700 +commit 05443e55bc232f0a6a08d5ef6cc58ebf3e373ee7 +Author: Ebrahim Byagowi +Date: Thu Nov 28 09:16:58 2019 +0330 - [config] Add HB_NO_OT_FONT_GLYPH_NAMES - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + [ot-glyph] Return empty path for empty faces - src/hb-config.hh | 1 + - src/hb-ot-face-table-list.hh | 4 +++- - src/hb-ot-font.cc | 5 ++++- - 3 files changed, 8 insertions(+), 2 deletions(-) + src/hb-ot-glyph.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit b0debc32f6cedfa76a4851aa391f88ed1860955d -Author: Behdad Esfahbod -Date: Wed Jun 19 18:42:39 2019 -0700 +commit 6e7602c1049a1b409c1db61ac2dfa2d2b57a170d +Author: Ebrahim Byagowi +Date: Thu Nov 28 08:43:00 2019 +0330 - [subset] Simplify collect_name_ids + [ot-glyph] Fix leaks - src/hb-subset-plan.cc | 19 ++----------------- - 1 file changed, 2 insertions(+), 17 deletions(-) + src/hb-ot-glyph.cc | 17 +++++++++++++++-- + 1 file changed, 15 insertions(+), 2 deletions(-) -commit a5897463d4d0b83cb1bfe4ae1477dac4e3851252 -Author: Behdad Esfahbod -Date: Wed Jun 19 18:36:35 2019 -0700 +commit 5b08596d60f4e8b8efb92d3701eeb100bdad71ca +Author: Ebrahim Byagowi +Date: Thu Nov 28 08:42:45 2019 +0330 - [config] Add HB_NO_STAT - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + [gvar] Don't apply anything when no coords is given - src/hb-config.hh | 1 + - src/hb-ot-face-table-list.hh | 2 ++ - src/hb-subset-plan.cc | 2 ++ - 3 files changed, 5 insertions(+) + src/hb-ot-var-gvar-table.hh | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) -commit ffc2b8d56e5d35b4dc19499c830d8fc4b643213a -Author: Behdad Esfahbod -Date: Wed Jun 19 18:33:29 2019 -0700 +commit 742aaa136343e1aed223612f0801a7e17bb92936 +Author: Ebrahim Byagowi +Date: Wed Nov 27 23:18:43 2019 +0330 - [config] Don't include name table in face if HB_NO_NAME - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + [ot-glyf] Fix leak issue - src/hb-ot-face-table-list.hh | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) + src/hb-ot-glyph.cc | 2 ++ + 1 file changed, 2 insertions(+) -commit 1432df102ebf206592f92677f48bb950871675b3 -Author: Behdad Esfahbod -Date: Wed Jun 19 18:32:40 2019 -0700 +commit fddf79fc3735274f0252596c28fff8034916b1ca +Author: Ebrahim Byagowi +Date: Mon Oct 21 14:11:27 2019 +0330 - [config] Disable hb-ot-font code if HB_NO_OT_FONT - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + [glyf] minor - src/hb-ot-font.cc | 5 +++++ - 1 file changed, 5 insertions(+) + src/hb-ot-glyf-table.hh | 7 ++----- + test/api/test-ot-face.c | 3 +++ + 2 files changed, 5 insertions(+), 5 deletions(-) -commit b1a2384a5244ea3ea63ca94eb095c4add2cd451d -Author: Behdad Esfahbod -Date: Wed Jun 19 17:34:12 2019 -0700 +commit 0b559d750fbc2a99d1605e1c35c228f938bf2bf1 +Author: Ebrahim Byagowi +Date: Mon Oct 21 13:52:48 2019 +0330 - [ucd] Print out table sizes + [ot-glyph] Improve API names - src/gen-ucd-table.py | 27 +++++++++++++++++++-------- - src/hb-ucd-table.hh | 1 - - 2 files changed, 19 insertions(+), 9 deletions(-) + docs/harfbuzz-sections.txt | 12 ++++++++++++ + src/hb-ot-glyph.cc | 10 +++++----- + src/hb-ot-glyph.h | 23 ++++++++++++----------- + src/test-ot-glyph.cc | 10 ++++++++-- + 4 files changed, 37 insertions(+), 18 deletions(-) -commit f4de0c775408e34474a688361fa319251e1a9c18 -Author: Behdad Esfahbod -Date: Wed Jun 19 17:08:26 2019 -0700 +commit af08f388ab2c2e48f39c0b31644baab5b37c1975 +Author: Ebrahim Byagowi +Date: Mon Oct 21 13:28:05 2019 +0330 - [config] Disable AAT map - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + [ot-glyph] Support CFF1's seac - src/hb-aat-map.cc | 15 +++++++-------- - src/hb-ot-shape.cc | 6 ++++++ - 2 files changed, 13 insertions(+), 8 deletions(-) + src/hb-ot-cff1-table.cc | 45 +++++++++++++++++++++------------------------ + 1 file changed, 21 insertions(+), 24 deletions(-) -commit d8bf6723a1176ca26e97e8015044c8829ec77c36 -Author: Behdad Esfahbod -Date: Wed Jun 19 17:04:16 2019 -0700 +commit 04ac7fb1c9f93c7002792e5d676b6a145d3be628 +Author: Ebrahim Byagowi +Date: Mon Oct 21 13:06:12 2019 +0330 - [config] Disable more legacy kerning - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + [ot-glyph] Add cff2 support - src/hb-ot-shape.cc | 4 +++- - src/hb-ot-shape.hh | 8 ++++++++ - 2 files changed, 11 insertions(+), 1 deletion(-) + src/hb-ot-cff1-table.cc | 45 +++++++++++++++---------- + src/hb-ot-cff2-table.cc | 87 +++++++++++++++++++++++++++++++++++++++++++++++++ + src/hb-ot-cff2-table.hh | 4 +++ + src/hb-ot-glyf-table.hh | 26 +++++++++------ + src/hb-ot-glyph.cc | 25 +++++++------- + src/hb-ot-glyph.h | 2 +- + 6 files changed, 148 insertions(+), 41 deletions(-) -commit 43d7048d59b1a0af62b80bd914805bdec74a29d2 -Author: Behdad Esfahbod -Date: Wed Jun 19 17:02:32 2019 -0700 +commit 5cc09c462bad8532c220813b1cccb72d2e2ff855 +Author: Ebrahim Byagowi +Date: Sun Oct 20 16:24:14 2019 +0330 - [config] More trak disabling - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + [ot-glyph] Initial cff1 support - src/hb-ot-shape.cc | 4 +++- - src/hb-ot-shape.hh | 8 ++++++++ - 2 files changed, 11 insertions(+), 1 deletion(-) + src/hb-ot-cff1-table.cc | 110 ++++++++++++++++++++++++++++++++++++++++++++++++ + src/hb-ot-cff1-table.hh | 1 + + src/hb-ot-glyph.cc | 5 +++ + 3 files changed, 116 insertions(+) -commit d84932ba50482b3b47e393714eb77b19173d1f14 -Author: Behdad Esfahbod -Date: Wed Jun 19 16:57:48 2019 -0700 +commit 3dcba9f21554db54daf89d4566938c5a69636b5b +Author: Ebrahim Byagowi +Date: Sun Oct 20 16:23:27 2019 +0330 - [config] add HB_NO_OT_SHAPE_FRACTIONS, enabled in HB_LEAN - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + [ot-glyph] Redesign the API - src/hb-config.hh | 1 + - src/hb-ot-shape.cc | 9 +++++++++ - src/hb-ot-shape.hh | 10 ++++++++++ - 3 files changed, 20 insertions(+) + src/hb-ot-glyph.cc | 143 ++++++++++++++++++++++++++++++++++++++++++++------- + src/hb-ot-glyph.h | 40 +++++++++----- + src/test-ot-glyph.cc | 38 ++++++++++---- + 3 files changed, 179 insertions(+), 42 deletions(-) -commit eaf4a7364c28663720a9da57bf4d576b6009e17d -Author: Behdad Esfahbod -Date: Wed Jun 19 16:51:13 2019 -0700 +commit b8b3ff1a02c637163d8629d51843f6822a12cdef +Author: Ebrahim Byagowi +Date: Mon Oct 14 15:37:41 2019 +0330 - [config] Minor trak disable - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + [glyph] Don't copy, write directly into result - src/hb-ot-shape.cc | 2 ++ - 1 file changed, 2 insertions(+) + src/hb-ot-glyf-table.hh | 26 ++++++++++---------------- + src/hb-ot-glyph.cc | 25 ++++++++++++++++--------- + src/test-ot-glyph.cc | 6 ++++-- + 3 files changed, 30 insertions(+), 27 deletions(-) -commit 971330c0588307bcd73934e44c6343db55b1f5b6 -Author: Behdad Esfahbod -Date: Wed Jun 19 16:37:35 2019 -0700 +commit f883c31cce18372269fc1e46b3379295de7c9f7c +Author: Ebrahim Byagowi +Date: Sun Oct 13 12:31:53 2019 +0330 - [config] Add HB_NO_LANGUAGE_PRIVATE_SUBTAG + Implement glyph outline path API - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + Got help from https://github.com/opentypejs/opentype.js/blob/4e0bb99/src/tables/glyf.js#L222 - src/hb-config.hh | 1 + - src/hb-ot-tag.cc | 4 ++++ - 2 files changed, 5 insertions(+) + src/Makefile.am | 5 ++ + src/Makefile.sources | 2 + + src/harfbuzz.cc | 1 + + src/hb-ot-glyf-table.hh | 119 +++++++++++++++++++++++++++++++++----------- + src/hb-ot-glyph.cc | 50 +++++++++++++++++++ + src/hb-ot-glyph.h | 52 +++++++++++++++++++ + src/hb-ot-var-gvar-table.hh | 6 ++- + src/hb-ot.h | 1 + + src/test-ot-glyph.cc | 84 +++++++++++++++++++++++++++++++ + 9 files changed, 290 insertions(+), 30 deletions(-) -commit f642a5fa6c42b145574593a0e18815dc74d3c617 -Author: Behdad Esfahbod -Date: Wed Jun 19 16:36:09 2019 -0700 +commit d2ab1ec65b1697b113b2b923c63e300659cf1998 +Author: Michiharu Ariza +Date: Thu Jan 9 20:24:16 2020 -0800 - Restructure code + fixes oss-fuzz 19978: Null-dereference READ (#2091) - src/hb-ot-tag.cc | 44 ++++++++++++++++++++------------------------ - 1 file changed, 20 insertions(+), 24 deletions(-) + src/hb-ot-var-hvar-table.hh | 1 + + ...-testcase-minimized-hb-subset-fuzzer-5148388450631680 | Bin 0 -> 2685 bytes + 2 files changed, 1 insertion(+) -commit d2ff73b256599a655e4ddedbe1ca75abdf837d23 -Author: Behdad Esfahbod -Date: Wed Jun 19 16:28:08 2019 -0700 +commit 5e55a6d6910e3c942638ad6e9fa1e38befb36c12 +Author: Ebrahim Byagowi +Date: Thu Jan 9 23:40:40 2020 +0330 - [config] Remove remaining AAT context bits if HB_NO_OT_KERN + [subset/hvar] minor - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + not super excited about state of the code around, assuming was needed + so let's add this may unlikely check also. - src/hb-aat-layout.cc | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) + src/hb-ot-var-hvar-table.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit 588697afd0ddf411e8201866ade1f593ccb61aab -Author: Behdad Esfahbod -Date: Wed Jun 19 16:24:51 2019 -0700 +commit 257a197ae723b55d26c3254dbe1edd8b0509af1b +Author: Ebrahim Byagowi +Date: Thu Jan 9 22:55:45 2020 +0330 - [config] Add HB_NO_OT_KERN, enabled by HB_MINI / HB_NO_LEGACY + Fail serialize when map has incorrect value - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + fixes https://crbug.com/oss-fuzz/19956 + + am not super happy with the fix, guess we should do some check + before the memcpy anyway as @blueshade7 thinks also, + so let's have it or revert it when we have a better approach for the case. - src/hb-config.hh | 1 + - src/hb-ot-face-table-list.hh | 6 +++++- - src/hb-ot-layout.cc | 4 ++-- - src/hb-ot-shape.cc | 16 ++++++++++++++-- - src/hb-ot-shape.hh | 4 ++++ - 5 files changed, 26 insertions(+), 5 deletions(-) + src/hb-ot-layout-common.hh | 7 ++++++- + ...-testcase-minimized-hb-subset-fuzzer-5708764082864128 | Bin 0 -> 6452 bytes + 2 files changed, 6 insertions(+), 1 deletion(-) -commit 2e3e929d2b0fa6026c55eb92f91de0498fb22646 -Author: Behdad Esfahbod -Date: Wed Jun 19 15:50:13 2019 -0700 +commit 1db2c1d0da9eed4b330ca0c6a46c19482c6e377b +Author: Qunxin Liu +Date: Tue Jan 7 11:10:40 2020 -0800 - Fix build + fix for cmap4 and OS_2 subsetting: maximum character code allowed is 0xFFFF - src/hb-ot-face-table-list.hh | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) + src/hb-ot-cmap-table.hh | 14 ++++++++---- + src/hb-ot-os2-table.hh | 4 ++-- + test/api/fonts/Mplus1p-Regular-cmap4-testing.ttf | Bin 0 -> 2024 bytes + test/api/fonts/Mplus1p-Regular.ttf | Bin 0 -> 1757292 bytes + test/api/test-subset-cmap.c | 24 +++++++++++++++++++++ + .../Mplus1p-Regular.default.1D715,1D7D8,41,42.ttf | Bin 0 -> 2260 bytes + ...plus1p-Regular.drop-hints.1D715,1D7D8,41,42.ttf | Bin 0 -> 1532 bytes + test/subset/data/tests/japanese.tests | 2 +- + 8 files changed, 37 insertions(+), 7 deletions(-) -commit 631da9d816da381c5fd4b3cc640c41fda736a96f -Author: Behdad Esfahbod -Date: Wed Jun 19 15:36:14 2019 -0700 +commit 8ed46c3678cd4518efe5c9907bb9d22e6161bbd5 +Author: Ebrahim Byagowi +Date: Tue Jan 7 23:43:53 2020 +0330 - [config] Remove tables from hb_face_t for disabled features + [fuzz] minor, add another already fixed case - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + https://crbug.com/oss-fuzz/19907 - src/Makefile.sources | 1 + - src/hb-ot-face-table-list.hh | 112 +++++++++++++++++++++++++++++++++++++++++++ - src/hb-ot-face.cc | 8 +--- - src/hb-ot-face.hh | 52 ++------------------ - src/hb-ot-layout.cc | 2 + - 5 files changed, 120 insertions(+), 55 deletions(-) + ...z-testcase-minimized-hb-subset-fuzzer-5695925913911296 | Bin 0 -> 385 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) -commit e710888188ff3285a162c25c89d886d9535d9f02 -Author: Misty De Meo -Date: Tue Jun 18 15:20:38 2019 -0700 +commit 341407f7a52680be84144eb285e6cb09131b2956 +Author: Ebrahim Byagowi +Date: Tue Jan 7 09:10:24 2020 +0330 - coretext: remove trailing macro from SCRATCH_RESTORE + [fuzz] minor, upload another fixed case + + https://crbug.com/oss-fuzz/19878 - src/hb-coretext.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + ...z-testcase-minimized-hb-subset-fuzzer-5169035432165376 | Bin 0 -> 108 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) -commit 10bac21bb5b25cf20c2198934e99e444625dfd97 -Author: Behdad Esfahbod -Date: Tue Jun 18 15:15:06 2019 -0700 +commit 7950beecfcc66194541437349c91625fd27c0071 +Author: Ebrahim Byagowi +Date: Mon Jan 6 21:25:00 2020 +0330 - [coretext/uniscribe/directwrite] Remove extra semicolons + [subset] Fix null pointer dereference in hvar/vvar subset (#2085) - Fixes https://github.com/harfbuzz/harfbuzz/pull/1783 + Rest of the code assumes there is at least one subtable, lets return here if not. + + * https://crbug.com/oss-fuzz/19827 + * https://crbug.com/oss-fuzz/19847 - src/hb-coretext.cc | 2 +- - src/hb-directwrite.cc | 2 +- - src/hb-uniscribe.cc | 2 +- - 3 files changed, 3 insertions(+), 3 deletions(-) + src/hb-ot-var-hvar-table.hh | 2 ++ + ...lusterfuzz-testcase-hb-subset-fuzzer-5641053680173056 | Bin 0 -> 4229 bytes + ...-testcase-minimized-hb-subset-fuzzer-5650879734874112 | Bin 0 -> 3278 bytes + 3 files changed, 2 insertions(+) -commit f0b0fd4e78e94315c9d01b9232ebfb09bbfef556 -Author: Behdad Esfahbod -Date: Tue Jun 18 14:40:24 2019 -0700 +commit 8ed27757b197670ee9f91cfb27ec50bcd3045a2f +Author: Ebrahim Byagowi +Date: Mon Jan 6 19:01:13 2020 +0330 - Remove dead code + Remove _POSIX_C_SOURCE definition from the project + + Added fpr suncc support but apparently is causing more issues + even on suncc so let's see if we can go without it. + + Fixes #2084 - src/hb-ot-layout.cc | 10 ++-------- - 1 file changed, 2 insertions(+), 8 deletions(-) + src/hb-blob.cc | 12 ------------ + 1 file changed, 12 deletions(-) -commit d7e27cd65a085a76c85cddd93cea48ce4b7be03f -Author: Behdad Esfahbod -Date: Tue Jun 18 14:38:05 2019 -0700 +commit e7d1aeb61023dff22852048561f6161c6972ec75 +Author: Ebrahim Byagowi +Date: Mon Jan 6 12:48:22 2020 +0330 - [config] Don't use VORG table if HB_NO_OT_FONT_CFF - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + [hvar] minor, fix unlikely statement - src/hb-ot-font.cc | 2 ++ - 1 file changed, 2 insertions(+) + src/hb-ot-var-hvar-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 37f8ebff5f1973423c7e4ed9dea88881d0642b61 -Author: Behdad Esfahbod -Date: Tue Jun 18 14:33:49 2019 -0700 +commit 57b1534198ae07c840010cff5af7997c5f738e88 +Author: Ebrahim Byagowi +Date: Mon Jan 6 12:46:50 2020 +0330 - [config] Fixup for AAT ltag table access - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + [glyf] minor, fix unlikely statements - src/hb-aat-layout.hh | 8 -------- - src/hb-ot-name-table.hh | 2 +- - 2 files changed, 1 insertion(+), 9 deletions(-) + src/hb-ot-glyf-table.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit f08066ce9a41469e2a7396f0accd61e1c02e5649 -Author: Behdad Esfahbod -Date: Tue Jun 18 14:29:27 2019 -0700 +commit 9e48c6e9ef3f6d398c7140933a2cd90980f0ed5b +Author: Ebrahim Byagowi +Date: Tue Dec 31 15:57:39 2019 +0330 - [config] One more morx disabling - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + minor, use private API of hb_set_t where possible - src/hb-ot-layout.cc | 3 +++ - 1 file changed, 3 insertions(+) + src/hb-ot-var-hvar-table.hh | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) -commit 231d0257883ec9e8904afae1adfd73f3c225f177 -Author: Behdad Esfahbod -Date: Tue Jun 18 14:25:52 2019 -0700 +commit ce114d6b27976f38effba015d9cdf00b96c2fdfc +Author: Ebrahim Byagowi +Date: Tue Dec 31 15:53:02 2019 +0330 - [config] Don't compile AAT API if HB_NO_AAT - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + minor, tweak spaces - src/hb-aat-layout.cc | 131 ++++++++++++++++----------------------------------- - src/hb-ot-shape.cc | 19 ++++++-- - 2 files changed, 56 insertions(+), 94 deletions(-) + src/hb-aat-fdsc-table.hh | 4 ++-- + src/hb-aat-layout-ankr-table.hh | 2 +- + src/hb-aat-layout-just-table.hh | 36 +++++++++++++++--------------- + src/hb-aat-layout-trak-table.hh | 4 ++-- + src/hb-debug.hh | 2 +- + src/hb-ot-cff-common.hh | 6 ++--- + src/hb-ot-cff1-table.hh | 12 +++++----- + src/hb-ot-color-cbdt-table.hh | 2 +- + src/hb-ot-gasp-table.hh | 4 ++-- + src/hb-ot-layout-common.hh | 14 ++++++------ + src/hb-ot-layout-gsubgpos.hh | 8 +++---- + src/hb-ot-layout-jstf-table.hh | 2 +- + src/hb-ot-math-table.hh | 33 ++++++++++++++------------- + src/hb-ot-shape-complex-indic-machine.rl | 2 +- + src/hb-ot-shape-complex-myanmar-machine.rl | 2 +- + src/hb-ot-var-avar-table.hh | 2 +- + src/hb-ot-var-gvar-table.hh | 18 +++++++-------- + src/hb-ot-var-hvar-table.hh | 12 +++++----- + src/hb-subset-cff-common.cc | 2 +- + src/hb-subset-cff-common.hh | 34 ++++++++++++++-------------- + src/hb-subset-cff1.cc | 16 ++++++------- + src/hb-subset-cff2.cc | 8 +++---- + util/options.cc | 2 +- + 23 files changed, 114 insertions(+), 113 deletions(-) -commit bf9424a9a198b99d49c005536a10f27387630064 -Author: Behdad Esfahbod -Date: Tue Jun 18 13:31:35 2019 -0700 +commit 33c3d63a0a9734a9cca9411a666d6ba9793d642f +Merge: 68c1798a ea8fdfa0 +Author: Ebrahim Byagowi +Date: Tue Dec 31 13:52:50 2019 +0330 - [config] Don't compile unused layout API if HB_NO_LAYOUT_UNUSED + Merge pull request #1594 from harfbuzz/var-subset - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 - - src/hb-ot-layout.cc | 16 ++-------------- - 1 file changed, 2 insertions(+), 14 deletions(-) + Issue 1558: [subset] TrueType/CFF2 variable font -commit eb9798ef733da53e69966054b67752cd8937eb7b -Author: Behdad Esfahbod -Date: Tue Jun 18 13:29:55 2019 -0700 +commit 68c1798a6703f9476b29c53abe95dd59ae280613 +Author: Khaled Hosny +Date: Wed Dec 18 15:57:14 2019 +0200 - [config] Dont' compile buffer message API if HB_NO_BUFFER_MESSAGE + [coretext] Use kCTFontOpenTypeFeatureTag - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + Instead of trying to map OpenType features to AAT feature selectors + which only works for a small subset of OpenType features, use the + simpler kCTFontOpenTypeFeatureTag with OpenType feature tags directly. + + With this change, features like cvXX can be enabled in coretext shaper, + while they were previously ignored due to missing mapping. + + This seems to work even with AAT fonts that don’t have OpenType layout + tables, which suggests that CoreText is doing the mapping itself in this + case. + + kCTFontOpenTypeFeatureTag seems to have been introduced in macOS 10.10 + and iOS 8.0, though, so its use is conditional on version check for now. + Not sure how to check iOS version, so I left this out. - src/hb-buffer.cc | 2 ++ - src/hb-buffer.hh | 5 ++++- - 2 files changed, 6 insertions(+), 1 deletion(-) + src/hb-coretext.cc | 20 +++++++++++++++++++- + 1 file changed, 19 insertions(+), 1 deletion(-) -commit be1c0ab2186a728eabdf6666632a9f759474f901 -Author: Behdad Esfahbod -Date: Tue Jun 18 13:26:03 2019 -0700 +commit b28c282585afd3bff844e84eae7f29e1a1267aef +Author: Marcel Fabian Krüger +Date: Tue Dec 17 02:58:51 2019 +0100 - [config] Don't compile buffer serialize API if HB_NO_BUFFER_SERIALIZE - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + Check to avoid overflows - src/hb-buffer-serialize.cc | 19 +++++++------------ - src/test-buffer-serialize.cc | 7 ++++++- - 2 files changed, 13 insertions(+), 13 deletions(-) + src/hb-sanitize.hh | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) -commit bdbabd110cfdb4c59cf24bd500ce63073a5213e4 -Author: Behdad Esfahbod -Date: Tue Jun 18 13:21:25 2019 -0700 +commit d70afb1e5a32f23d03cc69bbbc725d1e668eb616 +Author: Marcel Fabian Krüger +Date: Tue Dec 17 02:29:28 2019 +0100 - Minor header include cleanup + Clamp max_ops to upper bound in hb-sanitize.hh - src/hb-aat-layout.cc | 1 - - src/hb-ot-math.cc | 3 --- - src/hb-ot-name.cc | 1 - - src/hb-ot-var.cc | 4 ++-- - 4 files changed, 2 insertions(+), 7 deletions(-) + src/hb-sanitize.hh | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) -commit 83de3a60ab7383cf3ee25c1f8c33a45a7778d003 +commit aa43e183dda2288b9d83fe7473f357422a4771f1 Author: Behdad Esfahbod -Date: Tue Jun 18 13:18:15 2019 -0700 +Date: Sun Dec 15 16:04:00 2019 -0800 - [config] Don't compile color API if HB_NO_COLOR + [perf Add texts/en-words.txt - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + $ cat docs/usermanual-*.xml src/hb*.cc src/hb*.{h,hh,cc} | sed 's/[^a-zA-Z ]/ /g' | tr ' ' '\n' | sort | uniq | grep . > perf/texts/en-words.txt - src/hb-ot-color.cc | 55 +++++++++------------------------------------------- - src/test-ot-color.cc | 9 ++++++++- - 2 files changed, 17 insertions(+), 47 deletions(-) + perf/texts/en-words.txt | 12392 ++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 12392 insertions(+) -commit 350f98ea47aaf0fe008065b92c8b6fe2bc519fa7 -Author: Behdad Esfahbod -Date: Tue Jun 18 13:11:41 2019 -0700 +commit 80762cc4d0663a9ca465e94e73424e3b352de24c +Author: Ebrahim Byagowi +Date: Sun Dec 15 23:21:10 2019 +0330 - [config] Don't compile name table API if HB_NO_NAME + [ci] Speedup tsan bot - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + We don't expect fails thus expecting readable failure backtrace so let's speed it up instead - src/hb-ot-name.cc | 25 +++++-------------------- - src/test-ot-name.cc | 5 ++++- - 2 files changed, 9 insertions(+), 21 deletions(-) + .circleci/config.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit da51a2cb0efae664d4ee83c6036f29a21621e993 -Author: Behdad Esfahbod -Date: Tue Jun 18 13:09:22 2019 -0700 +commit b79ceac3c68a41a0b7f624c0f172e99eb7498737 +Author: Evgeniy Reizner +Date: Sun Dec 15 16:50:01 2019 +0200 + + Prefer UINT_MAX instead of uint overflow. + + Also, prefer HB_FEATURE_GLOBAL_START and HB_FEATURE_GLOBAL_END. + + src/hb-buffer.cc | 6 +++--- + src/hb-common.cc | 4 ++-- + src/hb-face.hh | 2 +- + src/hb-graphite2.cc | 2 +- + src/hb-ot-map.hh | 4 ++-- + src/hb-ot-shape-complex-arabic.cc | 6 +++--- + src/hb-ot-shape.cc | 2 +- + src/hb-set.hh | 4 ++-- + test/shaping/data/aots/hb-aots-tester.cpp | 4 ++-- + util/ansi-print.cc | 6 +++--- + util/options.cc | 2 +- + util/options.hh | 2 +- + 12 files changed, 22 insertions(+), 22 deletions(-) + +commit b618e0ae1368aa22050ce0fe48329b723e2fd632 +Author: Evgeniy Reizner +Date: Sun Dec 15 16:26:50 2019 +0200 - [config] Don't compile math API if HB_NO_MATH + Remove non-breaking spaces from comments. - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + `0xC2A0` was used, for some reasons. It's not really a problem, but Qt Creator + constatly trying to replace them with regular spaces, so I have to edit those + files separately. - src/hb-ot-math.cc | 47 +++++++---------------------------------------- - 1 file changed, 7 insertions(+), 40 deletions(-) - -commit 737436d3f8aacfd0bd586cd54d7034bae3afc4e1 -Author: Behdad Esfahbod -Date: Tue Jun 18 13:07:44 2019 -0700 - - Streamline HB_NO_CFF - - src/hb-ot-cff1-table.cc | 7 +++++-- - src/hb-ot-cff2-table.cc | 7 +++++-- - src/hb-subset-cff-common.cc | 7 +++++++ - src/hb-subset-cff1.cc | 7 +++++-- - src/hb-subset-cff2.cc | 7 +++++-- - 5 files changed, 27 insertions(+), 8 deletions(-) + src/hb-buffer.cc | 4 ++-- + src/hb-common.cc | 20 ++++++++++---------- + 2 files changed, 12 insertions(+), 12 deletions(-) -commit 60653a7adbbd8143d187b3edf33cb7a2dddadf74 -Author: Behdad Esfahbod -Date: Tue Jun 18 13:01:11 2019 -0700 +commit 780d640c02e01664ea13729f4e4b416c440c3cdf +Author: Evgeniy Reizner +Date: Sun Dec 15 16:11:37 2019 +0200 - Remove HB_VECTOR_SIZE + Remove unnecessary check in hb_buffer_t::set_masks. - It was cumbersome to get it to work reliably, for dubious performance - gain, mostly in the subsetter maybe... + Bounds are already checked by the caller. - Life is easier without. It was disabled forever anyway. + Closes #2073 - src/hb-algs.hh | 36 +++++++++--------------------------- - src/hb-null.hh | 4 ++-- - src/hb-static.cc | 4 ++-- - src/hb.hh | 32 -------------------------------- - 4 files changed, 13 insertions(+), 63 deletions(-) + src/hb-buffer.cc | 7 ------- + 1 file changed, 7 deletions(-) -commit 24060d3aa77f1e1a18960cc61c3d1ac241875507 -Author: Behdad Esfahbod -Date: Tue Jun 18 12:50:42 2019 -0700 +commit 34ed8e7218d9147a6ccd99198db594cf8f66f61b +Author: Evgeniy Reizner +Date: Fri Dec 13 07:25:34 2019 +0200 - Add hb_bitwise_neg + Prefer _hb_glyph_info_is_unicode_mark where possible. - src/hb-algs.hh | 33 +++++++++++++++++++++------------ - 1 file changed, 21 insertions(+), 12 deletions(-) + src/hb-ot-shape-fallback.cc | 6 +++--- + src/hb-ot-shape-normalize.cc | 6 +++--- + 2 files changed, 6 insertions(+), 6 deletions(-) -commit 7cf9169078f35299ec0633a7b212256acdd71661 -Author: Behdad Esfahbod -Date: Tue Jun 18 12:44:03 2019 -0700 +commit 3e1a2632dce396157a4e8ff6669740a145e7062c +Author: Ebrahim Byagowi +Date: Thu Dec 12 15:48:27 2019 +0330 - Remove accidentally left cruft + [unscribe] fix leak issue + + with no user_data provided, `free` will be called with `(0)` thus silently having a leak - src/hb-algs.hh | 2 +- + src/hb-uniscribe.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 6172ec5d879653c536d7cb3d3b3760fbb6d0f3f3 -Author: Behdad Esfahbod -Date: Tue Jun 18 12:41:56 2019 -0700 +commit e75d785b51d713de2e37ad41c62de5423fc95949 +Author: Ebrahim Byagowi +Date: Thu Dec 12 15:42:37 2019 +0330 - Remove (unused) posix_memalign fallback + [doc] fix hb_blob_create call example - Was wrong. The returned pointer couldn't be passed to free(). Ouch! + otherwise free(0) will be called that silently makes a leak - configure.ac | 2 +- - src/hb.hh | 34 ---------------------------------- - 2 files changed, 1 insertion(+), 35 deletions(-) + docs/usermanual-object-model.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit eb28d6e48b02a8c49875cfcd084a16c1c66c367e -Author: Ebrahim Byagowi -Date: Tue Jun 18 12:14:10 2019 +0430 +commit 4ef597e17003402c0ceebcb5a0c185f08c97aac1 +Author: Daeren +Date: Wed Dec 11 13:44:05 2019 +0300 - [ci] Test no build system builds + Fix unary minus operator applied to unsigned int - Introduced in aa3450c, let's preserve it + Applying unary minus operator to unsigned int causes the following error on MSVS: error C4146 + This patch fixes the error. - .circleci/config.yml | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) + src/hb-ot-color-sbix-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit efef672911dd6c3b80e53294f3fcd59dbb64597a -Author: Behdad Esfahbod -Date: Mon Jun 17 22:57:51 2019 -0700 +commit 1770493cf5e0c098a0566281bc1dd089101f0f78 +Author: Daeren +Date: Wed Dec 11 13:44:15 2019 +0300 - Fix cmake build + Fix unary minus operator applied to unsigned int - Hopefullly. + Applying unary minus operator to unsigned int causes the following error on MSVS: error C4146 + This patch fixes the error. - CMakeLists.txt | 4 ---- - 1 file changed, 4 deletions(-) + src/hb-ot-color-cbdt-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit aa3450cac148280f747fb88864b6fcc4ec70cc51 +commit a061e47fcc84a8947ca478b7ff2d02efeafecbce Author: Behdad Esfahbod -Date: Mon Jun 17 22:41:49 2019 -0700 +Date: Tue Dec 10 13:31:50 2019 -0600 - [config] Don't compile disabled features - - This makes it possible to include all .cc files into build, even if not - building CoreText, Uniscribe, etc. - - This was mostly to help custom builders. But also means that we can - include all files in our own build system. Not sure if we should. - Definitely simplifies things, but slightly only. + Change a few HB_INTERNAL static methods to static inline - src/Makefile.am | 1 + - src/hb-coretext.cc | 6 ++++++ - src/hb-directwrite.cc | 6 ++++++ - src/hb-ft.cc | 5 +++++ - src/hb-glib.cc | 5 +++++ - src/hb-gobject-enums.cc.tmpl | 7 +++++++ - src/hb-gobject-structs.cc | 5 +++++ - src/hb-graphite2.cc | 7 +++++++ - src/hb-icu.cc | 5 +++++ - src/hb-uniscribe.cc | 4 ++++ - 10 files changed, 51 insertions(+) + src/hb-ot-layout-gpos-table.hh | 10 +++++----- + src/hb-ot-layout-gsub-table.hh | 10 +++++----- + src/hb-ot-layout-gsubgpos.hh | 2 +- + 3 files changed, 11 insertions(+), 11 deletions(-) -commit 33d8b76e74579a27b06fa788d0bf696a9dd44cc4 +commit dd3972a3649e30c2bee88303ee56f88b260deb53 Author: Behdad Esfahbod -Date: Mon Jun 17 21:54:20 2019 -0700 +Date: Tue Dec 10 13:21:26 2019 -0600 - [config] Flesh out CONFIG.md + [GSUB] Simplify Extension is_reverse() - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + We don't allow extension lookups to chain to another extension lookup. + Simplify code for that. - CONFIG.md | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- - 1 file changed, 84 insertions(+), 3 deletions(-) + src/hb-ot-layout-gpos-table.hh | 10 +++++----- + src/hb-ot-layout-gsub-table.hh | 14 +++++--------- + 2 files changed, 10 insertions(+), 14 deletions(-) -commit 23ccd00a3d5033b812f2bebcc5b793a4415b252b +commit 858b627984c50e94bc71b9530c340a8fff59d330 Author: Behdad Esfahbod -Date: Mon Jun 17 20:35:04 2019 -0700 +Date: Tue Dec 10 13:18:32 2019 -0600 - Minor + [machinery] Remove CastR<>() - src/hb-config.hh | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) + src/hb-machinery.hh | 8 -------- + src/hb-open-file.hh | 2 +- + src/hb-ot-layout-common.hh | 4 ++-- + src/hb-ot-layout-gpos-table.hh | 2 +- + src/hb-ot-layout-gsub-table.hh | 6 +++--- + src/hb-ot-layout-gsubgpos.hh | 8 ++++---- + 6 files changed, 11 insertions(+), 19 deletions(-) -commit 23768a99e08cbe691772b7514c023d3184989ff8 +commit b84ceb2fcf7a71fe03f499dd0c4611254b561f1d Author: Behdad Esfahbod -Date: Mon Jun 17 20:29:29 2019 -0700 +Date: Tue Dec 10 13:02:48 2019 -0600 - [config] Replace HAVE_FALLBACK with HB_NO_FALLBACK_SHAPE - - This disables fallback shaper in tiny builds. Projects that don't - use our build system and want to disable fallback shaper (eg. Firefox) - should define HB_NO_FALLBACK_SHAPE now. - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + [machinery] Remove CastP - CMakeLists.txt | 2 -- - configure.ac | 8 -------- - src/Makefile.am | 4 ---- - src/Makefile.sources | 5 +---- - src/hb-config.hh | 1 + - src/hb-fallback-shape.cc | 3 +++ - src/hb-shaper-list.hh | 2 +- - 7 files changed, 6 insertions(+), 19 deletions(-) + src/hb-machinery.hh | 8 -------- + src/hb-ot-layout-gpos-table.hh | 8 +++++--- + src/main.cc | 4 ++-- + 3 files changed, 7 insertions(+), 13 deletions(-) -commit 3a9394635ffd663d8acd0715236dd01d9f22f3b8 +commit 85574ec28735c1e9d53ccff9abafbbc25cf34f0f Author: Behdad Esfahbod -Date: Mon Jun 17 20:10:36 2019 -0700 +Date: Tue Dec 10 12:52:32 2019 -0600 - Add CONFIG.md - - https://github.com/harfbuzz/harfbuzz/issues/1652 + [machinery] Minor - CONFIG.md | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ - Makefile.am | 1 + - README.md | 2 ++ - 3 files changed, 54 insertions(+) + src/hb-machinery.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 1c56b5d1d8307efd12519556e41fc50c5371f136 +commit e101a6725731a2e82f3e2a146c3281111c747d90 Author: Behdad Esfahbod -Date: Mon Jun 17 14:23:04 2019 -0700 +Date: Tue Dec 10 12:46:14 2019 -0600 - [serialize] Fix copy() calling operator= - - https://github.com/googlefonts/harfbuzz/commit/9f610ae239a11e86f94621e26bc15849b65ce41b#commitcomment-33944686 + [perf] Add texts/fa-thelittleprince.txt - src/hb-serialize.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + perf/texts/en-thelittleprince.txt | 3 - + perf/texts/fa-thelittleprince.txt | 923 ++++++++++++++++++++++++++++++++++++++ + 2 files changed, 923 insertions(+), 3 deletions(-) -commit 6492b2345cd913223b0eb931e9e11f7e5ad33049 +commit 2c781a670108d52149a61fb7bc5b9b6eb3592b9d Author: Behdad Esfahbod -Date: Mon Jun 17 14:19:13 2019 -0700 +Date: Tue Dec 10 12:43:42 2019 -0600 - Minor + [perf] More rename - src/hb-open-type.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + perf/run.sh | 2 +- + perf/{text => texts}/en-thelittleprince.txt | 0 + perf/{text => texts}/fa-monologue.txt | 0 + 3 files changed, 1 insertion(+), 1 deletion(-) -commit 8938dd23c64f80dbd31f87133d9df88cd0c98c1a +commit d703392afef578cbeb17968783109c8cbe117890 Author: Behdad Esfahbod -Date: Mon Jun 17 14:12:11 2019 -0700 +Date: Tue Dec 10 12:42:29 2019 -0600 - Use injected class name + [perf] Adjust text/fa-monologue.txt - src/hb-open-type.hh | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) + perf/text/fa-monologue.txt | 17 ----------------- + 1 file changed, 17 deletions(-) -commit bfb5569d530a2b65dafd0d9be45d594af9e742ce +commit 19d1b9d4f319b75121bfbba677122ca74bf6f796 Author: Behdad Esfahbod -Date: Mon Jun 17 14:06:04 2019 -0700 +Date: Tue Dec 10 12:39:01 2019 -0600 - Disable non-OpenType kerning with hb-ft in HB_TINY + [perf] Renames - src/hb-ft.cc | 4 ++++ - 1 file changed, 4 insertions(+) + perf/run.sh | 2 +- + perf/text/{littleprince.txt => en-thelittleprince.txt} | 0 + perf/text/{test-long-arabic-paragraph.txt => fa-monologue.txt} | 0 + 3 files changed, 1 insertion(+), 1 deletion(-) -commit 0819f3ca863af520fe546e6ef0596300e9e28b01 +commit 6a60ca117c51e15279ba39dcae19301d24789c62 Author: Behdad Esfahbod -Date: Mon Jun 17 14:02:47 2019 -0700 +Date: Tue Dec 10 12:32:37 2019 -0600 - Deprecate v_kerning callback again + [algs] Fold last other bsearch() in - Part of https://github.com/harfbuzz/harfbuzz/issues/1682 + Now truly have only one bsearch implementation. - docs/harfbuzz-sections.txt | 6 +++--- - src/hb-deprecated.h | 23 +++++++++++++++++++++++ - src/hb-font.cc | 7 +++---- - src/hb-font.h | 20 -------------------- - src/hb-font.hh | 2 +- - 5 files changed, 30 insertions(+), 28 deletions(-) + src/hb-ot-cmap-table.hh | 37 ++++++++++++++++++++----------------- + 1 file changed, 20 insertions(+), 17 deletions(-) -commit eb2825c7f140185f41922a371434873a0114ef67 +commit 53dc8d944f71481ce7f18a32aca63c3f004e6e0c +Author: Ebrahim Byagowi +Date: Tue Dec 10 21:53:30 2019 +0330 + + Add initial shaping performance test and profiler + + perf/fonts/Amiri-Regular.ttf | Bin 0 -> 551560 bytes + perf/fonts/NotoNastaliqUrdu-Regular.ttf | Bin 0 -> 497204 bytes + perf/fonts/NotoSansDevanagari-Regular.ttf | Bin 0 -> 212740 bytes + perf/fonts/Roboto-Regular.ttf | Bin 0 -> 305608 bytes + perf/run.sh | 25 + + perf/text/littleprince.txt | 1896 +++++++++++++++++++++++++++++ + perf/text/test-long-arabic-paragraph.txt | 18 + + 7 files changed, 1939 insertions(+) + +commit 39afe608b476c3d09460dfceae75df65a9eb22b4 Author: Behdad Esfahbod -Date: Mon Jun 17 13:42:53 2019 -0700 +Date: Tue Dec 10 12:04:44 2019 -0600 - Minor + [algs] Fold one more custom bsearch() in + + One more to go. - src/hb-ot-font.cc | 1 - - 1 file changed, 1 deletion(-) + src/hb-ot-layout-gpos-table.hh | 49 ++++++++++++++++-------------------------- + 1 file changed, 19 insertions(+), 30 deletions(-) -commit 896416bd4c6ac486eb4e1926eaa09d5a9b693763 +commit b1dc676eaa606660584f3c67f0570457e9f09dd3 Author: Behdad Esfahbod -Date: Mon Jun 17 13:39:49 2019 -0700 +Date: Tue Dec 10 11:41:24 2019 -0600 - Partially revert "[ft/ot] Remove implementation of deprecated kerning funcs" + [algs] Reduce one more bsearch() impl - This reverts commit 47030b1855f04c0d75899ffb6f5021fea3c19b90. + Ouch, there were three more left. Down one. Two to go. + + src/hb-open-type.hh | 21 +++++++++------------ + 1 file changed, 9 insertions(+), 12 deletions(-) + +commit 6f76c325e5244adfa1599952040ed7f13b10f38c +Author: Ebrahim Byagowi +Date: Tue Dec 10 21:43:11 2019 +0330 + + [test] Update 10.15 results - Reverts only the hb-ft part, to reinstate non-OpenType kerning with - FreeType. + Turned out only SFNS, which wasn't available in 10.14 anyway, needed an update + See https://crbug.com/1005969#c37 also + + test/shaping/data/in-house/tests/macos.tests | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +commit 2241a676ba084214fdfc6d35f35862a64f296271 +Author: Ebrahim Byagowi +Date: Tue Dec 10 19:50:34 2019 +0330 + + [test] Add macOS 10.15 related fonts - Fixes https://github.com/harfbuzz/harfbuzz/issues/1682 + breaks the test and 10.15 bot, will add the fix in next commit, also adds a broken test for f47cbade1 - src/hb-ft.cc | 19 +++++++++++++++++++ - 1 file changed, 19 insertions(+) + test/shaping/data/in-house/tests/macos.tests | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) -commit 2682efb02df72fb254c819cb76fc23592c30fc45 +commit f3de3b6d3db278845bee1392ffdb3659921c6410 +Author: Ebrahim Byagowi +Date: Tue Dec 10 16:37:48 2019 +0330 + + [ci] fix macOS 10.15 bot + + Xcode 11.3.0 image is supposed to work per https://circleci.com/docs/2.0/testing-ios/ + but isn't https://circleci.com/gh/harfbuzz/harfbuzz/118693 AFAICS + + Let's try Xcode 11.2.1 image + + .circleci/config.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 49434bdd49eec61a3bcb18e242b30e72cdc81279 +Author: Ebrahim Byagowi +Date: Tue Dec 10 16:28:04 2019 +0330 + + [ci] Add a macOS 10.15 bot + + Should update macos.tests with the fonts, for now + + .circleci/config.yml | 14 +++++++++++++- + 1 file changed, 13 insertions(+), 1 deletion(-) + +commit f47cbade18acc4f9c935ba2c6c863beb6087d781 Author: Behdad Esfahbod -Date: Mon Jun 17 13:38:08 2019 -0700 +Date: Mon Dec 9 18:10:34 2019 -0600 - Revert "Deprecate font kern API" + [aat] Adjust fallback positioning logic - This reverts commit d219f899f4b2fb4b39ebc1dff9fb648fc5d6d112. + Fixes https://github.com/harfbuzz/harfbuzz/issues/1528 - API change: Un-deprecate font kern API. + Wish could add a test... - Part of https://github.com/harfbuzz/harfbuzz/issues/1682 + $ ./hb-view --font-file Thonburi.ttc --unicodes U+0E17,U+0E35,U+0E48,U+0E4A --shaper ot - We should document that this API is only necessary to hook up - non-OpenType kerning. hb-ot-font will continue to NOT implement them. + ▃ + + ▂▃▃▄▃▂▁▊ ▃ ▃ ▎ + ▗ ▅▆▆▅ ▌ ▆▆▅▆▙ ▌▗ + ▗ ▙ ▂ ▎▗ ▟ + ▅▆▆▆▇▇▇▇▇▇▇▆▆▅▄ ▇▅▅▅ ▙▆▇ + ▁▁▂▁ ▁▁ + ▖ ▖ ▂▂ + ▉ ▁ ▆▆ ▌ ▆ ▙▄ ▁▁ + ▙ ▉ ▃▖ ▟ + ▊ ▉ ▅▟ ▗▄ + ▊ ▉ ▗ ▏ ▇▆ + ▊ ▟ ▉ ▆ ▖ + ▊ ▉ ▌ ▂ + ▊ ▏ ▉ ▌ ▗ ▄▟ + ▊ ▆ - docs/harfbuzz-sections.txt | 16 +++++++------- - src/hb-deprecated.h | 54 ---------------------------------------------- - src/hb-font.cc | 3 --- - src/hb-font.h | 51 +++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 59 insertions(+), 65 deletions(-) + src/hb-ot-shape-complex-default.cc | 20 ++++++++++++++++++++ + src/hb-ot-shape-complex.hh | 5 +++-- + src/hb-ot-shape.cc | 5 +++-- + 3 files changed, 26 insertions(+), 4 deletions(-) -commit d6cb244f7d63338e0cbfa774c2a32e6e7e06f15b -Author: David Corbett -Date: Sat Jun 15 21:38:27 2019 -0400 +commit fa7edf87c99a46d29a9f0d58b2896bc24a43853e +Author: Behdad Esfahbod +Date: Sat Dec 7 22:01:13 2019 -0600 - Canonically reorder U+0C55 and U+0C56 + [bsearch] Massage API some more - src/hb-unicode.hh | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) + src/hb-algs.hh | 25 +++++++++++++++---------- + src/hb-array.hh | 23 ++++++++++------------- + 2 files changed, 25 insertions(+), 23 deletions(-) -commit 82d4bfb8f3ac30fecce41f8abe59f58ad64ba98a -Author: Michiharu Ariza -Date: Fri Jun 14 10:49:42 2019 -0700 +commit 70aa5071d89dbba792c4c9fb4df7ca716304656a +Author: Behdad Esfahbod +Date: Sat Dec 7 22:35:34 2019 -0600 - enable cff subset tests - - add Unicode UCS-4 cmap - fix Unicode bits in OS/2 - add Unicode cmap sub-table in SourceHanSans-Regular_subset.otf - regenerate cff subset test expected results - - src/hb-ot-cmap-table.hh | 73 +++++++++++++++++---- - src/hb-ot-os2-table.hh | 10 ++- - test/subset/data/Makefile.am | 2 + - test/subset/data/Makefile.sources | 2 + - ...subroutinize-retain-gids.1FC,21,41,20,62,63.otf | Bin 32124 -> 20000 bytes - ...Regular.desubroutinize-retain-gids.61,62,63.otf | Bin 29688 -> 2196 bytes - ...r.desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf | Bin 33316 -> 30412 bytes - ...subroutinize-retain-gids.1FC,21,41,20,62,63.otf | Bin 31960 -> 19840 bytes - ...p-hints-desubroutinize-retain-gids.61,62,63.otf | Bin 29564 -> 2072 bytes - ...s-desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf | Bin 33168 -> 30264 bytes - ...r.drop-hints-retain-gids.1FC,21,41,20,62,63.otf | Bin 32052 -> 19932 bytes - ...Pro-Regular.drop-hints-retain-gids.61,62,63.otf | Bin 29632 -> 2108 bytes - ...gular.drop-hints-retain-gids.D7,D8,D9,DA,DE.otf | Bin 33180 -> 30276 bytes - ...sPro-Regular.retain-gids.1FC,21,41,20,62,63.otf | Bin 32276 -> 20152 bytes - .../SourceSansPro-Regular.retain-gids.61,62,63.otf | Bin 29788 -> 2264 bytes - ...eSansPro-Regular.retain-gids.D7,D8,D9,DA,DE.otf | Bin 33332 -> 30428 bytes - ...ubset.default.3042,3044,3046,3048,304A,304B.otf | Bin 3028 -> 3036 bytes - ...ubset.default.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 3240 -> 3248 bytes - ...eHanSans-Regular_subset.default.61,63,65,6B.otf | Bin 2200 -> 2208 bytes - ...ubset.default.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 3460 -> 3468 bytes - .../SourceHanSans-Regular_subset.default.660E.otf | Bin 1920 -> 1928 bytes - ...e-retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 90956 -> 8932 bytes - ...e-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 125820 -> 116080 bytes - ...bset.desubroutinize-retain-gids.61,63,65,6B.otf | Bin 88392 -> 3016 bytes - ...e-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 126004 -> 116264 bytes - ...ular_subset.desubroutinize-retain-gids.660E.otf | Bin 103780 -> 50224 bytes - ...esubroutinize.3042,3044,3046,3048,304A,304B.otf | Bin 2952 -> 2960 bytes - ...esubroutinize.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 3136 -> 3144 bytes - ...s-Regular_subset.desubroutinize.61,63,65,6B.otf | Bin 2132 -> 2140 bytes - ...esubroutinize.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 3256 -> 3264 bytes - ...eHanSans-Regular_subset.desubroutinize.660E.otf | Bin 1896 -> 1904 bytes - ...e-retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 90656 -> 8672 bytes - ...e-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 125468 -> 115768 bytes - ...ints-desubroutinize-retain-gids.61,63,65,6B.otf | Bin 88156 -> 2892 bytes - ...e-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 125584 -> 115884 bytes - ....drop-hints-desubroutinize-retain-gids.660E.otf | Bin 103556 -> 50040 bytes - ...esubroutinize.3042,3044,3046,3048,304A,304B.otf | Bin 2792 -> 2800 bytes - ...esubroutinize.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 2896 -> 2904 bytes - ...ubset.drop-hints-desubroutinize.61,63,65,6B.otf | Bin 2028 -> 2036 bytes - ...esubroutinize.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 2964 -> 2972 bytes - ...gular_subset.drop-hints-desubroutinize.660E.otf | Bin 1804 -> 1812 bytes - ...s-retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 90724 -> 8740 bytes - ...s-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 125560 -> 115864 bytes - ...r_subset.drop-hints-retain-gids.61,63,65,6B.otf | Bin 88196 -> 2852 bytes - ...s-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 125780 -> 116084 bytes - ...-Regular_subset.drop-hints-retain-gids.660E.otf | Bin 103572 -> 50060 bytes - ...et.drop-hints.3042,3044,3046,3048,304A,304B.otf | Bin 2848 -> 2856 bytes - ...et.drop-hints.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 2988 -> 2996 bytes - ...nSans-Regular_subset.drop-hints.61,63,65,6B.otf | Bin 2060 -> 2068 bytes - ...et.drop-hints.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 3164 -> 3172 bytes - ...ourceHanSans-Regular_subset.drop-hints.660E.otf | Bin 1824 -> 1832 bytes - ...t.retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 91040 -> 9016 bytes - ...t.retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 125924 -> 116184 bytes - ...Sans-Regular_subset.retain-gids.61,63,65,6B.otf | Bin 88468 -> 3012 bytes - ...t.retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 126208 -> 116468 bytes - ...urceHanSans-Regular_subset.retain-gids.660E.otf | Bin 103800 -> 50244 bytes - .../data/fonts/SourceHanSans-Regular_subset.otf | Bin 2707728 -> 2707736 bytes - 57 files changed, 70 insertions(+), 17 deletions(-) - -commit 6bcbe495bff221169f8c0769dde1b4b2c165a211 -Author: Ebrahim Byagowi -Date: Thu Jun 13 15:04:51 2019 +0430 + [algs] Adjust return value of hb_ctz(0) to be 32 instead of 0 - [cff] minor format (#1774) - - src/hb-subset-cff-common.cc | 104 ++++++++++++++++++++------------------------ - 1 file changed, 48 insertions(+), 56 deletions(-) + src/hb-algs.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 4f37c0db9bf4e3d536a50126d17b36009b12f9cb -Author: David Corbett -Date: Tue Jun 11 17:55:31 2019 -0400 +commit eefb78f674c9a71aaaca45cc1246584848622923 +Author: Behdad Esfahbod +Date: Sun Dec 8 21:07:00 2019 -0600 - Remove 'mym3' + Minor - src/hb-ot-tag.cc | 4 +++- - test/api/test-ot-tag.c | 2 +- - 2 files changed, 4 insertions(+), 2 deletions(-) + src/hb-common.cc | 32 -------------------------------- + src/hb-static.cc | 36 ++++++++++++++++++++++++++++++++++++ + 2 files changed, 36 insertions(+), 32 deletions(-) -commit 90872a29ee5d0bef6df1c2900f7001c11106c4da -Author: Michiharu Ariza -Date: Tue Jun 11 12:28:30 2019 -0700 +commit 9fb030585a1c429c13e86fbd128d9db004d3a355 +Author: Behdad Esfahbod +Date: Sat Dec 7 19:45:08 2019 +0000 - change assert(false) to failure + Rename start/end to first/last in RangeRecord + + Because that's what they are. - src/hb-subset-cff-common.cc | 2 +- - ...z-testcase-minimized-hb-subset-fuzzer-5680398559870976 | Bin 0 -> 145 bytes - 2 files changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-layout-common.hh | 48 +++++++++++++++++++++++----------------------- + 1 file changed, 24 insertions(+), 24 deletions(-) -commit 0c5da57d1aab91d7677a5c6517a3da254d53267f -Author: Behdad Esfahbod -Date: Mon Jun 10 14:06:25 2019 -0700 +commit 8ac4ba14dca7c700b6dfdc19ceb5385a7e6fb889 +Author: Evgeniy Reizner +Date: Mon Dec 9 18:58:28 2019 +0200 - Fix typo :) + Fix typo in TESTING.md (#2066) - src/hb-blob.cc | 3 ++- - src/hb-config.hh | 2 +- - 2 files changed, 3 insertions(+), 2 deletions(-) + TESTING.md | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 19b8eb08e5457cd643aee5f9b9ad1c80b2243895 +commit 9b1d5c4a59c6d3d9c248eae5d05d801791d42b7a Author: Ebrahim Byagowi -Date: Tue Jun 11 01:33:30 2019 +0430 +Date: Mon Dec 9 12:29:28 2019 +0330 - Move HB_NO_SETLOCALE to closer place to its to unbreak HB_TINY build (#1768) + [number] fix where strtod_l not available - src/hb-common.cc | 3 +++ - src/hb.hh | 4 ---- - 2 files changed, 3 insertions(+), 4 deletions(-) + src/hb-number.cc | 1 + + 1 file changed, 1 insertion(+) -commit b4a5a69ad8625e3b90eb907a1b70e3ed24d4ff97 +commit 5c8f96028988f647cace1af9f5a4c33c29b6e562 Author: Ebrahim Byagowi -Date: Tue Jun 11 01:33:09 2019 +0430 +Date: Mon Dec 9 10:48:43 2019 +0330 - Add HB_NO_OEPN (#1767) + [number] minor, include the renamed header - src/hb-blob.cc | 3 +++ - src/hb-config.hh | 2 ++ - 2 files changed, 5 insertions(+) + src/hb-number.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit a36ff941710b5a5f7e464e6d72aff36cf5549a91 -Author: Ebrahim Byagowi -Date: Mon Jun 10 15:48:28 2019 +0430 +commit 48eef2724c8aa55d081fb742a5e6cef17ff5d4a2 +Author: Behdad Esfahbod +Date: Fri Dec 6 05:04:11 2019 +0000 - Add HB_NO_SETLOCALE + [algs/array] Consolidate the last two bsearch implementations! + + Yay! Seems to work. - src/hb-config.hh | 1 + - src/hb.hh | 6 +++++- - 2 files changed, 6 insertions(+), 1 deletion(-) + src/hb-algs.hh | 31 +++++++++++++++++-------------- + src/hb-array.hh | 31 +++++++++++-------------------- + 2 files changed, 28 insertions(+), 34 deletions(-) -commit c4cae81a26a816979f3206418c47856b5ed2d8bb -Author: Ebrahim Byagowi -Date: Mon Jun 10 15:32:54 2019 +0430 +commit ed35dea8c07f1ecc50df48657bb330fcd77ca8e3 +Author: Behdad Esfahbod +Date: Fri Dec 6 04:37:11 2019 +0000 - Remove round polyfill - - Added in 01dff1e and 19256bef, this was targeted at older - msvc versions that don't support C99 but now as we require - C++11 we don't target places those envs thus removing this. + Fourth try... sighs - CMakeLists.txt | 2 +- - configure.ac | 6 ------ - src/hb.hh | 14 -------------- - 3 files changed, 1 insertion(+), 21 deletions(-) + src/hb-algs.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit ff9b9b1c89d5529fafc74ce84c0acb71b5d6031b +commit 9168310bb4c9d7d0652c7ead53017e30d1fafda2 Author: Behdad Esfahbod -Date: Mon Jun 10 12:48:25 2019 -0700 +Date: Fri Dec 6 04:28:06 2019 +0000 - Simplify HB_PARTIALIZE impl - - +this works on gcc 4.8 as well as default code path. + Fix build, third times... - src/hb-algs.hh | 17 +++++------------ - 1 file changed, 5 insertions(+), 12 deletions(-) + src/hb-ot-post-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 451edbd4d063a4b43c1ca3d2b60c7392602ae7b7 +commit 34f5cc2cc80cf1fd45bc9697d828d3536e3ac74f Author: Behdad Esfahbod -Date: Mon Jun 10 12:46:54 2019 -0700 +Date: Fri Dec 6 04:09:33 2019 +0000 - Revert "Test new solution for HB_PARTIALIZE" - - This reverts commit a0c4900799c26e4ff34180842a5ff21048fe31a0. + Second try at fixing build - src/hb-algs.hh | 18 +++++++++++++++++- - 1 file changed, 17 insertions(+), 1 deletion(-) + src/hb-algs.hh | 13 +++++++++++-- + 1 file changed, 11 insertions(+), 2 deletions(-) -commit a0c4900799c26e4ff34180842a5ff21048fe31a0 +commit 14ce5ab0b7ae012c6e46511bab399c472eb39eb2 Author: Behdad Esfahbod -Date: Mon Jun 10 12:33:23 2019 -0700 +Date: Fri Dec 6 03:54:46 2019 +0000 - Test new solution for HB_PARTIALIZE - - Just testing bots. Will finish based on results. + First try at fixing build errors - src/hb-algs.hh | 18 +----------------- - 1 file changed, 1 insertion(+), 17 deletions(-) + src/hb-algs.hh | 3 +++ + 1 file changed, 3 insertions(+) -commit 4a2b58555f173b692b767c933d280a51142926dd -Author: Ebrahim Byagowi -Date: Mon Jun 10 08:16:51 2019 -0700 +commit 2274270c6ac2e170cf939e03a89721f03f2f98bd +Author: Behdad Esfahbod +Date: Fri Dec 6 03:42:21 2019 +0000 - [ci] Use HB_OPTIMIZE_SIZE instead of __OPTIMIZE_SIZE__ + [algs] Streamline bsearch some more - .circleci/config.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-algs.hh | 46 ++++++++++++++++++++++++++++++++-------------- + 1 file changed, 32 insertions(+), 14 deletions(-) -commit a228bb5f1d471a334bc9727f5d4f5b59dbe829ff -Author: Ebrahim Byagowi -Date: Mon Jun 10 15:56:36 2019 +0430 +commit bd55d4b49fcd1ac1335e60ead1fe9941e7b01f8c +Author: Behdad Esfahbod +Date: Fri Dec 6 03:35:24 2019 +0000 - [ci] Test -Os and optimize size in Alpine bot + [algs] Streamline bsearch() API more towards hb_array_t::bsearch_impl() - __OPTIMIZE_SIZE__ should be defined whenever -Os but some Internet thread - indicate may not so lets do that ourselves as that is the main intention + Preparing to merge the two finally! - .circleci/config.yml | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) + src/hb-aat-layout.cc | 6 +----- + src/hb-aat-layout.hh | 10 ++-------- + src/hb-algs.hh | 27 +++++++++++++++++++-------- + src/hb-ot-name-language-static.hh | 15 +++------------ + src/hb-ot-name-table.hh | 12 +++++------- + src/hb-ot-os2-unicode-ranges.hh | 20 +++----------------- + src/hb-ot-post-table.hh | 3 +-- + src/hb-ot-var-mvar-table.hh | 4 +++- + src/hb-ucd.cc | 18 ++++++++++-------- + 9 files changed, 47 insertions(+), 68 deletions(-) -commit 9407ef8d4bb96346b1f8b07757d79d3f8cc61cf7 -Author: Ebrahim Byagowi -Date: Mon Jun 10 15:17:43 2019 +0430 +commit fd6df520a1a4aa9cdaa0c2e515f29ba93d2910d1 +Author: Behdad Esfahbod +Date: Fri Dec 6 03:00:23 2019 +0000 - minor, add HB_USE_INTERNAL_QSORT - - The only thing I need for a working wasm in a minimum libc, - otherwise I have to provide the very same qsort inside that libc + [array] Isolate bsearch implementation more - src/hb-algs.hh | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/hb-array.hh | 26 ++++++++++++++++++++------ + 1 file changed, 20 insertions(+), 6 deletions(-) -commit 801d93fc58aa13082dea86fb2c3821bc6362f593 -Author: Ebrahim Byagowi -Date: Mon Jun 10 14:53:14 2019 +0430 +commit 06d3c2019fc2dd9a284a3c2471a1eabef47584c5 +Author: Behdad Esfahbod +Date: Fri Dec 6 02:52:54 2019 +0000 - [ci] remove wine from fedora bot + [array] Simplify bfind() positioning - We are not testing Windows exes in fedora mingw bot, we don't have to as - probably won't go that smoothly and we have real Windows bots anyway - and as wine installation itself is time taking let's remove it + I had copied the old scheme from fontconfig's fccharset.c. I just + convinced myself that this change is correct and produces exact + same results. But I also am skeptical. Anyone else feel like + convincing themselves as well please? - .circleci/config.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-array.hh | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) -commit 7dcfc5357df879491f847bd7d2941645e58f268c +commit d67ba649a38aec1646525a30f992d5f50c4cf06d Author: Ebrahim Byagowi -Date: Sun Jun 9 11:58:08 2019 +0430 +Date: Thu Dec 5 13:15:21 2019 +0330 - [stat] minor format + Rename hb_array_t::in_range to hb_array_t::check_range - src/hb-ot-stat-table.hh | 72 ++++++++++++++++++++++++------------------------- - 1 file changed, 36 insertions(+), 36 deletions(-) + src/hb-array.hh | 2 +- + src/hb-ot-glyf-table.hh | 20 ++++++++++---------- + src/hb-ot-var-gvar-table.hh | 16 ++++++++-------- + 3 files changed, 19 insertions(+), 19 deletions(-) -commit 2646c7149ce49d3b6cf90e354658df35254bcce0 +commit 72d83a0280b95f99b94c64380bc46558fc941462 Author: Ebrahim Byagowi -Date: Sun Jun 9 11:51:58 2019 +0430 +Date: Thu Dec 5 13:09:48 2019 +0330 - [stat] minor + Make hb_array_t::in_range similar to hb_sanitize_context_t::check_range - src/hb-ot-stat-table.hh | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) + src/hb-array.hh | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) -commit c4669fda7890bc741ef934ebc360e366eba94866 -Author: Ebrahim Byagowi -Date: Sun Jun 9 11:50:36 2019 +0430 +commit b1167d19e9d72bcadc1a71873afa8dcbe0e26f29 +Author: Behdad Esfahbod +Date: Thu Dec 5 15:46:58 2019 +0000 - [algs] minor + Fix! - src/hb-algs.hh | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) + .../fonts/2681c1c72d6484ed3410417f521b1b819b4e2392.ttf | Bin 0 -> 1288 bytes + .../fonts/28cbcd9409236705ff14bec11a273d16cffdd543.ttf | Bin 1080 -> 0 bytes + 2 files changed, 0 insertions(+), 0 deletions(-) -commit 9b853f755dd05ccef3429d3d3d0d561a99cc4c2d -Author: Ebrahim Byagowi -Date: Sun Jun 9 11:49:25 2019 +0430 +commit 5ff410b493f3abadb397347c118fdfbcfd278e69 +Author: Behdad Esfahbod +Date: Thu Dec 5 15:37:56 2019 +0000 - [cff] Use switch on multi-format structs (#1762) + Add files, oops - src/hb-cff-interp-cs-common.hh | 4 +- - src/hb-cff-interp-dict-common.hh | 12 +-- - src/hb-ot-cff-common.hh | 135 ++++++++++++------------ - src/hb-ot-cff1-table.hh | 215 ++++++++++++++++++++++----------------- - src/hb-ot-cff2-table.hh | 68 +++++++------ - src/hb-subset-cff1.cc | 2 +- - src/hb-subset-cff2.cc | 2 +- - 7 files changed, 233 insertions(+), 205 deletions(-) + .../fonts/28cbcd9409236705ff14bec11a273d16cffdd543.ttf | Bin 0 -> 1080 bytes + test/shaping/data/in-house/tests/rotation.tests | 4 ++++ + 2 files changed, 4 insertions(+) -commit eff579f743a91c0b1c543f4b69ab33580cae6392 -Author: Ebrahim Byagowi -Date: Fri Jun 7 12:58:09 2019 +0430 +commit 2dc20e632efd6aab2abe0ad15ed110ca4553f3ba +Author: Behdad Esfahbod +Date: Thu Dec 5 15:28:42 2019 +0000 - Update and use internal qsort everywhere + Implement fallback vertical shaping from Firefox + + Fixes https://github.com/harfbuzz/harfbuzz/issues/355 - src/hb-algs.hh | 210 +++++++++++++++++++++++++++++++++++------------- - src/hb-array.hh | 6 +- - src/hb-ot-post-table.hh | 2 +- - 3 files changed, 158 insertions(+), 60 deletions(-) + src/hb-ot-shape.cc | 92 ++++++++++++++++++++++++----- + src/hb-ot-shape.hh | 1 + + test/shaping/data/in-house/Makefile.sources | 1 + + 3 files changed, 80 insertions(+), 14 deletions(-) -commit 5074d665a8b0980f202a5986bda52808674cfb54 +commit b6d0f1529df9461f1fdb93fae7b5103702ae1517 Author: Behdad Esfahbod -Date: Fri Jun 7 14:20:45 2019 -0700 +Date: Thu Dec 5 12:19:52 2019 +0000 - [ucd] Save another 1.5kb + [indic] Fix old-spec base-finding logic w vatu feature - https://github.com/harfbuzz/harfbuzz/issues/1652 + Fixes https://github.com/harfbuzz/harfbuzz/issues/1587 - src/gen-ucd-table.py | 8 +++++--- - src/hb-ucd-table.hh | 37 +++++++++++++++++++++---------------- - src/hb-ucd.cc | 12 +++++++++--- - 3 files changed, 35 insertions(+), 22 deletions(-) + src/hb-ot-shape-complex-indic.cc | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) -commit 6d58b45782833f8c6c8efd9426e2785c78e6462a -Author: Ebrahim Byagowi -Date: Sat Jun 8 00:40:18 2019 +0430 +commit 0414341ac576c4403231f507e216c7716c8f0828 +Author: Behdad Esfahbod +Date: Thu Dec 5 11:26:39 2019 +0000 - [ci] use trusty for its gcc 4.8 again + Prefer AAT shaping over OT if both available + + Fixes https://github.com/harfbuzz/harfbuzz/issues/1529 - .travis.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-common.cc | 1 - + src/hb-debug.hh | 1 - + src/hb-ot-layout.cc | 21 --------------------- + src/hb-ot-shape.cc | 25 ++----------------------- + 4 files changed, 2 insertions(+), 46 deletions(-) -commit 973699c49b905e142ecc5cefd1f4fa15aad8e309 -Author: Behdad Esfahbod -Date: Fri Jun 7 12:49:06 2019 -0700 +commit 82545c5e2ba2067f2eb117c7358ed6d5b50ca942 +Author: blueshade7 +Date: Tue Nov 26 10:24:32 2019 -0800 - Disable clang gcc impersonator + more coding style fixes - src/hb-algs.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-font.cc | 19 +++++++++---------- + 1 file changed, 9 insertions(+), 10 deletions(-) -commit e4e518f33d933a02058bad86a6aae714e59814db -Author: Behdad Esfahbod -Date: Fri Jun 7 12:41:09 2019 -0700 +commit 2e7c1239c886ea8fa6ba37b7597d76b2d319f468 +Author: blueshade7 +Date: Tue Nov 26 09:57:53 2019 -0800 - Fix build on gcc 4.8 - - Fixes https://github.com/harfbuzz/harfbuzz/issues/1724 + minor: coding style - src/hb-algs.hh | 29 +++++++++++++++++++++++++++-- - 1 file changed, 27 insertions(+), 2 deletions(-) + src/hb-ot-font.cc | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) -commit 3c240bd3dc0aaca38154da555d0aef350da62ee6 -Author: Behdad Esfahbod -Date: Fri Jun 7 10:56:24 2019 -0700 +commit ed94e41065797b3b22860f1aa68a0b2ea47317e7 +Author: blueshade7 +Date: Wed Nov 20 10:42:50 2019 -0800 - Downgrade double-promotion from error to warning - - https://github.com/harfbuzz/harfbuzz/issues/1740 + fixed api test test-ot-glyphname - src/hb.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + test/api/test-ot-glyphname.c | 8 ++------ + 1 file changed, 2 insertions(+), 6 deletions(-) -commit 385e436692e94588fc4cb3a7afbeb862035db09b -Author: Ebrahim Byagowi -Date: Fri Jun 7 10:44:53 2019 -0700 +commit 7a4745ba8da89f945b7c62f59bbb3d1cc5a45e2d +Author: blueshade7 +Date: Wed Nov 20 10:15:41 2019 -0800 - Minor, fix gcc maybe-uninitialized complain - - I guess all of its field will be initialized anyway here but lets make it more defensive + added api test test-ot-glyphname - src/hb-ot-glyf-table.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + test/api/Makefile.am | 1 + + test/api/test-ot-glyphname.c | 83 ++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 84 insertions(+) -commit 1bada656a86e9cb27d4a6b9fcc50748f0bd9c1d9 -Author: Ebrahim Byagowi -Date: Fri Jun 7 02:01:27 2019 +0430 +commit ab525ac66dc2e72a636d3f04b575f766af76f9e0 +Author: blueshade7 +Date: Tue Nov 19 20:36:56 2019 -0800 - Minor, remove unnecessary semicolon - - Causing -Wextra-semi-stmt build error when no primitive has chosen - Interesting that nobody has noticed it yet. + fix HB_TINY buid - src/hb-mutex.hh | 2 +- + src/hb-subset-plan.cc | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit ff64652cf6bda18d1d7d54f511eed131464e1f3d +Author: blueshade7 +Date: Tue Nov 19 18:50:57 2019 -0800 + + fix shape-fuzzer failure + + src/hb-ot-cff1-table.hh | 1 + + 1 file changed, 1 insertion(+) + +commit a333b0f7172923ff70dcb1bca15a5474fd84f82f +Author: blueshade7 +Date: Tue Nov 19 18:01:53 2019 -0800 + + add hb-ot-cff1-std-str.hh to Makefile.sources + + src/Makefile.sources | 1 + + 1 file changed, 1 insertion(+) + +commit 61707266a3ea9fc54323742de6559fb00987dc29 +Author: blueshade7 +Date: Tue Nov 19 17:09:12 2019 -0800 + + fix get_sid crash + + src/hb-ot-cff1-table.hh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit f9b1ae73360054d9f121a2d36820377909888b35 -Author: Garret Rieger -Date: Wed Jun 5 17:40:59 2019 -0700 +commit 4c4e08a1eff5a4bf355f032f32fb4fa25b9349d7 +Author: blueshade7 +Date: Tue Nov 19 16:50:28 2019 -0800 - [subset] Move OS/2 to subset2. + add cff1::accelerator_t::fini - src/hb-ot-os2-table.hh | 32 ++++++++++++++++---------------- - src/hb-subset.cc | 2 +- - 2 files changed, 17 insertions(+), 17 deletions(-) + src/hb-ot-cff1-table.hh | 7 +++++++ + 1 file changed, 7 insertions(+) -commit 93d592e0e181f436ea47038fef419134007208aa -Author: Qunxin Liu -Date: Wed Jun 5 16:51:31 2019 -0700 +commit ff87465b400af4685680a7a3076533ee6b635dd3 +Author: blueshade7 +Date: Tue Nov 19 16:18:33 2019 -0800 - [subset] post table to use _subset2 + add get_glyph_from_name & test. use hb_string_array - src/hb-ot-post-table.hh | 31 +++++++++++++++---------------- - src/hb-subset.cc | 2 +- - 2 files changed, 16 insertions(+), 17 deletions(-) + src/Makefile.am | 5 + + src/hb-ot-cff1-std-str.hh | 425 ++++++++++++++++++++++++++++++++++++++++++++++ + src/hb-ot-cff1-table.cc | 69 -------- + src/hb-ot-cff1-table.hh | 85 +++++++++- + src/hb-ot-font.cc | 6 +- + src/test-ot-glyphname.cc | 91 ++++++++++ + 6 files changed, 602 insertions(+), 79 deletions(-) -commit db938479d7b1e3ec35a39a9ad31c945e09e6d5e5 -Author: Qunxin Liu -Date: Tue Jun 4 10:30:53 2019 -0700 +commit 51e772852191e99206bd69f2f06d029ba01e5745 +Author: blueshade7 +Date: Sun Nov 17 02:25:39 2019 -0800 - [subset] maxp table to use _subset2 + minor - src/hb-ot-maxp-table.hh | 48 ++++++++++++++++++++++-------------------------- - src/hb-subset.cc | 2 +- - 2 files changed, 23 insertions(+), 27 deletions(-) + src/hb-ot-cff1-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit d5e5f378329b6ce21944b79b568369ea7bc36cf3 -Author: Eli Zaretskii -Date: Wed Jun 5 22:20:03 2019 +0300 +commit 6d9eb9c04095db74f40c00a3d6e5a6432491059d +Author: blueshade7 +Date: Sun Nov 17 02:20:22 2019 -0800 - This makes minor changes to allow building HarfBuzz with - mingw.org's MinGW. - - src/hb-algs.hh: Don't compile _BitScanForward and _BitScanReverse - for GCC >= 4. mingw.org's MinGW doesn't have these functions. - - src/hb-atomic.hh: MemoryBarrier does exist in mingw.org's MinGW, - but it is not a macro, it is an inline function. __MINGW32_VERSION - is a macro that exists only in mingw.org's MinGW, so conditioning - on it should not affect MinGW64, where MemoryBarrier is a macro. - - src/hb-uniscribe.cc: Define E_NOT_SUFFICIENT_BUFFER if it is not - defined (mingw.org's MinGW doesn't). - - src/hb.hh: Don't include intrin.h for mingw.org's MinGW, since that - header is not available; instead, include windows.h. Conditioned - on __MINGW32_VERSION to avoid affecting MinGW64. + fixed failure with language-tags.tests - src/hb-algs.hh | 4 ++-- - src/hb-atomic.hh | 2 +- - src/hb-uniscribe.cc | 4 ++++ - src/hb.hh | 7 +++++++ - 4 files changed, 14 insertions(+), 3 deletions(-) + src/hb-ot-cff1-table.hh | 1 + + 1 file changed, 1 insertion(+) -commit c7439d4e3a76d596845aad4e4bc860bd61ee47e3 -Author: Behdad Esfahbod -Date: Wed Jun 5 12:13:49 2019 -0700 +commit 59fe379797adca37e29c002ffabc27f9c74f8746 +Author: blueshade7 +Date: Sat Nov 16 19:47:31 2019 -0800 - Slightly massage buffer-messaging commit - - Saves a few bytes. + fixed hb-shape-fuzzer failures in get_sid - src/hb-buffer.cc | 3 --- - src/hb-buffer.hh | 8 +++++++- - 2 files changed, 7 insertions(+), 4 deletions(-) + src/hb-ot-cff1-table.hh | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) -commit 4b1b0bf2f51f806d3285a7e7dec378b9eab9333e -Merge: 659eeddb 815f002b -Author: Ebrahim Byagowi -Date: Wed Jun 5 12:57:28 2019 +0430 +commit e26df436bcf215d1a4520e9851aa607b0de0ca84 +Author: blueshade7 +Date: Sat Nov 16 19:12:34 2019 -0800 - Merge pull request #1755 from ebraminio/slim - - Don't use vsnprintf when HB_NO_BUFFER_MESSAGE is defined + fix test-ot-face crash -commit 815f002bb9230a52768a165383497cc98c58eadb -Author: Ebrahim Byagowi -Date: Wed Jun 5 10:38:06 2019 +0430 + src/hb-ot-cff1-table.hh | 1 + + 1 file changed, 1 insertion(+) - Don't use vsnprintf when HB_NO_BUFFER_MESSAGE is defined +commit 7b49042ef4812d8550d884a400936331fad9951a +Author: blueshade7 +Date: Sat Nov 16 18:20:16 2019 -0800 - src/hb-buffer.cc | 5 ++++- - src/hb-config.hh | 1 + - 2 files changed, 5 insertions(+), 1 deletion(-) + add cff1::get_glyph_name -commit 659eeddb2df5b97cc01bd39e106381f65c9f41f1 -Author: Bruce Mitchener -Date: Mon Jun 3 22:31:50 2019 +0700 + src/hb-ot-cff1-table.cc | 69 +++++++++++++++++++++++++++ + src/hb-ot-cff1-table.hh | 124 +++++++++++++++++++++++++++--------------------- + src/hb-ot-font.cc | 6 ++- + 3 files changed, 144 insertions(+), 55 deletions(-) - Use C++11 override keyword. +commit ea8fdfa07939b97db6636327c8d55cd3b5a62b4c +Merge: 453050ad d5338ba1 +Author: blueshade7 +Date: Fri Nov 22 15:59:09 2019 -0800 - util/hb-ot-shape-closure.cc | 2 +- - util/options.hh | 30 +++++++++++++++--------------- - 2 files changed, 16 insertions(+), 16 deletions(-) + Merge branch 'master' into var-subset -commit 2e16593b70688dfcee1788f38c6af03c5a589f6e -Author: David Corbett -Date: Sat Jun 1 20:54:46 2019 -0400 +commit d5338ba1894f73629528a2a505e30cd681a5f1c6 +Author: Behdad Esfahbod +Date: Fri Nov 22 16:22:27 2019 -0500 - [myanmar] Make medial_group match the OT spec - - Sometime between [July 2018] and [January 2019], the OpenType Myanmar - grammar changed: one asat is now allowed after a medial ya, before any - other medial consonant. + [ft] Add locking FT_Face API - [July 2018]: http://web.archive.org/web/20180711011550/https://docs.microsoft.com/en-us/typography/script-development/myanmar - [January 2019]: http://web.archive.org/web/20190115044451/https://docs.microsoft.com/en-us/typography/script-development/myanmar + Now that we mutex our internal FT_Face, share it with clients. - This also reverts commit 439b05867c0856a81fa8f9bea3a7465b4b4bdd91, which - allowed an asat immediately after a medial ra. + New API: + - hb_ft_font_lock_face() + - hb_ft_font_unlock_face() - src/hb-ot-shape-complex-myanmar-machine.hh | 249 +++++++++++++++-------------- - src/hb-ot-shape-complex-myanmar-machine.rl | 2 +- - 2 files changed, 129 insertions(+), 122 deletions(-) + docs/harfbuzz-sections.txt | 2 ++ + src/hb-ft.cc | 56 +++++++++++++++++++++++++++++++++++++++++++--- + src/hb-ft.h | 6 +++++ + 3 files changed, 61 insertions(+), 3 deletions(-) -commit 209491fc37c46281e063c3e6707d686d5f2b2ba4 -Author: Qunxin Liu -Date: Wed May 29 14:03:17 2019 -0700 +commit e5c7ee9f757baa166a96d73b7ec0cb2b1ae23385 +Author: Behdad Esfahbod +Date: Wed Nov 20 14:22:01 2019 -0500 - [subset] Hmtx/vmtx tables to use subset2 and new iterator frameworks + [set] Fix undefined-behavior shift in _previous() + + harfbuzz/src/hb-set.hh:138:43: runtime error: shift exponent 64 is too large for 64-bit type 'hb_set_t::page_t::elt_t' (aka 'unsigned long long') - src/hb-ot-hmtx-table.hh | 115 +++++++++++++++++++++++------------------------- - src/hb-subset.cc | 6 +-- - 2 files changed, 59 insertions(+), 62 deletions(-) + src/hb-set.hh | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) -commit 89a7a880a1d5cd5e585d43fdde6d44c6dba559cf -Merge: 760eb1bf 12febd68 -Author: Ebrahim Byagowi -Date: Tue Jun 4 10:52:16 2019 +0430 +commit 5fddc5f1698aa50e1be9cd729032c40fa5bd64b1 +Author: Behdad Esfahbod +Date: Wed Nov 20 13:07:26 2019 -0500 - Merge pull request #1747 from harfbuzz/cff2-fdselect-fix - - fixed faulty FDSelect::sanitize + Use foreach_cluster -commit 12febd68d694cc1bae44b0b672d88bf9fbe8568d -Author: Michiharu Ariza -Date: Mon Jun 3 16:40:03 2019 -0700 + src/hb-buffer.cc | 14 ++------------ + 1 file changed, 2 insertions(+), 12 deletions(-) - added parentheses to FDSelect::sanitize as well +commit e4a101ed38f61b3ac710e483528816372cbeb3d0 +Author: Behdad Esfahbod +Date: Tue Nov 19 20:04:00 2019 -0500 - src/hb-ot-cff-common.hh | 4 ++-- + [ft] Fix for HB_NO_VAR build + + src/hb-ft.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -commit 65e66a2d371f42d018b1a22f31a6428d19a90284 -Author: Michiharu Ariza -Date: Mon Jun 3 16:31:41 2019 -0700 +commit 76c27462c242f00e26d3b172dbdf618121aac306 +Author: David Corbett +Date: Tue Nov 19 16:51:33 2019 -0500 - added test data + Don’t modify a ccc to 6 + + ccc=6 will be used in Unicode 13.0. - ...zz-testcase-minimized-harfbuzz_fuzzer-6252118652092416 | Bin 0 -> 126 bytes - 1 file changed, 0 insertions(+), 0 deletions(-) + src/hb-unicode.hh | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) -commit be82a2fc0c7ad3553f2e6dc8082a3255cb6c917c +commit 8fdafee2a621f64101a5d55ded64de9e693db34a Author: Michiharu Ariza -Date: Mon Jun 3 15:52:23 2019 -0700 +Date: Mon Nov 18 16:44:25 2019 -0800 - parenthesized cond-exp in CFF2FDSelect::sanitize + undef HB_STRING_ARRAY_LENG_NAME - src/hb-ot-cff2-table.hh | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/hb-string-array.hh | 1 + + 1 file changed, 1 insertion(+) -commit 760eb1bf9398bd37103ca879e825fad9bef4bfdd -Author: Ebrahim Byagowi -Date: Mon Jun 3 05:48:04 2019 -0700 +commit 5e9863f3c63c6b9060d270d5cf959e16ac1294bb +Author: blueshade7 +Date: Mon Nov 18 15:40:43 2019 -0800 - Reapply possible bsearch overflow fix - - Originally introduced in 21ede86 (#1314) but as it wasn't applied to hb_bsearch - accidentally removed while merging hb_bsearch_r to it. + ARRAY_LENGTH fails with -Wglobal-constructors - src/hb-algs.hh | 2 +- + src/hb-string-array.hh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 5846884f86cae61c1b0c369c81427712fb97ed83 -Author: Bruce Mitchener -Date: Mon Jun 3 15:00:25 2019 +0700 +commit a75983690d0b3575ef208592c51f730410230af7 +Author: blueshade7 +Date: Mon Nov 18 15:09:24 2019 -0800 - test: Use nullptr in C++ code. (#1744) + calculate hb_string_array length automatically - src/test-ot-color.cc | 8 ++++---- - test/fuzzing/hb-shape-fuzzer.cc | 6 +++--- - test/fuzzing/hb-subset-fuzzer.cc | 2 +- - util/options-subset.cc | 2 +- - 4 files changed, 9 insertions(+), 9 deletions(-) + src/hb-ot-post-table.hh | 10 ++++------ + src/hb-string-array.hh | 3 +++ + 2 files changed, 7 insertions(+), 6 deletions(-) -commit 7c14b9014587e1423ef7481058e48dae84a65fce -Author: Ebrahim Byagowi -Date: Sun Jun 2 13:51:26 2019 +0430 +commit 57da16bc5986ce714fb3f57501e5f45a33aaa99a +Author: Khaled Hosny +Date: Sun Nov 17 21:32:12 2019 +0200 - [ci] revert to xenial + [cff] Check rcurveline and rlinecurve arguments - It should've done in a branch + Make sure the number of arguments is not too many or too few, otherwise + skip the command. - .travis.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-cff-interp-cs-common.hh | 41 +++++++++++++++++++++++------------------ + 1 file changed, 23 insertions(+), 18 deletions(-) -commit 8278ff7dce41e6694eba15a7c94a0c0eb3bca427 -Author: Ebrahim Byagowi -Date: Sun Jun 2 00:36:30 2019 +0430 +commit 9f1524ce83ebd2c3320ffc90776cb0f533db143f +Author: Khaled Hosny +Date: Sun Nov 17 16:17:20 2019 +0200 - minor + [cff] Fix a typo in processing rlinecurve + + We want to process all pairs of arguments except the last 6 as lines, so + should have been subtracting 6 here, otherwise if the number of + arguments happens to be multiples of 6 they will be all treated as + curves. + + See https://github.com/harfbuzz/harfbuzz/pull/2016#issuecomment-554640098 - src/hb-algs.hh | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) + src/hb-cff-interp-cs-common.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 33d38e793e2e4882337e5f42fbbae7d00d343940 -Author: Ebrahim Byagowi -Date: Sun Jun 2 00:19:57 2019 +0430 +commit 78d5eca813250b79e9b1fbfd2de3eae7ccf1fcf3 +Author: Behdad Esfahbod +Date: Mon Nov 18 13:09:29 2019 -0500 - Use a unified bsearch (#1741) + [set] Fix range-based-loop condition - A part of #593 + Alternative to https://github.com/harfbuzz/harfbuzz/pull/2046 - src/hb-aat-layout.cc | 10 +++++----- - src/hb-algs.hh | 29 ++++------------------------- - src/hb-ot-post-table.hh | 4 ++-- - src/hb-ot-var-mvar-table.hh | 6 +++--- - 4 files changed, 14 insertions(+), 35 deletions(-) + src/hb-set.hh | 13 ++++++++++--- + 1 file changed, 10 insertions(+), 3 deletions(-) -commit 97b92685775983a280f335423263a6a8d82c3941 -Author: Ebrahim Byagowi -Date: Sat Jun 1 21:25:09 2019 +0430 +commit 4dae7cee4b44fd6ffb295f8c99a52e42934d0c3c +Author: Hal Canary +Date: Wed Nov 13 10:08:35 2019 -0500 - [ci] Downgrade Travis distribution upon Behdad request + [minor] Fix common typos: substition, the the. + + s/substition/substitution/ + s/the the/the/ - .travis.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-layout.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit faf69e03f5ab9f3926442525f6c6e30fbc7a93d5 -Author: Ebrahim Byagowi -Date: Sat Jun 1 11:02:25 2019 +0430 +commit e6351d9b2c44c9abde90a6599ae7ebf0f6416c65 +Author: David Corbett +Date: Mon Nov 11 17:39:55 2019 -0500 - [ci] Install ragel on appveyor mingw bots - - Hopefully autotools timestamps issues will go + Add ms-use/IndicShapingInvalidCluster.txt - appveyor.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/Makefile.am | 2 +- + src/gen-vowel-constraints.py | 4 +- + src/hb-ot-shape-complex-vowel-constraints.cc | 2 +- + src/ms-use/COPYING | 21 ++++++ + src/ms-use/IndicShapingInvalidCluster.txt | 105 +++++++++++++++++++++++++++ + 5 files changed, 130 insertions(+), 4 deletions(-) -commit c91f3fa3eaf77fa255292c779f88da4feaaae8a0 -Author: Ebrahim Byagowi -Date: Sat Jun 1 10:55:37 2019 +0430 +commit b372c3e95694c8b1cabc0eb01c5abef6c41d3dbd +Author: David Corbett +Date: Fri Nov 8 20:59:48 2019 -0500 - [dwrite] Replace REPLACEME with release version the symbol had + Insert a dotted circle within - src/hb-directwrite.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/HBIndicVowelConstraints.txt | 97 ---------------------------- + src/Makefile.am | 2 +- + src/gen-vowel-constraints.py | 25 ++++--- + src/hb-ot-shape-complex-vowel-constraints.cc | 27 ++++++-- + 4 files changed, 40 insertions(+), 111 deletions(-) -commit 93c455567fe3d92a7efe65bf0e9ac2af794e2c4f -Author: Behdad Esfahbod -Date: Fri May 31 22:53:27 2019 -0700 +commit 64a45be5198f6e22c91454bda7bd9a9294552dff +Author: Ebrahim Byagowi +Date: Sat Nov 9 12:25:33 2019 +0330 - 2.5.1 + [ubsan] Don't decrease pointer if match_glyph_data is null (#2048) + + Similar to fix on https://github.com/harfbuzz/harfbuzz/pull/2022 + + Fixes https://crbug.com/1023070 - NEWS | 11 +++++++++++ - configure.ac | 2 +- - src/hb-version.h | 4 ++-- - 3 files changed, 14 insertions(+), 3 deletions(-) + src/hb-ot-layout-gsubgpos.hh | 6 +++++- + ...zz-testcase-minimized-harfbuzz_fuzzer-5740518101090304 | Bin 0 -> 439 bytes + 2 files changed, 5 insertions(+), 1 deletion(-) -commit 10e3cb9246ab3d288af4effe484f4d8beb2243d6 -Author: Behdad Esfahbod -Date: Fri May 31 22:56:37 2019 -0700 +commit 878e3588a3349c2660b0f9aa6d94a994034d7c10 +Author: Don +Date: Tue Nov 5 15:26:01 2019 -0800 - [docs] Fix dist + [cmake] Add harfbuzz-icu library - docs/Makefile.am | 1 + - 1 file changed, 1 insertion(+) + CMakeLists.txt | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) -commit 619f5f1eb9e5e2a4f326f89c9e3e05b01f9c042f -Author: Behdad Esfahbod -Date: Fri May 31 22:31:35 2019 -0700 +commit 84b86a12d99e996cfd85f9fe6fd2c2a593dd5cc2 +Author: Ebrahim Byagowi +Date: Wed Nov 6 09:22:34 2019 +0330 - Fourth try at building VS bots + [fuzz] Remove just added case - Based on https://github.com/harfbuzz/harfbuzz/issues/1730#issuecomment-497151210 + It didn't fail locally but on bots causing timeout, let remove for now. - src/hb-algs.hh | 16 +++++++++++----- - 1 file changed, 11 insertions(+), 5 deletions(-) + ...estcase-minimized-hb-subset-fuzzer-5121706490593280 | Bin 161328 -> 0 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) -commit f387a09742bd8e4a7a8da6db954339609839a113 -Author: Behdad Esfahbod -Date: Fri May 31 22:12:23 2019 -0700 +commit a8f049c9a18f166a826c78caa153330a1ec04214 +Author: Ebrahim Byagowi +Date: Tue Nov 5 22:26:36 2019 +0330 - [ci] Disable VS 2013 + [fuzz] Upload testcase of https://crbug.com/oss-fuzz/18529 - That one doesn't even understand constexpr. + Apparently false alarm per last comment and was ok locally also but lets have it here also - appveyor.yml | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) + ...estcase-minimized-hb-subset-fuzzer-5121706490593280 | Bin 0 -> 161328 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) -commit aba3888d933474a874d2f3ff02397b523846466c -Author: Behdad Esfahbod -Date: Fri May 31 22:11:27 2019 -0700 +commit 7cde68f10cdf2c3ff77c1d9077475c0fc034c75c +Author: Ebrahim Byagowi +Date: Sat Nov 2 19:04:14 2019 +0330 - Third try at fixing VS build - - https://github.com/harfbuzz/harfbuzz/issues/1730 + [ci] install pip in fedora bot - src/hb-algs.hh | 2 +- + .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 8aaecbb5832568135f6149254ed9e17ac4310341 -Author: Behdad Esfahbod -Date: Fri May 31 21:41:40 2019 -0700 +commit 46178c0325afc6b3131388fa2496e85d2aacace6 +Author: Ebrahim Byagowi +Date: Sat Nov 2 14:36:30 2019 +0330 - Second VS fix try - - https://github.com/harfbuzz/harfbuzz/issues/1730 + [ci] fix fedora bot - src/hb-algs.hh | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + .circleci/config.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 5a1b5c0a8b91a2291e7327e84acba2406a14414e -Author: Behdad Esfahbod -Date: Fri May 31 21:08:39 2019 -0700 +commit 486754a888d067c990d6a4351ccd41570f08c956 +Author: Ebrahim Byagowi +Date: Mon Sep 23 23:48:08 2019 +0330 - Try fixing VS builds - - Hopefully fixes https://github.com/harfbuzz/harfbuzz/issues/1730 + [serialize] Extract iterable copy, copy_all - src/hb-algs.hh | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) + src/hb-ot-cmap-table.hh | 6 +++--- + src/hb-ot-layout-gpos-table.hh | 7 ++----- + src/hb-ot-name-table.hh | 2 +- + src/hb-ot-vorg-table.hh | 2 +- + src/hb-serialize.hh | 6 ++++++ + 5 files changed, 13 insertions(+), 10 deletions(-) -commit 66381fb73f21e8e3c1c14b196e64d1004be303c7 +commit 35218c488c3966aa6d459ec5a007a2b43208e97c Author: Behdad Esfahbod -Date: Fri May 31 20:20:43 2019 -0700 +Date: Thu Oct 31 13:19:44 2019 -0700 - [ci] Enable other versions of Visual Studio + Minor - https://github.com/harfbuzz/harfbuzz/issues/1730 + Allow empty HB_VAR_ARRAY definition. Though, doesn't compile with any + compiler I know of. - appveyor.yml | 44 ++++++++++++++++++++++++-------------------- - 1 file changed, 24 insertions(+), 20 deletions(-) + src/hb-machinery.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 92fde3dea282d308fad2b8e93cd638aa813c6f2a +commit 1a1d64bc6f52b42e21609e8ceb4269bdf53b3c40 Author: Behdad Esfahbod -Date: Fri May 31 20:16:25 2019 -0700 +Date: Thu Oct 31 12:50:47 2019 -0700 - Whitespace + If applying morx, apply kern table even if GPOS is present and has kern + + Since we won't be applying GPOS if morx... + + To be adjusted as I receive more information from Ned. But for now + fixes this: + + $ ./hb-shape GillSans.ttc Ty + [T=0+1109|y=1@-128,0+769] + + Fixes https://github.com/harfbuzz/harfbuzz/issues/1982 for now. - src/hb-algs.hh | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) + src/hb-ot-shape.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 49879adbfc57c3173a25bbc55afc0796ee71b6da -Author: rsheeter -Date: Fri May 31 15:14:44 2019 -0700 +commit 3a74ee528255cc027d84b204a87b5c25e47bff79 +Author: Behdad Esfahbod +Date: Tue Oct 29 12:27:03 2019 -0700 - [subset] Correct calculation of max offset; fixes bug where loca would erroneously be short + 2.6.4 - src/hb-ot-glyf-table.hh | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) + NEWS | 7 +++++++ + configure.ac | 2 +- + src/hb-version.h | 4 ++-- + 3 files changed, 10 insertions(+), 3 deletions(-) -commit 2ad4ba7bc04fbbd886a2da6fbc55a4e13468d878 -Author: Behdad Esfahbod -Date: Fri May 31 15:48:54 2019 -0700 +commit 3958f6fb2378d83dd5107d62a8464187c93707b0 +Author: Ebrahim Byagowi +Date: Tue Oct 29 22:36:50 2019 +0330 - [gsub] Minor + Add in_range in hb_bytes_t to merge range_checker_t with it - src/hb-ot-layout-gsub-table.hh | 40 +++++++++++++++++++++------------------- - 1 file changed, 21 insertions(+), 19 deletions(-) + src/hb-array.hh | 9 +++++++++ + src/hb-ot-glyf-table.hh | 28 ++++++++++++-------------- + src/hb-ot-var-gvar-table.hh | 49 +++++++++++++++------------------------------ + 3 files changed, 38 insertions(+), 48 deletions(-) -commit 2dbdec66a17af94fffc50949e4712465aada9a68 -Author: Behdad Esfahbod -Date: Fri May 31 15:38:11 2019 -0700 +commit 7915c5d6fa3efac99df08a54d4437eca0b780033 +Author: Ebrahim Byagowi +Date: Tue Oct 29 22:55:34 2019 +0330 - [gsub] Porting serialize to iterators + [ci] Check the recipt introduce in 7152ac3 - src/hb-ot-layout-gsub-table.hh | 15 ++++++++++----- - 1 file changed, 10 insertions(+), 5 deletions(-) + .circleci/config.yml | 1 + + 1 file changed, 1 insertion(+) -commit 1834cf86d40abfbb536db1edb366c90318ba49fc -Author: Behdad Esfahbod -Date: Fri May 31 14:39:32 2019 -0700 +commit aa3831e295540083350c640d4a630f53e70d822f +Author: Ebrahim Byagowi +Date: Tue Oct 29 21:37:07 2019 +0330 - [serialize] Pass offset to serialize_subset() + [glyf] Use contour_bounds_t::empty to simplify get_extents logic - src/hb-open-type.hh | 14 +++++++++----- - src/hb-ot-layout-common.hh | 4 ++-- - src/hb-ot-layout-gdef-table.hh | 12 ++++++------ - src/hb-ot-layout-gsubgpos.hh | 7 ++++--- - 4 files changed, 21 insertions(+), 16 deletions(-) + src/hb-ot-glyf-table.hh | 20 ++++++-------------- + 1 file changed, 6 insertions(+), 14 deletions(-) -commit 926044162472aeca8f5032b11b544d38be587110 -Author: Behdad Esfahbod -Date: Fri May 31 14:34:34 2019 -0700 +commit d59ae5836d1349b885db980cbb741da33caebfde +Author: Ebrahim Byagowi +Date: Tue Oct 29 21:30:04 2019 +0330 - [serialize] Pass offset to serialize_copy() + [glyf] Refactor contour_bounds_t use to make its fields protected - src/hb-open-type.hh | 12 ++++++++---- - src/hb-ot-layout-common.hh | 4 ++-- - src/hb-ot-layout-gsubgpos.hh | 2 +- - src/hb-ot-name-table.hh | 2 +- - 4 files changed, 12 insertions(+), 8 deletions(-) + src/hb-ot-glyf-table.hh | 47 ++++++++++++++++++++++++++--------------------- + 1 file changed, 26 insertions(+), 21 deletions(-) -commit 87dd4bff1c42f1845fb3d11477e5de210121d48e +commit 773ee8041e8905bfb06c1a71d2b4fc99110b3dc6 +Merge: 47b4074d 0efbda7a Author: Behdad Esfahbod -Date: Thu May 30 11:26:17 2019 -0400 +Date: Tue Oct 29 10:58:56 2019 -0700 - [math] Rename HB_MATH_GLYPH_PART_FLAG_EXTENDER - - To HB_OT_MATH_GLYPH_PART_FLAG_EXTENDER. Added a deprecated macro. + Merge pull request #2038 from ebraminio/glyf-contour - Fixes https://github.com/harfbuzz/harfbuzz/issues/1734 - - src/hb-ot-deprecated.h | 4 ++++ - src/hb-ot-math-table.hh | 2 +- - src/hb-ot-math.h | 2 +- - test/api/test-ot-math.c | 16 ++++++++-------- - 4 files changed, 14 insertions(+), 10 deletions(-) + Remove contour_point_t so we won't need to zero its unused var -commit 88f9dab366491af144da316384991e74af443226 +commit 0efbda7a40742cbdf30d5a85061ffb6a0a55bcc0 Author: Ebrahim Byagowi -Date: Wed May 29 01:55:31 2019 +0430 +Date: Tue Oct 29 21:03:26 2019 +0330 - [ci] Clean up and add disabled bots of other msvc versions (#1733) + Remove contour_point_t so we won't need to zero its unused var - appveyor.yml | 41 ++++++++++++++++++++++++++++++----------- - 1 file changed, 30 insertions(+), 11 deletions(-) + src/hb-ot-glyf-table.hh | 27 +++++++++++++-------------- + 1 file changed, 13 insertions(+), 14 deletions(-) -commit da9d43171ba4ae0a78c92e9de83498fd2f513c8b -Author: Bruce Mitchener -Date: Tue May 28 21:50:17 2019 +0700 +commit 47b4074d5f98d71d2983470602eff9b93f102af4 +Merge: dd8a8460 dd288840 +Author: Behdad Esfahbod +Date: Tue Oct 29 03:16:34 2019 -0700 - Fix some typos. + Merge pull request #2034 from khaledhosny/cmap-notdef + + [cmap] Check GID before adding ranges in format 4 & 12 - docs/usermanual-clusters.xml | 4 ++-- - docs/usermanual-fonts-and-faces.xml | 2 +- - src/hb-ot-math.h | 2 +- - 3 files changed, 4 insertions(+), 4 deletions(-) +commit dd8a8460377ca54207877ea9da96931175dbb15f +Author: jfkthame +Date: Tue Oct 29 09:20:41 2019 +0000 -commit 8a133718472d152fa1f69ec52862b019b71b371f -Author: Ebrahim Byagowi -Date: Tue May 28 13:54:45 2019 +0430 + Use proper y-scale factor for height value - [test] minor, fix copyright - - nothing important, fixing a copy paste error inconsistency + src/hb-ot-cff1-table.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) - test/api/test-aat-layout.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 13316ac5d435f11c2c65fd2d762841a819afb639 -Author: Ebrahim Byagowi -Date: Tue May 28 13:48:39 2019 +0430 +commit 7152ac3fcfe8a599aa0d20f8d02ef38c69111231 +Author: Behdad Esfahbod +Date: Mon Oct 28 17:12:55 2019 -0700 - [test] minor style improve + Fix build + + $ make CPPFLAGS="-DHB_TINY -DHB_NO_OT_FONT" libharfbuzz-subset.la - test/subset/run-tests.py | 38 +++++++++++++++++++------------------- - 1 file changed, 19 insertions(+), 19 deletions(-) + src/hb-subset-plan.cc | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) -commit d64fb9db520d77eb7bb40ceda4e20be5e602bf91 -Author: David Corbett -Date: Sun May 26 11:05:54 2019 -0400 +commit dd288840d6f87acd13b99b71408dcdb35a2be9cb +Author: Khaled Hosny +Date: Tue Oct 29 01:45:49 2019 +0200 - [use] Allow U+1A60 TAI THAM SIGN SAKOT after vowel + [cmap] Check GID before adding ranges in format 4 & 12 + + Fixes https://github.com/harfbuzz/harfbuzz/issues/2031 - src/gen-use-table.py | 7 +- - src/hb-ot-shape-complex-use-machine.hh | 609 +++++++++++---------- - src/hb-ot-shape-complex-use-machine.rl | 20 +- - src/hb-ot-shape-complex-use-table.cc | 4 +- - src/hb-ot-shape-complex-use.cc | 3 + - src/hb-ot-shape-complex-use.hh | 2 + - .../3cc01fede4debd4b7794ccb1b16cdb9987ea7571.ttf | Bin 0 -> 1144 bytes - .../fd565cabd5208d345d0ed4fda7ae742917d846a5.ttf | Bin 1056 -> 0 bytes - .../shaping/data/in-house/tests/use-syllable.tests | 5 +- - 9 files changed, 351 insertions(+), 299 deletions(-) + src/hb-ot-cmap-table.hh | 32 ++++++++++++++++++++++++-------- + test/api/fonts/cmunrm.otf | Bin 0 -> 330492 bytes + test/api/test-collect-unicodes.c | 22 ++++++++++++++++++++++ + 3 files changed, 46 insertions(+), 8 deletions(-) -commit 179570d4cae9aefcd91d540b8865a81d569b3358 +commit fd71c045b46380281ba8a7e351fac7248938c74c Author: Behdad Esfahbod -Date: Mon May 27 13:08:07 2019 -0400 +Date: Mon Oct 28 17:06:53 2019 -0700 - [atomic] Fix warning, second time - - Fixes https://bugzilla.mozilla.org/show_bug.cgi?id=1554306 + Hopefully fix up previous commit and bots - src/hb-atomic.hh | 2 +- + src/hb.hh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit ad17a8bdd571c7b275f9735e3602a8068f12934f +commit e832dc4c642f604d2cbb8e6b2f0b8d37151936f1 Author: Behdad Esfahbod -Date: Sat May 25 16:33:21 2019 -0400 +Date: Mon Oct 28 17:02:40 2019 -0700 - [ucd] Update for latest packTab + [config] Make HB_NO_ERRNO work with systems defining errno as a macro - src/gen-ucd-table.py | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) + src/hb.hh | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) -commit 771712b3ca97035ba5690e65bd7e63a852286159 +commit ce11df1b5b8e49712bef249de19bc4768f3a691c Author: Behdad Esfahbod -Date: Sat May 25 15:58:45 2019 -0400 - - [ucd] Update for recent packTab - - No need for separate youseedy package. - - src/gen-ucd-table.py | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -commit 52aa6c57c5a4b18807a1329549dface90b148f22 -Author: Ebrahim Byagowi -Date: Sat May 25 22:55:06 2019 +0430 - - [ci] minor - - .circleci/config.yml | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -commit 9b75da4299adb5487519ddf96e99949b1dad2d5c -Author: Ebrahim Byagowi -Date: Sat May 25 22:46:10 2019 +0430 - - [ci] minor - - .circleci/config.yml | 2 ++ - 1 file changed, 2 insertions(+) - -commit 9158cab3f9f9e1a4941c1dbf0aa71455ceb00da6 -Author: Ebrahim Byagowi -Date: Sat May 25 22:33:02 2019 +0430 +Date: Mon Oct 28 14:45:31 2019 -0700 - [ci] Store dist-win result instead + 2.6.3 - .circleci/config.yml | 11 +++++------ - 1 file changed, 5 insertions(+), 6 deletions(-) + NEWS | 8 ++++++++ + configure.ac | 2 +- + src/hb-font.cc | 2 +- + src/hb-version.h | 4 ++-- + 4 files changed, 12 insertions(+), 4 deletions(-) -commit 85b68a42af541bc91f2851389ac09b012a6d3aa1 +commit 5a59de2b983ed7a1c639ea3e4d23c341134cd6d5 Author: Behdad Esfahbod -Date: Sat May 25 12:59:01 2019 -0400 +Date: Mon Oct 28 14:02:47 2019 -0700 - [atomic] Fix warnings + Actually add +hb_font_get_nominal_glyphs() - https://bugzilla.mozilla.org/show_bug.cgi?id=1554306 + New API: + +hb_font_get_nominal_glyphs() - src/hb-atomic.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-font.cc | 23 +++++++++++++++++++++++ + src/hb-font.h | 8 ++++++++ + 2 files changed, 31 insertions(+) -commit 941c1b6d711b8528d0f5faa5655b09ea74f7dfb4 +commit 03028a5fe512978a8f8e2396001cf8e425b44f72 Author: Behdad Esfahbod -Date: Sat May 25 12:52:16 2019 -0400 +Date: Mon Oct 28 13:46:56 2019 -0700 - [mingw] Update instructions + Revert "Don't include codepoint 0 in the results of collect_unicodes." - https://github.com/harfbuzz/harfbuzz/issues/1728 - - RELEASING.md | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 210f93c143d0fa2a7b293a6ffd138b3e01cab7c0 -Author: Behdad Esfahbod -Date: Sat May 25 12:49:20 2019 -0400 - - [mutex] Prefer pthread over windows + This reverts commit 14ad96ffbf77c33d8d33d2686d17c2375381989e. - https://github.com/harfbuzz/harfbuzz/issues/1728 + This was wrong. My bad! + + https://github.com/harfbuzz/harfbuzz/issues/2031 - src/hb-mutex.hh | 22 +++++++++++----------- - 1 file changed, 11 insertions(+), 11 deletions(-) + src/hb-ot-cmap-table.hh | 8 +------- + 1 file changed, 1 insertion(+), 7 deletions(-) -commit a5d1b0bdaa0183e2bd310640f5867426096e0b18 +commit 2714dc31b8d0ffe3c043935dd7619be0dd7b7635 +Merge: aca63902 14ad96ff Author: Behdad Esfahbod -Date: Sat May 25 12:45:40 2019 -0400 +Date: Mon Oct 28 13:01:34 2019 -0700 - Look for pthread even if win32 + Merge pull request #2032 from googlefonts/collect_unicodes - https://github.com/harfbuzz/harfbuzz/issues/1728 - - configure.ac | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) + Don't include codepoint 0 in the results of collect_unicodes. -commit f3b132187fc734cbb3705b405361c8bad9a72582 -Author: Behdad Esfahbod -Date: Sat May 25 12:42:38 2019 -0400 +commit 14ad96ffbf77c33d8d33d2686d17c2375381989e +Author: Garret Rieger +Date: Mon Oct 28 12:56:04 2019 -0700 - [mingw] Some more tweaks - - It now survives ./config.status --recheck as well. - - https://github.com/harfbuzz/harfbuzz/issues/1728 + Don't include codepoint 0 in the results of collect_unicodes. + It is always assumed to be the notdef glyph. - mingw-configure.sh | 37 ++++++++++++++++++------------------- - mingw32.sh | 2 +- - mingw64.sh | 2 +- - 3 files changed, 20 insertions(+), 21 deletions(-) + src/hb-ot-cmap-table.hh | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) -commit c41ed54b169c16fb9862e88ddf127ae68c1561e9 -Author: Behdad Esfahbod -Date: Sat May 25 12:35:09 2019 -0400 +commit aca63902814748b36bf6939421cfa95eed3a1ca7 +Author: Ebrahim Byagowi +Date: Tue Oct 22 00:06:46 2019 +0330 - [mingw] Add "make dist-win" to toplevel Makefile + [gpos] Don't move pointer when match_glyph_data is not set - Makefile.am | 16 +++++++++++++--- - 1 file changed, 13 insertions(+), 3 deletions(-) + src/hb-ot-layout-gsubgpos.hh | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) -commit a0a75a7c701932f4533b104eeb3c6087d01aa2ae -Author: Behdad Esfahbod -Date: Sat May 25 12:16:28 2019 -0400 +commit defe9b6da018bc85750c999454c51fde0cadb9b2 +Author: Qunxin Liu +Date: Fri Oct 25 10:07:26 2019 -0700 - [mingw] More + crash fix : Heap-buffer-overflow READ 2 + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=18513 - Makefile.am | 8 +++++++- - mingw-configure.sh | 29 +++++++++++++++++++++++++++++ - mingw32.sh | 25 ++----------------------- - mingw64.sh | 25 ++----------------------- - 4 files changed, 40 insertions(+), 47 deletions(-) + src/hb-ot-layout-gpos-table.hh | 12 ++++++------ + ...z-testcase-minimized-hb-subset-fuzzer-5677906231033856 | Bin 0 -> 938 bytes + 2 files changed, 6 insertions(+), 6 deletions(-) -commit 309a9d8ffb499f89738864acef596685ca495150 -Author: Ebrahim Byagowi -Date: Sat May 25 20:40:03 2019 +0430 +commit b2fcca6e14afc8085cc1c2491b2d7c780dad1450 +Author: Qunxin Liu +Date: Thu Oct 24 15:15:26 2019 -0700 - [ci] Remove --without-icu now that we have it in ./mingw{32,64} scripts + fuzzer crash fix + https://oss-fuzz.com/testcase-detail/5643107869917184 - .circleci/config.yml | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/hb-ot-layout-gsubgpos.hh | 11 +++++++---- + ...-testcase-minimized-hb-subset-fuzzer-5643107869917184 | Bin 0 -> 3232 bytes + 2 files changed, 7 insertions(+), 4 deletions(-) -commit ccfe642c0cdc9fbc8280669e3e8b01dc5eb682d8 -Author: Behdad Esfahbod -Date: Sat May 25 12:08:05 2019 -0400 +commit 9815ca0338b47c6ea4e82f2fbd39d70e3456aca1 +Author: Ebrahim Byagowi +Date: Thu Oct 24 21:05:38 2019 +0330 - [mingw] Force off ICU - - If cross-compiled ICU is not available, we might end up finding the - native ICU via icu-config. That's distracting. + [ci] Use custom subset fuzzer timeout for failing sanitizer bots - mingw32.sh | 2 +- - mingw64.sh | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) + .circleci/config.yml | 8 ++++---- + test/fuzzing/run-shape-fuzzer-tests.py | 3 ++- + test/fuzzing/run-subset-fuzzer-tests.py | 3 ++- + 3 files changed, 8 insertions(+), 6 deletions(-) -commit 0e6b7f7cd51d7376f21a422881cb4eb542360b0b +commit b03b62cb304279195569180061cde745e0c9880a Author: Ebrahim Byagowi -Date: Sat May 25 20:27:29 2019 +0430 +Date: Wed Oct 23 12:18:21 2019 +0330 - [ci] Build mingw on Fedora and store .exe outputs + [ci] Add HB_NO_MT on non HB_TINY no-build-system builds - .circleci/config.yml | 16 ++++++++++++---- - 1 file changed, 12 insertions(+), 4 deletions(-) + .circleci/config.yml | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) -commit 7b716cbbe6de2902ca6b1f67024b3f8cdb41340c +commit 5e489670e15329f5eced16e5a76145c6149a265f Author: Behdad Esfahbod -Date: Sat May 25 11:37:23 2019 -0400 +Date: Tue Oct 22 15:03:47 2019 -0700 - [ming2] Update instructions - - Part of https://github.com/harfbuzz/harfbuzz/issues/1728 + Remove hb-warning.cc - Only left to write how to create a win32 bundle. + Fixes https://github.com/harfbuzz/harfbuzz/issues/2005 - README.mingw.md | 44 ++++++++++++++++++++++++++------------------ - RELEASING.md | 54 ++++++------------------------------------------------ - 2 files changed, 32 insertions(+), 66 deletions(-) - -commit 77a1b6b7c3bd5490ffa5bb48a8b52d9c4c18e669 -Author: Behdad Esfahbod -Date: Sat May 25 11:18:40 2019 -0400 - - [mingw] Rename README.wine + src/Makefile.sources | 1 - + src/harfbuzz.cc | 1 - + src/hb-atomic.hh | 16 +++++----------- + src/hb-mutex.hh | 25 ++++++------------------- + src/hb-warning.cc | 37 ------------------------------------- + 5 files changed, 11 insertions(+), 69 deletions(-) - Makefile.am | 2 +- - README.wine.md => README.mingw.md | 0 - 2 files changed, 1 insertion(+), 1 deletion(-) +commit 05bcdb39d8648c49f7984c404aee096f2ad1d655 +Author: Garret Rieger +Date: Mon Oct 21 16:10:06 2019 -0700 -commit c68b4264880c0f99bcb579345e51ce54e799655b -Author: Behdad Esfahbod -Date: Sat May 25 11:17:56 2019 -0400 + Add a specialization of array_t:hash for hb_bytes_t and hb_ubytes_t. - [mingw] Update for recent change + src/hb-array.hh | 34 ++++++++++++++++++++++++---------- + src/hb-ot-layout-gsubgpos.hh | 2 -- + 2 files changed, 24 insertions(+), 12 deletions(-) - README.wine.md | 2 +- - RELEASING.md | 4 ++-- - 2 files changed, 3 insertions(+), 3 deletions(-) +commit 95ab110cd9a6083a854e538211618b2733aba643 +Author: Garret Rieger +Date: Mon Oct 21 13:15:46 2019 -0700 -commit 5cf2e648a67e1af20a23e010c86e8812a74ff7a4 -Author: Behdad Esfahbod -Date: Sat May 25 11:15:15 2019 -0400 + Optimize intersects_array to fix fuzzer timeout. - [mingw] Update for Fedora mingw installation location - - Also adds --with-uniscribe by default. - - Part of https://github.com/harfbuzz/harfbuzz/issues/1728 + src/hb-ot-layout-gsubgpos.hh | 10 +++++----- + ...estcase-minimized-hb-subset-fuzzer-5763024094232576 | Bin 0 -> 125681 bytes + 2 files changed, 5 insertions(+), 5 deletions(-) - mingw32.sh | 9 +++++---- - mingw64.sh | 9 +++++---- - 2 files changed, 10 insertions(+), 8 deletions(-) +commit be5cdcdfa21a2d956fc8c445452a78e77ede95fb +Author: Garret Rieger +Date: Tue Oct 22 11:55:04 2019 -0700 -commit e7ed85de95d3ccdb674ec5a30ae66d53cea74b3a -Merge: f93a5e6a 97ba206b -Author: n8willis -Date: Sat May 25 16:05:07 2019 +0100 + Store the hash value of a key in item_t in hb_map to reduce the number of hash computations. - Merge pull request #1691 from n8willis/usermanual-shaping - - Usermanual: Add new chapters. + src/hb-map.hh | 70 ++++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 40 insertions(+), 30 deletions(-) -commit 97ba206bed341dc7c915a86531512b1e0617303d -Author: Nathan Willis -Date: Sat May 25 12:26:50 2019 +0100 +commit b33a0d628e5e76992fdd02fd4178906137e6153c +Author: Qunxin Liu +Date: Mon Oct 21 13:24:52 2019 -0700 - Usermanual; minor. + fuzzer crash fix: Null-dereference WRITE + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=18363 - ...usermanual-buffers-language-script-and-direction.xml | 2 +- - docs/usermanual-opentype-features.xml | 17 ++++++++++------- - 2 files changed, 11 insertions(+), 8 deletions(-) + src/hb-ot-layout-common.hh | 4 +++- + ...z-testcase-minimized-hb-subset-fuzzer-5659903036751872 | Bin 0 -> 781 bytes + 2 files changed, 3 insertions(+), 1 deletion(-) -commit f93a5e6a7dad4fde2bf61c241bf32da678525c8b -Author: Behdad Esfahbod -Date: Fri May 24 17:02:38 2019 -0400 +commit cf414e361a99decd9c1710f1012236bffd067878 +Author: Garret Rieger +Date: Fri Sep 27 09:55:17 2019 -0700 - [win] Add mingw-ldd.py - - Part of https://github.com/harfbuzz/harfbuzz/issues/1728 + Added profiling instructions to TESTING.md - mingw-ldd.py | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 58 insertions(+) + TESTING.md | 11 +++++++++++ + 1 file changed, 11 insertions(+) -commit 5fd3ece5237ac6a4ee95b2665b5e20102ed176bb -Author: Behdad Esfahbod -Date: Fri May 24 15:56:15 2019 -0400 +commit 1f0a9d9be979de01527c05f4dbe6fbc62799597c +Author: Qunxin Liu +Date: Tue Sep 17 11:10:08 2019 -0700 - 2.5.0 + [subset] GPOS Lookup Type 2: PairPos - Makefile.am | 2 +- - NEWS | 14 ++++++++++++++ - configure.ac | 2 +- - src/hb-version.h | 4 ++-- - 4 files changed, 18 insertions(+), 4 deletions(-) + src/hb-ot-layout-gpos-table.hh | 131 ++++++++++++++++++++- + test/subset/data/Makefile.am | 1 + + test/subset/data/Makefile.sources | 1 + + ...s2_1_font7.keep-layout-retain-gids.21,23,25.otf | Bin 0 -> 1764 bytes + ...gpos2_1_font7.keep-layout-retain-gids.21,23.otf | Bin 0 -> 1632 bytes + ...eep-layout-retain-gids.retain-all-codepoint.otf | Bin 0 -> 3688 bytes + .../gpos2_1_font7.keep-layout.21,23,25.otf | Bin 0 -> 1428 bytes + .../gpos2_1_font7.keep-layout.21,23.otf | Bin 0 -> 1308 bytes + ...s2_1_font7.keep-layout.retain-all-codepoint.otf | Bin 0 -> 3688 bytes + ...s2_2_font5.keep-layout-retain-gids.21,23,25.otf | Bin 0 -> 1776 bytes + ...gpos2_2_font5.keep-layout-retain-gids.21,23.otf | Bin 0 -> 1644 bytes + ...eep-layout-retain-gids.retain-all-codepoint.otf | Bin 0 -> 3684 bytes + .../gpos2_2_font5.keep-layout.21,23,25.otf | Bin 0 -> 1440 bytes + .../gpos2_2_font5.keep-layout.21,23.otf | Bin 0 -> 1320 bytes + ...s2_2_font5.keep-layout.retain-all-codepoint.otf | Bin 0 -> 3684 bytes + test/subset/data/fonts/gpos2_1_font7.otf | Bin 0 -> 4584 bytes + test/subset/data/fonts/gpos2_2_font5.otf | Bin 0 -> 4580 bytes + test/subset/data/tests/layout.gpos2.tests | 12 ++ + 18 files changed, 139 insertions(+), 6 deletions(-) -commit 1da089179b9bd06f071f967d128819e85998b809 -Author: Behdad Esfahbod -Date: Fri May 24 15:41:34 2019 -0400 +commit e766783152b91fb20baf0c657586628fd7959b1b +Author: Ebrahim Byagowi +Date: Mon Oct 21 22:17:06 2019 +0330 - Put back Since: tags for hb_color_get_* + [fuzz] Add https://crbug.com/oss-fuzz/17898 testcase - src/hb-common.cc | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) + ...sterfuzz-testcase-hb-subset-fuzzer-5717414645334016 | Bin 0 -> 310324 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) -commit dd5ad6b6b5aed3db62bc03b89acf90c68795edb4 -Author: Nathan Willis -Date: Fri May 24 20:30:22 2019 +0100 +commit b66094ada0ae7e69d5d08ee8423554629eabccaf +Author: Qunxin Liu +Date: Mon Sep 30 16:19:18 2019 -0700 - Usermanual-buffers-chapter: trim out fallback-of-ufuncs talk and just mention that stuff exists if you care to go find it. + [subset] GSUB Lookup Type 6: ChainContextSubst - docs/usermanual-buffers-language-script-and-direction.xml | 13 +++++++------ - 1 file changed, 7 insertions(+), 6 deletions(-) + src/hb-ot-layout-common.hh | 260 ++++++++++++++------- + src/hb-ot-layout-gsubgpos.hh | 218 ++++++++++++++++- + test/subset/data/Makefile.am | 1 + + test/subset/data/Makefile.sources | 1 + + ...ules_f1.keep-layout-retain-gids.30,31,32,33.otf | Bin 0 -> 2380 bytes + ...eep-layout-retain-gids.retain-all-codepoint.otf | Bin 0 -> 3748 bytes + ...ultiple_subrules_f1.keep-layout.30,31,32,33.otf | Bin 0 -> 1916 bytes + ...ubrules_f1.keep-layout.retain-all-codepoint.otf | Bin 0 -> 3748 bytes + ...ules_f1.keep-layout-retain-gids.30,31,32,33.otf | Bin 0 -> 2408 bytes + ...eep-layout-retain-gids.retain-all-codepoint.otf | Bin 0 -> 3780 bytes + ...ultiple_subrules_f1.keep-layout.30,31,32,33.otf | Bin 0 -> 1944 bytes + ...ubrules_f1.keep-layout.retain-all-codepoint.otf | Bin 0 -> 3780 bytes + ...mple_f2.keep-layout-retain-gids.30,31,32,33.otf | Bin 0 -> 2368 bytes + ...eep-layout-retain-gids.retain-all-codepoint.otf | Bin 0 -> 3716 bytes + ...chaining3_simple_f2.keep-layout.30,31,32,33.otf | Bin 0 -> 1904 bytes + ..._simple_f2.keep-layout.retain-all-codepoint.otf | Bin 0 -> 3716 bytes + .../fonts/gsub_chaining1_multiple_subrules_f1.otf | Bin 0 -> 4700 bytes + .../fonts/gsub_chaining2_multiple_subrules_f1.otf | Bin 0 -> 4780 bytes + .../subset/data/fonts/gsub_chaining3_simple_f2.otf | Bin 0 -> 4668 bytes + test/subset/data/tests/layout.gsub6.tests | 12 + + 20 files changed, 405 insertions(+), 87 deletions(-) -commit e1a5ce6aa661251e998df7b3612a1d5d39e28827 -Author: Qunxin Liu -Date: Fri May 24 10:58:52 2019 -0700 +commit eff91bbb4b1e6f4cc8401b1915d5ddad64e053bb +Author: Garret Rieger +Date: Wed Oct 16 16:58:57 2019 -0700 - Fix fuzzer crash testcase - - Add a check for stringOffSet(uint16) overflow, - return early if overflow happens + Add missing pop() for the failure case of script subsetting. - src/hb-ot-name-table.hh | 2 +- - ...estcase-minimized-hb-subset-fuzzer-5077547978588160 | Bin 0 -> 339602 bytes - ...estcase-minimized-hb-subset-fuzzer-5761434614497280 | Bin 0 -> 532 bytes - 3 files changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-layout-common.hh | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) -commit 240540ff9a463cf386ae5755471a5621b94290df -Author: Nathan Willis -Date: Fri May 24 20:13:35 2019 +0100 +commit eab191fd9c851cb7881163ddd5e11a2ebc58cef4 +Author: Garret Rieger +Date: Wed Oct 2 14:28:53 2019 -0700 - Usermanual-buffers-chapter: explain ICU fallback for Ufuncs. + Rewrite hash and == function for hb_array_t as a plain loop. + + Profling showed that the current implementation were accounting for nearly all processing time in some cases. These implementations look to be about 10x faster. - docs/usermanual-buffers-language-script-and-direction.xml | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) + src/hb-array.hh | 21 +++++++++++---------- + 1 file changed, 11 insertions(+), 10 deletions(-) -commit d100ccad02b038719472b2cc733940ffb0374cd1 -Author: David Corbett -Date: Sun May 19 10:01:20 2019 -0400 +commit 831daf4c76aed87d229b1edfb59a0a37caa8e581 +Author: Garret Rieger +Date: Tue Oct 1 17:46:27 2019 -0700 - [use] Allow multiple FMs in a cluster + Enforce HB_MAX_LANGSYS limit during layout subsetting. - src/gen-use-table.py | 12 +- - src/hb-ot-shape-complex-use-machine.hh | 567 ++++++++++++++++----------------- - src/hb-ot-shape-complex-use-machine.rl | 14 +- - src/hb-ot-shape-complex-use-table.cc | 38 ++- - src/hb-ot-shape-complex-use.hh | 11 +- - 5 files changed, 315 insertions(+), 327 deletions(-) + src/hb-ot-layout-common.hh | 68 +++++++++++++-------- + ...ase-minimized-hb-subset-fuzzer-5721073428987904 | Bin 0 -> 349561 bytes + 2 files changed, 41 insertions(+), 27 deletions(-) -commit 487879e013758aef2c7f824033a40cd56361d240 -Author: Behdad Esfahbod -Date: Fri May 24 12:37:53 2019 -0400 +commit 9871461bce9a1557807f69615300e5df4f6ae322 +Author: Garret Rieger +Date: Tue Oct 1 16:29:24 2019 -0700 - Don't compile in UCD if HB_NO_UCD defined + Enforce HB_MAX_SCRIPTS during subsetting of the script table. - src/hb-ucd.cc | 3 +++ - 1 file changed, 3 insertions(+) + src/hb-ot-layout-common.hh | 46 +++++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 41 insertions(+), 5 deletions(-) -commit 1fffe51a295b6106a442bed8107d305c325bef05 +commit 029775bcbd0a25ee1cdb6c0653a2ce189774490a Author: Behdad Esfahbod -Date: Fri May 24 10:52:09 2019 -0400 +Date: Wed Oct 9 11:00:09 2019 +0700 - [blob] Shuffle + [buffer] Minor; improve HB_NO_BUFFER_MESSAGE - src/hb-blob.h | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) + src/hb-buffer.cc | 2 ++ + src/hb-buffer.hh | 2 +- + 2 files changed, 3 insertions(+), 1 deletion(-) -commit 96de94768b08287325be8947255917502368c337 -Merge: c96c6b28 1197bef2 -Author: rsheeter -Date: Fri May 24 11:22:41 2019 -0700 +commit 9a68e6b901967da14a5da5acb535c944794627b8 +Author: Ebrahim Byagowi +Date: Wed Oct 16 13:28:15 2019 +0330 - Merge pull request #1722 from googlefonts/glyf + [doc] minor - [subset] Use iterators in glyf/loca subsetting + Addresses https://github.com/harfbuzz/harfbuzz/pull/2013/files#r335196908 -commit 1197bef26c63ee896bea3fab5788635cb0fc9d18 -Author: Rod Sheeter -Date: Fri May 24 10:52:49 2019 -0700 + src/hb-common.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) - [subset] Per code review, use hb_array to avoid duplicated type name +commit 453050ad3083ed344bc2ab3b1651babbed34934d +Merge: d7df7db1 b0b8551a +Author: Ebrahim Byagowi +Date: Sun Oct 13 08:38:56 2019 +0330 - src/hb-ot-glyf-table.hh | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + Merge remote-tracking branch 'upstream/master' into var-subset + +commit b0b8551afc2ff86d027fdb380210601cb465af41 +Author: Ebrahim Byagowi +Date: Sat Oct 12 21:12:19 2019 +0330 + + [glyf] Use range_checker_t in composite_iter_t + + src/hb-ot-glyf-table.hh | 12 +++++++----- + src/hb-ot-var-gvar-table.hh | 19 +++++++++---------- + 2 files changed, 16 insertions(+), 15 deletions(-) + +commit 06e35ce052388e7ce079c0250db62428ae0c5bc8 +Author: Ebrahim Byagowi +Date: Sat Oct 12 15:16:31 2019 +0330 + + [glyf] minor + + src/hb-ot-glyf-table.hh | 128 +++++++++++++++++++++++++----------------------- + 1 file changed, 67 insertions(+), 61 deletions(-) + +commit d13bb4bd94a6ba8cdd4a03d40d8089a8f8b3a7ec +Author: Ebrahim Byagowi +Date: Sat Oct 12 12:13:57 2019 +0330 + + [glyf] other cleanups + + src/hb-ot-glyf-table.hh | 338 +++++++++++++++++++++++------------------------- + 1 file changed, 160 insertions(+), 178 deletions(-) + +commit e7aa8c5d22b034f3d7bcf187a63cdec27732fa8a +Author: Ebrahim Byagowi +Date: Sat Oct 12 11:25:32 2019 +0330 + + [glyf] Introduce glyf::Glyph, a hb_bytes_t/GlyphHeader pair + + src/hb-ot-glyf-table.hh | 177 +++++++++++++++++++++++++----------------------- + 1 file changed, 91 insertions(+), 86 deletions(-) + +commit 546ffc9faf869b4971765e9a4fd232cfe0eecaea +Author: Ebrahim Byagowi +Date: Sat Oct 12 09:51:57 2019 +0330 + + [glyf] minor + + src/hb-ot-glyf-table.hh | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 4299ea266e03b64db4e8a132983fed9fd0a967ee +Author: Ebrahim Byagowi +Date: Sat Oct 12 09:51:27 2019 +0330 + + [glyf] Move get_contour_points to GlyphHeader + + src/hb-ot-glyf-table.hh | 260 ++++++++++++++++++++++++++---------------------- + 1 file changed, 141 insertions(+), 119 deletions(-) + +commit b918cd8c76a6333e43b9be23178afc9e74e17024 +Author: Ben Wagner +Date: Thu Oct 10 15:30:48 2019 -0400 + + Document hb_feature_t. + + This documents hb_feature_t. This is motivated mostly by the ambiguity + of the units for 'start' and 'end' (clusters) and whether they are + inclusive or exclusive. This also documents that for lookup type 3 the + value is the one based index into the alternates and that in a list of + features later feature values override previous feature values with the + same tag. + + src/hb-common.h | 15 +++++++++++++++ + src/hb-shape.cc | 4 +++- + 2 files changed, 18 insertions(+), 1 deletion(-) + +commit e637a4b3de2fb8bdbc1b82e822f4a6cc579e794b +Merge: 670fec23 e4464f44 +Author: Behdad Esfahbod +Date: Fri Oct 11 10:28:58 2019 +0700 + + Merge pull request #2012 from harfbuzz/lepcha-oo + + Reorder U+1C29 LEPCHA VOWEL SIGN OO + +commit 670fec231d31bf7417de590efd3485f337a7330f +Author: Ebrahim Byagowi +Date: Thu Oct 10 09:21:08 2019 +0330 + + Minor, add a zero length tolerant memset, hb_memset + + src/hb-algs.hh | 10 +++++++++- + src/hb-buffer.cc | 3 +-- + 2 files changed, 10 insertions(+), 3 deletions(-) + +commit e4464f4484009b4efe7144570384d836cb6bbac8 +Author: David Corbett +Date: Wed Oct 9 20:55:52 2019 -0400 + + Reorder U+1C29 LEPCHA VOWEL SIGN OO + + src/gen-use-table.py | 3 +++ + src/hb-ot-shape-complex-use-table.cc | 2 +- + 2 files changed, 4 insertions(+), 1 deletion(-) + +commit e17e7443007fc0debc4a26e5cf37d5d76c747fbf +Author: Garret Rieger +Date: Wed Oct 9 11:45:42 2019 -0700 + + Convert existing uses of serialize_append in gsub subsetting to use subset_offset_array. + + src/hb-ot-layout-gsub-table.hh | 44 +++--------------------------------------- + 1 file changed, 3 insertions(+), 41 deletions(-) + +commit 36f18cecbbaf8635a2179a827242ca99d5283666 +Author: Garret Rieger +Date: Mon Oct 7 14:02:31 2019 -0700 + + Add subset_offset_array helper function which simplifies subsetting offset arrays during stream operations. + + src/hb-ot-layout-common.hh | 54 ++++++++++++++++++++++++++++++++++++++++++ + src/hb-ot-layout-gsub-table.hh | 15 +----------- + 2 files changed, 55 insertions(+), 14 deletions(-) + +commit dc45f225212da7b8eca0ddcb3c9cd66e65983605 +Author: Ebrahim Byagowi +Date: Tue Oct 8 23:27:37 2019 +0330 + + [ot-metrics] Don't use mixed scaled and not scaled for generating extents + + src/hb-ot-cff1-table.cc | 4 ++-- + src/hb-ot-cff2-table.cc | 4 ++-- + src/hb-ot-color-sbix-table.hh | 7 +++++++ + src/hb-ot-glyf-table.hh | 6 +++--- + test/api/test-ot-extents-cff.c | 6 +++--- + 5 files changed, 17 insertions(+), 10 deletions(-) + +commit b068e25f8f89d9b07963dddd5d5e14f61539556f +Author: Ebrahim Byagowi +Date: Tue Oct 8 16:29:15 2019 +0330 + + [glyf] Address Behdad's reviews + + Addresses https://github.com/harfbuzz/harfbuzz/pull/1999#issuecomment-539298559 + * Don't check against Null pool + * Remove cryptic _tt suffix + + src/hb-ot-font.cc | 4 ++-- + src/hb-ot-hmtx-table.hh | 16 ++++++++-------- + 2 files changed, 10 insertions(+), 10 deletions(-) + +commit 6961766db2c53ea813079c61e4d996234ae8be4f +Author: Ebrahim Byagowi +Date: Tue Oct 8 16:26:48 2019 +0330 + + [glyf] fix scaling direction + + src/hb-ot-glyf-table.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 0527fda4c75e4354198df79275526d4726a3aacc +Author: Ebrahim Byagowi +Date: Tue Oct 8 16:19:39 2019 +0330 + + minor + + src/hb-subset-cff-common.cc | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit b2628f1a3e3a6875dcdf7cb89f5b10a4ae76e6f9 +Author: Ebrahim Byagowi +Date: Tue Oct 8 15:09:09 2019 +0330 + + [glyf] Move glyph bytes drop hints logic to GlyphHeader + + src/hb-ot-glyf-table.hh | 92 ++++++++++++++++++++----------------------------- + 1 file changed, 37 insertions(+), 55 deletions(-) + +commit 1fb9c3b6463fdee9eb4dac697beab4d3d7a5fdcf +Author: Ebrahim Byagowi +Date: Tue Oct 8 13:50:16 2019 +0330 + + [glyf] Implement depth limit for add_gid_and_children + + src/hb-ot-glyf-table.hh | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +commit be0eddd41896824cb093024c2b4929b612ee1fae +Author: Ebrahim Byagowi +Date: Tue Oct 8 13:46:55 2019 +0330 + + [glyf] Move add_gid_and_children to glyf table + + src/hb-ot-glyf-table.hh | 14 ++++++++++++++ + src/hb-subset-plan.cc | 19 +------------------ + 2 files changed, 15 insertions(+), 18 deletions(-) + +commit c7621cf21115aa563ee4fb9d2fcb601984848494 +Author: Ebrahim Byagowi +Date: Tue Oct 8 13:24:26 2019 +0330 + + Minor, replace hb_set_add with private API + + src/hb-ot-map.cc | 2 +- + src/hb-subset-cff-common.hh | 2 +- + src/hb-subset-cff1.cc | 2 +- + src/hb-subset-cff2.cc | 2 +- + src/hb-subset-plan.cc | 10 +++++----- + 5 files changed, 9 insertions(+), 9 deletions(-) + +commit ad86806dcb702b25fac6a3364cf0f85e1b8f4b2a +Author: Ebrahim Byagowi +Date: Tue Oct 8 12:14:14 2019 +0330 + + [glyf] Move subset related methods inside GlyphHeader + + src/hb-ot-glyf-table.hh | 428 ++++++++++++++++++++++++------------------------ + src/hb-subset-plan.cc | 4 +- + 2 files changed, 214 insertions(+), 218 deletions(-) + +commit 7839e23558344f206175b5a798149e0f04f38266 +Author: Ebrahim Byagowi +Date: Mon Oct 7 11:14:26 2019 +0330 + + [glyf] minor + + src/hb-ot-glyf-table.hh | 38 +++++++++++++++----------------------- + 1 file changed, 15 insertions(+), 23 deletions(-) + +commit cbefbb2439c1a2f4c20877e611f8986b3933234e +Author: Ebrahim Byagowi +Date: Mon Oct 7 10:15:18 2019 +0330 + + [glyf] Move padding removal logic to GlyphHeader + + src/hb-ot-glyf-table.hh | 219 +++++++++++++++++++++++------------------------- + 1 file changed, 105 insertions(+), 114 deletions(-) + +commit 1ab8f9aa7a182fa078f6c6a5a78ef95686b1ac54 +Author: Ebrahim Byagowi +Date: Mon Oct 7 08:24:12 2019 +0330 + + [glyf] minor + + src/hb-ot-glyf-table.hh | 15 +++++++++------ + 1 file changed, 9 insertions(+), 6 deletions(-) + +commit 13fb5612ad545b419ca217f031864dde1b71c43f +Author: Ebrahim Byagowi +Date: Sun Oct 6 23:24:06 2019 +0330 + + [glyf] Aggregate get_offsets uses + + src/hb-ot-glyf-table.hh | 29 +++++++---------------------- + 1 file changed, 7 insertions(+), 22 deletions(-) + +commit 5179b96958f2db71c315c1d8c224bab87e2f4ae8 +Author: Ebrahim Byagowi +Date: Tue Oct 8 11:09:12 2019 +0330 + + [cff] minor on number_t + + src/hb-cff-interp-common.hh | 11 ++++------- + 1 file changed, 4 insertions(+), 7 deletions(-) + +commit d73cdcf3612ae6114a0f828e0f667d447ed1a964 +Author: Ebrahim Byagowi +Date: Sun Oct 6 18:09:14 2019 +0330 + + [ot-font] Apply font scaling before turning to int + + src/hb-ot-cff1-table.cc | 12 ++++----- + src/hb-ot-cff1-table.hh | 2 +- + src/hb-ot-cff2-table.cc | 8 +++--- + src/hb-ot-color-cbdt-table.hh | 14 +++++----- + src/hb-ot-color-sbix-table.hh | 8 +++--- + src/hb-ot-font.cc | 12 +++------ + src/hb-ot-glyf-table.hh | 58 ++++++++++++++++++++---------------------- + src/hb-ot-hmtx-table.hh | 2 +- + src/hb-ot-var-hvar-table.hh | 5 ++-- + test/api/test-ot-extents-cff.c | 20 +++++++-------- + 10 files changed, 66 insertions(+), 75 deletions(-) + +commit d7df7db160992e92c31afb6c79c7ccdad510fec1 +Merge: 74a2dbbc f2339964 +Author: Ebrahim Byagowi +Date: Sun Oct 6 17:18:59 2019 +0330 + + Merge remote-tracking branch 'upstream/master' into var-subset + +commit 74a2dbbcedb4647bf14dac17eb4faf1d1d57cf99 +Author: Ebrahim Byagowi +Date: Sun Oct 6 17:06:40 2019 +0330 + + minor + + .gitignore | 1 - + src/Makefile.sources | 1 - + src/hb-ot-font.cc | 1 - + src/hb-ot-hmtx-table.hh | 1 - + src/hb-ot-var-hvar-table.hh | 37 +++++++++++++++++-------------------- + 5 files changed, 17 insertions(+), 24 deletions(-) + +commit f2339964b713815c8e0e33699bf34ee24db12215 +Author: Ebrahim Byagowi +Date: Sun Oct 6 16:41:52 2019 +0330 + + [glyf] minor, remove GlyphHeader::simple_* helpers + + src/hb-ot-glyf-table.hh | 16 +++------------- + 1 file changed, 3 insertions(+), 13 deletions(-) + +commit 2d7ca6a76a754a42ec09a66319ac3e4ab5efc618 +Author: Ebrahim Byagowi +Date: Sun Oct 6 16:31:29 2019 +0330 + + [glyf] Move get_instruction_length inside GlyphHeader struct + + src/hb-ot-glyf-table.hh | 153 ++++++++++++++++++++++++++---------------------- + 1 file changed, 84 insertions(+), 69 deletions(-) + +commit 50aef4d7f80b6c8a19481ad3d0fa89c7c7f222c2 +Author: Ebrahim Byagowi +Date: Sun Oct 6 14:00:07 2019 +0330 + + [glyf] cleanup + + src/hb-ot-glyf-table.hh | 128 +++++++++++++++++++++--------------------------- + 1 file changed, 55 insertions(+), 73 deletions(-) + +commit ee3f4630d70099c42fd9c84796b29a236f6135b6 +Author: Ebrahim Byagowi +Date: Sun Oct 6 13:56:35 2019 +0330 + + [glyf] Remove get_composite_iter and refactor bytes_for_glyph for shape uses + + src/hb-ot-glyf-table.hh | 42 ++++++++++++++++-------------------------- + src/hb-subset-plan.cc | 2 +- + 2 files changed, 17 insertions(+), 27 deletions(-) + +commit 8378ab96e28fa34f154583850ff1c2c672a4310d +Author: Ebrahim Byagowi +Date: Sun Oct 6 13:49:45 2019 +0330 + + [glyf] Rewrite composite iterator to new iterators convention + + src/hb-ot-glyf-table.hh | 201 ++++++++++++++++++++---------------------------- + src/hb-subset-plan.cc | 10 +-- + 2 files changed, 85 insertions(+), 126 deletions(-) + +commit 100dbccaa50b2f965f3877f2156d388453f0948a +Merge: c54ee485 b7684fa9 +Author: Ebrahim Byagowi +Date: Sun Oct 6 09:18:22 2019 +0330 + + Merge remote-tracking branch 'upstream/master' into var-subset + +commit b7684fa9f42dffa6bd81acfade163123b30800b8 +Merge: 79ec65ae 21c80d95 +Author: Ebrahim Byagowi +Date: Sun Oct 6 09:00:48 2019 +0330 + + Merge pull request #1999 from ebraminio/glyf-var + + Implement gvar table and variable glyf + +commit 21c80d955f69c1242c77e0ec7ccd852360dd54dd +Author: Ebrahim Byagowi +Date: Sat Oct 5 23:58:52 2019 +0330 + + [gvar] minor + + src/hb-ot-var-gvar-table.hh | 43 +++++++++++++++++++++---------------------- + 1 file changed, 21 insertions(+), 22 deletions(-) + +commit 5752863640cf4292dec313edebb57aecd47496f3 +Author: Ebrahim Byagowi +Date: Sat Oct 5 23:51:50 2019 +0330 + + [glyf][gvar] Make HB_NO_VAR buildable + + src/hb-ot-font.cc | 2 ++ + src/hb-ot-glyf-table.hh | 6 ++++++ + src/hb-ot-hmtx-table.hh | 8 ++++++++ + 3 files changed, 16 insertions(+) + +commit 8e33510343d151afe49730f3a0b263a2853822b8 +Author: Ebrahim Byagowi +Date: Fri Oct 4 01:11:03 2019 +0330 + + [gvar] minor + + src/hb-ot-var-gvar-table.hh | 132 ++++++++++++++++++++++---------------------- + 1 file changed, 66 insertions(+), 66 deletions(-) + +commit b3afa8164460d63031a80d399200bcaa769c0fa1 +Author: Ebrahim Byagowi +Date: Fri Oct 4 00:32:04 2019 +0330 + + [glyf] Use common convention of other tables access, format + + src/hb-ot-face-table-list.hh | 1 + + src/hb-ot-glyf-table.hh | 65 +++++++++++++++++++------------------------- + 2 files changed, 29 insertions(+), 37 deletions(-) + +commit 88bd342c0ff686daad88bb6b4f2968bbd8b01a24 +Author: Ebrahim Byagowi +Date: Thu Oct 3 22:45:37 2019 +0330 + + [glyf] minor + + src/hb-ot-glyf-table.hh | 247 +++++++++++++++++++++++--------------------- + src/hb-ot-var-gvar-table.hh | 54 +++++----- + 2 files changed, 155 insertions(+), 146 deletions(-) + +commit ee7610181cee5bbc0b5dc291228fbe032097bde4 +Author: Ebrahim Byagowi +Date: Thu Oct 3 15:59:45 2019 +0330 + + [hmtx] Use more conventional internal API style + + src/Makefile.sources | 1 - + src/harfbuzz.cc | 1 - + src/hb-ot-font.cc | 12 ++++++++++++ + src/hb-ot-hmtx-table.cc | 42 ------------------------------------------ + src/hb-ot-hmtx-table.hh | 18 ++++++++++-------- + 5 files changed, 22 insertions(+), 52 deletions(-) + +commit c9577a630fd5bd08482ee7b94bc03c91fcf366c7 +Author: Ebrahim Byagowi +Date: Thu Oct 3 15:48:35 2019 +0330 + + [hmtx] Use more optimal way to access glyf table + + src/hb-ot-hmtx-table.cc | 20 ++++---------------- + src/hb-ot-hmtx-table.hh | 4 ++-- + 2 files changed, 6 insertions(+), 18 deletions(-) + +commit b9ff43c162e8f61cff8e48d3dcbf7c1fe263d625 +Author: Michiharu Ariza +Date: Tue Oct 1 16:13:40 2019 +0330 + + Implement gvar table and variable glyf + + Split from Ariza's "[subset] TrueType/CFF2 variable font" work on #1594 + + src/Makefile.sources | 2 + + src/harfbuzz.cc | 1 + + src/hb-ot-font.cc | 4 +- + src/hb-ot-glyf-table.hh | 618 ++++++++++++++--- + src/hb-ot-hmtx-table.cc | 54 ++ + src/hb-ot-hmtx-table.hh | 33 +- + src/hb-ot-var-gvar-table.hh | 734 +++++++++++++++++++++ + test/api/Makefile.am | 1 + + .../SourceSansVariable-Roman-nohvar-41,C1.ttf | Bin 0 -> 4696 bytes + test/api/fonts/SourceSansVariable-Roman.anchor.ttf | Bin 0 -> 4708 bytes + .../api/fonts/SourceSansVariable-Roman.modcomp.ttf | Bin 0 -> 3252 bytes + .../fonts/SourceSerifVariable-Roman-VVAR.abc.ttf | Bin 0 -> 5632 bytes + test/api/test-ot-metrics-tt-var.c | 250 +++++++ + 13 files changed, 1588 insertions(+), 109 deletions(-) + +commit c54ee4853092b8a7f9a47da36407455992f55d93 +Merge: 19d45dca 79ec65ae +Author: Ebrahim Byagowi +Date: Thu Oct 3 14:28:37 2019 +0330 + + Merge remote-tracking branch 'upstream/master' into var-subset + +commit 79ec65ae10f959aeddaa1e39eba5226c604a8c87 +Author: Ebrahim Byagowi +Date: Thu Oct 3 14:27:51 2019 +0330 + + [ot-font] Use var vmtx side bearing in calculating v-origin + + src/hb-ot-font.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 19d45dcab732f3a836e17d31be9ca92f01c818b0 +Merge: 8106ba7f 3fd555be +Author: Ebrahim Byagowi +Date: Thu Oct 3 13:39:17 2019 +0330 + + Merge remote-tracking branch 'upstream/master' into var-subset + +commit 3fd555be543a3e9bf9fee509327dbbc9a7b51cdb +Author: Ebrahim Byagowi +Date: Thu Oct 3 13:02:41 2019 +0330 + + [hmtx] Prepare to fix and minor fixes + + src/hb-ot-hmtx-table.hh | 41 ++++++++++++++++------------------------- + src/hb-ot-var-hvar-table.hh | 9 +++++---- + 2 files changed, 21 insertions(+), 29 deletions(-) + +commit 6d09b5a8a0f6ed7a2a92d91ac3d027bd54c452be +Author: Michiharu Ariza +Date: Thu Oct 3 12:01:39 2019 +0330 + + Implement hmtx/vmtx metrics read from hvar/vvar + + src/hb-ot-hmtx-table.hh | 46 ++++++++++++++++++++++++++++++++++++++++----- + src/hb-ot-var-hvar-table.hh | 19 +++++++++++++------ + 2 files changed, 54 insertions(+), 11 deletions(-) + +commit cfafee52e4ff0441a33530847533f1b1f6019006 +Author: Ebrahim Byagowi +Date: Wed Oct 2 09:22:46 2019 +0330 + + Add Repology badges by @luzpaz + + fixes #2002 + to track downstream packaging of harfbuzz + + README.md | 9 +++++++++ + 1 file changed, 9 insertions(+) + +commit 2d7221a0e3552b1d902629d4ab6c0ce22db983a6 +Author: Ebrahim Byagowi +Date: Tue Oct 1 15:05:02 2019 +0330 + + [cff] minor + + src/hb-ot-cff-common.hh | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 0558413f27e9a18188c0e3d55f5ee57ea42b1548 +Author: Ebrahim Byagowi +Date: Tue Oct 1 13:49:55 2019 +0330 + + Minor, tweak spaces + + src/hb-aat-layout-kerx-table.hh | 4 ++-- + src/hb-array.hh | 4 ++-- + src/hb-buffer.hh | 3 +-- + src/hb-font.h | 4 ++-- + src/hb-font.hh | 8 ++++---- + src/hb-open-file.hh | 2 +- + src/hb-open-type.hh | 10 +++++----- + src/hb-ot-cff-common.hh | 4 ++-- + src/hb-ot-cff1-table.cc | 11 +++++------ + src/hb-ot-cff1-table.hh | 24 ++++++++++++------------ + src/hb-ot-cff2-table.cc | 4 ++-- + src/hb-ot-cmap-table.hh | 6 ++---- + src/hb-ot-color-cbdt-table.hh | 2 +- + src/hb-ot-color-cpal-table.hh | 2 +- + src/hb-ot-kern-table.hh | 12 ++++++------ + src/hb-ot-layout-common.hh | 2 +- + src/hb-ot-layout-gpos-table.hh | 14 +++++++------- + src/hb-ot-os2-table.hh | 4 ++-- + src/hb-ot-shape-complex-myanmar.cc | 4 ++-- + src/hb-subset-cff-common.hh | 2 +- + src/hb-unicode.cc | 8 ++++---- + src/hb-unicode.h | 20 ++++++++++---------- + src/hb-vector.hh | 4 ++-- + src/main.cc | 37 +++++++++++++++++++++++-------------- + src/test-iter.cc | 2 +- + 25 files changed, 101 insertions(+), 96 deletions(-) + +commit 51b720f686adf45bc1b6db3aa76b7d2e62ad1304 +Author: Ebrahim Byagowi +Date: Tue Oct 1 12:06:22 2019 +0330 + + Fix -Wsizeof-array-div clang warning + + src/hb-ot-shape-complex-arabic-fallback.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit faace9437ea09d89ef5f5f9c9fc3ce0dbc672142 +Merge: e48ef080 f0dd724c +Author: Behdad Esfahbod +Date: Mon Sep 30 13:34:05 2019 -0700 + + Merge pull request #1807 from harfbuzz/subset-varstore + + VariationStore serializer + +commit e48ef0804ad7e4abd35ff3646fa6ed10ad32f1ef +Author: Behdad Esfahbod +Date: Mon Sep 30 12:39:06 2019 -0700 + + 2.6.2 + + NEWS | 6 ++++++ + configure.ac | 2 +- + src/hb-version.h | 4 ++-- + 3 files changed, 9 insertions(+), 3 deletions(-) + +commit d6ad613159aabce42fc21d57f6f1a4762c5617bf +Author: Behdad Esfahbod +Date: Tue Sep 10 15:31:44 2019 -0700 + + [docs] Misc fixes + + docs/harfbuzz-sections.txt | 4 ++-- + src/hb-gdi.cc | 2 +- + src/hb-ot-layout.cc | 2 +- + 3 files changed, 4 insertions(+), 4 deletions(-) + +commit 2dce85ed06a8cc7ca20900c65662af659c53e717 +Author: Ebrahim Byagowi +Date: Thu Sep 26 21:15:59 2019 +0330 + + [icu] Remove HB_ICU_STMT (#1993) + + And ignore extra semicolon error to ICU versions < 65 + + src/hb-icu.cc | 43 ++++++++++++++++++++++++------------------- + 1 file changed, 24 insertions(+), 19 deletions(-) + +commit d6a83abd6a0c684bd9a27f593d5be388819022b7 +Author: Iceflower +Date: Thu Sep 26 11:42:11 2019 +0200 + + Define HB_UNUSED for clang + + src/hb.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c4567968cd175dc367ab951c9e3141ab5c03c2d6 +Author: Iceflower +Date: Thu Sep 26 11:35:27 2019 +0200 + + [dwrite] Fix extra semicolon issue + + src/hb-directwrite.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b0c3eb06b64dcfcfee09a25dde8250804484f77d +Author: Qunxin Liu +Date: Wed Sep 18 16:11:44 2019 -0700 + + [subset] GPOS Lookup Type 3: CursivePos + + src/hb-ot-layout-common.hh | 33 ++++++++ + src/hb-ot-layout-gpos-table.hh | 87 ++++++++++++++++++++- + test/subset/data/Makefile.am | 1 + + test/subset/data/Makefile.sources | 1 + + .../gpos3_font3.keep-layout-retain-gids.28,29.otf | Bin 0 -> 1712 bytes + .../gpos3_font3.keep-layout-retain-gids.28,2B.otf | Bin 0 -> 1860 bytes + .../gpos3_font3.keep-layout-retain-gids.29,2B.otf | Bin 0 -> 1772 bytes + ...eep-layout-retain-gids.retain-all-codepoint.otf | Bin 0 -> 3692 bytes + .../layout.gpos3/gpos3_font3.keep-layout.28,29.otf | Bin 0 -> 1328 bytes + .../layout.gpos3/gpos3_font3.keep-layout.28,2B.otf | Bin 0 -> 1456 bytes + .../layout.gpos3/gpos3_font3.keep-layout.29,2B.otf | Bin 0 -> 1368 bytes + ...pos3_font3.keep-layout.retain-all-codepoint.otf | Bin 0 -> 3692 bytes + test/subset/data/fonts/gpos3_font3.otf | Bin 0 -> 4624 bytes + test/subset/data/tests/layout.gpos3.tests | 12 +++ + 14 files changed, 132 insertions(+), 2 deletions(-) + +commit 68d39ea4866a9d2bae60107619aad25dac6da241 +Author: Ebrahim Byagowi +Date: Tue Sep 24 13:52:46 2019 +0330 + + Revert previous change and fix -Wrange-loop-analysis complains + + src/hb-ot-layout-gpos-table.hh | 6 +++--- + src/hb-ot-vorg-table.hh | 2 +- + 2 files changed, 4 insertions(+), 4 deletions(-) + +commit cbc0646a6cfc0f6a04804d6888636f12130cd51b +Author: Ebrahim Byagowi +Date: Tue Sep 24 12:08:12 2019 +0330 + + Minor, normalize for each calls + + src/hb-ot-glyf-table.hh | 5 +---- + src/hb-ot-layout-gpos-table.hh | 10 +++++----- + src/hb-ot-name-table.hh | 3 +-- + src/hb-ot-vorg-table.hh | 3 +-- + 4 files changed, 8 insertions(+), 13 deletions(-) + +commit 22b6c6a5c7b9bebe123822c702b9661e144ebd6b +Author: Ebrahim Byagowi +Date: Tue Sep 24 12:06:28 2019 +0330 + + [serialize] use for each as #resolve_links, format + + src/hb-serialize.hh | 22 +++++++--------------- + 1 file changed, 7 insertions(+), 15 deletions(-) + +commit 512551f27600adac875de3381533b52d78f6b22d +Author: Qunxin Liu <48925186+qxliu76@users.noreply.github.com> +Date: Mon Sep 23 17:28:16 2019 -0700 + + memory leak fix in serializer (#1988) + + src/hb-serialize.hh | 1 + + 1 file changed, 1 insertion(+) + +commit f0a7677993e51ba4076a0f9a0e7d032d99917d34 +Author: Ebrahim Byagowi +Date: Mon Sep 23 21:09:39 2019 +0330 + + [gpos] minor + + src/hb-ot-layout-gpos-table.hh | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 035ec3d1b46b8e60bea3aa8dcf29cf47a5a42d57 +Author: Ebrahim Byagowi +Date: Mon Sep 23 20:51:43 2019 +0330 + + [cmap] remove has_format14, minor format + + fixes #1986 + + src/hb-ot-cmap-table.hh | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +commit c1a585fab0c17fe47b0728cf67920791c2173019 +Author: Ebrahim Byagowi +Date: Sat Sep 21 23:30:52 2019 +0430 + + [gpos] minor + + src/hb-ot-layout-gpos-table.hh | 22 +++++++--------------- + 1 file changed, 7 insertions(+), 15 deletions(-) + +commit d87d38998a4ff7bec3d8fb658dc9299f144a2fcb +Author: Ebrahim Byagowi +Date: Sat Sep 21 17:27:39 2019 +0430 + + Fix clang -Wrange-loop-analysis complains + + ./hb-ot-layout-gpos-table.hh:674:43: error: loop variable '_' is always a copy because the range of type 'hb_zip_iter_t > &>, hb_iter_type > &> >' (aka 'hb_zip_iter_t >, hb_array_t > >') does not return a reference [-Werror,-Wrange-loop-analysis] + for (const hb_pair_t& _ : hb_zip (val_iter, first_val_iter)) + ^ + ./hb-ot-layout-gpos-table.hh:674:12: note: use non-reference type 'hb_pair_t' (aka 'hb_pair_t, IntType >') + for (const hb_pair_t& _ : hb_zip (val_iter, first_val_iter)) + + and + + In file included from hb-subset.cc:44: + ./hb-ot-vorg-table.hh:87:34: error: loop variable '_' is always a copy because the range of type 'hb_map_iter_t, const hb_set_t *, OT::HBGlyphID OT::VertOriginMetric::*, nullptr>, (lambda at ./hb-ot-vorg-table.hh:100:15), hb_function_sortedness_t::NOT_SORTED, nullptr>' does not return a reference [-Werror,-Wrange-loop-analysis] + for (const VertOriginMetric& _ : it) + ^ + ./hb-ot-vorg-table.hh:113:17: note: in instantiation of function template specialization 'OT::VORG::serialize, const hb_set_t *, OT::HBGlyphID OT::VertOriginMetric::*, nullptr>, (lambda at ./hb-ot-vorg-table.hh:100:15), hb_function_sortedness_t::NOT_SORTED, nullptr>, nullptr>' requested here + vorg_prime->serialize (c->serializer, it, defaultVertOriginY); + ^ + ./hb-ot-vorg-table.hh:87:10: note: use non-reference type 'OT::VertOriginMetric' + for (const VertOriginMetric& _ : it) + ^~~~~~~~~~~~~~~~~~~~~~~~~~~ + + src/hb-ot-layout-gpos-table.hh | 2 +- + src/hb-ot-vorg-table.hh | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 6e42a418c8fe4231c3cc080bc771455578b0cce0 +Author: Ebrahim Byagowi +Date: Sat Sep 21 16:25:54 2019 +0430 + + Minor, turn more of hb_apply to for each + + src/hb-ot-glyf-table.hh | 5 ++--- + src/hb-ot-layout-gpos-table.hh | 42 ++++++++++++++---------------------------- + src/hb-ot-name-table.hh | 5 ++--- + src/hb-ot-vorg-table.hh | 5 ++--- + 4 files changed, 20 insertions(+), 37 deletions(-) + +commit 0665dce1163317390adbed9394cce2b1325ddb6c +Author: Ebrahim Byagowi +Date: Sat Sep 21 17:22:02 2019 +0430 + + [fuzzer] Don't process output in debug mode as it causes timeout + + test/fuzzing/run-shape-fuzzer-tests.py | 7 ++++++- + test/fuzzing/run-subset-fuzzer-tests.py | 7 ++++++- + 2 files changed, 12 insertions(+), 2 deletions(-) + +commit dc886f6638f50e45e73d01e49db77b4bcefc85e1 +Author: Ebrahim Byagowi +Date: Sat Sep 14 11:18:47 2019 +0430 + + [ci] Re-enable debug builds on fedora bot + + .circleci/config.yml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 70228f68ac413ee19281861e3039a82d90c17f2a +Author: Ebrahim Byagowi +Date: Sat Sep 21 16:24:41 2019 +0430 + + [ci] Enable HB_WITH_WIN1256 on -Weverything bot + + To catch its compile warnings, #1969 related + + .circleci/config.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 385741d565de1cc90de23664f8e66fc77c31efae +Author: Ebrahim Byagowi +Date: Sat Sep 21 15:26:14 2019 +0430 + + [cmap] Turn hb_apply into foreach where possible + + src/hb-ot-cmap-table.hh | 151 +++++++++++++++++++----------------------------- + 1 file changed, 61 insertions(+), 90 deletions(-) + +commit 1023c2cc6de0f33602df8709134bef8cdb66ba0c +Author: Ebrahim Byagowi +Date: Sat Sep 21 14:33:43 2019 +0430 + + [cmap] minor + + src/hb-ot-cmap-table.hh | 62 ++++++++++++++++++------------------------------- + 1 file changed, 22 insertions(+), 40 deletions(-) + +commit ead46eefe3bf2bea61c86689f4c5a1da9b7e446b +Author: Ebrahim Byagowi +Date: Sat Sep 21 14:25:11 2019 +0430 + + minor, use internal API instead public hb_set_has + + src/hb-ot-cmap-table.hh | 4 ++-- + src/hb-subset-plan.cc | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit d8af4e7701fe63d63f6669706ce7a5bb3a15a19d +Author: Ebrahim Byagowi +Date: Sat Sep 21 14:19:14 2019 +0430 + + [cmap] minor, turn 8 spaces to tab + + src/hb-ot-cmap-table.hh | 228 ++++++++++++++++++++++++------------------------ + src/hb-subset-plan.cc | 6 +- + 2 files changed, 117 insertions(+), 117 deletions(-) + +commit 4315666283a7d1b175d1c3ed43b5ac85fdc84a50 +Author: Qunxin Liu +Date: Thu Aug 29 11:17:20 2019 -0700 + + [subset] updates according to review comments + + src/hb-ot-cmap-table.hh | 95 ++++++++++++++++++++++++------------------------- + 1 file changed, 47 insertions(+), 48 deletions(-) + +commit bf66d1bf589b6af2ceb30c18619f210b718c9db9 +Author: Qunxin Liu +Date: Wed Aug 21 14:24:33 2019 -0700 + + [subset] Add integration tests for cmap14 + + test/subset/data/Makefile.am | 1 + + test/subset/data/Makefile.sources | 1 + + .../cmap14/cmap14_font1.default.4E00,4E02,4E03.otf | Bin 0 -> 1360 bytes + .../cmap14/cmap14_font1.default.4E00,4E03.otf | Bin 0 -> 1236 bytes + .../cmap14/cmap14_font1.default.4E00,4E05,4E07.otf | Bin 0 -> 1328 bytes + .../cmap14/cmap14_font1.default.4E02,4E03,4E08.otf | Bin 0 -> 1576 bytes + .../expected/cmap14/cmap14_font1.default.4E02.otf | Bin 0 -> 996 bytes + .../expected/cmap14/cmap14_font1.default.4E03.otf | Bin 0 -> 1080 bytes + .../cmap14_font1.default.4E05,4E07,4E08,4E09.otf | Bin 0 -> 1848 bytes + .../cmap14/cmap14_font1.default.4E08,4E09.otf | Bin 0 -> 1720 bytes + .../expected/cmap14/cmap14_font1.default.4E08.otf | Bin 0 -> 1384 bytes + .../cmap14_font1.default.retain-all-codepoint.otf | Bin 0 -> 2348 bytes + ...font1.drop-hints-retain-gids.4E00,4E02,4E03.otf | Bin 0 -> 1388 bytes + ...ap14_font1.drop-hints-retain-gids.4E00,4E03.otf | Bin 0 -> 1272 bytes + ...font1.drop-hints-retain-gids.4E00,4E05,4E07.otf | Bin 0 -> 1396 bytes + ...font1.drop-hints-retain-gids.4E02,4E03,4E08.otf | Bin 0 -> 1720 bytes + .../cmap14_font1.drop-hints-retain-gids.4E02.otf | Bin 0 -> 1028 bytes + .../cmap14_font1.drop-hints-retain-gids.4E03.otf | Bin 0 -> 1124 bytes + ....drop-hints-retain-gids.4E05,4E07,4E08,4E09.otf | Bin 0 -> 1984 bytes + ...ap14_font1.drop-hints-retain-gids.4E08,4E09.otf | Bin 0 -> 1872 bytes + .../cmap14_font1.drop-hints-retain-gids.4E08.otf | Bin 0 -> 1544 bytes + ...drop-hints-retain-gids.retain-all-codepoint.otf | Bin 0 -> 2436 bytes + .../cmap14_font1.drop-hints.4E00,4E02,4E03.otf | Bin 0 -> 1292 bytes + .../cmap14/cmap14_font1.drop-hints.4E00,4E03.otf | Bin 0 -> 1168 bytes + .../cmap14_font1.drop-hints.4E00,4E05,4E07.otf | Bin 0 -> 1260 bytes + .../cmap14_font1.drop-hints.4E02,4E03,4E08.otf | Bin 0 -> 1512 bytes + .../cmap14/cmap14_font1.drop-hints.4E02.otf | Bin 0 -> 928 bytes + .../cmap14/cmap14_font1.drop-hints.4E03.otf | Bin 0 -> 1012 bytes + ...cmap14_font1.drop-hints.4E05,4E07,4E08,4E09.otf | Bin 0 -> 1780 bytes + .../cmap14/cmap14_font1.drop-hints.4E08,4E09.otf | Bin 0 -> 1652 bytes + .../cmap14/cmap14_font1.drop-hints.4E08.otf | Bin 0 -> 1316 bytes + ...map14_font1.drop-hints.retain-all-codepoint.otf | Bin 0 -> 2280 bytes + .../cmap14_font1.name-ids.4E00,4E02,4E03.otf | Bin 0 -> 1292 bytes + .../cmap14/cmap14_font1.name-ids.4E00,4E03.otf | Bin 0 -> 1168 bytes + .../cmap14_font1.name-ids.4E00,4E05,4E07.otf | Bin 0 -> 1260 bytes + .../cmap14_font1.name-ids.4E02,4E03,4E08.otf | Bin 0 -> 1508 bytes + .../expected/cmap14/cmap14_font1.name-ids.4E02.otf | Bin 0 -> 928 bytes + .../expected/cmap14/cmap14_font1.name-ids.4E03.otf | Bin 0 -> 1012 bytes + .../cmap14_font1.name-ids.4E05,4E07,4E08,4E09.otf | Bin 0 -> 1780 bytes + .../cmap14/cmap14_font1.name-ids.4E08,4E09.otf | Bin 0 -> 1652 bytes + .../expected/cmap14/cmap14_font1.name-ids.4E08.otf | Bin 0 -> 1316 bytes + .../cmap14_font1.name-ids.retain-all-codepoint.otf | Bin 0 -> 2280 bytes + .../cmap14_font1.retain-gids.4E00,4E02,4E03.otf | Bin 0 -> 1452 bytes + .../cmap14/cmap14_font1.retain-gids.4E00,4E03.otf | Bin 0 -> 1340 bytes + .../cmap14_font1.retain-gids.4E00,4E05,4E07.otf | Bin 0 -> 1464 bytes + .../cmap14_font1.retain-gids.4E02,4E03,4E08.otf | Bin 0 -> 1788 bytes + .../cmap14/cmap14_font1.retain-gids.4E02.otf | Bin 0 -> 1096 bytes + .../cmap14/cmap14_font1.retain-gids.4E03.otf | Bin 0 -> 1192 bytes + ...map14_font1.retain-gids.4E05,4E07,4E08,4E09.otf | Bin 0 -> 2048 bytes + .../cmap14/cmap14_font1.retain-gids.4E08,4E09.otf | Bin 0 -> 1940 bytes + .../cmap14/cmap14_font1.retain-gids.4E08.otf | Bin 0 -> 1608 bytes + ...ap14_font1.retain-gids.retain-all-codepoint.otf | Bin 0 -> 2500 bytes + test/subset/data/fonts/cmap14_font1.otf | Bin 0 -> 4484 bytes + test/subset/data/tests/cmap14.tests | 21 +++++++++++++++++++++ + 54 files changed, 23 insertions(+) + +commit 2583afa0eb90134274ddd92864ea5270eeebc52e +Author: Qunxin Liu +Date: Fri Aug 16 13:54:24 2019 -0700 + + [subset] subsetting cmap14 + + src/hb-ot-cmap-table.hh | 295 +++++++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 265 insertions(+), 30 deletions(-) + +commit 078ddbd0f6ad660e740809b7f4c067e02309b98d +Author: Qunxin Liu +Date: Wed Aug 7 13:17:26 2019 -0700 + + [subset] glyph closure for CMAP14 + + src/hb-ot-cmap-table.hh | 34 +++++++++++++++++++++++++++++++++- + src/hb-subset-plan.cc | 10 ++++++++++ + 2 files changed, 43 insertions(+), 1 deletion(-) + +commit bbe878006d347893fc70e282c2aaafef5dd622b4 +Author: Ebrahim Byagowi +Date: Wed Sep 18 22:22:01 2019 +0430 + + Avoid bitwise negate of enum value + + Fixes this -fno-sanitize-recover=undefined fail, + + hb-ot-map.hh:188:1: runtime error: load of value 4294967294, which is not a valid value for type 'hb_ot_map_feature_flags_t' + #0 0x7f62bfa9b227 in operator&=(hb_ot_map_feature_flags_t&, hb_ot_map_feature_flags_t) /home/ebrahim/Desktop/harfbuzz/src/./hb-ot-map.hh:188:1 + #1 0x7f62bfa9b227 in hb_ot_map_builder_t::compile(hb_ot_map_t&, hb_ot_shape_plan_key_t const&) /home/ebrahim/Desktop/harfbuzz/src/hb-ot-map.cc:194 + #2 0x7f62bface650 in hb_ot_shape_planner_t::compile(hb_ot_shape_plan_t&, hb_ot_shape_plan_key_t const&) /home/ebrahim/Desktop/harfbuzz/src/hb-ot-shape.cc:108:7 + #3 0x7f62bfacec1e in hb_ot_shape_plan_t::init0(hb_face_t*, hb_shape_plan_key_t const*) /home/ebrahim/Desktop/harfbuzz/src/hb-ot-shape.cc:225:11 + #4 0x7f62bfae1318 in hb_shape_plan_create2 /home/ebrahim/Desktop/harfbuzz/src/hb-shape-plan.cc:232:7 + #5 0x7f62bfae1d2a in hb_shape_plan_create_cached2 /home/ebrahim/Desktop/harfbuzz/src/hb-shape-plan.cc:489:33 + #6 0x7f62bfae2527 in hb_shape_full /home/ebrahim/Desktop/harfbuzz/src/hb-shape.cc:135:33 + #7 0x55ed360b6588 in shape_options_t::shape(hb_font_t*, hb_buffer_t*, char const**) /home/ebrahim/Desktop/harfbuzz/util/./options.hh:242:10 + #8 0x55ed360b5d9c in shape_consumer_t::consume_line(char const*, unsigned int, char const*, char const*) /home/ebrahim/Desktop/harfbuzz/util/./shape-consumer.hh:67:19 + #9 0x55ed360b549f in main_font_text_t, 2147483647, 0>::main(int, char**) /home/ebrahim/Desktop/harfbuzz/util/./main-font-text.hh:81:16 + #10 0x55ed360b4e23 in main /home/ebrahim/Desktop/harfbuzz/util/hb-shape.cc:189:17 + #11 0x7f62bf104ee2 in __libc_start_main (/usr/lib/libc.so.6+0x26ee2) + #12 0x55ed3608f7ad in _start (/home/ebrahim/Desktop/harfbuzz/util/.libs/lt-hb-shape+0xd7ad) + + src/hb-ot-map.cc | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit e6909ee58d0f7b954f3bb227c2f90ca4cfd0c858 +Author: Ebrahim Byagowi +Date: Wed Sep 18 22:12:25 2019 +0430 + + minor + + src/hb-buffer.cc | 2 +- + src/hb-common.cc | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit bb41b74fd1fb42b08e9069c22ee046daeee98e6b +Author: Ebrahim Byagowi +Date: Wed Sep 18 00:55:24 2019 +0430 + + Don't rely on undefined left shift of negative value behavior + + Fixes this -fno-sanitize-recover=undefined check, + + hb-ft.cc:869:27: runtime error: left shift of negative value -16384 + #0 0x7ff8f47da843 in hb_ft_font_set_funcs /home/ebrahim/Desktop/harfbuzz/src/hb-ft.cc:869:27 + #1 0x55f20a66c7d6 in font_options_t::get_font() const /home/ebrahim/Desktop/harfbuzz/util/options.cc:731:3 + #2 0x55f20a668c1f in shape_consumer_t::init(hb_buffer_t*, font_options_t const*) /home/ebrahim/Desktop/harfbuzz/util/./shape-consumer.hh:47:42 + #3 0x55f20a668441 in main_font_text_t, 2147483647, 0>::main(int, char**) /home/ebrahim/Desktop/harfbuzz/util/./main-font-text.hh:75:14 + #4 0x55f20a667f91 in main /home/ebrahim/Desktop/harfbuzz/util/hb-shape.cc:180:21 + #5 0x7ff8f3df7ee2 in __libc_start_main (/usr/lib/libc.so.6+0x26ee2) + #6 0x55f20a6427ad in _start (/home/ebrahim/Desktop/harfbuzz/util/.libs/lt-hb-shape+0xd7ad) + + src/hb-ft.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b73313ade75130bf86ad1efbd312ce4106166089 +Author: Ebrahim Byagowi +Date: Wed Sep 18 00:50:32 2019 +0430 + + Don't seek of out-of-bound value even if the result is not used + + Fixes this -fno-sanitize-recover=undefined fail, + + /set/iter: hb-algs.hh:1016:60: runtime error: index 4294967295 out of bounds for type 'unsigned long long const[8]' + #0 0x4d1e09 in hb_vector_size_t::operator[](unsigned int) const /home/user/code/harfbuzz/src/./hb-algs.hh:1016:60 + #1 0x4d8b5f in hb_set_t::page_t::previous(unsigned int*) const /home/user/code/harfbuzz/src/./hb-set.hh:139:53 + #2 0x4d0ada in hb_set_t::previous(unsigned int*) const /home/user/code/harfbuzz/src/./hb-set.hh:602:36 + #3 0x4cd76f in hb_set_previous /home/user/code/harfbuzz/src/hb-set.cc:494:15 + #4 0x4ca8af in test_set_iter /home/user/code/harfbuzz/test/api/test-set.c:310:3 + #5 0x7f3a4f3e0f49 (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x72f49) + #6 0x7f3a4f3e0e7a (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x72e7a) + #7 0x7f3a4f3e1121 in g_test_run_suite (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x73121) + #8 0x7f3a4f3e1140 in g_test_run (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x73140) + #9 0x4c8894 in hb_test_run /home/user/code/harfbuzz/test/api/./hb-test.h:88:10 + #10 0x4c8894 in main /home/user/code/harfbuzz/test/api/test-set.c:408:10 + #11 0x7f3a4e3d2b96 in __libc_start_main /build/glibc-OTsEL5/glibc-2.27/csu/../csu/libc-start.c:310 + #12 0x41e7d9 in _start (/home/user/code/harfbuzz/test/api/test-set+0x41e7d9) + + src/hb-set.hh | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit d8af9ee017ed1018343d30272f55b90dd03a3559 +Author: Ebrahim Byagowi +Date: Wed Sep 18 00:47:55 2019 +0430 + + Don't rely on nullptr deref recovery + + Fixes this -fno-sanitize-recover=undefined fail, + + /types/language: hb-common.cc:385:20: runtime error: member access within null pointer of type 'const struct hb_language_impl_t' + #0 0x4caa34 in hb_language_to_string /home/user/code/harfbuzz/src/hb-common.cc:385:20 + #1 0x4c9be8 in test_types_language /home/user/code/harfbuzz/test/api/test-common.c:205:3 + #2 0x7f9557e72f49 (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x72f49) + #3 0x7f9557e72e7a (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x72e7a) + #4 0x7f9557e73121 in g_test_run_suite (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x73121) + #5 0x7f9557e73140 in g_test_run (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x73140) + #6 0x4c88a3 in hb_test_run /home/user/code/harfbuzz/test/api/./hb-test.h:88:10 + #7 0x4c88a3 in main /home/user/code/harfbuzz/test/api/test-common.c:224:10 + #8 0x7f9556e64b96 in __libc_start_main /build/glibc-OTsEL5/glibc-2.27/csu/../csu/libc-start.c:310 + #9 0x41e7d9 in _start (/home/user/code/harfbuzz/test/api/test-common+0x41e7d9) + + src/hb-common.cc | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit bfb155a5f19b26f9dcff667a76a24cd5c3b83234 +Author: Ebrahim Byagowi +Date: Wed Sep 18 00:44:52 2019 +0430 + + Don't call memset when length is zero + + Fixes this -fno-sanitize-recover=undefined check, + + /buffer/positions/empty: hb-buffer.cc:327:11: runtime error: null pointer passed as argument 1, which is declared to never be null + + /usr/include/string.h:60:62: note: nonnull attribute specified here + #0 0x4cf31c in hb_buffer_t::clear_positions() /home/user/code/harfbuzz/src/hb-buffer.cc:327:3 + #1 0x4d4dd4 in hb_buffer_get_glyph_positions /home/user/code/harfbuzz/src/hb-buffer.cc:1418:13 + #2 0x4cb553 in test_buffer_positions /home/user/code/harfbuzz/test/api/test-buffer.c:305:3 + #3 0x7f324187bf49 (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x72f49) + #4 0x7f324187be7a (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x72e7a) + #5 0x7f324187be7a (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x72e7a) + #6 0x7f324187c121 in g_test_run_suite (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x73121) + #7 0x7f324187c140 in g_test_run (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x73140) + #8 0x4c8bd3 in hb_test_run /home/user/code/harfbuzz/test/api/./hb-test.h:88:10 + #9 0x4c8bd3 in main /home/user/code/harfbuzz/test/api/test-buffer.c:884:10 + #10 0x7f324086db96 in __libc_start_main /build/glibc-OTsEL5/glibc-2.27/csu/../csu/libc-start.c:310 + #11 0x41e919 in _start (/home/user/code/harfbuzz/test/api/test-buffer+0x41e919) + + src/hb-buffer.cc | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 5a1cc199ab7b619935af04584ecc650216a83d66 +Author: Ebrahim Byagowi +Date: Wed Sep 18 00:43:44 2019 +0430 + + [ci] Run -fno-sanitize-recover=undefined checks + + .circleci/config.yml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit c930ae2bd8b6f626ddec0628ae6b38e3134e3c97 +Author: Ebrahim Byagowi +Date: Mon Sep 16 14:04:34 2019 +0430 + + Avoid stdint.h in Kernel module compiles + + src/hb-common.h | 2 ++ + 1 file changed, 2 insertions(+) + +commit 412d6cac3a46d710159ed4b3cc3bb59fd5876d5f +Author: Ebrahim Byagowi +Date: Mon Sep 16 13:50:11 2019 +0430 + + Extract an avoid errno compile flag + + src/hb-blob.cc | 1 - + src/hb-config.hh | 1 + + src/hb.hh | 9 +++++++-- + 3 files changed, 8 insertions(+), 3 deletions(-) + +commit 8a16d6f1c13388e6d9ca844a309632ec583ee1a2 +Author: Ebrahim Byagowi +Date: Sun Sep 15 20:43:33 2019 +0430 + + [doc] fix minor typo + + src/hb-ot-layout.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit aab279b33dda45ae0e45c887f2fad6381b5138dc +Author: Ebrahim Byagowi +Date: Sat Sep 14 11:20:09 2019 +0430 + + [ci] Install cmake on macOS cmake/amalgam tester + + .circleci/config.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f3214df6f63919ebe73c713b1e80bba1097a0cea +Author: Ebrahim Byagowi +Date: Sat Sep 14 10:56:00 2019 +0430 + + [coretext] Fix double promotion warnings by making casts explicit + + src/hb-coretext.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit cbbb6fa45519a8670870c784841d7b9e1ab71dd1 +Author: Ebrahim Byagowi +Date: Sat Sep 14 10:53:12 2019 +0430 + + [ci] Don't build cmake tests in macOS bot + + .circleci/config.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6e4736a3c5acc0eea1b16c79b95d1a3082baa320 +Author: Ebrahim Byagowi +Date: Sat Sep 14 10:38:52 2019 +0430 + + [name] Undef entry_{index,score} to avoid collision in amalgam builds + + src/hb-ot-name-table.hh | 3 +++ + 1 file changed, 3 insertions(+) + +commit d512087e4dfb5d9483b78eaf8443b4fa8724b8e1 +Author: Ebrahim Byagowi +Date: Sat Sep 14 10:36:29 2019 +0430 + + Rename GlyphID to HBGlyphID + + Avoid collision with macOS's ATSUnicodeTypes.h GlyphID + + src/hb-aat-layout-bsln-table.hh | 4 +- + src/hb-aat-layout-common.hh | 16 +++---- + src/hb-aat-layout-just-table.hh | 8 ++-- + src/hb-aat-layout-kerx-table.hh | 4 +- + src/hb-aat-layout-morx-table.hh | 32 ++++++------- + src/hb-open-type.hh | 4 +- + src/hb-ot-cmap-table.hh | 4 +- + src/hb-ot-color-cbdt-table.hh | 8 ++-- + src/hb-ot-color-colr-table.hh | 4 +- + src/hb-ot-glyf-table.hh | 2 +- + src/hb-ot-layout-base-table.hh | 2 +- + src/hb-ot-layout-common.hh | 22 ++++----- + src/hb-ot-layout-gpos-table.hh | 2 +- + src/hb-ot-layout-gsub-table.hh | 72 +++++++++++++++--------------- + src/hb-ot-layout-jstf-table.hh | 2 +- + src/hb-ot-math-table.hh | 4 +- + src/hb-ot-shape-complex-arabic-fallback.hh | 14 +++--- + src/hb-ot-vorg-table.hh | 2 +- + 18 files changed, 103 insertions(+), 103 deletions(-) + +commit bf08611044d83b6f5d6dec443f5216db259b4085 +Author: Ebrahim Byagowi +Date: Sat Sep 14 10:35:08 2019 +0430 + + [ci] Update and compile cmake/amalgam on macOS bot + + .circleci/config.yml | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit 229ef1d29d5c7a370ebb10a1131c04719f34dc81 +Author: Behdad Esfahbod +Date: Tue Sep 10 10:31:07 2019 -0700 + + Rename Fixed to HBFixed + + Fixes(!!) https://github.com/harfbuzz/harfbuzz/issues/1966 + + src/hb-aat-fdsc-table.hh | 4 ++-- + src/hb-aat-layout-just-table.hh | 20 ++++++++++---------- + src/hb-aat-layout-trak-table.hh | 8 ++++---- + src/hb-open-type.hh | 4 ++-- + src/hb-ot-post-table.hh | 2 +- + src/hb-ot-stat-table.hh | 14 +++++++------- + src/hb-ot-var-fvar-table.hh | 16 ++++++++-------- + 7 files changed, 34 insertions(+), 34 deletions(-) + +commit 170b5dd856b1ba8f26e79863fe0c64a52eb68951 +Author: Behdad Esfahbod +Date: Sun Sep 8 16:34:11 2019 -0400 + + [aat] Minor + + src/hb-aat-layout-morx-table.hh | 14 +++++--------- + 1 file changed, 5 insertions(+), 9 deletions(-) + +commit a0695687eb03bcf80c4dec19917127cdd8d8797d +Author: Behdad Esfahbod +Date: Sun Sep 8 16:32:12 2019 -0400 + + [aat] Minor + + src/hb-aat-layout-morx-table.hh | 2 -- + 1 file changed, 2 deletions(-) + +commit 4905a2198b4c47c12c6356f72ae0d2b178630d25 +Author: Ebrahim Byagowi +Date: Mon Sep 9 12:36:12 2019 +0430 + + [number] Add static to hb-number-parser.hh functions + + src/hb-number-parser.hh | 4 ++-- + src/hb-number-parser.rl | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +commit 30e5cdfbf1ce2aadadf29ccfd0733355ced2d065 +Author: Ebrahim Byagowi +Date: Mon Sep 9 00:28:16 2019 +0430 + + [number] Optimize _pow10 constants (#1963) + + src/hb-number-parser.hh | 43 +++++++++++++++++++------------------------ + src/hb-number-parser.rl | 31 +++++++++++++------------------ + 2 files changed, 32 insertions(+), 42 deletions(-) + +commit 3f2cdf07a417f81aeeb1e296db493b6e02d76ba8 +Author: Behdad Esfahbod +Date: Sun Sep 8 15:08:02 2019 -0400 + + Change HB_VAR_ARRAY to 1 again + + To fix MSVC bots, while I work on changing this to 0 permanently. + + src/hb.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 39cf8e21be2bf69717cf60a339b3ad26c6f7985b +Author: Ebrahim Byagowi +Date: Sat Sep 7 15:27:30 2019 +0430 + + [number] Add overflow checks used to be done in parse_bcd + + Which were removed in 1083df8 + + src/hb-number-parser.hh | 60 +++++++++++++++++++++++++++++++++---------------- + src/hb-number-parser.rl | 38 ++++++++++++++++++++++++------- + 2 files changed, 71 insertions(+), 27 deletions(-) + +commit 47d82713a144e06e00a486b3aa7d3934d62d68fd +Author: Ebrahim Byagowi +Date: Fri Sep 6 20:33:10 2019 +0430 + + Replace strtod with a ragel implementation + + Use a ragel based number parser when strtod_l couldn't be found + as libc's strtod may is locale sensetivity which we need to not. + + src/Makefile.sources | 2 + + src/hb-number-parser.hh | 223 ++++++++++++++++++++++++++++++++++++++++++++++++ + src/hb-number-parser.rl | 122 ++++++++++++++++++++++++++ + src/hb-number.cc | 3 +- + src/test-number.cc | 30 +++++++ + 5 files changed, 379 insertions(+), 1 deletion(-) + +commit 80613e5b9ee31125f4390012719e6f39970118d3 +Author: Ebrahim Byagowi +Date: Sat Sep 7 14:25:54 2019 +0430 + + Minor, remove unused header + + src/hb-common.cc | 3 --- + 1 file changed, 3 deletions(-) + +commit 5902198cee9b9939ae310f459f9f18f5f1b07424 +Author: Behdad Esfahbod +Date: Fri Sep 6 21:36:31 2019 -0400 + + [kerx] Fix offset issue in kern format 2 + + Fixes tests with HB_VAR_ARRAY != 1, as done in previous commit. + + src/hb-aat-layout-common.hh | 2 +- + src/hb-aat-layout-kerx-table.hh | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 861547d5315be4cb22f3a1e7cd59696d8657ca49 +Author: Behdad Esfahbod +Date: Fri Sep 6 16:55:00 2019 -0400 + + Change HB_VAR_ARRAY from 1 to 0 + + Going to see which compilers it breaks and special-case those... + + src/hb.hh | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 0e294c455e7f2e50172f65463ab016f1372d4c59 +Author: Behdad Esfahbod +Date: Fri Sep 6 16:54:27 2019 -0400 + + Rename VAR to HB_VAR_ARRAY + + src/hb-machinery.hh | 2 +- + src/hb-open-type.hh | 8 ++++---- + src/hb-ot-cff-common.hh | 6 +++--- + src/hb-ot-cff1-table.hh | 4 ++-- + src/hb-ot-layout-common.hh | 2 +- + src/hb-ot-maxp-table.hh | 2 +- + src/hb-string-array.hh | 2 +- + src/hb.hh | 2 +- + 8 files changed, 14 insertions(+), 14 deletions(-) + +commit c379faed2bcca1cc1a81b0de132fc3c4f7f7a080 +Author: Behdad Esfahbod +Date: Fri Sep 6 16:41:12 2019 -0400 + + Fix a few struct size declarations + + Was wrong. As excercised by defining VAR to other than 1 in hb.hh. + + src/hb-aat-layout-feat-table.hh | 2 +- + src/hb-ot-cff-common.hh | 2 +- + src/hb-ot-color-sbix-table.hh | 2 +- + src/hb-ot-layout-common.hh | 2 +- + 4 files changed, 4 insertions(+), 4 deletions(-) + +commit 7d4da8b86242d5a541e501937ddf321716b43f07 +Author: Evgeniy Reizner +Date: Fri Sep 6 19:24:32 2019 +0300 + + Remove duplicated tests from test-ot-tag (#1958) + + test/api/test-ot-tag.c | 3 --- + 1 file changed, 3 deletions(-) + +commit 3aceee2527ad921e0d589e42a1fe451e0fc67ee0 +Author: Behdad Esfahbod +Date: Fri Sep 6 12:17:18 2019 -0400 + + Revert "[null] Silence undefined-behavior complaints with too-small null bytes" + + This reverts commit 911c76abcdfe89770b252eb0d4eb621c0db00ad5. + + Broke tests. I'm not sure I understand why. At any rate, this was a + bad way to fix. I'll look into understanding as well as better fix. + + src/hb-null.hh | 6 ------ + 1 file changed, 6 deletions(-) + +commit 911c76abcdfe89770b252eb0d4eb621c0db00ad5 +Author: Behdad Esfahbod +Date: Fri Sep 6 11:53:11 2019 -0400 + + [null] Silence undefined-behavior complaints with too-small null bytes + + Fixes https://bugzilla.mozilla.org/show_bug.cgi?id=1577584 + + src/hb-null.hh | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 3c81246f66585edd8ee4515d226b133c290e9d7c +Author: Behdad Esfahbod +Date: Sun Sep 1 19:25:50 2019 -0500 + + [subset] Use newer iter tools in SinglePosFormat1 + + src/hb-ot-layout-gpos-table.hh | 8 ++------ + 1 file changed, 2 insertions(+), 6 deletions(-) + +commit 9510e918f72d2496f5e2ec84c58e79af944c8a0b +Author: Behdad Esfahbod +Date: Sun Sep 1 16:25:33 2019 -0500 + + [iter] Partialize hb_zip() + + src/hb-iter.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 52d19ba4591e822708e52a8fc96d9821fe2668f4 +Author: Behdad Esfahbod +Date: Sun Sep 1 19:42:08 2019 -0500 + + Minor + + test/subset/Makefile.am | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit cad698568a36ea6c929b4c888bd5e8aafe8d39e3 +Author: Ebrahim Byagowi +Date: Wed Sep 4 10:59:19 2019 +0430 + + Use roundf to fix cast to int difference of msys2 w64 + + src/test-number.cc | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +commit 88c73359da3f7078d02f27087790c7109ab4d248 +Author: Ebrahim Byagowi +Date: Wed Sep 4 11:16:18 2019 +0430 + + Check roundf availibity in autotools + + Hmm, not sure how I missed it. + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1083df8b80b08aa1a4f2dabfe414aaa4a0ec8aa1 +Author: Ebrahim Byagowi +Date: Wed Sep 4 01:22:21 2019 +0430 + + Use hb_parse_double in CFF::dict_opset_t::parse_bcd + + src/Makefile.sources | 2 + + src/hb-cff-interp-dict-common.hh | 136 +++++++++------------------------------ + 2 files changed, 31 insertions(+), 107 deletions(-) + +commit 57f88e11d4c48f40a2e56625a54bdfed4aae601a +Author: Ebrahim Byagowi +Date: Wed Sep 4 01:20:50 2019 +0430 + + [number] Turn hb_parse_float into hb_parse_double + + src/hb-common.cc | 6 +++++- + src/hb-number.cc | 16 ++++++++-------- + src/hb-number.hh | 4 ++-- + src/test-number.cc | 44 ++++++++++++++++++++++---------------------- + 4 files changed, 37 insertions(+), 33 deletions(-) + +commit 65690b5a4bf1186a072e8e918c5e01464f918d46 +Author: Ebrahim Byagowi +Date: Tue Sep 3 23:09:47 2019 +0430 + + [number] Add whole buffer check and test it + + src/hb-algs.hh | 6 ++---- + src/hb-buffer-serialize.cc | 12 ++++-------- + src/hb-number.cc | 39 ++++++++++++++++++++++++--------------- + src/hb-number.hh | 9 ++++++--- + src/test-number.cc | 19 ++++++++++++++++--- + 5 files changed, 52 insertions(+), 33 deletions(-) + +commit 3661eb6105a33a763736d8dc4a2cd95c01aa4332 +Author: Ebrahim Byagowi +Date: Tue Sep 3 19:43:14 2019 +0430 + + Don't check null terminaion of source in hb_codepoint_parse + + This isn't what intended originally, just checking if consumed + all the buffer is enough. + + src/hb-algs.hh | 4 ++-- + src/test-number.cc | 32 +++++++++++++++++++++++++++++++- + 2 files changed, 33 insertions(+), 3 deletions(-) + +commit 3a162727501ad0c56d5d6561cace115d858eacb7 +Author: Ebrahim Byagowi +Date: Tue Sep 3 17:19:33 2019 +0430 + + [test] resolve msvc complain on signedness comparing + + src/test-number.cc | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +commit 005389beb5a28e2a94b40d0bb8229e9598b84b1d +Author: Ebrahim Byagowi +Date: Tue Sep 3 17:00:46 2019 +0430 + + Use hb_parse_uint in deserializer token parser + + src/hb-buffer-serialize.cc | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +commit 3d5b1df7ab689871db37ec9a2f5b1ff1665fdb20 +Author: Ebrahim Byagowi +Date: Tue Sep 3 16:58:16 2019 +0430 + + [number] Add test + + src/Makefile.am | 6 +- + src/test-number.cc | 180 +++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 185 insertions(+), 1 deletion(-) + +commit b5e6805ee777347ae13ba0133ca0d64252ef9d55 +Author: Ebrahim Byagowi +Date: Tue Sep 3 15:23:40 2019 +0430 + + [number] Minor tweak on parser related codes + + src/hb-algs.hh | 6 +++--- + src/hb-buffer-serialize.cc | 6 ++---- + src/hb-common.cc | 14 ++++++-------- + src/hb-number.cc | 6 ++---- + 4 files changed, 13 insertions(+), 19 deletions(-) + +commit e2cecf1f34fe1cc62fd8260172f9bd694a17fac5 +Author: Ebrahim Byagowi +Date: Tue Sep 3 15:14:21 2019 +0430 + + [number] Remove parsing code duplication of the calls using lambda + + src/hb-number.cc | 57 +++++++++++++++++++------------------------------------- + 1 file changed, 19 insertions(+), 38 deletions(-) + +commit a77bb7eb41d34b19a672bb4ede038cc1b19a3945 +Author: Ebrahim Byagowi +Date: Tue Sep 3 14:49:14 2019 +0430 + + Move hb_codepoint_parse to hb_parse_uint + + src/hb-algs.hh | 20 +++++++++----------- + src/hb-buffer-serialize.cc | 1 - + src/hb-common.cc | 1 - + src/hb-number.cc | 26 +++++++++++++++++++++++--- + src/hb-number.hh | 3 +++ + src/hb.hh | 3 ++- + 6 files changed, 37 insertions(+), 17 deletions(-) + +commit 43372fbb5afe31ea1e66d450f29de718b6190828 +Author: Ebrahim Byagowi +Date: Tue Sep 3 01:02:40 2019 +0430 + + Merge and aggregate number parsing logics to form hb-number + + src/Makefile.sources | 2 + + src/harfbuzz.cc | 1 + + src/hb-buffer-serialize.cc | 41 +++++--------- + src/hb-common.cc | 121 +++------------------------------------ + src/hb-number.cc | 138 +++++++++++++++++++++++++++++++++++++++++++++ + src/hb-number.hh | 35 ++++++++++++ + 6 files changed, 197 insertions(+), 141 deletions(-) + +commit d50d2fcbc7233f0473493e17ab3fb243d8d30edd +Author: Ebrahim Byagowi +Date: Tue Sep 3 05:02:06 2019 +0430 + + Fallback if roundf didn't exist, like in dietlibc (#1953) + + CMakeLists.txt | 2 +- + src/hb.hh | 9 +++++++++ + 2 files changed, 10 insertions(+), 1 deletion(-) + +commit d3b984d3790d61931d4427ad7c0ae6547f8f1076 +Author: Ebrahim Byagowi +Date: Mon Sep 2 18:18:25 2019 +0430 + + Revert in-house pow10 (d80a3ea) and fix oss-fuzz/16922 + + Probably can be fixed but merging it was wrong so let's revert. + + src/hb-cff-interp-dict-common.hh | 37 ++------------------- + ...ase-minimized-hb-subset-fuzzer-5728664968232960 | Bin 0 -> 28 bytes + 2 files changed, 3 insertions(+), 34 deletions(-) + +commit 41d6e95b0d47c874b73b314cd147e6ea8ec5ddfb +Author: Ebrahim Byagowi +Date: Mon Sep 2 01:41:48 2019 +0430 + + [subset] Use internal API of hb_set_t + + src/hb-subset.cc | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +commit 8ccf328d548a51140e22fe61ba6fdae3f7194aa2 +Author: Ebrahim Byagowi +Date: Mon Sep 2 00:02:06 2019 +0430 + + [subset] Run once for a tag + + src/hb-subset.cc | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 0954c8f7a003b4130cfdc1b3f29db8c57953a78f +Author: Khaled Hosny +Date: Sun Sep 1 17:09:08 2019 +0200 + + [ft] Prefer symbol cmap subtable if found (#1948) + + Similar to commit d304d60e4d49df14ed85d6646680085f27bafbf2 for ot-font. + + src/hb-ft.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 4375858792f3e3cc2fae72c3ae3327f52884f780 +Author: Ebrahim Byagowi +Date: Sun Sep 1 15:13:05 2019 +0430 + + [editorconfig] Treat Ragel files also as C sources + + .editorconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d80a3ea983534e291aee273dba5b1c6e889dadfa +Author: Ebrahim Byagowi +Date: Sun Sep 1 14:05:16 2019 +0430 + + [cff] Implement in-house power of 10 + + A minimal power only for natural numbers exponents of ten, for portability. + + Found the idea in Tcl/Tk but wrote it myself after weeks and it turned out + being a different implementation, reverse direction, constexpr, etc. + + src/hb-cff-interp-dict-common.hh | 37 ++++++++++++++++++++++++++++++++++--- + 1 file changed, 34 insertions(+), 3 deletions(-) + +commit f441a7c00837fbe7843df6faedd5f6383c2258c3 +Author: Ebrahim Byagowi +Date: Sun Sep 1 02:18:09 2019 +0430 + + Don't allow reference blob be accessed using empty tag in hb_face_reference_table (#1947) + + src/hb-face.cc | 3 +++ + src/hb-subset.cc | 5 ----- + 2 files changed, 3 insertions(+), 5 deletions(-) + +commit c9eb913f4cf3d9d4a28059c7ecf7145ad3c49c65 +Author: Behdad Esfahbod +Date: Sat Aug 31 15:21:02 2019 -0500 + + [iter] Simplify hb_chop() + + src/hb-iter.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 67ec9fa9e48714f595ab17bb8a673b5ee7c73aa8 +Author: Behdad Esfahbod +Date: Sat Aug 31 14:51:49 2019 -0500 + + [iter] Add hb_chop() + + src/hb-iter.hh | 14 ++++++++++++++ + src/test-iter.cc | 2 +- + 2 files changed, 15 insertions(+), 1 deletion(-) + +commit 5828d8e83c023547f0add77b6413967056c2a13c +Author: Behdad Esfahbod +Date: Sat Aug 31 14:36:44 2019 -0500 + + [iter] Add hb_take() specialization for arrays + + src/hb-iter.hh | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +commit 398b296f3b205daa8964de1a63957efeb59f6bdf +Author: Behdad Esfahbod +Date: Sat Aug 31 12:44:24 2019 -0500 + + [iter] Add hb_len() + + src/hb-iter.hh | 8 ++++++++ + src/test-iter.cc | 2 +- + 2 files changed, 9 insertions(+), 1 deletion(-) + +commit 875131d47854c162c1d0a39a5c0f8f8d0c5f24e0 +Author: Behdad Esfahbod +Date: Sat Aug 31 12:42:52 2019 -0500 + + [iter] Add hb_take() + + src/hb-iter.hh | 12 ++++++++++-- + src/test-iter.cc | 1 + + 2 files changed, 11 insertions(+), 2 deletions(-) + +commit 1f88dae9f54d18cd740f149d020b2bb435dc9378 +Author: Behdad Esfahbod +Date: Sat Aug 31 12:24:42 2019 -0500 + + [iter] Make iota() accept invokable for increasing to next item + + src/hb-iter.hh | 21 ++++++++++++++++----- + src/test-iter.cc | 1 + + 2 files changed, 17 insertions(+), 5 deletions(-) + +commit 3bc86fb237b668e738a78397be04c603e7cf083b +Author: Behdad Esfahbod +Date: Fri Aug 30 16:39:52 2019 -0500 + + [algs] Fix hb_inc/dec signature + + src/hb-algs.hh | 5 +++-- + src/test-algs.cc | 4 ++++ + 2 files changed, 7 insertions(+), 2 deletions(-) + +commit b1378d8a217a53e17562abebee22276e09528f8c +Author: Behdad Esfahbod +Date: Fri Aug 30 12:10:45 2019 -0500 + + [iter] Add hb_repeat() + + src/hb-iter.hh | 37 +++++++++++++++++++++++++++++++++---- + src/test-iter.cc | 3 +++ + 2 files changed, 36 insertions(+), 4 deletions(-) + +commit 966a18b92a8b95d8024ae67bc237eeffe5019711 +Author: Behdad Esfahbod +Date: Fri Aug 30 12:07:17 2019 -0500 + + [iter] Remove some && + + src/hb-iter.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit de45775c37873dd5818058dfe316cc0e98590334 +Author: Behdad Esfahbod +Date: Fri Aug 30 12:02:46 2019 -0500 + + [iter] Use hb_ridentity instead of lazy + + + src/hb-iter.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit ce4d63beec08995aaa6b8b45f7986f074a73f295 +Author: Behdad Esfahbod +Date: Fri Aug 30 11:59:50 2019 -0500 + + [iter] Separate hb_iota implementation from hb_range + + src/hb-iter.hh | 29 +++++++++++++++++++++++++++-- + 1 file changed, 27 insertions(+), 2 deletions(-) + +commit 814dc3cbe5a5e51b48cb962a6f7053797bbb8e0d +Author: Behdad Esfahbod +Date: Fri Aug 30 10:20:30 2019 -0500 + + [iter] Rename + + Moving towards making iota useful for non-integers. + + src/hb-iter.hh | 35 ++++++++++++++++++----------------- + 1 file changed, 18 insertions(+), 17 deletions(-) + +commit 2d5643aed4a5a4bc3ea129d4af3dcbe7af7b9995 +Author: Behdad Esfahbod +Date: Fri Aug 30 09:51:22 2019 -0500 + + [algs] Add hb_inc() and hb_dec()) + + src/hb-algs.hh | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit 7eafe94705bb818aac71fbc142158a22da622d19 +Author: Behdad Esfahbod +Date: Fri Aug 30 09:40:40 2019 -0500 + + Revert "[array] Add chop()" + + This reverts commit 545fe9d9f0870568c40c17591f3f224c228feba6. + + Breaks gcc 4.8 and MSVC all versions. + + Will add hb_chop() that works on all iterators instead. + + src/hb-array.hh | 14 -------------- + 1 file changed, 14 deletions(-) + +commit 28c8dcb53f0af0dd3f4e7909285e67865a10b67b +Author: Ebrahim Byagowi +Date: Sat Aug 31 12:27:14 2019 +0430 + + [subset] minor + + src/hb-subset.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 545fe9d9f0870568c40c17591f3f224c228feba6 +Author: Behdad Esfahbod +Date: Thu Aug 29 15:48:21 2019 -0700 + + [array] Add chop() + + Takes n, and returns iterator of iterators that contain up to + n items each. Basically cuts the array into subarrays of size n. + The last sub-array might contain fewer. + + Ideally this should become a generic iter tool, not array-specific, + so we can use it in GPOS to chop a value matrix into rows and elements. + + src/hb-array.hh | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +commit c72589f13f24ca24a0613f7d9bc28b7fe1ef25c0 +Author: Behdad Esfahbod +Date: Thu Aug 29 15:45:21 2019 -0700 + + [iter] Change item_size to get_item_size() + + By moving access to hb_static_size(Type) into a function instead of + a class-const, we can refer to iter types of incomplete types, which + come handy when a method of hb_array_t wants to return iterator + of hb_array_t. That kind of stuff. Next commit needs this to + build on clang... + + src/hb-array.hh | 8 ++++---- + src/hb-iter.hh | 4 ++-- + 2 files changed, 6 insertions(+), 6 deletions(-) + +commit d58e248df62457bdc8a5bab743e5de26c6fc57be +Author: Behdad Esfahbod +Date: Thu Aug 29 15:23:48 2019 -0700 + + [array] Add truncate() method + + src/hb-array.hh | 4 ++++ + 1 file changed, 4 insertions(+) + +commit a06edf1430ba73d24104fce5406f2bc787ce5f11 +Author: Behdad Esfahbod +Date: Thu Aug 29 15:21:18 2019 -0700 + + [array] Use injected class name more + + src/hb-array.hh | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +commit e0e0c8c10948212e97426e987b6f296dc4270c43 +Author: Behdad Esfahbod +Date: Thu Aug 29 14:58:16 2019 -0700 + + Minor + + src/hb-ot-layout-gpos-table.hh | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 0313ef86e32a217e14950d46a3c3b98362a53dee +Author: qxliu76 <48925186+qxliu76@users.noreply.github.com> +Date: Thu Aug 29 14:09:05 2019 -0700 + + bug fix in optimizing coverage table format (#1942) + + We are comparing number of shorts, NOT number of bytes. + + src/hb-ot-layout-common.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 38f95baf6b7a74547906e8e813c826ee8f8c272f +Author: Behdad Esfahbod +Date: Thu Aug 29 13:40:46 2019 -0700 + + [subset] in SingleSubst subsetting, check for substitute in glyphset + + That matches what fonttools does and allows for specifying exact + glyphset for subset. + + src/hb-ot-layout-gsub-table.hh | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +commit 8106ba7f882f087be114801e857bc945e42cf45b +Author: Ebrahim Byagowi +Date: Thu Aug 29 20:33:36 2019 +0430 + + [glyf] Reapply use of hb_bytes_t.as () + + src/hb-ot-glyf-table.hh | 37 ++++++++++++++++++------------------- + 1 file changed, 18 insertions(+), 19 deletions(-) + +commit 9e80fc683639fc63870f7705feff8fc962363167 +Author: Ebrahim Byagowi +Date: Thu Aug 29 20:17:31 2019 +0430 + + [glyf] Reapply common moving logic to GlyphHeader struct + + src/hb-ot-glyf-table.hh | 27 +++++++++++++++++---------- + 1 file changed, 17 insertions(+), 10 deletions(-) + +commit 852c9aa0e33744669cba2343f08cab67376edf14 +Author: Ebrahim Byagowi +Date: Thu Aug 29 20:12:53 2019 +0430 + + [glyf] Reapply style fixes + + src/hb-ot-glyf-table.hh | 162 +++++++++++++++++++++++++++--------------------- + 1 file changed, 90 insertions(+), 72 deletions(-) + +commit 9ff32b79b37e686bab0b4baa924c97b841bd8413 +Merge: 6b3e0939 49902964 +Author: Ebrahim Byagowi +Date: Thu Aug 29 19:53:18 2019 +0430 + + Merge remote-tracking branch 'upstream/master' into glyf-rebase + +commit 499029644f35be7feedca7edf4610b2594855f01 +Author: Ebrahim Byagowi +Date: Thu Aug 29 15:09:39 2019 +0430 + + [gsub] Fix clang's semicolon complains + + src/hb-ot-layout-gsub-table.hh | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 28620310b8a86092074d5a1c40c87fdc9a91ba61 +Author: Ebrahim Byagowi +Date: Thu Aug 29 14:55:54 2019 +0430 + + [test] Avoid alloca use as clang complain + + Fixes https://circleci.com/gh/harfbuzz/harfbuzz/108171 complain + + test/api/test-ot-color.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 875985cd481f1609d10ad0472f1e77af075c93bc +Author: Ebrahim Byagowi +Date: Thu Aug 29 14:51:22 2019 +0430 + + [subset] Don't allow malicious fonts to insert unlimited table headers + + Fixes https://crbug.com/oss-fuzz/16810 + + src/hb-subset.cc | 5 +++++ + ...estcase-minimized-hb-subset-fuzzer-5675720390475776 | Bin 0 -> 299037 bytes + 2 files changed, 5 insertions(+) + +commit dc9222b1dd197ba50f7b63eb97f3fe0891a7b7b5 +Author: Behdad Esfahbod +Date: Wed Aug 28 15:38:46 2019 -0700 + + [subset] Implement AlternateSubst subsetting + + src/hb-ot-layout-gsub-table.hh | 61 +++++++++++++++++++++++++++++++++++++----- + 1 file changed, 55 insertions(+), 6 deletions(-) + +commit 23681b6da4368895fc049beda5a79af58aad8d69 +Author: Behdad Esfahbod +Date: Wed Aug 28 15:30:37 2019 -0700 + + Minor + + src/hb-ot-layout-gsub-table.hh | 21 ++++++++------------- + 1 file changed, 8 insertions(+), 13 deletions(-) + +commit 33c8e2303c23e8dfacb79ac15d8a0e6c7f866c89 +Author: Behdad Esfahbod +Date: Wed Aug 28 15:25:55 2019 -0700 + + [subset] Implement MultipleSubst subsetting + + src/hb-ot-layout-gsub-table.hh | 50 ++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 48 insertions(+), 2 deletions(-) + +commit 5c43a7ba7e4cac229593f9cbe1017d3c55b111ac +Author: Behdad Esfahbod +Date: Wed Aug 28 15:09:58 2019 -0700 + + [GSUB] Use dagger in Ligature::intersects() + + src/hb-ot-layout-gsub-table.hh | 8 +------- + 1 file changed, 1 insertion(+), 7 deletions(-) + +commit b8c642c1f597fb28ef323ac3cd78541eb462a2f7 +Author: Behdad Esfahbod +Date: Wed Aug 28 15:06:45 2019 -0700 + + Minor + + src/hb-ot-layout-gsub-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit dc2c9aa0c398ac068e1385fffe1fb2b28c80d099 +Author: Behdad Esfahbod +Date: Wed Aug 28 15:05:49 2019 -0700 + + Rename + + src/hb-open-type.hh | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit bc5ef765a874ecd9fc0634dccf0848d1ee839c9a +Author: Behdad Esfahbod +Date: Wed Aug 28 14:51:28 2019 -0700 + + [subset] Subset ligature substitutes! + + Test with: + + $ ./hb-subset -o out.ttf NotoSansArabic-Regular.ttf --drop-tables= سلام && ./hb-view out.ttf سلام + + src/hb-ot-layout-gsub-table.hh | 79 ++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 76 insertions(+), 3 deletions(-) + +commit 42d887bd221879f57ef939838d4f72bf38268943 +Author: Behdad Esfahbod +Date: Wed Aug 28 14:47:14 2019 -0700 + + Beef up HeadlessArrayOf<> + + Should be merged with ArrayOf... + https://github.com/harfbuzz/harfbuzz/issues/1937 + + src/hb-open-type.hh | 37 ++++++++++++++++++++++++++++++------- + 1 file changed, 30 insertions(+), 7 deletions(-) + +commit 3ca809e3623e59b9a99bc0b9e5d10b02238bba3c +Author: Behdad Esfahbod +Date: Wed Aug 28 13:49:35 2019 -0700 + + Add ArrayOf::pop() + + src/hb-open-type.hh | 2 ++ + 1 file changed, 2 insertions(+) + +commit 307bd6d79f11eb175f06c08c321947a447496291 +Author: Behdad Esfahbod +Date: Wed Aug 28 13:49:17 2019 -0700 + + Add arithmetic operators to IntType<> + + src/hb-open-type.hh | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit 2e1d00c85bba98f08a728c4f6f8112d5a25d8062 +Author: Behdad Esfahbod +Date: Wed Aug 28 13:49:04 2019 -0700 + + [debug] Minor + + src/hb-debug.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 062cad5e28574f9f004f917afa7d010fa68fdad0 +Author: Behdad Esfahbod +Date: Wed Aug 28 13:33:08 2019 -0700 + + Add ArrayOf::serialize_append + + src/hb-open-type.hh | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit b66076812d067f893a5a422af2656916ff479d8f +Author: Adrian Wong +Date: Wed Aug 28 21:31:27 2019 +1000 + + Adjustments to the generated Indic table output (#1936) + + * Add empty parentheses after print call + + * Minor: newlines. Move #pragma pop down one; #endif up one + + * Adjust #define ISC/IMC output + + * Regenerate Indic table + + src/gen-indic-table.py | 21 ++++--- + src/hb-ot-shape-complex-indic-table.cc | 109 +++++++++++++++++---------------- + 2 files changed, 70 insertions(+), 60 deletions(-) + +commit 4ef08dbce1a9acd7e941168245c96e010248ecb6 +Author: Ebrahim Byagowi +Date: Tue Aug 27 14:49:46 2019 +0430 + + Use hb_bytes_t as in hb_blob_t + + src/hb-blob.hh | 8 ++------ + 1 file changed, 2 insertions(+), 6 deletions(-) + +commit dce42cef2b769379a0690053da0e7467ff086195 +Author: Ebrahim Byagowi +Date: Tue Aug 27 14:32:05 2019 +0430 + + [glyf] Move GlyphHeader::from_bytes to hb_bytes_t, introduce .as () + + src/hb-array.hh | 6 ++++++ + src/hb-ot-glyf-table.hh | 24 +++++++++--------------- + 2 files changed, 15 insertions(+), 15 deletions(-) + +commit 6e82d59b4f72e8f2ff1830fb384907dcba95962a +Author: Ebrahim Byagowi +Date: Tue Aug 27 12:33:42 2019 +0430 + + [glyf] Revert the way indexToLocFormat is set + + src/hb-ot-glyf-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 88e9db19d29480fadcd4f49f0f4d9029ac64b429 +Author: Ebrahim Byagowi +Date: Tue Aug 27 02:44:26 2019 +0430 + + [subset] Remove subset table size assertion + + As https://github.com/harfbuzz/harfbuzz/pull/1930#issuecomment-525036802 + + src/hb-subset.cc | 1 - + 1 file changed, 1 deletion(-) + +commit a0b4ac4dce392326284138fc47cf3741e2798e21 +Author: Ebrahim Byagowi +Date: Sat Aug 24 17:57:14 2019 +0430 + + Turn 8 spaces to tab across the project + + According to the current code style of the project + + src/hb-aat-layout-kerx-table.hh | 12 +- + src/hb-aat-layout-morx-table.hh | 16 +-- + src/hb-aat-layout-trak-table.hh | 6 +- + src/hb-array.hh | 4 +- + src/hb-blob.cc | 4 +- + src/hb-buffer-serialize.cc | 2 +- + src/hb-buffer.cc | 22 ++-- + src/hb-buffer.h | 4 +- + src/hb-common.cc | 4 +- + src/hb-coretext.cc | 50 ++++---- + src/hb-dispatch.hh | 2 +- + src/hb-font.cc | 16 +-- + src/hb-ft.cc | 2 +- + src/hb-graphite2.cc | 10 +- + src/hb-iter.hh | 4 +- + src/hb-kern.hh | 6 +- + src/hb-machinery.hh | 2 +- + src/hb-object.hh | 2 +- + src/hb-open-file.hh | 4 +- + src/hb-open-type.hh | 2 +- + src/hb-ot-cmap-table.hh | 252 ++++++++++++++++++------------------- + src/hb-ot-color-cbdt-table.hh | 2 +- + src/hb-ot-color-cpal-table.hh | 2 +- + src/hb-ot-color-sbix-table.hh | 8 +- + src/hb-ot-font.cc | 16 +-- + src/hb-ot-hmtx-table.hh | 62 ++++----- + src/hb-ot-layout-common.hh | 16 +-- + src/hb-ot-layout-gdef-table.hh | 4 +- + src/hb-ot-layout-gpos-table.hh | 74 +++++------ + src/hb-ot-layout.cc | 26 ++-- + src/hb-ot-layout.h | 18 +-- + src/hb-ot-map.cc | 2 +- + src/hb-ot-maxp-table.hh | 2 +- + src/hb-ot-name-table.hh | 8 +- + src/hb-ot-name.cc | 2 +- + src/hb-ot-shape-complex-arabic.cc | 14 +-- + src/hb-ot-shape-complex-hangul.cc | 12 +- + src/hb-ot-shape-complex-indic.cc | 34 ++--- + src/hb-ot-shape-complex-khmer.cc | 2 +- + src/hb-ot-shape-complex-myanmar.cc | 2 +- + src/hb-ot-shape-complex-use.cc | 2 +- + src/hb-ot-shape-fallback.cc | 46 +++---- + src/hb-ot-shape-normalize.cc | 4 +- + src/hb-ot-shape.cc | 16 +-- + src/hb-ot-stat-table.hh | 4 +- + src/hb-ot-var-avar-table.hh | 2 +- + src/hb-ot-var-fvar-table.hh | 6 +- + src/hb-ot-vorg-table.hh | 28 ++--- + src/hb-pool.hh | 2 +- + src/hb-sanitize.hh | 6 +- + src/hb-set.hh | 36 +++--- + src/hb-shape-plan.cc | 50 ++++---- + src/hb-subset-cff2.cc | 18 +-- + src/hb-subset-input.cc | 2 +- + src/hb-subset-plan.cc | 34 ++--- + src/hb-subset-plan.hh | 8 +- + src/hb-subset.h | 2 +- + src/hb-uniscribe.cc | 8 +- + src/hb-utf.hh | 8 +- + src/hb-vector.hh | 2 +- + src/hb.hh | 12 +- + src/test-ot-color.cc | 4 +- + src/test-unicode-ranges.cc | 6 +- + test/api/hb-subset-test.h | 6 +- + test/api/test-buffer.c | 2 +- + test/api/test-object.c | 2 +- + test/api/test-ot-math.c | 132 +++++++++---------- + test/api/test-unicode.c | 16 +-- + util/ansi-print.cc | 26 ++-- + util/hb-fc-list.c | 2 +- + util/hb-fc.cc | 4 +- + util/hb-shape.cc | 2 +- + util/hb-subset.cc | 10 +- + util/helper-cairo-ansi.cc | 4 +- + util/helper-cairo.cc | 2 +- + util/options-subset.cc | 26 ++-- + util/options.cc | 50 ++++---- + util/options.hh | 8 +- + 78 files changed, 662 insertions(+), 668 deletions(-) + +commit 269a120f137ca69ca83b6fa00bb6a0ff1a87ae3e +Author: Ebrahim Byagowi +Date: Sun Aug 25 20:37:00 2019 +0430 + + [subset] Raise the bar in new vs old table size + + https://crbug.com/oss-fuzz/16740 + + This is actually an interesting thing that {h,v}mtx allocates as + much as a font pretends to have glyphs but the solution is not + that obvious as regular fonts can have less than actually containing + metrics in their {h,v}mtx. This change raises the bar to consider this + hmtx 4 byte for every glyph case. + + Initially we wanted to just find things allocating crazy amount of + memory but having the assert has led to interesting findings also + so let's don't remove the assert and see what we can find elsewhere. + + src/hb-subset.cc | 2 +- + ...z-testcase-minimized-hb-subset-fuzzer-5667673584697344 | Bin 0 -> 178 bytes + 2 files changed, 1 insertion(+), 1 deletion(-) + +commit 2f8e823331aca2c73b940f057f4b149a89af0502 +Author: Ebrahim Byagowi +Date: Sun Aug 25 12:37:40 2019 +0430 + + [glyf] minor + + src/hb-ot-glyf-table.hh | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +commit 07e467a30e2bab9731900d72dbf926dbe6fc6e1d +Author: Ebrahim Byagowi +Date: Sun Aug 25 00:36:58 2019 +0430 + + [glyf] Move GlyphHeader size checking to a static method + + src/hb-ot-glyf-table.hh | 69 ++++++++++++++++++++++++++----------------------- + 1 file changed, 36 insertions(+), 33 deletions(-) + +commit 139d14dc899250cf06a8d03b70504687184d5c7f +Author: Ebrahim Byagowi +Date: Sat Aug 24 17:23:16 2019 +0430 + + [glyf] Move GlyphHeader related logics to its, making its fields protected + + src/hb-ot-glyf-table.hh | 73 +++++++++++++++++++++++++------------------------ + 1 file changed, 38 insertions(+), 35 deletions(-) + +commit d57819cbdbab18ccf20caa25cb72cd66efe30848 +Author: Ebrahim Byagowi +Date: Sat Aug 24 16:26:42 2019 +0430 + + [glyf] format source + + src/hb-ot-glyf-table.hh | 282 ++++++++++++++++++++++++++---------------------- + 1 file changed, 154 insertions(+), 128 deletions(-) + +commit 2aef3013f3e6d71eacd0123f4faa63445034c32b +Author: Ebrahim Byagowi +Date: Sat Aug 24 02:59:18 2019 +0430 + + [subset] Consider instruction length place itself + + Now fixes https://crbug.com/oss-fuzz/16639 completely + + src/hb-ot-glyf-table.hh | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 922898c814b328712fac6c3259740804679dae11 +Author: Ebrahim Byagowi +Date: Fri Aug 23 22:04:14 2019 +0430 + + [subset] Fail on table grow more than 16x+4096 + + src/hb-subset.cc | 1 + + 1 file changed, 1 insertion(+) + +commit 28aba780c4035cc85a31b778db0f5553c896dd6a +Author: Ebrahim Byagowi +Date: Fri Aug 23 16:47:15 2019 +0430 + + [subset] Fix blob leak of _subset2 when returns early + + Fixes https://crbug.com/oss-fuzz/16639 + + src/hb-subset.cc | 2 ++ + ...z-testcase-minimized-hb-subset-fuzzer-5754526379802624 | Bin 0 -> 288 bytes + 2 files changed, 2 insertions(+) + +commit 541f3c2d7dcae47eb55650082e372286369d4a55 +Author: Behdad Esfahbod +Date: Fri Aug 23 12:25:58 2019 -0700 + + [debug] Fix extra semicolon issue + + https://github.com/harfbuzz/harfbuzz/issues/1923 + + src/hb-debug.hh | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 4dcaca84115bf8de130fc2c9e03bd7e63fcf9607 +Author: Behdad Esfahbod +Date: Fri Aug 23 12:24:15 2019 -0700 + + Whitespace + + src/hb-debug.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 569426d861ac9336f4083e55f98284b4c647c795 +Author: Behdad Esfahbod +Date: Fri Aug 23 11:54:20 2019 -0700 + + [debug] Fix build with HB_DEBUG + + Fixes https://github.com/harfbuzz/harfbuzz/issues/1923 + + src/hb-debug.hh | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit f233e6c8014cde9b2396c5350c29a3277cd3a657 +Author: Khaled Hosny +Date: Fri Aug 23 13:15:37 2019 +0200 + + [doc] Update list of default features in the manual + + Fixes https://github.com/harfbuzz/harfbuzz/issues/1921 + + docs/usermanual-opentype-features.xml | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +commit be97e9d678017d4ec66625fa2b17ef3485552cad +Author: Behdad Esfahbod +Date: Thu Aug 22 15:52:24 2019 -0700 + + 2.6.1 + + NEWS | 11 +++++++++++ + configure.ac | 2 +- + src/hb-version.h | 4 ++-- + 3 files changed, 14 insertions(+), 3 deletions(-) + +commit d304d60e4d49df14ed85d6646680085f27bafbf2 +Author: Behdad Esfahbod +Date: Wed Aug 21 12:30:22 2019 -0700 + + [ot-font] Prefer symbol cmap subtable if found + + Fixes https://github.com/harfbuzz/harfbuzz/issues/1918 + + Hopefully doesn't break anyone... + + src/hb-ot-cmap-table.hh | 16 +++++++++------- + 1 file changed, 9 insertions(+), 7 deletions(-) + +commit 2a3d4987a75fb2cd51ccf4c1d08baba383ceda7b +Author: Ebrahim Byagowi +Date: Wed Aug 21 03:02:01 2019 +0430 + + Remove hb_directwrite_shape_experimental_width public API + + I had specially exposed the API as I didn't know how to embed harfbuzz + easily elsewhere but now with harfbuzz.cc it has become very easy + and I don't like to see its use anywhere as it has a bad naming and + its Kashida adding is bogus and only useful to check where it should + be added, not visually useful however. + + src/hb-directwrite.cc | 29 ++++++----------------------- + src/hb-directwrite.h | 5 ----- + 2 files changed, 6 insertions(+), 28 deletions(-) + +commit 163a66dc737645852d7515381304d69706688e16 +Author: Behdad Esfahbod +Date: Tue Aug 20 14:22:57 2019 -0700 + + [test] Add test for aaa85931f3542639cd9d0dfb92fd6baab5b0298d + + test/api/test-shape.c | 48 ++++++++++++++++++++++++++++++------------------ + 1 file changed, 30 insertions(+), 18 deletions(-) + +commit aaa85931f3542639cd9d0dfb92fd6baab5b0298d +Author: Behdad Esfahbod +Date: Tue Aug 20 13:06:10 2019 -0700 + + [font] Update multipliers when creating sub_font + + Fixes https://github.com/harfbuzz/harfbuzz/issues/1910 + + src/hb-font.cc | 1 + + 1 file changed, 1 insertion(+) + +commit bbad1b8298125d78c159ed7fdd7bde6a3f3fff56 +Author: Ebrahim Byagowi +Date: Tue Aug 20 14:46:48 2019 +0430 + + [trak] minor, use roundf instead round to normalize the use + + The change to `round` wasn't intended + + src/hb-aat-layout-trak-table.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit e67cb500e9c5f6717d0d1cd152de84d88ec7370e +Author: Ebrahim Byagowi +Date: Tue Aug 20 13:30:34 2019 +0430 + + [readme] add oss-fuzz badge + + Related: + https://github.com/google/oss-fuzz/pull/2513 + https://github.com/systemd/systemd/commit/ce2098b7e9443cd6f31fb70af7f72308cd2962a3 + + README.md | 1 + + 1 file changed, 1 insertion(+) + +commit d59d89b28128cf644d76098c709b9309b834eb09 +Author: Ebrahim Byagowi +Date: Tue Aug 20 13:07:17 2019 +0430 + + [test] Rebase 10.14 trak related test + + test/shaping/data/in-house/tests/macos.tests | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 20b1a27c8a319d43a582c3efa8233b9f2c3cc73e +Merge: 5ee1e451 37de38ad +Author: Ebrahim Byagowi +Date: Tue Aug 20 13:04:51 2019 +0430 + + Merge remove-coretext-96dpi-assumption, @drott + + Remove assumption about Core Text working in 96 DPI + +commit 37de38adeae48e1855c2431a39639db873a74554 +Merge: f401f85a 5ee1e451 +Author: Ebrahim Byagowi +Date: Tue Aug 20 12:59:33 2019 +0430 + + Merge branch 'master' into remove-coretext-96dpi-assumption + +commit 5ee1e451cfc75dc6ddbc3ae300ba7394a0cd560e +Author: Behdad Esfahbod +Date: Mon Aug 19 14:23:17 2019 -0700 + + Minor touch-up for recent change + + src/hb-ot-var-avar-table.hh | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 33489928444b94bdd2cc523dac14707eb29d667e +Author: Ebrahim Byagowi +Date: Wed Aug 7 20:07:58 2019 +0430 + + [avar] Implement inverse map, unmap + + src/hb-ot-var-avar-table.hh | 30 ++++++++++++++++++++++++------ + 1 file changed, 24 insertions(+), 6 deletions(-) + +commit 981f5a54c3cbc1de45ba941fdf5315c62d86b6f3 +Author: Ebrahim Byagowi +Date: Wed Aug 7 18:45:39 2019 +0430 + + [fvar] Implement inverse normalize, unnormalize + + src/hb-ot-var-fvar-table.hh | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +commit dcb4cd400fb44172872a20ba54baa011d748b61d +Author: Behdad Esfahbod +Date: Mon Aug 19 11:35:37 2019 -0700 + + Minor + + src/hb-font.cc | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +commit ca54440324745afc388edac40ad1047e92567fdb +Author: Ebrahim Byagowi +Date: Sun Aug 18 11:58:04 2019 +0430 + + Remove continuous development helper script + + Not have used it personally for a long time, lets remove it + + src/dev-run.sh | 99 ---------------------------------------------------------- + 1 file changed, 99 deletions(-) + +commit 40aef1b473f63701ab901880d764e33682f13414 +Author: Khaled Hosny +Date: Fri Aug 16 01:00:30 2019 +0200 + + [ot-shape] Keep horizontal_features array sorted + + src/hb-ot-shape.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit da5118da77898ae4778af1ace4af52334b210dd6 +Author: Khaled Hosny +Date: Fri Aug 16 00:48:26 2019 +0200 + + [ot-shape] Enable abvm/blwm features by default + + Core Text seems to apply them to Latin text, but Uniscribe doesn’t. + + See https://github.com/harfbuzz/harfbuzz/pull/1908#issuecomment-521819343 + + src/hb-ot-shape-complex-indic.cc | 9 --------- + src/hb-ot-shape-complex-khmer.cc | 9 --------- + src/hb-ot-shape-complex-myanmar.cc | 21 --------------------- + src/hb-ot-shape-complex-use.cc | 14 -------------- + src/hb-ot-shape.cc | 2 ++ + test/shaping/data/in-house/Makefile.sources | 2 +- + .../ea3f63620511b2097200d23774ffef197e829e69.ttf | Bin 0 -> 1804 bytes + .../f79eb71df4e4c9c273b67b89a06e5ff9e3c1f834.ttf | Bin 0 -> 1860 bytes + test/shaping/data/in-house/tests/dist.tests | 1 - + .../data/in-house/tests/positioning-features.tests | 3 +++ + 10 files changed, 6 insertions(+), 55 deletions(-) + +commit 2164bd6f29df265acdc04b84f5f94cf63b2cea8a +Author: Khaled Hosny +Date: Fri Aug 16 00:28:41 2019 +0200 + + [ot-shape] Enable dist feature by default (#1908) + + Fixes https://github.com/harfbuzz/harfbuzz/issues/1907 + + src/hb-ot-shape-complex-indic.cc | 2 -- + src/hb-ot-shape-complex-khmer.cc | 2 -- + src/hb-ot-shape-complex-myanmar.cc | 1 - + src/hb-ot-shape-complex-use.cc | 1 - + src/hb-ot-shape.cc | 1 + + test/shaping/data/in-house/Makefile.sources | 1 + + .../fonts/53a91c20e33a596f2be17fb68b382d6b7eb85d5c.ttf | Bin 0 -> 2020 bytes + test/shaping/data/in-house/tests/dist.tests | 1 + + 8 files changed, 3 insertions(+), 6 deletions(-) + +commit bc27f86ffef537835f6c9dbbecbc2ee6792cb127 +Author: Ebrahim Byagowi +Date: Wed Aug 14 22:37:00 2019 +0430 + + Move HB_NO_VAR to a better place in hb-font.cc + + Needed for other works + + src/hb-font.cc | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +commit 1cc844da66ab527991ff96efdf10d97f6b626bfe +Author: Ebrahim Byagowi +Date: Wed Aug 14 19:10:02 2019 +0430 + + minor + + Use hb_font_t coords directly + + src/hb-ot-cff2-table.cc | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +commit 6a194b6876db12f083ae5391ca01972168d4e68a +Author: Ebrahim Byagowi +Date: Wed Aug 14 18:49:57 2019 +0430 + + Minor, remove trailing spaces in hb-font.{cc,h} as .editorconfig + + src/hb-font.cc | 338 ++++++++++++++++++++++++++++----------------------------- + src/hb-font.h | 26 ++--- + 2 files changed, 182 insertions(+), 182 deletions(-) + +commit 3ae44645d60fe8271ad18b004434d475eaeb7ad6 +Author: Ebrahim Byagowi +Date: Wed Aug 14 14:34:55 2019 +0430 + + Fix caret_count value when AAT is disabled + + Set caret_count to zero as that is what we want to happen inside lcar when + there is no result. + + src/hb-ot-layout.cc | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit a5aa67b9f288687e21ca7a9887483f7fe1cbce54 +Author: Ebrahim Byagowi +Date: Wed Aug 14 14:29:01 2019 +0430 + + [lcar] Use multiformat convention + + src/hb-aat-layout-lcar-table.hh | 115 +++++++++++++++++++++++++++++++--------- + 1 file changed, 90 insertions(+), 25 deletions(-) + +commit bfffe85dd7d7557e10ec9f9886b86fe0d8b4a7a2 +Author: Ebrahim Byagowi +Date: Wed Aug 14 13:55:49 2019 +0430 + + [opbd] Use multiformat convention on the table + + src/hb-aat-layout-opbd-table.hh | 116 ++++++++++++++++++++++++++++++---------- + 1 file changed, 89 insertions(+), 27 deletions(-) + +commit d6206dbcc4e4ef8c034ee714e74d3a76c5333a12 +Author: Ebrahim Byagowi +Date: Wed Aug 14 11:24:06 2019 +0430 + + [opbd] Turn OpticalBounds fields to FWORD + + src/hb-aat-layout-opbd-table.hh | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 6461143b44f81a4190d3f1cb02238750536f08e4 +Author: Behdad Esfahbod +Date: Tue Aug 13 22:20:54 2019 -0700 + + 2.6.0 + + NEWS | 23 +++++++++++++++++++++++ + configure.ac | 2 +- + docs/harfbuzz-docs.xml | 4 ++++ + src/hb-font.cc | 2 +- + src/hb-gdi.cc | 2 +- + src/hb-ot-layout.cc | 2 ++ + src/hb-ot-layout.h | 2 +- + src/hb-ot-meta.cc | 4 ++-- + src/hb-ot-meta.h | 2 +- + src/hb-ot-metrics.cc | 8 ++++---- + src/hb-ot-metrics.h | 2 +- + src/hb-version.h | 6 +++--- + 12 files changed, 44 insertions(+), 15 deletions(-) + +commit e56d4ff43b97ca35a8324be2acf1c8644f3b0a24 +Author: Behdad Esfahbod +Date: Tue Aug 13 21:02:47 2019 -0700 + + Rename hb_ot_meta_get_entries() to +hb_ot_meta_get_entry_tags() + + docs/harfbuzz-sections.txt | 2 +- + src/hb-ot-meta.cc | 8 ++++---- + src/hb-ot-meta.h | 8 ++++---- + src/test-ot-meta.cc | 4 ++-- + test/api/test-ot-face.c | 2 +- + test/api/test-ot-meta.c | 6 +++--- + 6 files changed, 15 insertions(+), 15 deletions(-) + +commit aade9b70aabd8a97dd8a28cda2cf4d0694dd7350 +Author: Behdad Esfahbod +Date: Tue Aug 13 16:09:20 2019 -0700 + + [pool] Fix alignment assertion + + I *think* it should fix https://github.com/harfbuzz/harfbuzz/issues/1901 + + Ie. if on a system, alignof(void*) < sizeof(void*)... + + src/hb-pool.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b31d627f151c8eeeb12ed84c3282392d6adbc5b4 +Author: Ebrahim Byagowi +Date: Sun Aug 11 23:34:48 2019 +0430 + + Increase subset fuzzer timeout to 16s + + To satisfy -valgrind and -tsan bots, very ugly + + test/fuzzing/run-subset-fuzzer-tests.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5b9cf191fe1fb13bd4bf914e0f4c03c3b2795a73 +Author: Ebrahim Byagowi +Date: Sun Aug 11 23:07:29 2019 +0430 + + [ci] Disable vcpkg thus running the test suit in Windows + + vcpkg apparently doesn't like to work the same way used to anymore, lets disable it + + appveyor.yml | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +commit 60d9f0097580a339c7ffe582cc0657698e315cea +Author: Ebrahim Byagowi +Date: Sun Aug 11 16:15:19 2019 +0430 + + Implement opbd table parsing + + https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6opbd.html + + src/Makefile.sources | 1 + + src/hb-aat-layout-opbd-table.hh | 111 ++++++++++++++++++++++++++++++++++++++++ + src/hb-ot-face-table-list.hh | 1 + + src/hb-ot-layout.cc | 1 + + 4 files changed, 114 insertions(+) + +commit 8762676e34cef13f4b263b377b485b199b66d4d1 +Author: Ebrahim Byagowi +Date: Sat Aug 10 01:26:55 2019 +0430 + + [os2] Replace null pool addr compare by checking vital fields (#1896) + + src/hb-ot-os2-table.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 1f926fb2b642094a15e686be6a910e709b15ebd0 +Author: Ebrahim Byagowi +Date: Wed Aug 7 20:22:20 2019 +0430 + + [fvar] Use roundf instead hardcoding round logic + + src/hb-ot-var-fvar-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 60485ab0473630c585bb96fcdc14dbe415edf4f2 +Author: Ebrahim Byagowi +Date: Wed Aug 7 23:23:06 2019 +0430 + + [os2] Get defined lower/upper optical size + + src/hb-ot-os2-table.hh | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +commit 321d5588d4fa96bcc4aa558d2f982430031f242e +Author: Qunxin Liu +Date: Tue Jul 2 16:30:57 2019 -0700 + + [subset] Add subsetting for GPOS Lookup Type 1: Single Adjustment Positioning Subtable + + src/hb-ot-layout-gpos-table.hh | 157 ++++++++++++++++++++- + test/subset/data/Makefile.am | 1 + + test/subset/data/Makefile.sources | 1 + + .../gpos1_2_font.keep-layout-retain-gids.41,43.otf | Bin 0 -> 2068 bytes + .../gpos1_2_font.keep-layout-retain-gids.41,46.otf | Bin 0 -> 2232 bytes + .../gpos1_2_font.keep-layout-retain-gids.43,46.otf | Bin 0 -> 2096 bytes + ...eep-layout-retain-gids.retain-all-codepoint.otf | Bin 0 -> 3668 bytes + test/subset/data/fonts/gpos1_2_font.otf | Bin 0 -> 4564 bytes + test/subset/data/tests/layout.gpos.tests | 11 ++ + 9 files changed, 166 insertions(+), 4 deletions(-) + +commit 37572882e7a685d804384eaf11f0f3e53af38341 +Author: Qunxin Liu +Date: Tue Jun 25 13:17:30 2019 -0700 + + [subset] cmap table to use _subset2 and new iterator frameworks + + src/hb-ot-cmap-table.hh | 670 +++++++++++------------ + src/hb-subset.cc | 2 +- + test/api/fonts/Roboto-Regular.D7,D8,D9,DA,DE.ttf | Bin 2816 -> 2532 bytes + test/api/fonts/Roboto-Regular.abc.ttf | Bin 2460 -> 2168 bytes + test/api/fonts/Roboto-Regular.ac.ttf | Bin 2268 -> 1988 bytes + 5 files changed, 320 insertions(+), 352 deletions(-) + +commit 06596cf90700ff76f23297141c656dfc317eece6 +Author: Khaled Hosny +Date: Sat Aug 3 13:55:34 2019 +0200 + + Some styling + + README.python.md | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit 5848c890cf2f8a14c9d9e329c4f8283feac1f0c3 +Author: Ebrahim Byagowi +Date: Sat Aug 3 14:19:28 2019 +0430 + + [metrics] Add metrics tags documentation + + src/hb-ot-metrics.h | 28 ++++++++++++++++++++++++++++ + 1 file changed, 28 insertions(+) + +commit 4d1872b8e019659a92a59b1d7cba6fd81ed3607d +Author: Ebrahim Byagowi +Date: Sat Aug 3 14:06:46 2019 +0430 + + [base] Add documentation for baseline tags from ot spec + + src/hb-ot-layout.h | 19 ++++++++++++++++++- + 1 file changed, 18 insertions(+), 1 deletion(-) + +commit bbeee84a7f048633b0aaa95aa6129871a3a22164 +Author: Ebrahim Byagowi +Date: Sat Aug 3 13:47:55 2019 +0430 + + [meta] Add metadata tags documentation from ot spec + + src/hb-ot-meta.h | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +commit 6b3e093911aaf834c0adf5b2a114d357914322ee +Merge: 07f27acc 521c7013 +Author: Michiharu Ariza +Date: Wed Jul 31 16:04:48 2019 -0700 + + Merge branch 'master' into var-subset + +commit 07f27accb9c3823cef5d652150701f24af89fca2 +Merge: a87fbb87 6e3bfecf +Author: Michiharu Ariza +Date: Wed Jul 31 14:58:53 2019 -0700 + + Merge branch 'var-subset' of https://github.com/harfbuzz/harfbuzz into var-subset + +commit 521c7013abab84a0994fda3977ccd1ba3d496242 +Author: Ebrahim Byagowi +Date: Tue Jul 30 18:10:40 2019 +0430 + + [cpal] revert port to dagger + + It has a different semantic, maybe we should just do a zero memset, + letting Behdad to decide. + + src/hb-ot-color-cpal-table.hh | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +commit 8014ce198a09d20cb947e4a465c7d893a84c55be +Author: Ebrahim Byagowi +Date: Tue Jul 30 17:31:34 2019 +0430 + + [cpal] port to dagger (#1887) + + src/hb-ot-color-cpal-table.hh | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit d67201da5a2142cb9d039a8cb2cb713556d945af +Author: Ebrahim Byagowi +Date: Tue Jul 30 17:20:18 2019 +0430 + + [colr] minor + + src/hb-ot-color-colr-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8c0a2e68ad91e55a11162da0cddb355810a4c8a0 +Author: Ebrahim Byagowi +Date: Tue Jul 30 13:16:15 2019 +0430 + + [fuzz] Add dummy call of the added APIs (#1886) + + test/api/test-ot-face.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit e5cf9718c07c8bf1fc20cd573cef2d125c28281f +Author: Ebrahim Byagowi +Date: Tue Jul 30 04:44:23 2019 +0430 + + [colr][feat][meta] Port sub_array iteration to dagger (#1868) + + src/hb-aat-layout-feat-table.hh | 37 ++++++++++++++++++------------------- + src/hb-ot-color-colr-table.hh | 14 ++++++-------- + src/hb-ot-meta-table.hh | 8 +++++--- + 3 files changed, 29 insertions(+), 30 deletions(-) + +commit 9f2b4956b484b802eb37f36974c11785c90493ce +Author: Ebrahim Byagowi +Date: Tue Jul 30 04:42:51 2019 +0430 + + [base] Add hb_ot_layout_get_baseline API + + docs/harfbuzz-sections.txt | 2 + + src/hb-ot-face-table-list.hh | 6 ++- + src/hb-ot-layout.cc | 87 ++++++++++++-------------------------------- + src/hb-ot-layout.h | 32 ++++++++++++++++ + test/api/test-baseline.c | 4 +- + 5 files changed, 63 insertions(+), 68 deletions(-) + +commit 40a4b6ddbdc84a25f76bd4d7ff41b1322fe95b83 +Author: Ebrahim Byagowi +Date: Sat Jul 27 13:33:46 2019 +0430 + + [var] Add a new API, hb_font_set_var_named_instance + + docs/harfbuzz-sections.txt | 1 + + src/hb-font.cc | 28 ++++++++++++++++++++++++++++ + src/hb-font.h | 4 ++++ + test/api/test-ot-extents-cff.c | 32 ++++++++++++++++++++++++++++++++ + 4 files changed, 65 insertions(+) + +commit b6a2281f1a2d29cc5797f4f266800f7141591585 +Author: Ebrahim Byagowi +Date: Tue Jul 30 03:45:45 2019 +0430 + + [meta] Make values match their enum type naming + + src/hb-ot-meta.h | 10 +++++----- + test/api/test-ot-meta.c | 4 ++-- + 2 files changed, 7 insertions(+), 7 deletions(-) + +commit 20072a2eca8943a82e36cbb603ad31481cfc56cd +Author: Ebrahim Byagowi +Date: Tue Jul 30 03:43:15 2019 +0430 + + [metrics] Make values match their enum type naming + + src/hb-ot-font.cc | 12 +++--- + src/hb-ot-metrics.cc | 100 ++++++++++++++++++++++----------------------- + src/hb-ot-metrics.h | 58 +++++++++++++------------- + test/api/test-ot-metrics.c | 26 ++++++------ + 4 files changed, 98 insertions(+), 98 deletions(-) + +commit ed2965a8527ee89994c8eecf451bf71846b3ca86 +Author: Ebrahim Byagowi +Date: Tue Jul 30 03:34:10 2019 +0430 + + [base] Don't use enum inside the table + + src/hb-ot-layout-base-table.hh | 31 ++++++++++++++----------------- + 1 file changed, 14 insertions(+), 17 deletions(-) + +commit 388fa9b32611a8726b9bbfe7ccf8cdbcd818fd70 +Author: Ebrahim Byagowi +Date: Sat Jul 27 14:56:18 2019 +0430 + + [lcar] flip for and switch position + + src/hb-aat-layout-lcar-table.hh | 16 ++++++++++------ + 1 file changed, 10 insertions(+), 6 deletions(-) + +commit f0dd724c1e091f42f289efbebd2c50e830e59c6e +Merge: 68ac767e 4e1da6bb +Author: blueshade7 +Date: Mon Jul 29 14:21:05 2019 -0700 + + Merge branch 'master' into subset-varstore + +commit 6e3bfecf358a1785995a64c18eb4c1d7cf926ca5 +Merge: 5988ab8a 4e1da6bb +Author: blueshade7 +Date: Mon Jul 29 12:25:43 2019 -0700 + + Merge branch 'master' into var-subset + +commit 4e1da6bb612b0c6386ab143dbb4ca19ff25bc2ba +Author: Ebrahim Byagowi +Date: Mon Jul 29 22:03:56 2019 +0430 + + [metrics] Rename hb_ot_metrics_t to hb_ot_metrics_tag_t + + src/hb-ot-metrics.cc | 22 +++++++++++----------- + src/hb-ot-metrics.h | 16 ++++++++-------- + src/hb-ot-metrics.hh | 6 +++--- + 3 files changed, 22 insertions(+), 22 deletions(-) + +commit 2c2a2b97dbe24ae2e09018f435559c97a460bdcb +Author: Ebrahim Byagowi +Date: Mon Jul 29 22:01:13 2019 +0430 + + [meta] Rename hb_ot_meta_t to hb_ot_meta_tag_t + + src/hb-ot-meta-table.hh | 10 +++++----- + src/hb-ot-meta.cc | 10 +++++----- + src/hb-ot-meta.h | 14 +++++++------- + src/test-ot-meta.cc | 4 ++-- + test/api/test-ot-meta.c | 6 +++--- + 5 files changed, 22 insertions(+), 22 deletions(-) + +commit 7bcc5dfa97a43d9c5f6dfdb87b4f0d5a589ecd48 +Author: Behdad Esfahbod +Date: Sun Jul 28 20:55:50 2019 -0700 + + [iter] Fix accumulate to accept const types + + src/hb-iter.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e21bdf500d4ecc3a5fd6f79aabf6232f3967035e +Author: Ebrahim Byagowi +Date: Sun Jul 28 22:59:09 2019 +0430 + + Increase subset fuzzer timeout to 8s + + Probably we should just remove timeout when running tsan and vaglrind here, the flaky bots + + test/fuzzing/run-subset-fuzzer-tests.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 87454c447d705327a26c1f879e0a4f3002ae2667 +Author: Ebrahim Byagowi +Date: Sun Jul 28 20:46:47 2019 +0430 + + [base] fix logic + + src/hb-ot-layout-base-table.hh | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 69655d5bc3c7b240424545bdef197d9d7251e509 +Author: Ebrahim Byagowi +Date: Sun Jul 28 20:39:20 2019 +0430 + + [base] minor + + src/hb-ot-layout-base-table.hh | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +commit d9c44e7239daf59e283fecd4166c984b43d48e24 +Author: Ebrahim Byagowi +Date: Sun Jul 28 20:35:32 2019 +0430 + + [base] Check if the returned base_coord is valid + + src/hb-ot-layout-base-table.hh | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +commit 53853c044a6382ece51393dfc3a4fe6a5f8a5a23 +Author: Ebrahim Byagowi +Date: Sun Jul 28 20:23:48 2019 +0430 + + [meta] minor + + src/hb-ot-meta-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ed126d8c37c45d8d60eb0368143c6776d1fcfbff +Author: Ebrahim Byagowi +Date: Sun Jul 28 20:21:59 2019 +0430 + + [base] fix build + + src/hb-ot-layout-base-table.hh | 3 +++ + 1 file changed, 3 insertions(+) + +commit c7b22b96cc64c81248362a70f2d60d93ee520f2d +Author: Ebrahim Byagowi +Date: Sun Jul 28 19:46:57 2019 +0430 + + [base] minor + + src/hb-ot-layout-base-table.hh | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +commit a157342fce2616141ee62d68ad8e3fb93e52187e +Author: Ebrahim Byagowi +Date: Sun Jul 28 18:54:13 2019 +0430 + + [base] Fix use of bsearch + + src/hb-ot-layout-base-table.hh | 94 ++++++++++++++---------------------------- + 1 file changed, 31 insertions(+), 63 deletions(-) + +commit eddd45653282ffff8ef002ad2163bcf8bf4f3df1 +Author: Ebrahim Byagowi +Date: Sun Jul 28 02:21:54 2019 +0430 + + [base] minor spacing + + src/hb-ot-layout-base-table.hh | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 0a18efd766b3b6cc987ee18785f7858fe2bd1c67 +Author: Behdad Esfahbod +Date: Fri Jul 26 14:34:26 2019 -0700 + + Minor + + src/hb-ot-layout-gsub-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 60d0fe2eda9c0eb67f50d61e905b584b8edc3e95 +Merge: 6d53cda1 658424b2 +Author: Ebrahim Byagowi +Date: Sat Jul 27 01:20:55 2019 +0430 + + Merge pull request #1872 from darktohka/cmake-regex-fix + + [cmake] Fix CMake build on newer CMake versions + +commit 658424b29efbc758541a790193c42171bb7fa965 +Author: Derzsi Dániel +Date: Fri Jul 26 22:52:03 2019 +0300 + + [cmake] Fix CMake build on newer CMake versions + + Unfortunately, newer CMake versions die during regex variable extraction, causing the build to fail. + + This is caused by the lack of escaping used around variables in the extract_make_variable function, causing these variables to be automatically unwrapped into empty strings. + + CMakeLists.txt | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 6d53cda1baf130853e5725fe8fea1d1c5f766a79 +Author: Zero King +Date: Fri Jul 26 15:43:51 2019 +0000 + + [util] Fix memory leak + + util/options.cc | 1 + + 1 file changed, 1 insertion(+) + +commit d3d99f8bb6ad77d1ac73901885acfffd3bb3e7f7 +Author: Ebrahim Byagowi +Date: Fri Jul 26 16:46:04 2019 +0430 + + [metrics] Expose raw OS2/HHEA asc/dsc values using private tags (#1867) + + src/hb-ot-metrics.cc | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +commit aaffe41094f8ddefad6f33e86cbd04a24dd9bfff +Author: Ebrahim Byagowi +Date: Fri Jul 26 01:14:37 2019 +0430 + + [meta] minor, simplify iterator + + src/hb-ot-meta-table.hh | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 62932c14bd256f10031380047ededd93a2aacd88 +Author: Ebrahim Byagowi +Date: Fri Jul 26 00:30:29 2019 +0430 + + [meta] Rename ot-metadata to ot-meta per review + + docs/harfbuzz-sections.txt | 7 +++--- + src/Makefile.am | 8 +++---- + src/Makefile.sources | 4 ++-- + src/harfbuzz.cc | 2 +- + src/hb-ot-meta-table.hh | 8 +++---- + src/{hb-ot-metadata.cc => hb-ot-meta.cc} | 22 +++++++++--------- + src/{hb-ot-metadata.h => hb-ot-meta.h} | 30 ++++++++++++------------- + src/hb-ot.h | 2 +- + src/{test-ot-metadata.cc => test-ot-meta.cc} | 10 ++++----- + test/api/Makefile.am | 2 +- + test/api/{test-ot-metadata.c => test-ot-meta.c} | 26 ++++++++++----------- + 11 files changed, 61 insertions(+), 60 deletions(-) + +commit 821d9e9034c57c5c593741284b134c76cc3c7c0f +Author: Ebrahim Byagowi +Date: Fri Jul 26 00:08:58 2019 +0430 + + Use .sub_array for DataMap tags iteration + + src/hb-ot-meta-table.hh | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +commit a250af98ae74c94ac3aa069e6e5958a937586bfc +Author: Ebrahim Byagowi +Date: Wed Jul 24 03:10:41 2019 +0430 + + [meta] Add max value to hb_ot_metadata_t + + src/hb-ot-metadata.h | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 80e246a1f2b3c4e3c25a4a3ec042e7610944abd4 +Author: Ebrahim Byagowi +Date: Wed Jul 24 03:08:34 2019 +0430 + + [meta] Add a test program for metadata + + src/Makefile.am | 5 ++++ + src/test-ot-metadata.cc | 70 +++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 75 insertions(+) + +commit bc65ebbce765545bc4455d8ae5ba4a6a99201e41 +Author: Ebrahim Byagowi +Date: Wed Jul 24 02:28:09 2019 +0430 + + [meta] hb_ot_metadata_get_entries, tags iteration API + + src/hb-ot-meta-table.hh | 17 +++++++++++++++++ + src/hb-ot-metadata.cc | 28 ++++++++++++++++++++++++---- + src/hb-ot-metadata.h | 8 +++++++- + test/api/test-ot-metadata.c | 26 ++++++++++++++++++++++++++ + 4 files changed, 74 insertions(+), 5 deletions(-) + +commit 3ac03bd67cb9f4a72e636bf56bc4a79e04bcba62 +Author: Ebrahim Byagowi +Date: Mon Jul 22 23:35:08 2019 +0430 + + [meta] New API, hb_ot_metadata_reference_entry for fetching meta entries + + docs/harfbuzz-sections.txt | 6 +++++ + src/Makefile.sources | 2 ++ + src/harfbuzz.cc | 1 + + src/hb-config.hh | 1 + + src/hb-ot-face-table-list.hh | 4 ++- + src/hb-ot-face.cc | 1 + + src/hb-ot-layout.cc | 1 - + src/hb-ot-meta-table.hh | 20 +++++++++++++++ + src/hb-ot-metadata.cc | 57 ++++++++++++++++++++++++++++++++++++++++++ + src/hb-ot-metadata.h | 57 ++++++++++++++++++++++++++++++++++++++++++ + src/hb-ot.h | 1 + + test/api/Makefile.am | 1 + + test/api/fonts/meta.ttf | Bin 0 -> 320 bytes + test/api/test-ot-metadata.c | 58 +++++++++++++++++++++++++++++++++++++++++++ + 14 files changed, 208 insertions(+), 2 deletions(-) + +commit aab8e084873eb098c55ed2569c15bb308c59e436 +Author: Ebrahim Byagowi +Date: Fri Jul 26 02:19:22 2019 +0430 + + minor spacing fix (#1869) + + src/hb-open-type.hh | 16 ++++++++-------- + src/hb-ot-vorg-table.hh | 2 +- + src/hb-vector.hh | 8 ++++---- + 3 files changed, 13 insertions(+), 13 deletions(-) + +commit d791446a930f8e2009c5ab5ea389da98d1ed9b95 +Author: Ebrahim Byagowi +Date: Fri Jul 26 02:12:06 2019 +0430 + + [feat] minor + + src/hb-aat-layout-feat-table.hh | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +commit 356b68a00afaf972908cb2a478170e3933eaf974 +Author: Ebrahim Byagowi +Date: Thu Jul 25 23:22:00 2019 +0430 + + [metrics] Add a test that actually practices variation (#1858) + + test/api/fonts/TestCFF2VF.otf | Bin 0 -> 3636 bytes + test/api/test-ot-metrics.c | 28 ++++++++++++++++++++++++++-- + 2 files changed, 26 insertions(+), 2 deletions(-) + +commit a744fdc6c8217d0d4bfce30e638ed2e5200cf380 +Author: Ebrahim Byagowi +Date: Thu Jul 25 14:49:02 2019 +0430 + + Add _MAX_VALUE to hb_ot_metrics_t (#1861) + + src/hb-ot-metrics.cc | 4 ++-- + src/hb-ot-metrics.h | 4 +++- + 2 files changed, 5 insertions(+), 3 deletions(-) + +commit 069872c51b31fe1a618e3ca5c3b0ab8ccba0cf81 +Author: Ebrahim Byagowi +Date: Thu Jul 25 14:27:43 2019 +0430 + + minor + + src/hb-ot-layout.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 737eb85a4ec8861791157d83dd170ac48fa2cfc7 +Author: Ebrahim Byagowi +Date: Thu Jul 25 14:26:30 2019 +0430 + + Add _MAX_VALUE to disabled baseline types enum + + src/hb-ot-layout.cc | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit dd9a0ed3f0c0a8a94e107689318463d62414cf60 +Author: Ebrahim Byagowi +Date: Wed Jul 24 00:47:19 2019 +0430 + + Replace 0x7FFFFFFFu in enums with HB_TAG_MAX_SIGNED + + src/hb-aat-layout.h | 4 ++-- + src/hb-ot-var.h | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit 5988ab8a4e0d2b6d174f2ff0f18addc3f41b7a94 +Merge: 4cba7bda 636ae422 +Author: blueshade7 +Date: Mon Jul 22 14:36:16 2019 -0700 + + Merge branch 'master' into var-subset + +commit 636ae422372ed7f17b695e78c9c9015188b204e8 +Author: Ebrahim Byagowi +Date: Mon Jul 22 22:50:21 2019 +0430 + + minor, comment out meta table in list till its use + + src/hb-ot-face-table-list.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 04c11a19b75663af35d16c827e295aa2e555d110 +Merge: 41ab56e0 c9796d15 +Author: Khaled Hosny +Date: Mon Jul 22 16:44:47 2019 +0200 + + Merge pull request #1851 from khaledhosny/fix-sbix-extents + + Fix sbix glyph extents + +commit 41ab56e09586b675b1c5de745cf5f520a808bba1 +Author: Ebrahim Byagowi +Date: Mon Jul 22 18:46:52 2019 +0430 + + Implement meta table parsing + + src/Makefile.sources | 1 + + src/hb-ot-face-table-list.hh | 1 + + src/hb-ot-layout.cc | 15 ++++---- + src/hb-ot-meta-table.hh | 89 ++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 99 insertions(+), 7 deletions(-) + +commit a51aa951b5ad8da4ac7effc891437345e012a0ac +Author: Ebrahim Byagowi +Date: Mon Jul 22 18:35:55 2019 +0430 + + [metrics] Fix _get_variation API to works with actual coord values + + src/hb-ot-metrics.cc | 16 ++++++++-------- + src/hb-ot-metrics.h | 2 +- + test/api/test-ot-metrics.c | 2 +- + 3 files changed, 10 insertions(+), 10 deletions(-) + +commit 77141dff7d73fa6290f51c9e1ca56ce51a5deec0 +Author: Behdad Esfahbod +Date: Mon Jul 22 07:48:32 2019 -0400 + + [metrics] _-prefix internal symbol + + src/hb-ot-font.cc | 12 ++++++------ + src/hb-ot-metrics.cc | 8 ++++---- + src/hb-ot-metrics.hh | 6 +++--- + 3 files changed, 13 insertions(+), 13 deletions(-) + +commit 89228ccb9a81b728bc9955082c17c68c848c50c4 +Author: Behdad Esfahbod +Date: Mon Jul 22 07:07:37 2019 -0400 + + Fix warning on IBM compilers + + Fixes https://github.com/harfbuzz/harfbuzz/issues/1852 + + src/hb.hh | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit c9796d15e1ec5f8939f8b1ae368cb3352b6a9cb9 +Author: Khaled Hosny +Date: Mon Jul 22 03:57:24 2019 +0200 + + Fix sbix glyph extents + + * The ‘height’ needs to be negated since the API returns “distance from + top to bottom side”. + * Similarly, the ‘y_offset‘ needs to be added to the height to get the + ‘y_bearing’, since sbix’s offset is “the point in the glyph relative + to its lower-left corner which corresponds to the origin” while + ‘y_bearing’ is the “top side of glyph from origin”. + + With these changes the sbix glyph metrics return values similar to other + tables, as they were otherwise unusable. + + src/hb-ot-color-sbix-table.hh | 4 ++-- + test/api/test-ot-color.c | 4 ++-- + .../fonts/fcbaa518d3cce441ed37ae3b1fed6a19e9b54efd.ttf | Bin 0 -> 3128 bytes + test/shaping/data/in-house/tests/color-fonts.tests | 1 + + 4 files changed, 5 insertions(+), 4 deletions(-) + +commit 759f3bd486c99bb09fb9fa5f42e621ec21399df8 +Author: Ebrahim Byagowi +Date: Mon Jul 22 02:06:07 2019 +0430 + + [metrics] Don't use metrics API in _common + + As it is exposed with a different condition + + src/hb-ot-metrics.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit eb8bd2f7eccde483d33406f102c69260fde6fe23 +Author: Ebrahim Byagowi +Date: Tue Jul 16 22:27:01 2019 +0430 + + Add hb_gdi_face_create API + + Based on Konstantin Ritt work posted on mailing list + + CMakeLists.txt | 8 +++++ + appveyor.yml | 2 +- + configure.ac | 23 +++++++++++++++ + docs/harfbuzz-sections.txt | 5 ++++ + src/Makefile.am | 8 +++++ + src/Makefile.sources | 3 ++ + src/harfbuzz.cc | 1 + + src/hb-directwrite.cc | 9 ++---- + src/hb-gdi.cc | 73 ++++++++++++++++++++++++++++++++++++++++++++++ + src/hb-gdi.h | 39 +++++++++++++++++++++++++ + src/hb-uniscribe.cc | 7 ----- + src/hb.hh | 5 ++++ + 12 files changed, 168 insertions(+), 15 deletions(-) + +commit 3d03bb84d44bc9ef8a77e974d0e937a3385ffb92 +Author: Ebrahim Byagowi +Date: Sun Jul 21 12:38:04 2019 +0430 + + [metrics] minor, tweak comment + + src/hb-ot-metrics.cc | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit e540d402f6120e8761ff655bdbffb07d91a5f643 +Author: Behdad Esfahbod +Date: Fri Jul 19 11:19:31 2019 -0700 + + [docs] Minor + + docs/harfbuzz-sections.txt | 2 ++ + src/hb-ot-math.h | 2 +- + 2 files changed, 3 insertions(+), 1 deletion(-) + +commit 00e13985fbc5291850b8ea3d021e5f83c8a297e3 +Author: Ebrahim Byagowi +Date: Sat Jul 20 23:03:51 2019 +0430 + + Revert hhea fallback to OS/2 to its reverse way + + As searching number of hhea having fonts beats the number of OS/2 + having ones in macOS 10.14.2 + + src/hb-ot-metrics.cc | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit c13ef9cc64a447e74abfed75f4f418bf644be88d +Author: Ebrahim Byagowi +Date: Sat Jul 20 15:01:37 2019 +0430 + + Bring back asc/desc abs logic used to be in hmtx table + + src/hb-ot-metrics.cc | 21 ++++++++++++++++++--- + 1 file changed, 18 insertions(+), 3 deletions(-) + +commit 772e62688cd72c02910f623653d2ec8ef6990928 +Author: Ebrahim Byagowi +Date: Sat Jul 20 14:50:31 2019 +0430 + + Make HB_TINY builds work again by separating the always needed part + + src/hb-ot-font.cc | 12 +++++----- + src/hb-ot-metrics.cc | 62 ++++++++++++++++++++++++++++++++++++++++------------ + src/hb-ot-metrics.hh | 5 +++++ + 3 files changed, 59 insertions(+), 20 deletions(-) + +commit cb704337407ae9ccb57ae7631567002028b93c84 +Author: Ebrahim Byagowi +Date: Sat Jul 20 14:33:57 2019 +0430 + + Merge _get_position_internal into _get_position + + src/hb-ot-metrics.cc | 143 ++++++++++++++++++--------------------------------- + src/hb-ot-metrics.hh | 5 -- + 2 files changed, 49 insertions(+), 99 deletions(-) + +commit ac3518af58464b33f1b16b34b8846c302b935208 +Author: Ebrahim Byagowi +Date: Sat Jul 20 14:03:36 2019 +0430 + + Define post table only when used + + src/hb-ot-face-table-list.hh | 2 ++ + 1 file changed, 2 insertions(+) + +commit 471f798ace08b4551f0c9ead6855a4e49b72ba25 +Author: Ebrahim Byagowi +Date: Sat Jul 20 14:00:20 2019 +0430 + + Merge ot-metrics-internal.cc with ot-metrics now that isn't needed in subset + + src/Makefile.sources | 3 -- + src/harfbuzz.cc | 1 - + src/hb-ot-metrics-internal.cc | 100 ------------------------------------------ + src/hb-ot-metrics.cc | 71 +++++++++++++++++++++++++++++- + 4 files changed, 70 insertions(+), 105 deletions(-) + +commit 29444d7e9fd5007bf39efa2cf57a0117aabfc770 +Author: Ebrahim Byagowi +Date: Sat Jul 20 13:52:21 2019 +0430 + + Don't cache ascender/descender metrics + + src/hb-ot-font.cc | 24 ++++++++---------------- + src/hb-ot-hmtx-table.hh | 20 -------------------- + 2 files changed, 8 insertions(+), 36 deletions(-) + +commit 5e28c2654d030655d7b93ec0d6213d2b9fb2956e +Author: Ebrahim Byagowi +Date: Sat Jul 20 14:08:11 2019 +0430 + + [doc] minor, improve hb-ot-metrics doc a bit + + src/hb-ot-metrics.cc | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +commit ac8b6e330a443a66c3e0fb83af9794310688d848 +Merge: ec8dde81 08b48e89 +Author: Ebrahim Byagowi +Date: Sat Jul 20 13:16:16 2019 +0430 + + Merge pull request #1844 from ebraminio/hhea + + Fallback hhea's ascender/descender to OS2 + +commit 08b48e89d3c1bafe252badc7c65a9fc2f166a693 +Author: Ebrahim Byagowi +Date: Sat Jul 20 12:53:40 2019 +0430 + + [os2] minor spacing tweaks + + src/hb-ot-os2-table.hh | 11 +++++------ + 1 file changed, 5 insertions(+), 6 deletions(-) + +commit 54b9ab704dbf62e2916f1d5276ffef2543bcc2a7 +Author: Ebrahim Byagowi +Date: Sat Jul 20 12:51:38 2019 +0430 + + Fallback hhea's ascender/descender to OS2 + + src/hb-ot-metrics-internal.cc | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit ec8dde8142fbf9e5bc0aee9318a7c4e73d61c758 +Author: Behdad Esfahbod +Date: Fri Jul 19 11:13:50 2019 -0700 + + [metrics] Fall back to hhea if OS2 metrics are empty + + Reinstates previous logic, even if it might be unnecessary. + + src/hb-ot-metrics-internal.cc | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit 2e5b49d11d1dbfd44d8c640cb9ce5de7d26ca873 +Author: Ebrahim Byagowi +Date: Fri Jul 19 11:41:07 2019 +0430 + + Add HB_NO_METRICS and fix HB_TINY build (#1839) + + src/hb-config.hh | 1 + + src/hb-ot-face-table-list.hh | 2 -- + src/hb-ot-metrics-internal.cc | 8 +++++++- + src/hb-ot-metrics.cc | 6 ++++++ + 4 files changed, 14 insertions(+), 3 deletions(-) + +commit bdfdac0f26aafb3e9ff2db123116f0406fa49efc +Author: Ebrahim Byagowi +Date: Fri Jul 19 10:33:00 2019 +0430 + + [ci][fuzzer] print valgrind failure if an error happened + + test/fuzzing/run-shape-fuzzer-tests.py | 34 +++++++++++++++++----------------- + 1 file changed, 17 insertions(+), 17 deletions(-) + +commit 2bd953ff4f656f042dba2845f0479a7fe7c439a6 +Author: Behdad Esfahbod +Date: Thu Jul 18 14:25:45 2019 -0700 + + [metrics] Fix weird use of xor + + I believe that was a try to use one approach as fallback to other. But + felt wrong. Just believe what's in OS/2 table to be correct. + + src/hb-ot-metrics-internal.cc | 12 ++++++------ + src/hb-ot-os2-table.hh | 2 +- + 2 files changed, 7 insertions(+), 7 deletions(-) + +commit 9675a067bf1cc0e5d4707c1345736fda4be75b82 +Author: Behdad Esfahbod +Date: Thu Jul 18 14:15:08 2019 -0700 + + [ot-metrics] Touch up + + src/harfbuzz.cc | 2 ++ + src/hb-ot-hmtx-table.hh | 19 +++++++++---------- + 2 files changed, 11 insertions(+), 10 deletions(-) + +commit 87e628436e32786635796fbb07ed200f8c0da68f +Author: Ebrahim Byagowi +Date: Tue Nov 20 23:26:46 2018 +0330 + + Implement a simple API for fetching opentype metrics + + Fixes https://github.com/harfbuzz/harfbuzz/pull/1432 + + docs/harfbuzz-sections.txt | 9 +++ + src/Makefile.sources | 6 ++ + src/hb-ot-face-table-list.hh | 2 + + src/hb-ot-hhea-table.hh | 2 + + src/hb-ot-hmtx-table.hh | 62 +++++++++---------- + src/hb-ot-layout.cc | 1 - + src/hb-ot-metrics-internal.cc | 94 +++++++++++++++++++++++++++++ + src/hb-ot-metrics.cc | 135 ++++++++++++++++++++++++++++++++++++++++++ + src/hb-ot-metrics.h | 92 ++++++++++++++++++++++++++++ + src/hb-ot-metrics.hh | 35 +++++++++++ + src/hb-ot-os2-table.hh | 4 ++ + src/hb-ot-post-table.hh | 5 +- + src/hb-ot.h | 1 + + test/api/Makefile.am | 1 + + test/api/test-ot-metrics.c | 54 +++++++++++++++++ + 15 files changed, 467 insertions(+), 36 deletions(-) + +commit 4cba7bdae94d21ae780b5a71186c5d6da0800fa2 +Author: blueshade7 +Date: Thu Jul 18 14:03:33 2019 -0700 + + regenerate Confortaa subset test expected results + + ...aa-Regular-new.default.retain-all-codepoint.ttf | Bin 97204 -> 182944 bytes + ...drop-hints-retain-gids.retain-all-codepoint.ttf | Bin 65976 -> 151740 bytes + ...Regular-new.drop-hints.retain-all-codepoint.ttf | Bin 65936 -> 151676 bytes + ...a-Regular-new.name-ids.retain-all-codepoint.ttf | Bin 96948 -> 182688 bytes + ...egular-new.retain-gids.retain-all-codepoint.ttf | Bin 97244 -> 183008 bytes + 5 files changed, 0 insertions(+), 0 deletions(-) + +commit ed67efcc8c3638c625b2904833af3f27ef51db14 +Author: David Corbett +Date: Mon Jun 17 10:16:24 2019 -0400 + + Revert "[Myanmar] Prevent reordering between Asat and Dot below" + + This reverts commit 1c8654ead41ca746d577549c92d2a41c594ab639. + + src/hb-unicode.hh | 3 --- + 1 file changed, 3 deletions(-) + +commit a76d8b0d5531a6a8d682ea9d5150ee7893932269 +Merge: 386a4a64 504bb172 +Author: blueshade7 +Date: Wed Jul 17 14:12:06 2019 -0700 + + Merge commit '504bb17287c978d60a4a515555852465319f74ed' into var-subset + +commit 504bb17287c978d60a4a515555852465319f74ed +Author: Ebrahim Byagowi +Date: Wed Jul 17 22:57:46 2019 +0430 + + [ci] Bring back -linux-arm64 bot + + Let's see if 576065b has fixed it + + .circleci/config.yml | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +commit 6157bbe5127bbcbd17348622601976cffcd11c63 +Author: Behdad Esfahbod +Date: Wed Jul 17 11:20:08 2019 -0700 + + Revert "Revert previous change" + + This reverts commit b8e90ca1a10fbd472eda1aa8cc3797011da52356. + + Works now. + + src/hb-subset-plan.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 576065b4429109359c3af491b34b9ab0c6b149ee +Author: Behdad Esfahbod +Date: Wed Jul 17 11:19:34 2019 -0700 + + [iter] Fix reduce type deduction + + src/hb-iter.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4552864c82c876da738ec3bf772cc089216f2fd2 +Author: Ebrahim Byagowi +Date: Wed Jul 17 22:08:39 2019 +0430 + + [ci] Disable -linux-arm64 bot + + This is its failure https://circleci.com/gh/harfbuzz/harfbuzz/99864 + + Trying to fix like ee05627, interestingly, makes the bot and the + others to fail like this https://circleci.com/gh/harfbuzz/harfbuzz/99841 + + .circleci/config.yml | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +commit b8e90ca1a10fbd472eda1aa8cc3797011da52356 +Author: Ebrahim Byagowi +Date: Wed Jul 17 21:38:19 2019 +0430 + + Revert previous change + + Interestingly all of the bots disagreed with the change and the complain is... weird. + + src/hb-subset-plan.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ee05627aff2993c51ed8a4bff3170450c000a28a +Author: Ebrahim Byagowi +Date: Wed Jul 17 21:28:25 2019 +0430 + + Improve syntax to make out linux-arm64 a little happy + + Decided to apply is we did the same on other places however this won't + fix all of its complains + + src/hb-subset-plan.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6a6bf7b7bc4a0b375fcf04ff7c674bf76e6d51aa +Author: Ebrahim Byagowi +Date: Wed Jul 17 21:22:38 2019 +0430 + + Downgrade -Wdeprecated-declarations to warning + + Fixes #1834 at least till fix of #1829 + + src/hb.hh | 1 + + 1 file changed, 1 insertion(+) + +commit 25e2562fdff6c14a9cb70999a1ad71ee1bdff494 +Author: Behdad Esfahbod +Date: Wed Jul 17 09:35:56 2019 -0700 + + [amalgam] Fix redundant-declaration warning/error + + src/hb-unicode.cc | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +commit c184180228540c23405aaa03b6b571bb41103b45 +Author: Ali Javadi +Date: Tue Jul 16 22:10:24 2019 +0430 + + Fix C++20 compile warning on implicit capture of this with '=' default capture (#1833) + + Happens when compiled with -std=c++2a, the fix just makes the captures explicit to resolve the issue. Just adding this in addition to = doesn't work in C++11. + + src/hb-ot-layout-gpos-table.hh:737:18: warning: implicit capture of 'this' with a capture default of '=' is deprecated [-Wdeprecated-this-capture] + { return (this+_).intersects (glyphs, valueFormat); }) + ^ + src/hb-ot-layout-gpos-table.hh:736:16: note: add an explicit capture of 'this' to capture '*this' by reference + | hb_map ([=] (const OffsetTo &_) + ^ + , this + + src/hb-ot-layout-gpos-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1f94388516befe137d265c261f687a47ce6f8e69 +Author: Ebrahim Byagowi +Date: Tue Jul 16 11:24:29 2019 +0430 + + [usp] define atfree callback only if used + + src/hb-uniscribe.cc | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 1da1b4dc94c500e4c9c833ab74fced07364d13fb +Author: Qunxin Liu +Date: Wed Jun 26 13:23:24 2019 -0700 + + [subset] For option "--unicodes", add support for "*" to retain all code points + + ...aa-Regular-new.default.retain-all-codepoint.ttf | Bin 0 -> 97204 bytes + ...drop-hints-retain-gids.retain-all-codepoint.ttf | Bin 0 -> 65976 bytes + ...Regular-new.drop-hints.retain-all-codepoint.ttf | Bin 0 -> 65936 bytes + ...a-Regular-new.name-ids.retain-all-codepoint.ttf | Bin 0 -> 96948 bytes + ...egular-new.retain-gids.retain-all-codepoint.ttf | Bin 0 -> 97244 bytes + ...to-Regular.abc.default.retain-all-codepoint.ttf | Bin 0 -> 2168 bytes + ...drop-hints-retain-gids.retain-all-codepoint.ttf | Bin 0 -> 924 bytes + ...Regular.abc.drop-hints.retain-all-codepoint.ttf | Bin 0 -> 924 bytes + ...o-Regular.abc.name-ids.retain-all-codepoint.ttf | Bin 0 -> 2168 bytes + ...egular.abc.retain-gids.retain-all-codepoint.ttf | Bin 0 -> 2168 bytes + test/subset/data/tests/basics.tests | 1 + + test/subset/subset_test_suite.py | 20 +++++++--- + util/hb-subset.cc | 7 ++++ + util/options.cc | 44 ++++++++++++--------- + 14 files changed, 48 insertions(+), 24 deletions(-) + +commit 68ac767e430c4dfe4c556b2c4f962cc3dfc5d3e4 +Author: blueshade7 +Date: Fri Jul 12 23:02:29 2019 -0700 + + added skip(), get_next_value() to inc_bimap to subset VarStore with retain-gids + + src/hb-bimap.hh | 25 ++++++++++++++++++++++++- + src/hb-ot-layout-common.hh | 14 +++++++------- + 2 files changed, 31 insertions(+), 8 deletions(-) + +commit 386a4a64f5ae0e2ba941f80966585a0a66813576 +Author: blueshade7 +Date: Fri Jul 12 17:05:34 2019 -0700 + + regenerate subset api test result SourceHanSans-Regular.41,4C2E.retaingids.otf + + .../SourceHanSans-Regular.41,4C2E.retaingids.otf | Bin 2736 -> 2664 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) + +commit 670768e5b9f24958f60a74f3d194b24333def446 +Author: blueshade7 +Date: Fri Jul 12 16:14:23 2019 -0700 + + fix inc-bimap for subsetting VarStore with retain-gids + + src/hb-bimap.hh | 19 ++++++++- + src/hb-ot-layout-common.hh | 43 ++++++++++----------- + src/hb-ot-var-hvar-table.hh | 5 ++- + test/api/fonts/AdobeVFPrototype.ac.retaingids.otf | Bin 6416 -> 6412 bytes + .../SourceHanSans-Regular.41,4C2E.retaingids.otf | Bin 2656 -> 2736 bytes + .../SourceSansVariable-Roman.ac.retaingids.ttf | Bin 2616 -> 2616 bytes + ...ourceSerifVariable-Roman-VVAR.ac.retaingids.ttf | Bin 5296 -> 5288 bytes + 7 files changed, 42 insertions(+), 25 deletions(-) + +commit 4730b350b7ee90338caf3e962343af42412ce3df +Author: Behdad Esfahbod +Date: Fri Jul 12 15:38:35 2019 -0700 + + Revert "Update Graphite API to latest (#1215)" + + This reverts commit e4e74c2751ac24178086cce2811d34d8019b6f85. + + See https://github.com/harfbuzz/harfbuzz/issues/1829 + + src/hb-graphite2.cc | 28 +--------------------------- + 1 file changed, 1 insertion(+), 27 deletions(-) + +commit f8242b61ab01002e9f7374daa8755e92c6a92eb4 +Author: Ebrahim Byagowi +Date: Thu Jul 11 15:10:36 2019 +0430 + + [fuzz] Increase subset runner timeout for tsan bot + + Now is flaky let's just increase and maybe investigate later + + test/fuzzing/run-subset-fuzzer-tests.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b65bad18aa527684af999b5808a9087404c0759a +Author: Ebrahim Byagowi +Date: Thu Jul 11 14:31:55 2019 +0430 + + [fuzz] Don't fail when blob is empty + + And enable more tests able to trig the issue. + + ...zz-testcase-minimized-hb-subset-fuzzer-5738978499624960 | Bin 0 -> 28 bytes + test/fuzzing/hb-subset-fuzzer.cc | 2 +- + test/fuzzing/run-subset-fuzzer-tests.py | 9 +++++---- + 3 files changed, 6 insertions(+), 5 deletions(-) + +commit 7a9d643c297990f9889a2f7b4a470ef933bac131 +Author: Ebrahim Byagowi +Date: Thu Jul 11 01:35:06 2019 +0430 + + Fix unintialized memory read in cmap subset (#1826) + + src/hb-ot-cmap-table.hh | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +commit a6065d05cf38620c06b6dd10b8a841ed236f76c2 +Author: Ebrahim Byagowi +Date: Wed Jul 10 16:41:40 2019 +0430 + + Don't call memcpy when a table is empty + + src/hb-open-file.hh | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit c85f624b519df1db141bf55d9452bc2837ef35c4 +Author: Ebrahim Byagowi +Date: Wed Jul 10 14:28:06 2019 +0430 + + Force blob generation and memory check in hb-subset-fuzzer + + test/fuzzing/hb-subset-fuzzer.cc | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +commit 0eef8113d8a7940b4529a340790976a577fe829e +Author: blueshade7 +Date: Tue Jul 9 11:43:59 2019 -0700 + + retain gids in HVAR so in sync with fontTools + regenerate Comfortaa subset test results + + src/hb-bimap.hh | 6 + + src/hb-ot-var-hvar-table.hh | 123 +++++++++++++-------- + .../Comfortaa-Regular-new.default.61,62,63.ttf | Bin 6492 -> 7460 bytes + .../basics/Comfortaa-Regular-new.default.61,63.ttf | Bin 6316 -> 7104 bytes + .../basics/Comfortaa-Regular-new.default.61.ttf | Bin 6148 -> 6752 bytes + .../basics/Comfortaa-Regular-new.default.62.ttf | Bin 6088 -> 6696 bytes + .../basics/Comfortaa-Regular-new.default.63.ttf | Bin 6068 -> 6676 bytes + ...Regular-new.drop-hints-retain-gids.61,62,63.ttf | Bin 3284 -> 4912 bytes + ...aa-Regular-new.drop-hints-retain-gids.61,63.ttf | Bin 3164 -> 4620 bytes + ...ortaa-Regular-new.drop-hints-retain-gids.61.ttf | Bin 2868 -> 4056 bytes + ...ortaa-Regular-new.drop-hints-retain-gids.62.ttf | Bin 3020 -> 4296 bytes + ...ortaa-Regular-new.drop-hints-retain-gids.63.ttf | Bin 3024 -> 4304 bytes + .../Comfortaa-Regular-new.drop-hints.61,62,63.ttf | Bin 1952 -> 2920 bytes + .../Comfortaa-Regular-new.drop-hints.61,63.ttf | Bin 1832 -> 2620 bytes + .../basics/Comfortaa-Regular-new.drop-hints.61.ttf | Bin 1704 -> 2308 bytes + .../basics/Comfortaa-Regular-new.drop-hints.62.ttf | Bin 1688 -> 2296 bytes + .../basics/Comfortaa-Regular-new.drop-hints.63.ttf | Bin 1688 -> 2296 bytes + .../Comfortaa-Regular-new.name-ids.61,62,63.ttf | Bin 6236 -> 7204 bytes + .../Comfortaa-Regular-new.name-ids.61,63.ttf | Bin 6060 -> 6848 bytes + .../basics/Comfortaa-Regular-new.name-ids.61.ttf | Bin 5892 -> 6496 bytes + .../basics/Comfortaa-Regular-new.name-ids.62.ttf | Bin 5832 -> 6440 bytes + .../basics/Comfortaa-Regular-new.name-ids.63.ttf | Bin 5812 -> 6420 bytes + .../Comfortaa-Regular-new.retain-gids.61,62,63.ttf | Bin 7824 -> 9452 bytes + .../Comfortaa-Regular-new.retain-gids.61,63.ttf | Bin 7648 -> 9104 bytes + .../Comfortaa-Regular-new.retain-gids.61.ttf | Bin 7312 -> 8500 bytes + .../Comfortaa-Regular-new.retain-gids.62.ttf | Bin 7420 -> 8696 bytes + .../Comfortaa-Regular-new.retain-gids.63.ttf | Bin 7404 -> 8684 bytes + test/subset/run-tests.py | 2 +- + 28 files changed, 85 insertions(+), 46 deletions(-) + +commit a87fbb872b31c7a292ed8b414be728aa951e2833 +Merge: 49252c42 6e35668b +Author: Michiharu Ariza +Date: Tue Jul 9 10:25:54 2019 -0700 + + Merge branch 'var-subset' of https://github.com/harfbuzz/harfbuzz into var-subset + +commit 6e35668b452cef86702e2563f4006a1db5d8fd74 +Author: blueshade7 +Date: Tue Jul 9 09:47:54 2019 -0700 + + fix var-subset build + + src/harfbuzz.cc | 1 + + test/subset/run-tests.py | 2 +- + 2 files changed, 2 insertions(+), 1 deletion(-) + +commit 8bf989ea70804dad66fb1c2d0c625ef5e562a309 +Merge: 5763a927 2e7021da +Author: blueshade7 +Date: Mon Jul 8 17:13:29 2019 -0700 + + update from master + +commit 2e7021da7d1726a37822e6a001b9218f82255bc8 +Author: Dominik Röttsches +Date: Mon Jul 8 10:19:49 2019 +0300 + + Revert "Minor" - revert moving extern "C" definitions in-function + + This reverts commit 62e60322cb9e18b3ee75f1b4a2a6d3069f587407 since it + breaks building HarfBuzz as part of Chromium. + + Fixes https://github.com/harfbuzz/harfbuzz/issues/1821. + + src/hb-unicode.cc | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit f18ea1dd3a9961661a383b2966de57ea68a267e7 +Author: Behdad Esfahbod +Date: Fri Jul 5 13:56:45 2019 -0700 + + [font] Remove division when scaling + + Yoohoo. This seems to be precise enough! Let's see if it sticks. + I'm asking Dominik to run this in Chrome test suite and report. + + Fixes https://github.com/harfbuzz/harfbuzz/issues/1801 + + src/hb-font.hh | 23 +++++++++-------------- + src/hb-ot-math-table.hh | 16 ++++++++-------- + 2 files changed, 17 insertions(+), 22 deletions(-) + +commit b847769292aca13345fd1facae35aaf999198ad4 +Author: Behdad Esfahbod +Date: Fri Jul 5 13:52:09 2019 -0700 + + [font] Keep font-space to user-space multiplier + + Part of https://github.com/harfbuzz/harfbuzz/issues/1801 + + src/hb-font.cc | 5 +++++ + src/hb-font.hh | 13 +++++++++++-- + 2 files changed, 16 insertions(+), 2 deletions(-) + +commit df6edcd44ceb63d01d9c0d6d2aa06b6c6cbb914d +Author: Behdad Esfahbod +Date: Fri Jul 5 13:45:15 2019 -0700 + + Make face immutable in hb_font_set_face() + + src/hb-font.cc | 1 + + 1 file changed, 1 insertion(+) + +commit 0d425e1eeaea97bf5e4fc9ce40e549332bc0cea1 +Author: Behdad Esfahbod +Date: Fri Jul 5 13:18:05 2019 -0700 + + [ot-font] Optimize rounding + + Part of https://github.com/harfbuzz/harfbuzz/issues/1801 + + The assumption that compiler optimizes "upem/2" to a shift only + works if upem is unsigned... Anyway, spoon-feed the compiler. + + src/hb-font.hh | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 144326e215671a42fb3ac9f00ddef779ba354345 +Author: Simon Sapin +Date: Fri Jul 5 19:05:11 2019 +0200 + + Clusters are reversed based on the direction, not script + + Fixes https://github.com/harfbuzz/harfbuzz/issues/1818 + + docs/usermanual-clusters.xml | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit cf1a782a5ca82a880906cae3d4cb76b10ec2aad2 +Author: Simon Sapin +Date: Thu Jul 4 21:06:59 2019 +0200 + + Docs: fix a typo in function name + + docs/usermanual-fonts-and-faces.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ffa736f151f27adb76fb0bf91e18e1ec5cb8fe8d +Author: Simon Sapin +Date: Thu Jul 4 23:05:50 2019 +0200 + + hb_set_previous_range docs: fix presumed copy/paste error + + src/hb-set.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 641f33738089ef7ccbedce09886309edcd2e1718 +Author: Simon Sapin +Date: Thu Jul 4 23:03:45 2019 +0200 + + Docs typo fix: slower → lower + + src/hb-set.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9fea6b4dd41bfe2b85f788523162658a7ab9bd49 +Author: Ebrahim Byagowi +Date: Fri Jul 5 18:46:41 2019 +0430 + + [amalgam] Use it in cmake port and fix conflicts (#1812) + + .circleci/config.yml | 8 ++--- + CMakeLists.txt | 74 ++++-------------------------------------- + src/Makefile.am | 2 ++ + src/hb-cff-interp-common.hh | 6 ++-- + src/hb-cff-interp-cs-common.hh | 2 +- + src/hb-coretext.cc | 4 +-- + src/hb-directwrite.cc | 14 ++++---- + src/hb-ft.cc | 4 +-- + 8 files changed, 27 insertions(+), 87 deletions(-) + +commit b240d701fd98efa59a7f772ff39654fc95b8fc8f +Author: Behdad Esfahbod +Date: Wed Jul 3 12:17:57 2019 -0700 + + [amalgam] Include integration source files as well + + Just for those that are normally built into libharfbuzz itself. + + Part of https://github.com/harfbuzz/harfbuzz/issues/1809 + + src/Makefile.am | 12 ++++++++++-- + src/harfbuzz.cc | 6 ++++++ + 2 files changed, 16 insertions(+), 2 deletions(-) + +commit d51524204528b36907ab0f48bf2a48ec124c93d9 +Author: Behdad Esfahbod +Date: Wed Jul 3 12:10:03 2019 -0700 + + [amalgam] Rename hb.cc to harfbuzz.cc + + Part of https://github.com/harfbuzz/harfbuzz/issues/1809 + + src/Makefile.am | 8 ++++---- + src/{hb.cc => harfbuzz.cc} | 0 + 2 files changed, 4 insertions(+), 4 deletions(-) + +commit 4cb180d227c1adc32e921c241a93cd1f50a98d33 +Author: Behdad Esfahbod +Date: Tue Jul 2 19:44:18 2019 -0700 + + Revert "Use constexpr to replace passthru_ bools" + + This reverts commit c4aa10ebc8dc28b1f9c90af2ca2092a7535f8395. + + Broke several compilers... Sigh. The version without constexpr + didn't fully optimize out the unreachable code on clang. + So, revert it is... + + src/hb-algs.hh | 8 ++++++++ + src/hb-set.hh | 18 ++++++++---------- + 2 files changed, 16 insertions(+), 10 deletions(-) + +commit c4aa10ebc8dc28b1f9c90af2ca2092a7535f8395 +Author: Behdad Esfahbod +Date: Tue Jul 2 19:15:03 2019 -0700 + + Use constexpr to replace passthru_ bools + + src/hb-algs.hh | 8 -------- + src/hb-set.hh | 18 ++++++++++-------- + 2 files changed, 10 insertions(+), 16 deletions(-) + +commit 2e48fd077954410f59156b3100c16bf56a507948 +Author: Behdad Esfahbod +Date: Tue Jul 2 17:55:58 2019 -0700 + + Sprinkle constexpr around + + Being conservative. Also not sure it makes any real difference + in our codebase. + + src/hb-algs.hh | 48 ++++++++++++++++++++++++------------------------ + src/hb-meta.hh | 18 +++++++++--------- + 2 files changed, 33 insertions(+), 33 deletions(-) + +commit df4448064e370a410404708a15ce819daf1d9386 +Author: Behdad Esfahbod +Date: Tue Jul 2 17:11:09 2019 -0700 + + Remove unused 'inline' specifier + + src/hb-ot-map.hh | 4 ++-- + src/hb-shape-plan.hh | 18 +++++++++--------- + 2 files changed, 11 insertions(+), 11 deletions(-) + +commit 04a4957040380bba58880ff51d529c5cccf1d2c7 +Author: Behdad Esfahbod +Date: Tue Jul 2 16:19:18 2019 -0700 + + [amalgam] Add hb.cc to git + + Part of https://github.com/harfbuzz/harfbuzz/issues/1809 + + src/Makefile.am | 1 + + src/hb.cc | 44 ++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 45 insertions(+) + +commit 62e60322cb9e18b3ee75f1b4a2a6d3069f587407 +Author: Behdad Esfahbod +Date: Tue Jul 2 16:07:03 2019 -0700 + + Minor + + src/hb-unicode.cc | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +commit ceb4c212dc91a277f646c4a5354e4362f548a9f6 +Author: Behdad Esfahbod +Date: Tue Jul 2 16:02:13 2019 -0700 + + [amalgam] Fix UCD issue + + This actually makes it build now! + + Part https://github.com/harfbuzz/harfbuzz/issues/1809 + + Keeping open to add tests, CI, etc. + + src/hb-ucd.cc | 5 +---- + src/hb-unicode.cc | 2 -- + src/hb-unicode.hh | 3 +++ + 3 files changed, 4 insertions(+), 6 deletions(-) + +commit 7ca54811f471a28163de6b3c561990c85aa39880 +Author: Behdad Esfahbod +Date: Tue Jul 2 16:00:58 2019 -0700 + + [amalgam] Fix CFF + + Part of https://github.com/harfbuzz/harfbuzz/issues/1809 + + src/hb-ot-cff1-table.cc | 18 +++++++++--------- + src/hb-ot-cff2-table.cc | 16 ++++++++-------- + 2 files changed, 17 insertions(+), 17 deletions(-) + +commit 3724f13ba0292055197efdbfcacfe3d7b067175c +Author: Behdad Esfahbod +Date: Tue Jul 2 15:23:00 2019 -0700 + + [amalgam] Finish fixing Indic-like shapers + + Part of https://github.com/harfbuzz/harfbuzz/issues/1809 + + src/hb-ot-shape-complex-indic.cc | 34 +++++++++++++++++----------------- + src/hb-ot-shape-complex-indic.hh | 9 ++++++++- + src/hb-ot-shape-complex-khmer.cc | 18 +++++++++--------- + src/hb-ot-shape-complex-khmer.hh | 17 ++++++++--------- + src/hb-ot-shape-complex-myanmar.cc | 8 ++++---- + src/hb-ot-shape-complex-myanmar.hh | 16 ++++++++-------- + src/hb-ot-shape-complex-use.cc | 14 +++++++------- + 7 files changed, 61 insertions(+), 55 deletions(-) + +commit eb37bc9d93b3abebee24390708940510fe37477a +Author: Behdad Esfahbod +Date: Tue Jul 2 15:19:39 2019 -0700 + + [use] Remove Syriac features + + This was non-standard, and unused anyway. + + src/hb-ot-shape-complex-use.cc | 7 +------ + 1 file changed, 1 insertion(+), 6 deletions(-) + +commit dc480fc4717937d53cf38860a5c5d48211e8cbc8 +Author: Behdad Esfahbod +Date: Tue Jul 2 15:17:56 2019 -0700 + + [amalgam] More Indic-like issues + + Part of https://github.com/harfbuzz/harfbuzz/issues/1809 + + src/hb-ot-shape-complex-indic.cc | 76 +++++++++++++++++++++------------------- + src/hb-ot-shape-complex-khmer.cc | 36 ++++++++++--------- + src/hb-ot-shape-complex-use.cc | 32 ++++++++--------- + 3 files changed, 74 insertions(+), 70 deletions(-) + +commit d8b5353e07650cf243ba182dbf52e7f198719762 +Author: Behdad Esfahbod +Date: Tue Jul 2 15:09:26 2019 -0700 + + [amalgam] More + + Part of https://github.com/harfbuzz/harfbuzz/issues/1809 + + src/hb-ot-shape-complex-myanmar.cc | 28 ++++++++++++++-------------- + src/hb-ot-shape-complex-use.cc | 28 ++++++++++++++-------------- + 2 files changed, 28 insertions(+), 28 deletions(-) + +commit d115a9e022c0b687fb402cfd2b90d516beded5c0 +Author: Behdad Esfahbod +Date: Tue Jul 2 14:42:45 2019 -0700 + + [amalgam] Fix most duplicate-id instances in Indic-like shapers + + Part of https://github.com/harfbuzz/harfbuzz/issues/1809 + + src/hb-ot-layout.hh | 22 +++++ + src/hb-ot-shape-complex-indic-machine.hh | 6 +- + src/hb-ot-shape-complex-indic-machine.rl | 6 +- + src/hb-ot-shape-complex-indic.cc | 130 +++++++++---------------- + src/hb-ot-shape-complex-indic.hh | 26 +++++ + src/hb-ot-shape-complex-khmer-machine.hh | 6 +- + src/hb-ot-shape-complex-khmer-machine.rl | 6 +- + src/hb-ot-shape-complex-khmer.cc | 97 ++++++------------- + src/hb-ot-shape-complex-myanmar-machine.hh | 4 +- + src/hb-ot-shape-complex-myanmar-machine.rl | 4 +- + src/hb-ot-shape-complex-myanmar.cc | 69 ++++++-------- + src/hb-ot-shape-complex-use-machine.hh | 4 +- + src/hb-ot-shape-complex-use-machine.rl | 4 +- + src/hb-ot-shape-complex-use.cc | 148 ++++++++++++----------------- + 14 files changed, 230 insertions(+), 302 deletions(-) + +commit c073233f45da6ad8131dd38cb43b125f48c17432 +Author: Behdad Esfahbod +Date: Tue Jul 2 14:26:45 2019 -0700 + + Add make rule to build hb.cc + + Part of https://github.com/harfbuzz/harfbuzz/issues/1809 + + src/Makefile.am | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit f1d20d9b4dcbeead3757650b9286393918b4be8a +Author: Behdad Esfahbod +Date: Tue Jul 2 14:18:38 2019 -0700 + + Add ucd-table make target + + src/Makefile.am | 23 +++++++++++++++-------- + src/gen-ucd-table.py | 8 +++++--- + 2 files changed, 20 insertions(+), 11 deletions(-) + +commit 634390ecaf600176245e3354edd8dfdcb7f64cc5 +Author: blueshade7 +Date: Mon Jul 1 18:52:57 2019 -0700 + + added VariationStore serializer to be used by HVAR/VVAR subsetters + + src/hb-ot-layout-common.hh | 165 ++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 163 insertions(+), 2 deletions(-) + +commit 5763a92749386e134f2b4073531c10e9586d1d19 +Merge: 6f35cf7a 6bcbe495 +Author: Michiharu Ariza +Date: Mon Jul 1 15:17:19 2019 -0700 + + Merge branch 'master' into var-subset + +commit 040b261deeed8924edcb087e27a61392d1f85023 +Author: Michiharu Ariza +Date: Sun Jun 30 16:13:07 2019 -0700 + + add bimap test along with bug fix/tweaks + + src/Makefile.am | 6 ++++- + src/hb-bimap.hh | 4 +++ + src/test-bimap.cc | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 85 insertions(+), 1 deletion(-) + +commit 9c93f5cc2de5c60d5464a65890fc7d8c25aa9702 +Merge: ad341d5f 4ab2d1d6 +Author: Ebrahim Byagowi +Date: Mon Jul 1 20:08:22 2019 +0430 + + Merge pull request #1806 from carlo-bramini/master + + Make harfbuzz working on all existing versions of Windows + +commit 4ab2d1d6767568c45495be515e016805cce0c69a +Author: Ebrahim Byagowi +Date: Mon Jul 1 19:30:21 2019 +0430 + + [dwrite] Apply minor style improves + + src/hb-directwrite.cc | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +commit 5ebd265e66cbcd167469837dcf8647484310dfb5 +Author: Carlo Bramini <30959007+carlo-bramini@users.noreply.github.com> +Date: Mon Jul 1 16:06:43 2019 +0200 + + Fix error rised by GCC8+ + + src/hb-directwrite.cc | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit 693dacbb1c0bc805e3e6aedaca5a57f04eb6ec9c +Author: Carlo Bramini <30959007+carlo-bramini@users.noreply.github.com> +Date: Mon Jul 1 13:31:26 2019 +0200 + + Use lower case file name with #include + + I tried to cross compile harfbuzz for Windows and an error was generated because `DWrite_1.h` was not found. + This happened because the filesystem is case sensitive and for this reason that include file was not found. + The right name of the file to be used is `dwrite_1.h`, with all letters not capitalized: + https://docs.microsoft.com/en-us/windows/desktop/api/dwrite_1/ + I also verified in the installation of VS2017 with Windows Kit v10 and in that place it was also lower case. + So, in my opinion it should be better to change this. + + src/hb-directwrite.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a4543d408b31376c38bab878b2f72d4323abc564 +Author: Carlo Bramini <30959007+carlo-bramini@users.noreply.github.com> +Date: Sun Jun 30 15:06:30 2019 +0200 + + Empty DIRECTWRITE_LIBS + + Not used anymore since DWRITE is loaded dynamically. + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 601b6825b05f67354b48dd3629b95e0d8bf68a14 +Author: Carlo Bramini <30959007+carlo-bramini@users.noreply.github.com> +Date: Sun Jun 30 15:03:44 2019 +0200 + + Dynamically load DWRITE + + Also checks if DWriteCreateFactory() has been executed successfully. + + src/hb-directwrite.cc | 41 +++++++++++++++++++++++++++++++++-------- + 1 file changed, 33 insertions(+), 8 deletions(-) + +commit ad341d5f1624f4e30b2d0eb2a171054a973053b5 +Author: Behdad Esfahbod +Date: Fri Jun 28 16:00:37 2019 -0700 + + [config] Fix CoreText build with NO_AAT + + src/hb-aat-layout.cc | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +commit 3f806673fbeacdbe1b31399394ccc26c773a794b +Author: Ebrahim Byagowi +Date: Sat Jun 29 00:00:00 2019 +0430 + + Apply some minor improves on CFFIndex + + src/hb-ot-cff-common.hh | 38 +++++++++++++------------------------- + 1 file changed, 13 insertions(+), 25 deletions(-) + +commit ddd29e5594ccc9d0281e6da7373a1f115f6f6f3a +Author: Ebrahim Byagowi +Date: Fri Jun 28 23:44:14 2019 +0430 + + minor, reuse StructAtOffset logic in StructAtOffsetOrNull + + src/hb-ot-cff-common.hh | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit 9db7ce73d7ac6566837cdd70d38c45f3aefd7769 +Author: Ebrahim Byagowi +Date: Fri Jun 28 23:11:52 2019 +0430 + + minor style improve in hb-cff-interp-common.hh + + src/hb-cff-interp-common.hh | 91 +++++++++++++++------------------------------ + 1 file changed, 30 insertions(+), 61 deletions(-) + +commit 9a7b7bd9fc5bde7796ffdd997ee65cb33cbf6b29 +Author: Ebrahim Byagowi +Date: Fri Jun 28 22:53:51 2019 +0430 + + style fix for pylint complain + + src/gen-emoji-table.py | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +commit 8d36ef50c8712be476572514d73b7bddf43e5951 +Author: Behdad Esfahbod +Date: Thu Jun 27 14:48:10 2019 -0700 + + [config] Add links + + CONFIG.md | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit f53590971c5326dd15f4296764bfd1255ec0506a +Author: Behdad Esfahbod +Date: Thu Jun 27 13:42:51 2019 -0700 + + [test] Make Unicode tests strict against internal UCD + + https://github.com/harfbuzz/harfbuzz/pull/1799 + + test/api/test-unicode.c | 30 ++++++++++++++++++++++-------- + 1 file changed, 22 insertions(+), 8 deletions(-) + +commit d42264f151a61a4a77e5d5712e535fc6e2daf338 +Author: David Corbett +Date: Wed Jun 26 21:10:11 2019 -0400 + + Test at least one character per Unicode version + + test/api/test-unicode.c | 142 ++++++++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 138 insertions(+), 4 deletions(-) + +commit 7185bd6ffb4dd8c0efebdab5b930e62c5695e3ab +Merge: cd65305b 8341c0b3 +Author: Ebrahim Byagowi +Date: Thu Jun 27 22:09:28 2019 +0430 + + Merge pull request #1800 from harfbuzz/harfbuzz/cffnull_fix2 + + [CFF] fix for Subrs null ptr access + +commit 8341c0b304ee3bb0b7d150bcfb42a8b9e6448687 +Author: Michiharu Ariza +Date: Thu Jun 27 08:43:31 2019 -0700 + + add test case file + + ...z-testcase-minimized-harfbuzz_fuzzer-5093685255077888 | Bin 0 -> 1160 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) + +commit 01832fd16b605971466fc3b174cb932787ef4bfb +Author: Michiharu Ariza +Date: Wed Jun 26 15:58:38 2019 -0700 + + alternate fix for https://crbug.com/971933 + + src/hb-cff-interp-cs-common.hh | 6 +++--- + src/hb-cff1-interp-cs.hh | 2 +- + src/hb-cff2-interp-cs.hh | 2 +- + 3 files changed, 5 insertions(+), 5 deletions(-) + +commit cd65305b059e7495f4f993d25cfda4d88781589b +Author: Behdad Esfahbod +Date: Wed Jun 26 14:57:48 2019 -0700 + + [config] Don't disable emoji sequences in HB_TINY + + It makes sense to disable this code these if editing is not needed. + However, this is also necessary to correctly display emoji sequences + in right-to-left direction. For that reason, don't auto-disable it. + + src/hb-config.hh | 1 - + src/hb-ot-shape.cc | 2 +- + src/hb-unicode.cc | 2 +- + 3 files changed, 2 insertions(+), 3 deletions(-) + +commit 7298716a3cfbdabedd15960404623317a64db3ae +Author: Behdad Esfahbod +Date: Wed Jun 26 14:51:17 2019 -0700 + + [config] Compile out modified combining-class if HB_NO_OT_SHAPE + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-unicode.cc | 2 ++ + 1 file changed, 2 insertions(+) + +commit 1cdd0fa60d9a6aaddc20e646d294d642e2db9be4 +Author: Behdad Esfahbod +Date: Wed Jun 26 14:49:15 2019 -0700 + + [emoji] Port generator to packtab + + src/gen-emoji-table.py | 18 ++++-- + src/hb-unicode-emoji-table.hh | 126 ++++++++++++++++-------------------------- + src/hb-unicode.cc | 5 +- + 3 files changed, 60 insertions(+), 89 deletions(-) + +commit 5130c90ac0173c542b550049c93738ab5de84bb9 +Author: Behdad Esfahbod +Date: Wed Jun 26 14:29:39 2019 -0700 + + [config] Add HB_NO_EMOJI + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-config.hh | 1 + + src/hb-ot-shape.cc | 2 ++ + src/hb-unicode.cc | 2 ++ + 3 files changed, 5 insertions(+) + +commit 9d5b5348c7ca1e39faa9e197fdebfb8f5d3aeece +Author: Behdad Esfahbod +Date: Wed Jun 26 13:58:40 2019 -0700 + + [config] Add HB_NO_SHAPER + + Don't know who would want when why. But makes sense to have. + + src/hb-shaper-list.hh | 6 ++++++ + src/hb-shaper.cc | 2 ++ + 2 files changed, 8 insertions(+) + +commit 8fe15485cbc2f56adb29d4d5f0c3957869bd0e1a +Author: Behdad Esfahbod +Date: Wed Jun 26 13:49:42 2019 -0700 + + [config] Add HB_NO_OT_TAG + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-config.hh | 1 + + src/hb-ot-layout.cc | 4 ++++ + src/hb-ot-tag.cc | 5 +++++ + src/hb-uniscribe.cc | 4 ++++ + 4 files changed, 14 insertions(+) + +commit 7dcf8e126ecf52c67f59745e04d21df68b1a6992 +Author: Behdad Esfahbod +Date: Wed Jun 26 13:44:10 2019 -0700 + + [config] Fix build with HB_NO_OT_LAYOUT + + src/hb-ot-face-table-list.hh | 2 ++ + src/hb-ot-layout-gpos-table.hh | 3 ++- + src/hb-ot-layout-gsub-table.hh | 5 +++-- + src/hb-ot-layout-gsubgpos.hh | 8 +++++++- + 4 files changed, 14 insertions(+), 4 deletions(-) + +commit 2804790bceb9398cc9b668ca63f5aa9ffe29beeb +Author: Behdad Esfahbod +Date: Wed Jun 26 13:38:14 2019 -0700 + + [config] Add dependency + + src/hb-ot-shape.cc | 4 ++++ + 1 file changed, 4 insertions(+) + +commit b0fd16eec62dea29d984bab879064ae9d91afdfc +Author: Behdad Esfahbod +Date: Wed Jun 26 13:31:51 2019 -0700 + + [config] Add dependency + + src/hb-config.hh | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 12092a46d8826eec5dcf69e7817921380e4bc507 +Author: Behdad Esfahbod +Date: Wed Jun 26 13:31:01 2019 -0700 + + [config] Rename HB_NO_SHAPE_AAT to HB_NO_AAT_SHAPE + + src/hb-aat-map.cc | 2 +- + src/hb-config.hh | 2 +- + src/hb-ot-kern-table.hh | 14 +++++++------- + src/hb-ot-layout.cc | 2 +- + src/hb-ot-shape.cc | 36 ++++++++++++++++++------------------ + src/hb-ot-shape.hh | 8 ++++---- + 6 files changed, 32 insertions(+), 32 deletions(-) + +commit bb4bbe617d3878ca7e5e359ada493c68ec7f0a90 +Author: Behdad Esfahbod +Date: Wed Jun 26 13:29:58 2019 -0700 + + [config] Add HB_NO_OT_LAYOUT + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-config.hh | 1 + + src/hb-ot-layout.cc | 7 +++++++ + src/hb-ot-map.cc | 7 +++++++ + 3 files changed, 15 insertions(+) + +commit ab40a2feecf53d2ef787b7785132bf57e5bdcff9 +Author: Behdad Esfahbod +Date: Wed Jun 26 13:25:02 2019 -0700 + + [config] Enable HB_NO_OT_FONT in HB_NO_OT + + CONFIG.md | 4 ++-- + src/hb-config.hh | 1 + + 2 files changed, 3 insertions(+), 2 deletions(-) + +commit 7aad53657eb23264f658711a71da3e50f2264455 +Author: Behdad Esfahbod +Date: Wed Jun 26 13:21:03 2019 -0700 + + [config] Add HB_NO_OT_SHAPE / HB_NO_OT + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + CONFIG.md | 14 ++++++++++++++ + src/gen-indic-table.py | 6 ++++++ + src/gen-use-table.py | 6 ++++++ + src/gen-vowel-constraints.py | 7 +++++++ + src/hb-config.hh | 4 ++++ + src/hb-ot-shape-complex-arabic.cc | 6 ++++++ + src/hb-ot-shape-complex-default.cc | 7 +++++++ + src/hb-ot-shape-complex-hangul.cc | 7 +++++++ + src/hb-ot-shape-complex-hebrew.cc | 7 +++++++ + src/hb-ot-shape-complex-indic-table.cc | 6 ++++++ + src/hb-ot-shape-complex-indic.cc | 7 +++++++ + src/hb-ot-shape-complex-khmer.cc | 7 +++++++ + src/hb-ot-shape-complex-myanmar.cc | 7 +++++++ + src/hb-ot-shape-complex-thai.cc | 7 +++++++ + src/hb-ot-shape-complex-use-table.cc | 6 ++++++ + src/hb-ot-shape-complex-use.cc | 7 +++++++ + src/hb-ot-shape-complex-vowel-constraints.cc | 6 ++++++ + src/hb-ot-shape-fallback.cc | 7 +++++++ + src/hb-ot-shape-normalize.cc | 7 +++++++ + src/hb-ot-shape.cc | 7 +++++++ + src/hb-shape-plan.cc | 10 ++++++++++ + src/hb-shape-plan.hh | 4 ++++ + src/hb-shaper-list.hh | 2 ++ + 23 files changed, 154 insertions(+) + +commit cee9f6e044278b590694f4dff6f22eaad9371385 +Author: Behdad Esfahbod +Date: Wed Jun 26 13:01:58 2019 -0700 + + Fail compile if no shapers enabled + + src/hb-shaper.cc | 1 + + 1 file changed, 1 insertion(+) + +commit 8786820a5a7406be95bc4a6b6e2aca736126420c +Author: Behdad Esfahbod +Date: Wed Jun 26 12:53:57 2019 -0700 + + [src] Add make targets "tiny" and "tinyz" + + src/Makefile.am | 4 ++++ + 1 file changed, 4 insertions(+) + +commit b14e413fae8f14b75c5956e9b38e413c878ded0c +Author: Behdad Esfahbod +Date: Wed Jun 26 10:44:10 2019 -0700 + + 2.5.3 + + NEWS | 7 +++++++ + configure.ac | 2 +- + src/hb-version.h | 4 ++-- + 3 files changed, 10 insertions(+), 3 deletions(-) + +commit 3bfa878c98cceeaae074d81c14329e358bea8912 +Author: Behdad Esfahbod +Date: Tue Jun 25 19:07:07 2019 -0700 + + [gen-ucd] Protect against accidents like previous commit + + https://github.com/harfbuzz/harfbuzz/pull/1796 + + src/gen-ucd-table.py | 24 +++++++++++------------- + 1 file changed, 11 insertions(+), 13 deletions(-) + +commit f4ea1a9afb4849e7cfb7a5eb9e81e4f656c3f89e +Author: David Corbett +Date: Tue Jun 25 21:08:14 2019 -0400 + + [ucd] Include scripts added in Unicode 10 or later + + src/gen-ucd-table.py | 2 +- + src/hb-ucd-table.hh | 970 +++++++++++++++++++++++++++------------------------ + 2 files changed, 511 insertions(+), 461 deletions(-) + +commit 10bd6b8d913a57260b35c1ef830db37c06eebd18 +Author: Michiharu Ariza +Date: Thu Jun 20 16:22:08 2019 -0700 + + minor + + src/hb-bimap.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f3ee2bd020f8ca313fae783cc49a374f1377e877 +Author: Michiharu Ariza +Date: Thu Jun 20 14:33:09 2019 -0700 + + add ops & methods to hb_bimap_t making it more like hb_map_t + moved has () to hb_bimap_t from hb_inc_bimap_t + moved identity () to hb_inc_bimap_t + removed forward() + + src/hb-bimap.hh | 38 ++++++++++++++++++++++++-------------- + src/hb-ot-cff-common.hh | 2 +- + src/hb-ot-cff1-table.hh | 4 ++-- + src/hb-subset-cff-common.cc | 2 +- + src/hb-subset-cff-common.hh | 4 ++-- + src/hb-subset-cff1.cc | 4 ++-- + src/hb-subset-cff2.cc | 2 +- + 7 files changed, 33 insertions(+), 23 deletions(-) + +commit 094966959f96d9a41fb612fd0b870f5ae8f5a954 +Author: Michiharu Ariza +Date: Mon Jun 17 22:12:40 2019 -0700 + + add hb_bimap_t, subclass hb_inc_bimap_t replacing CFF::remap_t + + src/Makefile.sources | 1 + + src/hb-bimap.hh | 129 ++++++++++++++++++++++++++++++++++++++++++++ + src/hb-ot-cff-common.hh | 64 +++------------------- + src/hb-ot-cff1-table.hh | 16 +++--- + src/hb-subset-cff-common.cc | 12 ++--- + src/hb-subset-cff-common.hh | 40 ++++++-------- + src/hb-subset-cff1.cc | 26 ++++----- + src/hb-subset-cff2.cc | 31 +++++------ + 8 files changed, 191 insertions(+), 128 deletions(-) + +commit 0660175dc82d82bbb38c45b9cb53190e06f55750 +Author: David Corbett +Date: Tue Jun 25 10:14:03 2019 -0400 + + Categorize U+1133B for use in Tamil + + src/hb-ot-shape-complex-indic.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit fb0df17b2701c1c5623198440aa88a676985bd4f +Author: David Corbett +Date: Mon Jun 24 21:54:26 2019 -0400 + + Correct "nonunihan" to "nounihan" + + src/gen-ucd-table.py | 4 ++-- + src/hb-ucd-table.hh | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit bb4cdf8e0bcc98a036c22cfd44242502b107fb32 +Author: Ebrahim Byagowi +Date: Tue Jun 25 01:42:42 2019 +0430 + + Replace create_from_file with empty blob if HB_NO_OPEN is defined + + src/main.cc | 4 ++++ + src/test-buffer-serialize.cc | 4 ++++ + src/test-gpos-size-params.cc | 4 ++++ + src/test-gsub-would-substitute.cc | 4 ++++ + src/test-ot-color.cc | 4 ++++ + src/test-ot-name.cc | 4 ++++ + src/test.cc | 4 ++++ + 7 files changed, 28 insertions(+) + +commit ccf1448238c91da3cba8370ee527229013f6d362 +Author: GaryQian +Date: Mon Jun 24 12:57:13 2019 -0700 + + Cast long->size_t to ensure comparison of similar types + + src/hb-common.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ec8e635e0c1a8e5c631a90820be68cf07c52c1a0 +Author: Behdad Esfahbod +Date: Mon Jun 24 12:37:23 2019 -0700 + + [ucd] Use custom encoding to shrink composition data + + Saves another 2.5kb. + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/gen-ucd-table.py | 22 +- + src/hb-algs.hh | 5 + + src/hb-ucd-table.hh | 963 ++++++++++++++++++++++++++++++++++----------------- + src/hb-ucd.cc | 49 ++- + 4 files changed, 704 insertions(+), 335 deletions(-) + +commit 9c933acaa443889bc2484dbe3ef3e990b299cd52 +Author: Behdad Esfahbod +Date: Sun Jun 23 17:14:27 2019 -0700 + + [ucd] Save a few more bytes + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/gen-ucd-table.py | 11 ++++++----- + src/hb-ucd-table.hh | 34 +++++++++++++++++----------------- + src/hb-ucd.cc | 12 ++++++------ + 3 files changed, 29 insertions(+), 28 deletions(-) + +commit 9bd8d66c2ba97aec57597ff85e059a7618260a1c +Author: Qunxin Liu +Date: Wed Jun 12 11:02:48 2019 -0700 + + [subset] VORG table to use _subset2 method and new iterator frameworks + + src/hb-ot-vorg-table.hh | 128 ++++++++++++++---------------------------------- + src/hb-subset.cc | 2 +- + 2 files changed, 39 insertions(+), 91 deletions(-) + +commit 8062979990d348671b465c877e4dd672e1337665 +Merge: ad97ec95 c2d7dfc6 +Author: Ebrahim Byagowi +Date: Sun Jun 23 11:19:48 2019 +0430 + + Merge pull request #1788 from jameshilliard/configure-svg + + Add missing cairo-svg dependency to test-ot-color + +commit c2d7dfc68ffcb389c9f73b5ef94da7b270bdcf9e +Author: James Hilliard +Date: Sat Jun 22 19:38:48 2019 -0600 + + Add missing cairo-svg dependency to test-ot-color + + src/test-ot-color.cc | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit ad97ec95019b1e5170d00953d4dfe392cfb4abb0 +Author: Behdad Esfahbod +Date: Fri Jun 21 00:44:29 2019 -0700 + + [config/ucd] Add HB_NO_UNICODE_UNASSIGNED and activate in HB_TINY + + Saves another 12kb: + + $ python ./gen-ucd-table.py ucd.nounihan.grouped.zip > hb-ucd-table.hh && make -j5 CPPFLAGS='-Os -DHB_TINY' -C ~/hb/build/src/ && size ~/hb/build/src/.libs/libharfbuzz_la-hb-ucd.o + INFO: Loading UCDXML... + INFO: Preparing data tables... + INFO: Generating output... + INFO: Compression=1: + INFO: Dataset=gc FullCost=18612 + INFO: Dataset=ccc FullCost=3550 + INFO: Dataset=bmg FullCost=1548 + INFO: Dataset=sc FullCost=17765 + INFO: Dataset=dm FullCost=13325 + INFO: Compression=3: + INFO: Dataset=gc FullCost=10726 + INFO: Dataset=ccc FullCost=2389 + INFO: Dataset=bmg FullCost=1052 + INFO: Dataset=sc FullCost=13669 + INFO: Dataset=dm FullCost=7780 + INFO: Compression=5: + INFO: Dataset=gc FullCost=8274 + INFO: Dataset=ccc FullCost=2055 + INFO: Dataset=bmg FullCost=908 + INFO: Dataset=sc FullCost=4073 + INFO: Dataset=dm FullCost=7780 + INFO: Done. + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + CONFIG.md | 3 +- + src/gen-ucd-table.py | 27 +- + src/hb-config.hh | 1 + + src/hb-ucd-table.hh | 1161 +++++++++++++++++++++++++++++++++++++++++++++++++- + 4 files changed, 1185 insertions(+), 7 deletions(-) + +commit ccea7fa119d139b6a3a429b3b81fac8448f3bab1 +Author: Behdad Esfahbod +Date: Fri Jun 21 00:42:06 2019 -0700 + + [config] Make test build under HB_TINY + + src/test-gpos-size-params.cc | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +commit 12cec6c12ec1856e483097e702126214dd25a34a +Author: Ebrahim Byagowi +Date: Fri Jun 21 22:39:42 2019 +0430 + + Don't define hb_blob_create_from_file if HB_NO_OPEN is defined + + src/hb-blob.cc | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +commit 7f3b409e85897ff267f1b6a5ce1b5cdafbfe7afe +Author: Behdad Esfahbod +Date: Thu Jun 20 14:24:43 2019 -0700 + + Fix build with -O0 + + message_impl was not defined. That causes trouble if compiler didn't + optimize the unreachable call out... + + src/hb-buffer.cc | 1 - + src/hb-buffer.hh | 4 ++++ + 2 files changed, 4 insertions(+), 1 deletion(-) + +commit 6b44bf85382146b355a5a3cbbfde48166721ce52 +Author: Behdad Esfahbod +Date: Thu Jun 20 11:57:19 2019 -0700 + + 2.5.2 + + NEWS | 12 ++++++++++++ + configure.ac | 2 +- + src/hb-version.h | 4 ++-- + 3 files changed, 15 insertions(+), 3 deletions(-) + +commit e9f7b338ef599b9cbffa125fe594a9939b8517cb +Author: Behdad Esfahbod +Date: Thu Jun 20 11:48:44 2019 -0700 + + [config] Adjust description of HB_LEAN + + https://github.com/harfbuzz/harfbuzz/commit/d84932ba50482b3b47e393714eb77b19173d1f14 + + CONFIG.md | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit fce3bf8127321bb53b14eb8a5528a2347cd9be8a +Author: Behdad Esfahbod +Date: Wed Jun 19 20:34:29 2019 -0700 + + [config] Add HB_NO_LAYOUT_COLLECT_GLYPHS + + Part of + + src/hb-config.hh | 1 + + src/hb-ot-layout.cc | 2 ++ + 2 files changed, 3 insertions(+) + +commit 6c725c7799bf4870fb8b4f896a537a2c0f7a1ccc +Author: Behdad Esfahbod +Date: Wed Jun 19 20:12:25 2019 -0700 + + [config] Add HB_NO_LAYOUT_FEATURE_PARAMS + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-config.hh | 1 + + src/hb-ot-layout-common.hh | 7 +++++-- + src/hb-ot-layout.cc | 6 ++---- + 3 files changed, 8 insertions(+), 6 deletions(-) + +commit 27de7c44fe80e69c527578c99c26280ba9f26c15 +Author: Behdad Esfahbod +Date: Wed Jun 19 20:07:02 2019 -0700 + + [config] Add HB_NO_FACE_COLLECT_UNICODES + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-config.hh | 1 + + src/hb-face.cc | 5 ++--- + src/hb-ot-face-table-list.hh | 2 ++ + 3 files changed, 5 insertions(+), 3 deletions(-) + +commit 3caa32d737e7c2b4fe6ccd10950760998524f573 +Author: Behdad Esfahbod +Date: Wed Jun 19 19:50:54 2019 -0700 + + [config] Add HB_NO_CMAP_LEGACY_SUBTABLES + + Part of https://vimeo.com/331852453/06eec89c65 + + src/hb-config.hh | 1 + + src/hb-ot-cmap-table.hh | 16 ++++++++++++---- + 2 files changed, 13 insertions(+), 4 deletions(-) + +commit 8e3cde67dfa4aa17c0f1156b4a4acd0c95bdbe6f +Author: Behdad Esfahbod +Date: Wed Jun 19 19:58:24 2019 -0700 + + Fix MSVC build + + MSVC warning: + + c:\projects\harfbuzz\src\hb-ot-layout-gsubgpos.hh(2732): error C2121: '#': invalid character: possibly the result of a macro expansion [C:\projects\harfbuzz\build\harfbuzz.vcxproj] + + Clang warning for it: + + ./hb-ot-layout-gsubgpos.hh:2729:2: error: embedding a directive within macro arguments has undefined behavior [-Werror,-Wembedded-directive] + + src/hb-ot-layout-gsubgpos.hh | 18 +++++++++++------- + src/hb.hh | 1 + + 2 files changed, 12 insertions(+), 7 deletions(-) + +commit c8f529a07eca06acf2216935921377e7cad8436f +Author: Behdad Esfahbod +Date: Wed Jun 19 19:33:15 2019 -0700 + + [config] Add HB_NO_HINTING, enabled by HB_TINY + + Disables HintingDevice tables and Anchors addressing contour points. + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-config.hh | 3 ++- + src/hb-ot-layout-common.hh | 6 ++++++ + src/hb-ot-layout-gpos-table.hh | 7 +++++++ + 3 files changed, 15 insertions(+), 1 deletion(-) + +commit a849873124efea6577b4938b23501d9e4f4af2f4 +Author: Behdad Esfahbod +Date: Wed Jun 19 19:26:22 2019 -0700 + + [config] Add HB_NO_VAR to disable variations support, enabled by HB_TINY + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-config.hh | 1 + + src/hb-font.cc | 3 ++- + src/hb-ot-face-table-list.hh | 2 ++ + src/hb-ot-layout-common.hh | 34 ++++++++++++++++++++++++++++------ + src/hb-ot-layout-gsubgpos.hh | 18 +++++++++++++++--- + src/hb-ot-var.cc | 7 ++++++- + src/hb-subset-plan.cc | 2 ++ + 7 files changed, 56 insertions(+), 11 deletions(-) + +commit 230adf2c417bbb6b5f367eb857dd6f98bea3ef26 +Author: Behdad Esfahbod +Date: Wed Jun 19 18:49:52 2019 -0700 + + [config] Add HB_NO_OT_FONT_GLYPH_NAMES + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-config.hh | 1 + + src/hb-ot-face-table-list.hh | 4 +++- + src/hb-ot-font.cc | 5 ++++- + 3 files changed, 8 insertions(+), 2 deletions(-) + +commit b0debc32f6cedfa76a4851aa391f88ed1860955d +Author: Behdad Esfahbod +Date: Wed Jun 19 18:42:39 2019 -0700 + + [subset] Simplify collect_name_ids + + src/hb-subset-plan.cc | 19 ++----------------- + 1 file changed, 2 insertions(+), 17 deletions(-) + +commit a5897463d4d0b83cb1bfe4ae1477dac4e3851252 +Author: Behdad Esfahbod +Date: Wed Jun 19 18:36:35 2019 -0700 + + [config] Add HB_NO_STAT + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-config.hh | 1 + + src/hb-ot-face-table-list.hh | 2 ++ + src/hb-subset-plan.cc | 2 ++ + 3 files changed, 5 insertions(+) + +commit ffc2b8d56e5d35b4dc19499c830d8fc4b643213a +Author: Behdad Esfahbod +Date: Wed Jun 19 18:33:29 2019 -0700 + + [config] Don't include name table in face if HB_NO_NAME + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-ot-face-table-list.hh | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 1432df102ebf206592f92677f48bb950871675b3 +Author: Behdad Esfahbod +Date: Wed Jun 19 18:32:40 2019 -0700 + + [config] Disable hb-ot-font code if HB_NO_OT_FONT + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-ot-font.cc | 5 +++++ + 1 file changed, 5 insertions(+) + +commit b1a2384a5244ea3ea63ca94eb095c4add2cd451d +Author: Behdad Esfahbod +Date: Wed Jun 19 17:34:12 2019 -0700 + + [ucd] Print out table sizes + + src/gen-ucd-table.py | 27 +++++++++++++++++++-------- + src/hb-ucd-table.hh | 1 - + 2 files changed, 19 insertions(+), 9 deletions(-) + +commit f4de0c775408e34474a688361fa319251e1a9c18 +Author: Behdad Esfahbod +Date: Wed Jun 19 17:08:26 2019 -0700 + + [config] Disable AAT map + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-aat-map.cc | 15 +++++++-------- + src/hb-ot-shape.cc | 6 ++++++ + 2 files changed, 13 insertions(+), 8 deletions(-) + +commit d8bf6723a1176ca26e97e8015044c8829ec77c36 +Author: Behdad Esfahbod +Date: Wed Jun 19 17:04:16 2019 -0700 + + [config] Disable more legacy kerning + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-ot-shape.cc | 4 +++- + src/hb-ot-shape.hh | 8 ++++++++ + 2 files changed, 11 insertions(+), 1 deletion(-) + +commit 43d7048d59b1a0af62b80bd914805bdec74a29d2 +Author: Behdad Esfahbod +Date: Wed Jun 19 17:02:32 2019 -0700 + + [config] More trak disabling + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-ot-shape.cc | 4 +++- + src/hb-ot-shape.hh | 8 ++++++++ + 2 files changed, 11 insertions(+), 1 deletion(-) + +commit d84932ba50482b3b47e393714eb77b19173d1f14 +Author: Behdad Esfahbod +Date: Wed Jun 19 16:57:48 2019 -0700 + + [config] add HB_NO_OT_SHAPE_FRACTIONS, enabled in HB_LEAN + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-config.hh | 1 + + src/hb-ot-shape.cc | 9 +++++++++ + src/hb-ot-shape.hh | 10 ++++++++++ + 3 files changed, 20 insertions(+) + +commit eaf4a7364c28663720a9da57bf4d576b6009e17d +Author: Behdad Esfahbod +Date: Wed Jun 19 16:51:13 2019 -0700 + + [config] Minor trak disable + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-ot-shape.cc | 2 ++ + 1 file changed, 2 insertions(+) + +commit 971330c0588307bcd73934e44c6343db55b1f5b6 +Author: Behdad Esfahbod +Date: Wed Jun 19 16:37:35 2019 -0700 + + [config] Add HB_NO_LANGUAGE_PRIVATE_SUBTAG + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-config.hh | 1 + + src/hb-ot-tag.cc | 4 ++++ + 2 files changed, 5 insertions(+) + +commit f642a5fa6c42b145574593a0e18815dc74d3c617 +Author: Behdad Esfahbod +Date: Wed Jun 19 16:36:09 2019 -0700 + + Restructure code + + src/hb-ot-tag.cc | 44 ++++++++++++++++++++------------------------ + 1 file changed, 20 insertions(+), 24 deletions(-) + +commit d2ff73b256599a655e4ddedbe1ca75abdf837d23 +Author: Behdad Esfahbod +Date: Wed Jun 19 16:28:08 2019 -0700 + + [config] Remove remaining AAT context bits if HB_NO_OT_KERN + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-aat-layout.cc | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 588697afd0ddf411e8201866ade1f593ccb61aab +Author: Behdad Esfahbod +Date: Wed Jun 19 16:24:51 2019 -0700 + + [config] Add HB_NO_OT_KERN, enabled by HB_MINI / HB_NO_LEGACY + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-config.hh | 1 + + src/hb-ot-face-table-list.hh | 6 +++++- + src/hb-ot-layout.cc | 4 ++-- + src/hb-ot-shape.cc | 16 ++++++++++++++-- + src/hb-ot-shape.hh | 4 ++++ + 5 files changed, 26 insertions(+), 5 deletions(-) + +commit 2e3e929d2b0fa6026c55eb92f91de0498fb22646 +Author: Behdad Esfahbod +Date: Wed Jun 19 15:50:13 2019 -0700 + + Fix build + + src/hb-ot-face-table-list.hh | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 631da9d816da381c5fd4b3cc640c41fda736a96f +Author: Behdad Esfahbod +Date: Wed Jun 19 15:36:14 2019 -0700 + + [config] Remove tables from hb_face_t for disabled features + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/Makefile.sources | 1 + + src/hb-ot-face-table-list.hh | 112 +++++++++++++++++++++++++++++++++++++++++++ + src/hb-ot-face.cc | 8 +--- + src/hb-ot-face.hh | 52 ++------------------ + src/hb-ot-layout.cc | 2 + + 5 files changed, 120 insertions(+), 55 deletions(-) + +commit e710888188ff3285a162c25c89d886d9535d9f02 +Author: Misty De Meo +Date: Tue Jun 18 15:20:38 2019 -0700 + + coretext: remove trailing macro from SCRATCH_RESTORE + + src/hb-coretext.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 10bac21bb5b25cf20c2198934e99e444625dfd97 +Author: Behdad Esfahbod +Date: Tue Jun 18 15:15:06 2019 -0700 + + [coretext/uniscribe/directwrite] Remove extra semicolons + + Fixes https://github.com/harfbuzz/harfbuzz/pull/1783 + + src/hb-coretext.cc | 2 +- + src/hb-directwrite.cc | 2 +- + src/hb-uniscribe.cc | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +commit f0b0fd4e78e94315c9d01b9232ebfb09bbfef556 +Author: Behdad Esfahbod +Date: Tue Jun 18 14:40:24 2019 -0700 + + Remove dead code + + src/hb-ot-layout.cc | 10 ++-------- + 1 file changed, 2 insertions(+), 8 deletions(-) + +commit d7e27cd65a085a76c85cddd93cea48ce4b7be03f +Author: Behdad Esfahbod +Date: Tue Jun 18 14:38:05 2019 -0700 + + [config] Don't use VORG table if HB_NO_OT_FONT_CFF + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-ot-font.cc | 2 ++ + 1 file changed, 2 insertions(+) + +commit 37f8ebff5f1973423c7e4ed9dea88881d0642b61 +Author: Behdad Esfahbod +Date: Tue Jun 18 14:33:49 2019 -0700 + + [config] Fixup for AAT ltag table access + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-aat-layout.hh | 8 -------- + src/hb-ot-name-table.hh | 2 +- + 2 files changed, 1 insertion(+), 9 deletions(-) + +commit f08066ce9a41469e2a7396f0accd61e1c02e5649 +Author: Behdad Esfahbod +Date: Tue Jun 18 14:29:27 2019 -0700 + + [config] One more morx disabling + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-ot-layout.cc | 3 +++ + 1 file changed, 3 insertions(+) + +commit 231d0257883ec9e8904afae1adfd73f3c225f177 +Author: Behdad Esfahbod +Date: Tue Jun 18 14:25:52 2019 -0700 + + [config] Don't compile AAT API if HB_NO_AAT + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-aat-layout.cc | 131 ++++++++++++++++----------------------------------- + src/hb-ot-shape.cc | 19 ++++++-- + 2 files changed, 56 insertions(+), 94 deletions(-) + +commit bf9424a9a198b99d49c005536a10f27387630064 +Author: Behdad Esfahbod +Date: Tue Jun 18 13:31:35 2019 -0700 + + [config] Don't compile unused layout API if HB_NO_LAYOUT_UNUSED + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-ot-layout.cc | 16 ++-------------- + 1 file changed, 2 insertions(+), 14 deletions(-) + +commit eb9798ef733da53e69966054b67752cd8937eb7b +Author: Behdad Esfahbod +Date: Tue Jun 18 13:29:55 2019 -0700 + + [config] Dont' compile buffer message API if HB_NO_BUFFER_MESSAGE + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-buffer.cc | 2 ++ + src/hb-buffer.hh | 5 ++++- + 2 files changed, 6 insertions(+), 1 deletion(-) + +commit be1c0ab2186a728eabdf6666632a9f759474f901 +Author: Behdad Esfahbod +Date: Tue Jun 18 13:26:03 2019 -0700 + + [config] Don't compile buffer serialize API if HB_NO_BUFFER_SERIALIZE + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-buffer-serialize.cc | 19 +++++++------------ + src/test-buffer-serialize.cc | 7 ++++++- + 2 files changed, 13 insertions(+), 13 deletions(-) + +commit bdbabd110cfdb4c59cf24bd500ce63073a5213e4 +Author: Behdad Esfahbod +Date: Tue Jun 18 13:21:25 2019 -0700 + + Minor header include cleanup + + src/hb-aat-layout.cc | 1 - + src/hb-ot-math.cc | 3 --- + src/hb-ot-name.cc | 1 - + src/hb-ot-var.cc | 4 ++-- + 4 files changed, 2 insertions(+), 7 deletions(-) + +commit 83de3a60ab7383cf3ee25c1f8c33a45a7778d003 +Author: Behdad Esfahbod +Date: Tue Jun 18 13:18:15 2019 -0700 + + [config] Don't compile color API if HB_NO_COLOR + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-ot-color.cc | 55 +++++++++------------------------------------------- + src/test-ot-color.cc | 9 ++++++++- + 2 files changed, 17 insertions(+), 47 deletions(-) + +commit 350f98ea47aaf0fe008065b92c8b6fe2bc519fa7 +Author: Behdad Esfahbod +Date: Tue Jun 18 13:11:41 2019 -0700 + + [config] Don't compile name table API if HB_NO_NAME + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-ot-name.cc | 25 +++++-------------------- + src/test-ot-name.cc | 5 ++++- + 2 files changed, 9 insertions(+), 21 deletions(-) + +commit da51a2cb0efae664d4ee83c6036f29a21621e993 +Author: Behdad Esfahbod +Date: Tue Jun 18 13:09:22 2019 -0700 + + [config] Don't compile math API if HB_NO_MATH + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-ot-math.cc | 47 +++++++---------------------------------------- + 1 file changed, 7 insertions(+), 40 deletions(-) + +commit 737436d3f8aacfd0bd586cd54d7034bae3afc4e1 +Author: Behdad Esfahbod +Date: Tue Jun 18 13:07:44 2019 -0700 + + Streamline HB_NO_CFF + + src/hb-ot-cff1-table.cc | 7 +++++-- + src/hb-ot-cff2-table.cc | 7 +++++-- + src/hb-subset-cff-common.cc | 7 +++++++ + src/hb-subset-cff1.cc | 7 +++++-- + src/hb-subset-cff2.cc | 7 +++++-- + 5 files changed, 27 insertions(+), 8 deletions(-) + +commit 60653a7adbbd8143d187b3edf33cb7a2dddadf74 +Author: Behdad Esfahbod +Date: Tue Jun 18 13:01:11 2019 -0700 + + Remove HB_VECTOR_SIZE + + It was cumbersome to get it to work reliably, for dubious performance + gain, mostly in the subsetter maybe... + + Life is easier without. It was disabled forever anyway. + + src/hb-algs.hh | 36 +++++++++--------------------------- + src/hb-null.hh | 4 ++-- + src/hb-static.cc | 4 ++-- + src/hb.hh | 32 -------------------------------- + 4 files changed, 13 insertions(+), 63 deletions(-) + +commit 24060d3aa77f1e1a18960cc61c3d1ac241875507 +Author: Behdad Esfahbod +Date: Tue Jun 18 12:50:42 2019 -0700 + + Add hb_bitwise_neg + + src/hb-algs.hh | 33 +++++++++++++++++++++------------ + 1 file changed, 21 insertions(+), 12 deletions(-) + +commit 7cf9169078f35299ec0633a7b212256acdd71661 +Author: Behdad Esfahbod +Date: Tue Jun 18 12:44:03 2019 -0700 + + Remove accidentally left cruft + + src/hb-algs.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6172ec5d879653c536d7cb3d3b3760fbb6d0f3f3 +Author: Behdad Esfahbod +Date: Tue Jun 18 12:41:56 2019 -0700 + + Remove (unused) posix_memalign fallback + + Was wrong. The returned pointer couldn't be passed to free(). Ouch! + + configure.ac | 2 +- + src/hb.hh | 34 ---------------------------------- + 2 files changed, 1 insertion(+), 35 deletions(-) + +commit eb28d6e48b02a8c49875cfcd084a16c1c66c367e +Author: Ebrahim Byagowi +Date: Tue Jun 18 12:14:10 2019 +0430 + + [ci] Test no build system builds + + Introduced in aa3450c, let's preserve it + + .circleci/config.yml | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit efef672911dd6c3b80e53294f3fcd59dbb64597a +Author: Behdad Esfahbod +Date: Mon Jun 17 22:57:51 2019 -0700 + + Fix cmake build + + Hopefullly. + + CMakeLists.txt | 4 ---- + 1 file changed, 4 deletions(-) + +commit aa3450cac148280f747fb88864b6fcc4ec70cc51 +Author: Behdad Esfahbod +Date: Mon Jun 17 22:41:49 2019 -0700 + + [config] Don't compile disabled features + + This makes it possible to include all .cc files into build, even if not + building CoreText, Uniscribe, etc. + + This was mostly to help custom builders. But also means that we can + include all files in our own build system. Not sure if we should. + Definitely simplifies things, but slightly only. + + src/Makefile.am | 1 + + src/hb-coretext.cc | 6 ++++++ + src/hb-directwrite.cc | 6 ++++++ + src/hb-ft.cc | 5 +++++ + src/hb-glib.cc | 5 +++++ + src/hb-gobject-enums.cc.tmpl | 7 +++++++ + src/hb-gobject-structs.cc | 5 +++++ + src/hb-graphite2.cc | 7 +++++++ + src/hb-icu.cc | 5 +++++ + src/hb-uniscribe.cc | 4 ++++ + 10 files changed, 51 insertions(+) + +commit 33d8b76e74579a27b06fa788d0bf696a9dd44cc4 +Author: Behdad Esfahbod +Date: Mon Jun 17 21:54:20 2019 -0700 + + [config] Flesh out CONFIG.md + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + CONFIG.md | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- + 1 file changed, 84 insertions(+), 3 deletions(-) + +commit 23ccd00a3d5033b812f2bebcc5b793a4415b252b +Author: Behdad Esfahbod +Date: Mon Jun 17 20:35:04 2019 -0700 + + Minor + + src/hb-config.hh | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 23768a99e08cbe691772b7514c023d3184989ff8 +Author: Behdad Esfahbod +Date: Mon Jun 17 20:29:29 2019 -0700 + + [config] Replace HAVE_FALLBACK with HB_NO_FALLBACK_SHAPE + + This disables fallback shaper in tiny builds. Projects that don't + use our build system and want to disable fallback shaper (eg. Firefox) + should define HB_NO_FALLBACK_SHAPE now. + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + CMakeLists.txt | 2 -- + configure.ac | 8 -------- + src/Makefile.am | 4 ---- + src/Makefile.sources | 5 +---- + src/hb-config.hh | 1 + + src/hb-fallback-shape.cc | 3 +++ + src/hb-shaper-list.hh | 2 +- + 7 files changed, 6 insertions(+), 19 deletions(-) + +commit 3a9394635ffd663d8acd0715236dd01d9f22f3b8 +Author: Behdad Esfahbod +Date: Mon Jun 17 20:10:36 2019 -0700 + + Add CONFIG.md + + https://github.com/harfbuzz/harfbuzz/issues/1652 + + CONFIG.md | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ + Makefile.am | 1 + + README.md | 2 ++ + 3 files changed, 54 insertions(+) + +commit 1c56b5d1d8307efd12519556e41fc50c5371f136 +Author: Behdad Esfahbod +Date: Mon Jun 17 14:23:04 2019 -0700 + + [serialize] Fix copy() calling operator= + + https://github.com/googlefonts/harfbuzz/commit/9f610ae239a11e86f94621e26bc15849b65ce41b#commitcomment-33944686 + + src/hb-serialize.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6492b2345cd913223b0eb931e9e11f7e5ad33049 +Author: Behdad Esfahbod +Date: Mon Jun 17 14:19:13 2019 -0700 + + Minor + + src/hb-open-type.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8938dd23c64f80dbd31f87133d9df88cd0c98c1a +Author: Behdad Esfahbod +Date: Mon Jun 17 14:12:11 2019 -0700 + + Use injected class name + + src/hb-open-type.hh | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit bfb5569d530a2b65dafd0d9be45d594af9e742ce +Author: Behdad Esfahbod +Date: Mon Jun 17 14:06:04 2019 -0700 + + Disable non-OpenType kerning with hb-ft in HB_TINY + + src/hb-ft.cc | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 0819f3ca863af520fe546e6ef0596300e9e28b01 +Author: Behdad Esfahbod +Date: Mon Jun 17 14:02:47 2019 -0700 + + Deprecate v_kerning callback again + + Part of https://github.com/harfbuzz/harfbuzz/issues/1682 + + docs/harfbuzz-sections.txt | 6 +++--- + src/hb-deprecated.h | 23 +++++++++++++++++++++++ + src/hb-font.cc | 7 +++---- + src/hb-font.h | 20 -------------------- + src/hb-font.hh | 2 +- + 5 files changed, 30 insertions(+), 28 deletions(-) + +commit eb2825c7f140185f41922a371434873a0114ef67 +Author: Behdad Esfahbod +Date: Mon Jun 17 13:42:53 2019 -0700 + + Minor + + src/hb-ot-font.cc | 1 - + 1 file changed, 1 deletion(-) + +commit 896416bd4c6ac486eb4e1926eaa09d5a9b693763 +Author: Behdad Esfahbod +Date: Mon Jun 17 13:39:49 2019 -0700 + + Partially revert "[ft/ot] Remove implementation of deprecated kerning funcs" + + This reverts commit 47030b1855f04c0d75899ffb6f5021fea3c19b90. + + Reverts only the hb-ft part, to reinstate non-OpenType kerning with + FreeType. + + Fixes https://github.com/harfbuzz/harfbuzz/issues/1682 + + src/hb-ft.cc | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +commit 2682efb02df72fb254c819cb76fc23592c30fc45 +Author: Behdad Esfahbod +Date: Mon Jun 17 13:38:08 2019 -0700 + + Revert "Deprecate font kern API" + + This reverts commit d219f899f4b2fb4b39ebc1dff9fb648fc5d6d112. + + API change: Un-deprecate font kern API. + + Part of https://github.com/harfbuzz/harfbuzz/issues/1682 + + We should document that this API is only necessary to hook up + non-OpenType kerning. hb-ot-font will continue to NOT implement them. + + docs/harfbuzz-sections.txt | 16 +++++++------- + src/hb-deprecated.h | 54 ---------------------------------------------- + src/hb-font.cc | 3 --- + src/hb-font.h | 51 +++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 59 insertions(+), 65 deletions(-) + +commit d6cb244f7d63338e0cbfa774c2a32e6e7e06f15b +Author: David Corbett +Date: Sat Jun 15 21:38:27 2019 -0400 + + Canonically reorder U+0C55 and U+0C56 + + src/hb-unicode.hh | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 82d4bfb8f3ac30fecce41f8abe59f58ad64ba98a +Author: Michiharu Ariza +Date: Fri Jun 14 10:49:42 2019 -0700 + + enable cff subset tests + + add Unicode UCS-4 cmap + fix Unicode bits in OS/2 + add Unicode cmap sub-table in SourceHanSans-Regular_subset.otf + regenerate cff subset test expected results + + src/hb-ot-cmap-table.hh | 73 +++++++++++++++++---- + src/hb-ot-os2-table.hh | 10 ++- + test/subset/data/Makefile.am | 2 + + test/subset/data/Makefile.sources | 2 + + ...subroutinize-retain-gids.1FC,21,41,20,62,63.otf | Bin 32124 -> 20000 bytes + ...Regular.desubroutinize-retain-gids.61,62,63.otf | Bin 29688 -> 2196 bytes + ...r.desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf | Bin 33316 -> 30412 bytes + ...subroutinize-retain-gids.1FC,21,41,20,62,63.otf | Bin 31960 -> 19840 bytes + ...p-hints-desubroutinize-retain-gids.61,62,63.otf | Bin 29564 -> 2072 bytes + ...s-desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf | Bin 33168 -> 30264 bytes + ...r.drop-hints-retain-gids.1FC,21,41,20,62,63.otf | Bin 32052 -> 19932 bytes + ...Pro-Regular.drop-hints-retain-gids.61,62,63.otf | Bin 29632 -> 2108 bytes + ...gular.drop-hints-retain-gids.D7,D8,D9,DA,DE.otf | Bin 33180 -> 30276 bytes + ...sPro-Regular.retain-gids.1FC,21,41,20,62,63.otf | Bin 32276 -> 20152 bytes + .../SourceSansPro-Regular.retain-gids.61,62,63.otf | Bin 29788 -> 2264 bytes + ...eSansPro-Regular.retain-gids.D7,D8,D9,DA,DE.otf | Bin 33332 -> 30428 bytes + ...ubset.default.3042,3044,3046,3048,304A,304B.otf | Bin 3028 -> 3036 bytes + ...ubset.default.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 3240 -> 3248 bytes + ...eHanSans-Regular_subset.default.61,63,65,6B.otf | Bin 2200 -> 2208 bytes + ...ubset.default.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 3460 -> 3468 bytes + .../SourceHanSans-Regular_subset.default.660E.otf | Bin 1920 -> 1928 bytes + ...e-retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 90956 -> 8932 bytes + ...e-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 125820 -> 116080 bytes + ...bset.desubroutinize-retain-gids.61,63,65,6B.otf | Bin 88392 -> 3016 bytes + ...e-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 126004 -> 116264 bytes + ...ular_subset.desubroutinize-retain-gids.660E.otf | Bin 103780 -> 50224 bytes + ...esubroutinize.3042,3044,3046,3048,304A,304B.otf | Bin 2952 -> 2960 bytes + ...esubroutinize.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 3136 -> 3144 bytes + ...s-Regular_subset.desubroutinize.61,63,65,6B.otf | Bin 2132 -> 2140 bytes + ...esubroutinize.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 3256 -> 3264 bytes + ...eHanSans-Regular_subset.desubroutinize.660E.otf | Bin 1896 -> 1904 bytes + ...e-retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 90656 -> 8672 bytes + ...e-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 125468 -> 115768 bytes + ...ints-desubroutinize-retain-gids.61,63,65,6B.otf | Bin 88156 -> 2892 bytes + ...e-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 125584 -> 115884 bytes + ....drop-hints-desubroutinize-retain-gids.660E.otf | Bin 103556 -> 50040 bytes + ...esubroutinize.3042,3044,3046,3048,304A,304B.otf | Bin 2792 -> 2800 bytes + ...esubroutinize.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 2896 -> 2904 bytes + ...ubset.drop-hints-desubroutinize.61,63,65,6B.otf | Bin 2028 -> 2036 bytes + ...esubroutinize.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 2964 -> 2972 bytes + ...gular_subset.drop-hints-desubroutinize.660E.otf | Bin 1804 -> 1812 bytes + ...s-retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 90724 -> 8740 bytes + ...s-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 125560 -> 115864 bytes + ...r_subset.drop-hints-retain-gids.61,63,65,6B.otf | Bin 88196 -> 2852 bytes + ...s-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 125780 -> 116084 bytes + ...-Regular_subset.drop-hints-retain-gids.660E.otf | Bin 103572 -> 50060 bytes + ...et.drop-hints.3042,3044,3046,3048,304A,304B.otf | Bin 2848 -> 2856 bytes + ...et.drop-hints.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 2988 -> 2996 bytes + ...nSans-Regular_subset.drop-hints.61,63,65,6B.otf | Bin 2060 -> 2068 bytes + ...et.drop-hints.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 3164 -> 3172 bytes + ...ourceHanSans-Regular_subset.drop-hints.660E.otf | Bin 1824 -> 1832 bytes + ...t.retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 91040 -> 9016 bytes + ...t.retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 125924 -> 116184 bytes + ...Sans-Regular_subset.retain-gids.61,63,65,6B.otf | Bin 88468 -> 3012 bytes + ...t.retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 126208 -> 116468 bytes + ...urceHanSans-Regular_subset.retain-gids.660E.otf | Bin 103800 -> 50244 bytes + .../data/fonts/SourceHanSans-Regular_subset.otf | Bin 2707728 -> 2707736 bytes + 57 files changed, 70 insertions(+), 17 deletions(-) + +commit 6bcbe495bff221169f8c0769dde1b4b2c165a211 +Author: Ebrahim Byagowi +Date: Thu Jun 13 15:04:51 2019 +0430 + + [cff] minor format (#1774) + + src/hb-subset-cff-common.cc | 104 ++++++++++++++++++++------------------------ + 1 file changed, 48 insertions(+), 56 deletions(-) + +commit 4f37c0db9bf4e3d536a50126d17b36009b12f9cb +Author: David Corbett +Date: Tue Jun 11 17:55:31 2019 -0400 + + Remove 'mym3' + + src/hb-ot-tag.cc | 4 +++- + test/api/test-ot-tag.c | 2 +- + 2 files changed, 4 insertions(+), 2 deletions(-) + +commit 90872a29ee5d0bef6df1c2900f7001c11106c4da +Author: Michiharu Ariza +Date: Tue Jun 11 12:28:30 2019 -0700 + + change assert(false) to failure + + src/hb-subset-cff-common.cc | 2 +- + ...z-testcase-minimized-hb-subset-fuzzer-5680398559870976 | Bin 0 -> 145 bytes + 2 files changed, 1 insertion(+), 1 deletion(-) + +commit 0c5da57d1aab91d7677a5c6517a3da254d53267f +Author: Behdad Esfahbod +Date: Mon Jun 10 14:06:25 2019 -0700 + + Fix typo :) + + src/hb-blob.cc | 3 ++- + src/hb-config.hh | 2 +- + 2 files changed, 3 insertions(+), 2 deletions(-) + +commit 19b8eb08e5457cd643aee5f9b9ad1c80b2243895 +Author: Ebrahim Byagowi +Date: Tue Jun 11 01:33:30 2019 +0430 + + Move HB_NO_SETLOCALE to closer place to its to unbreak HB_TINY build (#1768) + + src/hb-common.cc | 3 +++ + src/hb.hh | 4 ---- + 2 files changed, 3 insertions(+), 4 deletions(-) + +commit b4a5a69ad8625e3b90eb907a1b70e3ed24d4ff97 +Author: Ebrahim Byagowi +Date: Tue Jun 11 01:33:09 2019 +0430 + + Add HB_NO_OEPN (#1767) + + src/hb-blob.cc | 3 +++ + src/hb-config.hh | 2 ++ + 2 files changed, 5 insertions(+) + +commit a36ff941710b5a5f7e464e6d72aff36cf5549a91 +Author: Ebrahim Byagowi +Date: Mon Jun 10 15:48:28 2019 +0430 + + Add HB_NO_SETLOCALE + + src/hb-config.hh | 1 + + src/hb.hh | 6 +++++- + 2 files changed, 6 insertions(+), 1 deletion(-) + +commit c4cae81a26a816979f3206418c47856b5ed2d8bb +Author: Ebrahim Byagowi +Date: Mon Jun 10 15:32:54 2019 +0430 + + Remove round polyfill + + Added in 01dff1e and 19256bef, this was targeted at older + msvc versions that don't support C99 but now as we require + C++11 we don't target places those envs thus removing this. + + CMakeLists.txt | 2 +- + configure.ac | 6 ------ + src/hb.hh | 14 -------------- + 3 files changed, 1 insertion(+), 21 deletions(-) + +commit ff9b9b1c89d5529fafc74ce84c0acb71b5d6031b +Author: Behdad Esfahbod +Date: Mon Jun 10 12:48:25 2019 -0700 + + Simplify HB_PARTIALIZE impl + + +this works on gcc 4.8 as well as default code path. + + src/hb-algs.hh | 17 +++++------------ + 1 file changed, 5 insertions(+), 12 deletions(-) + +commit 451edbd4d063a4b43c1ca3d2b60c7392602ae7b7 +Author: Behdad Esfahbod +Date: Mon Jun 10 12:46:54 2019 -0700 + + Revert "Test new solution for HB_PARTIALIZE" + + This reverts commit a0c4900799c26e4ff34180842a5ff21048fe31a0. + + src/hb-algs.hh | 18 +++++++++++++++++- + 1 file changed, 17 insertions(+), 1 deletion(-) + +commit a0c4900799c26e4ff34180842a5ff21048fe31a0 +Author: Behdad Esfahbod +Date: Mon Jun 10 12:33:23 2019 -0700 + + Test new solution for HB_PARTIALIZE + + Just testing bots. Will finish based on results. + + src/hb-algs.hh | 18 +----------------- + 1 file changed, 1 insertion(+), 17 deletions(-) + +commit 4a2b58555f173b692b767c933d280a51142926dd +Author: Ebrahim Byagowi +Date: Mon Jun 10 08:16:51 2019 -0700 + + [ci] Use HB_OPTIMIZE_SIZE instead of __OPTIMIZE_SIZE__ + + .circleci/config.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a228bb5f1d471a334bc9727f5d4f5b59dbe829ff +Author: Ebrahim Byagowi +Date: Mon Jun 10 15:56:36 2019 +0430 + + [ci] Test -Os and optimize size in Alpine bot + + __OPTIMIZE_SIZE__ should be defined whenever -Os but some Internet thread + indicate may not so lets do that ourselves as that is the main intention + + .circleci/config.yml | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +commit 9407ef8d4bb96346b1f8b07757d79d3f8cc61cf7 +Author: Ebrahim Byagowi +Date: Mon Jun 10 15:17:43 2019 +0430 + + minor, add HB_USE_INTERNAL_QSORT + + The only thing I need for a working wasm in a minimum libc, + otherwise I have to provide the very same qsort inside that libc + + src/hb-algs.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 801d93fc58aa13082dea86fb2c3821bc6362f593 +Author: Ebrahim Byagowi +Date: Mon Jun 10 14:53:14 2019 +0430 + + [ci] remove wine from fedora bot + + We are not testing Windows exes in fedora mingw bot, we don't have to as + probably won't go that smoothly and we have real Windows bots anyway + and as wine installation itself is time taking let's remove it + + .circleci/config.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7dcfc5357df879491f847bd7d2941645e58f268c +Author: Ebrahim Byagowi +Date: Sun Jun 9 11:58:08 2019 +0430 + + [stat] minor format + + src/hb-ot-stat-table.hh | 72 ++++++++++++++++++++++++------------------------- + 1 file changed, 36 insertions(+), 36 deletions(-) + +commit 2646c7149ce49d3b6cf90e354658df35254bcce0 +Author: Ebrahim Byagowi +Date: Sun Jun 9 11:51:58 2019 +0430 + + [stat] minor + + src/hb-ot-stat-table.hh | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit c4669fda7890bc741ef934ebc360e366eba94866 +Author: Ebrahim Byagowi +Date: Sun Jun 9 11:50:36 2019 +0430 + + [algs] minor + + src/hb-algs.hh | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 9b853f755dd05ccef3429d3d3d0d561a99cc4c2d +Author: Ebrahim Byagowi +Date: Sun Jun 9 11:49:25 2019 +0430 + + [cff] Use switch on multi-format structs (#1762) + + src/hb-cff-interp-cs-common.hh | 4 +- + src/hb-cff-interp-dict-common.hh | 12 +-- + src/hb-ot-cff-common.hh | 135 ++++++++++++------------ + src/hb-ot-cff1-table.hh | 215 ++++++++++++++++++++++----------------- + src/hb-ot-cff2-table.hh | 68 +++++++------ + src/hb-subset-cff1.cc | 2 +- + src/hb-subset-cff2.cc | 2 +- + 7 files changed, 233 insertions(+), 205 deletions(-) + +commit eff579f743a91c0b1c543f4b69ab33580cae6392 +Author: Ebrahim Byagowi +Date: Fri Jun 7 12:58:09 2019 +0430 + + Update and use internal qsort everywhere + + src/hb-algs.hh | 210 +++++++++++++++++++++++++++++++++++------------- + src/hb-array.hh | 6 +- + src/hb-ot-post-table.hh | 2 +- + 3 files changed, 158 insertions(+), 60 deletions(-) + +commit 5074d665a8b0980f202a5986bda52808674cfb54 +Author: Behdad Esfahbod +Date: Fri Jun 7 14:20:45 2019 -0700 + + [ucd] Save another 1.5kb + + https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/gen-ucd-table.py | 8 +++++--- + src/hb-ucd-table.hh | 37 +++++++++++++++++++++---------------- + src/hb-ucd.cc | 12 +++++++++--- + 3 files changed, 35 insertions(+), 22 deletions(-) + +commit 6d58b45782833f8c6c8efd9426e2785c78e6462a +Author: Ebrahim Byagowi +Date: Sat Jun 8 00:40:18 2019 +0430 + + [ci] use trusty for its gcc 4.8 again + + .travis.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 973699c49b905e142ecc5cefd1f4fa15aad8e309 +Author: Behdad Esfahbod +Date: Fri Jun 7 12:49:06 2019 -0700 + + Disable clang gcc impersonator + + src/hb-algs.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e4e518f33d933a02058bad86a6aae714e59814db +Author: Behdad Esfahbod +Date: Fri Jun 7 12:41:09 2019 -0700 + + Fix build on gcc 4.8 + + Fixes https://github.com/harfbuzz/harfbuzz/issues/1724 + + src/hb-algs.hh | 29 +++++++++++++++++++++++++++-- + 1 file changed, 27 insertions(+), 2 deletions(-) + +commit 3c240bd3dc0aaca38154da555d0aef350da62ee6 +Author: Behdad Esfahbod +Date: Fri Jun 7 10:56:24 2019 -0700 + + Downgrade double-promotion from error to warning + + https://github.com/harfbuzz/harfbuzz/issues/1740 + + src/hb.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 385e436692e94588fc4cb3a7afbeb862035db09b +Author: Ebrahim Byagowi +Date: Fri Jun 7 10:44:53 2019 -0700 + + Minor, fix gcc maybe-uninitialized complain + + I guess all of its field will be initialized anyway here but lets make it more defensive + + src/hb-ot-glyf-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1bada656a86e9cb27d4a6b9fcc50748f0bd9c1d9 +Author: Ebrahim Byagowi +Date: Fri Jun 7 02:01:27 2019 +0430 + + Minor, remove unnecessary semicolon + + Causing -Wextra-semi-stmt build error when no primitive has chosen + Interesting that nobody has noticed it yet. + + src/hb-mutex.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f9b1ae73360054d9f121a2d36820377909888b35 +Author: Garret Rieger +Date: Wed Jun 5 17:40:59 2019 -0700 + + [subset] Move OS/2 to subset2. + + src/hb-ot-os2-table.hh | 32 ++++++++++++++++---------------- + src/hb-subset.cc | 2 +- + 2 files changed, 17 insertions(+), 17 deletions(-) + +commit 93d592e0e181f436ea47038fef419134007208aa +Author: Qunxin Liu +Date: Wed Jun 5 16:51:31 2019 -0700 + + [subset] post table to use _subset2 + + src/hb-ot-post-table.hh | 31 +++++++++++++++---------------- + src/hb-subset.cc | 2 +- + 2 files changed, 16 insertions(+), 17 deletions(-) + +commit 6f35cf7a637f5efc0ef3888d929a6392cc2863c3 +Author: Michiharu Ariza +Date: Thu Jun 6 09:15:34 2019 -0700 + + regenerate SourceSerifVariable expected subset results + + .gitignore | 1 + + ...SerifVariable-Roman.default.1FC,21,41,20,62,63.ttf | Bin 5464 -> 4132 bytes + .../SourceSerifVariable-Roman.default.61,62,63.ttf | Bin 5432 -> 4100 bytes + ...urceSerifVariable-Roman.default.D7,D8,D9,DA,DE.ttf | Bin 5924 -> 4592 bytes + ...ifVariable-Roman.drop-hints.1FC,21,41,20,62,63.ttf | Bin 5464 -> 4132 bytes + .../SourceSerifVariable-Roman.drop-hints.61,62,63.ttf | Bin 5432 -> 4100 bytes + ...eSerifVariable-Roman.drop-hints.D7,D8,D9,DA,DE.ttf | Bin 5924 -> 4592 bytes + 7 files changed, 1 insertion(+) + +commit db938479d7b1e3ec35a39a9ad31c945e09e6d5e5 +Author: Qunxin Liu +Date: Tue Jun 4 10:30:53 2019 -0700 + + [subset] maxp table to use _subset2 + + src/hb-ot-maxp-table.hh | 48 ++++++++++++++++++++++-------------------------- + src/hb-subset.cc | 2 +- + 2 files changed, 23 insertions(+), 27 deletions(-) + +commit 66361c72f655cc9170fd8c25610ed192fa0ff86d +Author: Michiharu Ariza +Date: Wed Jun 5 14:51:04 2019 -0700 + + restore gvar/MVAR/HVAR tables in subset tests + + test/subset/generate-expected-outputs.py | 2 +- + test/subset/run-tests.py | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit d5e5f378329b6ce21944b79b568369ea7bc36cf3 +Author: Eli Zaretskii +Date: Wed Jun 5 22:20:03 2019 +0300 + + This makes minor changes to allow building HarfBuzz with + mingw.org's MinGW. + + src/hb-algs.hh: Don't compile _BitScanForward and _BitScanReverse + for GCC >= 4. mingw.org's MinGW doesn't have these functions. + + src/hb-atomic.hh: MemoryBarrier does exist in mingw.org's MinGW, + but it is not a macro, it is an inline function. __MINGW32_VERSION + is a macro that exists only in mingw.org's MinGW, so conditioning + on it should not affect MinGW64, where MemoryBarrier is a macro. + + src/hb-uniscribe.cc: Define E_NOT_SUFFICIENT_BUFFER if it is not + defined (mingw.org's MinGW doesn't). + + src/hb.hh: Don't include intrin.h for mingw.org's MinGW, since that + header is not available; instead, include windows.h. Conditioned + on __MINGW32_VERSION to avoid affecting MinGW64. + + src/hb-algs.hh | 4 ++-- + src/hb-atomic.hh | 2 +- + src/hb-uniscribe.cc | 4 ++++ + src/hb.hh | 7 +++++++ + 4 files changed, 14 insertions(+), 3 deletions(-) + +commit 8f8e8a84795db45098c95e19a7ff83d898d3bc7d +Author: Michiharu Ariza +Date: Wed Jun 5 12:59:09 2019 -0700 + + fix build + + src/hb-ot-font.cc | 2 +- + src/hb-ot-glyf-table.hh | 8 ++++---- + src/hb-ot-hmtx-table.hh | 2 +- + src/hb-ot-var-gvar-table.hh | 6 +++--- + src/hb-ot-var-hvar-table.hh | 2 +- + 5 files changed, 10 insertions(+), 10 deletions(-) + +commit c7439d4e3a76d596845aad4e4bc860bd61ee47e3 +Author: Behdad Esfahbod +Date: Wed Jun 5 12:13:49 2019 -0700 + + Slightly massage buffer-messaging commit + + Saves a few bytes. + + src/hb-buffer.cc | 3 --- + src/hb-buffer.hh | 8 +++++++- + 2 files changed, 7 insertions(+), 4 deletions(-) + +commit 4ddab6facc0c7ffe7623bf6449ab9b27166924a6 +Merge: 157a414b 4b1b0bf2 +Author: Michiharu Ariza +Date: Wed Jun 5 11:21:27 2019 -0700 + + Merge branch 'master' into var-subset + +commit 4b1b0bf2f51f806d3285a7e7dec378b9eab9333e +Merge: 659eeddb 815f002b +Author: Ebrahim Byagowi +Date: Wed Jun 5 12:57:28 2019 +0430 + + Merge pull request #1755 from ebraminio/slim + + Don't use vsnprintf when HB_NO_BUFFER_MESSAGE is defined + +commit 815f002bb9230a52768a165383497cc98c58eadb +Author: Ebrahim Byagowi +Date: Wed Jun 5 10:38:06 2019 +0430 + + Don't use vsnprintf when HB_NO_BUFFER_MESSAGE is defined + + src/hb-buffer.cc | 5 ++++- + src/hb-config.hh | 1 + + 2 files changed, 5 insertions(+), 1 deletion(-) + +commit 659eeddb2df5b97cc01bd39e106381f65c9f41f1 +Author: Bruce Mitchener +Date: Mon Jun 3 22:31:50 2019 +0700 + + Use C++11 override keyword. + + util/hb-ot-shape-closure.cc | 2 +- + util/options.hh | 30 +++++++++++++++--------------- + 2 files changed, 16 insertions(+), 16 deletions(-) + +commit 2e16593b70688dfcee1788f38c6af03c5a589f6e +Author: David Corbett +Date: Sat Jun 1 20:54:46 2019 -0400 + + [myanmar] Make medial_group match the OT spec + + Sometime between [July 2018] and [January 2019], the OpenType Myanmar + grammar changed: one asat is now allowed after a medial ya, before any + other medial consonant. + + [July 2018]: http://web.archive.org/web/20180711011550/https://docs.microsoft.com/en-us/typography/script-development/myanmar + [January 2019]: http://web.archive.org/web/20190115044451/https://docs.microsoft.com/en-us/typography/script-development/myanmar + + This also reverts commit 439b05867c0856a81fa8f9bea3a7465b4b4bdd91, which + allowed an asat immediately after a medial ra. + + src/hb-ot-shape-complex-myanmar-machine.hh | 249 +++++++++++++++-------------- + src/hb-ot-shape-complex-myanmar-machine.rl | 2 +- + 2 files changed, 129 insertions(+), 122 deletions(-) + +commit 209491fc37c46281e063c3e6707d686d5f2b2ba4 +Author: Qunxin Liu +Date: Wed May 29 14:03:17 2019 -0700 + + [subset] Hmtx/vmtx tables to use subset2 and new iterator frameworks + + src/hb-ot-hmtx-table.hh | 115 +++++++++++++++++++++++------------------------- + src/hb-subset.cc | 6 +-- + 2 files changed, 59 insertions(+), 62 deletions(-) + +commit 89a7a880a1d5cd5e585d43fdde6d44c6dba559cf +Merge: 760eb1bf 12febd68 +Author: Ebrahim Byagowi +Date: Tue Jun 4 10:52:16 2019 +0430 + + Merge pull request #1747 from harfbuzz/cff2-fdselect-fix + + fixed faulty FDSelect::sanitize + +commit 12febd68d694cc1bae44b0b672d88bf9fbe8568d +Author: Michiharu Ariza +Date: Mon Jun 3 16:40:03 2019 -0700 + + added parentheses to FDSelect::sanitize as well + + src/hb-ot-cff-common.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 65e66a2d371f42d018b1a22f31a6428d19a90284 +Author: Michiharu Ariza +Date: Mon Jun 3 16:31:41 2019 -0700 + + added test data + + ...zz-testcase-minimized-harfbuzz_fuzzer-6252118652092416 | Bin 0 -> 126 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) + +commit be82a2fc0c7ad3553f2e6dc8082a3255cb6c917c +Author: Michiharu Ariza +Date: Mon Jun 3 15:52:23 2019 -0700 + + parenthesized cond-exp in CFF2FDSelect::sanitize + + src/hb-ot-cff2-table.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 760eb1bf9398bd37103ca879e825fad9bef4bfdd +Author: Ebrahim Byagowi +Date: Mon Jun 3 05:48:04 2019 -0700 + + Reapply possible bsearch overflow fix + + Originally introduced in 21ede86 (#1314) but as it wasn't applied to hb_bsearch + accidentally removed while merging hb_bsearch_r to it. + + src/hb-algs.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5846884f86cae61c1b0c369c81427712fb97ed83 +Author: Bruce Mitchener +Date: Mon Jun 3 15:00:25 2019 +0700 + + test: Use nullptr in C++ code. (#1744) + + src/test-ot-color.cc | 8 ++++---- + test/fuzzing/hb-shape-fuzzer.cc | 6 +++--- + test/fuzzing/hb-subset-fuzzer.cc | 2 +- + util/options-subset.cc | 2 +- + 4 files changed, 9 insertions(+), 9 deletions(-) + +commit 7c14b9014587e1423ef7481058e48dae84a65fce +Author: Ebrahim Byagowi +Date: Sun Jun 2 13:51:26 2019 +0430 + + [ci] revert to xenial + + It should've done in a branch + + .travis.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8278ff7dce41e6694eba15a7c94a0c0eb3bca427 +Author: Ebrahim Byagowi +Date: Sun Jun 2 00:36:30 2019 +0430 + + minor + + src/hb-algs.hh | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 33d38e793e2e4882337e5f42fbbae7d00d343940 +Author: Ebrahim Byagowi +Date: Sun Jun 2 00:19:57 2019 +0430 + + Use a unified bsearch (#1741) + + A part of #593 + + src/hb-aat-layout.cc | 10 +++++----- + src/hb-algs.hh | 29 ++++------------------------- + src/hb-ot-post-table.hh | 4 ++-- + src/hb-ot-var-mvar-table.hh | 6 +++--- + 4 files changed, 14 insertions(+), 35 deletions(-) + +commit 97b92685775983a280f335423263a6a8d82c3941 +Author: Ebrahim Byagowi +Date: Sat Jun 1 21:25:09 2019 +0430 + + [ci] Downgrade Travis distribution upon Behdad request + + .travis.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit faf69e03f5ab9f3926442525f6c6e30fbc7a93d5 +Author: Ebrahim Byagowi +Date: Sat Jun 1 11:02:25 2019 +0430 + + [ci] Install ragel on appveyor mingw bots + + Hopefully autotools timestamps issues will go + + appveyor.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c91f3fa3eaf77fa255292c779f88da4feaaae8a0 +Author: Ebrahim Byagowi +Date: Sat Jun 1 10:55:37 2019 +0430 + + [dwrite] Replace REPLACEME with release version the symbol had + + src/hb-directwrite.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 93c455567fe3d92a7efe65bf0e9ac2af794e2c4f +Author: Behdad Esfahbod +Date: Fri May 31 22:53:27 2019 -0700 + + 2.5.1 + + NEWS | 11 +++++++++++ + configure.ac | 2 +- + src/hb-version.h | 4 ++-- + 3 files changed, 14 insertions(+), 3 deletions(-) + +commit 10e3cb9246ab3d288af4effe484f4d8beb2243d6 +Author: Behdad Esfahbod +Date: Fri May 31 22:56:37 2019 -0700 + + [docs] Fix dist + + docs/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit 619f5f1eb9e5e2a4f326f89c9e3e05b01f9c042f +Author: Behdad Esfahbod +Date: Fri May 31 22:31:35 2019 -0700 + + Fourth try at building VS bots + + Based on https://github.com/harfbuzz/harfbuzz/issues/1730#issuecomment-497151210 + + src/hb-algs.hh | 16 +++++++++++----- + 1 file changed, 11 insertions(+), 5 deletions(-) + +commit f387a09742bd8e4a7a8da6db954339609839a113 +Author: Behdad Esfahbod +Date: Fri May 31 22:12:23 2019 -0700 + + [ci] Disable VS 2013 + + That one doesn't even understand constexpr. + + appveyor.yml | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit aba3888d933474a874d2f3ff02397b523846466c +Author: Behdad Esfahbod +Date: Fri May 31 22:11:27 2019 -0700 + + Third try at fixing VS build + + https://github.com/harfbuzz/harfbuzz/issues/1730 + + src/hb-algs.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8aaecbb5832568135f6149254ed9e17ac4310341 +Author: Behdad Esfahbod +Date: Fri May 31 21:41:40 2019 -0700 + + Second VS fix try + + https://github.com/harfbuzz/harfbuzz/issues/1730 + + src/hb-algs.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 5a1b5c0a8b91a2291e7327e84acba2406a14414e +Author: Behdad Esfahbod +Date: Fri May 31 21:08:39 2019 -0700 + + Try fixing VS builds + + Hopefully fixes https://github.com/harfbuzz/harfbuzz/issues/1730 + + src/hb-algs.hh | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit 66381fb73f21e8e3c1c14b196e64d1004be303c7 +Author: Behdad Esfahbod +Date: Fri May 31 20:20:43 2019 -0700 + + [ci] Enable other versions of Visual Studio + + https://github.com/harfbuzz/harfbuzz/issues/1730 + + appveyor.yml | 44 ++++++++++++++++++++++++-------------------- + 1 file changed, 24 insertions(+), 20 deletions(-) + +commit 92fde3dea282d308fad2b8e93cd638aa813c6f2a +Author: Behdad Esfahbod +Date: Fri May 31 20:16:25 2019 -0700 + + Whitespace + + src/hb-algs.hh | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 49879adbfc57c3173a25bbc55afc0796ee71b6da +Author: rsheeter +Date: Fri May 31 15:14:44 2019 -0700 + + [subset] Correct calculation of max offset; fixes bug where loca would erroneously be short + + src/hb-ot-glyf-table.hh | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 2ad4ba7bc04fbbd886a2da6fbc55a4e13468d878 +Author: Behdad Esfahbod +Date: Fri May 31 15:48:54 2019 -0700 + + [gsub] Minor + + src/hb-ot-layout-gsub-table.hh | 40 +++++++++++++++++++++------------------- + 1 file changed, 21 insertions(+), 19 deletions(-) + +commit 2dbdec66a17af94fffc50949e4712465aada9a68 +Author: Behdad Esfahbod +Date: Fri May 31 15:38:11 2019 -0700 + + [gsub] Porting serialize to iterators + + src/hb-ot-layout-gsub-table.hh | 15 ++++++++++----- + 1 file changed, 10 insertions(+), 5 deletions(-) + +commit 1834cf86d40abfbb536db1edb366c90318ba49fc +Author: Behdad Esfahbod +Date: Fri May 31 14:39:32 2019 -0700 + + [serialize] Pass offset to serialize_subset() + + src/hb-open-type.hh | 14 +++++++++----- + src/hb-ot-layout-common.hh | 4 ++-- + src/hb-ot-layout-gdef-table.hh | 12 ++++++------ + src/hb-ot-layout-gsubgpos.hh | 7 ++++--- + 4 files changed, 21 insertions(+), 16 deletions(-) + +commit 926044162472aeca8f5032b11b544d38be587110 +Author: Behdad Esfahbod +Date: Fri May 31 14:34:34 2019 -0700 + + [serialize] Pass offset to serialize_copy() + + src/hb-open-type.hh | 12 ++++++++---- + src/hb-ot-layout-common.hh | 4 ++-- + src/hb-ot-layout-gsubgpos.hh | 2 +- + src/hb-ot-name-table.hh | 2 +- + 4 files changed, 12 insertions(+), 8 deletions(-) + +commit 87dd4bff1c42f1845fb3d11477e5de210121d48e +Author: Behdad Esfahbod +Date: Thu May 30 11:26:17 2019 -0400 + + [math] Rename HB_MATH_GLYPH_PART_FLAG_EXTENDER + + To HB_OT_MATH_GLYPH_PART_FLAG_EXTENDER. Added a deprecated macro. + + Fixes https://github.com/harfbuzz/harfbuzz/issues/1734 + + src/hb-ot-deprecated.h | 4 ++++ + src/hb-ot-math-table.hh | 2 +- + src/hb-ot-math.h | 2 +- + test/api/test-ot-math.c | 16 ++++++++-------- + 4 files changed, 14 insertions(+), 10 deletions(-) + +commit 88f9dab366491af144da316384991e74af443226 +Author: Ebrahim Byagowi +Date: Wed May 29 01:55:31 2019 +0430 + + [ci] Clean up and add disabled bots of other msvc versions (#1733) + + appveyor.yml | 41 ++++++++++++++++++++++++++++++----------- + 1 file changed, 30 insertions(+), 11 deletions(-) + +commit da9d43171ba4ae0a78c92e9de83498fd2f513c8b +Author: Bruce Mitchener +Date: Tue May 28 21:50:17 2019 +0700 + + Fix some typos. + + docs/usermanual-clusters.xml | 4 ++-- + docs/usermanual-fonts-and-faces.xml | 2 +- + src/hb-ot-math.h | 2 +- + 3 files changed, 4 insertions(+), 4 deletions(-) + +commit 8a133718472d152fa1f69ec52862b019b71b371f +Author: Ebrahim Byagowi +Date: Tue May 28 13:54:45 2019 +0430 + + [test] minor, fix copyright + + nothing important, fixing a copy paste error inconsistency + + test/api/test-aat-layout.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 13316ac5d435f11c2c65fd2d762841a819afb639 +Author: Ebrahim Byagowi +Date: Tue May 28 13:48:39 2019 +0430 + + [test] minor style improve + + test/subset/run-tests.py | 38 +++++++++++++++++++------------------- + 1 file changed, 19 insertions(+), 19 deletions(-) + +commit d64fb9db520d77eb7bb40ceda4e20be5e602bf91 +Author: David Corbett +Date: Sun May 26 11:05:54 2019 -0400 + + [use] Allow U+1A60 TAI THAM SIGN SAKOT after vowel + + src/gen-use-table.py | 7 +- + src/hb-ot-shape-complex-use-machine.hh | 609 +++++++++++---------- + src/hb-ot-shape-complex-use-machine.rl | 20 +- + src/hb-ot-shape-complex-use-table.cc | 4 +- + src/hb-ot-shape-complex-use.cc | 3 + + src/hb-ot-shape-complex-use.hh | 2 + + .../3cc01fede4debd4b7794ccb1b16cdb9987ea7571.ttf | Bin 0 -> 1144 bytes + .../fd565cabd5208d345d0ed4fda7ae742917d846a5.ttf | Bin 1056 -> 0 bytes + .../shaping/data/in-house/tests/use-syllable.tests | 5 +- + 9 files changed, 351 insertions(+), 299 deletions(-) + +commit 179570d4cae9aefcd91d540b8865a81d569b3358 +Author: Behdad Esfahbod +Date: Mon May 27 13:08:07 2019 -0400 + + [atomic] Fix warning, second time + + Fixes https://bugzilla.mozilla.org/show_bug.cgi?id=1554306 + + src/hb-atomic.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ad17a8bdd571c7b275f9735e3602a8068f12934f +Author: Behdad Esfahbod +Date: Sat May 25 16:33:21 2019 -0400 + + [ucd] Update for latest packTab + + src/gen-ucd-table.py | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 771712b3ca97035ba5690e65bd7e63a852286159 +Author: Behdad Esfahbod +Date: Sat May 25 15:58:45 2019 -0400 + + [ucd] Update for recent packTab + + No need for separate youseedy package. + + src/gen-ucd-table.py | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 52aa6c57c5a4b18807a1329549dface90b148f22 +Author: Ebrahim Byagowi +Date: Sat May 25 22:55:06 2019 +0430 + + [ci] minor + + .circleci/config.yml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 9b75da4299adb5487519ddf96e99949b1dad2d5c +Author: Ebrahim Byagowi +Date: Sat May 25 22:46:10 2019 +0430 + + [ci] minor + + .circleci/config.yml | 2 ++ + 1 file changed, 2 insertions(+) + +commit 9158cab3f9f9e1a4941c1dbf0aa71455ceb00da6 +Author: Ebrahim Byagowi +Date: Sat May 25 22:33:02 2019 +0430 + + [ci] Store dist-win result instead + + .circleci/config.yml | 11 +++++------ + 1 file changed, 5 insertions(+), 6 deletions(-) + +commit 85b68a42af541bc91f2851389ac09b012a6d3aa1 +Author: Behdad Esfahbod +Date: Sat May 25 12:59:01 2019 -0400 + + [atomic] Fix warnings + + https://bugzilla.mozilla.org/show_bug.cgi?id=1554306 + + src/hb-atomic.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 941c1b6d711b8528d0f5faa5655b09ea74f7dfb4 +Author: Behdad Esfahbod +Date: Sat May 25 12:52:16 2019 -0400 + + [mingw] Update instructions + + https://github.com/harfbuzz/harfbuzz/issues/1728 + + RELEASING.md | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 210f93c143d0fa2a7b293a6ffd138b3e01cab7c0 +Author: Behdad Esfahbod +Date: Sat May 25 12:49:20 2019 -0400 + + [mutex] Prefer pthread over windows + + https://github.com/harfbuzz/harfbuzz/issues/1728 + + src/hb-mutex.hh | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +commit a5d1b0bdaa0183e2bd310640f5867426096e0b18 +Author: Behdad Esfahbod +Date: Sat May 25 12:45:40 2019 -0400 + + Look for pthread even if win32 + + https://github.com/harfbuzz/harfbuzz/issues/1728 + + configure.ac | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +commit f3b132187fc734cbb3705b405361c8bad9a72582 +Author: Behdad Esfahbod +Date: Sat May 25 12:42:38 2019 -0400 + + [mingw] Some more tweaks + + It now survives ./config.status --recheck as well. + + https://github.com/harfbuzz/harfbuzz/issues/1728 + + mingw-configure.sh | 37 ++++++++++++++++++------------------- + mingw32.sh | 2 +- + mingw64.sh | 2 +- + 3 files changed, 20 insertions(+), 21 deletions(-) + +commit c41ed54b169c16fb9862e88ddf127ae68c1561e9 +Author: Behdad Esfahbod +Date: Sat May 25 12:35:09 2019 -0400 + + [mingw] Add "make dist-win" to toplevel Makefile + + Makefile.am | 16 +++++++++++++--- + 1 file changed, 13 insertions(+), 3 deletions(-) + +commit a0a75a7c701932f4533b104eeb3c6087d01aa2ae +Author: Behdad Esfahbod +Date: Sat May 25 12:16:28 2019 -0400 + + [mingw] More + + Makefile.am | 8 +++++++- + mingw-configure.sh | 29 +++++++++++++++++++++++++++++ + mingw32.sh | 25 ++----------------------- + mingw64.sh | 25 ++----------------------- + 4 files changed, 40 insertions(+), 47 deletions(-) + +commit 309a9d8ffb499f89738864acef596685ca495150 +Author: Ebrahim Byagowi +Date: Sat May 25 20:40:03 2019 +0430 + + [ci] Remove --without-icu now that we have it in ./mingw{32,64} scripts + + .circleci/config.yml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit ccfe642c0cdc9fbc8280669e3e8b01dc5eb682d8 +Author: Behdad Esfahbod +Date: Sat May 25 12:08:05 2019 -0400 + + [mingw] Force off ICU + + If cross-compiled ICU is not available, we might end up finding the + native ICU via icu-config. That's distracting. + + mingw32.sh | 2 +- + mingw64.sh | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 0e6b7f7cd51d7376f21a422881cb4eb542360b0b +Author: Ebrahim Byagowi +Date: Sat May 25 20:27:29 2019 +0430 + + [ci] Build mingw on Fedora and store .exe outputs + + .circleci/config.yml | 16 ++++++++++++---- + 1 file changed, 12 insertions(+), 4 deletions(-) + +commit 7b716cbbe6de2902ca6b1f67024b3f8cdb41340c +Author: Behdad Esfahbod +Date: Sat May 25 11:37:23 2019 -0400 + + [ming2] Update instructions + + Part of https://github.com/harfbuzz/harfbuzz/issues/1728 + + Only left to write how to create a win32 bundle. + + README.mingw.md | 44 ++++++++++++++++++++++++++------------------ + RELEASING.md | 54 ++++++------------------------------------------------ + 2 files changed, 32 insertions(+), 66 deletions(-) + +commit 77a1b6b7c3bd5490ffa5bb48a8b52d9c4c18e669 +Author: Behdad Esfahbod +Date: Sat May 25 11:18:40 2019 -0400 + + [mingw] Rename README.wine + + Makefile.am | 2 +- + README.wine.md => README.mingw.md | 0 + 2 files changed, 1 insertion(+), 1 deletion(-) + +commit c68b4264880c0f99bcb579345e51ce54e799655b +Author: Behdad Esfahbod +Date: Sat May 25 11:17:56 2019 -0400 + + [mingw] Update for recent change + + README.wine.md | 2 +- + RELEASING.md | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit 5cf2e648a67e1af20a23e010c86e8812a74ff7a4 +Author: Behdad Esfahbod +Date: Sat May 25 11:15:15 2019 -0400 + + [mingw] Update for Fedora mingw installation location + + Also adds --with-uniscribe by default. + + Part of https://github.com/harfbuzz/harfbuzz/issues/1728 + + mingw32.sh | 9 +++++---- + mingw64.sh | 9 +++++---- + 2 files changed, 10 insertions(+), 8 deletions(-) + +commit e7ed85de95d3ccdb674ec5a30ae66d53cea74b3a +Merge: f93a5e6a 97ba206b +Author: n8willis +Date: Sat May 25 16:05:07 2019 +0100 + + Merge pull request #1691 from n8willis/usermanual-shaping + + Usermanual: Add new chapters. + +commit 97ba206bed341dc7c915a86531512b1e0617303d +Author: Nathan Willis +Date: Sat May 25 12:26:50 2019 +0100 + + Usermanual; minor. + + ...usermanual-buffers-language-script-and-direction.xml | 2 +- + docs/usermanual-opentype-features.xml | 17 ++++++++++------- + 2 files changed, 11 insertions(+), 8 deletions(-) + +commit f93a5e6a7dad4fde2bf61c241bf32da678525c8b +Author: Behdad Esfahbod +Date: Fri May 24 17:02:38 2019 -0400 + + [win] Add mingw-ldd.py + + Part of https://github.com/harfbuzz/harfbuzz/issues/1728 + + mingw-ldd.py | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 58 insertions(+) + +commit 5fd3ece5237ac6a4ee95b2665b5e20102ed176bb +Author: Behdad Esfahbod +Date: Fri May 24 15:56:15 2019 -0400 + + 2.5.0 + + Makefile.am | 2 +- + NEWS | 14 ++++++++++++++ + configure.ac | 2 +- + src/hb-version.h | 4 ++-- + 4 files changed, 18 insertions(+), 4 deletions(-) + +commit 1da089179b9bd06f071f967d128819e85998b809 +Author: Behdad Esfahbod +Date: Fri May 24 15:41:34 2019 -0400 + + Put back Since: tags for hb_color_get_* + + src/hb-common.cc | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit dd5ad6b6b5aed3db62bc03b89acf90c68795edb4 +Author: Nathan Willis +Date: Fri May 24 20:30:22 2019 +0100 + + Usermanual-buffers-chapter: trim out fallback-of-ufuncs talk and just mention that stuff exists if you care to go find it. + + docs/usermanual-buffers-language-script-and-direction.xml | 13 +++++++------ + 1 file changed, 7 insertions(+), 6 deletions(-) + +commit e1a5ce6aa661251e998df7b3612a1d5d39e28827 +Author: Qunxin Liu +Date: Fri May 24 10:58:52 2019 -0700 + + Fix fuzzer crash testcase + + Add a check for stringOffSet(uint16) overflow, + return early if overflow happens + + src/hb-ot-name-table.hh | 2 +- + ...estcase-minimized-hb-subset-fuzzer-5077547978588160 | Bin 0 -> 339602 bytes + ...estcase-minimized-hb-subset-fuzzer-5761434614497280 | Bin 0 -> 532 bytes + 3 files changed, 1 insertion(+), 1 deletion(-) + +commit 240540ff9a463cf386ae5755471a5621b94290df +Author: Nathan Willis +Date: Fri May 24 20:13:35 2019 +0100 + + Usermanual-buffers-chapter: explain ICU fallback for Ufuncs. + + docs/usermanual-buffers-language-script-and-direction.xml | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit d100ccad02b038719472b2cc733940ffb0374cd1 +Author: David Corbett +Date: Sun May 19 10:01:20 2019 -0400 + + [use] Allow multiple FMs in a cluster + + src/gen-use-table.py | 12 +- + src/hb-ot-shape-complex-use-machine.hh | 567 ++++++++++++++++----------------- + src/hb-ot-shape-complex-use-machine.rl | 14 +- + src/hb-ot-shape-complex-use-table.cc | 38 ++- + src/hb-ot-shape-complex-use.hh | 11 +- + 5 files changed, 315 insertions(+), 327 deletions(-) + +commit 322df806eef74247c8bf0da200a2cde29133950e +Author: Nathan Willis +Date: Fri May 24 19:49:19 2019 +0100 + + [Docs] Usermanual: integration chapter; add GI-Python section. + + docs/usermanual-integration.xml | 35 +++++++++++++++++++++++------------ + 1 file changed, 23 insertions(+), 12 deletions(-) + +commit 487879e013758aef2c7f824033a40cd56361d240 +Author: Behdad Esfahbod +Date: Fri May 24 12:37:53 2019 -0400 + + Don't compile in UCD if HB_NO_UCD defined + + src/hb-ucd.cc | 3 +++ + 1 file changed, 3 insertions(+) + +commit 1fffe51a295b6106a442bed8107d305c325bef05 +Author: Behdad Esfahbod +Date: Fri May 24 10:52:09 2019 -0400 + + [blob] Shuffle + + src/hb-blob.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 773c85f343e8958daf271d91d64033514289c236 +Author: Nathan Willis +Date: Fri May 24 19:23:19 2019 +0100 + + [Docs] Usermanual: integration chapter; add ICU section. + + docs/usermanual-integration.xml | 47 +++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 45 insertions(+), 2 deletions(-) + +commit 96de94768b08287325be8947255917502368c337 +Merge: c96c6b28 1197bef2 +Author: rsheeter +Date: Fri May 24 11:22:41 2019 -0700 + + Merge pull request #1722 from googlefonts/glyf + + [subset] Use iterators in glyf/loca subsetting + +commit 1197bef26c63ee896bea3fab5788635cb0fc9d18 +Author: Rod Sheeter +Date: Fri May 24 10:52:49 2019 -0700 + + [subset] Per code review, use hb_array to avoid duplicated type name + + src/hb-ot-glyf-table.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit c0bb66ecbff712221fb7c97f628ed026926229b2 +Author: Nathan Willis +Date: Fri May 24 18:49:40 2019 +0100 + + [Docs] Usermanual: integration chapter; add CoreText/Mac section. + + docs/usermanual-integration.xml | 107 +++++++++++++++++++++++++++++++++------- + 1 file changed, 89 insertions(+), 18 deletions(-) commit e66253283385aa67eb9c5ab627139a56f9ae5a71 Author: Rod Sheeter -Date: Fri May 24 10:39:56 2019 -0700 +Date: Fri May 24 10:39:56 2019 -0700 + + [subset] Cppcheck complaints + + test/api/hb-test.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 13b3cd307e7dedea3b419fb06d81a008e49ccff6 +Author: Rod Sheeter +Date: Fri May 24 10:10:12 2019 -0700 + + [subset] Address @behdad review feedback + + src/hb-ot-glyf-table.hh | 18 ++++++++---------- + 1 file changed, 8 insertions(+), 10 deletions(-) + +commit dd1c7656a5918702a81bc3aaf66e0e54fdb3c545 +Author: Nathan Willis +Date: Fri May 24 14:30:15 2019 +0100 + + [Docs] Usermanual: integration chapter; add Uniscribe/Windows section. + + docs/usermanual-integration.xml | 110 ++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 105 insertions(+), 5 deletions(-) + +commit 2da567e7b69da95738015b445901afb00094d92b +Author: Nathan Willis +Date: Fri May 24 11:13:53 2019 +0100 + + [Docs] Usermanual: platform integration chapter; add intro, GLib, FreeType sections. Update XML TOCs to match. + + docs/Makefile.am | 1 + + docs/harfbuzz-docs.xml | 1 + + docs/usermanual-integration.xml | 365 ++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 367 insertions(+) + +commit c96c6b287ff1d96da6a50a8cb3f641fe8705e5f7 +Author: Behdad Esfahbod +Date: Thu May 23 21:37:17 2019 -0400 + + One more + + .circleci/config.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b567d4ea14cc6ec0e8efc64a4993a9b0461adb20 +Author: Behdad Esfahbod +Date: Thu May 23 21:36:42 2019 -0400 + + Fix build after UCDN -> UCD + + CMakeLists.txt | 14 -------------- + configure.ac | 18 +----------------- + docs/usermanual-install-harfbuzz.xml | 34 ++++++++-------------------------- + 3 files changed, 9 insertions(+), 57 deletions(-) + +commit 226ab06ec110f4cbd56b39ce0d05d349dfec35b9 +Author: Behdad Esfahbod +Date: Thu May 23 20:39:04 2019 -0400 + + [ucd] Add URL to dependencies + + src/gen-ucd-table.py | 3 +++ + 1 file changed, 3 insertions(+) + +commit 65392b734e38668b870b1ffcbfb4b42ec289ef58 +Author: Behdad Esfahbod +Date: Wed May 22 16:21:21 2019 -0400 + + [ucdn] Replace UCDN with a new UCD implementation + + UCDN was ~120kb of data. New implementatoin is 69kb in default builds, + and 49kb if built with HB_OPTIMIZE_SIZE or __OPTIMIZE_SIZE__. The + latter automatically enabled if built with -Os or -Oz. + + There's room to shave off another 10kb or 20kb. That will follow later. + + Fixes https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/Makefile.am | 11 - + src/Makefile.sources | 5 +- + src/gen-ucd-table.py | 11 +- + src/hb-algs.hh | 8 + + src/hb-ot-layout.cc | 76 +- + src/hb-ucd-table.hh | 5160 +++++++++++++++++++++++++++++++++++++ + src/hb-ucd.cc | 209 ++ + src/hb-ucdn.cc | 272 -- + src/hb-ucdn/COPYING | 13 - + src/hb-ucdn/Makefile.am | 16 - + src/hb-ucdn/Makefile.sources | 7 - + src/hb-ucdn/README | 40 - + src/hb-ucdn/ucdn.c | 361 --- + src/hb-ucdn/ucdn.h | 472 ---- + src/hb-ucdn/ucdn_db.h | 5790 ------------------------------------------ + src/hb-unicode.cc | 8 +- + 16 files changed, 5427 insertions(+), 7032 deletions(-) + +commit 12c59f6c40401c8221facc5d0aed63f510a77dd7 +Author: Behdad Esfahbod +Date: Thu May 23 13:33:21 2019 -0400 + + [deprecated] Minor + + src/hb-deprecated.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 36dee9221f8de3a2a6a23f0548460aab4982b594 +Author: Behdad Esfahbod +Date: Wed May 22 15:51:53 2019 -0400 + + [gen-ucd] Rename + + src/Makefile.am | 1 + + src/{gen-ucd.py => gen-ucd-table.py} | 0 + 2 files changed, 1 insertion(+) + +commit 831c213501fc38229755be7958b2952fe0cdff0e +Author: Behdad Esfahbod +Date: Wed May 22 15:46:19 2019 -0400 + + [gen-ucd] Minor + + src/gen-ucd.py | 30 +++++++++++++++++++++++++++--- + 1 file changed, 27 insertions(+), 3 deletions(-) + +commit 15a9e32b566fbf6f4a2c6fd488d8cc3865234b17 +Merge: 993d81b9 ff7fc6d4 +Author: Ebrahim Byagowi +Date: Thu May 23 11:02:15 2019 +0430 + + Merge pull request #1723 from googlefonts/drop_tables + + [subset] Add morx, mort, kern, and kernx to the default layout tables… + +commit ff7fc6d488f37e3faaca4986cde35836f013b03f +Author: Garret Rieger +Date: Wed May 22 17:36:16 2019 -0700 + + [subset] Add morx, mort, kern, and kernx to the default layout tables drop list. + + src/hb-subset-input.cc | 4 ++++ + src/hb-subset.cc | 4 ++++ + 2 files changed, 8 insertions(+) + +commit 993d81b9c57f2e27d80d276953b0430821129425 +Author: Qunxin Liu +Date: Tue May 14 13:55:11 2019 -0700 + + [subset] Add one ttf file with fvar/STAT tables to integration test + Ignore gvar/MVAR/HVAR table + add support for --nameIDs=* option + + src/hb-ot-cmap-table.hh | 27 +++++++++++++++++---- + src/hb-ot-stat-table.hh | 2 +- + src/hb-subset-input.cc | 1 + + src/hb-subset-plan.cc | 6 +---- + test/api/hb-subset-test.h | 2 +- + .../Comfortaa-Regular-new.default.61,62,63.ttf | Bin 0 -> 6492 bytes + .../basics/Comfortaa-Regular-new.default.61,63.ttf | Bin 0 -> 6316 bytes + .../basics/Comfortaa-Regular-new.default.61.ttf | Bin 0 -> 6148 bytes + .../basics/Comfortaa-Regular-new.default.62.ttf | Bin 0 -> 6088 bytes + .../basics/Comfortaa-Regular-new.default.63.ttf | Bin 0 -> 6068 bytes + ...Regular-new.drop-hints-retain-gids.61,62,63.ttf | Bin 0 -> 3284 bytes + ...aa-Regular-new.drop-hints-retain-gids.61,63.ttf | Bin 0 -> 3164 bytes + ...ortaa-Regular-new.drop-hints-retain-gids.61.ttf | Bin 0 -> 2868 bytes + ...ortaa-Regular-new.drop-hints-retain-gids.62.ttf | Bin 0 -> 3020 bytes + ...ortaa-Regular-new.drop-hints-retain-gids.63.ttf | Bin 0 -> 3024 bytes + .../Comfortaa-Regular-new.drop-hints.61,62,63.ttf | Bin 0 -> 1952 bytes + .../Comfortaa-Regular-new.drop-hints.61,63.ttf | Bin 0 -> 1832 bytes + .../basics/Comfortaa-Regular-new.drop-hints.61.ttf | Bin 0 -> 1704 bytes + .../basics/Comfortaa-Regular-new.drop-hints.62.ttf | Bin 0 -> 1688 bytes + .../basics/Comfortaa-Regular-new.drop-hints.63.ttf | Bin 0 -> 1688 bytes + .../Comfortaa-Regular-new.name-ids.61,62,63.ttf | Bin 0 -> 6236 bytes + .../Comfortaa-Regular-new.name-ids.61,63.ttf | Bin 0 -> 6060 bytes + .../basics/Comfortaa-Regular-new.name-ids.61.ttf | Bin 0 -> 5892 bytes + .../basics/Comfortaa-Regular-new.name-ids.62.ttf | Bin 0 -> 5832 bytes + .../basics/Comfortaa-Regular-new.name-ids.63.ttf | Bin 0 -> 5812 bytes + .../Comfortaa-Regular-new.retain-gids.61,62,63.ttf | Bin 0 -> 7824 bytes + .../Comfortaa-Regular-new.retain-gids.61,63.ttf | Bin 0 -> 7648 bytes + .../Comfortaa-Regular-new.retain-gids.61.ttf | Bin 0 -> 7312 bytes + .../Comfortaa-Regular-new.retain-gids.62.ttf | Bin 0 -> 7420 bytes + .../Comfortaa-Regular-new.retain-gids.63.ttf | Bin 0 -> 7404 bytes + ...eSansPro-Regular.default.1FC,21,41,20,62,63.otf | Bin 3784 -> 2384 bytes + .../SourceSansPro-Regular.default.61,62,63.otf | Bin 3496 -> 2096 bytes + ...ourceSansPro-Regular.default.D7,D8,D9,DA,DE.otf | Bin 3612 -> 2212 bytes + ...subroutinize-retain-gids.1FC,21,41,20,62,63.otf | Bin 33516 -> 32124 bytes + ...Regular.desubroutinize-retain-gids.61,62,63.otf | Bin 31080 -> 29688 bytes + ...r.desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf | Bin 34708 -> 33316 bytes + ...o-Regular.desubroutinize.1FC,21,41,20,62,63.otf | Bin 3640 -> 2240 bytes + ...urceSansPro-Regular.desubroutinize.61,62,63.otf | Bin 3400 -> 2000 bytes + ...nsPro-Regular.desubroutinize.D7,D8,D9,DA,DE.otf | Bin 3596 -> 2196 bytes + ...subroutinize-retain-gids.1FC,21,41,20,62,63.otf | Bin 33352 -> 31960 bytes + ...p-hints-desubroutinize-retain-gids.61,62,63.otf | Bin 30956 -> 29564 bytes + ...s-desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf | Bin 34560 -> 33168 bytes + ...rop-hints-desubroutinize.1FC,21,41,20,62,63.otf | Bin 3480 -> 2080 bytes + ...-Regular.drop-hints-desubroutinize.61,62,63.otf | Bin 3288 -> 1876 bytes + ...ar.drop-hints-desubroutinize.D7,D8,D9,DA,DE.otf | Bin 3448 -> 2048 bytes + ...r.drop-hints-retain-gids.1FC,21,41,20,62,63.otf | Bin 33448 -> 32052 bytes + ...Pro-Regular.drop-hints-retain-gids.61,62,63.otf | Bin 31028 -> 29632 bytes + ...gular.drop-hints-retain-gids.D7,D8,D9,DA,DE.otf | Bin 34576 -> 33180 bytes + ...nsPro-Regular.drop-hints.1FC,21,41,20,62,63.otf | Bin 3564 -> 2164 bytes + .../SourceSansPro-Regular.drop-hints.61,62,63.otf | Bin 3340 -> 1940 bytes + ...ceSansPro-Regular.drop-hints.D7,D8,D9,DA,DE.otf | Bin 3464 -> 2064 bytes + ...sPro-Regular.retain-gids.1FC,21,41,20,62,63.otf | Bin 33668 -> 32276 bytes + .../SourceSansPro-Regular.retain-gids.61,62,63.otf | Bin 31180 -> 29788 bytes + ...eSansPro-Regular.retain-gids.D7,D8,D9,DA,DE.otf | Bin 34724 -> 33332 bytes + .../Roboto-Regular.default.1FC,21,41,20,62,63.ttf | Bin 3772 -> 3164 bytes + .../full-font/Roboto-Regular.default.61,62,63.ttf | Bin 3368 -> 2760 bytes + .../Roboto-Regular.default.D7,D8,D9,DA,DE.ttf | Bin 3732 -> 3124 bytes + ...oboto-Regular.drop-hints.1FC,21,41,20,62,63.ttf | Bin 2224 -> 1616 bytes + .../Roboto-Regular.drop-hints.61,62,63.ttf | Bin 2016 -> 1408 bytes + .../Roboto-Regular.drop-hints.D7,D8,D9,DA,DE.ttf | Bin 2252 -> 1644 bytes + ...gular.default.3042,3044,3046,3048,304A,304B.ttf | Bin 3112 -> 2684 bytes + ...gular.default.3042,3044,3046,73E0,5EA6,8F38.ttf | Bin 3356 -> 2928 bytes + .../Mplus1p-Regular.default.61,63,65,6B.ttf | Bin 2656 -> 2228 bytes + ...gular.default.660E,6975,73E0,5EA6,8F38,6E05.ttf | Bin 3652 -> 3224 bytes + .../japanese/Mplus1p-Regular.default.660E.ttf | Bin 2396 -> 1968 bytes + ...ar.drop-hints.3042,3044,3046,3048,304A,304B.ttf | Bin 2384 -> 1956 bytes + ...ar.drop-hints.3042,3044,3046,73E0,5EA6,8F38.ttf | Bin 2628 -> 2200 bytes + .../Mplus1p-Regular.drop-hints.61,63,65,6B.ttf | Bin 1928 -> 1500 bytes + ...ar.drop-hints.660E,6975,73E0,5EA6,8F38,6E05.ttf | Bin 2924 -> 2496 bytes + .../japanese/Mplus1p-Regular.drop-hints.660E.ttf | Bin 1668 -> 1240 bytes + test/subset/data/fonts/Comfortaa-Regular-new.ttf | Bin 0 -> 230316 bytes + test/subset/data/tests/basics.tests | 1 + + test/subset/generate-expected-outputs.py | 3 +-- + test/subset/run-tests.py | 3 ++- + util/options-subset.cc | 23 +++++++++++++++--- + 75 files changed, 50 insertions(+), 18 deletions(-) + +commit 58ce477ac170969430310750b78dcb5f9e3b06a3 +Author: Rod Sheeter +Date: Tue May 21 20:22:40 2019 -0700 + + [subset] Report failure more often + + src/hb-ot-glyf-table.hh | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 51a0129f7322e97825455df4eb6eecfea14980f5 +Author: Rod Sheeter +Date: Tue May 21 20:12:19 2019 -0700 + + [subset] Thar be comparison of integers of different signs + + test/api/hb-test.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 14e3b0cf41d9657c39f1f921f7e09a1418fa3278 +Author: Rod Sheeter +Date: Tue May 21 20:09:36 2019 -0700 + + [subset] Code review feedback + + src/hb-ot-glyf-table.hh | 53 +++++++++++++++++++++++++------------------------ + 1 file changed, 27 insertions(+), 26 deletions(-) + +commit a03ed95e7d50b9dd947e8982c7730de969795b05 +Author: Behdad Esfahbod +Date: Tue May 21 16:43:14 2019 -0400 + + [gen-ucd] Generate decomposition tables + + Code is ugly. Ugh. + + src/gen-ucd.py | 40 ++++++++++++++++++++-------------------- + 1 file changed, 20 insertions(+), 20 deletions(-) + +commit 8a48c88fa9fe047a83ba4a45dbd6399412ca3302 +Author: Behdad Esfahbod +Date: Tue May 21 13:02:54 2019 -0400 + + [gen-ucd] Comment + + src/gen-ucd.py | 4 ++++ + 1 file changed, 4 insertions(+) + +commit b71d353cee89a6654810f75e7a1d7fd156b76faa +Author: Behdad Esfahbod +Date: Mon May 20 17:33:55 2019 -0400 + + [gen-ucd] Remove some code + + src/gen-ucd.py | 7 ------- + 1 file changed, 7 deletions(-) + +commit 4ea44112b5163591ce0b086e0d13ec368f4f6ddc +Author: Rod Sheeter +Date: Tue May 21 13:07:43 2019 -0700 + + [subset] Remove missed reference to hb-subset-glyf, was deleted + + src/Makefile.sources | 1 - + 1 file changed, 1 deletion(-) + +commit b928de91a755788fd0fad9fa0f5f03c5670ac6a3 +Author: Garret Rieger +Date: Tue May 21 11:23:26 2019 -0700 + + [subset] Add test/subset/data/expected/layout to dist list. + + test/subset/data/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit 0af9de13b78ddd35f58ee02ce8ffeffd99509ec5 +Author: Garret Rieger +Date: Mon May 20 15:04:20 2019 -0700 + + [subset] For gsub subsetting only consider glyphs reachable via gsub closure. + + src/hb-ot-layout-gsub-table.hh | 4 +-- + src/hb-subset-plan.cc | 55 ++++++++++++++++++++---------------------- + src/hb-subset-plan.hh | 10 ++++++++ + 3 files changed, 38 insertions(+), 31 deletions(-) + +commit c740c8636b48b1790bba42445a301e8e1cf8f749 +Author: Garret Rieger +Date: Thu May 16 10:57:33 2019 -0700 + + [subset] Add integration tests for SingleSubst. + + test/subset/data/Makefile.sources | 1 + + ...ular.smallcaps.keep-layout-retain-gids.41,42,43.ttf | Bin 0 -> 6780 bytes + ...Regular.smallcaps.keep-layout-retain-gids.41,43.ttf | Bin 0 -> 6396 bytes + ...to-Regular.smallcaps.keep-layout-retain-gids.41.ttf | Bin 0 -> 6032 bytes + ...to-Regular.smallcaps.keep-layout-retain-gids.43.ttf | Bin 0 -> 6088 bytes + ...Regular.smallcaps.keep-layout-retain-gids.CA,CB.ttf | Bin 0 -> 7932 bytes + .../Roboto-Regular.smallcaps.keep-layout.41,42,43.ttf | Bin 0 -> 2972 bytes + .../Roboto-Regular.smallcaps.keep-layout.41,43.ttf | Bin 0 -> 2572 bytes + .../layout/Roboto-Regular.smallcaps.keep-layout.41.ttf | Bin 0 -> 2196 bytes + .../layout/Roboto-Regular.smallcaps.keep-layout.43.ttf | Bin 0 -> 2268 bytes + .../Roboto-Regular.smallcaps.keep-layout.CA,CB.ttf | Bin 0 -> 2612 bytes + test/subset/data/fonts/Roboto-Regular.smallcaps.ttf | Bin 0 -> 131632 bytes + test/subset/data/profiles/keep-layout-retain-gids.txt | 2 ++ + test/subset/data/profiles/keep-layout.txt | 1 + + test/subset/data/tests/full-font.tests | 1 - + test/subset/data/tests/layout.tests | 13 +++++++++++++ + test/subset/generate-expected-outputs.py | 3 ++- + 17 files changed, 19 insertions(+), 2 deletions(-) + +commit 349d692b0ee45330220fd3ec9267979d73acd149 +Author: Rod Sheeter +Date: Tue May 21 12:38:53 2019 -0700 + + [subset] Iter in and out for loca + + src/hb-ot-glyf-table.hh | 31 ++++++++++++++++--------------- + test/api/hb-test.h | 7 ++----- + 2 files changed, 18 insertions(+), 20 deletions(-) + +commit 95445d79be0a79e6e2d384d46819730146d397d8 +Author: Rod Sheeter +Date: Tue May 21 11:14:31 2019 -0700 + + [subset] Write loca using more idiomatic harfbuzzese + + src/hb-ot-glyf-table.hh | 35 +++++++++++++++++++---------------- + 1 file changed, 19 insertions(+), 16 deletions(-) + +commit d1b12a546561a78ae3c3e9d6bffa057caf82dbee +Merge: 3a43603e f49a5bec +Author: Rod Sheeter +Date: Mon May 20 21:29:54 2019 -0700 + + Merge branch 'master' of https://github.com/harfbuzz/harfbuzz into glyf + +commit 3a43603ecea2c349f58396e103a52948776681e0 +Author: Rod Sheeter +Date: Mon May 20 20:40:55 2019 -0700 + + [subset] Fix memory leak caused by failure to cleanup glyf accelerator + + src/hb-ot-glyf-table.hh | 42 ++++++++++++++++++++++++++---------------- + 1 file changed, 26 insertions(+), 16 deletions(-) + +commit 5cedda5e4a3f726168b87d357aee723e6fd919cd +Author: Rod Sheeter +Date: Thu May 16 19:16:52 2019 -0700 + + [subset] Fix null pointer deref, tidy up a bit + + src/hb-ot-glyf-table.hh | 282 +++++++++++++++++++++++++------------------- + test/api/test-subset-glyf.c | 18 +-- + 2 files changed, 167 insertions(+), 133 deletions(-) + +commit 8a84b540c7b850c1fb30d5bc1ffdeb43033be173 +Author: Rod Sheeter +Date: Thu May 16 19:14:16 2019 -0700 + + [subset] Tests passing using iterator based glyf + + src/hb-ot-glyf-table.hh | 117 +++++++++++++++++++++++++++++++------------- + test/api/test-subset-glyf.c | 4 +- + 2 files changed, 86 insertions(+), 35 deletions(-) + +commit 82bbec306376d61b6700461c4038c6789e60a998 +Merge: 9d09ac13 b7be5931 +Author: Rod Sheeter +Date: Thu May 16 15:14:01 2019 -0700 + + Merge branch 'master' of https://github.com/harfbuzz/harfbuzz into glyf + +commit 9d09ac13a114967576284d0b006a0ac7965d928a +Author: rsheeter +Date: Sat May 11 23:16:40 2019 -0700 + + [subset] Tweak hint stripping + + src/hb-ot-glyf-table.hh | 46 +++++++++++++++++++++++++++++++++------------- + 1 file changed, 33 insertions(+), 13 deletions(-) + +commit 3a4c928fcfce5a8c7a56907b9945e87b0ce8e327 +Author: rsheeter +Date: Sat May 11 22:06:46 2019 -0700 + + [subset] Fix glyf tests except hint stripping & local test asan + + src/hb-ot-glyf-table.hh | 93 +++++++++++++++++++++++++++++++++------------ + test/api/hb-subset-test.h | 2 +- + test/api/hb-test.h | 13 +++++++ + test/api/test-subset-glyf.c | 8 ++-- + 4 files changed, 86 insertions(+), 30 deletions(-) + +commit b77dde8f138442935e5ca99460a520a4117d6dd2 +Author: Rod Sheeter +Date: Fri May 10 16:52:19 2019 -0700 + + [subset] Destroy blob + + src/hb-ot-glyf-table.hh | 2 ++ + 1 file changed, 2 insertions(+) + +commit 14db6512f8dca80a575f468708949346b005834a +Author: Rod Sheeter +Date: Fri May 10 09:32:43 2019 -0700 + + [subset] Correct flipped use short computation + + src/hb-ot-glyf-table.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit ab3fe5de2bbe10fdc13711537f824b62d091f995 +Author: Rod Sheeter +Date: Thu May 9 22:12:20 2019 -0700 + + [subset] Glyf by iter now runs but fails tests + + src/hb-ot-glyf-table.hh | 88 +++++++++++++++++++++++++++++++++---------------- + 1 file changed, 59 insertions(+), 29 deletions(-) + +commit f8de063b48c243d551c8892bdd2a799606fda3f4 +Merge: 0d7fef2d 8f174870 +Author: Rod Sheeter +Date: Thu May 9 20:02:38 2019 -0700 + + Merge branch 'glyf' of github.com:googlefonts/harfbuzz into glyf + +commit 0d7fef2d50bba714815c0c13f3b3dd6464710a1d +Author: rsheeter +Date: Wed May 8 16:52:00 2019 -0700 + + [subset] Dinner time, checkpoint + + src/hb-ot-glyf-table.hh | 97 +++++++++++++++++++++++++++++-------------------- + 1 file changed, 58 insertions(+), 39 deletions(-) + +commit 240bc86e3a0b177ee84ec9c60723304a0cf4c405 +Author: rsheeter +Date: Wed May 8 14:59:03 2019 -0700 + + [subset] Remove subset-glyf; want everything to point to new iter-based edition. Some of the code will resurface as impl builds out. + + src/Makefile.sources | 2 - + src/hb-ot-glyf-table.hh | 9 +- + src/hb-subset-glyf.cc | 346 ------------------------------------------------ + src/hb-subset-glyf.hh | 40 ------ + src/hb-subset.cc | 1 - + 5 files changed, 6 insertions(+), 392 deletions(-) + +commit 02d4d4f3e67dcc37915bc386d506bb272455ff1e +Author: rsheeter +Date: Wed May 8 14:43:18 2019 -0700 + + [subset] Starting to sketch glyf as iter + + src/hb-ot-glyf-table.hh | 60 ++++++++++++++++++++++++++++++++++++------------- + src/hb-subset-plan.hh | 2 ++ + src/hb-subset.cc | 2 +- + 3 files changed, 47 insertions(+), 17 deletions(-) + +commit 8f174870e9eed4c47463fdb0d4fe3e22a6f5fdc8 +Author: rsheeter +Date: Wed May 8 16:52:00 2019 -0700 + + [subset] Dinner time, checkpoint + + src/hb-ot-glyf-table.hh | 97 +++++++++++++++++++++++++++++-------------------- + 1 file changed, 58 insertions(+), 39 deletions(-) + +commit 723d054dcb6ad44e9eab4dc8cc55f8d480d2ff16 +Merge: ed727d4b e2a51ff7 +Author: rsheeter +Date: Wed May 8 16:45:35 2019 -0700 + + Merge branch 'master' of https://github.com/harfbuzz/harfbuzz into glyf + +commit ed727d4bb74860c126675e94f87f65ff7874dbb6 +Merge: fb9bff95 e8b45c19 +Author: rsheeter +Date: Wed May 8 16:39:45 2019 -0700 + + Merge branch 'master' of https://github.com/harfbuzz/harfbuzz into glyf + +commit fb9bff955a9356b053c5c9bcd7aa9101edb55767 +Author: rsheeter +Date: Wed May 8 14:59:03 2019 -0700 + + [subset] Remove subset-glyf; want everything to point to new iter-based edition. Some of the code will resurface as impl builds out. + + src/Makefile.sources | 2 - + src/hb-ot-glyf-table.hh | 9 +- + src/hb-subset-glyf.cc | 346 ------------------------------------------------ + src/hb-subset-glyf.hh | 40 ------ + src/hb-subset.cc | 1 - + 5 files changed, 6 insertions(+), 392 deletions(-) + +commit f9b089b695edc89023e3d62700ae68d5648f8494 +Author: rsheeter +Date: Wed May 8 14:43:18 2019 -0700 + + [subset] Starting to sketch glyf as iter + + src/hb-ot-glyf-table.hh | 60 ++++++++++++++++++++++++++++++++++++------------- + src/hb-subset-plan.hh | 2 ++ + src/hb-subset.cc | 2 +- + 3 files changed, 47 insertions(+), 17 deletions(-) + +commit f49a5bec9fc241c098be5a49233aa83cd5dc098e +Author: rsheeter +Date: Mon May 20 20:45:11 2019 -0700 + + [docs] Tweak fuzzer doc + + TESTING.md | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 1aadd1449c65c50d5f35191f43136841c64ad399 +Author: Behdad Esfahbod +Date: Mon May 20 17:29:13 2019 -0400 + + [gen-ucd] Generate script order table + + src/gen-ucd.py | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit be8de188671c04ddd8ec4d7af38b313322189136 +Author: Behdad Esfahbod +Date: Mon May 20 17:17:38 2019 -0400 + + [gen-ucd] Start adding script-order + + src/gen-ucd.py | 14 +++++++++++++- + 1 file changed, 13 insertions(+), 1 deletion(-) + +commit 4a0eb066fdceb0cab48107f17670d6943ec0d61e +Author: Behdad Esfahbod +Date: Mon May 20 16:57:04 2019 -0400 + + [gen-ucd] Add gc order + + src/gen-ucd.py | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit d1f9b2f961c71e5218ee359e8fb20cfbdb894c7e +Author: Behdad Esfahbod +Date: Mon May 20 15:47:49 2019 -0400 + + [gen-ucd] Flesh out a bit more + + src/gen-ucd.py | 52 ++++++++++++++++++++++++++++++++++++++++------------ + 1 file changed, 40 insertions(+), 12 deletions(-) + +commit d6de4659aa7edb991507f8838dc566874e5b6a61 +Author: Behdad Esfahbod +Date: Mon May 20 15:33:23 2019 -0400 + + Add HB_OPTIMIZE_SIZE + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-config.hh | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit 0ff3618c2d841d16cce9ba2d73321048e7ca6a2d +Author: Garret Rieger +Date: Fri May 17 15:30:01 2019 -0700 + + [subset] Use hb_subset_input_t inside of subset_options_t so that input defaults are shared between the library and cli. + + src/hb-subset-input.cc | 42 ++++++++----- + src/hb-subset-input.hh | 7 +-- + src/hb-subset-plan.cc | 3 +- + src/hb-subset-plan.hh | 1 - + src/hb-subset.cc | 23 +------ + src/hb-subset.h | 6 -- + test/api/test-subset-glyf.c | 8 ++- + test/fuzzing/hb-subset-fuzzer.cc | 8 ++- + util/Makefile.am | 5 +- + util/Makefile.sources | 1 + + util/hb-subset.cc | 9 +-- + util/options-subset.cc | 127 +++++++++++++++++++++++++++++++++++++++ + util/options.cc | 101 ------------------------------- + util/options.hh | 20 ++---- + 14 files changed, 182 insertions(+), 179 deletions(-) + +commit 67064294a0c521550f5277b51b8c7e5d6bb27e68 +Author: Garret Rieger +Date: Thu May 16 15:13:39 2019 -0700 + + [subset] Add drop-tables option to hb-subset util. + + util/hb-subset.cc | 1 + + util/options.cc | 45 ++++++++++++++++++++++++++++++++++++++++++--- + util/options.hh | 3 +++ + 3 files changed, 46 insertions(+), 3 deletions(-) + +commit 3be0ffe45d1ba32ddd8d3af25ff2c420be85da76 +Author: Garret Rieger +Date: Thu May 16 11:29:15 2019 -0700 + + [subset] Add drop tables to subset input. + + src/hb-subset-input.cc | 8 +++++ + src/hb-subset-input.hh | 1 + + src/hb-subset-plan.cc | 3 ++ + src/hb-subset-plan.hh | 5 ++- + src/hb-subset.cc | 3 ++ + src/hb-subset.h | 3 ++ + test/api/Makefile.am | 2 ++ + test/api/test-subset-drop-tables.c | 71 ++++++++++++++++++++++++++++++++++++++ + 8 files changed, 95 insertions(+), 1 deletion(-) + +commit d00a20bedc5706d4d764f78ea108ca4316651b11 +Author: Nathan Willis +Date: Mon May 20 17:38:38 2019 +0100 + + [Docs] Add gtk-doc comments to hb-graphite2. + + src/hb-graphite2.cc | 16 ++++++++++++++-- + src/hb-graphite2.h | 10 +++++++++- + 2 files changed, 23 insertions(+), 3 deletions(-) + +commit 0a5a8fcbceb49f317a16803da090864f9ea03577 +Author: Nathan Willis +Date: Mon May 20 17:38:13 2019 +0100 + + [Docs] Add gtk-doc comments to hb-icu. + + src/hb-icu.cc | 35 ++++++++++++++++++++++++++++++++++- + 1 file changed, 34 insertions(+), 1 deletion(-) + +commit 9126a5ff070fe1191dfaf852aa601d506ddcffcb +Author: Nathan Willis +Date: Mon May 20 17:37:56 2019 +0100 + + [Docs] Add gtk-doc comments to hb-ft. + + src/hb-ft.cc | 135 +++++++++++++++++++++++++++++++++++++++++++++++++++-------- + 1 file changed, 117 insertions(+), 18 deletions(-) + +commit bfa7b0af02a6ec66898723fe3e82f74760996a10 +Author: Nathan Willis +Date: Mon May 20 17:36:55 2019 +0100 + + [Docs] Add gtk-doc comments to hb-gobject and hb-glib. + + src/hb-glib.cc | 44 +++++++++++++++++++++++++++++++++++++++++++- + src/hb-gobject-structs.cc | 13 +++++++++++-- + 2 files changed, 54 insertions(+), 3 deletions(-) + +commit 27222253d42d0485ec5a9a3db602f5cba64df94e +Author: Nathan Willis +Date: Mon May 20 17:36:18 2019 +0100 + + [Docs] Add gtk-doc comments to hb-uniscribe. + + src/hb-uniscribe.cc | 22 +++++++++++++++++++++- + 1 file changed, 21 insertions(+), 1 deletion(-) + +commit 32ae0d3e78c4e1f7299cb4fa251c0e66b3d5ae78 +Author: Nathan Willis +Date: Mon May 20 17:35:39 2019 +0100 + + [Docs] Add gtk-doc comments to hb-coretext. + + src/hb-coretext.cc | 45 +++++++++++++++++++++++++++++++++++++++++---- + src/hb-coretext.h | 32 ++++++++++++++++++++++++++++++++ + 2 files changed, 73 insertions(+), 4 deletions(-) + +commit 0ca7ad4352eff357cbb5cc1dfe62aa15b440de84 +Author: Behdad Esfahbod +Date: Mon May 20 11:39:07 2019 -0400 + + [cff] Fix unlikely invocations + + src/hb-ot-cff-common.hh | 8 ++++---- + src/hb-ot-cff1-table.hh | 2 +- + 2 files changed, 5 insertions(+), 5 deletions(-) + +commit 9ef241cd409b7ad4eeb8259cbf1a7a01358a766e +Author: Behdad Esfahbod +Date: Mon May 20 11:38:02 2019 -0400 + + [test] Add one more + + ...-testcase-minimized-hb-subset-fuzzer-5634197349203968 | Bin 0 -> 5791 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) + +commit 3efb7af7e28061f8cd138eb2ed5261bf521abc63 +Author: Behdad Esfahbod +Date: Mon May 20 11:37:16 2019 -0400 + + [STAT] Fix sanitize condition + + Oops! + + Fixes https://oss-fuzz.com/testcase-detail/5696825891225600 + + src/hb-ot-stat-table.hh | 2 +- + ...zz-testcase-minimized-hb-subset-fuzzer-5696825891225600 | Bin 0 -> 69 bytes + 2 files changed, 1 insertion(+), 1 deletion(-) + +commit e66eb21a46b2374bfb51f86ed9f5eec35ba87a61 +Author: Ebrahim Byagowi +Date: Sat May 18 07:44:48 2019 -0700 + + Don't set _POSIX_C_SOURCE in NetBSD + + According to a harfbuzz package patch on NetBSD project + https://github.com/NetBSD/pkgsrc/blob/trunk/fonts/harfbuzz/patches/patch-src_hb-blob.cc + + src/hb-blob.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 08c3648c6e18a0969a64284337dbd5b435d40f37 +Author: Behdad Esfahbod +Date: Fri May 17 16:21:34 2019 -0700 + + Oops, fix include + + src/hb-set.hh | 1 + + 1 file changed, 1 insertion(+) + +commit 24958b8868a8003936e872d8fda873c52d528bcf +Author: Behdad Esfahbod +Date: Fri May 17 16:20:36 2019 -0700 + + [set] Use StructAtOffsetUnaligned + + src/hb-set.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a0febbac439ac4cc58af674f676e473d2f6d726f +Author: rsheeter +Date: Thu May 16 15:58:49 2019 -0700 + + Update TESTING.md + + TESTING.md | 5 +++++ + 1 file changed, 5 insertions(+) + +commit b7be59311f27112791e9b9c6356464e1c3ff92c1 +Author: Behdad Esfahbod +Date: Thu May 16 13:32:56 2019 -0700 + + Fix msan issue + + The fact that HB_AUTO_RETURN will return rvalue-references for rvalues + is very disturbing. + + Even apart from that, I'm totally lost re any hb_move needs or + hb_forward'ing to functions/templates where the type is fixed by + explicitly specifying template parameters. + + ==1==ERROR: AddressSanitizer: stack-use-after-return on address 0x7f6ad65e51e0 at pc 0x0000005da240 bp 0x7ffc104ab670 sp 0x7ffc104ab668 + READ of size 4 at 0x7f6ad65e51e0 thread T0 + SCARINESS: 55 (4-byte-read-stack-use-after-return) + #0 0x5da23f in bool OT::Coverage::serialize, OT::SingleSubstFormat1::subset(hb_subset_context_t*) const::'lambda'(unsigned int), (hb_function_sortedness_t)1, (void*)0>, $_20&, (hb_function_sortedness_t)1, (void*)0>, (void*)0>(hb_serialize_context_t*, hb_map_iter_t, OT::SingleSubstFormat1::subset(hb_subset_context_t*) const::'lambda'(unsigned int), (hb_function_sortedness_t)1, (void*)0>, $_20&, (hb_function_sortedness_t)1, (void*)0>) harfbuzz/src/hb-ot-layout-common.hh:1055:16 + #1 0x5d88f9 in bool OT::SingleSubstFormat1::serialize, OT::SingleSubstFormat1::subset(hb_subset_context_t*) const::'lambda'(unsigned int), (hb_function_sortedness_t)1, (void*)0>, $_20&, (hb_function_sortedness_t)1, (void*)0>, (void*)0>(hb_serialize_context_t*, hb_map_iter_t, OT::SingleSubstFormat1::subset(hb_subset_context_t*) const::'lambda'(unsigned int), (hb_function_sortedness_t)1, (void*)0>, $_20&, (hb_function_sortedness_t)1, (void*)0>, unsigned int) harfbuzz/src/hb-ot-layout-gsub-table.hh:98:9 + + src/hb-algs.hh | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit bcd3ffc948f63f59a709923a3ba6dc9d591aae6b +Author: Behdad Esfahbod +Date: Thu May 16 13:22:09 2019 -0700 + + Whitespace + + src/hb-ot-layout-gsub-table.hh | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +commit 05bc5f96fb0818531404174b71c6ff497d5e2738 +Author: Behdad Esfahbod +Date: Thu May 16 13:05:58 2019 -0700 + + [subset] Remove extra iteration + + src/hb-ot-layout-gsub-table.hh | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 6555f209586886a4b2562412363cf152d7837d5c +Author: Garret Rieger +Date: Wed May 15 09:42:38 2019 -0700 + + [subset] Truncate empty gids at the end in retain-gids mode. + + src/hb-subset-plan.cc | 8 ++++--- + test/api/fonts/Roboto-Regular.a.retaingids.ttf | Bin 0 -> 2068 bytes + .../SourceHanSans-Regular.41,4C2E.retaingids.otf | Bin 2736 -> 2656 bytes + test/api/test-subset-glyf.c | 25 +++++++++++++++++++++ + ...oboto-Regular.abc.drop-hints-retain-gids.61.ttf | Bin 744 -> 732 bytes + ...oboto-Regular.abc.drop-hints-retain-gids.62.ttf | Bin 712 -> 704 bytes + .../basics/Roboto-Regular.abc.retain-gids.61.ttf | Bin 1808 -> 1792 bytes + .../basics/Roboto-Regular.abc.retain-gids.62.ttf | Bin 1756 -> 1748 bytes + 8 files changed, 30 insertions(+), 3 deletions(-) + +commit 2376867649f97d25e4319f45845525ec207887f7 +Author: Behdad Esfahbod +Date: Wed May 15 21:57:26 2019 -0700 + + Use hb_map(hb_add(this)) to dereference OffsetTo<>'s + + src/hb-ot-layout-gsub-table.hh | 30 ++++++++++++++------- + src/hb-ot-layout-gsubgpos.hh | 60 ++++++++++++++++++++++++++++-------------- + src/hb-ot-stat-table.hh | 2 +- + 3 files changed, 61 insertions(+), 31 deletions(-) + +commit 6f51e5552477125480f764a6af763dad9f8e3e1b +Author: Behdad Esfahbod +Date: Wed May 15 21:41:12 2019 -0700 + + [algs] Rename hb_bind to hb_partial + + Since our API is the invers of what std::bind is, and closer to Python + functools.partial(). + + src/hb-algs.hh | 12 ++++++------ + src/test-algs.cc | 6 +++--- + 2 files changed, 9 insertions(+), 9 deletions(-) + +commit 0888e7bc86454020db45f78ee1136d6f3a1b9527 +Author: Behdad Esfahbod +Date: Wed May 15 21:36:42 2019 -0700 + + [algs] Change hb_bind parameter number to be from one + + To match std:;bind, even though our interfaces are very different. + + src/hb-algs.hh | 24 +++++++++++++----------- + src/test-algs.cc | 6 +++--- + 2 files changed, 16 insertions(+), 14 deletions(-) + +commit dfa5e4297147b52f0ed2f569c9b90a0c68c003c4 +Author: Behdad Esfahbod +Date: Wed May 15 21:18:14 2019 -0700 + + Add back symmetric OffsetTo<>::friend operator+ + + Finally seems to be working now. + + src/hb-open-type.hh | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit a06a236891611da9db601ddbc2b1513380ad12e6 +Author: Behdad Esfahbod +Date: Wed May 15 21:12:22 2019 -0700 + + [algs] Partialize all operators + + src/hb-algs.hh | 66 +++++++++++++++++++++++++++++++++++--------------------- + src/test-algs.cc | 4 ++-- + 2 files changed, 44 insertions(+), 26 deletions(-) + +commit edc69ec935511d1993240fb68b54b2cfd6afa888 +Author: Behdad Esfahbod +Date: Wed May 15 21:09:56 2019 -0700 + + [algs] Rewrite bind API + + And add a partialization API use example to hb_add() + + src/hb-algs.hh | 45 ++++++++++++++++++++------------------------- + src/test-algs.cc | 9 ++++++--- + 2 files changed, 26 insertions(+), 28 deletions(-) + +commit 16a3540ea4257a19b9bfd9d5300a280e18b423a1 +Author: Behdad Esfahbod +Date: Wed May 15 20:48:20 2019 -0700 + + [algs] Add hb_bind0 and hb_bind1 + + src/hb-algs.hh | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + src/test-algs.cc | 7 +++++++ + 2 files changed, 61 insertions(+) + +commit d214b07883a626f3ecebb027797e8bb994e174a4 +Author: Behdad Esfahbod +Date: Wed May 15 19:07:39 2019 -0700 + + Fix clang build + + Ugh. + + In file included from hb-ot-face.cc:41: + ./hb-ot-layout-gsub-table.hh:293:7: error: template parameter redefines default argument + hb_requires (hb_is_sorted_source_of (Iterator, + ^ + ./hb-meta.hh:59:27: note: expanded from macro 'hb_requires' + define hb_requires(Cond) hb_enable_if((Cond)) + ^ + ./hb-meta.hh:57:67: note: expanded from macro 'hb_enable_if' + define hb_enable_if(Cond) typename hb_enable_if<(Cond)>::type* = nullptr + ^ + ./hb-ot-layout-gsub-table.hh:40:5: note: previous default template argument defined here + hb_requires (hb_is_sorted_source_of (Iterator, + ^ + ./hb-meta.hh:59:27: note: expanded from macro 'hb_requires' + define hb_requires(Cond) hb_enable_if((Cond)) + ^ + ./hb-meta.hh:57:67: note: expanded from macro 'hb_enable_if' + define hb_enable_if(Cond) typename hb_enable_if<(Cond)>::type* = nullptr + ^ + + src/hb-ot-layout-gsub-table.hh | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +commit 371b55c7a0c718fcaca0330edfeacf610797cf7a +Author: Behdad Esfahbod +Date: Wed May 15 18:54:07 2019 -0700 + + Fix clang build + + In file included from hb-ot-face.cc:41: + ./hb-ot-layout-gsub-table.hh:293:7: error: template parameter redefines default argument + hb_requires (hb_is_sorted_source_of (Iterator, + ^ + ./hb-meta.hh:59:27: note: expanded from macro 'hb_requires' + define hb_requires(Cond) hb_enable_if((Cond)) + ^ + ./hb-meta.hh:57:67: note: expanded from macro 'hb_enable_if' + define hb_enable_if(Cond) typename hb_enable_if<(Cond)>::type* = nullptr + ^ + ./hb-ot-layout-gsub-table.hh:40:5: note: previous default template argument defined here + hb_requires (hb_is_sorted_source_of (Iterator, + ^ + ./hb-meta.hh:59:27: note: expanded from macro 'hb_requires' + define hb_requires(Cond) hb_enable_if((Cond)) + ^ + ./hb-meta.hh:57:67: note: expanded from macro 'hb_enable_if' + define hb_enable_if(Cond) typename hb_enable_if<(Cond)>::type* = nullptr + ^ + 1 error generated. + + src/hb-ot-layout-gsub-table.hh | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +commit 243a5a6af2565937705d6bc20e65a62b686bb664 +Author: Behdad Esfahbod +Date: Wed May 15 19:03:59 2019 -0700 + + [algs] Remove pair copy constructor + + Use default. + + src/hb-algs.hh | 1 - + src/test-algs.cc | 1 + + 2 files changed, 1 insertion(+), 1 deletion(-) + +commit f92d188d7703184d04e8f205ae46ca3081d3e048 +Author: Behdad Esfahbod +Date: Wed May 15 18:52:57 2019 -0700 + + Whitespace + + src/hb-ot-layout-gsub-table.hh | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +commit 962f95cf802404dafadf2f999772d3f9fc949d63 +Author: Garret Rieger +Date: Thu May 9 13:04:11 2019 -0700 + + [subset] Switch SingleSubst to use iterators in serialize. + + src/hb-ot-layout-common.hh | 6 +-- + src/hb-ot-layout-gsub-table.hh | 97 +++++++++++++++++++++++++----------------- + 2 files changed, 62 insertions(+), 41 deletions(-) + +commit 78d35f0e780dd811ae103c96f3b1060d49046a7a +Author: Behdad Esfahbod +Date: Wed May 15 18:15:05 2019 -0700 + + Reduce captures of lambdas + + src/hb-ot-hdmx-table.hh | 4 ++-- + src/hb-ot-layout-gpos-table.hh | 2 +- + src/hb-ot-layout-gsub-table.hh | 29 +++++++++++++++-------------- + src/hb-ot-layout-gsubgpos.hh | 12 ++++++------ + src/hb-ot-name-table.hh | 2 +- + src/hb-ot-stat-table.hh | 2 +- + src/hb-ot-var-fvar-table.hh | 4 ++-- + src/hb-subset-plan.cc | 2 +- + src/test-iter.cc | 4 ++-- + 9 files changed, 31 insertions(+), 30 deletions(-) + +commit 5266ca86b633b84850492b7982334fb63271ccbc +Author: Behdad Esfahbod +Date: Wed May 15 17:59:00 2019 -0700 + + Fix tests + + Oops. + + src/test-algs.cc | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 5da8a3a90db5e5ccaaf68de2ac312108af911821 +Author: Behdad Esfahbod +Date: Wed May 15 17:11:18 2019 -0700 + + Remove variadic form of hb_min/hb_max + + Unused, and why here and not in other functions... + + src/hb-algs.hh | 22 ++-------------------- + 1 file changed, 2 insertions(+), 20 deletions(-) + +commit e5cfe9d582d86281eda2bcb85d3d1cbd4afbb5bb +Author: Behdad Esfahbod +Date: Wed May 15 16:59:36 2019 -0700 + + Add arithmetic operators + + src/hb-algs.hh | 44 ++++++++++++++++++++++++++++++-------------- + 1 file changed, 30 insertions(+), 14 deletions(-) + +commit f7a458510d9c34d1c52579985ded5082ad0f3458 +Author: Behdad Esfahbod +Date: Wed May 15 16:49:35 2019 -0700 + + Add hb_bitwise_* ops + + src/hb-algs.hh | 56 +++++++++++++++++++++++++++++++++++--------------------- + src/hb-set.hh | 14 +++++++------- + 2 files changed, 42 insertions(+), 28 deletions(-) + +commit d822e0a16f914ec6a7e629d21ed972d009a88561 +Author: Behdad Esfahbod +Date: Wed May 15 16:30:08 2019 -0700 + + [array] Adjust operator!= + + See comments. + + src/hb-array.hh | 7 ++++++- + src/hb-vector.hh | 1 + + 2 files changed, 7 insertions(+), 1 deletion(-) + +commit 203ea58bf67b3df3e376f94cdfb37382dd3858a0 +Author: Behdad Esfahbod +Date: Wed May 15 16:14:40 2019 -0700 + + More adjustment to OffsetTo<>::friend opeator+ + + Let's see if I break any bots. But yeah, it wasn't accepting a + non-const pointer. It just happens that we don't use that in the + code it seems. + + src/hb-open-type.hh | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +commit ebf47a95f29dd959319feb7f8728f7c0162a181e +Author: Behdad Esfahbod +Date: Wed May 15 15:14:26 2019 -0700 + + [iter] Simplify operator!= of iterator filters + + Both to save ops, and also because lambdas don't implement operator!=, + so this was failing in range-based for loop if a lambda was passed to + hb_map() or hb_filter(). Just check end-condition assuming that we + are comparing to .end() or iterators that are otherwise derived from + current iterator. Ie. don't compare things that are expected to be + in common. + + src/hb-iter.hh | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +commit d3e1d5044f23a2dc910f4253c3f4976bf08f93ab +Author: Behdad Esfahbod +Date: Wed May 15 14:25:54 2019 -0700 + + Add all pair_t comparison operators + + src/hb-algs.hh | 5 +++++ + 1 file changed, 5 insertions(+) + +commit f244224dbb5ee8929af109a0c4e23d2d993c8df8 +Author: Behdad Esfahbod +Date: Wed May 15 14:19:20 2019 -0700 + + [iter] Use default operators instead of redefining empty ones + + src/hb-iter.hh | 26 +++++++++++++++----------- + 1 file changed, 15 insertions(+), 11 deletions(-) + +commit 125c45ed368ae61a74e2c558b9c884cfde6295e1 +Author: David Corbett +Date: Wed May 15 17:02:32 2019 -0400 + + Convert Consonant_Initial_Postfixed to CONS_MED + + src/gen-use-table.py | 6 +++--- + src/hb-ot-shape-complex-use-table.cc | 2 +- + .../fonts/fd565cabd5208d345d0ed4fda7ae742917d846a5.ttf | Bin 0 -> 1056 bytes + test/shaping/data/in-house/tests/use-syllable.tests | 1 + + 4 files changed, 5 insertions(+), 4 deletions(-) + +commit 99ca956c131563b57d490b1ec3c8de920645e53f +Author: David Corbett +Date: Wed May 15 16:29:51 2019 -0400 + + Fix record-test.sh on machines without sha1sum + + test/shaping/record-test.sh | 13 ++++++++++++- + 1 file changed, 12 insertions(+), 1 deletion(-) + +commit e2767e438c56b8ee0bc2f2040c10b13b34d37f95 +Author: Ebrahim Byagowi +Date: Wed May 15 13:14:09 2019 +0430 + + [ci][test] Ignore other gcov symbols also + + To fix https://travis-ci.org/harfbuzz/harfbuzz/jobs/532693197 + + src/check-symbols.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 397cbbd5ff25c9796ecd56b8270e83de1eb322ac +Author: Ebrahim Byagowi +Date: Wed May 15 13:03:28 2019 +0430 + + [ci][travis] Update its distribution + + It may break things, lets see + + .travis.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 763ea4224bf612f3efb80d5744d1e8852682683e +Author: Behdad Esfahbod +Date: Wed May 15 01:15:11 2019 -0700 + + Another try + + src/hb-open-type.hh | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit e1b2edb04af7bd2b4eecb59392f75abcc72cd8a6 +Author: Behdad Esfahbod +Date: Wed May 15 01:12:04 2019 -0700 + + Completely revert the thing back + + src/hb-open-type.hh | 14 +++++--------- + 1 file changed, 5 insertions(+), 9 deletions(-) + +commit c58eeb5fb35ec6a8d0a4394fd83cb2571cd5af4f +Author: Behdad Esfahbod +Date: Wed May 15 01:10:31 2019 -0700 + + Another try at fix + + Fails locally. Trying to understand. Sigh + + src/hb-open-type.hh | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +commit 004edf3bdac77564d39516b51b0666de60e65ece +Author: Behdad Esfahbod +Date: Wed May 15 01:02:50 2019 -0700 + + Ugh. How was the Travis bot happy before, but isn't now?! :( + + src/hb-open-type.hh | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit e01c7b1648dbbb76966b3bd4437bcf7699e77c35 +Author: Behdad Esfahbod +Date: Wed May 15 00:52:17 2019 -0700 + + Move OffsetTo operator+ back out of class + + Apparently there's different overload resolution rules that apply, at + least with some (older?) version of gcc. + + hb-ot-name-table.hh: In member function ‘void OT::name::accelerator_t::init(hb_face_t*)’: + hb-ot-name-table.hh:244:62: error: ambiguous overload for ‘operator+’ (operand types are ‘hb_blob_ptr_t’ and ‘OT::NNOffsetTo > > {aka const OT::OffsetTo >, OT::IntType, false>}’) + this->pool = (const char *) (const void *) (this->table+this->table->stringOffset); + ^ + hb-ot-name-table.hh:244:62: note: candidates are: + hb-ot-name-table.hh:244:62: note: operator+(const C*, long int) + hb-ot-name-table.hh:244:62: note: operator+(const char*, long int) + + src/hb-open-type.hh | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +commit b213042f87dd736bad7a852fe98269f84cbff493 +Author: Behdad Esfahbod +Date: Wed May 15 00:50:48 2019 -0700 + + Revert "Revert symmetric OffsetTo overloads" + + This reverts commit 01912efb74fc554a81c8cfe572145ce45b8fa58b. + + Actually this didn't break things. Fixing + + src/hb-open-type.hh | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 01912efb74fc554a81c8cfe572145ce45b8fa58b +Author: Behdad Esfahbod +Date: Wed May 15 00:42:47 2019 -0700 + + Revert symmetric OffsetTo overloads + + Reverts 57f65ae9355004044325dd6441cde761bca5e0a3 + + Caused ambiguous-overload on some gcc... + + src/hb-open-type.hh | 4 ---- + 1 file changed, 4 deletions(-) + +commit d0df996cdc249a245c9dad1fa6503213c84dbcd2 +Author: Behdad Esfahbod +Date: Wed May 15 00:32:41 2019 -0700 + + Use implicit lambda return type + + src/hb-array.hh | 4 ++-- + src/hb-ot-layout-gsub-table.hh | 8 ++++---- + src/hb-ot-layout-gsubgpos.hh | 18 +++++++++--------- + src/hb-ot-stat-table.hh | 2 +- + src/hb-ot-var-fvar-table.hh | 4 ++-- + src/test-iter.cc | 8 ++++---- + src/test-meta.cc | 1 - + 7 files changed, 22 insertions(+), 23 deletions(-) + +commit 57f65ae9355004044325dd6441cde761bca5e0a3 +Author: Behdad Esfahbod +Date: Tue May 14 22:52:59 2019 -0700 + + Add symmetric friend operator+ for OffsetTo + + src/hb-open-type.hh | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 71208e5047c71108dec7361fd7c3e594c8b6c2d8 +Author: Behdad Esfahbod +Date: Tue May 14 22:51:59 2019 -0700 + + Move OffsetTo<> deref operators in-class as friends + + src/hb-open-type.hh | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit e6d6f4b96dd5517406265093cd57834c00850d41 +Author: Behdad Esfahbod +Date: Tue May 14 22:45:03 2019 -0700 + + Whitespace + + src/hb-ot-stat-table.hh | 2 +- + src/hb-ot-var-fvar-table.hh | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit 889dc1eb06a80ea9be4223a19011e47a52abebdd +Author: Behdad Esfahbod +Date: Tue May 14 22:28:07 2019 -0700 + + [iter] Remove sort categorization + + See comments. + + src/hb-array.hh | 2 +- + src/hb-iter.hh | 48 ++++++++++++++++++++++++++++++---------------- + src/hb-ot-layout-common.hh | 2 +- + src/hb-set.hh | 2 +- + 4 files changed, 35 insertions(+), 19 deletions(-) + +commit b4eff38397c2a4e475f426df38e040dddf94a4fa +Author: Behdad Esfahbod +Date: Tue May 14 09:07:20 2019 -0700 + + Start of gen-ucd.py, to replace UCDN + + src/gen-ucd.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 46 insertions(+) + +commit 02e5e5d939be36d8f108029601a1ce1f533e5ccb +Author: Qunxin Liu +Date: Mon May 13 09:38:42 2019 -0700 + + [subset] retian nameids from STAT and fvar tables + + src/hb-ot-stat-table.hh | 76 +++++++++++++++++++++++++++++++++++++++++---- + src/hb-ot-var-fvar-table.hh | 21 +++++++++++++ + src/hb-subset-plan.cc | 26 ++++++++++++++++ + 3 files changed, 117 insertions(+), 6 deletions(-) + +commit ff7995200e706f3161b9fc5c27bb950e3d87e8e2 +Author: Behdad Esfahbod +Date: Tue May 14 07:44:03 2019 -0700 + + Hopefully last warning fix + + src/hb-subset-cff2.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit d1baf99697d215584b2ecb8d2d38ba5b9045955c +Author: Ebrahim Byagowi +Date: Tue May 14 16:16:46 2019 +0430 + + [ci] add HB_TINY to asmjs builder + + .circleci/config.yml | 28 ++++++++++++++-------------- + 1 file changed, 14 insertions(+), 14 deletions(-) + +commit 9e7c9c3adb33b06610951be38f3c820342333092 +Author: Ebrahim Byagowi +Date: Tue May 14 15:58:51 2019 +0430 + + Fix -Wunused-function on HB_NO_SHAPE_AAT + + We should add a bot for it + Part of #1652 + + src/hb-ot-shape.cc | 2 ++ + 1 file changed, 2 insertions(+) + +commit c73d7ba75d4556d9b8e05b10d6572f74f4814f7a +Author: Dominik Röttsches +Date: Tue May 14 13:26:18 2019 +0300 + + Fix building with HB_NO_SUBSET_LAYOUT + + Fixes an unused function warning when building with HB_NO_SUBSET_LAYOUT + as part of the Chrome build. + + src/hb-subset-plan.cc | 2 ++ + 1 file changed, 2 insertions(+) + +commit f39934983f459c992e27075cd2c45ac0025183d0 +Author: Behdad Esfahbod +Date: Tue May 14 00:13:21 2019 -0700 + + [ucdn] Fix Hangul composition + + https://github.com/grigorig/ucdn/issues/23 + + src/hb-ucdn/ucdn.c | 3 ++- + test/api/test-unicode.c | 4 ++++ + 2 files changed, 6 insertions(+), 1 deletion(-) + +commit b2ab15a78c219016e20389582716e0ac0ee8aeb5 +Author: Behdad Esfahbod +Date: Mon May 13 23:47:28 2019 -0700 + + Fix more warnings + + src/hb-ot-cff1-table.hh | 8 ++++---- + src/hb-subset-cff1.cc | 4 ++-- + 2 files changed, 6 insertions(+), 6 deletions(-) + +commit 42ae468a8a76e1e4e6a8121eec5dc118f52086ee +Author: Behdad Esfahbod +Date: Mon May 13 23:43:45 2019 -0700 + + [config] Add NDEBUG and HB_NDEBUG + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-config.hh | 10 ++++++++++ + src/hb.hh | 10 ---------- + 2 files changed, 10 insertions(+), 10 deletions(-) + +commit 0a01deb76fa582afa83da70a09478299d8080827 +Author: Behdad Esfahbod +Date: Mon May 13 18:04:09 2019 -0700 + + One more warning fix + + No idea where these appear from... + + src/hb-ot-cff-common.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit f76e9f2ede76a189d48ddd4f2275442d8e849815 +Author: Behdad Esfahbod +Date: Mon May 13 17:39:46 2019 -0700 + + [icu] Comment + + src/hb-icu.cc | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 70fe9e73555f3354238f7cda5ff0f0c0b75e1d62 +Author: Behdad Esfahbod +Date: Mon May 13 17:35:02 2019 -0700 + + Fix moreeeeeeeeeee + + src/hb-icu.cc | 28 +++++++++++++++------------- + src/hb-subset-plan.cc | 2 +- + 2 files changed, 16 insertions(+), 14 deletions(-) + +commit 68e12e68f813bfd22dda040463d042cc06b958ec +Author: Behdad Esfahbod +Date: Mon May 13 17:28:59 2019 -0700 + + Fix more semi-colon issues + + src/hb-coretext.cc | 4 ++-- + src/hb-directwrite.cc | 4 ++-- + src/hb-graphite2.cc | 4 ++-- + src/hb-uniscribe.cc | 4 ++-- + 4 files changed, 8 insertions(+), 8 deletions(-) + +commit 4d3cf2adb669c345cc43832d11689271995e160a +Author: Behdad Esfahbod +Date: Mon May 13 17:25:07 2019 -0700 + + [iter] Fix zip iterator sortedness classification logic + + src/hb-iter.hh | 9 ++------- + 1 file changed, 2 insertions(+), 7 deletions(-) + +commit c572732f29787d1cf7ff39b8160b3935d4b13ba4 +Author: Behdad Esfahbod +Date: Mon May 13 15:41:09 2019 -0700 + + Fix more excess semi-colon errors + + src/hb-common.cc | 2 +- + src/hb-ot-name.cc | 4 ++-- + src/hb-ot-shape-complex-indic.hh | 2 +- + src/hb-ot-shape-complex-khmer.hh | 2 +- + 4 files changed, 5 insertions(+), 5 deletions(-) + +commit 513762849a683914fc266a17ddf38f133cccf072 +Author: Behdad Esfahbod +Date: Mon May 13 15:36:14 2019 -0700 + + [iter] Track strictly-sorted iterators + + This make output of hb_enumerate() sorted regardless of input iterator. + + src/hb-array.hh | 2 +- + src/hb-iter.hh | 30 +++++++++++++++++++++--------- + src/hb-ot-layout-common.hh | 2 +- + src/hb-set.hh | 2 +- + 4 files changed, 24 insertions(+), 12 deletions(-) + +commit 7e02063f3202712b4e5fbddac0354adadb924f72 +Author: Behdad Esfahbod +Date: Mon May 13 15:26:00 2019 -0700 + + [iter] Minor + + src/hb-iter.hh | 21 +++++++++++---------- + 1 file changed, 11 insertions(+), 10 deletions(-) + +commit a5fb44a8cbbaad194ddf6d02a6b6c98b0b637149 +Author: Garret Rieger +Date: Mon May 13 14:57:40 2019 -0700 + + [subset] Fix shadowed 'groups' param in cmap. + + src/hb-ot-cmap-table.hh | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +commit 73943bdf21a96f4e12cb9efd8458a2711de0d870 +Author: Behdad Esfahbod +Date: Mon May 13 14:48:31 2019 -0700 + + Adjust uniscribe_bug_compatible mode + + More correct behavior. We were commenting out some legit conditions + before. + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-ot-shape-complex-indic.cc | 10 ++-------- + 1 file changed, 2 insertions(+), 8 deletions(-) + +commit 809c58708359bcc22bb1273069886f2cbf68be65 +Author: Behdad Esfahbod +Date: Mon May 13 14:45:51 2019 -0700 + + [config] Better compile away morx/kerx/trak + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-ot-shape.cc | 38 ++++++++++++++------------------------ + src/hb-ot-shape.hh | 12 +++++++++++- + 2 files changed, 25 insertions(+), 25 deletions(-) + +commit b1d3e54bd3c881794b05831e811b1a77a7d427c5 +Author: Behdad Esfahbod +Date: Mon May 13 14:35:04 2019 -0700 + + [indic] Don't constrain how many C, M, ... occur + + Fixes https://github.com/harfbuzz/harfbuzz/issues/1709 + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-ot-shape-complex-indic-machine.hh | 1225 ++++++++---------------------- + src/hb-ot-shape-complex-indic-machine.rl | 8 +- + 2 files changed, 305 insertions(+), 928 deletions(-) + +commit 148d88368013ba9bf70a7dd275b1a0f9c64fd45c +Author: Behdad Esfahbod +Date: Mon May 13 14:33:06 2019 -0700 + + [test] Don't call deprecated API + + test/api/test-font.c | 3 --- + test/api/test-shape.c | 16 ++-------------- + 2 files changed, 2 insertions(+), 17 deletions(-) + +commit a487fc33248ea2f934ff4cb857cb556065c11841 +Author: Behdad Esfahbod +Date: Mon May 13 14:16:33 2019 -0700 + + Another extra semi-colon + + src/hb-ot-layout-common.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8461ade7832110d28001dc641342d3f9461e03b0 +Author: Behdad Esfahbod +Date: Mon May 13 14:10:48 2019 -0700 + + Revert "[ragel] Regenerate ragel-generated files using ragel 7.0.0.11 May 2018" + + This reverts commit 9b05db33b54e6e5f0b4658f4c06e7fe563f8923b. + + Fixes https://github.com/harfbuzz/harfbuzz/issues/1708 + + src/hb-buffer-deserialize-json.hh | 1051 ++++++----- + src/hb-buffer-deserialize-text.hh | 1009 ++++++----- + src/hb-ot-shape-complex-indic-machine.hh | 2678 ++++++++++++---------------- + src/hb-ot-shape-complex-khmer-machine.hh | 709 ++++---- + src/hb-ot-shape-complex-myanmar-machine.hh | 820 ++++----- + src/hb-ot-shape-complex-use-machine.hh | 1144 ++++++------ + 6 files changed, 3452 insertions(+), 3959 deletions(-) + +commit 52c15b053aec06d351404a4c15609384946b26e1 +Author: Behdad Esfahbod +Date: Mon May 13 14:10:28 2019 -0700 + + Revert "[ragel] Switch to -T1 output instead of -F1" + + This reverts commit ae8719eb596485ebff07dd5016256015cd0cf86b. + + Part of https://github.com/harfbuzz/harfbuzz/issues/1708 + + src/Makefile.am | 2 +- + src/hb-buffer-deserialize-json.hh | 381 ++- + src/hb-buffer-deserialize-text.hh | 308 +-- + src/hb-ot-shape-complex-indic-machine.hh | 3527 +++++++--------------------- + src/hb-ot-shape-complex-khmer-machine.hh | 396 +--- + src/hb-ot-shape-complex-myanmar-machine.hh | 742 ++---- + src/hb-ot-shape-complex-use-machine.hh | 1011 ++------ + 7 files changed, 1658 insertions(+), 4709 deletions(-) + +commit e98f0ddd6373f64ef4b542daa36b5841399170af +Author: Behdad Esfahbod +Date: Mon May 13 13:53:06 2019 -0700 + + Fix extra semi-colon + + src/hb-iter.hh | 2 +- + src/hb.hh | 1 + + 2 files changed, 2 insertions(+), 1 deletion(-) + +commit ae8719eb596485ebff07dd5016256015cd0cf86b +Author: Behdad Esfahbod +Date: Mon May 13 12:27:10 2019 -0700 + + [ragel] Switch to -T1 output instead of -F1 + + Fedora upgraded to ragel 7, which is buggy if char is signed. + Switching to -G2 output fails with sign-compare error: + + ../../src/hb-buffer-deserialize-json.hh:107:12: error: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘const char’ [-Werror=sign-compare] + if ( 9u <= ( (*( p))) && ( (*( p))) <= 13u ) { + ~~~^~~~~~~~~~~~~ + + Switching to -T1 for now. It actually results in smaller code, + at the expense of some binary searching instead of flat tables. + In the not distant future, we might actually generate two different + outputs and choose between depending on size-optimize options. + + Fixes https://github.com/harfbuzz/harfbuzz/issues/1708 + + src/Makefile.am | 2 +- + src/hb-buffer-deserialize-json.hh | 381 ++-- + src/hb-buffer-deserialize-text.hh | 308 ++- + src/hb-ot-shape-complex-indic-machine.hh | 3401 +++++++++++++++++++++------- + src/hb-ot-shape-complex-khmer-machine.hh | 396 +++- + src/hb-ot-shape-complex-myanmar-machine.hh | 742 ++++-- + src/hb-ot-shape-complex-use-machine.hh | 1011 ++++++--- + 7 files changed, 4646 insertions(+), 1595 deletions(-) + +commit df3f36f0bb7aeed0554843f24f6542852e40f6cc +Author: Behdad Esfahbod +Date: Sun May 12 20:56:36 2019 -0700 + + Minor + + src/gen-os2-unicode-ranges.py | 2 ++ + 1 file changed, 2 insertions(+) + +commit ccc88e98f34453100830d6408fdabfe90e6b47b8 +Author: Behdad Esfahbod +Date: Sun May 12 16:12:06 2019 -0700 + + Fix MSVC build + + src/hb-ot-shape-complex-indic.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f8f9cb93b7166b0d8c816610596da486443c7391 +Author: Behdad Esfahbod +Date: Sun May 12 15:56:25 2019 -0700 + + [config] Define HB_NO_SUBSET_LAYOUT in HB_LEAN + + Assumning subsetter would be used for printing-like uses in that case, + which don't need GSUB/GPOS. + + src/hb-config.hh | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit a1394a28fc4b3d15ef45481f3147f0685d343acb +Author: Behdad Esfahbod +Date: Sun May 12 15:47:46 2019 -0700 + + [config] Add HB_NO_UNISCRIBE_BUG_COMPATIBLE + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-config.hh | 4 ++++ + src/hb-ot-shape-complex-indic.cc | 24 ++++++++++++++++++------ + 2 files changed, 22 insertions(+), 6 deletions(-) + +commit dba1ac1b0e8f5f96974fc1119b318ae6127daa82 +Author: Behdad Esfahbod +Date: Sun May 12 15:33:31 2019 -0700 + + [config] Disable buffer serialize routines in HB_TINY + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-buffer-serialize.cc | 14 +++++++++++++- + src/hb-config.hh | 1 + + 2 files changed, 14 insertions(+), 1 deletion(-) - [subset] Cppcheck complaints +commit 3d9be2ad5036aaf02b69095faaf9c18705c2c5bc +Merge: a20db496 1a850abd +Author: n8willis +Date: Sun May 12 20:03:29 2019 +0100 - test/api/hb-test.h | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + Merge pull request #1665 from n8willis/docs-gtkdoc-colormath + + [Docs] Add gtk-doc comments for OT color and OT math -commit 13b3cd307e7dedea3b419fb06d81a008e49ccff6 -Author: Rod Sheeter -Date: Fri May 24 10:10:12 2019 -0700 +commit a20db496f090abc5b937857b7c5f077161b6ffe4 +Author: Behdad Esfahbod +Date: Sun May 12 11:08:45 2019 -0700 - [subset] Address @behdad review feedback + Fix builds - src/hb-ot-glyf-table.hh | 18 ++++++++---------- - 1 file changed, 8 insertions(+), 10 deletions(-) + src/hb-subset-plan.cc | 2 ++ + 1 file changed, 2 insertions(+) -commit c96c6b287ff1d96da6a50a8cb3f641fe8705e5f7 +commit 8694d6082901661e90e2ffcf732e9985a215063f Author: Behdad Esfahbod -Date: Thu May 23 21:37:17 2019 -0400 +Date: Sun May 12 11:05:24 2019 -0700 - One more + [config] Enable HB_NO_MT in HB_TINY + + Now that user can override it if needed... + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 - .circleci/config.yml | 2 +- + src/hb-config.hh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit b567d4ea14cc6ec0e8efc64a4993a9b0461adb20 +commit 7f6fca4ef78cf3c9384bf835def14219b2ce8791 Author: Behdad Esfahbod -Date: Thu May 23 21:36:42 2019 -0400 +Date: Sun May 12 10:29:47 2019 -0700 - Fix build after UCDN -> UCD + Force-disable CFF code under disabling conditions + + Subsetter size goes down from 190kb to 119kb. Main library about 7kb. + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 - CMakeLists.txt | 14 -------------- - configure.ac | 18 +----------------- - docs/usermanual-install-harfbuzz.xml | 34 ++++++++-------------------------- - 3 files changed, 9 insertions(+), 57 deletions(-) + src/hb-ot-cff1-table.cc | 4 ++++ + src/hb-ot-cff2-table.cc | 4 ++++ + src/hb-subset-cff1.cc | 4 ++++ + src/hb-subset-cff2.cc | 4 ++++ + 4 files changed, 16 insertions(+) -commit 226ab06ec110f4cbd56b39ce0d05d349dfec35b9 +commit 5249eee43748db32b40ad2602b3243d2491642b3 Author: Behdad Esfahbod -Date: Thu May 23 20:39:04 2019 -0400 +Date: Sat May 11 16:12:07 2019 -0700 - [ucd] Add URL to dependencies + [config] Allow overriding chosen config - src/gen-ucd-table.py | 3 +++ - 1 file changed, 3 insertions(+) + src/hb-config.hh | 6 ++++++ + 1 file changed, 6 insertions(+) -commit 65392b734e38668b870b1ffcbfb4b42ec289ef58 -Author: Behdad Esfahbod -Date: Wed May 22 16:21:21 2019 -0400 +commit 30c059a978c91fcd38d47f1ac4a03295f887a7da +Author: Ebrahim Byagowi +Date: Sat May 11 18:48:41 2019 -0400 - [ucdn] Replace UCDN with a new UCD implementation - - UCDN was ~120kb of data. New implementatoin is 69kb in default builds, - and 49kb if built with HB_OPTIMIZE_SIZE or __OPTIMIZE_SIZE__. The - latter automatically enabled if built with -Os or -Oz. - - There's room to shave off another 10kb or 20kb. That will follow later. + [test] minor, fix -Weverything bot + + test/fuzzing/main.cc | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit a29b1de55abca2e90733caff7423e5251d72e03c +Author: Nathan Willis +Date: Sat May 11 20:56:55 2019 +0100 + + Usermanual, fix up userfeatures example code in OpenType features section of shaping chapter. + + docs/usermanual-opentype-features.xml | 15 +++++++++++---- + 1 file changed, 11 insertions(+), 4 deletions(-) + +commit 78fcb14db9041af0e0d5ea209cf0cb1977f6dcc3 +Author: Nathan Willis +Date: Sat May 11 20:56:02 2019 +0100 + + Usermanual, minor: flesh out invisible-glyph discussion in buffers chapter. + + ...ermanual-buffers-language-script-and-direction.xml | 19 +++++++++++++++---- + 1 file changed, 15 insertions(+), 4 deletions(-) + +commit 25531a30394c451a7a2aee77928e0a550015b803 +Author: Ebrahim Byagowi +Date: Sat May 11 19:50:42 2019 +0000 + + [test] minor - Fixes https://github.com/harfbuzz/harfbuzz/issues/1652 + style fix and add return statement - src/Makefile.am | 11 - - src/Makefile.sources | 5 +- - src/gen-ucd-table.py | 11 +- - src/hb-algs.hh | 8 + - src/hb-ot-layout.cc | 76 +- - src/hb-ucd-table.hh | 5160 +++++++++++++++++++++++++++++++++++++ - src/hb-ucd.cc | 209 ++ - src/hb-ucdn.cc | 272 -- - src/hb-ucdn/COPYING | 13 - - src/hb-ucdn/Makefile.am | 16 - - src/hb-ucdn/Makefile.sources | 7 - - src/hb-ucdn/README | 40 - - src/hb-ucdn/ucdn.c | 361 --- - src/hb-ucdn/ucdn.h | 472 ---- - src/hb-ucdn/ucdn_db.h | 5790 ------------------------------------------ - src/hb-unicode.cc | 8 +- - 16 files changed, 5427 insertions(+), 7032 deletions(-) + test/fuzzing/main.cc | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) -commit 12c59f6c40401c8221facc5d0aed63f510a77dd7 +commit 1a850abd66999707b6f4795050e748fc879b92ef +Merge: 8a544171 a6048e4c +Author: n8willis +Date: Sat May 11 20:16:57 2019 +0100 + + Merge branch 'master' into docs-gtkdoc-colormath + +commit 8a544171d15bb36c15ca7bf679643b2b14f94b45 +Author: Nathan Willis +Date: Sat May 11 20:11:49 2019 +0100 + + Corrections to OT Color gtk-doc comments. + + src/hb-ot-color.cc | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +commit 301f5091f6663cc8a1fff848bf5285aa15cc0598 +Author: Nathan Willis +Date: Sat May 11 20:11:36 2019 +0100 + + Corrections to OT Math gtk-doc comments. + + src/hb-ot-math.cc | 33 +++++++++++++++++++++++---------- + 1 file changed, 23 insertions(+), 10 deletions(-) + +commit a6048e4cd013987ecb846e0683a7cf6f0caa65f9 Author: Behdad Esfahbod -Date: Thu May 23 13:33:21 2019 -0400 +Date: Sat May 11 12:11:22 2019 -0700 - [deprecated] Minor + Fix build - src/hb-deprecated.h | 2 +- + src/hb-ot-font.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 36dee9221f8de3a2a6a23f0548460aab4982b594 +commit 32d3c06b61f2f4252f4403b55c6ba07fbb572149 Author: Behdad Esfahbod -Date: Wed May 22 15:51:53 2019 -0400 +Date: Sat May 11 11:59:18 2019 -0700 - [gen-ucd] Rename + Disable sbix if no-color or no-ot-font-bitmap + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 - src/Makefile.am | 1 + - src/{gen-ucd.py => gen-ucd-table.py} | 0 - 2 files changed, 1 insertion(+) + src/hb-ot-font.cc | 21 +++++++++++---------- + 1 file changed, 11 insertions(+), 10 deletions(-) -commit 831c213501fc38229755be7958b2952fe0cdff0e +commit 606841b07017ac80dea2fc5ada25b5976f2f9192 Author: Behdad Esfahbod -Date: Wed May 22 15:46:19 2019 -0400 +Date: Sat May 11 11:54:30 2019 -0700 - [gen-ucd] Minor + [iter] Check for more before forwarding/rewinding past ends - src/gen-ucd.py | 30 +++++++++++++++++++++++++++--- - 1 file changed, 27 insertions(+), 3 deletions(-) + src/hb-iter.hh | 4 ++-- + src/test-iter.cc | 6 ++---- + 2 files changed, 4 insertions(+), 6 deletions(-) -commit 15a9e32b566fbf6f4a2c6fd488d8cc3865234b17 -Merge: 993d81b9 ff7fc6d4 -Author: Ebrahim Byagowi -Date: Thu May 23 11:02:15 2019 +0430 +commit c1c122e7b3f60dc7b5a224c68d2acb106fda8b49 +Author: David Corbett +Date: Sat May 11 11:38:06 2019 -0400 - Merge pull request #1723 from googlefonts/drop_tables + [iter] Fix filter rewinding + + src/hb-iter.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b854d4ff46602104343201361919f30169144cf1 +Author: David Corbett +Date: Fri May 10 22:51:49 2019 -0400 + + [array] Fix rewinding + + src/hb-array.hh | 22 +++++++++++++--------- + 1 file changed, 13 insertions(+), 9 deletions(-) + +commit 76e80c5ca5e820e955438e4c727929ddd99e695e +Author: n8willis +Date: Sat May 11 19:51:24 2019 +0100 + + Update src/hb-ot-color.cc - [subset] Add morx, mort, kern, and kernx to the default layout tables… + Co-Authored-By: Khaled Hosny + + src/hb-ot-color.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 79126df3070f00193fe3caefe9deb62c4520e048 +Author: Behdad Esfahbod +Date: Sat May 11 11:23:31 2019 -0700 + + [iter] Add hb_map_sorted() and hb_map_retains_sorting() + + src/hb-iter.hh | 38 +++++++++++++++++++++++++++++++------- + 1 file changed, 31 insertions(+), 7 deletions(-) + +commit bcd81932f0bcb2258276ae313709780e90e9b0f6 +Author: n8willis +Date: Sat May 11 14:10:32 2019 +0100 + + Update src/hb-ot-math.cc + + Co-Authored-By: Khaled Hosny + + src/hb-ot-math.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ddc6dd42f753a20204898e41cc711b0100638330 +Author: n8willis +Date: Sat May 11 14:10:11 2019 +0100 + + Update src/hb-ot-math.cc + + Co-Authored-By: Khaled Hosny + + src/hb-ot-math.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 46e05ecca16e561a0ff4ca60bb064f480374590a +Author: n8willis +Date: Sat May 11 14:09:52 2019 +0100 + + Update src/hb-ot-color.cc + + Co-Authored-By: Khaled Hosny + + src/hb-ot-color.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit ff7fc6d488f37e3faaca4986cde35836f013b03f -Author: Garret Rieger -Date: Wed May 22 17:36:16 2019 -0700 +commit 6d9870b4799f20a6c58a2c071713e56aa93b0221 +Author: n8willis +Date: Sat May 11 14:09:26 2019 +0100 - [subset] Add morx, mort, kern, and kernx to the default layout tables drop list. + Update src/hb-ot-color.cc + + Co-Authored-By: Khaled Hosny - src/hb-subset-input.cc | 4 ++++ - src/hb-subset.cc | 4 ++++ - 2 files changed, 8 insertions(+) + src/hb-ot-color.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 993d81b9c57f2e27d80d276953b0430821129425 -Author: Qunxin Liu -Date: Tue May 14 13:55:11 2019 -0700 +commit 12ea4a24c40c7ac28d058e9721479347951e3482 +Author: n8willis +Date: Sat May 11 14:08:40 2019 +0100 - [subset] Add one ttf file with fvar/STAT tables to integration test - Ignore gvar/MVAR/HVAR table - add support for --nameIDs=* option + Update src/hb-ot-color.cc + + Co-Authored-By: Khaled Hosny - src/hb-ot-cmap-table.hh | 27 +++++++++++++++++---- - src/hb-ot-stat-table.hh | 2 +- - src/hb-subset-input.cc | 1 + - src/hb-subset-plan.cc | 6 +---- - test/api/hb-subset-test.h | 2 +- - .../Comfortaa-Regular-new.default.61,62,63.ttf | Bin 0 -> 6492 bytes - .../basics/Comfortaa-Regular-new.default.61,63.ttf | Bin 0 -> 6316 bytes - .../basics/Comfortaa-Regular-new.default.61.ttf | Bin 0 -> 6148 bytes - .../basics/Comfortaa-Regular-new.default.62.ttf | Bin 0 -> 6088 bytes - .../basics/Comfortaa-Regular-new.default.63.ttf | Bin 0 -> 6068 bytes - ...Regular-new.drop-hints-retain-gids.61,62,63.ttf | Bin 0 -> 3284 bytes - ...aa-Regular-new.drop-hints-retain-gids.61,63.ttf | Bin 0 -> 3164 bytes - ...ortaa-Regular-new.drop-hints-retain-gids.61.ttf | Bin 0 -> 2868 bytes - ...ortaa-Regular-new.drop-hints-retain-gids.62.ttf | Bin 0 -> 3020 bytes - ...ortaa-Regular-new.drop-hints-retain-gids.63.ttf | Bin 0 -> 3024 bytes - .../Comfortaa-Regular-new.drop-hints.61,62,63.ttf | Bin 0 -> 1952 bytes - .../Comfortaa-Regular-new.drop-hints.61,63.ttf | Bin 0 -> 1832 bytes - .../basics/Comfortaa-Regular-new.drop-hints.61.ttf | Bin 0 -> 1704 bytes - .../basics/Comfortaa-Regular-new.drop-hints.62.ttf | Bin 0 -> 1688 bytes - .../basics/Comfortaa-Regular-new.drop-hints.63.ttf | Bin 0 -> 1688 bytes - .../Comfortaa-Regular-new.name-ids.61,62,63.ttf | Bin 0 -> 6236 bytes - .../Comfortaa-Regular-new.name-ids.61,63.ttf | Bin 0 -> 6060 bytes - .../basics/Comfortaa-Regular-new.name-ids.61.ttf | Bin 0 -> 5892 bytes - .../basics/Comfortaa-Regular-new.name-ids.62.ttf | Bin 0 -> 5832 bytes - .../basics/Comfortaa-Regular-new.name-ids.63.ttf | Bin 0 -> 5812 bytes - .../Comfortaa-Regular-new.retain-gids.61,62,63.ttf | Bin 0 -> 7824 bytes - .../Comfortaa-Regular-new.retain-gids.61,63.ttf | Bin 0 -> 7648 bytes - .../Comfortaa-Regular-new.retain-gids.61.ttf | Bin 0 -> 7312 bytes - .../Comfortaa-Regular-new.retain-gids.62.ttf | Bin 0 -> 7420 bytes - .../Comfortaa-Regular-new.retain-gids.63.ttf | Bin 0 -> 7404 bytes - ...eSansPro-Regular.default.1FC,21,41,20,62,63.otf | Bin 3784 -> 2384 bytes - .../SourceSansPro-Regular.default.61,62,63.otf | Bin 3496 -> 2096 bytes - ...ourceSansPro-Regular.default.D7,D8,D9,DA,DE.otf | Bin 3612 -> 2212 bytes - ...subroutinize-retain-gids.1FC,21,41,20,62,63.otf | Bin 33516 -> 32124 bytes - ...Regular.desubroutinize-retain-gids.61,62,63.otf | Bin 31080 -> 29688 bytes - ...r.desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf | Bin 34708 -> 33316 bytes - ...o-Regular.desubroutinize.1FC,21,41,20,62,63.otf | Bin 3640 -> 2240 bytes - ...urceSansPro-Regular.desubroutinize.61,62,63.otf | Bin 3400 -> 2000 bytes - ...nsPro-Regular.desubroutinize.D7,D8,D9,DA,DE.otf | Bin 3596 -> 2196 bytes - ...subroutinize-retain-gids.1FC,21,41,20,62,63.otf | Bin 33352 -> 31960 bytes - ...p-hints-desubroutinize-retain-gids.61,62,63.otf | Bin 30956 -> 29564 bytes - ...s-desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf | Bin 34560 -> 33168 bytes - ...rop-hints-desubroutinize.1FC,21,41,20,62,63.otf | Bin 3480 -> 2080 bytes - ...-Regular.drop-hints-desubroutinize.61,62,63.otf | Bin 3288 -> 1876 bytes - ...ar.drop-hints-desubroutinize.D7,D8,D9,DA,DE.otf | Bin 3448 -> 2048 bytes - ...r.drop-hints-retain-gids.1FC,21,41,20,62,63.otf | Bin 33448 -> 32052 bytes - ...Pro-Regular.drop-hints-retain-gids.61,62,63.otf | Bin 31028 -> 29632 bytes - ...gular.drop-hints-retain-gids.D7,D8,D9,DA,DE.otf | Bin 34576 -> 33180 bytes - ...nsPro-Regular.drop-hints.1FC,21,41,20,62,63.otf | Bin 3564 -> 2164 bytes - .../SourceSansPro-Regular.drop-hints.61,62,63.otf | Bin 3340 -> 1940 bytes - ...ceSansPro-Regular.drop-hints.D7,D8,D9,DA,DE.otf | Bin 3464 -> 2064 bytes - ...sPro-Regular.retain-gids.1FC,21,41,20,62,63.otf | Bin 33668 -> 32276 bytes - .../SourceSansPro-Regular.retain-gids.61,62,63.otf | Bin 31180 -> 29788 bytes - ...eSansPro-Regular.retain-gids.D7,D8,D9,DA,DE.otf | Bin 34724 -> 33332 bytes - .../Roboto-Regular.default.1FC,21,41,20,62,63.ttf | Bin 3772 -> 3164 bytes - .../full-font/Roboto-Regular.default.61,62,63.ttf | Bin 3368 -> 2760 bytes - .../Roboto-Regular.default.D7,D8,D9,DA,DE.ttf | Bin 3732 -> 3124 bytes - ...oboto-Regular.drop-hints.1FC,21,41,20,62,63.ttf | Bin 2224 -> 1616 bytes - .../Roboto-Regular.drop-hints.61,62,63.ttf | Bin 2016 -> 1408 bytes - .../Roboto-Regular.drop-hints.D7,D8,D9,DA,DE.ttf | Bin 2252 -> 1644 bytes - ...gular.default.3042,3044,3046,3048,304A,304B.ttf | Bin 3112 -> 2684 bytes - ...gular.default.3042,3044,3046,73E0,5EA6,8F38.ttf | Bin 3356 -> 2928 bytes - .../Mplus1p-Regular.default.61,63,65,6B.ttf | Bin 2656 -> 2228 bytes - ...gular.default.660E,6975,73E0,5EA6,8F38,6E05.ttf | Bin 3652 -> 3224 bytes - .../japanese/Mplus1p-Regular.default.660E.ttf | Bin 2396 -> 1968 bytes - ...ar.drop-hints.3042,3044,3046,3048,304A,304B.ttf | Bin 2384 -> 1956 bytes - ...ar.drop-hints.3042,3044,3046,73E0,5EA6,8F38.ttf | Bin 2628 -> 2200 bytes - .../Mplus1p-Regular.drop-hints.61,63,65,6B.ttf | Bin 1928 -> 1500 bytes - ...ar.drop-hints.660E,6975,73E0,5EA6,8F38,6E05.ttf | Bin 2924 -> 2496 bytes - .../japanese/Mplus1p-Regular.drop-hints.660E.ttf | Bin 1668 -> 1240 bytes - test/subset/data/fonts/Comfortaa-Regular-new.ttf | Bin 0 -> 230316 bytes - test/subset/data/tests/basics.tests | 1 + - test/subset/generate-expected-outputs.py | 3 +-- - test/subset/run-tests.py | 3 ++- - util/options-subset.cc | 23 +++++++++++++++--- - 75 files changed, 50 insertions(+), 18 deletions(-) + src/hb-ot-color.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 58ce477ac170969430310750b78dcb5f9e3b06a3 -Author: Rod Sheeter -Date: Tue May 21 20:22:40 2019 -0700 +commit 3535f2d31efe1ebe44ba63f980882ba23cdcde3b +Author: n8willis +Date: Sat May 11 14:07:38 2019 +0100 - [subset] Report failure more often + Update src/hb-ot-color.cc + + Co-Authored-By: Khaled Hosny - src/hb-ot-glyf-table.hh | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) + src/hb-ot-color.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 51a0129f7322e97825455df4eb6eecfea14980f5 -Author: Rod Sheeter -Date: Tue May 21 20:12:19 2019 -0700 +commit 12d2c472fe8ec3268a4b39a57603dcc734ab7b88 +Author: n8willis +Date: Sat May 11 14:06:56 2019 +0100 - [subset] Thar be comparison of integers of different signs + Update src/hb-ot-color.cc + + Co-Authored-By: Khaled Hosny - test/api/hb-test.h | 2 +- + src/hb-ot-color.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 14e3b0cf41d9657c39f1f921f7e09a1418fa3278 -Author: Rod Sheeter -Date: Tue May 21 20:09:36 2019 -0700 +commit 7f45ce42dbf11366e904f48db45cf5405e4e94df +Author: Behdad Esfahbod +Date: Sat May 11 01:28:31 2019 -0700 - [subset] Code review feedback + [config] Rename - src/hb-ot-glyf-table.hh | 53 +++++++++++++++++++++++++------------------------ - 1 file changed, 27 insertions(+), 26 deletions(-) + src/hb-config.hh | 2 +- + src/hb-ot-layout.cc | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) -commit a03ed95e7d50b9dd947e8982c7730de969795b05 +commit 0e78d4ddaec5f29d6652cc4185cbcca98c3a2927 Author: Behdad Esfahbod -Date: Tue May 21 16:43:14 2019 -0400 +Date: Sat May 11 01:27:50 2019 -0700 - [gen-ucd] Generate decomposition tables + [config] Add HB_NO_NAME - Code is ugly. Ugh. + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 - src/gen-ucd.py | 40 ++++++++++++++++++++-------------------- - 1 file changed, 20 insertions(+), 20 deletions(-) + src/hb-config.hh | 6 +++++- + src/hb-ot-name.cc | 20 ++++++++++++++++++++ + 2 files changed, 25 insertions(+), 1 deletion(-) -commit 8a48c88fa9fe047a83ba4a45dbd6399412ca3302 +commit 1fc077211771c752768f63f178116d2b8f2f7d03 Author: Behdad Esfahbod -Date: Tue May 21 13:02:54 2019 -0400 +Date: Sat May 11 01:24:23 2019 -0700 - [gen-ucd] Comment + [config] HB_NO_OT_NAME_LANGUAGE AAT - src/gen-ucd.py | 4 ++++ - 1 file changed, 4 insertions(+) + src/hb-config.hh | 4 ++-- + src/hb-ot-name-language-static.hh | 3 +++ + src/hb-ot-name-table.hh | 4 +++- + 3 files changed, 8 insertions(+), 3 deletions(-) -commit b71d353cee89a6654810f75e7a1d7fd156b76faa +commit 4381bb2de7a554a148302836b86a5d73264abeae Author: Behdad Esfahbod -Date: Mon May 20 17:33:55 2019 -0400 +Date: Sat May 11 01:14:04 2019 -0700 - [gen-ucd] Remove some code + [config] Comment - src/gen-ucd.py | 7 ------- - 1 file changed, 7 deletions(-) + src/hb-config.hh | 1 + + 1 file changed, 1 insertion(+) -commit 4ea44112b5163591ce0b086e0d13ec368f4f6ddc -Author: Rod Sheeter -Date: Tue May 21 13:07:43 2019 -0700 +commit 9c921e6c32ab5ac4c524f554b7a7841eeeb0908f +Author: Behdad Esfahbod +Date: Sat May 11 01:08:51 2019 -0700 - [subset] Remove missed reference to hb-subset-glyf, was deleted + [config] Enable HB_NO_NAME_TABLE_AAT + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 - src/Makefile.sources | 1 - - 1 file changed, 1 deletion(-) + src/hb-config.hh | 2 ++ + 1 file changed, 2 insertions(+) -commit b928de91a755788fd0fad9fa0f5f03c5670ac6a3 -Author: Garret Rieger -Date: Tue May 21 11:23:26 2019 -0700 +commit 81b79dfc397599182f43d63bf9346eee28e2d220 +Author: Behdad Esfahbod +Date: Sat May 11 00:53:52 2019 -0700 - [subset] Add test/subset/data/expected/layout to dist list. + [config] Add HB_NO_COLOR to HB_LEAN + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 - test/subset/data/Makefile.am | 1 + + src/hb-config.hh | 1 + + src/hb-ot-color.cc | 49 +++++++++++++++++++++++++++++++++++++++++++++---- + src/hb-ot-color.h | 2 +- + src/hb-ot-layout.h | 2 +- + 4 files changed, 48 insertions(+), 6 deletions(-) + +commit b63a8e173cbc5a81f2ca4a0a82f20b9dafaedb30 +Author: Behdad Esfahbod +Date: Sat May 11 00:47:20 2019 -0700 + + [config Add HB_NO_OT_SHAPE_COMPLEX_VOWEL_CONSTRAINTS to LEAN + + Already I don't like the inflexibility of this approach :(. + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-config.hh | 1 + 1 file changed, 1 insertion(+) -commit 0af9de13b78ddd35f58ee02ce8ffeffd99509ec5 -Author: Garret Rieger -Date: Mon May 20 15:04:20 2019 -0700 +commit 42a21284778f3203d96133f74b0f846cd1567958 +Author: Behdad Esfahbod +Date: Sat May 11 00:44:22 2019 -0700 - [subset] For gsub subsetting only consider glyphs reachable via gsub closure. + [config] Disbale getenv() and atexit() if HB_LEAN + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 - src/hb-ot-layout-gsub-table.hh | 4 +-- - src/hb-subset-plan.cc | 55 ++++++++++++++++++++---------------------- - src/hb-subset-plan.hh | 10 ++++++++ - 3 files changed, 38 insertions(+), 31 deletions(-) + src/hb-config.hh | 2 ++ + 1 file changed, 2 insertions(+) -commit c740c8636b48b1790bba42445a301e8e1cf8f749 -Author: Garret Rieger -Date: Thu May 16 10:57:33 2019 -0700 +commit fca27860417812d51e40f040de97c10177b1250e +Author: Behdad Esfahbod +Date: Sat May 11 00:37:01 2019 -0700 - [subset] Add integration tests for SingleSubst. + [config] Make HB_DISABLE_DEPRECATED actually compile + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + + src/hb-config.hh | 7 +++++++ + src/hb-font.cc | 8 ++++++++ + src/hb-font.hh | 12 ++++++++++-- + src/hb-graphite2.cc | 2 ++ + src/hb-icu.cc | 2 +- + src/hb-ot-layout.cc | 7 ++++++- + src/hb-ot-shape-fallback.cc | 4 ++++ + src/hb-ot-tag.cc | 4 ++++ + src/hb-ot-var-fvar-table.hh | 6 ++++++ + src/hb-ot-var.cc | 2 ++ + src/hb-set.cc | 2 ++ + src/hb-unicode.cc | 6 ++++++ + src/hb-unicode.hh | 10 +++++++--- + 13 files changed, 65 insertions(+), 7 deletions(-) - test/subset/data/Makefile.sources | 1 + - ...ular.smallcaps.keep-layout-retain-gids.41,42,43.ttf | Bin 0 -> 6780 bytes - ...Regular.smallcaps.keep-layout-retain-gids.41,43.ttf | Bin 0 -> 6396 bytes - ...to-Regular.smallcaps.keep-layout-retain-gids.41.ttf | Bin 0 -> 6032 bytes - ...to-Regular.smallcaps.keep-layout-retain-gids.43.ttf | Bin 0 -> 6088 bytes - ...Regular.smallcaps.keep-layout-retain-gids.CA,CB.ttf | Bin 0 -> 7932 bytes - .../Roboto-Regular.smallcaps.keep-layout.41,42,43.ttf | Bin 0 -> 2972 bytes - .../Roboto-Regular.smallcaps.keep-layout.41,43.ttf | Bin 0 -> 2572 bytes - .../layout/Roboto-Regular.smallcaps.keep-layout.41.ttf | Bin 0 -> 2196 bytes - .../layout/Roboto-Regular.smallcaps.keep-layout.43.ttf | Bin 0 -> 2268 bytes - .../Roboto-Regular.smallcaps.keep-layout.CA,CB.ttf | Bin 0 -> 2612 bytes - test/subset/data/fonts/Roboto-Regular.smallcaps.ttf | Bin 0 -> 131632 bytes - test/subset/data/profiles/keep-layout-retain-gids.txt | 2 ++ - test/subset/data/profiles/keep-layout.txt | 1 + - test/subset/data/tests/full-font.tests | 1 - - test/subset/data/tests/layout.tests | 13 +++++++++++++ - test/subset/generate-expected-outputs.py | 3 ++- - 17 files changed, 19 insertions(+), 2 deletions(-) +commit 5a48611ccd045de5782ad2fd5f6718357fe232a2 +Author: Behdad Esfahbod +Date: Sat May 11 00:19:03 2019 -0700 -commit 349d692b0ee45330220fd3ec9267979d73acd149 -Author: Rod Sheeter -Date: Tue May 21 12:38:53 2019 -0700 + [config] Add HB_NO_OT_LAYOUT_UNUSED + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 - [subset] Iter in and out for loca + src/hb-config.hh | 1 + + src/hb-ot-layout.cc | 12 ++++++++++++ + 2 files changed, 13 insertions(+) - src/hb-ot-glyf-table.hh | 31 ++++++++++++++++--------------- - test/api/hb-test.h | 7 ++----- - 2 files changed, 18 insertions(+), 20 deletions(-) +commit 771f1b21d1d7128440d6b4488705456d43dbc0e7 +Author: Behdad Esfahbod +Date: Sat May 11 00:16:18 2019 -0700 -commit 95445d79be0a79e6e2d384d46819730146d397d8 -Author: Rod Sheeter -Date: Tue May 21 11:14:31 2019 -0700 + [config] Adjust - [subset] Write loca using more idiomatic harfbuzzese + src/hb-config.hh | 12 +++++++----- + 1 file changed, 7 insertions(+), 5 deletions(-) - src/hb-ot-glyf-table.hh | 35 +++++++++++++++++++---------------- - 1 file changed, 19 insertions(+), 16 deletions(-) +commit 484f6e8215038006a945da67d245f14db3eeeb2e +Author: Behdad Esfahbod +Date: Sat May 11 00:13:35 2019 -0700 -commit d1b12a546561a78ae3c3e9d6bffa057caf82dbee -Merge: 3a43603e f49a5bec -Author: Rod Sheeter -Date: Mon May 20 21:29:54 2019 -0700 + [config] Add HB_LEAN + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 - Merge branch 'master' of https://github.com/harfbuzz/harfbuzz into glyf + src/hb-config.hh | 5 +++++ + src/hb-ot-math.cc | 40 ++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 45 insertions(+) -commit 3a43603ecea2c349f58396e103a52948776681e0 -Author: Rod Sheeter -Date: Mon May 20 20:40:55 2019 -0700 +commit 0bfd14c0ed2f95f00d0b94d396c777399afa4d68 +Author: Behdad Esfahbod +Date: Sat May 11 00:06:57 2019 -0700 - [subset] Fix memory leak caused by failure to cleanup glyf accelerator + [config] Fix tests - src/hb-ot-glyf-table.hh | 42 ++++++++++++++++++++++++++---------------- - 1 file changed, 26 insertions(+), 16 deletions(-) + src/hb-config.hh | 3 +++ + 1 file changed, 3 insertions(+) -commit 5cedda5e4a3f726168b87d357aee723e6fd919cd -Author: Rod Sheeter -Date: Thu May 16 19:16:52 2019 -0700 +commit 784df8eba1aaf20d2db464f8b3ea0984f7ea1308 +Author: Behdad Esfahbod +Date: Sat May 11 00:04:59 2019 -0700 - [subset] Fix null pointer deref, tidy up a bit + [config] Flesh out more + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 - src/hb-ot-glyf-table.hh | 282 +++++++++++++++++++++++++------------------- - test/api/test-subset-glyf.c | 18 +-- - 2 files changed, 167 insertions(+), 133 deletions(-) + src/hb-config.hh | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) -commit 8a84b540c7b850c1fb30d5bc1ffdeb43033be173 -Author: Rod Sheeter -Date: Thu May 16 19:14:16 2019 -0700 +commit 799c6a5081e5058260199eeeb2091ee2c1dfefff +Author: Behdad Esfahbod +Date: Fri May 10 23:55:22 2019 -0700 - [subset] Tests passing using iterator based glyf + [config] Add some - src/hb-ot-glyf-table.hh | 117 +++++++++++++++++++++++++++++++------------- - test/api/test-subset-glyf.c | 4 +- - 2 files changed, 86 insertions(+), 35 deletions(-) + src/hb-aat-layout.cc | 26 +++++++++++++------------- + src/hb-aat-map.cc | 4 ++-- + src/hb-config.hh | 18 ++++++++++++++++++ + src/hb-ot-kern-table.hh | 14 +++++++------- + src/hb-ot-shape.cc | 22 +++++++++++----------- + 5 files changed, 51 insertions(+), 33 deletions(-) -commit 82bbec306376d61b6700461c4038c6789e60a998 -Merge: 9d09ac13 b7be5931 -Author: Rod Sheeter -Date: Thu May 16 15:14:01 2019 -0700 +commit e6582de12f1af9ab5e3122d762a3e12438a66b6b +Author: Behdad Esfahbod +Date: Fri May 10 23:53:38 2019 -0700 - Merge branch 'master' of https://github.com/harfbuzz/harfbuzz into glyf + Add hb-config.hh -commit 9d09ac13a114967576284d0b006a0ac7965d928a -Author: rsheeter -Date: Sat May 11 23:16:40 2019 -0700 + src/Makefile.sources | 1 + + src/hb-config.hh | 36 ++++++++++++++++++++++++++++++++++++ + src/hb.hh | 7 ++++--- + 3 files changed, 41 insertions(+), 3 deletions(-) - [subset] Tweak hint stripping +commit d43af339e7a7f5dab1690703a78d2690baefbd59 +Author: Behdad Esfahbod +Date: Fri May 10 23:46:22 2019 -0700 - src/hb-ot-glyf-table.hh | 46 +++++++++++++++++++++++++++++++++------------- - 1 file changed, 33 insertions(+), 13 deletions(-) + [subset] More HB_NO_SUBSET_LAYOUT + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 -commit 3a4c928fcfce5a8c7a56907b9945e87b0ce8e327 -Author: rsheeter -Date: Sat May 11 22:06:46 2019 -0700 + src/hb-subset-plan.cc | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) - [subset] Fix glyf tests except hint stripping & local test asan +commit 31c591d69f6a7605088883db59149e83c80d019c +Author: Behdad Esfahbod +Date: Fri May 10 23:39:53 2019 -0700 - src/hb-ot-glyf-table.hh | 93 +++++++++++++++++++++++++++++++++------------ - test/api/hb-subset-test.h | 2 +- - test/api/hb-test.h | 13 +++++++ - test/api/test-subset-glyf.c | 8 ++-- - 4 files changed, 86 insertions(+), 30 deletions(-) + [cff] Prune more code if HB_NO_OT_FONT_CFF + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 -commit b77dde8f138442935e5ca99460a520a4117d6dd2 -Author: Rod Sheeter -Date: Fri May 10 16:52:19 2019 -0700 + src/hb-ot-cff1-table.cc | 5 +++++ + src/hb-ot-cff2-table.cc | 5 +++++ + 2 files changed, 10 insertions(+) - [subset] Destroy blob +commit 5ea8ad5c48f9baabc4ccf81dce4aee1067c401f6 +Author: Behdad Esfahbod +Date: Fri May 10 23:36:42 2019 -0700 - src/hb-ot-glyf-table.hh | 2 ++ - 1 file changed, 2 insertions(+) + [subset] Add HB_NO_SUBSET_CFF + + Doesn't fully prune all the relevant code. To be fixed later. + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 -commit 14db6512f8dca80a575f468708949346b005834a -Author: Rod Sheeter -Date: Fri May 10 09:32:43 2019 -0700 + src/hb-subset.cc | 3 +++ + 1 file changed, 3 insertions(+) - [subset] Correct flipped use short computation +commit 2c93f0dee31b2277567ccbee041539732b9bd26d +Author: Behdad Esfahbod +Date: Fri May 10 23:31:05 2019 -0700 - src/hb-ot-glyf-table.hh | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + Add HB_NO_AAT + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 -commit ab3fe5de2bbe10fdc13711537f824b62d091f995 -Author: Rod Sheeter -Date: Thu May 9 22:12:20 2019 -0700 + src/hb-aat-layout.cc | 58 +++++++++++++++++++++++++++++++++++++++++++++++++ + src/hb-aat-map.cc | 8 +++++++ + src/hb-ot-kern-table.hh | 14 ++++++++++++ + src/hb-ot-shape.cc | 28 +++++++++++++++++++++++- + 4 files changed, 107 insertions(+), 1 deletion(-) - [subset] Glyf by iter now runs but fails tests +commit 62dfe7aea23c95f4550543085071990e20ee4d54 +Author: Behdad Esfahbod +Date: Fri May 10 23:17:15 2019 -0700 - src/hb-ot-glyf-table.hh | 88 +++++++++++++++++++++++++++++++++---------------- - 1 file changed, 59 insertions(+), 29 deletions(-) + [cff] Minor -commit f8de063b48c243d551c8892bdd2a799606fda3f4 -Merge: 0d7fef2d 8f174870 -Author: Rod Sheeter -Date: Thu May 9 20:02:38 2019 -0700 + src/hb-subset-cff1.cc | 2 +- + src/hb-subset-cff2.cc | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) - Merge branch 'glyf' of github.com:googlefonts/harfbuzz into glyf +commit 227d85e138d4c785c2d658e225ed35f5acd1235f +Author: Behdad Esfahbod +Date: Fri May 10 23:15:58 2019 -0700 -commit 0d7fef2d50bba714815c0c13f3b3dd6464710a1d -Author: rsheeter -Date: Wed May 8 16:52:00 2019 -0700 + Minor - [subset] Dinner time, checkpoint + src/hb-atomic.hh | 2 +- + src/hb-debug.hh | 2 +- + src/hb-font.cc | 2 +- + src/hb-ot-font.cc | 4 ++-- + src/hb-ot-layout.cc | 6 +++--- + src/hb-ot-name-table.hh | 2 +- + src/hb-ot-shape-complex-arabic.cc | 2 +- + src/hb-ot-shape-complex-hebrew.cc | 2 +- + src/hb-ot-shape-complex-thai.cc | 2 +- + src/hb-ot-shape-complex-vowel-constraints.cc | 2 +- + src/hb-ot-shape-fallback.cc | 6 +++--- + src/hb-subset.cc | 4 ++-- + src/hb-warning.cc | 4 ++-- + src/hb.hh | 10 +++++----- + 14 files changed, 25 insertions(+), 25 deletions(-) - src/hb-ot-glyf-table.hh | 97 +++++++++++++++++++++++++++++-------------------- - 1 file changed, 58 insertions(+), 39 deletions(-) +commit 9bfe22af6113ee8cd24cb9ee091f0841c27bbf98 +Author: Behdad Esfahbod +Date: Fri May 10 22:44:19 2019 -0700 -commit 240bc86e3a0b177ee84ec9c60723304a0cf4c405 -Author: rsheeter -Date: Wed May 8 14:59:03 2019 -0700 + [sanitize] Fix previous commit - [subset] Remove subset-glyf; want everything to point to new iter-based edition. Some of the code will resurface as impl builds out. + src/hb-open-type.hh | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) - src/Makefile.sources | 2 - - src/hb-ot-glyf-table.hh | 9 +- - src/hb-subset-glyf.cc | 346 ------------------------------------------------ - src/hb-subset-glyf.hh | 40 ------ - src/hb-subset.cc | 1 - - 5 files changed, 6 insertions(+), 392 deletions(-) +commit 4dcf65328f04a11594fc190fd7e976afa54455e9 +Author: Behdad Esfahbod +Date: Fri May 10 22:23:24 2019 -0700 -commit 02d4d4f3e67dcc37915bc386d506bb272455ff1e -Author: rsheeter -Date: Wed May 8 14:43:18 2019 -0700 + [sanitize] Simplify - [subset] Starting to sketch glyf as iter + src/hb-open-type.hh | 45 ++++++++++----------------------------------- + 1 file changed, 10 insertions(+), 35 deletions(-) - src/hb-ot-glyf-table.hh | 60 ++++++++++++++++++++++++++++++++++++------------- - src/hb-subset-plan.hh | 2 ++ - src/hb-subset.cc | 2 +- - 3 files changed, 47 insertions(+), 17 deletions(-) +commit 23168c3981f7c80883663fa69c608caee98d3d99 +Author: Behdad Esfahbod +Date: Fri May 10 22:11:51 2019 -0700 -commit 8f174870e9eed4c47463fdb0d4fe3e22a6f5fdc8 -Author: rsheeter -Date: Wed May 8 16:52:00 2019 -0700 + [sanitize] Use hb_is_trivially_copyable() - [subset] Dinner time, checkpoint + src/hb-open-type.hh | 64 +++++++---------------------------------------------- + 1 file changed, 8 insertions(+), 56 deletions(-) - src/hb-ot-glyf-table.hh | 97 +++++++++++++++++++++++++++++-------------------- - 1 file changed, 58 insertions(+), 39 deletions(-) +commit 0ff7954f9f09f80654ac91c16712154744a0dd2d +Author: Behdad Esfahbod +Date: Fri May 10 22:04:40 2019 -0700 -commit 723d054dcb6ad44e9eab4dc8cc55f8d480d2ff16 -Merge: ed727d4b e2a51ff7 -Author: rsheeter -Date: Wed May 8 16:45:35 2019 -0700 + [meta] Add hb_is_trivial - Merge branch 'master' of https://github.com/harfbuzz/harfbuzz into glyf + src/hb-meta.hh | 7 +++++++ + src/test-meta.cc | 4 ++++ + 2 files changed, 11 insertions(+) -commit ed727d4bb74860c126675e94f87f65ff7874dbb6 -Merge: fb9bff95 e8b45c19 -Author: rsheeter -Date: Wed May 8 16:39:45 2019 -0700 +commit 7162a97bca6e0dde3d277701a3bf15688deef61d +Author: Behdad Esfahbod +Date: Fri May 10 22:03:03 2019 -0700 - Merge branch 'master' of https://github.com/harfbuzz/harfbuzz into glyf + [meta] Add hb_is_trivially_copyable() -commit fb9bff955a9356b053c5c9bcd7aa9101edb55767 -Author: rsheeter -Date: Wed May 8 14:59:03 2019 -0700 + src/hb-meta.hh | 11 +++++++++++ + src/test-meta.cc | 4 ++++ + 2 files changed, 15 insertions(+) - [subset] Remove subset-glyf; want everything to point to new iter-based edition. Some of the code will resurface as impl builds out. +commit f2398f34c019a55d4f0e1a7031961714afadf2b3 +Author: Behdad Esfahbod +Date: Fri May 10 21:59:57 2019 -0700 - src/Makefile.sources | 2 - - src/hb-ot-glyf-table.hh | 9 +- - src/hb-subset-glyf.cc | 346 ------------------------------------------------ - src/hb-subset-glyf.hh | 40 ------ - src/hb-subset.cc | 1 - - 5 files changed, 6 insertions(+), 392 deletions(-) + [meta] Add is_trivially_destructible -commit f9b089b695edc89023e3d62700ae68d5648f8494 -Author: rsheeter -Date: Wed May 8 14:43:18 2019 -0700 + src/hb-meta.hh | 6 +++--- + src/test-meta.cc | 7 +++++-- + 2 files changed, 8 insertions(+), 5 deletions(-) - [subset] Starting to sketch glyf as iter +commit 72cb5b8e52b7103c18adcb82cbcd4b91a2c85474 +Author: Behdad Esfahbod +Date: Fri May 10 21:50:15 2019 -0700 - src/hb-ot-glyf-table.hh | 60 ++++++++++++++++++++++++++++++++++++------------- - src/hb-subset-plan.hh | 2 ++ - src/hb-subset.cc | 2 +- - 3 files changed, 47 insertions(+), 17 deletions(-) + Remove accidentally included include -commit f49a5bec9fc241c098be5a49233aa83cd5dc098e -Author: rsheeter -Date: Mon May 20 20:45:11 2019 -0700 + src/test-meta.cc | 3 --- + 1 file changed, 3 deletions(-) - [docs] Tweak fuzzer doc +commit 086772e409759e8f1edd0e34f6f25374e51e9e10 +Author: Behdad Esfahbod +Date: Fri May 10 21:49:25 2019 -0700 - TESTING.md | 6 ++++++ - 1 file changed, 6 insertions(+) + [meta] Add is_destructible -commit 1aadd1449c65c50d5f35191f43136841c64ad399 + src/hb-meta.hh | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +commit b14745278ad16fe7f4e838b685029e3fdda516ca Author: Behdad Esfahbod -Date: Mon May 20 17:29:13 2019 -0400 +Date: Fri May 10 21:42:59 2019 -0700 - [gen-ucd] Generate script order table + [met]a Add is_constructible, ... - src/gen-ucd.py | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) + src/hb-meta.hh | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + src/test-meta.cc | 23 ++++++++++++++++++ + 2 files changed, 96 insertions(+) -commit be8de188671c04ddd8ec4d7af38b313322189136 +commit 19e08a146712dacd11359370c91a7bad55bc6f62 Author: Behdad Esfahbod -Date: Mon May 20 17:17:38 2019 -0400 +Date: Fri May 10 21:25:07 2019 -0700 - [gen-ucd] Start adding script-order + [iter] Adjust source_of/sink_of - src/gen-ucd.py | 14 +++++++++++++- - 1 file changed, 13 insertions(+), 1 deletion(-) + src/hb-iter.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit 4a0eb066fdceb0cab48107f17670d6943ec0d61e +commit c0485e32a320e17dd0634b2cc8b4dd8c4fdc65e0 Author: Behdad Esfahbod -Date: Mon May 20 16:57:04 2019 -0400 +Date: Fri May 10 21:03:14 2019 -0700 - [gen-ucd] Add gc order + Use hb_void_t<> the way it's supposed to be used - src/gen-ucd.py | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) + src/hb-null.hh | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) -commit d1f9b2f961c71e5218ee359e8fb20cfbdb894c7e +commit 40fb36a39de5dd3ee9a4c84f1f76205b6bb68660 Author: Behdad Esfahbod -Date: Mon May 20 15:47:49 2019 -0400 +Date: Fri May 10 21:01:19 2019 -0700 - [gen-ucd] Flesh out a bit more + [meta] Minor - src/gen-ucd.py | 52 ++++++++++++++++++++++++++++++++++++++++------------ - 1 file changed, 40 insertions(+), 12 deletions(-) + src/hb-meta.hh | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) -commit d6de4659aa7edb991507f8838dc566874e5b6a61 +commit f9a96a0a97f59a0b31ee0f901d1c21dde6b3cfaf Author: Behdad Esfahbod -Date: Mon May 20 15:33:23 2019 -0400 +Date: Fri May 10 20:56:16 2019 -0700 - Add HB_OPTIMIZE_SIZE - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + [meta] More rewrites - src/hb-config.hh | 8 ++++++++ - 1 file changed, 8 insertions(+) + src/hb-meta.hh | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) -commit 0ff3618c2d841d16cce9ba2d73321048e7ca6a2d -Author: Garret Rieger -Date: Fri May 17 15:30:01 2019 -0700 +commit 5252677e53ff4473701172bbbd4e953ac6b08e6f +Author: Behdad Esfahbod +Date: Fri May 10 20:49:52 2019 -0700 - [subset] Use hb_subset_input_t inside of subset_options_t so that input defaults are shared between the library and cli. + [meta] Rewrite hb_int_min/max - src/hb-subset-input.cc | 42 ++++++++----- - src/hb-subset-input.hh | 7 +-- - src/hb-subset-plan.cc | 3 +- - src/hb-subset-plan.hh | 1 - - src/hb-subset.cc | 23 +------ - src/hb-subset.h | 6 -- - test/api/test-subset-glyf.c | 8 ++- - test/fuzzing/hb-subset-fuzzer.cc | 8 ++- - util/Makefile.am | 5 +- - util/Makefile.sources | 1 + - util/hb-subset.cc | 9 +-- - util/options-subset.cc | 127 +++++++++++++++++++++++++++++++++++++++ - util/options.cc | 101 ------------------------------- - util/options.hh | 20 ++---- - 14 files changed, 182 insertions(+), 179 deletions(-) + src/hb-meta.hh | 44 ++++++++++++++++++++++---------------------- + 1 file changed, 22 insertions(+), 22 deletions(-) -commit 67064294a0c521550f5277b51b8c7e5d6bb27e68 -Author: Garret Rieger -Date: Thu May 16 15:13:39 2019 -0700 +commit caa3f92e91062ff78b657aec23569b099de48640 +Author: Behdad Esfahbod +Date: Fri May 10 20:43:51 2019 -0700 - [subset] Add drop-tables option to hb-subset util. + [meta] void_tt -> void_t - util/hb-subset.cc | 1 + - util/options.cc | 45 ++++++++++++++++++++++++++++++++++++++++++--- - util/options.hh | 3 +++ - 3 files changed, 46 insertions(+), 3 deletions(-) + src/hb-meta.hh | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) -commit 3be0ffe45d1ba32ddd8d3af25ff2c420be85da76 -Author: Garret Rieger -Date: Thu May 16 11:29:15 2019 -0700 +commit 7df3ecfb4069d275cd277c71165962bb5769364a +Author: Behdad Esfahbod +Date: Fri May 10 20:43:26 2019 -0700 - [subset] Add drop tables to subset input. + [meta] hb_void_t -> hb_empty_t - src/hb-subset-input.cc | 8 +++++ - src/hb-subset-input.hh | 1 + - src/hb-subset-plan.cc | 3 ++ - src/hb-subset-plan.hh | 5 ++- - src/hb-subset.cc | 3 ++ - src/hb-subset.h | 3 ++ - test/api/Makefile.am | 2 ++ - test/api/test-subset-drop-tables.c | 71 ++++++++++++++++++++++++++++++++++++++ - 8 files changed, 95 insertions(+), 1 deletion(-) + src/hb-debug.hh | 6 +++--- + src/hb-meta.hh | 2 +- + src/hb-ot-layout-gsub-table.hh | 2 +- + src/hb-ot-layout-gsubgpos.hh | 18 +++++++++--------- + 4 files changed, 14 insertions(+), 14 deletions(-) -commit 0ca7ad4352eff357cbb5cc1dfe62aa15b440de84 +commit 149c3db8a2d41894b5d65f4c4b7c20757f6de6dd Author: Behdad Esfahbod -Date: Mon May 20 11:39:07 2019 -0400 +Date: Fri May 10 20:34:52 2019 -0700 - [cff] Fix unlikely invocations + [meta] Minor - src/hb-ot-cff-common.hh | 8 ++++---- - src/hb-ot-cff1-table.hh | 2 +- - 2 files changed, 5 insertions(+), 5 deletions(-) + src/hb-meta.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 9ef241cd409b7ad4eeb8259cbf1a7a01358a766e +commit 707ff5b59d3903b60312a028f2ba5d74c18db101 Author: Behdad Esfahbod -Date: Mon May 20 11:38:02 2019 -0400 +Date: Fri May 10 20:31:20 2019 -0700 - [test] Add one more + Minor - ...-testcase-minimized-hb-subset-fuzzer-5634197349203968 | Bin 0 -> 5791 bytes - 1 file changed, 0 insertions(+), 0 deletions(-) + src/hb-meta.hh | 5 ----- + src/hb-open-type.hh | 2 +- + 2 files changed, 1 insertion(+), 6 deletions(-) -commit 3efb7af7e28061f8cd138eb2ed5261bf521abc63 +commit ce300f4fb68a25d46d165e8b0a4825482c83a966 Author: Behdad Esfahbod -Date: Mon May 20 11:37:16 2019 -0400 +Date: Fri May 10 20:26:29 2019 -0700 - [STAT] Fix sanitize condition - - Oops! - - Fixes https://oss-fuzz.com/testcase-detail/5696825891225600 + [meta] Rewrite is_signed, add is_unsigned - src/hb-ot-stat-table.hh | 2 +- - ...zz-testcase-minimized-hb-subset-fuzzer-5696825891225600 | Bin 0 -> 69 bytes - 2 files changed, 1 insertion(+), 1 deletion(-) + src/hb-meta.hh | 29 ++++++++++++----------------- + 1 file changed, 12 insertions(+), 17 deletions(-) -commit e66eb21a46b2374bfb51f86ed9f5eec35ba87a61 -Author: Ebrahim Byagowi -Date: Sat May 18 07:44:48 2019 -0700 +commit e939d88bd72e0db0ebe357649b7a0fa3447c0bf4 +Author: Behdad Esfahbod +Date: Fri May 10 20:20:51 2019 -0700 - Don't set _POSIX_C_SOURCE in NetBSD - - According to a harfbuzz package patch on NetBSD project - https://github.com/NetBSD/pkgsrc/blob/trunk/fonts/harfbuzz/patches/patch-src_hb-blob.cc + [meta] Rewrite is_integral / is_floating_point, add is_arithmetic - src/hb-blob.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-meta.hh | 49 +++++++++++++++++++++++++++++++------------------ + 1 file changed, 31 insertions(+), 18 deletions(-) -commit 08c3648c6e18a0969a64284337dbd5b435d40f37 +commit c3a456a26e8e5f8bc483b326f1928e9c603a7216 Author: Behdad Esfahbod -Date: Fri May 17 16:21:34 2019 -0700 +Date: Fri May 10 20:17:30 2019 -0700 - Oops, fix include + [meta] Rewrite is_cr_convertible - src/hb-set.hh | 1 + - 1 file changed, 1 insertion(+) + src/hb-meta.hh | 13 +++++-------- + 1 file changed, 5 insertions(+), 8 deletions(-) -commit 24958b8868a8003936e872d8fda873c52d528bcf +commit b4ad6af9c4ec30c462078bd93ae12653619c5fea Author: Behdad Esfahbod -Date: Fri May 17 16:20:36 2019 -0700 +Date: Fri May 10 20:15:03 2019 -0700 - [set] Use StructAtOffsetUnaligned + [meta] Rewrite is_base_of - src/hb-set.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-meta.hh | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) -commit a0febbac439ac4cc58af674f676e473d2f6d726f -Author: rsheeter -Date: Thu May 16 15:58:49 2019 -0700 +commit 5a171ed3a69313e10df6e42a03affb5e8bfe8e95 +Author: Behdad Esfahbod +Date: Fri May 10 20:11:29 2019 -0700 - Update TESTING.md + [null] Modernize template work - TESTING.md | 5 +++++ - 1 file changed, 5 insertions(+) + src/hb-null.hh | 19 ++++++------------- + 1 file changed, 6 insertions(+), 13 deletions(-) -commit b7be59311f27112791e9b9c6356464e1c3ff92c1 +commit 61d150c916d181cc3f333d0378108e08210370ad Author: Behdad Esfahbod -Date: Thu May 16 13:32:56 2019 -0700 +Date: Fri May 10 20:06:31 2019 -0700 - Fix msan issue - - The fact that HB_AUTO_RETURN will return rvalue-references for rvalues - is very disturbing. - - Even apart from that, I'm totally lost re any hb_move needs or - hb_forward'ing to functions/templates where the type is fixed by - explicitly specifying template parameters. - - ==1==ERROR: AddressSanitizer: stack-use-after-return on address 0x7f6ad65e51e0 at pc 0x0000005da240 bp 0x7ffc104ab670 sp 0x7ffc104ab668 - READ of size 4 at 0x7f6ad65e51e0 thread T0 - SCARINESS: 55 (4-byte-read-stack-use-after-return) - #0 0x5da23f in bool OT::Coverage::serialize, OT::SingleSubstFormat1::subset(hb_subset_context_t*) const::'lambda'(unsigned int), (hb_function_sortedness_t)1, (void*)0>, $_20&, (hb_function_sortedness_t)1, (void*)0>, (void*)0>(hb_serialize_context_t*, hb_map_iter_t, OT::SingleSubstFormat1::subset(hb_subset_context_t*) const::'lambda'(unsigned int), (hb_function_sortedness_t)1, (void*)0>, $_20&, (hb_function_sortedness_t)1, (void*)0>) harfbuzz/src/hb-ot-layout-common.hh:1055:16 - #1 0x5d88f9 in bool OT::SingleSubstFormat1::serialize, OT::SingleSubstFormat1::subset(hb_subset_context_t*) const::'lambda'(unsigned int), (hb_function_sortedness_t)1, (void*)0>, $_20&, (hb_function_sortedness_t)1, (void*)0>, (void*)0>(hb_serialize_context_t*, hb_map_iter_t, OT::SingleSubstFormat1::subset(hb_subset_context_t*) const::'lambda'(unsigned int), (hb_function_sortedness_t)1, (void*)0>, $_20&, (hb_function_sortedness_t)1, (void*)0>, unsigned int) harfbuzz/src/hb-ot-layout-gsub-table.hh:98:9 + [meta] Add integral_constant, true_t -> true_type, false_t -> false_type - src/hb-algs.hh | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) + src/hb-iter.hh | 20 ++++++++++---------- + src/hb-meta.hh | 17 ++++++++--------- + src/hb-null.hh | 4 ++-- + 3 files changed, 20 insertions(+), 21 deletions(-) -commit bcd3ffc948f63f59a709923a3ba6dc9d591aae6b +commit 38e3a8bd531ef3d35ca0fbcfad09db3f83345038 Author: Behdad Esfahbod -Date: Thu May 16 13:22:09 2019 -0700 +Date: Fri May 10 20:03:14 2019 -0700 - Whitespace + [meta] bool_tt -> bool_constant - src/hb-ot-layout-gsub-table.hh | 24 ++++++++++++------------ - 1 file changed, 12 insertions(+), 12 deletions(-) + src/hb-meta.hh | 6 +++--- + src/hb-null.hh | 4 ++-- + 2 files changed, 5 insertions(+), 5 deletions(-) -commit 05bc5f96fb0818531404174b71c6ff497d5e2738 +commit 3919ca41b5e657764c7f75dfdc21cf8ca20bd66f Author: Behdad Esfahbod -Date: Thu May 16 13:05:58 2019 -0700 +Date: Fri May 10 19:56:36 2019 -0700 - [subset] Remove extra iteration + [meta] Add is_floating_point - src/hb-ot-layout-gsub-table.hh | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) + src/hb-meta.hh | 33 +++++++++++++++++++-------------- + 1 file changed, 19 insertions(+), 14 deletions(-) -commit 6555f209586886a4b2562412363cf152d7837d5c -Author: Garret Rieger -Date: Wed May 15 09:42:38 2019 -0700 +commit 25bb7e005d96c367731fd8d129d764d101b1200f +Author: Behdad Esfahbod +Date: Fri May 10 19:49:26 2019 -0700 - [subset] Truncate empty gids at the end in retain-gids mode. + [meta] Add is_signed for floating point types - src/hb-subset-plan.cc | 8 ++++--- - test/api/fonts/Roboto-Regular.a.retaingids.ttf | Bin 0 -> 2068 bytes - .../SourceHanSans-Regular.41,4C2E.retaingids.otf | Bin 2736 -> 2656 bytes - test/api/test-subset-glyf.c | 25 +++++++++++++++++++++ - ...oboto-Regular.abc.drop-hints-retain-gids.61.ttf | Bin 744 -> 732 bytes - ...oboto-Regular.abc.drop-hints-retain-gids.62.ttf | Bin 712 -> 704 bytes - .../basics/Roboto-Regular.abc.retain-gids.61.ttf | Bin 1808 -> 1792 bytes - .../basics/Roboto-Regular.abc.retain-gids.62.ttf | Bin 1756 -> 1748 bytes - 8 files changed, 30 insertions(+), 3 deletions(-) + src/hb-meta.hh | 3 +++ + 1 file changed, 3 insertions(+) -commit 2376867649f97d25e4319f45845525ec207887f7 +commit e0315b4aadb3fbc6b618de56d643471e8d1f7859 Author: Behdad Esfahbod -Date: Wed May 15 21:57:26 2019 -0700 +Date: Fri May 10 19:48:02 2019 -0700 - Use hb_map(hb_add(this)) to dereference OffsetTo<>'s + [meta] is_integer -> is_integral - src/hb-ot-layout-gsub-table.hh | 30 ++++++++++++++------- - src/hb-ot-layout-gsubgpos.hh | 60 ++++++++++++++++++++++++++++-------------- - src/hb-ot-stat-table.hh | 2 +- - 3 files changed, 61 insertions(+), 31 deletions(-) + src/hb-algs.hh | 2 +- + src/hb-map.hh | 4 ++-- + src/hb-meta.hh | 26 +++++++++++++------------- + 3 files changed, 16 insertions(+), 16 deletions(-) -commit 6f51e5552477125480f764a6af763dad9f8e3e1b +commit 9574de7a3e763b9c5eacf65b4b8c148724c00b82 Author: Behdad Esfahbod -Date: Wed May 15 21:41:12 2019 -0700 +Date: Fri May 10 19:29:32 2019 -0700 - [algs] Rename hb_bind to hb_partial - - Since our API is the invers of what std::bind is, and closer to Python - functools.partial(). + [meta] Add add_const, add_pointer, add_lvalue_reference, add_rvalue_reference - src/hb-algs.hh | 12 ++++++------ - src/test-algs.cc | 6 +++--- - 2 files changed, 9 insertions(+), 9 deletions(-) + src/hb-meta.hh | 11 +++++++++++ + 1 file changed, 11 insertions(+) -commit 0888e7bc86454020db45f78ee1136d6f3a1b9527 +commit 2fb3a8327ab35248a0c7877c48422718cfbe375d Author: Behdad Esfahbod -Date: Wed May 15 21:36:42 2019 -0700 +Date: Fri May 10 18:40:29 2019 -0700 - [algs] Change hb_bind parameter number to be from one + [vector] Simplify arrayZ - To match std:;bind, even though our interfaces are very different. + Was turned into function when we had static ones and wanted to be + move-safe... Not the case anymore. - src/hb-algs.hh | 24 +++++++++++++----------- - src/test-algs.cc | 6 +++--- - 2 files changed, 16 insertions(+), 14 deletions(-) + src/hb-coretext.cc | 2 +- + src/hb-ot-cff-common.hh | 2 +- + src/hb-uniscribe.cc | 10 +++---- + src/hb-vector.hh | 71 ++++++++++++++++++++++--------------------------- + 4 files changed, 39 insertions(+), 46 deletions(-) -commit dfa5e4297147b52f0ed2f569c9b90a0c68c003c4 +commit 4d67743ffd99ed9f2278ab21adfac7eb314c0df0 Author: Behdad Esfahbod -Date: Wed May 15 21:18:14 2019 -0700 +Date: Fri May 10 16:35:31 2019 -0700 - Add back symmetric OffsetTo<>::friend operator+ - - Finally seems to be working now. + [subset] Use more auto typing - src/hb-open-type.hh | 6 ++++++ - 1 file changed, 6 insertions(+) + src/hb-ot-layout-common.hh | 8 ++++---- + src/hb-ot-layout-gdef-table.hh | 2 +- + src/hb-ot-layout-gsubgpos.hh | 4 ++-- + 3 files changed, 7 insertions(+), 7 deletions(-) -commit a06a236891611da9db601ddbc2b1513380ad12e6 +commit a27a31b9ee2601a05575cb581dc227caa73742c4 Author: Behdad Esfahbod -Date: Wed May 15 21:12:22 2019 -0700 +Date: Fri May 10 16:26:19 2019 -0700 - [algs] Partialize all operators + Minor - src/hb-algs.hh | 66 +++++++++++++++++++++++++++++++++++--------------------- - src/test-algs.cc | 4 ++-- - 2 files changed, 44 insertions(+), 26 deletions(-) + src/hb-ot-layout-common.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit edc69ec935511d1993240fb68b54b2cfd6afa888 +commit 2ade0086286963ae2c65d44b94e63cb3836ce36b Author: Behdad Esfahbod -Date: Wed May 15 21:09:56 2019 -0700 +Date: Fri May 10 16:21:03 2019 -0700 - [algs] Rewrite bind API - - And add a partialization API use example to hb_add() + [serialize] More rewrite - src/hb-algs.hh | 45 ++++++++++++++++++++------------------------- - src/test-algs.cc | 9 ++++++--- - 2 files changed, 26 insertions(+), 28 deletions(-) + src/hb-ot-layout-common.hh | 42 ++++++++++++++++++++++++------------------ + 1 file changed, 24 insertions(+), 18 deletions(-) -commit 16a3540ea4257a19b9bfd9d5300a280e18b423a1 +commit 99ed6e29d86bbf391c12ee1f980b8af9dc35615e Author: Behdad Esfahbod -Date: Wed May 15 20:48:20 2019 -0700 +Date: Fri May 10 16:07:51 2019 -0700 - [algs] Add hb_bind0 and hb_bind1 + [serialize] Fix a TODO - src/hb-algs.hh | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/test-algs.cc | 7 +++++++ - 2 files changed, 61 insertions(+) + src/hb-ot-layout-common.hh | 16 ++++++++++------ + 1 file changed, 10 insertions(+), 6 deletions(-) -commit d214b07883a626f3ecebb027797e8bb994e174a4 -Author: Behdad Esfahbod -Date: Wed May 15 19:07:39 2019 -0700 +commit d8a49b53e3676ad742bdb8edf0ec3ca6f7a7cac9 +Author: rsheeter +Date: Fri May 10 16:52:43 2019 -0700 - Fix clang build - - Ugh. - - In file included from hb-ot-face.cc:41: - ./hb-ot-layout-gsub-table.hh:293:7: error: template parameter redefines default argument - hb_requires (hb_is_sorted_source_of (Iterator, - ^ - ./hb-meta.hh:59:27: note: expanded from macro 'hb_requires' - define hb_requires(Cond) hb_enable_if((Cond)) - ^ - ./hb-meta.hh:57:67: note: expanded from macro 'hb_enable_if' - define hb_enable_if(Cond) typename hb_enable_if<(Cond)>::type* = nullptr - ^ - ./hb-ot-layout-gsub-table.hh:40:5: note: previous default template argument defined here - hb_requires (hb_is_sorted_source_of (Iterator, - ^ - ./hb-meta.hh:59:27: note: expanded from macro 'hb_requires' - define hb_requires(Cond) hb_enable_if((Cond)) - ^ - ./hb-meta.hh:57:67: note: expanded from macro 'hb_enable_if' - define hb_enable_if(Cond) typename hb_enable_if<(Cond)>::type* = nullptr - ^ + Update TESTING.md - src/hb-ot-layout-gsub-table.hh | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) + TESTING.md | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) -commit 371b55c7a0c718fcaca0330edfeacf610797cf7a +commit 25a5b287f220802728cd3312692f368c45d22862 Author: Behdad Esfahbod -Date: Wed May 15 18:54:07 2019 -0700 +Date: Fri May 10 16:01:39 2019 -0700 - Fix clang build + Fix sanitize fail of extension sublookups - In file included from hb-ot-face.cc:41: - ./hb-ot-layout-gsub-table.hh:293:7: error: template parameter redefines default argument - hb_requires (hb_is_sorted_source_of (Iterator, - ^ - ./hb-meta.hh:59:27: note: expanded from macro 'hb_requires' - define hb_requires(Cond) hb_enable_if((Cond)) - ^ - ./hb-meta.hh:57:67: note: expanded from macro 'hb_enable_if' - define hb_enable_if(Cond) typename hb_enable_if<(Cond)>::type* = nullptr - ^ - ./hb-ot-layout-gsub-table.hh:40:5: note: previous default template argument defined here - hb_requires (hb_is_sorted_source_of (Iterator, - ^ - ./hb-meta.hh:59:27: note: expanded from macro 'hb_requires' - define hb_requires(Cond) hb_enable_if((Cond)) - ^ - ./hb-meta.hh:57:67: note: expanded from macro 'hb_enable_if' - define hb_enable_if(Cond) typename hb_enable_if<(Cond)>::type* = nullptr - ^ - 1 error generated. + Fixes https://bugs.chromium.org/p/chromium/issues/detail?id=960331 + + src/hb-ot-layout-common.hh | 10 ++++++++-- + src/hb-sanitize.hh | 2 ++ + ...uzz-testcase-minimized-harfbuzz_fuzzer-5702671124791296 | Bin 0 -> 94 bytes + 3 files changed, 10 insertions(+), 2 deletions(-) + +commit 9c0c3589f31106d1898f8922cc9a2e18cb054989 +Author: Behdad Esfahbod +Date: Fri May 10 13:56:50 2019 -0700 - src/hb-ot-layout-gsub-table.hh | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) + Minor -commit 243a5a6af2565937705d6bc20e65a62b686bb664 + src/hb-ot-layout-common.hh | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +commit 5d773ec60029e1a6edec45c27ea918d9be4ea806 Author: Behdad Esfahbod -Date: Wed May 15 19:03:59 2019 -0700 +Date: Fri May 10 13:53:15 2019 -0700 - [algs] Remove pair copy constructor - - Use default. + Minor - src/hb-algs.hh | 1 - - src/test-algs.cc | 1 + - 2 files changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-layout-gsubgpos.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit f92d188d7703184d04e8f205ae46ca3081d3e048 +commit ac737f8c9e7cbc81cdb5a0542a2494671f236895 Author: Behdad Esfahbod -Date: Wed May 15 18:52:57 2019 -0700 +Date: Fri May 10 13:51:12 2019 -0700 - Whitespace + Minor again - src/hb-ot-layout-gsub-table.hh | 16 ++++++++-------- - 1 file changed, 8 insertions(+), 8 deletions(-) + src/hb-ot-layout-gsubgpos.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 962f95cf802404dafadf2f999772d3f9fc949d63 -Author: Garret Rieger -Date: Thu May 9 13:04:11 2019 -0700 +commit 5d4437fad0f99508ebd5c026a3d927f5d649615e +Author: Behdad Esfahbod +Date: Fri May 10 13:43:29 2019 -0700 - [subset] Switch SingleSubst to use iterators in serialize. + Minor - src/hb-ot-layout-common.hh | 6 +-- - src/hb-ot-layout-gsub-table.hh | 97 +++++++++++++++++++++++++----------------- - 2 files changed, 62 insertions(+), 41 deletions(-) + src/hb-ot-layout-common.hh | 1 - + 1 file changed, 1 deletion(-) -commit 78d35f0e780dd811ae103c96f3b1060d49046a7a +commit cd9bc732a75c716121a86e39ab588d2e0af58eba Author: Behdad Esfahbod -Date: Wed May 15 18:15:05 2019 -0700 +Date: Fri May 10 13:17:41 2019 -0700 - Reduce captures of lambdas + [gsubgpos] Minor - src/hb-ot-hdmx-table.hh | 4 ++-- - src/hb-ot-layout-gpos-table.hh | 2 +- - src/hb-ot-layout-gsub-table.hh | 29 +++++++++++++++-------------- - src/hb-ot-layout-gsubgpos.hh | 12 ++++++------ - src/hb-ot-name-table.hh | 2 +- - src/hb-ot-stat-table.hh | 2 +- - src/hb-ot-var-fvar-table.hh | 4 ++-- - src/hb-subset-plan.cc | 2 +- - src/test-iter.cc | 4 ++-- - 9 files changed, 31 insertions(+), 30 deletions(-) + src/hb-ot-layout-gsubgpos.hh | 9 ++------- + 1 file changed, 2 insertions(+), 7 deletions(-) -commit 5266ca86b633b84850492b7982334fb63271ccbc +commit 6d63e27ca41b12ba2e8fb22fd6bc44417651c518 Author: Behdad Esfahbod -Date: Wed May 15 17:59:00 2019 -0700 +Date: Fri May 10 11:53:02 2019 -0700 - Fix tests + Generate tarball in .xz instead of .bz2 - Oops. + Fixes https://github.com/harfbuzz/harfbuzz/issues/1662 - src/test-algs.cc | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 5da8a3a90db5e5ccaaf68de2ac312108af911821 +commit 1d870cce68f7033f6d3967ce4e9ba622a6fafe79 Author: Behdad Esfahbod -Date: Wed May 15 17:11:18 2019 -0700 +Date: Fri May 10 11:32:59 2019 -0700 - Remove variadic form of hb_min/hb_max + Fix bot - Unused, and why here and not in other functions... + Any way to catch these? - src/hb-algs.hh | 22 ++-------------------- - 1 file changed, 2 insertions(+), 20 deletions(-) + src/test-meta.cc | 26 +++++++++++++------------- + 1 file changed, 13 insertions(+), 13 deletions(-) -commit e5cfe9d582d86281eda2bcb85d3d1cbd4afbb5bb +commit 30e4ae6bd19bf297b029205b5f86c1a0ae14943d Author: Behdad Esfahbod -Date: Wed May 15 16:59:36 2019 -0700 +Date: Fri May 10 11:26:39 2019 -0700 - Add arithmetic operators + [meta] Add hb_is_base_of - src/hb-algs.hh | 44 ++++++++++++++++++++++++++++++-------------- - 1 file changed, 30 insertions(+), 14 deletions(-) + src/hb-meta.hh | 7 +++++++ + src/test-meta.cc | 16 ++++++++++++++++ + 2 files changed, 23 insertions(+) -commit f7a458510d9c34d1c52579985ded5082ad0f3458 +commit 98974ac16f5caf282c9c7cf0c417b494efd6af1d Author: Behdad Esfahbod -Date: Wed May 15 16:49:35 2019 -0700 +Date: Fri May 10 11:18:52 2019 -0700 - Add hb_bitwise_* ops + [iter] Adjust is_source_of / is_sink_of + + There are two cases that we accept. Encode both. - src/hb-algs.hh | 56 +++++++++++++++++++++++++++++++++++--------------------- - src/hb-set.hh | 14 +++++++------- - 2 files changed, 42 insertions(+), 28 deletions(-) + src/hb-iter.hh | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) -commit d822e0a16f914ec6a7e629d21ed972d009a88561 +commit 1b58bf22ca70908bb578910757795ee32d48b65a +Author: rsheeter +Date: Thu May 9 20:06:29 2019 -0700 + + Update TESTING.md + + TESTING.md | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +commit ed972d5d73ba0592e1ba92426adf2a8f67acf9c9 Author: Behdad Esfahbod -Date: Wed May 15 16:30:08 2019 -0700 +Date: Thu May 9 16:58:28 2019 -0700 - [array] Adjust operator!= + [iter] Rewrite test functions - See comments. + Notably, add hb_is_source_of(,) and hb_is_sink_of(,) to replace most + uses of hb_is_iterator_of(,). - src/hb-array.hh | 7 ++++++- - src/hb-vector.hh | 1 + - 2 files changed, 7 insertions(+), 1 deletion(-) + src/hb-iter.hh | 65 +++++++++++++++++++++++++++++----------------- + src/hb-open-type.hh | 7 +++-- + src/hb-ot-layout-common.hh | 6 ++--- + src/hb-ot-name-table.hh | 2 +- + src/test-iter.cc | 2 +- + 5 files changed, 49 insertions(+), 33 deletions(-) -commit 203ea58bf67b3df3e376f94cdfb37382dd3858a0 +commit 42901d7af91b4c5cffee9752f653447e4f4bd4f7 Author: Behdad Esfahbod -Date: Wed May 15 16:14:40 2019 -0700 +Date: Thu May 9 16:22:08 2019 -0700 - More adjustment to OffsetTo<>::friend opeator+ - - Let's see if I break any bots. But yeah, it wasn't accepting a - non-const pointer. It just happens that we don't use that in the - code it seems. + Minor - src/hb-open-type.hh | 10 ++++++---- - 1 file changed, 6 insertions(+), 4 deletions(-) + src/hb-meta.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit ebf47a95f29dd959319feb7f8728f7c0162a181e +commit 322627ae1daa16f62f7a91c3c3ed02eb5b708ca5 Author: Behdad Esfahbod -Date: Wed May 15 15:14:26 2019 -0700 +Date: Thu May 9 16:08:10 2019 -0700 - [iter] Simplify operator!= of iterator filters - - Both to save ops, and also because lambdas don't implement operator!=, - so this was failing in range-based for loop if a lambda was passed to - hb_map() or hb_filter(). Just check end-condition assuming that we - are comparing to .end() or iterators that are otherwise derived from - current iterator. Ie. don't compare things that are expected to be - in common. + Whitespace - src/hb-iter.hh | 8 +++++--- - 1 file changed, 5 insertions(+), 3 deletions(-) + src/hb-array.hh | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) -commit d3e1d5044f23a2dc910f4253c3f4976bf08f93ab +commit 489f3c35bddb22cfe40c45d3a5c1cb6d88ccaf1f Author: Behdad Esfahbod -Date: Wed May 15 14:25:54 2019 -0700 +Date: Thu May 9 15:39:32 2019 -0700 - Add all pair_t comparison operators + Fix bot - src/hb-algs.hh | 5 +++++ - 1 file changed, 5 insertions(+) + src/test-meta.cc | 70 ++++++++++++++++++++++++++++---------------------------- + 1 file changed, 35 insertions(+), 35 deletions(-) -commit f244224dbb5ee8929af109a0c4e23d2d993c8df8 +commit 790315e0dbc0ce796f0081a60953f74bd3fbdb63 Author: Behdad Esfahbod -Date: Wed May 15 14:19:20 2019 -0700 +Date: Thu May 9 15:31:24 2019 -0700 - [iter] Use default operators instead of redefining empty ones + [algs] Implement implicit casting between compatible pair types - src/hb-iter.hh | 26 +++++++++++++++----------- - 1 file changed, 15 insertions(+), 11 deletions(-) + src/hb-algs.hh | 5 +++++ + src/test-algs.cc | 3 +++ + 2 files changed, 8 insertions(+) -commit 125c45ed368ae61a74e2c558b9c884cfde6295e1 -Author: David Corbett -Date: Wed May 15 17:02:32 2019 -0400 +commit 69d9114b5372c1fcea5f20e75a187158c31c52f8 +Author: Behdad Esfahbod +Date: Thu May 9 15:24:14 2019 -0700 - Convert Consonant_Initial_Postfixed to CONS_MED + [meta] Rewrite hb_is_cr_converitble - src/gen-use-table.py | 6 +++--- - src/hb-ot-shape-complex-use-table.cc | 2 +- - .../fonts/fd565cabd5208d345d0ed4fda7ae742917d846a5.ttf | Bin 0 -> 1056 bytes - test/shaping/data/in-house/tests/use-syllable.tests | 1 + - 4 files changed, 5 insertions(+), 4 deletions(-) + src/hb-meta.hh | 22 ++++++++++------------ + 1 file changed, 10 insertions(+), 12 deletions(-) -commit 99ca956c131563b57d490b1ec3c8de920645e53f -Author: David Corbett -Date: Wed May 15 16:29:51 2019 -0400 +commit ceda1f03b7b06248ffd056eb7b2400088bb4a121 +Author: Behdad Esfahbod +Date: Thu May 9 15:19:42 2019 -0700 - Fix record-test.sh on machines without sha1sum + Fix compile + + NameRecord is not copy-constructible, so should be iterator of + const-reference. - test/shaping/record-test.sh | 13 ++++++++++++- - 1 file changed, 12 insertions(+), 1 deletion(-) + src/hb-meta.hh | 2 -- + src/hb-ot-name-table.hh | 2 +- + src/test-meta.cc | 12 ++++++++++++ + 3 files changed, 13 insertions(+), 3 deletions(-) -commit e2767e438c56b8ee0bc2f2040c10b13b34d37f95 -Author: Ebrahim Byagowi -Date: Wed May 15 13:14:09 2019 +0430 +commit 3686c3b65c017cf8689b67db440b4cddd399538b +Author: Behdad Esfahbod +Date: Thu May 9 15:09:07 2019 -0700 - [ci][test] Ignore other gcov symbols also + Adjust is_cr_convertible - To fix https://travis-ci.org/harfbuzz/harfbuzz/jobs/532693197 + If To is const& then From doesn't need to be &. - src/check-symbols.sh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-meta.hh | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) -commit 397cbbd5ff25c9796ecd56b8270e83de1eb322ac -Author: Ebrahim Byagowi -Date: Wed May 15 13:03:28 2019 +0430 +commit 726002a6a615e2d213186d402cca4e8d7e7a7f58 +Author: Behdad Esfahbod +Date: Thu May 9 14:53:02 2019 -0700 - [ci][travis] Update its distribution + [iter] Make hb_is_iterator_of() check is_convertible - It may break things, lets see + Instead of is_cr_convertible. + + src/hb-array.hh | 8 ++++---- + src/hb-iter.hh | 2 +- + src/hb-meta.hh | 8 ++++---- + 3 files changed, 9 insertions(+), 9 deletions(-) + +commit 70a49f2e4a9ab05fe04d1949bbf7a128d14a1284 +Author: Behdad Esfahbod +Date: Thu May 9 14:35:15 2019 -0700 + + [meta] Add hb_conditional<> and hb_is_convertible() - .travis.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/Makefile.am | 6 ++++- + src/hb-meta.hh | 56 +++++++++++++++++++++++++++++++++++++-------- + src/test-meta.cc | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 121 insertions(+), 11 deletions(-) -commit 763ea4224bf612f3efb80d5744d1e8852682683e -Author: Behdad Esfahbod -Date: Wed May 15 01:15:11 2019 -0700 +commit 5e3cbed048b19ee579277ab4c56167a15d13104e +Author: Garret Rieger +Date: Wed May 8 16:33:03 2019 -0700 - Another try + [subset] Switch building of glyph maps in subset plan to use iterators. - src/hb-open-type.hh | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) + src/hb-algs.hh | 4 +--- + src/hb-subset-plan.cc | 52 +++++++++++++++++++++++++-------------------------- + 2 files changed, 27 insertions(+), 29 deletions(-) -commit e1b2edb04af7bd2b4eecb59392f75abcc72cd8a6 -Author: Behdad Esfahbod -Date: Wed May 15 01:12:04 2019 -0700 +commit 971020eca7c5d576816b93431607f1e63e9584a4 +Author: Garret Rieger +Date: Wed May 8 16:31:52 2019 -0700 - Completely revert the thing back + Add sink support for hb_hashmap_t and a reverse call to hb_pair_t. - src/hb-open-type.hh | 14 +++++--------- - 1 file changed, 5 insertions(+), 9 deletions(-) + src/hb-algs.hh | 5 +++++ + src/hb-map.hh | 4 ++++ + 2 files changed, 9 insertions(+) -commit c58eeb5fb35ec6a8d0a4394fd83cb2571cd5af4f +commit 98eec3dd5f527cc562d98784429db0c7269e82a8 Author: Behdad Esfahbod -Date: Wed May 15 01:10:31 2019 -0700 +Date: Thu May 9 13:15:36 2019 -0700 - Another try at fix + Add hb_pair_t(,) macro as alternative to hb_pair_t<,> - Fails locally. Trying to understand. Sigh + Just so it's easier to use it in other macros. - src/hb-open-type.hh | 18 +++++++++--------- - 1 file changed, 9 insertions(+), 9 deletions(-) + src/hb-algs.hh | 1 + + 1 file changed, 1 insertion(+) -commit 004edf3bdac77564d39516b51b0666de60e65ece +commit c9b287a867d6130a0cc745d7fd3ccfa4dcb4c32e Author: Behdad Esfahbod -Date: Wed May 15 01:02:50 2019 -0700 +Date: Thu May 9 12:43:57 2019 -0700 - Ugh. How was the Travis bot happy before, but isn't now?! :( + Add hb_lidentity(), and rename hb_rvalue() to hb_ridentity() - src/hb-open-type.hh | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) + src/hb-algs.hh | 13 ++++++++++++- + src/hb-map.hh | 4 ++-- + src/test-iter.cc | 2 +- + 3 files changed, 15 insertions(+), 4 deletions(-) -commit e01c7b1648dbbb76966b3bd4437bcf7699e77c35 +commit 00195a22ce5198345cb39825a45863cef7d8f7fc Author: Behdad Esfahbod -Date: Wed May 15 00:52:17 2019 -0700 +Date: Thu May 9 12:14:36 2019 -0700 - Move OffsetTo operator+ back out of class - - Apparently there's different overload resolution rules that apply, at - least with some (older?) version of gcc. + [hdmx] Adjust to hb_iota() behavior change - hb-ot-name-table.hh: In member function ‘void OT::name::accelerator_t::init(hb_face_t*)’: - hb-ot-name-table.hh:244:62: error: ambiguous overload for ‘operator+’ (operand types are ‘hb_blob_ptr_t’ and ‘OT::NNOffsetTo > > {aka const OT::OffsetTo >, OT::IntType, false>}’) - this->pool = (const char *) (const void *) (this->table+this->table->stringOffset); - ^ - hb-ot-name-table.hh:244:62: note: candidates are: - hb-ot-name-table.hh:244:62: note: operator+(const C*, long int) - hb-ot-name-table.hh:244:62: note: operator+(const char*, long int) + Use hb_range() instead. - src/hb-open-type.hh | 18 +++++++++--------- - 1 file changed, 9 insertions(+), 9 deletions(-) + src/hb-ot-hdmx-table.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit b213042f87dd736bad7a852fe98269f84cbff493 +commit 4f2ad75a839708de71e7341f23c2d4b72059fc58 Author: Behdad Esfahbod -Date: Wed May 15 00:50:48 2019 -0700 +Date: Thu May 9 12:07:45 2019 -0700 - Revert "Revert symmetric OffsetTo overloads" - - This reverts commit 01912efb74fc554a81c8cfe572145ce45b8fa58b. - - Actually this didn't break things. Fixing + [enumerate] Fix hb_enumerate() len for step=0 - src/hb-open-type.hh | 4 ++++ - 1 file changed, 4 insertions(+) + src/hb-iter.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 01912efb74fc554a81c8cfe572145ce45b8fa58b +commit 5da3c9c33f02010a3fc57cf0e1d07955af681e7c Author: Behdad Esfahbod -Date: Wed May 15 00:42:47 2019 -0700 +Date: Thu May 9 11:30:31 2019 -0700 - Revert symmetric OffsetTo overloads - - Reverts 57f65ae9355004044325dd6441cde761bca5e0a3 + [iter] Fix hb_zip() end condition - Caused ambiguous-overload on some gcc... + We should compare-equal to end if either iterator's end reaches, + not if both reach at the same time. Fixes infinite-loop in test + which was happening after hb_enumerate() switched to using hb_zip(). - src/hb-open-type.hh | 4 ---- - 1 file changed, 4 deletions(-) + src/hb-iter.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit d0df996cdc249a245c9dad1fa6503213c84dbcd2 +commit 57a5256fbcef6e5d29fc40cf019cc4b2c29c9dcf Author: Behdad Esfahbod -Date: Wed May 15 00:32:41 2019 -0700 +Date: Thu May 9 11:30:27 2019 -0700 - Use implicit lambda return type + [iter] Minor - src/hb-array.hh | 4 ++-- - src/hb-ot-layout-gsub-table.hh | 8 ++++---- - src/hb-ot-layout-gsubgpos.hh | 18 +++++++++--------- - src/hb-ot-stat-table.hh | 2 +- - src/hb-ot-var-fvar-table.hh | 4 ++-- - src/test-iter.cc | 8 ++++---- - src/test-meta.cc | 1 - - 7 files changed, 22 insertions(+), 23 deletions(-) + src/hb-iter.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit 57f65ae9355004044325dd6441cde761bca5e0a3 +commit 12dd56f8573cb86169580d5ac31b986208805c03 Author: Behdad Esfahbod -Date: Tue May 14 22:52:59 2019 -0700 +Date: Thu May 9 11:25:02 2019 -0700 - Add symmetric friend operator+ for OffsetTo + [iter] Minor - src/hb-open-type.hh | 4 ++++ - 1 file changed, 4 insertions(+) + src/hb-iter.hh | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) -commit 71208e5047c71108dec7361fd7c3e594c8b6c2d8 +commit 57d545932f539d06c52862310ecdfe79c143bb6b Author: Behdad Esfahbod -Date: Tue May 14 22:51:59 2019 -0700 +Date: Thu May 9 11:23:41 2019 -0700 - Move OffsetTo<> deref operators in-class as friends + [test-iter] Don't walk past end + + That's not legal. - src/hb-open-type.hh | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) + src/test-iter.cc | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) -commit e6d6f4b96dd5517406265093cd57834c00850d41 +commit 46837910e628248edc09e45e212532a3493905da Author: Behdad Esfahbod -Date: Tue May 14 22:45:03 2019 -0700 +Date: Thu May 9 11:20:41 2019 -0700 - Whitespace + [iter] Allow negative step in hb_iota() - src/hb-ot-stat-table.hh | 2 +- - src/hb-ot-var-fvar-table.hh | 4 ++-- - 2 files changed, 3 insertions(+), 3 deletions(-) + src/hb-iter.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 889dc1eb06a80ea9be4223a19011e47a52abebdd +commit 087327af1eac8c3a16115904557cbf3ab0f28072 Author: Behdad Esfahbod -Date: Tue May 14 22:28:07 2019 -0700 +Date: Thu May 9 11:14:06 2019 -0700 - [iter] Remove sort categorization - - See comments. + [iter] Minor - src/hb-array.hh | 2 +- - src/hb-iter.hh | 48 ++++++++++++++++++++++++++++++---------------- - src/hb-ot-layout-common.hh | 2 +- - src/hb-set.hh | 2 +- - 4 files changed, 35 insertions(+), 19 deletions(-) + src/hb-iter.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit b4eff38397c2a4e475f426df38e040dddf94a4fa +commit 64f0899a9f5e5aff65c5a78fa796ceae6f35c008 Author: Behdad Esfahbod -Date: Tue May 14 09:07:20 2019 -0700 +Date: Thu May 9 11:10:31 2019 -0700 - Start of gen-ucd.py, to replace UCDN + [iter] Bug fix - src/gen-ucd.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 46 insertions(+) + src/hb-iter.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 02e5e5d939be36d8f108029601a1ce1f533e5ccb -Author: Qunxin Liu -Date: Mon May 13 09:38:42 2019 -0700 +commit 5d263556b95047bced88e4a6252178d2fc0f9a19 +Author: Behdad Esfahbod +Date: Thu May 9 11:08:25 2019 -0700 - [subset] retian nameids from STAT and fvar tables + [iter] Fix - src/hb-ot-stat-table.hh | 76 +++++++++++++++++++++++++++++++++++++++++---- - src/hb-ot-var-fvar-table.hh | 21 +++++++++++++ - src/hb-subset-plan.cc | 26 ++++++++++++++++ - 3 files changed, 117 insertions(+), 6 deletions(-) + src/hb-iter.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit ff7995200e706f3161b9fc5c27bb950e3d87e8e2 +commit 2c24ea37b1ef63f79fcc24752dd180ce53540eda Author: Behdad Esfahbod -Date: Tue May 14 07:44:03 2019 -0700 +Date: Thu May 9 11:07:38 2019 -0700 - Hopefully last warning fix + [iter] Take start value in hb_enumerate() + + Also rewrite it via composition. - src/hb-subset-cff2.cc | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/hb-iter.hh | 61 ++++++++++++-------------------------------------------- + src/test-iter.cc | 1 + + 2 files changed, 14 insertions(+), 48 deletions(-) -commit d1baf99697d215584b2ecb8d2d38ba5b9045955c -Author: Ebrahim Byagowi -Date: Tue May 14 16:16:46 2019 +0430 +commit 7675d0d3a6cc13ade1a2047019ef7fac8c373a3c +Author: Behdad Esfahbod +Date: Thu May 9 11:02:56 2019 -0700 - [ci] add HB_TINY to asmjs builder + [iter] Add hb_range() + + hb_range() is like Python range. hb_iota() has slightly different API. + Ie. it takes a start, instead of end. - .circleci/config.yml | 28 ++++++++++++++-------------- - 1 file changed, 14 insertions(+), 14 deletions(-) + src/hb-iter.hh | 29 ++++++++++++++++++----------- + src/test-iter.cc | 19 +++++++++++-------- + 2 files changed, 29 insertions(+), 19 deletions(-) -commit 9e7c9c3adb33b06610951be38f3c820342333092 -Author: Ebrahim Byagowi -Date: Tue May 14 15:58:51 2019 +0430 +commit 05867d9f5315c7e4f49e5873a5aba6bba7121f04 +Author: Behdad Esfahbod +Date: Thu May 9 11:00:43 2019 -0700 - Fix -Wunused-function on HB_NO_SHAPE_AAT - - We should add a bot for it - Part of #1652 + [meta] Add hb_int_max() - src/hb-ot-shape.cc | 2 ++ - 1 file changed, 2 insertions(+) + src/hb-meta.hh | 91 ++++++++++++++++++++++++++++++++++++---------------------- + 1 file changed, 56 insertions(+), 35 deletions(-) -commit c73d7ba75d4556d9b8e05b10d6572f74f4814f7a -Author: Dominik Röttsches -Date: Tue May 14 13:26:18 2019 +0300 +commit 71537f93e0ce27121012bf1e81270b6b03b22224 +Author: Behdad Esfahbod +Date: Thu May 9 10:46:49 2019 -0700 - Fix building with HB_NO_SUBSET_LAYOUT - - Fixes an unused function warning when building with HB_NO_SUBSET_LAYOUT - as part of the Chrome build. + [iota] end -> end_ to not shadow + + src/hb-iter.hh | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +commit 6bc82579100992e3f04c11f36b9c2f0014d880f2 +Merge: 34764454 6d9a86ae +Author: n8willis +Date: Thu May 9 14:39:05 2019 +0100 - src/hb-subset-plan.cc | 2 ++ - 1 file changed, 2 insertions(+) + Merge pull request #1680 from n8willis/usermanual-obj + + Usermanual: object-model chapter -commit f39934983f459c992e27075cd2c45ac0025183d0 +commit 3476445420d0e6432c09710b6667205453799129 Author: Behdad Esfahbod -Date: Tue May 14 00:13:21 2019 -0700 +Date: Wed May 8 21:14:01 2019 -0700 - [ucdn] Fix Hangul composition + Remove unnecessary template keyword - https://github.com/grigorig/ucdn/issues/23 + Should fix MSVC. - src/hb-ucdn/ucdn.c | 3 ++- - test/api/test-unicode.c | 4 ++++ - 2 files changed, 6 insertions(+), 1 deletion(-) + src/hb-array.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit b2ab15a78c219016e20389582716e0ac0ee8aeb5 +commit e2a51ff7264940312197184318f5ad4ec971492f Author: Behdad Esfahbod -Date: Mon May 13 23:47:28 2019 -0700 +Date: Wed May 8 16:41:39 2019 -0700 - Fix more warnings + Remove unused var - src/hb-ot-cff1-table.hh | 8 ++++---- - src/hb-subset-cff1.cc | 4 ++-- - 2 files changed, 6 insertions(+), 6 deletions(-) + src/hb-open-type.hh | 1 - + 1 file changed, 1 deletion(-) -commit 42ae468a8a76e1e4e6a8121eec5dc118f52086ee +commit e8b45c19330d8718cd6d7aef0ca2db0539a53294 Author: Behdad Esfahbod -Date: Mon May 13 23:43:45 2019 -0700 +Date: Wed May 8 16:37:38 2019 -0700 - [config] Add NDEBUG and HB_NDEBUG - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + [array] Add .copy() - src/hb-config.hh | 10 ++++++++++ - src/hb.hh | 10 ---------- - 2 files changed, 10 insertions(+), 10 deletions(-) + src/hb-array.hh | 11 +++++++++++ + src/hb-open-type.hh | 10 ++++------ + src/hb-serialize.hh | 2 +- + 3 files changed, 16 insertions(+), 7 deletions(-) -commit 0a01deb76fa582afa83da70a09478299d8080827 +commit afb013f350b0022ae6c05f140aeba23d5de34101 Author: Behdad Esfahbod -Date: Mon May 13 18:04:09 2019 -0700 +Date: Wed May 8 16:16:43 2019 -0700 - One more warning fix + Fix msan issue - No idea where these appear from... + hb_identity returns rvalue-reference if input is rvalue. That, can leak + the reference and cause in bad access to temporaries after they are + destructed. This is unfortunately unfixable given the desired + transparency of hb_identity :(. Just don't use it with hb_map(). - src/hb-ot-cff-common.hh | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/test-iter.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit f76e9f2ede76a189d48ddd4f2275442d8e849815 +commit 4c94bc63d914fac7e11940eb165b6cf1039ba5a1 Author: Behdad Esfahbod -Date: Mon May 13 17:39:46 2019 -0700 +Date: Wed May 8 15:57:33 2019 -0700 - [icu] Comment + Move hb_invoke() back to hb-algs.hh - src/hb-icu.cc | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) + src/hb-algs.hh | 32 ++++++++++++++++++++++++++++++++ + src/hb-meta.hh | 32 -------------------------------- + 2 files changed, 32 insertions(+), 32 deletions(-) -commit 70fe9e73555f3354238f7cda5ff0f0c0b75e1d62 +commit b710176ce28e863a01797987d7ce37d19aaf2fd3 Author: Behdad Esfahbod -Date: Mon May 13 17:35:02 2019 -0700 +Date: Wed May 8 15:46:51 2019 -0700 - Fix moreeeeeeeeeee + [hdmx] Touch up - src/hb-icu.cc | 28 +++++++++++++++------------- - src/hb-subset-plan.cc | 2 +- - 2 files changed, 16 insertions(+), 14 deletions(-) + src/hb-ot-hdmx-table.hh | 24 ++++++++++++++---------- + 1 file changed, 14 insertions(+), 10 deletions(-) -commit 68e12e68f813bfd22dda040463d042cc06b958ec -Author: Behdad Esfahbod -Date: Mon May 13 17:28:59 2019 -0700 +commit e8ef0e627c493af700e254bdd2767f8955f2d03f +Author: Garret Rieger +Date: Tue May 7 17:23:02 2019 -0700 - Fix more semi-colon issues + [subset] WIP convert hdmx subsetting to use iterators. - src/hb-coretext.cc | 4 ++-- - src/hb-directwrite.cc | 4 ++-- - src/hb-graphite2.cc | 4 ++-- - src/hb-uniscribe.cc | 4 ++-- - 4 files changed, 8 insertions(+), 8 deletions(-) + src/hb-ot-hdmx-table.hh | 121 +++++++++++++++++++------------------------- + test/api/test-subset-hdmx.c | 23 --------- + 2 files changed, 51 insertions(+), 93 deletions(-) -commit 4d3cf2adb669c345cc43832d11689271995e160a -Author: Behdad Esfahbod -Date: Mon May 13 17:25:07 2019 -0700 +commit d5decf9bf77db914b67ffc446379df621516e362 +Author: Garret Rieger +Date: Tue May 7 15:47:38 2019 -0700 - [iter] Fix zip iterator sortedness classification logic + [subset] Move hdmx to subset2. - src/hb-iter.hh | 9 ++------- - 1 file changed, 2 insertions(+), 7 deletions(-) + src/hb-ot-hdmx-table.hh | 36 ++++++------------------------------ + src/hb-subset.cc | 2 +- + 2 files changed, 7 insertions(+), 31 deletions(-) -commit c572732f29787d1cf7ff39b8160b3935d4b13ba4 +commit 27b2093009745b6c30663605f45ac95deb1562cc Author: Behdad Esfahbod -Date: Mon May 13 15:41:09 2019 -0700 +Date: Wed May 8 15:32:57 2019 -0700 - Fix more excess semi-colon errors + [map] Return rvalues from keys()/values() - src/hb-common.cc | 2 +- - src/hb-ot-name.cc | 4 ++-- - src/hb-ot-shape-complex-indic.hh | 2 +- - src/hb-ot-shape-complex-khmer.hh | 2 +- - 4 files changed, 5 insertions(+), 5 deletions(-) + src/hb-algs.hh | 7 +++++++ + src/hb-map.hh | 2 ++ + 2 files changed, 9 insertions(+) -commit 513762849a683914fc266a17ddf38f133cccf072 +commit 372c5b97bfa3b744de1d017cf662607eb8a2fa6e Author: Behdad Esfahbod -Date: Mon May 13 15:36:14 2019 -0700 +Date: Wed May 8 15:28:39 2019 -0700 - [iter] Track strictly-sorted iterators + [map] Fix bots - This make output of hb_enumerate() sorted regardless of input iterator. + Older compilers don't like calling iter() from return-type decltype() + + ../src/hb-map.hh:226:12: error: cannot call member function 'decltype ((((+ hb_array(((const hb_hashmap_t*)this)->hb_hashmap_t::items, (((const hb_hashmap_t*)this)->hb_hashmap_t::mask ? (((const hb_hashmap_t*)this)->hb_hashmap_t::mask + 1) : 0))) | hb_filter((& hb_hashmap_t::item_t:: is_real))) | hb_map((& hb_hashmap_t::item_t:: get_pair)))) hb_hashmap_t::iter() const [with K = const hb_serialize_context_t::object_t*; V = unsigned int; K kINVALID = 0u; V vINVALID = 0u; decltype ((((+ hb_array(((const hb_hashmap_t*)this)->hb_hashmap_t::items, (((const hb_hashmap_t*)this)->hb_hashmap_t::mask ? (((const hb_hashmap_t*)this)->hb_hashmap_t::mask + 1) : 0))) | hb_filter((& hb_hashmap_t::item_t:: is_real))) | hb_map((& hb_hashmap_t::item_t:: get_pair)))) = hb_map_iter_t::item_t>, bool (hb_hashmap_t::item_t::*)() const, const&, 0u>, hb_pair_t (hb_hashmap_t::item_t::*)() const, 0u>]' without object + + iter() + ^ + ../src/hb-meta.hh:58:41: note: in definition of macro 'HB_AUTO_RETURN' + #define HB_AUTO_RETURN(E) -> decltype ((E)) { return (E); } + ^ - src/hb-array.hh | 2 +- - src/hb-iter.hh | 30 +++++++++++++++++++++--------- - src/hb-ot-layout-common.hh | 2 +- - src/hb-set.hh | 2 +- - 4 files changed, 24 insertions(+), 12 deletions(-) + src/hb-map.hh | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) -commit 7e02063f3202712b4e5fbddac0354adadb924f72 +commit a30482718491e3455365167e1c85981c8c0f542b Author: Behdad Esfahbod -Date: Mon May 13 15:26:00 2019 -0700 +Date: Wed May 8 15:08:10 2019 -0700 - [iter] Minor + [map] Add .values() iterator - src/hb-iter.hh | 21 +++++++++++---------- - 1 file changed, 11 insertions(+), 10 deletions(-) + src/hb-map.hh | 6 +++++- + src/test-iter.cc | 8 ++++++++ + 2 files changed, 13 insertions(+), 1 deletion(-) -commit a5fb44a8cbbaad194ddf6d02a6b6c98b0b637149 -Author: Garret Rieger -Date: Mon May 13 14:57:40 2019 -0700 +commit 3c69505b3a7850b68a931849a2badb84b6b36d51 +Author: Behdad Esfahbod +Date: Wed May 8 15:05:10 2019 -0700 - [subset] Fix shadowed 'groups' param in cmap. + [map] Fix iter - src/hb-ot-cmap-table.hh | 18 +++++++++--------- - 1 file changed, 9 insertions(+), 9 deletions(-) + src/hb-map.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 73943bdf21a96f4e12cb9efd8458a2711de0d870 +commit 5ceaafa5de8dff51fe91f7008a12ec9c304a1376 Author: Behdad Esfahbod -Date: Mon May 13 14:48:31 2019 -0700 +Date: Wed May 8 14:59:25 2019 -0700 - Adjust uniscribe_bug_compatible mode - - More correct behavior. We were commenting out some legit conditions - before. - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + [algs] Fix identity return type - src/hb-ot-shape-complex-indic.cc | 10 ++-------- - 1 file changed, 2 insertions(+), 8 deletions(-) + src/hb-algs.hh | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) -commit 809c58708359bcc22bb1273069886f2cbf68be65 +commit f5705d7656817cbfdbc4479b1cb0be3af6f4abdf Author: Behdad Esfahbod -Date: Mon May 13 14:45:51 2019 -0700 +Date: Wed May 8 14:46:55 2019 -0700 - [config] Better compile away morx/kerx/trak - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + Whitespace - src/hb-ot-shape.cc | 38 ++++++++++++++------------------------ - src/hb-ot-shape.hh | 12 +++++++++++- - 2 files changed, 25 insertions(+), 25 deletions(-) + src/hb-map.hh | 10 +++++----- + src/test-iter.cc | 11 +++++++---- + 2 files changed, 12 insertions(+), 9 deletions(-) -commit b1d3e54bd3c881794b05831e811b1a77a7d427c5 +commit a17f0fa3a10a25959561582ae63ef2e5208647e2 Author: Behdad Esfahbod -Date: Mon May 13 14:35:04 2019 -0700 +Date: Wed May 8 14:44:11 2019 -0700 - [indic] Don't constrain how many C, M, ... occur - - Fixes https://github.com/harfbuzz/harfbuzz/issues/1709 - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + [meta] Capture rvalue-references in is_reference / remove_reference - src/hb-ot-shape-complex-indic-machine.hh | 1225 ++++++++---------------------- - src/hb-ot-shape-complex-indic-machine.rl | 8 +- - 2 files changed, 305 insertions(+), 928 deletions(-) + src/hb-meta.hh | 1 + + 1 file changed, 1 insertion(+) -commit 148d88368013ba9bf70a7dd275b1a0f9c64fd45c +commit 7166bd563447a64eda05c66668bd4a178292bd79 Author: Behdad Esfahbod -Date: Mon May 13 14:33:06 2019 -0700 +Date: Wed May 8 14:24:57 2019 -0700 - [test] Don't call deprecated API + Minor - test/api/test-font.c | 3 --- - test/api/test-shape.c | 16 ++-------------- - 2 files changed, 2 insertions(+), 17 deletions(-) + src/hb-open-type.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit a487fc33248ea2f934ff4cb857cb556065c11841 -Author: Behdad Esfahbod -Date: Mon May 13 14:16:33 2019 -0700 +commit b827181ba1f539c990e1bd8fdd3559f1589c8d28 +Author: rsheeter +Date: Wed May 8 13:51:11 2019 -0700 - Another extra semi-colon + [map] tweak test-iter.cc - src/hb-ot-layout-common.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-map.hh | 1 - + src/test-iter.cc | 2 +- + 2 files changed, 1 insertion(+), 2 deletions(-) + +commit 492af0f1bf1d7198b474fda2faca451908af267f +Author: rsheeter +Date: Wed May 8 12:47:18 2019 -0700 + + [map] add keys() + + src/hb-map.hh | 9 ++++++++- + src/test-iter.cc | 4 ++++ + 2 files changed, 12 insertions(+), 1 deletion(-) + +commit ba60512813caafc2006b26214e95bbfe1c0e460a +Author: rsheeter +Date: Wed May 8 12:09:10 2019 -0700 + + [map] add a test for iteration + + src/hb-map.hh | 2 +- + src/test-iter.cc | 4 ++++ + 2 files changed, 5 insertions(+), 1 deletion(-) -commit 8461ade7832110d28001dc641342d3f9461e03b0 -Author: Behdad Esfahbod -Date: Mon May 13 14:10:48 2019 -0700 +commit 183b8094b577dcb7f40b7fcd64b60d405845897a +Author: rsheeter +Date: Wed May 8 11:40:31 2019 -0700 - Revert "[ragel] Regenerate ragel-generated files using ragel 7.0.0.11 May 2018" - - This reverts commit 9b05db33b54e6e5f0b4658f4c06e7fe563f8923b. - - Fixes https://github.com/harfbuzz/harfbuzz/issues/1708 + [map] add iteration - src/hb-buffer-deserialize-json.hh | 1051 ++++++----- - src/hb-buffer-deserialize-text.hh | 1009 ++++++----- - src/hb-ot-shape-complex-indic-machine.hh | 2678 ++++++++++++---------------- - src/hb-ot-shape-complex-khmer-machine.hh | 709 ++++---- - src/hb-ot-shape-complex-myanmar-machine.hh | 820 ++++----- - src/hb-ot-shape-complex-use-machine.hh | 1144 ++++++------ - 6 files changed, 3452 insertions(+), 3959 deletions(-) + src/hb-map.hh | 11 +++++++++++ + 1 file changed, 11 insertions(+) -commit 52c15b053aec06d351404a4c15609384946b26e1 -Author: Behdad Esfahbod -Date: Mon May 13 14:10:28 2019 -0700 +commit df237d2fe78086ad16bdbd2cc60639ae9ce909d6 +Author: Ebrahim Byagowi +Date: Wed May 8 14:17:14 2019 -0700 - Revert "[ragel] Switch to -T1 output instead of -F1" - - This reverts commit ae8719eb596485ebff07dd5016256015cd0cf86b. + [test] Add https://crbug.com/oss-fuzz/14641 testcase - Part of https://github.com/harfbuzz/harfbuzz/issues/1708 + As 503748d fix - src/Makefile.am | 2 +- - src/hb-buffer-deserialize-json.hh | 381 ++- - src/hb-buffer-deserialize-text.hh | 308 +-- - src/hb-ot-shape-complex-indic-machine.hh | 3527 +++++++--------------------- - src/hb-ot-shape-complex-khmer-machine.hh | 396 +--- - src/hb-ot-shape-complex-myanmar-machine.hh | 742 ++---- - src/hb-ot-shape-complex-use-machine.hh | 1011 ++------ - 7 files changed, 1658 insertions(+), 4709 deletions(-) + ...-testcase-minimized-hb-subset-fuzzer-5676773460672512 | Bin 0 -> 2172 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) -commit e98f0ddd6373f64ef4b542daa36b5841399170af -Author: Behdad Esfahbod -Date: Mon May 13 13:53:06 2019 -0700 +commit 02ae2591d930563cec8c3c63086afb0a3a12c4aa +Author: Michiharu Ariza +Date: Wed May 8 13:44:03 2019 -0700 - Fix extra semi-colon + initialize return param subr_num in popSubrNum + + also snake_cased popSubrtNum and other surrounding function names - src/hb-iter.hh | 2 +- - src/hb.hh | 1 + - 2 files changed, 2 insertions(+), 1 deletion(-) + src/hb-cff-interp-cs-common.hh | 15 ++++++++------- + src/hb-subset-cff1.cc | 4 ++-- + src/hb-subset-cff2.cc | 4 ++-- + 3 files changed, 12 insertions(+), 11 deletions(-) -commit ae8719eb596485ebff07dd5016256015cd0cf86b +commit 503748d8a80dd5db450c8c4dc109f2b97049d989 Author: Behdad Esfahbod -Date: Mon May 13 12:27:10 2019 -0700 +Date: Wed May 8 12:45:02 2019 -0700 - [ragel] Switch to -T1 output instead of -F1 - - Fedora upgraded to ragel 7, which is buggy if char is signed. - Switching to -G2 output fails with sign-compare error: - - ../../src/hb-buffer-deserialize-json.hh:107:12: error: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘const char’ [-Werror=sign-compare] - if ( 9u <= ( (*( p))) && ( (*( p))) <= 13u ) { - ~~~^~~~~~~~~~~~~ - - Switching to -T1 for now. It actually results in smaller code, - at the expense of some binary searching instead of flat tables. - In the not distant future, we might actually generate two different - outputs and choose between depending on size-optimize options. + [name] Sanitize records for reals - Fixes https://github.com/harfbuzz/harfbuzz/issues/1708 + Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14641 - src/Makefile.am | 2 +- - src/hb-buffer-deserialize-json.hh | 381 ++-- - src/hb-buffer-deserialize-text.hh | 308 ++- - src/hb-ot-shape-complex-indic-machine.hh | 3401 +++++++++++++++++++++------- - src/hb-ot-shape-complex-khmer-machine.hh | 396 +++- - src/hb-ot-shape-complex-myanmar-machine.hh | 742 ++++-- - src/hb-ot-shape-complex-use-machine.hh | 1011 ++++++--- - 7 files changed, 4646 insertions(+), 1595 deletions(-) + src/hb-ot-name-table.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit df3f36f0bb7aeed0554843f24f6542852e40f6cc +commit 5875d775e1253c0e14b900539c28c2de881da7aa Author: Behdad Esfahbod -Date: Sun May 12 20:56:36 2019 -0700 +Date: Wed May 8 12:25:34 2019 -0700 - Minor + [iter] Rename hb_iter_t() to hb_iter_type<> and add hb_item_type<> - src/gen-os2-unicode-ranges.py | 2 ++ - 1 file changed, 2 insertions(+) + src/hb-iter.hh | 18 ++++++++++-------- + 1 file changed, 10 insertions(+), 8 deletions(-) -commit ccc88e98f34453100830d6408fdabfe90e6b47b8 +commit bad16066392e4dbdd8490a4b1c70d1dcddcc8ec8 Author: Behdad Esfahbod -Date: Sun May 12 16:12:06 2019 -0700 +Date: Wed May 8 12:11:52 2019 -0700 - Fix MSVC build + [map] Make .has() optionally return value - src/hb-ot-shape-complex-indic.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-map.hh | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) -commit f8f9cb93b7166b0d8c816610596da486443c7391 +commit 750d5af48e38627c3c84a2f3857a7ee602221e24 Author: Behdad Esfahbod -Date: Sun May 12 15:56:25 2019 -0700 +Date: Wed May 8 12:01:55 2019 -0700 - [config] Define HB_NO_SUBSET_LAYOUT in HB_LEAN - - Assumning subsetter would be used for printing-like uses in that case, - which don't need GSUB/GPOS. + Make compiler happy with -Og - src/hb-config.hh | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) + src/hb-cff-interp-cs-common.hh | 2 +- + src/hb-ot-cmap-table.hh | 6 +++--- + src/hb-ot-glyf-table.hh | 2 +- + src/hb-subset-glyf.cc | 4 ++-- + 4 files changed, 7 insertions(+), 7 deletions(-) -commit a1394a28fc4b3d15ef45481f3147f0685d343acb +commit cdb61eb0431d426f7152f975e89ee3ba4431083f Author: Behdad Esfahbod -Date: Sun May 12 15:47:46 2019 -0700 +Date: Wed May 8 11:00:18 2019 -0700 - [config] Add HB_NO_UNISCRIBE_BUG_COMPATIBLE - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + [iter] Accept pointer in hb_iter() and hb_iter_t() - src/hb-config.hh | 4 ++++ - src/hb-ot-shape-complex-indic.cc | 24 ++++++++++++++++++------ - 2 files changed, 22 insertions(+), 6 deletions(-) + src/hb-iter.hh | 4 ++-- + src/test-iter.cc | 3 +++ + 2 files changed, 5 insertions(+), 2 deletions(-) -commit dba1ac1b0e8f5f96974fc1119b318ae6127daa82 +commit c93eeba9b21cb8f8ba64ebaf284bf9c8a8544886 Author: Behdad Esfahbod -Date: Sun May 12 15:33:31 2019 -0700 - - [config] Disable buffer serialize routines in HB_TINY - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 - - src/hb-buffer-serialize.cc | 14 +++++++++++++- - src/hb-config.hh | 1 + - 2 files changed, 14 insertions(+), 1 deletion(-) +Date: Wed May 8 10:56:09 2019 -0700 -commit 3d9be2ad5036aaf02b69095faaf9c18705c2c5bc -Merge: a20db496 1a850abd -Author: n8willis -Date: Sun May 12 20:03:29 2019 +0100 + [iter] Accept pointer in hb_map() - Merge pull request #1665 from n8willis/docs-gtkdoc-colormath - - [Docs] Add gtk-doc comments for OT color and OT math + src/hb-iter.hh | 4 ++-- + src/test-iter.cc | 7 ++++++- + 2 files changed, 8 insertions(+), 3 deletions(-) -commit a20db496f090abc5b937857b7c5f077161b6ffe4 +commit 4c9e0c37a34e8355d752af39507b310f473bffa5 Author: Behdad Esfahbod -Date: Sun May 12 11:08:45 2019 -0700 +Date: Wed May 8 10:40:39 2019 -0700 - Fix builds + [serialize] LangSys subset->copy - src/hb-subset-plan.cc | 2 ++ - 1 file changed, 2 insertions(+) + src/hb-ot-layout-common.hh | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) -commit 8694d6082901661e90e2ffcf732e9985a215063f +commit 50dc3e7d9f4f290c7353313c5e5f888cb7c4846d Author: Behdad Esfahbod -Date: Sun May 12 11:05:24 2019 -0700 +Date: Wed May 8 10:35:02 2019 -0700 - [config] Enable HB_NO_MT in HB_TINY - - Now that user can override it if needed... - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + Add hb_iota() - src/hb-config.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-iter.hh | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ + src/test-iter.cc | 10 ++++++++++ + 2 files changed, 61 insertions(+) -commit 7f6fca4ef78cf3c9384bf835def14219b2ce8791 +commit aa4ac13f0be34bba66b00d04fd7806c474ff59c0 Author: Behdad Esfahbod -Date: Sun May 12 10:29:47 2019 -0700 +Date: Wed May 8 10:02:30 2019 -0700 - Force-disable CFF code under disabling conditions - - Subsetter size goes down from 190kb to 119kb. Main library about 7kb. + [iter] Actually fix previous commit - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + The iter objects shouldn't not be const. D'oh. - src/hb-ot-cff1-table.cc | 4 ++++ - src/hb-ot-cff2-table.cc | 4 ++++ - src/hb-subset-cff1.cc | 4 ++++ - src/hb-subset-cff2.cc | 4 ++++ - 4 files changed, 16 insertions(+) + src/hb-iter.hh | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) -commit 5249eee43748db32b40ad2602b3243d2491642b3 +commit a66598e0306fe80063c5d6a678bbca4a931bc4d4 Author: Behdad Esfahbod -Date: Sat May 11 16:12:07 2019 -0700 +Date: Wed May 8 09:56:29 2019 -0700 - [config] Allow overriding chosen config + [iter] For ref-qualified variants - src/hb-config.hh | 6 ++++++ - 1 file changed, 6 insertions(+) + src/hb-iter.hh | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) -commit 30c059a978c91fcd38d47f1ac4a03295f887a7da -Author: Ebrahim Byagowi -Date: Sat May 11 18:48:41 2019 -0400 +commit fa576ce1874fd886688bf3f16b714d86aebb07ec +Author: rsheeter +Date: Wed May 8 09:53:58 2019 -0700 - [test] minor, fix -Weverything bot + Update README.md - test/fuzzing/main.cc | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) + README.md | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) -commit a29b1de55abca2e90733caff7423e5251d72e03c -Author: Nathan Willis -Date: Sat May 11 20:56:55 2019 +0100 +commit d109c9e767ff3198d51e23a7ac8931d0bc4d5d72 +Author: rsheeter +Date: Wed May 8 09:53:29 2019 -0700 - Usermanual, fix up userfeatures example code in OpenType features section of shaping chapter. + Update README.md - docs/usermanual-opentype-features.xml | 15 +++++++++++---- - 1 file changed, 11 insertions(+), 4 deletions(-) + README.md | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) -commit 78fcb14db9041af0e0d5ea209cf0cb1977f6dcc3 -Author: Nathan Willis -Date: Sat May 11 20:56:02 2019 +0100 +commit 4063181791d6b3efb35e7c748dee12273e64ebd4 +Author: rsheeter +Date: Wed May 8 09:47:34 2019 -0700 - Usermanual, minor: flesh out invisible-glyph discussion in buffers chapter. + [docs] add fuzzer instructions (courtesy of Garret) - ...ermanual-buffers-language-script-and-direction.xml | 19 +++++++++++++++---- - 1 file changed, 15 insertions(+), 4 deletions(-) + TESTING.md | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit 00946ca3aa45f109c455871ce89c5872fd243624 +Author: Roderick Sheeter +Date: Wed May 8 09:42:35 2019 -0700 -commit 25531a30394c451a7a2aee77928e0a550015b803 -Author: Ebrahim Byagowi -Date: Sat May 11 19:50:42 2019 +0000 + [docs] add sample commands for test exec - [test] minor - - style fix and add return statement + README.md | 4 ++++ + TESTING.md | 47 +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 51 insertions(+) - test/fuzzing/main.cc | 10 +++++++--- - 1 file changed, 7 insertions(+), 3 deletions(-) +commit 8479eb5955c93cbc8951d0319b2fe43ff19cc403 +Author: Behdad Esfahbod +Date: Wed May 8 09:48:55 2019 -0700 -commit 1a850abd66999707b6f4795050e748fc879b92ef -Merge: 8a544171 a6048e4c -Author: n8willis -Date: Sat May 11 20:16:57 2019 +0100 + [iter] Fix hb_sink() to accept rvalue - Merge branch 'master' into docs-gtkdoc-colormath + src/hb-iter.hh | 2 +- + src/test-iter.cc | 4 ++++ + 2 files changed, 5 insertions(+), 1 deletion(-) -commit 8a544171d15bb36c15ca7bf679643b2b14f94b45 -Author: Nathan Willis -Date: Sat May 11 20:11:49 2019 +0100 +commit 710d459acac88fd784d4ead0ba75b9aa623c48d4 +Author: Behdad Esfahbod +Date: Wed May 8 09:33:09 2019 -0700 - Corrections to OT Color gtk-doc comments. + [iter] Default predicates to hb_identity instead of hb_bool + + The bool conversion happens after predicate is called automatically. - src/hb-ot-color.cc | 14 +++++++------- - 1 file changed, 7 insertions(+), 7 deletions(-) + src/hb-iter.hh | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) -commit 301f5091f6663cc8a1fff848bf5285aa15cc0598 -Author: Nathan Willis -Date: Sat May 11 20:11:36 2019 +0100 +commit fe14a4000a58528878bcc75fde0972de2b779316 +Author: Behdad Esfahbod +Date: Wed May 8 09:32:19 2019 -0700 - Corrections to OT Math gtk-doc comments. + Adjust hb_all/any/none - src/hb-ot-math.cc | 33 +++++++++++++++++++++++---------- - 1 file changed, 23 insertions(+), 10 deletions(-) + src/hb-iter.hh | 18 +++++++++--------- + src/test-iter.cc | 10 ++++++---- + 2 files changed, 15 insertions(+), 13 deletions(-) -commit a6048e4cd013987ecb846e0683a7cf6f0caa65f9 +commit 4a101d8ffccd6f907f16ef190125ded5e27e0d8b Author: Behdad Esfahbod -Date: Sat May 11 12:11:22 2019 -0700 +Date: Wed May 8 09:16:33 2019 -0700 - Fix build + Add hb_match - src/hb-ot-font.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-algs.hh | 30 +++++++++++++++++++++++++++++- + 1 file changed, 29 insertions(+), 1 deletion(-) -commit 32d3c06b61f2f4252f4403b55c6ba07fbb572149 +commit 26adefd9eaf4bc1d80b1ffececf0d86f3308f9ee Author: Behdad Esfahbod -Date: Sat May 11 11:59:18 2019 -0700 +Date: Wed May 8 09:14:44 2019 -0700 - Disable sbix if no-color or no-ot-font-bitmap - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + [algs] Try f[v] in hb_get() as last resort - src/hb-ot-font.cc | 21 +++++++++++---------- - 1 file changed, 11 insertions(+), 10 deletions(-) + src/hb-algs.hh | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) -commit 606841b07017ac80dea2fc5ada25b5976f2f9192 +commit 0601a19d38b2b0fc5dd36fd821af634a49322ebf Author: Behdad Esfahbod -Date: Sat May 11 11:54:30 2019 -0700 +Date: Wed May 8 07:47:36 2019 -0700 - [iter] Check for more before forwarding/rewinding past ends + Fix a few more double-pomotion errors - src/hb-iter.hh | 4 ++-- - src/test-iter.cc | 6 ++---- - 2 files changed, 4 insertions(+), 6 deletions(-) + src/hb-coretext.cc | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) -commit c1c122e7b3f60dc7b5a224c68d2acb106fda8b49 -Author: David Corbett -Date: Sat May 11 11:38:06 2019 -0400 +commit 2ba984fcbbef4561d35c3a2c502610c38b26f4fb +Author: Behdad Esfahbod +Date: Tue May 7 23:28:22 2019 -0700 - [iter] Fix filter rewinding + Fix signed comparison on 32bit - src/hb-iter.hh | 2 +- + src/hb-sanitize.hh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit b854d4ff46602104343201361919f30169144cf1 -Author: David Corbett -Date: Fri May 10 22:51:49 2019 -0400 +commit dfc57802450360f06026668b7b61495aaa2d1943 +Author: Behdad Esfahbod +Date: Tue May 7 23:26:09 2019 -0700 - [array] Fix rewinding + Fix more double-promotion errors + + WHy do only some of the clang bots catch this I have no idea :(. - src/hb-array.hh | 22 +++++++++++++--------- - 1 file changed, 13 insertions(+), 9 deletions(-) + src/hb-aat-layout-trak-table.hh | 4 ++-- + src/hb-font.hh | 2 +- + src/hb-open-type.hh | 4 ++-- + src/hb-ot-color-cbdt-table.hh | 12 ++++++------ + src/hb-ot-color-sbix-table.hh | 10 +++++----- + src/hb-ot-layout-gpos-table.hh | 20 ++++++++++---------- + 6 files changed, 26 insertions(+), 26 deletions(-) -commit 76e80c5ca5e820e955438e4c727929ddd99e695e -Author: n8willis -Date: Sat May 11 19:51:24 2019 +0100 +commit c2c9d204fa5c2189e369726276a1c0e92e09a9ce +Author: Behdad Esfahbod +Date: Tue May 7 23:13:38 2019 -0700 - Update src/hb-ot-color.cc + Fix double-promotion warnings - Co-Authored-By: Khaled Hosny + Make it an error. - src/hb-ot-color.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-var-fvar-table.hh | 12 ++++++------ + src/hb.hh | 1 + + 2 files changed, 7 insertions(+), 6 deletions(-) -commit 79126df3070f00193fe3caefe9deb62c4520e048 +commit 2c7093ed01f417828d5521d983eae63042363197 Author: Behdad Esfahbod -Date: Sat May 11 11:23:31 2019 -0700 +Date: Tue May 7 23:10:59 2019 -0700 - [iter] Add hb_map_sorted() and hb_map_retains_sorting() + More tests - src/hb-iter.hh | 38 +++++++++++++++++++++++++++++++------- - 1 file changed, 31 insertions(+), 7 deletions(-) + src/test-algs.cc | 3 +++ + 1 file changed, 3 insertions(+) -commit bcd81932f0bcb2258276ae313709780e90e9b0f6 -Author: n8willis -Date: Sat May 11 14:10:32 2019 +0100 +commit 56d2d0294b836ea1e2dea9e242ae72c99387d00a +Author: Behdad Esfahbod +Date: Tue May 7 23:08:49 2019 -0700 - Update src/hb-ot-math.cc + [algs] Sprinkle hb_min/max with hb-forward salad - Co-Authored-By: Khaled Hosny + Let's see if fixes MSVC fail. Though, the error doesn't make sense to me. + + hb-blob.cc + c:\projects\harfbuzz\src\hb-algs.hh(166): error C2440: 'return': cannot convert from 'unsigned int' to 'unsigned int &&' [C:\projects\harfbuzz\build\harfbuzz.vcxproj] + c:\projects\harfbuzz\src\hb-algs.hh(166): note: You cannot bind an lvalue to an rvalue reference + c:\projects\harfbuzz\src\hb-algs.hh(174): note: see reference to function template instantiation 'T &&::impl(T &&,T2) const' being compiled + with + [ + T=unsigned int, + T2=unsigned int & + ] - src/hb-ot-math.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-algs.hh | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) -commit ddc6dd42f753a20204898e41cc711b0100638330 -Author: n8willis -Date: Sat May 11 14:10:11 2019 +0100 +commit bdbfdc92b58d5c9f8654e430075dab543d1ba394 +Author: Behdad Esfahbod +Date: Tue May 7 22:52:43 2019 -0700 - Update src/hb-ot-math.cc + [iter] Add value and projection to hb_all/any/none - Co-Authored-By: Khaled Hosny + Allows for eg, checking all values equal 2: hb_all (it, 2). - src/hb-ot-math.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-iter.hh | 24 ++++++++++++++++++------ + src/test-iter.cc | 10 +++++++++- + 2 files changed, 27 insertions(+), 7 deletions(-) -commit 46e05ecca16e561a0ff4ca60bb064f480374590a -Author: n8willis -Date: Sat May 11 14:09:52 2019 +0100 +commit cf61acb9eaa2bb3fe479a9050116b4b96934e3ed +Author: Behdad Esfahbod +Date: Tue May 7 22:45:01 2019 -0700 - Update src/hb-ot-color.cc - - Co-Authored-By: Khaled Hosny + [iter] Accept rvalues to hb_enumerate() - src/hb-ot-color.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-iter.hh | 2 +- + src/test-iter.cc | 2 ++ + 2 files changed, 3 insertions(+), 1 deletion(-) -commit 6d9870b4799f20a6c58a2c071713e56aa93b0221 -Author: n8willis -Date: Sat May 11 14:09:26 2019 +0100 +commit e8bd5fc3fa2cc5c5f8f254629553902aed3496ba +Author: Behdad Esfahbod +Date: Tue May 7 22:29:40 2019 -0700 - Update src/hb-ot-color.cc - - Co-Authored-By: Khaled Hosny + [meta] Move hb_invoke from algs to meta - src/hb-ot-color.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-algs.hh | 31 ------------------------------- + src/hb-meta.hh | 32 ++++++++++++++++++++++++++++++++ + 2 files changed, 32 insertions(+), 31 deletions(-) -commit 12ea4a24c40c7ac28d058e9721479347951e3482 -Author: n8willis -Date: Sat May 11 14:08:40 2019 +0100 +commit af571dbffc12e6bb7a3146762d12bb4ac3f19bdc +Author: Behdad Esfahbod +Date: Tue May 7 21:39:20 2019 -0700 - Update src/hb-ot-color.cc + [meta] Replace most hb_enable_if with hb_requires - Co-Authored-By: Khaled Hosny + They do absolutely same thing. hb_requires is to encode constraints, + whereas hb_enable_if is for more conditional enabling. - src/hb-ot-color.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-iter.hh | 63 +++++++++++++++++++++------------------------- + src/hb-open-type.hh | 6 ++--- + src/hb-ot-layout-common.hh | 6 ++--- + src/test-iter.cc | 6 ++--- + 4 files changed, 37 insertions(+), 44 deletions(-) -commit 3535f2d31efe1ebe44ba63f980882ba23cdcde3b -Author: n8willis -Date: Sat May 11 14:07:38 2019 +0100 +commit 6fa1f38070e710b2f80a836bd633b6ab33e1bc80 +Author: Behdad Esfahbod +Date: Tue May 7 21:33:26 2019 -0700 - Update src/hb-ot-color.cc - - Co-Authored-By: Khaled Hosny + [algs] Accept varargs in hb_min/max - src/hb-ot-color.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-algs.hh | 24 +++++++++++++++++++++--- + src/test-algs.cc | 8 ++++++++ + 2 files changed, 29 insertions(+), 3 deletions(-) -commit 12d2c472fe8ec3268a4b39a57603dcc734ab7b88 -Author: n8willis -Date: Sat May 11 14:06:56 2019 +0100 +commit 1ad07080c3ea7f6a1b3cb247529ec0c78575a6d3 +Author: Behdad Esfahbod +Date: Tue May 7 21:00:23 2019 -0700 - Update src/hb-ot-color.cc - - Co-Authored-By: Khaled Hosny + Rename - src/hb-ot-color.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-algs.hh | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) -commit 7f45ce42dbf11366e904f48db45cf5405e4e94df +commit 83e3eabd84e2b53c696768d1357a6a259bcd3576 Author: Behdad Esfahbod -Date: Sat May 11 01:28:31 2019 -0700 +Date: Tue May 7 20:58:43 2019 -0700 - [config] Rename + Whitespace - src/hb-config.hh | 2 +- - src/hb-ot-layout.cc | 4 ++-- - 2 files changed, 3 insertions(+), 3 deletions(-) + src/hb-aat-layout-common.hh | 2 +- + src/hb-aat-layout-kerx-table.hh | 2 +- + src/hb-aat-layout-morx-table.hh | 2 +- + src/hb-algs.hh | 6 +++--- + src/hb-dispatch.hh | 2 +- + src/hb-open-type.hh | 18 +++++++++--------- + src/hb-ot-kern-table.hh | 4 ++-- + src/hb-ot-layout-common.hh | 2 +- + src/hb-ot-layout-gpos-table.hh | 16 ++++++++-------- + src/hb-ot-layout-gsub-table.hh | 14 +++++++------- + src/hb-ot-layout-gsubgpos.hh | 8 ++++---- + src/hb-sanitize.hh | 6 +++--- + src/hb-serialize.hh | 12 ++++++------ + src/hb-subset.hh | 6 +++--- + 14 files changed, 50 insertions(+), 50 deletions(-) -commit 0e78d4ddaec5f29d6652cc4185cbcca98c3a2927 +commit 2b9402a86a4e37e6386f8028bdf3789ae262a4c4 Author: Behdad Esfahbod -Date: Sat May 11 01:27:50 2019 -0700 +Date: Tue May 7 20:55:33 2019 -0700 - [config] Add HB_NO_NAME - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + Use universal references in hb_min/max - src/hb-config.hh | 6 +++++- - src/hb-ot-name.cc | 20 ++++++++++++++++++++ - 2 files changed, 25 insertions(+), 1 deletion(-) + src/hb-algs.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit 1fc077211771c752768f63f178116d2b8f2f7d03 +commit 41248cce0e32653227a83eb4e42ccf793f040fc2 Author: Behdad Esfahbod -Date: Sat May 11 01:24:23 2019 -0700 +Date: Tue May 7 20:54:31 2019 -0700 - [config] HB_NO_OT_NAME_LANGUAGE AAT + Remove MIN/MAX in favor of hb_min/hb_max - src/hb-config.hh | 4 ++-- - src/hb-ot-name-language-static.hh | 3 +++ - src/hb-ot-name-table.hh | 4 +++- - 3 files changed, 8 insertions(+), 3 deletions(-) + src/hb-aat-layout-common.hh | 8 ++++---- + src/hb-aat-layout-feat-table.hh | 2 +- + src/hb-aat-layout-kerx-table.hh | 2 +- + src/hb-aat-layout-morx-table.hh | 18 +++++++++--------- + src/hb-algs.hh | 14 +++++--------- + src/hb-array.hh | 4 ++-- + src/hb-blob.cc | 2 +- + src/hb-buffer-serialize.cc | 32 ++++++++++++++++---------------- + src/hb-buffer.cc | 4 ++-- + src/hb-buffer.hh | 2 +- + src/hb-common.cc | 20 ++++++++++---------- + src/hb-coretext.cc | 6 +++--- + src/hb-debug.hh | 2 +- + src/hb-directwrite.cc | 2 +- + src/hb-ft.cc | 2 +- + src/hb-iter.hh | 2 +- + src/hb-open-file.hh | 2 +- + src/hb-open-type.hh | 2 +- + src/hb-ot-cmap-table.hh | 8 ++++---- + src/hb-ot-color-cbdt-table.hh | 6 +++--- + src/hb-ot-color-cpal-table.hh | 2 +- + src/hb-ot-color-sbix-table.hh | 2 +- + src/hb-ot-glyf-table.hh | 14 +++++++------- + src/hb-ot-hmtx-table.hh | 2 +- + src/hb-ot-layout-gpos-table.hh | 2 +- + src/hb-ot-layout-gsub-table.hh | 4 ++-- + src/hb-ot-layout-gsubgpos.hh | 6 +++--- + src/hb-ot-layout.cc | 2 +- + src/hb-ot-map.cc | 8 ++++---- + src/hb-ot-post-table.hh | 2 +- + src/hb-ot-shape-complex-indic.cc | 8 ++++---- + src/hb-ot-shape-complex-use.cc | 2 +- + src/hb-ot-shape.cc | 4 ++-- + src/hb-ot-tag.cc | 2 +- + src/hb-ot-var-avar-table.hh | 2 +- + src/hb-ot-var-fvar-table.hh | 18 +++++++++--------- + src/hb-sanitize.hh | 4 ++-- + src/hb-uniscribe.cc | 2 +- + 38 files changed, 111 insertions(+), 115 deletions(-) -commit 4381bb2de7a554a148302836b86a5d73264abeae +commit 5c0f62adc969696b46c1ceb57cd3c2fa408eb94f Author: Behdad Esfahbod -Date: Sat May 11 01:14:04 2019 -0700 +Date: Tue May 7 17:23:46 2019 -0700 - [config] Comment + [serializer] Accept pointer & reference in more methods - src/hb-config.hh | 1 + - 1 file changed, 1 insertion(+) + src/hb-serialize.hh | 39 ++++++++++++++++++++++++--------------- + 1 file changed, 24 insertions(+), 15 deletions(-) -commit 9c921e6c32ab5ac4c524f554b7a7841eeeb0908f +commit 839618de3b3da285e8753b6ca6d767e9a483bfde Author: Behdad Esfahbod -Date: Sat May 11 01:08:51 2019 -0700 +Date: Tue May 7 17:21:27 2019 -0700 - [config] Enable HB_NO_NAME_TABLE_AAT - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + [serializer] Minor - src/hb-config.hh | 2 ++ - 1 file changed, 2 insertions(+) + src/hb-serialize.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 81b79dfc397599182f43d63bf9346eee28e2d220 +commit 035b818e34bbd2d5c1f65328c9847c845d74d919 Author: Behdad Esfahbod -Date: Sat May 11 00:53:52 2019 -0700 +Date: Tue May 7 17:21:18 2019 -0700 - [config] Add HB_NO_COLOR to HB_LEAN - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + [meta] Fix addressof() - src/hb-config.hh | 1 + - src/hb-ot-color.cc | 49 +++++++++++++++++++++++++++++++++++++++++++++---- - src/hb-ot-color.h | 2 +- - src/hb-ot-layout.h | 2 +- - 4 files changed, 48 insertions(+), 6 deletions(-) + src/hb-meta.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit b63a8e173cbc5a81f2ca4a0a82f20b9dafaedb30 +commit 7654ebe3a51c98b4d3bf6fb11779024f1c770962 Author: Behdad Esfahbod -Date: Sat May 11 00:47:20 2019 -0700 +Date: Tue May 7 16:53:03 2019 -0700 - [config Add HB_NO_OT_SHAPE_COMPLEX_VOWEL_CONSTRAINTS to LEAN - - Already I don't like the inflexibility of this approach :(. - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + Whitespace - src/hb-config.hh | 1 + - 1 file changed, 1 insertion(+) + src/hb-algs.hh | 30 ++++++++++++++++++++---------- + src/hb-iter.hh | 39 ++++++++++++++++++++++++++------------- + src/hb-meta.hh | 11 ++++++----- + 3 files changed, 52 insertions(+), 28 deletions(-) -commit 42a21284778f3203d96133f74b0f846cd1567958 +commit 95426ea983bde01fadf4681926cb77e3b3c0d40a Author: Behdad Esfahbod -Date: Sat May 11 00:44:22 2019 -0700 +Date: Tue May 7 15:56:51 2019 -0700 - [config] Disbale getenv() and atexit() if HB_LEAN - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + Add comment - src/hb-config.hh | 2 ++ - 1 file changed, 2 insertions(+) + src/hb-open-type.hh | 1 + + 1 file changed, 1 insertion(+) -commit fca27860417812d51e40f040de97c10177b1250e +commit e33ad252222481a6078a8bb423505e713b081313 Author: Behdad Esfahbod -Date: Sat May 11 00:37:01 2019 -0700 +Date: Tue May 7 15:46:24 2019 -0700 - [config] Make HB_DISABLE_DEPRECATED actually compile - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + [serialize] FeatureVariations subset->copy - src/hb-config.hh | 7 +++++++ - src/hb-font.cc | 8 ++++++++ - src/hb-font.hh | 12 ++++++++++-- - src/hb-graphite2.cc | 2 ++ - src/hb-icu.cc | 2 +- - src/hb-ot-layout.cc | 7 ++++++- - src/hb-ot-shape-fallback.cc | 4 ++++ - src/hb-ot-tag.cc | 4 ++++ - src/hb-ot-var-fvar-table.hh | 6 ++++++ - src/hb-ot-var.cc | 2 ++ - src/hb-set.cc | 2 ++ - src/hb-unicode.cc | 6 ++++++ - src/hb-unicode.hh | 10 +++++++--- - 13 files changed, 65 insertions(+), 7 deletions(-) + src/hb-ot-layout-common.hh | 6 +++--- + src/hb-ot-layout-gsubgpos.hh | 2 +- + 2 files changed, 4 insertions(+), 4 deletions(-) -commit 5a48611ccd045de5782ad2fd5f6718357fe232a2 +commit fa8c4ba81175f671c3f39f1586d0a1d9067d9f89 Author: Behdad Esfahbod -Date: Sat May 11 00:19:03 2019 -0700 +Date: Tue May 7 14:26:03 2019 -0700 - [config] Add HB_NO_OT_LAYOUT_UNUSED - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + Minor - src/hb-config.hh | 1 + - src/hb-ot-layout.cc | 12 ++++++++++++ - 2 files changed, 13 insertions(+) + src/hb-serialize.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 771f1b21d1d7128440d6b4488705456d43dbc0e7 +commit c09d6c58e99dba50f29a569e4c53916b5b507ef1 Author: Behdad Esfahbod -Date: Sat May 11 00:16:18 2019 -0700 +Date: Tue May 7 14:09:00 2019 -0700 - [config] Adjust + [iter] Require lvalue in operators that return reference - src/hb-config.hh | 12 +++++++----- - 1 file changed, 7 insertions(+), 5 deletions(-) + src/hb-iter.hh | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) -commit 484f6e8215038006a945da67d245f14db3eeeb2e +commit 52f6c04c1e0eab2aaa0c7d817b212c01ba993fe9 Author: Behdad Esfahbod -Date: Sat May 11 00:13:35 2019 -0700 +Date: Tue May 7 13:45:48 2019 -0700 - [config] Add HB_LEAN - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + Minor - src/hb-config.hh | 5 +++++ - src/hb-ot-math.cc | 40 ++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 45 insertions(+) + src/hb-serialize.hh | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) -commit 0bfd14c0ed2f95f00d0b94d396c777399afa4d68 +commit 7c037bd2be2e794dfd882b806f684ad74c56dbb8 Author: Behdad Esfahbod -Date: Sat May 11 00:06:57 2019 -0700 +Date: Tue May 7 13:37:43 2019 -0700 - [config] Fix tests + [name] Clean up some more - src/hb-config.hh | 3 +++ - 1 file changed, 3 insertions(+) + src/hb-meta.hh | 2 ++ + src/hb-ot-name-table.hh | 30 ++++++++++++++---------------- + 2 files changed, 16 insertions(+), 16 deletions(-) -commit 784df8eba1aaf20d2db464f8b3ea0984f7ea1308 +commit f982b9d9f8d6b61efd2a3e89cc3d34923c1914b0 Author: Behdad Esfahbod -Date: Sat May 11 00:04:59 2019 -0700 +Date: Tue May 7 13:29:01 2019 -0700 - [config] Flesh out more - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + [name] Clean up serialize() API - src/hb-config.hh | 17 +++++++++++++++++ - 1 file changed, 17 insertions(+) + src/hb-ot-name-table.hh | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) -commit 799c6a5081e5058260199eeeb2091ee2c1dfefff +commit 59ee61fddc76cd18f19f351bca7dd293eb610333 Author: Behdad Esfahbod -Date: Fri May 10 23:55:22 2019 -0700 +Date: Tue May 7 13:26:15 2019 -0700 - [config] Add some + [name] Use iterators more - src/hb-aat-layout.cc | 26 +++++++++++++------------- - src/hb-aat-map.cc | 4 ++-- - src/hb-config.hh | 18 ++++++++++++++++++ - src/hb-ot-kern-table.hh | 14 +++++++------- - src/hb-ot-shape.cc | 22 +++++++++++----------- - 5 files changed, 51 insertions(+), 33 deletions(-) + src/hb-ot-name-table.hh | 46 +++++++++++++++------------------------------- + src/hb-subset-plan.cc | 3 +++ + 2 files changed, 18 insertions(+), 31 deletions(-) -commit e6582de12f1af9ab5e3122d762a3e12438a66b6b +commit 2eb7e0e0e923d096d2598133cacd6e5ee04a6a04 Author: Behdad Esfahbod -Date: Fri May 10 23:53:38 2019 -0700 +Date: Tue May 7 12:45:38 2019 -0700 - Add hb-config.hh + [serialize] Minor - src/Makefile.sources | 1 + - src/hb-config.hh | 36 ++++++++++++++++++++++++++++++++++++ - src/hb.hh | 7 ++++--- - 3 files changed, 41 insertions(+), 3 deletions(-) + src/hb-serialize.hh | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) -commit d43af339e7a7f5dab1690703a78d2690baefbd59 +commit 1c81cff2d3f9df2c18ffbdfff02ed418560480c1 Author: Behdad Esfahbod -Date: Fri May 10 23:46:22 2019 -0700 +Date: Tue May 7 11:51:10 2019 -0700 - [subset] More HB_NO_SUBSET_LAYOUT - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + Fix signed-comparison error on 32bit - src/hb-subset-plan.cc | 13 ++++++++----- - 1 file changed, 8 insertions(+), 5 deletions(-) + src/hb-serialize.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 31c591d69f6a7605088883db59149e83c80d019c +commit 938de315756e08bd2b5fa816c7951640e5835b2e Author: Behdad Esfahbod -Date: Fri May 10 23:39:53 2019 -0700 +Date: Tue May 7 11:47:02 2019 -0700 - [cff] Prune more code if HB_NO_OT_FONT_CFF - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + Comment - src/hb-ot-cff1-table.cc | 5 +++++ - src/hb-ot-cff2-table.cc | 5 +++++ - 2 files changed, 10 insertions(+) + src/hb-subset-glyf.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 5ea8ad5c48f9baabc4ccf81dce4aee1067c401f6 +commit 159fe962e90dd3b758ad10046b9d75cf87c1d4f3 Author: Behdad Esfahbod -Date: Fri May 10 23:36:42 2019 -0700 +Date: Tue May 7 11:46:11 2019 -0700 - [subset] Add HB_NO_SUBSET_CFF - - Doesn't fully prune all the relevant code. To be fixed later. + [doc] Make header search more resilient - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + How stupid to scan all files... Sigh. - src/hb-subset.cc | 3 +++ - 1 file changed, 3 insertions(+) + docs/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 2c93f0dee31b2277567ccbee041539732b9bd26d +commit 9b05db33b54e6e5f0b4658f4c06e7fe563f8923b Author: Behdad Esfahbod -Date: Fri May 10 23:31:05 2019 -0700 +Date: Tue May 7 11:39:44 2019 -0700 - Add HB_NO_AAT - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + [ragel] Regenerate ragel-generated files using ragel 7.0.0.11 May 2018 - src/hb-aat-layout.cc | 58 +++++++++++++++++++++++++++++++++++++++++++++++++ - src/hb-aat-map.cc | 8 +++++++ - src/hb-ot-kern-table.hh | 14 ++++++++++++ - src/hb-ot-shape.cc | 28 +++++++++++++++++++++++- - 4 files changed, 107 insertions(+), 1 deletion(-) + src/hb-buffer-deserialize-json.hh | 1051 +++++------ + src/hb-buffer-deserialize-text.hh | 1009 +++++------ + src/hb-ot-shape-complex-indic-machine.hh | 2678 ++++++++++++++++------------ + src/hb-ot-shape-complex-khmer-machine.hh | 709 ++++---- + src/hb-ot-shape-complex-myanmar-machine.hh | 820 +++++---- + src/hb-ot-shape-complex-use-machine.hh | 1144 ++++++------ + 6 files changed, 3959 insertions(+), 3452 deletions(-) -commit 62dfe7aea23c95f4550543085071990e20ee4d54 +commit 521262b236dacf7b2b64e0a1d3c79d6a10b07063 Author: Behdad Esfahbod -Date: Fri May 10 23:17:15 2019 -0700 +Date: Tue May 7 11:08:08 2019 -0700 - [cff] Minor + [subset] Add TODO - src/hb-subset-cff1.cc | 2 +- - src/hb-subset-cff2.cc | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) + src/hb-subset.cc | 2 ++ + 1 file changed, 2 insertions(+) -commit 227d85e138d4c785c2d658e225ed35f5acd1235f +commit e6a622b5b202533d64f83e71d7ff8a8104d46e26 Author: Behdad Esfahbod -Date: Fri May 10 23:15:58 2019 -0700 +Date: Tue May 7 11:06:43 2019 -0700 - Minor + [serialize] Enable bias assertion - src/hb-atomic.hh | 2 +- - src/hb-debug.hh | 2 +- - src/hb-font.cc | 2 +- - src/hb-ot-font.cc | 4 ++-- - src/hb-ot-layout.cc | 6 +++--- - src/hb-ot-name-table.hh | 2 +- - src/hb-ot-shape-complex-arabic.cc | 2 +- - src/hb-ot-shape-complex-hebrew.cc | 2 +- - src/hb-ot-shape-complex-thai.cc | 2 +- - src/hb-ot-shape-complex-vowel-constraints.cc | 2 +- - src/hb-ot-shape-fallback.cc | 6 +++--- - src/hb-subset.cc | 4 ++-- - src/hb-warning.cc | 4 ++-- - src/hb.hh | 10 +++++----- - 14 files changed, 25 insertions(+), 25 deletions(-) + src/hb-serialize.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 9bfe22af6113ee8cd24cb9ee091f0841c27bbf98 +commit 530ddbbc320bd24b4902ee6d49bf80242a591794 Author: Behdad Esfahbod -Date: Fri May 10 22:44:19 2019 -0700 +Date: Tue May 7 11:05:51 2019 -0700 - [sanitize] Fix previous commit + [serialize] Use range-based loop - src/hb-open-type.hh | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) + src/hb-serialize.hh | 15 ++++++--------- + 1 file changed, 6 insertions(+), 9 deletions(-) -commit 4dcf65328f04a11594fc190fd7e976afa54455e9 +commit 0987c4204fae66f80224c6f01d9c5dc3abe809e0 Author: Behdad Esfahbod -Date: Fri May 10 22:23:24 2019 -0700 +Date: Tue May 7 11:01:02 2019 -0700 - [sanitize] Simplify + [name] Remove dead code - src/hb-open-type.hh | 45 ++++++++++----------------------------------- - 1 file changed, 10 insertions(+), 35 deletions(-) + src/hb-ot-name-table.hh | 88 +------------------------------------------------ + 1 file changed, 1 insertion(+), 87 deletions(-) -commit 23168c3981f7c80883663fa69c608caee98d3d99 +commit 5ac4ab686809be9352e91bc3213e1edf3ba66a93 Author: Behdad Esfahbod -Date: Fri May 10 22:11:51 2019 -0700 +Date: Thu May 2 16:29:07 2019 -0700 - [sanitize] Use hb_is_trivially_copyable() + [subset] fix for name table serializing with new serializer machinery - src/hb-open-type.hh | 64 +++++++---------------------------------------------- - 1 file changed, 8 insertions(+), 56 deletions(-) + src/hb-ot-name-table.hh | 8 ++++++-- + test/api/fonts/nameID.expected.ttf | Bin 170696 -> 2388 bytes + 2 files changed, 6 insertions(+), 2 deletions(-) -commit 0ff7954f9f09f80654ac91c16712154744a0dd2d +commit c548fcedc404c03442c042059a71194d97d23bb6 Author: Behdad Esfahbod -Date: Fri May 10 22:04:40 2019 -0700 +Date: Thu May 2 16:29:07 2019 -0700 - [meta] Add hb_is_trivial + [WIP] [name] Port to fancy serializer machinery - src/hb-meta.hh | 7 +++++++ - src/test-meta.cc | 4 ++++ - 2 files changed, 11 insertions(+) + src/hb-ot-name-table.hh | 18 +++++++++++------- + 1 file changed, 11 insertions(+), 7 deletions(-) -commit 7162a97bca6e0dde3d277701a3bf15688deef61d +commit fa2d97161f8b7de3d7a70e06d41b6f7e154012ad Author: Behdad Esfahbod -Date: Fri May 10 22:03:03 2019 -0700 +Date: Tue May 7 00:34:50 2019 -0700 - [meta] Add hb_is_trivially_copyable() + Remove use of deprecated implicit copy/move assignment operators + + By removing custom copy constructor. - src/hb-meta.hh | 11 +++++++++++ - src/test-meta.cc | 4 ++++ - 2 files changed, 15 insertions(+) + src/hb-meta.hh | 2 -- + 1 file changed, 2 deletions(-) -commit f2398f34c019a55d4f0e1a7031961714afadf2b3 +commit 45f5e56236912359d0ac72310dcdba9259cfee66 Author: Behdad Esfahbod -Date: Fri May 10 21:59:57 2019 -0700 +Date: Tue May 7 00:33:32 2019 -0700 - [meta] Add is_trivially_destructible + Warn on -Wdeprecated - src/hb-meta.hh | 6 +++--- - src/test-meta.cc | 7 +++++-- - 2 files changed, 8 insertions(+), 5 deletions(-) + src/hb.hh | 1 + + 1 file changed, 1 insertion(+) -commit 72cb5b8e52b7103c18adcb82cbcd4b91a2c85474 -Author: Behdad Esfahbod -Date: Fri May 10 21:50:15 2019 -0700 +commit c3e0eafc80481f8c16516fdae1841c563e7253d4 +Author: Ebrahim Byagowi +Date: Tue May 7 12:04:00 2019 +0430 - Remove accidentally included include + [ci] Upgrade Ubuntu 17.10 bots to 19.04 - src/test-meta.cc | 3 --- - 1 file changed, 3 deletions(-) + .circleci/config.yml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit 086772e409759e8f1edd0e34f6f25374e51e9e10 +commit 8903040fcd09e7d7ad5112ac2a583718bb85795d Author: Behdad Esfahbod -Date: Fri May 10 21:49:25 2019 -0700 +Date: Tue May 7 00:13:11 2019 -0700 - [meta] Add is_destructible + Actually make it work - src/hb-meta.hh | 14 ++++++++++++++ - 1 file changed, 14 insertions(+) + src/hb-iter.hh | 2 ++ + src/hb-meta.hh | 6 ++++-- + 2 files changed, 6 insertions(+), 2 deletions(-) -commit b14745278ad16fe7f4e838b685029e3fdda516ca +commit 025eaa3c81214cdb20f2f588bab665512d21507c Author: Behdad Esfahbod -Date: Fri May 10 21:42:59 2019 -0700 +Date: Tue May 7 00:05:37 2019 -0700 - [met]a Add is_constructible, ... + [iter] Make filter/map copyable - src/hb-meta.hh | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/test-meta.cc | 23 ++++++++++++++++++ - 2 files changed, 96 insertions(+) + src/hb-iter.hh | 18 +++++++++--------- + src/test-iter.cc | 4 ++-- + 2 files changed, 11 insertions(+), 11 deletions(-) -commit 19e08a146712dacd11359370c91a7bad55bc6f62 +commit 03a68165d8296ed5cc0eb2434500381419409e79 Author: Behdad Esfahbod -Date: Fri May 10 21:25:07 2019 -0700 +Date: Tue May 7 00:03:35 2019 -0700 - [iter] Adjust source_of/sink_of + [meta] Add hb_reference_wrapper<> + + Functionality kinda superset of std:: counterpart. - src/hb-iter.hh | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/hb-meta.hh | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) -commit c0485e32a320e17dd0634b2cc8b4dd8c4fdc65e0 +commit 0bf86d9c5dcb0de206b38c3cf1824d2254376f37 Author: Behdad Esfahbod -Date: Fri May 10 21:03:14 2019 -0700 +Date: Mon May 6 23:39:26 2019 -0700 - Use hb_void_t<> the way it's supposed to be used + Whitespace - src/hb-null.hh | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) + src/hb-meta.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit 40fb36a39de5dd3ee9a4c84f1f76205b6bb68660 +commit 72eb91deb9eb7a08e38e100a3234518651fe4cb8 Author: Behdad Esfahbod -Date: Fri May 10 21:01:19 2019 -0700 +Date: Mon May 6 23:39:13 2019 -0700 - [meta] Minor + Add hb_ref() + + Unused. - src/hb-meta.hh | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) + src/hb-meta.hh | 10 ++++++++++ + 1 file changed, 10 insertions(+) -commit f9a96a0a97f59a0b31ee0f901d1c21dde6b3cfaf +commit 240f57e58d3b0161feb90621d5db9e2fc4d99b27 Author: Behdad Esfahbod -Date: Fri May 10 20:56:16 2019 -0700 +Date: Mon May 6 23:17:39 2019 -0700 - [meta] More rewrites + Rename hb_deref_pointer() to hb_deref() - src/hb-meta.hh | 18 +++++++++--------- - 1 file changed, 9 insertions(+), 9 deletions(-) + src/hb-algs.hh | 12 ++++++------ + src/hb-map.hh | 2 +- + src/hb-meta.hh | 2 +- + src/hb-serialize.hh | 2 +- + 4 files changed, 9 insertions(+), 9 deletions(-) -commit 5252677e53ff4473701172bbbd4e953ac6b08e6f +commit 0b1ca5a13b6921cb4d00f8651bb99fc7c7037ec2 Author: Behdad Esfahbod -Date: Fri May 10 20:49:52 2019 -0700 - - [meta] Rewrite hb_int_min/max +Date: Mon May 6 23:04:32 2019 -0700 - src/hb-meta.hh | 44 ++++++++++++++++++++++---------------------- - 1 file changed, 22 insertions(+), 22 deletions(-) + [iter] Adjust hb_filter -commit caa3f92e91062ff78b657aec23569b099de48640 + src/hb-iter.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4c2fd05ca5fa34303b986c34948b512d770ab8fe Author: Behdad Esfahbod -Date: Fri May 10 20:43:51 2019 -0700 +Date: Mon May 6 19:57:15 2019 -0700 - [meta] void_tt -> void_t + [iter] Implement range-based for loops + + Part of https://github.com/harfbuzz/harfbuzz/issues/1648 - src/hb-meta.hh | 9 ++++----- - 1 file changed, 4 insertions(+), 5 deletions(-) + src/hb-array.hh | 6 ++++ + src/hb-iter.hh | 74 ++++++++++++++++++++++++++++++++++++++++++++-- + src/hb-ot-layout-common.hh | 14 +++++++++ + src/hb-set.hh | 3 ++ + src/test-iter.cc | 28 ++++++++++++++---- + 5 files changed, 118 insertions(+), 7 deletions(-) -commit 7df3ecfb4069d275cd277c71165962bb5769364a -Author: Behdad Esfahbod -Date: Fri May 10 20:43:26 2019 -0700 +commit e261dc3a4043230ae1b4f56e2cc7d3133b7da4ca +Author: Ebrahim Byagowi +Date: Tue May 7 01:24:55 2019 +0430 - [meta] hb_void_t -> hb_empty_t + Ignore -Wc++11-compat as we require C++11 actually + + pollutes gcc bots logs https://circleci.com/gh/harfbuzz/harfbuzz/85395 - src/hb-debug.hh | 6 +++--- - src/hb-meta.hh | 2 +- - src/hb-ot-layout-gsub-table.hh | 2 +- - src/hb-ot-layout-gsubgpos.hh | 18 +++++++++--------- - 4 files changed, 14 insertions(+), 14 deletions(-) + src/hb.hh | 1 + + 1 file changed, 1 insertion(+) -commit 149c3db8a2d41894b5d65f4c4b7c20757f6de6dd +commit 9f9890e9e82c620e733d123f421f7c63d91ce8e1 Author: Behdad Esfahbod -Date: Fri May 10 20:34:52 2019 -0700 +Date: Mon May 6 12:16:51 2019 -0700 - [meta] Minor + Remove HB_NO_OPTIONS in favor of HB_NO_GETENV + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 - src/hb-meta.hh | 2 +- + src/hb-debug.hh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 707ff5b59d3903b60312a028f2ba5d74c18db101 +commit 36bb24f7b4dbbe171b945639bac749c46785e17c Author: Behdad Esfahbod -Date: Fri May 10 20:31:20 2019 -0700 +Date: Sun May 5 10:14:17 2019 -0700 - Minor + [dispatch] Forward arguments in all dispatch multiplexers - src/hb-meta.hh | 5 ----- - src/hb-open-type.hh | 2 +- - 2 files changed, 1 insertion(+), 6 deletions(-) + src/hb-aat-layout-kerx-table.hh | 14 ++++----- + src/hb-aat-layout-morx-table.hh | 14 ++++----- + src/hb-ot-kern-table.hh | 16 +++++----- + src/hb-ot-layout-common.hh | 6 ++-- + src/hb-ot-layout-gpos-table.hh | 68 ++++++++++++++++++++--------------------- + src/hb-ot-layout-gsub-table.hh | 58 +++++++++++++++++------------------ + src/hb-ot-layout-gsubgpos.hh | 32 +++++++++---------- + 7 files changed, 104 insertions(+), 104 deletions(-) -commit ce300f4fb68a25d46d165e8b0a4825482c83a966 +commit c14efb8e68e31fb7537bcfe5eea779c0830a0b0c Author: Behdad Esfahbod -Date: Fri May 10 20:26:29 2019 -0700 +Date: Sun May 5 09:54:58 2019 -0700 - [meta] Rewrite is_signed, add is_unsigned + Fix previous commit + + Priority should be given to specific over dispatch. Broke sanitize before. + This fixes it, by moving prioritization to the context implementation, since + the correct priority cannot be done in the dispatch implementation. Done + for subset and sanitize only, which need it. - src/hb-meta.hh | 29 ++++++++++++----------------- - 1 file changed, 12 insertions(+), 17 deletions(-) + src/hb-aat-layout-common.hh | 2 +- + src/hb-dispatch.hh | 10 +--------- + src/hb-ot-layout-gsubgpos.hh | 14 +++++++------- + src/hb-sanitize.hh | 16 +++++++++++++--- + src/hb-subset.hh | 15 ++++++++++++--- + 5 files changed, 34 insertions(+), 23 deletions(-) -commit e939d88bd72e0db0ebe357649b7a0fa3447c0bf4 +commit b10f65933a77434bf8d68058793037f38a8ed5a6 Author: Behdad Esfahbod -Date: Fri May 10 20:20:51 2019 -0700 +Date: Sun May 5 09:23:35 2019 -0700 - [meta] Rewrite is_integral / is_floating_point, add is_arithmetic + [dispatch] Use functionality from previous commit + + To remove a couple of unwanted wrapper methods - src/hb-meta.hh | 49 +++++++++++++++++++++++++++++++------------------ - 1 file changed, 31 insertions(+), 18 deletions(-) + src/hb-dispatch.hh | 15 +++++++++------ + src/hb-open-type.hh | 10 +++++----- + src/hb-ot-layout-gpos-table.hh | 6 ------ + src/hb-ot-layout-gsub-table.hh | 6 ------ + src/hb-sanitize.hh | 5 +++-- + src/hb-subset.hh | 5 +++-- + 6 files changed, 20 insertions(+), 27 deletions(-) -commit c3a456a26e8e5f8bc483b326f1928e9c603a7216 +commit ac350c92fd6b04845c6240a5f3b77ceaf29e51d0 Author: Behdad Esfahbod -Date: Fri May 10 20:17:30 2019 -0700 +Date: Sun May 5 09:10:46 2019 -0700 - [meta] Rewrite is_cr_convertible + [dispatch] Try obj.dispatch(c) before trying c->dispatch(obj) - src/hb-meta.hh | 13 +++++-------- - 1 file changed, 5 insertions(+), 8 deletions(-) + src/hb-aat-layout-common.hh | 2 +- + src/hb-dispatch.hh | 13 +++++++++++++ + src/hb-ot-layout-gsubgpos.hh | 14 +++++++------- + src/hb-sanitize.hh | 2 +- + src/hb-subset.hh | 4 ++-- + 5 files changed, 24 insertions(+), 11 deletions(-) -commit b4ad6af9c4ec30c462078bd93ae12653619c5fea -Author: Behdad Esfahbod -Date: Fri May 10 20:15:03 2019 -0700 +commit 49252c42bb00380663ba9612e075c07f1be606b3 +Author: Michiharu Ariza +Date: Fri May 3 10:42:11 2019 -0700 - [meta] Rewrite is_base_of + get rid of O(n^2) loop from apply_deltas_to_points - src/hb-meta.hh | 5 +---- - 1 file changed, 1 insertion(+), 4 deletions(-) + src/hb-ot-var-gvar-table.hh | 55 +++++++++++++++++++++++++++++++-------------- + 1 file changed, 38 insertions(+), 17 deletions(-) -commit 5a171ed3a69313e10df6e42a03affb5e8bfe8e95 +commit 0d5fd168f8e3c1202358a82161a28e407149b1b4 Author: Behdad Esfahbod -Date: Fri May 10 20:11:29 2019 -0700 +Date: Fri May 3 10:37:32 2019 -0700 - [null] Modernize template work + Revert "[WIP] [name] Port to fancy serializer machinery" + + This reverts commit c7f366fbbb208d0a9103ac4ee4ac00ff726c31e4. + + Don't know how it got to master! - src/hb-null.hh | 19 ++++++------------- - 1 file changed, 6 insertions(+), 13 deletions(-) + src/hb-ot-name-table.hh | 18 +++++++----------- + 1 file changed, 7 insertions(+), 11 deletions(-) -commit 61d150c916d181cc3f333d0378108e08210370ad -Author: Behdad Esfahbod -Date: Fri May 10 20:06:31 2019 -0700 +commit 72e3eba8f87e2a8b145a4f98e24499f0aafe099b +Author: Cody Planteen +Date: Thu May 2 13:03:15 2019 -0600 - [meta] Add integral_constant, true_t -> true_type, false_t -> false_type + Add configuration option HB_NO_GETENV to disable use of getenv() - src/hb-iter.hh | 20 ++++++++++---------- - src/hb-meta.hh | 17 ++++++++--------- - src/hb-null.hh | 4 ++-- - 3 files changed, 20 insertions(+), 21 deletions(-) + src/hb.hh | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) -commit 38e3a8bd531ef3d35ca0fbcfad09db3f83345038 +commit c7f366fbbb208d0a9103ac4ee4ac00ff726c31e4 Author: Behdad Esfahbod -Date: Fri May 10 20:03:14 2019 -0700 +Date: Thu May 2 16:29:07 2019 -0700 - [meta] bool_tt -> bool_constant + [WIP] [name] Port to fancy serializer machinery - src/hb-meta.hh | 6 +++--- - src/hb-null.hh | 4 ++-- - 2 files changed, 5 insertions(+), 5 deletions(-) + src/hb-ot-name-table.hh | 18 +++++++++++------- + 1 file changed, 11 insertions(+), 7 deletions(-) -commit 3919ca41b5e657764c7f75dfdc21cf8ca20bd66f +commit 8855af38a8497d7788924d368baa9eeae4916940 Author: Behdad Esfahbod -Date: Fri May 10 19:56:36 2019 -0700 +Date: Thu May 2 16:26:06 2019 -0700 - [meta] Add is_floating_point + [name] Add NameRecord::copy() - src/hb-meta.hh | 33 +++++++++++++++++++-------------- - 1 file changed, 19 insertions(+), 14 deletions(-) + src/hb-ot-name-table.hh | 10 ++++++++++ + 1 file changed, 10 insertions(+) -commit 25bb7e005d96c367731fd8d129d764d101b1200f +commit 097bb3f0af391dbb5d498df548b769f165f35c8a Author: Behdad Esfahbod -Date: Fri May 10 19:49:26 2019 -0700 +Date: Thu May 2 16:25:00 2019 -0700 - [meta] Add is_signed for floating point types + [name] Minor changes - src/hb-meta.hh | 3 +++ - 1 file changed, 3 insertions(+) + src/hb-ot-name-table.hh | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) -commit e0315b4aadb3fbc6b618de56d643471e8d1f7859 +commit 431b6e1c449582619169722e16b472e872b02d58 Author: Behdad Esfahbod -Date: Fri May 10 19:48:02 2019 -0700 +Date: Thu May 2 16:22:32 2019 -0700 - [meta] is_integer -> is_integral + [serialize] Disable assertion for now - src/hb-algs.hh | 2 +- - src/hb-map.hh | 4 ++-- - src/hb-meta.hh | 26 +++++++++++++------------- - 3 files changed, 16 insertions(+), 16 deletions(-) + src/hb-serialize.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 9574de7a3e763b9c5eacf65b4b8c148724c00b82 +commit 8a32c9eecbdc907415195eca9ebad47c8acf2df5 Author: Behdad Esfahbod -Date: Fri May 10 19:29:32 2019 -0700 +Date: Thu May 2 16:20:18 2019 -0700 - [meta] Add add_const, add_pointer, add_lvalue_reference, add_rvalue_reference + [serialize] Misc getting copy() to work - src/hb-meta.hh | 11 +++++++++++ - 1 file changed, 11 insertions(+) + src/hb-open-type.hh | 16 +++++++++------- + src/hb-serialize.hh | 26 ++++++++++++++++---------- + 2 files changed, 25 insertions(+), 17 deletions(-) -commit 2fb3a8327ab35248a0c7877c48422718cfbe375d +commit 7d497a3a92973d4cec14888b932091f49de1d190 Author: Behdad Esfahbod -Date: Fri May 10 18:40:29 2019 -0700 +Date: Thu May 2 16:20:03 2019 -0700 - [vector] Simplify arrayZ - - Was turned into function when we had static ones and wanted to be - move-safe... Not the case anymore. + [debug] Allow return_trace() to return any type - src/hb-coretext.cc | 2 +- - src/hb-ot-cff-common.hh | 2 +- - src/hb-uniscribe.cc | 10 +++---- - src/hb-vector.hh | 71 ++++++++++++++++++++++--------------------------- - 4 files changed, 39 insertions(+), 46 deletions(-) + src/hb-debug.hh | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) -commit 4d67743ffd99ed9f2278ab21adfac7eb314c0df0 +commit 49b1c763a0459d586b7f0aa86eadd13d21b24867 Author: Behdad Esfahbod -Date: Fri May 10 16:35:31 2019 -0700 +Date: Thu May 2 16:19:34 2019 -0700 - [subset] Use more auto typing + [test] Run "fonttools ttx" instead of "ttx" - src/hb-ot-layout-common.hh | 8 ++++---- - src/hb-ot-layout-gdef-table.hh | 2 +- - src/hb-ot-layout-gsubgpos.hh | 4 ++-- - 3 files changed, 7 insertions(+), 7 deletions(-) + test/subset/run-tests.py | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) -commit a27a31b9ee2601a05575cb581dc227caa73742c4 +commit 91176d5b778b44172591e82ba84127e5eff1372d Author: Behdad Esfahbod -Date: Fri May 10 16:26:19 2019 -0700 +Date: Thu May 2 15:12:07 2019 -0700 - Minor + [serialize] Check offset base is within (possibly end of) object - src/hb-ot-layout-common.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-serialize.hh | 1 + + 1 file changed, 1 insertion(+) -commit 2ade0086286963ae2c65d44b94e63cb3836ce36b +commit 0f1a6ce8268b197732aab40069bbda57eddac2e0 Author: Behdad Esfahbod -Date: Fri May 10 16:21:03 2019 -0700 +Date: Thu May 2 15:03:41 2019 -0700 - [serialize] More rewrite + [name] Fix format of susbetted table to 0 - src/hb-ot-layout-common.hh | 42 ++++++++++++++++++++++++------------------ - 1 file changed, 24 insertions(+), 18 deletions(-) + src/hb-ot-name-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 99ed6e29d86bbf391c12ee1f980b8af9dc35615e +commit 87810fc958e28d0c5e05097b1b3fe78d962fdc62 Author: Behdad Esfahbod -Date: Fri May 10 16:07:51 2019 -0700 +Date: Thu May 2 14:45:57 2019 -0700 - [serialize] Fix a TODO + [name] Use variable forwarding to simplify sanitize() - src/hb-ot-layout-common.hh | 16 ++++++++++------ - 1 file changed, 10 insertions(+), 6 deletions(-) + src/hb-ot-name-table.hh | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) -commit d8a49b53e3676ad742bdb8edf0ec3ca6f7a7cac9 -Author: rsheeter -Date: Fri May 10 16:52:43 2019 -0700 +commit bf91b418b0e988619c230156f5f062c5d2802dd8 +Author: Behdad Esfahbod +Date: Thu May 2 14:42:37 2019 -0700 - Update TESTING.md + [name] - TESTING.md | 9 ++++++++- - 1 file changed, 8 insertions(+), 1 deletion(-) + src/hb-ot-name-table.hh | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) -commit 25a5b287f220802728cd3312692f368c45d22862 +commit 998b0b68ac2eafd1d5bca51b3723fa753e4db7c4 Author: Behdad Esfahbod -Date: Fri May 10 16:01:39 2019 -0700 +Date: Thu May 2 14:39:52 2019 -0700 - Fix sanitize fail of extension sublookups - - Fixes https://bugs.chromium.org/p/chromium/issues/detail?id=960331 + [serializer] Add copy() to (Unsized)ArrayOf - src/hb-ot-layout-common.hh | 10 ++++++++-- - src/hb-sanitize.hh | 2 ++ - ...uzz-testcase-minimized-harfbuzz_fuzzer-5702671124791296 | Bin 0 -> 94 bytes - 3 files changed, 10 insertions(+), 2 deletions(-) + src/hb-open-type.hh | 41 +++++++++++++++++++++++++++++++++++++++++ + src/hb-serialize.hh | 4 ++-- + 2 files changed, 43 insertions(+), 2 deletions(-) -commit 9c0c3589f31106d1898f8922cc9a2e18cb054989 +commit 88a41472404a8e7754e1099ca4a5b2146dae5298 Author: Behdad Esfahbod -Date: Fri May 10 13:56:50 2019 -0700 +Date: Thu May 2 14:22:31 2019 -0700 - Minor + [serializer] Accept exact type in serialize_subset/copy() - src/hb-ot-layout-common.hh | 14 ++++++++------ - 1 file changed, 8 insertions(+), 6 deletions(-) + src/hb-open-type.hh | 12 ++++++------ + src/hb-ot-layout-common.hh | 33 ++------------------------------- + src/hb-ot-layout-gpos-table.hh | 6 ++++++ + src/hb-ot-layout-gsub-table.hh | 6 ++++++ + 4 files changed, 20 insertions(+), 37 deletions(-) -commit 5d773ec60029e1a6edec45c27ea918d9be4ea806 +commit 88fdeeecc0ef57e41219d92c90f35f13cbd3a35e Author: Behdad Esfahbod -Date: Fri May 10 13:53:15 2019 -0700 +Date: Thu May 2 14:14:33 2019 -0700 - Minor + [serialize] Take arguments in copy() - src/hb-ot-layout-gsubgpos.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-open-type.hh | 6 +++--- + src/hb-serialize.hh | 10 ++++++---- + 2 files changed, 9 insertions(+), 7 deletions(-) -commit ac737f8c9e7cbc81cdb5a0542a2494671f236895 +commit 273ed6127bd9471fd11b3c1c7f232638f1ff1dba Author: Behdad Esfahbod -Date: Fri May 10 13:51:12 2019 -0700 +Date: Thu May 2 14:04:51 2019 -0700 - Minor again + [serializer] Add serialize_copy() - src/hb-ot-layout-gsubgpos.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-open-type.hh | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) -commit 5d4437fad0f99508ebd5c026a3d927f5d649615e +commit bf22338f49fb1711f7cbcad2d9949d7962cdc0bc Author: Behdad Esfahbod -Date: Fri May 10 13:43:29 2019 -0700 +Date: Thu May 2 13:51:52 2019 -0700 - Minor + Remove dead code - src/hb-ot-layout-common.hh | 1 - - 1 file changed, 1 deletion(-) + src/hb-algs.hh | 3 --- + 1 file changed, 3 deletions(-) -commit cd9bc732a75c716121a86e39ab588d2e0af58eba -Author: Behdad Esfahbod -Date: Fri May 10 13:17:41 2019 -0700 +commit 157a414bd9fb8b1b7a066603e7c44b8680b48e28 +Author: Michiharu Ariza +Date: Thu May 2 11:25:10 2019 -0700 - [gsubgpos] Minor + fix mixup of TRACE_SUBSET/SERIALIZE - src/hb-ot-layout-gsubgpos.hh | 9 ++------- - 1 file changed, 2 insertions(+), 7 deletions(-) + src/hb-ot-layout-common.hh | 4 ++-- + src/hb-ot-var-hvar-table.hh | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) -commit 6d63e27ca41b12ba2e8fb22fd6bc44417651c518 -Author: Behdad Esfahbod -Date: Fri May 10 11:53:02 2019 -0700 +commit 14e1fabc41a9a5ead3d91d560773050469982f54 +Author: David Corbett +Date: Wed May 1 21:29:06 2019 -0400 - Generate tarball in .xz instead of .bz2 - - Fixes https://github.com/harfbuzz/harfbuzz/issues/1662 + Sync gen-vowel-constraints.py with current output - configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/gen-vowel-constraints.py | 3 +++ + 1 file changed, 3 insertions(+) -commit 1d870cce68f7033f6d3967ce4e9ba622a6fafe79 -Author: Behdad Esfahbod -Date: Fri May 10 11:32:59 2019 -0700 +commit 026ab825c8e41980e286be911cc6fbb958dd7cd3 +Author: David Corbett +Date: Wed May 1 16:15:58 2019 -0400 - Fix bot - - Any way to catch these? + Add dotted circles to more broken clusters - src/test-meta.cc | 26 +++++++++++++------------- - 1 file changed, 13 insertions(+), 13 deletions(-) + src/gen-use-table.py | 9 + + src/hb-ot-shape-complex-myanmar-machine.hh | 196 +++++----- + src/hb-ot-shape-complex-myanmar-machine.rl | 4 +- + src/hb-ot-shape-complex-use-machine.hh | 602 +++++++++++++++-------------- + src/hb-ot-shape-complex-use-machine.rl | 11 +- + src/hb-ot-shape-complex-use-table.cc | 2 +- + 6 files changed, 433 insertions(+), 391 deletions(-) -commit 30e4ae6bd19bf297b029205b5f86c1a0ae14943d -Author: Behdad Esfahbod -Date: Fri May 10 11:26:39 2019 -0700 +commit 92588782d7a45e0c023c5f48cbd19b11cfa8f0d2 +Author: Ebrahim Byagowi +Date: Tue Apr 30 13:05:10 2019 -0700 - [meta] Add hb_is_base_of + Remove space between right angle brackets now that we have C++11 (#1689) - src/hb-meta.hh | 7 +++++++ - src/test-meta.cc | 16 ++++++++++++++++ - 2 files changed, 23 insertions(+) + src/hb-aat-layout-ankr-table.hh | 2 +- + src/hb-aat-layout-common.hh | 14 +++---- + src/hb-aat-layout-just-table.hh | 4 +- + src/hb-aat-layout-kerx-table.hh | 14 +++---- + src/hb-aat-layout-lcar-table.hh | 2 +- + src/hb-aat-layout-morx-table.hh | 14 +++---- + src/hb-aat-layout-trak-table.hh | 2 +- + src/hb-aat-ltag-table.hh | 2 +- + src/hb-cff-interp-cs-common.hh | 2 +- + src/hb-cff1-interp-cs.hh | 2 +- + src/hb-cff2-interp-cs.hh | 2 +- + src/hb-iter.hh | 4 +- + src/hb-null.hh | 8 ++-- + src/hb-open-file.hh | 8 ++-- + src/hb-open-type.hh | 8 ++-- + src/hb-ot-color-cbdt-table.hh | 2 +- + src/hb-ot-color-colr-table.hh | 4 +- + src/hb-ot-color-cpal-table.hh | 8 ++-- + src/hb-ot-color-sbix-table.hh | 2 +- + src/hb-ot-color-svg-table.hh | 4 +- + src/hb-ot-kern-table.hh | 6 +-- + src/hb-ot-layout-base-table.hh | 2 +- + src/hb-ot-layout-common.hh | 10 ++--- + src/hb-ot-layout-gdef-table.hh | 4 +- + src/hb-ot-layout-gpos-table.hh | 6 +-- + src/hb-ot-layout-gsub-table.hh | 18 ++++----- + src/hb-ot-layout-gsubgpos.hh | 86 ++++++++++++++++++++--------------------- + src/hb-ot-math-table.hh | 2 +- + src/hb-ot-name-table.hh | 10 ++--- + src/hb-ot-stat-table.hh | 4 +- + src/hb-subset-cff1.cc | 2 +- + src/test-iter.cc | 10 ++--- + 32 files changed, 134 insertions(+), 134 deletions(-) -commit 98974ac16f5caf282c9c7cf0c417b494efd6af1d -Author: Behdad Esfahbod -Date: Fri May 10 11:18:52 2019 -0700 +commit f27fdca4aa438ec366ee17370fbc9fdeb962c397 +Author: Ebrahim Byagowi +Date: Tue Apr 30 13:01:04 2019 -0700 - [iter] Adjust is_source_of / is_sink_of - - There are two cases that we accept. Encode both. + [doc] Add documentation to hb_color_get_* and hb_directwrite_face_* (#1690) - src/hb-iter.hh | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) + src/hb-common.cc | 12 ++++++++---- + src/hb-directwrite.cc | 8 ++++++-- + 2 files changed, 14 insertions(+), 6 deletions(-) -commit 1b58bf22ca70908bb578910757795ee32d48b65a -Author: rsheeter -Date: Thu May 9 20:06:29 2019 -0700 +commit c52294eb28e9b043306f91611e4444651fe5e8ef +Author: Michiharu Ariza +Date: Tue Apr 30 10:40:45 2019 -0700 - Update TESTING.md + renaming & arg reorder - TESTING.md | 18 +++++++++--------- - 1 file changed, 9 insertions(+), 9 deletions(-) + src/hb-ot-var-hvar-table.hh | 56 ++++++++++++++++++++++----------------------- + 1 file changed, 28 insertions(+), 28 deletions(-) -commit ed972d5d73ba0592e1ba92426adf2a8f67acf9c9 -Author: Behdad Esfahbod -Date: Thu May 9 16:58:28 2019 -0700 +commit fe4a0ac707802b5bb36787723f8d55a58c2946a5 +Author: David Corbett +Date: Tue Apr 30 13:35:50 2019 -0400 - [iter] Rewrite test functions - - Notably, add hb_is_source_of(,) and hb_is_sink_of(,) to replace most - uses of hb_is_iterator_of(,). + Fix some dead links - src/hb-iter.hh | 65 +++++++++++++++++++++++++++++----------------- - src/hb-open-type.hh | 7 +++-- - src/hb-ot-layout-common.hh | 6 ++--- - src/hb-ot-name-table.hh | 2 +- - src/test-iter.cc | 2 +- - 5 files changed, 49 insertions(+), 33 deletions(-) + src/gen-os2-unicode-ranges.py | 2 +- + src/gen-use-table.py | 6 +++--- + src/hb-ot-shape-complex-myanmar.hh | 2 +- + 3 files changed, 5 insertions(+), 5 deletions(-) -commit 42901d7af91b4c5cffee9752f653447e4f4bd4f7 -Author: Behdad Esfahbod -Date: Thu May 9 16:22:08 2019 -0700 +commit 68749e996aedbae9b1c4553f5672f74e1727b850 +Author: Nathan Willis +Date: Tue Apr 30 17:23:55 2019 +0100 - Minor + [Docs] Usermanual; update XML manifest for new chapters. - src/hb-meta.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + docs/Makefile.am | 4 ++-- + docs/harfbuzz-docs.xml | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) -commit 322627ae1daa16f62f7a91c3c3ed02eb5b708ca5 -Author: Behdad Esfahbod -Date: Thu May 9 16:08:10 2019 -0700 +commit 30d7d1064ee339ca216699851030f9bae8c07c68 +Author: Nathan Willis +Date: Tue Apr 30 17:23:19 2019 +0100 - Whitespace + [Docs] Usermanual; add Utilities chapter. - src/hb-array.hh | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) + docs/usermanual-utilities.xml | 244 ++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 244 insertions(+) -commit 489f3c35bddb22cfe40c45d3a5c1cb6d88ccaf1f -Author: Behdad Esfahbod -Date: Thu May 9 15:39:32 2019 -0700 +commit d0f5a05aef73293fe21ddb022084166a7a095862 +Author: Nathan Willis +Date: Tue Apr 30 17:22:54 2019 +0100 - Fix bot + [Docs] Usermanual; add Shaping, Features, and Plans. - src/test-meta.cc | 70 ++++++++++++++++++++++++++++---------------------------- - 1 file changed, 35 insertions(+), 35 deletions(-) + docs/usermanual-opentype-features.xml | 279 +++++++++++++++++++++++++++++++++- + 1 file changed, 277 insertions(+), 2 deletions(-) -commit 790315e0dbc0ce796f0081a60953f74bd3fbdb63 -Author: Behdad Esfahbod -Date: Thu May 9 15:31:24 2019 -0700 +commit 8354c99fbee2887cb71440f4e25ad1e6f46b2592 +Author: Nathan Willis +Date: Tue Apr 30 17:22:08 2019 +0100 - [algs] Implement implicit casting between compatible pair types + [Docs] Usermanual; add Fonts And Faces chapter. + + docs/usermanual-fonts-and-faces.xml | 445 +++++++++++++++++++++++++++++++++++- + 1 file changed, 437 insertions(+), 8 deletions(-) + +commit 3b301c5ac6b15728f858cb6f5de8dfc6a77209fa +Author: Nathan Willis +Date: Tue Apr 30 17:21:33 2019 +0100 - src/hb-algs.hh | 5 +++++ - src/test-algs.cc | 3 +++ - 2 files changed, 8 insertions(+) + [Docs] Usermanual; fill out Buffers chapter. -commit 69d9114b5372c1fcea5f20e75a187158c31c52f8 -Author: Behdad Esfahbod -Date: Thu May 9 15:24:14 2019 -0700 + ...anual-buffers-language-script-and-direction.xml | 358 +++++++++++++++++++-- + 1 file changed, 335 insertions(+), 23 deletions(-) - [meta] Rewrite hb_is_cr_converitble +commit 6d9a86ae7535ea8e3c108a49c6da877a78cdac26 +Author: Nathan Willis +Date: Tue Apr 30 16:09:01 2019 +0100 - src/hb-meta.hh | 22 ++++++++++------------ - 1 file changed, 10 insertions(+), 12 deletions(-) + [Docs] Usermanual; fixes to Object Model chapter -commit ceda1f03b7b06248ffd056eb7b2400088bb4a121 -Author: Behdad Esfahbod -Date: Thu May 9 15:19:42 2019 -0700 + docs/usermanual-object-model.xml | 35 ++++++++++++++++++++++------------- + 1 file changed, 22 insertions(+), 13 deletions(-) - Fix compile - - NameRecord is not copy-constructible, so should be iterator of - const-reference. +commit 1223a352b7c8d1cc362693b850f348af4d4d03fb +Merge: aa3ac592 9542bdd0 +Author: Michiharu Ariza +Date: Mon Apr 29 16:43:48 2019 -0700 - src/hb-meta.hh | 2 -- - src/hb-ot-name-table.hh | 2 +- - src/test-meta.cc | 12 ++++++++++++ - 3 files changed, 13 insertions(+), 3 deletions(-) + Merge branch 'master' into var-subset -commit 3686c3b65c017cf8689b67db440b4cddd399538b -Author: Behdad Esfahbod -Date: Thu May 9 15:09:07 2019 -0700 +commit 9542bdd0ed2d581cdb4bd950ac3cd7e3bf899478 +Author: Ebrahim Byagowi +Date: Mon Apr 29 14:52:28 2019 -0700 - Adjust is_cr_convertible + Add color channels getters ABI (#1513) - If To is const& then From doesn't need to be &. + So can be used with language wrappers - src/hb-meta.hh | 14 ++++++++++---- - 1 file changed, 10 insertions(+), 4 deletions(-) + src/hb-common.cc | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ + src/hb-common.h | 40 +++++++++++----------------------------- + 2 files changed, 64 insertions(+), 29 deletions(-) -commit 726002a6a615e2d213186d402cca4e8d7e7a7f58 -Author: Behdad Esfahbod -Date: Thu May 9 14:53:02 2019 -0700 +commit e200d165a4e8a5f901165c705d617b6e457ec595 +Author: Ebrahim Byagowi +Date: Tue Apr 30 02:10:50 2019 +0430 - [iter] Make hb_is_iterator_of() check is_convertible + [ci] Remove crosscompile-notest-freebsd9 bot - Instead of is_cr_convertible. + It was testing an old version of freebsd and now it's image is gone. + We really like to test the environment. - src/hb-array.hh | 8 ++++---- - src/hb-iter.hh | 2 +- - src/hb-meta.hh | 8 ++++---- - 3 files changed, 9 insertions(+), 9 deletions(-) + .circleci/config.yml | 10 ---------- + 1 file changed, 10 deletions(-) -commit 70a49f2e4a9ab05fe04d1949bbf7a128d14a1284 -Author: Behdad Esfahbod -Date: Thu May 9 14:35:15 2019 -0700 +commit 4aa546b70ad7b11154b901e67f98c1ec6bc5c364 +Author: David Corbett +Date: Mon Apr 29 14:16:51 2019 -0400 - [meta] Add hb_conditional<> and hb_is_convertible() + Allow some Balinese Po & So as aksara modre bases - src/Makefile.am | 6 ++++- - src/hb-meta.hh | 56 +++++++++++++++++++++++++++++++++++++-------- - src/test-meta.cc | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 121 insertions(+), 11 deletions(-) + src/gen-use-table.py | 10 ++++++++-- + src/hb-ot-shape-complex-use-table.cc | 4 ++-- + 2 files changed, 10 insertions(+), 4 deletions(-) -commit 5e3cbed048b19ee579277ab4c56167a15d13104e -Author: Garret Rieger -Date: Wed May 8 16:33:03 2019 -0700 +commit 6d6edc8b25395c87477181a647a8e6d02f2cad4f +Author: Ebrahim Byagowi +Date: Sun Apr 28 11:54:07 2019 -0700 - [subset] Switch building of glyph maps in subset plan to use iterators. + [valgrind] Use libtool and support run-subset-fuzzer-tests (#1668) - src/hb-algs.hh | 4 +--- - src/hb-subset-plan.cc | 52 +++++++++++++++++++++++++-------------------------- - 2 files changed, 27 insertions(+), 29 deletions(-) + test/fuzzing/Makefile.am | 4 +- + test/fuzzing/run-shape-fuzzer-tests.py | 28 ++++++------ + test/fuzzing/run-subset-fuzzer-tests.py | 75 ++++++++++++++++++++++++++++++--- + 3 files changed, 85 insertions(+), 22 deletions(-) -commit 971020eca7c5d576816b93431607f1e63e9584a4 -Author: Garret Rieger -Date: Wed May 8 16:31:52 2019 -0700 +commit 62c6e170728303f4225aaa25523675fc260ae1ab +Author: Ebrahim Byagowi +Date: Sun Apr 28 10:55:07 2019 -0700 - Add sink support for hb_hashmap_t and a reverse call to hb_pair_t. + [test] Add crbug.com/oss-fuzz/14474 testcase + + Fixed at 6977a95f - src/hb-algs.hh | 5 +++++ - src/hb-map.hh | 4 ++++ - 2 files changed, 9 insertions(+) + ...testcase-minimized-hb-subset-fuzzer-5716947896893440 | Bin 0 -> 65833 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) -commit 98eec3dd5f527cc562d98784429db0c7269e82a8 +commit 6977a95fed8a35d6e915ed3fc3a3ea8709f3d4a4 Author: Behdad Esfahbod -Date: Thu May 9 13:15:36 2019 -0700 +Date: Sat Apr 27 10:05:25 2019 -0700 - Add hb_pair_t(,) macro as alternative to hb_pair_t<,> + [subset] Don't crash if subsetting GSUB/GPOS fails - Just so it's easier to use it in other macros. + Fixes fuzzer issue. - src/hb-algs.hh | 1 + - 1 file changed, 1 insertion(+) + src/hb-subset.cc | 27 ++++++++++++++------------- + 1 file changed, 14 insertions(+), 13 deletions(-) -commit c9b287a867d6130a0cc745d7fd3ccfa4dcb4c32e +commit 2b051e7aa147c78cfbf953b6f0eb18c25b732eb2 Author: Behdad Esfahbod -Date: Thu May 9 12:43:57 2019 -0700 +Date: Sat Apr 27 10:01:11 2019 -0700 - Add hb_lidentity(), and rename hb_rvalue() to hb_ridentity() + [subset] Check error after calling serializer end - src/hb-algs.hh | 13 ++++++++++++- - src/hb-map.hh | 4 ++-- - src/test-iter.cc | 2 +- - 3 files changed, 15 insertions(+), 4 deletions(-) + src/hb-subset.cc | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) -commit 00195a22ce5198345cb39825a45863cef7d8f7fc +commit 750b65e9a980efc13e50ea5d0388ecf06e7a93b1 Author: Behdad Esfahbod -Date: Thu May 9 12:14:36 2019 -0700 +Date: Fri Apr 26 17:14:25 2019 -0700 - [hdmx] Adjust to hb_iota() behavior change + [meta] Add hb_type_identity<> - Use hb_range() instead. + To block template argument deduction. - src/hb-ot-hdmx-table.hh | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/hb-meta.hh | 4 ++++ + 1 file changed, 4 insertions(+) -commit 4f2ad75a839708de71e7341f23c2d4b72059fc58 -Author: Behdad Esfahbod -Date: Thu May 9 12:07:45 2019 -0700 +commit 8c8922a019eb1ceb8beffc05ca638ee0ca25b565 +Author: Qunxin Liu +Date: Thu Apr 25 09:17:58 2019 -0700 - [enumerate] Fix hb_enumerate() len for step=0 + [subset] Updates due to changes in resolve_links() on master branch - src/hb-iter.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/Makefile.sources | 1 + + src/hb-ot-name-table.hh | 7 +++++-- + src/hb-static.cc | 3 +-- + 3 files changed, 7 insertions(+), 4 deletions(-) -commit 5da3c9c33f02010a3fc57cf0e1d07955af681e7c -Author: Behdad Esfahbod -Date: Thu May 9 11:30:31 2019 -0700 +commit 2f6ec35344db08d0c892152bc7a7eaa67e7c03f0 +Author: Garret Rieger +Date: Wed Apr 24 15:15:36 2019 -0700 - [iter] Fix hb_zip() end condition - - We should compare-equal to end if either iterator's end reaches, - not if both reach at the same time. Fixes infinite-loop in test - which was happening after hb_enumerate() switched to using hb_zip(). + Move implementations of hb-ot-name-language.cc into a hb-static.cc - src/hb-iter.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-aat-layout.hh | 1 - + src/hb-ot-name-language-static.hh | 462 ++++++++++++++++++++++++++++++++++++++ + src/hb-ot-name-language.hh | 432 +---------------------------------- + src/hb-static.cc | 2 + + 4 files changed, 468 insertions(+), 429 deletions(-) -commit 57a5256fbcef6e5d29fc40cf019cc4b2c29c9dcf -Author: Behdad Esfahbod -Date: Thu May 9 11:30:27 2019 -0700 +commit 19afd25004487cfaa7b487b1768b4dae1ab37296 +Author: Qunxin Liu +Date: Wed Apr 24 14:02:29 2019 -0700 - [iter] Minor + [subset] Update to use _subset2() for name table - src/hb-iter.hh | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/hb-ot-name-table.hh | 47 ++++++++++------------------------------------- + src/hb-subset.cc | 4 ++-- + 2 files changed, 12 insertions(+), 39 deletions(-) -commit 12dd56f8573cb86169580d5ac31b986208805c03 -Author: Behdad Esfahbod -Date: Thu May 9 11:25:02 2019 -0700 +commit 1ca4b5c77012ed586413f39e730b03bf965e1305 +Author: Qunxin Liu +Date: Mon Apr 22 11:31:23 2019 -0700 - [iter] Minor + [subset] Add unit test for str de-dup + Also move the implementation of some methods from the .cc to the .hh - src/hb-iter.hh | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) + src/Makefile.sources | 1 - + src/hb-aat-layout.cc | 8 - + src/hb-aat-layout.hh | 9 +- + src/hb-ot-name-language.cc | 457 --------------------------------- + src/hb-ot-name-language.hh | 432 ++++++++++++++++++++++++++++++- + test/api/fonts/nameID.dup.expected.ttf | Bin 0 -> 2340 bytes + test/api/fonts/nameID.dup.origin.ttf | Bin 0 -> 170680 bytes + test/api/test-subset-nameids.c | 21 ++ + 8 files changed, 456 insertions(+), 472 deletions(-) -commit 57d545932f539d06c52862310ecdfe79c143bb6b -Author: Behdad Esfahbod -Date: Thu May 9 11:23:41 2019 -0700 +commit 9ad14f56b6cf2a345104b3a897b52a1f4c0f33a5 +Author: Qunxin Liu +Date: Tue Apr 16 11:20:58 2019 -0700 - [test-iter] Don't walk past end - - That's not legal. + [subset] update name table subsetting with new serializer - src/test-iter.cc | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) + src/hb-ot-name-table.hh | 126 ++++++++++++++++++++++++++++-------------------- + 1 file changed, 75 insertions(+), 51 deletions(-) + +commit 6faac8df83bb59f08e5d329e76435ba438b2ea54 +Author: Qunxin Liu +Date: Wed Apr 10 16:38:35 2019 -0700 + + [subset] Subsetting Name Table Step 4 + Add unit test and integration test + + test/api/Makefile.am | 2 + + test/api/fonts/nameID.expected.ttf | Bin 0 -> 170696 bytes + test/api/fonts/nameID.origin.ttf | Bin 0 -> 170976 bytes + test/api/hb-subset-test.h | 9 ++++ + test/api/test-subset-nameids.c | 58 +++++++++++++++++++++ + .../Roboto-Regular.abc.name-ids.61,62,63.ttf | Bin 0 -> 2168 bytes + .../basics/Roboto-Regular.abc.name-ids.61,63.ttf | Bin 0 -> 1988 bytes + .../basics/Roboto-Regular.abc.name-ids.61.ttf | Bin 0 -> 1792 bytes + .../basics/Roboto-Regular.abc.name-ids.62.ttf | Bin 0 -> 1740 bytes + .../basics/Roboto-Regular.abc.name-ids.63.ttf | Bin 0 -> 1716 bytes + test/subset/data/profiles/name-ids.txt | 1 + + test/subset/data/tests/basics.tests | 1 + + 12 files changed, 71 insertions(+) + +commit e501ea143d1e63974903cdb41932c50f4222ff4e +Author: Qunxin Liu +Date: Fri Apr 5 10:05:55 2019 -0700 + + [subset] Subset name table step 3, add --nameids option to guide the + selection of which name records to keep in the subset method. + + src/hb-ot-name-table.hh | 28 ++++++++++++++++------------ + src/hb-subset-input.cc | 8 ++++++++ + src/hb-subset-input.hh | 3 ++- + src/hb-subset-plan.cc | 10 ++++++---- + src/hb-subset-plan.hh | 3 +++ + src/hb-subset.h | 3 +++ + util/hb-subset.cc | 1 + + util/options.cc | 45 +++++++++++++++++++++++++++++++++++++++++++++ + util/options.hh | 8 ++++++++ + 9 files changed, 92 insertions(+), 17 deletions(-) -commit 46837910e628248edc09e45e212532a3493905da -Author: Behdad Esfahbod -Date: Thu May 9 11:20:41 2019 -0700 +commit 2637a81615c80443911a603cbd161ade525c79f1 +Author: Qunxin Liu +Date: Tue Apr 2 13:38:27 2019 -0700 - [iter] Allow negative step in hb_iota() + [subset] subset name table step 2, add implementation for collecting subset + elements and serialize method - src/hb-iter.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-name-table.hh | 131 ++++++++++++++++++++++++++++++++++++++++-------- + 1 file changed, 109 insertions(+), 22 deletions(-) -commit 087327af1eac8c3a16115904557cbf3ab0f28072 -Author: Behdad Esfahbod -Date: Thu May 9 11:14:06 2019 -0700 +commit 408c1daeb4ff86d2204ed1bdd059513357ada392 +Author: Qunxin Liu +Date: Fri Mar 29 10:34:32 2019 -0700 - [iter] Minor + [subset] subset name table step 1, write out table unmodified, use accelerator to access + string - src/hb-iter.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-name-table.hh | 53 +++++++++++++++++++++++++++++++++++++++++++++++++ + src/hb-subset.cc | 4 ++++ + 2 files changed, 57 insertions(+) -commit 64f0899a9f5e5aff65c5a78fa796ceae6f35c008 +commit 3a7f5bdd18314676425ec811199767a5f8e65a40 Author: Behdad Esfahbod -Date: Thu May 9 11:10:31 2019 -0700 +Date: Fri Apr 26 14:40:01 2019 -0700 - [iter] Bug fix + Rewrite hb_is_signed() - src/hb-iter.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-meta.hh | 20 +++++++++++--------- + 1 file changed, 11 insertions(+), 9 deletions(-) -commit 5d263556b95047bced88e4a6252178d2fc0f9a19 +commit 73c82f2301a52cf2111296b34691bc898a7a6363 Author: Behdad Esfahbod -Date: Thu May 9 11:08:25 2019 -0700 +Date: Fri Apr 26 13:16:48 2019 -0700 - [iter] Fix + [iter] Fix hb_is_iterator_of() to actually check item type - src/hb-iter.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-iter.hh | 20 +++++++++----------- + 1 file changed, 9 insertions(+), 11 deletions(-) -commit 2c24ea37b1ef63f79fcc24752dd180ce53540eda +commit c51f15ddfcae8578483693b761b81ceaebf05f2a Author: Behdad Esfahbod -Date: Thu May 9 11:07:38 2019 -0700 +Date: Fri Apr 26 13:03:41 2019 -0700 - [iter] Take start value in hb_enumerate() - - Also rewrite it via composition. + [array] Adjust hb_sorted_array_t copy constructor/assignment to match hb_array_t - src/hb-iter.hh | 61 ++++++++++++-------------------------------------------- - src/test-iter.cc | 1 + - 2 files changed, 14 insertions(+), 48 deletions(-) + src/hb-array.hh | 13 ++++++++++--- + 1 file changed, 10 insertions(+), 3 deletions(-) -commit 7675d0d3a6cc13ade1a2047019ef7fac8c373a3c +commit b2758c360cc08d7a0334aae11845d0c5d50c46af Author: Behdad Esfahbod -Date: Thu May 9 11:02:56 2019 -0700 +Date: Fri Apr 26 12:58:06 2019 -0700 - [iter] Add hb_range() - - hb_range() is like Python range. hb_iota() has slightly different API. - Ie. it takes a start, instead of end. + [array] Use hb_is_cr_convertible_to() - src/hb-iter.hh | 29 ++++++++++++++++++----------- - src/test-iter.cc | 19 +++++++++++-------- - 2 files changed, 29 insertions(+), 19 deletions(-) + src/hb-array.hh | 14 ++------------ + 1 file changed, 2 insertions(+), 12 deletions(-) -commit 05867d9f5315c7e4f49e5873a5aba6bba7121f04 +commit 8ecae793aa79056a312d3c8518106cfeca42390e Author: Behdad Esfahbod -Date: Thu May 9 11:00:43 2019 -0700 +Date: Fri Apr 26 12:57:56 2019 -0700 - [meta] Add hb_int_max() + [meta] Add hb_is_cr_convertible_to() - src/hb-meta.hh | 91 ++++++++++++++++++++++++++++++++++++---------------------- - 1 file changed, 56 insertions(+), 35 deletions(-) + src/hb-meta.hh | 5 +++++ + 1 file changed, 5 insertions(+) -commit 71537f93e0ce27121012bf1e81270b6b03b22224 +commit 52bb0346d319c322f117567a096fafa1bc804e26 Author: Behdad Esfahbod -Date: Thu May 9 10:46:49 2019 -0700 - - [iota] end -> end_ to not shadow - - src/hb-iter.hh | 22 +++++++++++----------- - 1 file changed, 11 insertions(+), 11 deletions(-) +Date: Fri Apr 26 12:52:28 2019 -0700 -commit 6bc82579100992e3f04c11f36b9c2f0014d880f2 -Merge: 34764454 6d9a86ae -Author: n8willis -Date: Thu May 9 14:39:05 2019 +0100 + [meta] Add hb_decay<> - Merge pull request #1680 from n8willis/usermanual-obj - - Usermanual: object-model chapter + src/hb-meta.hh | 2 ++ + 1 file changed, 2 insertions(+) -commit 3476445420d0e6432c09710b6667205453799129 -Author: Behdad Esfahbod -Date: Wed May 8 21:14:01 2019 -0700 +commit 474f3587cd18fdaf86b2068647fa03b107557d8c +Author: Michiharu Ariza +Date: Fri Apr 26 10:12:38 2019 -0700 - Remove unnecessary template keyword - - Should fix MSVC. + copy retain_gids from input to plan - src/hb-array.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-subset-plan.cc | 1 + + src/hb-subset-plan.hh | 1 + + 2 files changed, 2 insertions(+) -commit e2a51ff7264940312197184318f5ad4ec971492f +commit 3fc066314ac19005ea8157a6541412cfd24abbc2 Author: Behdad Esfahbod -Date: Wed May 8 16:41:39 2019 -0700 +Date: Wed Apr 24 16:41:57 2019 -0700 - Remove unused var + Another try at fixing cmake build - src/hb-open-type.hh | 1 - - 1 file changed, 1 deletion(-) + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit e8b45c19330d8718cd6d7aef0ca2db0539a53294 +commit c69f02784ac53a7fd13eee559559b38d8224ef59 Author: Behdad Esfahbod -Date: Wed May 8 16:37:38 2019 -0700 +Date: Wed Apr 24 16:31:37 2019 -0700 - [array] Add .copy() + Fix sign-compare error on 32-bit systems - src/hb-array.hh | 11 +++++++++++ - src/hb-open-type.hh | 10 ++++------ - src/hb-serialize.hh | 2 +- - 3 files changed, 16 insertions(+), 7 deletions(-) + src/hb-open-type.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit afb013f350b0022ae6c05f140aeba23d5de34101 +commit f2d20dd9d3b52f434f5fe9dbef82bd95eb499edf Author: Behdad Esfahbod -Date: Wed May 8 16:16:43 2019 -0700 +Date: Wed Apr 24 15:08:27 2019 -0700 - Fix msan issue + [THANKS] Add Ivan Kuckir - hb_identity returns rvalue-reference if input is rvalue. That, can leak - the reference and cause in bad access to temporaries after they are - destructed. This is unfortunately unfixable given the desired - transparency of hb_identity :(. Just don't use it with hb_map(). + https://github.com/harfbuzz/harfbuzz/issues/1633#issuecomment-485764140 - src/test-iter.cc | 2 +- + THANKS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 4c94bc63d914fac7e11940eb165b6cf1039ba5a1 +commit 0ca358f21a2a6e86a3d5c145a70bb84ab6e2db32 Author: Behdad Esfahbod -Date: Wed May 8 15:57:33 2019 -0700 +Date: Wed Apr 24 16:36:29 2019 -0400 - Move hb_invoke() back to hb-algs.hh + Try fixing cmake build - src/hb-algs.hh | 32 ++++++++++++++++++++++++++++++++ - src/hb-meta.hh | 32 -------------------------------- - 2 files changed, 32 insertions(+), 32 deletions(-) + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit b710176ce28e863a01797987d7ce37d19aaf2fd3 +commit 59a8fa53533b10b9c25458d9ba2d68b7b01c3ff0 Author: Behdad Esfahbod -Date: Wed May 8 15:46:51 2019 -0700 - - [hdmx] Touch up - - src/hb-ot-hdmx-table.hh | 24 ++++++++++++++---------- - 1 file changed, 14 insertions(+), 10 deletions(-) - -commit e8ef0e627c493af700e254bdd2767f8955f2d03f -Author: Garret Rieger -Date: Tue May 7 17:23:02 2019 -0700 +Date: Wed Apr 24 12:19:13 2019 -0400 - [subset] WIP convert hdmx subsetting to use iterators. + [iter] Add tests for casting to hb_iter_t<> base class for hb_sorted_array_t<> + + Something's phishy about hb_sorted_array_t<>. Can't get it work nicely with + change I'm making. Ugh.. - src/hb-ot-hdmx-table.hh | 121 +++++++++++++++++++------------------------- - test/api/test-subset-hdmx.c | 23 --------- - 2 files changed, 51 insertions(+), 93 deletions(-) + src/test-iter.cc | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) -commit d5decf9bf77db914b67ffc446379df621516e362 -Author: Garret Rieger -Date: Tue May 7 15:47:38 2019 -0700 +commit 714307cc437f375f128e17e5ab01eba0c57aaf01 +Author: Behdad Esfahbod +Date: Wed Apr 24 10:56:12 2019 -0400 - [subset] Move hdmx to subset2. + [iter] Remove fixed TODO - src/hb-ot-hdmx-table.hh | 36 ++++++------------------------------ - src/hb-subset.cc | 2 +- - 2 files changed, 7 insertions(+), 31 deletions(-) + src/hb-iter.hh | 3 --- + 1 file changed, 3 deletions(-) -commit 27b2093009745b6c30663605f45ac95deb1562cc +commit 22da12318a3e9fd9955f24fd0092de1a4a1a940d Author: Behdad Esfahbod -Date: Wed May 8 15:32:57 2019 -0700 +Date: Wed Apr 24 10:53:16 2019 -0400 - [map] Return rvalues from keys()/values() + [map] Fix TODO - src/hb-algs.hh | 7 +++++++ - src/hb-map.hh | 2 ++ - 2 files changed, 9 insertions(+) + src/hb-map.hh | 6 ++---- + src/hb-meta.hh | 6 ++++++ + src/hb-ot-cff1-table.cc | 1 - + src/hb-ot-cff2-table.cc | 1 - + src/hb.hh | 3 +-- + 5 files changed, 9 insertions(+), 8 deletions(-) -commit 372c5b97bfa3b744de1d017cf662607eb8a2fa6e +commit 4c6136e976af4f7332f703f5a7625505ffc296b6 Author: Behdad Esfahbod -Date: Wed May 8 15:28:39 2019 -0700 +Date: Wed Apr 24 10:44:24 2019 -0400 - [map] Fix bots - - Older compilers don't like calling iter() from return-type decltype() - - ../src/hb-map.hh:226:12: error: cannot call member function 'decltype ((((+ hb_array(((const hb_hashmap_t*)this)->hb_hashmap_t::items, (((const hb_hashmap_t*)this)->hb_hashmap_t::mask ? (((const hb_hashmap_t*)this)->hb_hashmap_t::mask + 1) : 0))) | hb_filter((& hb_hashmap_t::item_t:: is_real))) | hb_map((& hb_hashmap_t::item_t:: get_pair)))) hb_hashmap_t::iter() const [with K = const hb_serialize_context_t::object_t*; V = unsigned int; K kINVALID = 0u; V vINVALID = 0u; decltype ((((+ hb_array(((const hb_hashmap_t*)this)->hb_hashmap_t::items, (((const hb_hashmap_t*)this)->hb_hashmap_t::mask ? (((const hb_hashmap_t*)this)->hb_hashmap_t::mask + 1) : 0))) | hb_filter((& hb_hashmap_t::item_t:: is_real))) | hb_map((& hb_hashmap_t::item_t:: get_pair)))) = hb_map_iter_t::item_t>, bool (hb_hashmap_t::item_t::*)() const, const&, 0u>, hb_pair_t (hb_hashmap_t::item_t::*)() const, 0u>]' without object - + iter() - ^ - ../src/hb-meta.hh:58:41: note: in definition of macro 'HB_AUTO_RETURN' - #define HB_AUTO_RETURN(E) -> decltype ((E)) { return (E); } - ^ + [mutex] Remove TODO - src/hb-map.hh | 10 ++++++---- - 1 file changed, 6 insertions(+), 4 deletions(-) + src/hb-mutex.hh | 2 -- + 1 file changed, 2 deletions(-) -commit a30482718491e3455365167e1c85981c8c0f542b +commit 0268db11965d022883d5ef2ef828c0635165b7bd Author: Behdad Esfahbod -Date: Wed May 8 15:08:10 2019 -0700 +Date: Wed Apr 24 10:43:40 2019 -0400 - [map] Add .values() iterator + [map] Use hb_invoke() with pointer-to-method - src/hb-map.hh | 6 +++++- - src/test-iter.cc | 8 ++++++++ - 2 files changed, 13 insertions(+), 1 deletion(-) + src/hb-algs.hh | 5 ++++- + src/hb-map.hh | 4 ++-- + src/test-algs.cc | 8 ++++++++ + 3 files changed, 14 insertions(+), 3 deletions(-) -commit 3c69505b3a7850b68a931849a2badb84b6b36d51 +commit 8f79a5750e8982f9ab73c0dc6a8534dffef74610 Author: Behdad Esfahbod -Date: Wed May 8 15:05:10 2019 -0700 +Date: Wed Apr 24 10:32:49 2019 -0400 - [map] Fix iter + [algs] Add more hb_forward<>()'s - src/hb-map.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-algs.hh | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) -commit 5ceaafa5de8dff51fe91f7008a12ec9c304a1376 +commit 42526d1697e2449fa23741f84721dcf2ce688af7 Author: Behdad Esfahbod -Date: Wed May 8 14:59:25 2019 -0700 +Date: Wed Apr 24 10:24:33 2019 -0400 - [algs] Fix identity return type + [serialize] Fix SingleSubstFormat1 failure - src/hb-algs.hh | 6 +++--- + src/hb-ot-layout-gsub-table.hh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) -commit f5705d7656817cbfdbc4479b1cb0be3af6f4abdf +commit 6cc9707c9c0885a3133b7844f615cdcdaeccec18 Author: Behdad Esfahbod -Date: Wed May 8 14:46:55 2019 -0700 +Date: Wed Apr 24 10:22:06 2019 -0400 - Whitespace + [serialize] Rename - src/hb-map.hh | 10 +++++----- - src/test-iter.cc | 11 +++++++---- - 2 files changed, 12 insertions(+), 9 deletions(-) + src/hb-serialize.hh | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) -commit a17f0fa3a10a25959561582ae63ef2e5208647e2 +commit 085793d6cd35a1590a66712f39260030367490db Author: Behdad Esfahbod -Date: Wed May 8 14:44:11 2019 -0700 +Date: Wed Apr 24 10:15:59 2019 -0400 - [meta] Capture rvalue-references in is_reference / remove_reference + Remove wrong TODOs - src/hb-meta.hh | 1 + - 1 file changed, 1 insertion(+) + src/hb-ot-layout-gsubgpos.hh | 2 +- + src/hb-ot-shape-complex-indic.cc | 1 - + src/hb-ot-shape-complex-khmer.cc | 4 ++-- + src/hb-ot-shape-complex-myanmar.cc | 3 ++- + src/hb-ot-shape-complex-use.cc | 4 ++-- + 5 files changed, 7 insertions(+), 7 deletions(-) -commit 7166bd563447a64eda05c66668bd4a178292bd79 +commit 915b9ea5f48d56df21419761477b2d4ba2843b54 Author: Behdad Esfahbod -Date: Wed May 8 14:24:57 2019 -0700 - - Minor - - src/hb-open-type.hh | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -commit b827181ba1f539c990e1bd8fdd3559f1589c8d28 -Author: rsheeter -Date: Wed May 8 13:51:11 2019 -0700 +Date: Wed Apr 24 10:07:19 2019 -0400 - [map] tweak test-iter.cc + [serialize] Add c->check_assign() + + To check for assignment overflows. - src/hb-map.hh | 1 - - src/test-iter.cc | 2 +- - 2 files changed, 1 insertion(+), 2 deletions(-) + src/hb-open-type.hh | 7 +++---- + src/hb-ot-layout-gsub-table.hh | 2 +- + src/hb-serialize.hh | 20 +++++++++++++------- + 3 files changed, 17 insertions(+), 12 deletions(-) -commit 492af0f1bf1d7198b474fda2faca451908af267f -Author: rsheeter -Date: Wed May 8 12:47:18 2019 -0700 +commit 00a00bc1f23c681d64fbd4df33582ec0165e337a +Author: Behdad Esfahbod +Date: Wed Apr 24 10:01:30 2019 -0400 - [map] add keys() + Fix two TODOs - src/hb-map.hh | 9 ++++++++- - src/test-iter.cc | 4 ++++ - 2 files changed, 12 insertions(+), 1 deletion(-) + src/hb-ot-layout-gsub-table.hh | 11 +++++------ + 1 file changed, 5 insertions(+), 6 deletions(-) -commit ba60512813caafc2006b26214e95bbfe1c0e460a -Author: rsheeter -Date: Wed May 8 12:09:10 2019 -0700 +commit 11ab889a8d743304c8ec17920e209a514f46739d +Author: Behdad Esfahbod +Date: Wed Apr 24 09:55:24 2019 -0400 - [map] add a test for iteration + Rename a few test programs - src/hb-map.hh | 2 +- - src/test-iter.cc | 4 ++++ - 2 files changed, 5 insertions(+), 1 deletion(-) + src/Makefile.am | 24 +++++++++++----------- + ...est-size-params.cc => test-gpos-size-params.cc} | 0 + ...substitute.cc => test-gsub-would-substitute.cc} | 0 + src/{test-name-table.cc => test-ot-name.cc} | 0 + 4 files changed, 12 insertions(+), 12 deletions(-) -commit 183b8094b577dcb7f40b7fcd64b60d405845897a -Author: rsheeter -Date: Wed May 8 11:40:31 2019 -0700 +commit 12017db0bfe62e7777e1ab6ba5b14729dcd4c351 +Author: Behdad Esfahbod +Date: Wed Apr 24 09:24:38 2019 -0400 - [map] add iteration + Move test code around - src/hb-map.hh | 11 +++++++++++ - 1 file changed, 11 insertions(+) + src/test-algs.cc | 8 ++++++++ + src/test-iter.cc | 9 --------- + 2 files changed, 8 insertions(+), 9 deletions(-) -commit df237d2fe78086ad16bdbd2cc60639ae9ce909d6 -Author: Ebrahim Byagowi -Date: Wed May 8 14:17:14 2019 -0700 +commit 27377a7e287dd39e3f7caad5c1e0691ae381ccf8 +Author: Behdad Esfahbod +Date: Wed Apr 24 09:22:14 2019 -0400 - [test] Add https://crbug.com/oss-fuzz/14641 testcase - - As 503748d fix + Rely on variadic parameter pack more - ...-testcase-minimized-hb-subset-fuzzer-5676773460672512 | Bin 0 -> 2172 bytes - 1 file changed, 0 insertions(+), 0 deletions(-) + src/hb-open-type.hh | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) -commit 02ae2591d930563cec8c3c63086afb0a3a12c4aa -Author: Michiharu Ariza -Date: Wed May 8 13:44:03 2019 -0700 +commit 3ad20c38ade76aca8aed024014977ecb5f2b636e +Author: Behdad Esfahbod +Date: Wed Apr 24 09:09:00 2019 -0400 - initialize return param subr_num in popSubrNum - - also snake_cased popSubrtNum and other surrounding function names + [serialize] Fix a few overflow TODO items - src/hb-cff-interp-cs-common.hh | 15 ++++++++------- - src/hb-subset-cff1.cc | 4 ++-- - src/hb-subset-cff2.cc | 4 ++-- - 3 files changed, 12 insertions(+), 11 deletions(-) + src/hb-open-type.hh | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) -commit 503748d8a80dd5db450c8c4dc109f2b97049d989 +commit 175bdad8bff5b0e9732ab1fb97617a9293680fd4 Author: Behdad Esfahbod -Date: Wed May 8 12:45:02 2019 -0700 +Date: Tue Apr 23 23:57:11 2019 -0400 - [name] Sanitize records for reals - - Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14641 + One more variadic parameter pack use - src/hb-ot-name-table.hh | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/hb-aat-layout-common.hh | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) -commit 5875d775e1253c0e14b900539c28c2de881da7aa +commit 441cca235477a5399af214c9ac85320d4de69f0b Author: Behdad Esfahbod -Date: Wed May 8 12:25:34 2019 -0700 +Date: Tue Apr 23 23:49:21 2019 -0400 - [iter] Rename hb_iter_t() to hb_iter_type<> and add hb_item_type<> + Use hb_forward() when forwarding parameter pack - src/hb-iter.hh | 18 ++++++++++-------- - 1 file changed, 10 insertions(+), 8 deletions(-) + src/hb-open-type.hh | 32 ++++++++++++++++---------------- + src/hb-serialize.hh | 3 ++- + 2 files changed, 18 insertions(+), 17 deletions(-) -commit bad16066392e4dbdd8490a4b1c70d1dcddcc8ec8 +commit 20f3134789f65b10f301c4635c9f80c2dda0fb97 Author: Behdad Esfahbod -Date: Wed May 8 12:11:52 2019 -0700 +Date: Tue Apr 23 12:58:52 2019 -0400 - [map] Make .has() optionally return value + Use variadic templates in OffsetTo<> and various ArrayOf<>s - src/hb-map.hh | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) + src/hb-open-type.hh | 145 ++++++++++++++++++---------------------------------- + 1 file changed, 49 insertions(+), 96 deletions(-) -commit 750d5af48e38627c3c84a2f3857a7ee602221e24 -Author: Behdad Esfahbod -Date: Wed May 8 12:01:55 2019 -0700 +commit aa6692cb0079bbe1e003f211a321e8fe6a18ea94 +Author: Nathan Willis +Date: Tue Apr 23 17:56:44 2019 +0100 - Make compiler happy with -Og + Usermanual: update Makefile SGML list. Again. - src/hb-cff-interp-cs-common.hh | 2 +- - src/hb-ot-cmap-table.hh | 6 +++--- - src/hb-ot-glyf-table.hh | 2 +- - src/hb-subset-glyf.cc | 4 ++-- - 4 files changed, 7 insertions(+), 7 deletions(-) + docs/Makefile.am | 1 + + 1 file changed, 1 insertion(+) -commit cdb61eb0431d426f7152f975e89ee3ba4431083f -Author: Behdad Esfahbod -Date: Wed May 8 11:00:18 2019 -0700 +commit 98c54cdef8b0615a95382bdba4ecd008789f8c9e +Author: Nathan Willis +Date: Tue Apr 23 17:48:42 2019 +0100 - [iter] Accept pointer in hb_iter() and hb_iter_t() + Usermanual: add chapter on object model. - src/hb-iter.hh | 4 ++-- - src/test-iter.cc | 3 +++ - 2 files changed, 5 insertions(+), 2 deletions(-) + docs/harfbuzz-docs.xml | 1 + + docs/usermanual-object-model.xml | 249 +++++++++++++++++++++++++++++++++++++++ + 2 files changed, 250 insertions(+) -commit c93eeba9b21cb8f8ba64ebaf284bf9c8a8544886 -Author: Behdad Esfahbod -Date: Wed May 8 10:56:09 2019 -0700 +commit 64ca2ffa4c88b961dcbd9d06be8ac7dd80ad8182 +Author: Ebrahim Byagowi +Date: Tue Apr 23 01:10:46 2019 -0700 - [iter] Accept pointer in hb_map() + Fix clang's -Wmain complain (#1678) - src/hb-iter.hh | 4 ++-- - src/test-iter.cc | 7 ++++++- - 2 files changed, 8 insertions(+), 3 deletions(-) + src/test-iter.cc | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) -commit 4c9e0c37a34e8355d752af39507b310f473bffa5 -Author: Behdad Esfahbod -Date: Wed May 8 10:40:39 2019 -0700 +commit 7c218351ab45c41e48147b2196393357f7b551d4 +Author: Ebrahim Byagowi +Date: Tue Apr 23 12:40:29 2019 +0430 - [serialize] LangSys subset->copy + .editorconfig, minor + + still doesn't work with vscode - src/hb-ot-layout-common.hh | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) + .editorconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 50dc3e7d9f4f290c7353313c5e5f888cb7c4846d +commit 25dd88efc6521b972babe1067c0de1b9d4f5dbe5 Author: Behdad Esfahbod -Date: Wed May 8 10:35:02 2019 -0700 +Date: Mon Apr 22 17:45:23 2019 -0400 - Add hb_iota() + Err, fix hb_invoke() variadic - src/hb-iter.hh | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ - src/test-iter.cc | 10 ++++++++++ - 2 files changed, 61 insertions(+) + src/hb-algs.hh | 6 +++--- + src/test-iter.cc | 5 ++++- + 2 files changed, 7 insertions(+), 4 deletions(-) -commit aa4ac13f0be34bba66b00d04fd7806c474ff59c0 +commit c862a532df0bc3ce0b47f3fde9bf1dd300ff8bee Author: Behdad Esfahbod -Date: Wed May 8 10:02:30 2019 -0700 +Date: Mon Apr 22 17:32:19 2019 -0400 - [iter] Actually fix previous commit - - The iter objects shouldn't not be const. D'oh. + Add variadic arguments to hb_invoke() - src/hb-iter.hh | 16 ++++++++-------- - 1 file changed, 8 insertions(+), 8 deletions(-) + src/hb-algs.hh | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) -commit a66598e0306fe80063c5d6a678bbca4a931bc4d4 +commit 9c724e48a2f5d61c31c79f0b4660f08e5d07db10 Author: Behdad Esfahbod -Date: Wed May 8 09:56:29 2019 -0700 +Date: Mon Apr 22 15:37:10 2019 -0400 - [iter] For ref-qualified variants + [serializer] Add err_propagaged_error() - src/hb-iter.hh | 14 ++++++++++---- - 1 file changed, 10 insertions(+), 4 deletions(-) + src/hb-serialize.hh | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) -commit fa576ce1874fd886688bf3f16b714d86aebb07ec -Author: rsheeter -Date: Wed May 8 09:53:58 2019 -0700 +commit ae8da4b61b4cc3b55242b85fe7c63393d65bd6cf +Author: Behdad Esfahbod +Date: Mon Apr 22 15:25:11 2019 -0400 - Update README.md + Minor - README.md | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) + src/hb-iter.hh | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) -commit d109c9e767ff3198d51e23a7ac8931d0bc4d5d72 -Author: rsheeter -Date: Wed May 8 09:53:29 2019 -0700 +commit 24da1d08603a7fe262ae88d687986efc0343956f +Author: Behdad Esfahbod +Date: Mon Apr 22 15:20:25 2019 -0400 - Update README.md + Use variadic template args for propagate_error() + + Let's see if bots happy. + + Not sure where else we can use these. Mm. Maybe in hb_invoke(). - README.md | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) + src/hb-serialize.hh | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) -commit 4063181791d6b3efb35e7c748dee12273e64ebd4 -Author: rsheeter -Date: Wed May 8 09:47:34 2019 -0700 +commit 9bab398462fa598047f34fd6d23e07a91305b1b3 +Author: Behdad Esfahbod +Date: Mon Apr 22 15:16:35 2019 -0400 - [docs] add fuzzer instructions (courtesy of Garret) + Simplify propagate_error() - TESTING.md | 10 ++++++++++ - 1 file changed, 10 insertions(+) + src/hb-serialize.hh | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) -commit 00946ca3aa45f109c455871ce89c5872fd243624 -Author: Roderick Sheeter -Date: Wed May 8 09:42:35 2019 -0700 +commit ecac94ca763e80d217ba5db429745e8882b38464 +Author: Behdad Esfahbod +Date: Sun Apr 21 12:27:32 2019 -0400 - [docs] add sample commands for test exec + [docs] Remove fdo repo + + Has not been updated. - README.md | 4 ++++ - TESTING.md | 47 +++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 51 insertions(+) + docs/harfbuzz-docs.xml | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) -commit 8479eb5955c93cbc8951d0319b2fe43ff19cc403 +commit 8ed7655be89c658219ab702e34a79734ba0efb73 Author: Behdad Esfahbod -Date: Wed May 8 09:48:55 2019 -0700 +Date: Sun Apr 21 12:25:19 2019 -0400 - [iter] Fix hb_sink() to accept rvalue + Update AUTHORS / COPYING - src/hb-iter.hh | 2 +- - src/test-iter.cc | 4 ++++ + AUTHORS | 3 +++ + COPYING | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) -commit 710d459acac88fd784d4ead0ba75b9aa623c48d4 -Author: Behdad Esfahbod -Date: Wed May 8 09:33:09 2019 -0700 +commit a464cbeecea73aeaa03c262f49fed8584057d9bb +Author: Ebrahim Byagowi +Date: Fri Apr 19 12:14:09 2019 -0700 - [iter] Default predicates to hb_identity instead of hb_bool + Revert "Add harfbuzzjs build configuration (#1636)" (#1675) - The bool conversion happens after predicate is called automatically. + This reverts commit 694cb1beeefe1c54b2e613d2d566a21e248a2c9c. - src/hb-iter.hh | 16 ++++++++-------- - 1 file changed, 8 insertions(+), 8 deletions(-) + CMakeLists.txt | 35 ----------------------------------- + 1 file changed, 35 deletions(-) -commit fe14a4000a58528878bcc75fde0972de2b779316 -Author: Behdad Esfahbod -Date: Wed May 8 09:32:19 2019 -0700 +commit 694cb1beeefe1c54b2e613d2d566a21e248a2c9c +Author: Ebrahim Byagowi +Date: Fri Apr 19 07:51:04 2019 -0700 - Adjust hb_all/any/none + Add harfbuzzjs build configuration (#1636) - src/hb-iter.hh | 18 +++++++++--------- - src/test-iter.cc | 10 ++++++---- - 2 files changed, 15 insertions(+), 13 deletions(-) + CMakeLists.txt | 35 +++++++++++++++++++++++++++++++++++ + 1 file changed, 35 insertions(+) -commit 4a101d8ffccd6f907f16ef190125ded5e27e0d8b +commit 42f4bd6b801f96fc33a365db8ab6390e74cef05a Author: Behdad Esfahbod -Date: Wed May 8 09:16:33 2019 -0700 +Date: Thu Apr 18 19:04:59 2019 -0400 - Add hb_match + Minor warning fix again - src/hb-algs.hh | 30 +++++++++++++++++++++++++++++- - 1 file changed, 29 insertions(+), 1 deletion(-) + src/hb-ot-map.cc | 20 ++++++++++---------- + test/api/test-ot-face.c | 2 +- + 2 files changed, 11 insertions(+), 11 deletions(-) -commit 26adefd9eaf4bc1d80b1ffececf0d86f3308f9ee -Author: Behdad Esfahbod -Date: Wed May 8 09:14:44 2019 -0700 +commit 267fb9c7163e61c9cdbafbb16005bc659ec5a4a2 +Author: Michiharu Ariza +Date: Thu Apr 18 15:17:10 2019 -0700 - [algs] Try f[v] in hb_get() as last resort + add spaces - src/hb-algs.hh | 10 ++++++++-- - 1 file changed, 8 insertions(+), 2 deletions(-) + src/hb-ot-cff1-table.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit 0601a19d38b2b0fc5dd36fd821af634a49322ebf -Author: Behdad Esfahbod -Date: Wed May 8 07:47:36 2019 -0700 +commit ba0386060d92dffcde2d14f9e523a46ea8713de2 +Author: Michiharu Ariza +Date: Thu Apr 18 14:53:35 2019 -0700 - Fix a few more double-pomotion errors + fix oss-fuzz issue 14345 - src/hb-coretext.cc | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) + src/hb-ot-cff1-table.hh | 3 ++- + ...testcase-minimized-hb-subset-fuzzer-5923632099885056 | Bin 0 -> 25847 bytes + 2 files changed, 2 insertions(+), 1 deletion(-) -commit 2ba984fcbbef4561d35c3a2c502610c38b26f4fb -Author: Behdad Esfahbod -Date: Tue May 7 23:28:22 2019 -0700 +commit 63a2108480cca2d9c1a2f61d6642d70496f1a5e3 +Author: Michiharu Ariza +Date: Thu Apr 18 13:54:58 2019 -0700 - Fix signed comparison on 32bit + silence MVC warnings 3rd attempt - src/hb-sanitize.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-cff1-table.cc | 5 +++-- + src/hb-ot-cff2-table.cc | 9 +++++---- + 2 files changed, 8 insertions(+), 6 deletions(-) -commit dfc57802450360f06026668b7b61495aaa2d1943 -Author: Behdad Esfahbod -Date: Tue May 7 23:26:09 2019 -0700 +commit 705dde57fe7bd5aafe93f284db2aa809aad932dc +Author: Michiharu Ariza +Date: Thu Apr 18 11:32:10 2019 -0700 - Fix more double-promotion errors - - WHy do only some of the clang bots catch this I have no idea :(. + silence MVC warnings 2nd attempt - src/hb-aat-layout-trak-table.hh | 4 ++-- - src/hb-font.hh | 2 +- - src/hb-open-type.hh | 4 ++-- - src/hb-ot-color-cbdt-table.hh | 12 ++++++------ - src/hb-ot-color-sbix-table.hh | 10 +++++----- - src/hb-ot-layout-gpos-table.hh | 20 ++++++++++---------- - 6 files changed, 26 insertions(+), 26 deletions(-) + src/hb-ot-cff1-table.cc | 4 ++-- + src/hb-ot-cff2-table.cc | 8 ++++---- + 2 files changed, 6 insertions(+), 6 deletions(-) -commit c2c9d204fa5c2189e369726276a1c0e92e09a9ce -Author: Behdad Esfahbod -Date: Tue May 7 23:13:38 2019 -0700 +commit dd4c37529bcecee33d43015a852a3fcf9e978b7f +Author: Michiharu Ariza +Date: Thu Apr 18 10:38:57 2019 -0700 - Fix double-promotion warnings - - Make it an error. + silence MVC warnings - src/hb-ot-var-fvar-table.hh | 12 ++++++------ - src/hb.hh | 1 + - 2 files changed, 7 insertions(+), 6 deletions(-) + src/hb-cff-interp-common.hh | 2 +- + src/hb-ot-cff1-table.cc | 4 ++-- + src/hb-ot-cff2-table.cc | 8 ++++---- + 3 files changed, 7 insertions(+), 7 deletions(-) -commit 2c7093ed01f417828d5521d983eae63042363197 +commit 518e6e07f29d9bb7e532313fb0af6177d8022ea5 Author: Behdad Esfahbod -Date: Tue May 7 23:10:59 2019 -0700 +Date: Thu Apr 18 12:21:25 2019 -0400 - More tests + Minor - src/test-algs.cc | 3 +++ - 1 file changed, 3 insertions(+) + src/hb-ot-map.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 56d2d0294b836ea1e2dea9e242ae72c99387d00a +commit 91d958acc08cb99ddd3b656922e13497b9d1595d Author: Behdad Esfahbod -Date: Tue May 7 23:08:49 2019 -0700 +Date: Thu Apr 18 10:04:10 2019 -0400 - [algs] Sprinkle hb_min/max with hb-forward salad + [array] Simplify copy assignment/constructor - Let's see if fixes MSVC fail. Though, the error doesn't make sense to me. + To fix bogus MSVC warnings: - hb-blob.cc - c:\projects\harfbuzz\src\hb-algs.hh(166): error C2440: 'return': cannot convert from 'unsigned int' to 'unsigned int &&' [C:\projects\harfbuzz\build\harfbuzz.vcxproj] - c:\projects\harfbuzz\src\hb-algs.hh(166): note: You cannot bind an lvalue to an rvalue reference - c:\projects\harfbuzz\src\hb-algs.hh(174): note: see reference to function template instantiation 'T &&::impl(T &&,T2) const' being compiled - with - [ - T=unsigned int, - T2=unsigned int & - ] + c:\projects\harfbuzz\src\hb-array.hh(189): warning C4521: 'hb_array_t': multiple copy constructors specified [C:\projects\harfbuzz\build\harfbuzz.vcxproj] + c:\projects\harfbuzz\src\hb-array.hh(189): warning C4522: 'hb_array_t': multiple assignment operators specified [C:\projects\harfbuzz\build\harfbuzz.vcxproj] - src/hb-algs.hh | 10 ++++++---- - 1 file changed, 6 insertions(+), 4 deletions(-) + src/hb-array.hh | 29 +++++++++++++++++++---------- + 1 file changed, 19 insertions(+), 10 deletions(-) -commit bdbfdc92b58d5c9f8654e430075dab543d1ba394 +commit 693d91cd49fda3e728b59e6885bea8d7b01958ef Author: Behdad Esfahbod -Date: Tue May 7 22:52:43 2019 -0700 +Date: Wed Apr 17 17:59:39 2019 -0400 - [iter] Add value and projection to hb_all/any/none - - Allows for eg, checking all values equal 2: hb_all (it, 2). + [serialize] Fix offset calculation - src/hb-iter.hh | 24 ++++++++++++++++++------ - src/test-iter.cc | 10 +++++++++- - 2 files changed, 27 insertions(+), 7 deletions(-) + src/hb-serialize.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit cf61acb9eaa2bb3fe479a9050116b4b96934e3ed +commit db0c9a1485ae6ca7ca9af38a43504f1ae4ea09c8 Author: Behdad Esfahbod -Date: Tue May 7 22:45:01 2019 -0700 +Date: Wed Apr 17 17:58:13 2019 -0400 - [iter] Accept rvalues to hb_enumerate() + [subset] Assert offsets are zero during relocation + + If they're not, it's a bug in our subsetting logic somewhere. So check. - src/hb-iter.hh | 2 +- - src/test-iter.cc | 2 ++ - 2 files changed, 3 insertions(+), 1 deletion(-) + src/hb-serialize.hh | 2 ++ + 1 file changed, 2 insertions(+) -commit e8bd5fc3fa2cc5c5f8f254629553902aed3496ba -Author: Behdad Esfahbod -Date: Tue May 7 22:29:40 2019 -0700 +commit aa3ac59245a9f90c6636fbf6d3489d2b7caa4fd3 +Author: Michiharu Ariza +Date: Wed Apr 17 12:43:53 2019 -0700 - [meta] Move hb_invoke from algs to meta + fix build - src/hb-algs.hh | 31 ------------------------------- - src/hb-meta.hh | 32 ++++++++++++++++++++++++++++++++ - 2 files changed, 32 insertions(+), 31 deletions(-) + src/hb-ot-var-hvar-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c87488b46d1f302e1ad313c365e2cd440e60141a +Merge: 49fe81fd c67a0d58 +Author: Michiharu Ariza +Date: Wed Apr 17 12:07:15 2019 -0700 + + Merge branch 'master' into var-subset + +commit 49fe81fdeb236e10c1b525b34edb4ec8aaeac35f +Author: Michiharu Ariza +Date: Wed Apr 17 11:48:12 2019 -0700 -commit af571dbffc12e6bb7a3146762d12bb4ac3f19bdc + updated api test results for HVAR/VVAR subset changes + + test/api/fonts/AdobeVFPrototype.abc.otf | Bin 6952 -> 6900 bytes + test/api/fonts/AdobeVFPrototype.ac.nohints.otf | Bin 6272 -> 6220 bytes + .../api/fonts/AdobeVFPrototype.ac.nosubrs.nohints.otf | Bin 6152 -> 6100 bytes + test/api/fonts/AdobeVFPrototype.ac.nosubrs.otf | Bin 6336 -> 6284 bytes + test/api/fonts/AdobeVFPrototype.ac.otf | Bin 6460 -> 6408 bytes + test/api/fonts/AdobeVFPrototype.ac.retaingids.otf | Bin 6464 -> 6416 bytes + .../fonts/SourceSansVariable-Roman.ac.retaingids.ttf | Bin 3040 -> 2616 bytes + .../SourceSerifVariable-Roman-VVAR.ac.retaingids.ttf | Bin 5288 -> 5296 bytes + 8 files changed, 0 insertions(+), 0 deletions(-) + +commit efbba7ad26dda5930f5d1bd5292304835432f504 Author: Behdad Esfahbod -Date: Tue May 7 21:39:20 2019 -0700 +Date: Wed Apr 17 11:00:08 2019 -0400 - [meta] Replace most hb_enable_if with hb_requires + [serializer] Add copy() - They do absolutely same thing. hb_requires is to encode constraints, - whereas hb_enable_if is for more conditional enabling. + Calls obj.copy() or obj.operator=() in that order. - src/hb-iter.hh | 63 +++++++++++++++++++++------------------------- - src/hb-open-type.hh | 6 ++--- - src/hb-ot-layout-common.hh | 6 ++--- - src/test-iter.cc | 6 ++--- - 4 files changed, 37 insertions(+), 44 deletions(-) + src/hb-serialize.hh | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) -commit 6fa1f38070e710b2f80a836bd633b6ab33e1bc80 +commit c67a0d581fcc50df5563c23060b4fcd9dac4c87c Author: Behdad Esfahbod -Date: Tue May 7 21:33:26 2019 -0700 +Date: Wed Apr 17 10:20:02 2019 -0400 - [algs] Accept varargs in hb_min/max + Add HB_RETURN - src/hb-algs.hh | 24 +++++++++++++++++++++--- - src/test-algs.cc | 8 ++++++++ - 2 files changed, 29 insertions(+), 3 deletions(-) + src/hb-algs.hh | 13 ++++++------- + src/hb-meta.hh | 34 ++++++++++++++++++++-------------- + 2 files changed, 26 insertions(+), 21 deletions(-) -commit 1ad07080c3ea7f6a1b3cb247529ec0c78575a6d3 -Author: Behdad Esfahbod -Date: Tue May 7 21:00:23 2019 -0700 +commit 6745a600bfec13b3f5468b3d31bab7d82b1e61ce +Author: David Corbett +Date: Tue Apr 16 17:29:34 2019 -0400 - Rename + Comment out ot_languages where fallback suffices - src/hb-algs.hh | 24 ++++++++++++------------ - 1 file changed, 12 insertions(+), 12 deletions(-) + src/gen-tag-table.py | 15 +- + src/hb-ot-tag-table.hh | 443 +++++++++++++++++++++++++------------------------ + src/hb-ot-tag.cc | 19 ++- + test/api/test-ot-tag.c | 5 +- + 4 files changed, 255 insertions(+), 227 deletions(-) -commit 83e3eabd84e2b53c696768d1357a6a259bcd3576 -Author: Behdad Esfahbod -Date: Tue May 7 20:58:43 2019 -0700 +commit 5daeff3e68e4e202effb152f52702a044c09f386 +Author: David Corbett +Date: Wed Apr 17 09:11:44 2019 -0400 - Whitespace + Fix "hb_script_" doc typo - src/hb-aat-layout-common.hh | 2 +- - src/hb-aat-layout-kerx-table.hh | 2 +- - src/hb-aat-layout-morx-table.hh | 2 +- - src/hb-algs.hh | 6 +++--- - src/hb-dispatch.hh | 2 +- - src/hb-open-type.hh | 18 +++++++++--------- - src/hb-ot-kern-table.hh | 4 ++-- - src/hb-ot-layout-common.hh | 2 +- - src/hb-ot-layout-gpos-table.hh | 16 ++++++++-------- - src/hb-ot-layout-gsub-table.hh | 14 +++++++------- - src/hb-ot-layout-gsubgpos.hh | 8 ++++---- - src/hb-sanitize.hh | 6 +++--- - src/hb-serialize.hh | 12 ++++++------ - src/hb-subset.hh | 6 +++--- - 14 files changed, 50 insertions(+), 50 deletions(-) + src/hb-common.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 2b9402a86a4e37e6386f8028bdf3789ae262a4c4 +commit 6916b77863cd5ce492a274eb85f196f2152fbb96 Author: Behdad Esfahbod -Date: Tue May 7 20:55:33 2019 -0700 +Date: Tue Apr 16 18:33:51 2019 -0400 - Use universal references in hb_min/max + One more auto return type - src/hb-algs.hh | 4 ++-- + src/hb-iter.hh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -commit 41248cce0e32653227a83eb4e42ccf793f040fc2 +commit 5b33427f2c4d596a12f05ffebebfd68655fd63eb Author: Behdad Esfahbod -Date: Tue May 7 20:54:31 2019 -0700 +Date: Tue Apr 16 18:28:17 2019 -0400 - Remove MIN/MAX in favor of hb_min/hb_max + Rename HB_AUTO_RETURN_EXPR to HB_AUTO_RETURN - src/hb-aat-layout-common.hh | 8 ++++---- - src/hb-aat-layout-feat-table.hh | 2 +- - src/hb-aat-layout-kerx-table.hh | 2 +- - src/hb-aat-layout-morx-table.hh | 18 +++++++++--------- - src/hb-algs.hh | 14 +++++--------- - src/hb-array.hh | 4 ++-- - src/hb-blob.cc | 2 +- - src/hb-buffer-serialize.cc | 32 ++++++++++++++++---------------- - src/hb-buffer.cc | 4 ++-- - src/hb-buffer.hh | 2 +- - src/hb-common.cc | 20 ++++++++++---------- - src/hb-coretext.cc | 6 +++--- - src/hb-debug.hh | 2 +- - src/hb-directwrite.cc | 2 +- - src/hb-ft.cc | 2 +- - src/hb-iter.hh | 2 +- - src/hb-open-file.hh | 2 +- - src/hb-open-type.hh | 2 +- - src/hb-ot-cmap-table.hh | 8 ++++---- - src/hb-ot-color-cbdt-table.hh | 6 +++--- - src/hb-ot-color-cpal-table.hh | 2 +- - src/hb-ot-color-sbix-table.hh | 2 +- - src/hb-ot-glyf-table.hh | 14 +++++++------- - src/hb-ot-hmtx-table.hh | 2 +- - src/hb-ot-layout-gpos-table.hh | 2 +- - src/hb-ot-layout-gsub-table.hh | 4 ++-- - src/hb-ot-layout-gsubgpos.hh | 6 +++--- - src/hb-ot-layout.cc | 2 +- - src/hb-ot-map.cc | 8 ++++---- - src/hb-ot-post-table.hh | 2 +- - src/hb-ot-shape-complex-indic.cc | 8 ++++---- - src/hb-ot-shape-complex-use.cc | 2 +- - src/hb-ot-shape.cc | 4 ++-- - src/hb-ot-tag.cc | 2 +- - src/hb-ot-var-avar-table.hh | 2 +- - src/hb-ot-var-fvar-table.hh | 18 +++++++++--------- - src/hb-sanitize.hh | 4 ++-- - src/hb-uniscribe.cc | 2 +- - 38 files changed, 111 insertions(+), 115 deletions(-) + src/hb-algs.hh | 34 +++++++++++++++++----------------- + src/hb-meta.hh | 8 ++++---- + 2 files changed, 21 insertions(+), 21 deletions(-) -commit 5c0f62adc969696b46c1ceb57cd3c2fa408eb94f +commit da293b0e59a0d6c47e9b3a7807115a168a0a5c94 Author: Behdad Esfahbod -Date: Tue May 7 17:23:46 2019 -0700 +Date: Tue Apr 16 18:27:25 2019 -0400 - [serializer] Accept pointer & reference in more methods + Use HB_AUTO_RETURN_EXPR in hb_min/max - src/hb-serialize.hh | 39 ++++++++++++++++++++++++--------------- - 1 file changed, 24 insertions(+), 15 deletions(-) + src/hb-algs.hh | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) -commit 839618de3b3da285e8753b6ca6d767e9a483bfde +commit 0241a40f2aff43aba045fb7de4a2c3e5f1e9626a Author: Behdad Esfahbod -Date: Tue May 7 17:21:27 2019 -0700 +Date: Tue Apr 16 18:26:30 2019 -0400 - [serializer] Minor + Use auto return type for hb_first/hb_second - src/hb-serialize.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-algs.hh | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) -commit 035b818e34bbd2d5c1f65328c9847c845d74d919 +commit fe30fcd228ff95be1f169f580b30184c8511d1c3 Author: Behdad Esfahbod -Date: Tue May 7 17:21:18 2019 -0700 +Date: Tue Apr 16 17:34:06 2019 -0400 - [meta] Fix addressof() + Use hb_deref_pointer() to reduce number of overloads - src/hb-meta.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-algs.hh | 27 ++++++++++----------------- + src/hb-meta.hh | 36 +++++++++++++++++++----------------- + 2 files changed, 29 insertions(+), 34 deletions(-) -commit 7654ebe3a51c98b4d3bf6fb11779024f1c770962 +commit c918a6706fa759696569ad6dcaae03fed76306bc Author: Behdad Esfahbod -Date: Tue May 7 16:53:03 2019 -0700 +Date: Tue Apr 16 17:28:18 2019 -0400 - Whitespace + Properly prioritize hb_hash() - src/hb-algs.hh | 30 ++++++++++++++++++++---------- - src/hb-iter.hh | 39 ++++++++++++++++++++++++++------------- - src/hb-meta.hh | 11 ++++++----- - 3 files changed, 52 insertions(+), 28 deletions(-) + src/hb-algs.hh | 46 +++++++++++++++++++++++----------------------- + 1 file changed, 23 insertions(+), 23 deletions(-) -commit 95426ea983bde01fadf4681926cb77e3b3c0d40a +commit 75fd845a4abccc2596f0e1fe2294f936199e61f3 Author: Behdad Esfahbod -Date: Tue May 7 15:56:51 2019 -0700 +Date: Tue Apr 16 17:22:29 2019 -0400 - Add comment + Move around - src/hb-open-type.hh | 1 + - 1 file changed, 1 insertion(+) + src/hb-algs.hh | 25 ++++++++++++------------- + 1 file changed, 12 insertions(+), 13 deletions(-) -commit e33ad252222481a6078a8bb423505e713b081313 +commit 973717175d46d62471772318bb0b607070c53ec7 Author: Behdad Esfahbod -Date: Tue May 7 15:46:24 2019 -0700 +Date: Tue Apr 16 16:50:07 2019 -0400 - [serialize] FeatureVariations subset->copy + Fix priorities - src/hb-ot-layout-common.hh | 6 +++--- - src/hb-ot-layout-gsubgpos.hh | 2 +- - 2 files changed, 4 insertions(+), 4 deletions(-) + src/hb-algs.hh | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) -commit fa8c4ba81175f671c3f39f1586d0a1d9067d9f89 +commit 54ece299bcb3436763cc4f3b6b0ca11de8133b28 Author: Behdad Esfahbod -Date: Tue May 7 14:26:03 2019 -0700 +Date: Tue Apr 16 16:45:53 2019 -0400 - Minor + Use type aliasing for meta-functions, ie. those returning a type - src/hb-serialize.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-algs.hh | 3 ++- + src/hb-array.hh | 6 +++--- + src/hb-atomic.hh | 2 +- + src/hb-blob.hh | 2 +- + src/hb-common.cc | 2 +- + src/hb-ft.cc | 2 +- + src/hb-iter.hh | 2 +- + src/hb-meta.hh | 12 ++++++------ + src/hb-null.hh | 6 +++--- + 9 files changed, 19 insertions(+), 18 deletions(-) -commit c09d6c58e99dba50f29a569e4c53916b5b507ef1 -Author: Behdad Esfahbod -Date: Tue May 7 14:09:00 2019 -0700 +commit 6cde814a360eaeab6755685cf7980887af3225d1 +Merge: 007bb3e0 1ce11b44 +Author: Michiharu Ariza +Date: Tue Apr 16 11:35:07 2019 -0700 - [iter] Require lvalue in operators that return reference + Merge branch 'master' into var-subset - src/hb-iter.hh | 16 ++++++++-------- - 1 file changed, 8 insertions(+), 8 deletions(-) +commit 007bb3e0d1478912f8006f4c440866b4628cc28f +Author: Michiharu Ariza +Date: Tue Apr 16 10:33:51 2019 -0700 -commit 52f6c04c1e0eab2aaa0c7d817b212c01ba993fe9 + retain-gids in HVAR/VVAR (unused deltas retained) + + src/hb-ot-var-hvar-table.hh | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +commit 1ce11b44375dae74e8984ace1db4f08c51ac9c38 +Author: David Corbett +Date: Tue Apr 16 10:04:45 2019 -0400 + + Reduce LangTag from 3 language system tags to 1 + + src/gen-tag-table.py | 13 +- + src/hb-ot-tag-table.hh | 2078 ++++++++++++++++++++++++------------------------ + src/hb-ot-tag.cc | 22 +- + 3 files changed, 1053 insertions(+), 1060 deletions(-) + +commit 155e92f25908830bef192304a2039853f6f5d4b5 Author: Behdad Esfahbod -Date: Tue May 7 13:45:48 2019 -0700 +Date: Tue Apr 16 11:35:09 2019 -0400 - Minor + Reduce NullPool size - src/hb-serialize.hh | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) + src/hb-null.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 7c037bd2be2e794dfd882b806f684ad74c56dbb8 +commit 4fc2d2d7248171c386c39630aa2612f240669a58 Author: Behdad Esfahbod -Date: Tue May 7 13:37:43 2019 -0700 +Date: Tue Apr 16 11:24:42 2019 -0400 - [name] Clean up some more + [meta] Flesh out hb_invoke() - src/hb-meta.hh | 2 ++ - src/hb-ot-name-table.hh | 30 ++++++++++++++---------------- - 2 files changed, 16 insertions(+), 16 deletions(-) + src/hb-algs.hh | 14 ++++++++++++-- + 1 file changed, 12 insertions(+), 2 deletions(-) + +commit e03d9395aa79a29d731607bfd46533b700dc1a37 +Author: Behdad Esfahbod +Date: Tue Apr 16 11:20:16 2019 -0400 + + Comment -commit f982b9d9f8d6b61efd2a3e89cc3d34923c1914b0 + src/hb-algs.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b8e763fd7140b3e298863e04053ec0f3c73a6a70 Author: Behdad Esfahbod -Date: Tue May 7 13:29:01 2019 -0700 +Date: Tue Apr 16 10:50:22 2019 -0400 - [name] Clean up serialize() API + [meta] Add hb_invoke() - src/hb-ot-name-table.hh | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) + src/hb-algs.hh | 34 ++++++++++++++++++++++++++++++++-- + src/hb-iter.hh | 2 +- + 2 files changed, 33 insertions(+), 3 deletions(-) -commit 59ee61fddc76cd18f19f351bca7dd293eb610333 +commit a3fcb9a370ad7a3c205342f831d8529c81660466 Author: Behdad Esfahbod -Date: Tue May 7 13:26:15 2019 -0700 +Date: Tue Apr 16 10:45:20 2019 -0400 - [name] Use iterators more + [meta] Add HB_AUTO_RETURN_EXPR, HB_VOID_RETURN_EXPR, hb_priority, hb_has(), hb_get() + + The first three based on range-v3. - src/hb-ot-name-table.hh | 46 +++++++++++++++------------------------------- - src/hb-subset-plan.cc | 3 +++ - 2 files changed, 18 insertions(+), 31 deletions(-) + src/hb-algs.hh | 46 ++++++++++++++++++++++++++++++++++++++++++++++ + src/hb-iter.hh | 7 ++++--- + src/hb-meta.hh | 32 +++++++++++++++----------------- + src/hb.hh | 2 +- + 4 files changed, 66 insertions(+), 21 deletions(-) -commit 2eb7e0e0e923d096d2598133cacd6e5ee04a6a04 +commit ff68be31bf2ea82bf6bfcc6f993fb6806a895f97 Author: Behdad Esfahbod -Date: Tue May 7 12:45:38 2019 -0700 +Date: Tue Apr 16 09:59:08 2019 -0400 - [serialize] Minor + Add hb_void_tt<> ala std::void_t - src/hb-serialize.hh | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) + src/hb-meta.hh | 7 +++++++ + 1 file changed, 7 insertions(+) -commit 1c81cff2d3f9df2c18ffbdfff02ed418560480c1 -Author: Behdad Esfahbod -Date: Tue May 7 11:51:10 2019 -0700 +commit eb348fc5c00df2330f98ea769699ce586f97e1d6 +Author: Michiharu Ariza +Date: Mon Apr 15 16:24:22 2019 -0700 - Fix signed-comparison error on 32bit + optimize out regions & region index lists & short count - src/hb-serialize.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-layout-common.hh | 107 +++++++++++++++++++++++++++++++++------------ + 1 file changed, 80 insertions(+), 27 deletions(-) -commit 938de315756e08bd2b5fa816c7951640e5835b2e +commit 89fea21697adfbba5057dd1d69c9806ee86e5ca8 Author: Behdad Esfahbod -Date: Tue May 7 11:47:02 2019 -0700 +Date: Mon Apr 15 17:36:09 2019 -0400 - Comment + Fix copyright - src/hb-subset-glyf.cc | 2 +- + src/hb-iter.hh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 159fe962e90dd3b758ad10046b9d75cf87c1d4f3 +commit b7384c89e2685cec1b6761c918ec7d91e8ae3af8 Author: Behdad Esfahbod -Date: Tue May 7 11:46:11 2019 -0700 +Date: Mon Apr 15 16:53:10 2019 -0400 - [doc] Make header search more resilient - - How stupid to scan all files... Sigh. + [fuzzing] Run valgrind with --leak-check=full - docs/Makefile.am | 2 +- + test/fuzzing/run-shape-fuzzer-tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 9b05db33b54e6e5f0b4658f4c06e7fe563f8923b +commit 3ff66c00292b20325b0d991dfd5eee80284cb9a8 Author: Behdad Esfahbod -Date: Tue May 7 11:39:44 2019 -0700 +Date: Mon Apr 15 16:52:21 2019 -0400 - [ragel] Regenerate ragel-generated files using ragel 7.0.0.11 May 2018 + [fuzzing] Fail if valgrind is requested but not found - src/hb-buffer-deserialize-json.hh | 1051 +++++------ - src/hb-buffer-deserialize-text.hh | 1009 +++++------ - src/hb-ot-shape-complex-indic-machine.hh | 2678 ++++++++++++++++------------ - src/hb-ot-shape-complex-khmer-machine.hh | 709 ++++---- - src/hb-ot-shape-complex-myanmar-machine.hh | 820 +++++---- - src/hb-ot-shape-complex-use-machine.hh | 1144 ++++++------ - 6 files changed, 3959 insertions(+), 3452 deletions(-) + test/fuzzing/run-shape-fuzzer-tests.py | 3 +++ + 1 file changed, 3 insertions(+) -commit 521262b236dacf7b2b64e0a1d3c79d6a10b07063 +commit 07776b60965d503dfb7fb5c611397e40759b0bdc Author: Behdad Esfahbod -Date: Tue May 7 11:08:08 2019 -0700 +Date: Mon Apr 15 16:43:34 2019 -0400 - [subset] Add TODO + More tweaks to previous commit + + Delete assignment operator of OffsetTo<> instead of Offset<>. + + In simple ArrayOf<>::sanitize() assert that Type has assignment operator. + Ideally we should SFINAE this and fallback to calling Type::sanitize() + if assignment operator is not available. But we don't have a case of + that in the codebase. - src/hb-subset.cc | 2 ++ - 1 file changed, 2 insertions(+) + src/hb-open-file.hh | 4 ++-- + src/hb-open-type.hh | 16 +++++++++++----- + 2 files changed, 13 insertions(+), 7 deletions(-) -commit e6a622b5b202533d64f83e71d7ff8a8104d46e26 +commit 699de689e9aa2246ba9207c07140ccd564f5ec20 Author: Behdad Esfahbod -Date: Tue May 7 11:06:43 2019 -0700 +Date: Mon Apr 15 16:00:20 2019 -0400 - [serialize] Enable bias assertion + Delete default assignment operator Offset<> - src/hb-serialize.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-open-type.hh | 3 +++ + src/hb-ot-cmap-table.hh | 2 +- + src/hb-ot-layout-common.hh | 14 +++++++------- + 3 files changed, 11 insertions(+), 8 deletions(-) -commit 530ddbbc320bd24b4902ee6d49bf80242a591794 +commit 02d864aa26359b7f057e2aa81404309e17180d47 Author: Behdad Esfahbod -Date: Tue May 7 11:05:51 2019 -0700 +Date: Mon Apr 15 15:39:03 2019 -0400 - [serialize] Use range-based loop + Add HB_FUNCOBJ() + + Fixes https://github.com/harfbuzz/harfbuzz/issues/1651 - src/hb-serialize.hh | 15 ++++++--------- - 1 file changed, 6 insertions(+), 9 deletions(-) + src/hb-algs.hh | 28 +++++++++++++++------------- + src/hb-iter.hh | 56 ++++++++++++++++++++++++++++---------------------------- + src/hb-meta.hh | 22 +++++++++++++--------- + src/hb.hh | 7 +++++++ + 4 files changed, 63 insertions(+), 50 deletions(-) -commit 0987c4204fae66f80224c6f01d9c5dc3abe809e0 -Author: Behdad Esfahbod -Date: Tue May 7 11:01:02 2019 -0700 +commit 60be1450ad04612a6c2a6116036dbf3e436018de +Author: Nathan Willis +Date: Mon Apr 15 18:05:14 2019 +0100 - [name] Remove dead code + [Usermanual]: fix Tamil error in Why-do-I-need-a-shaping-engine section. - src/hb-ot-name-table.hh | 88 +------------------------------------------------ - 1 file changed, 1 insertion(+), 87 deletions(-) + docs/usermanual-what-is-harfbuzz.xml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit 5ac4ab686809be9352e91bc3213e1edf3ba66a93 +commit 38b1d0b9b2e798dd808a816a397323ed7ba697ab Author: Behdad Esfahbod -Date: Thu May 2 16:29:07 2019 -0700 +Date: Mon Apr 15 12:44:31 2019 -0400 - [subset] fix for name table serializing with new serializer machinery + Move static const to post-struct for a function object + + Just sending this to bots to see if all happy, then turn it into macro and + apply everywhere. + + Part of https://github.com/harfbuzz/harfbuzz/issues/1651 - src/hb-ot-name-table.hh | 8 ++++++-- - test/api/fonts/nameID.expected.ttf | Bin 170696 -> 2388 bytes - 2 files changed, 6 insertions(+), 2 deletions(-) + src/hb-algs.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit c548fcedc404c03442c042059a71194d97d23bb6 +commit 19e800c9d881ec016ab2e5fcaadab55ab5188398 Author: Behdad Esfahbod -Date: Thu May 2 16:29:07 2019 -0700 +Date: Mon Apr 15 12:07:00 2019 -0400 - [WIP] [name] Port to fancy serializer machinery + Ugh. Another try, to unbreak gcc this time! + + Jenga. - src/hb-ot-name-table.hh | 18 +++++++++++------- - 1 file changed, 11 insertions(+), 7 deletions(-) + src/hb-subset.cc | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) -commit fa2d97161f8b7de3d7a70e06d41b6f7e154012ad +commit 3a88f55c15b625a0ad10fbfadf4562bcbb41ae53 Author: Behdad Esfahbod -Date: Tue May 7 00:34:50 2019 -0700 +Date: Mon Apr 15 11:59:57 2019 -0400 - Remove use of deprecated implicit copy/move assignment operators - - By removing custom copy constructor. + Move location of HB_UNUSED to make MSVC happy - src/hb-meta.hh | 2 -- - 1 file changed, 2 deletions(-) + src/hb-subset.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit 45f5e56236912359d0ac72310dcdba9259cfee66 +commit 1ae265888e144328dbf1df796d379bf742c4151a Author: Behdad Esfahbod -Date: Tue May 7 00:33:32 2019 -0700 +Date: Mon Apr 15 11:31:40 2019 -0400 - Warn on -Wdeprecated + Fix gcc warning - src/hb.hh | 1 + - 1 file changed, 1 insertion(+) + src/hb-array.hh | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) -commit c3e0eafc80481f8c16516fdae1841c563e7253d4 +commit c0ea37b557f53b50094042f11fe2611b1b30d725 Author: Ebrahim Byagowi -Date: Tue May 7 12:04:00 2019 +0430 +Date: Mon Apr 15 00:34:04 2019 +0430 - [ci] Upgrade Ubuntu 17.10 bots to 19.04 + [ci] Fix macOS glib issue .circleci/config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -commit 8903040fcd09e7d7ad5112ac2a583718bb85795d +commit ad126036643e44a98c4c42d2a2a4a3b4a3649937 +Merge: 341b70a3 47e538a3 +Author: Nathan Willis +Date: Sun Apr 14 15:42:42 2019 +0100 + + Merge branch 'master' of https://github.com/harfbuzz/harfbuzz + +commit cd9889cac3ac3b271f7335f3e94acc4667a59b40 +Author: Nathan Willis +Date: Sun Apr 14 15:33:56 2019 +0100 + + Docs: update and extended GTK-Doc comments for hb-ot-math. + + src/hb-ot-math.cc | 133 ++++++++++++++++++++++++++++++++---------------------- + src/hb-ot-math.h | 21 +++++++++ + 2 files changed, 99 insertions(+), 55 deletions(-) + +commit 3f74b7a14bffb8e91cd98edd0c3ddf0b0ddc169a +Author: Nathan Willis +Date: Sun Apr 14 15:20:56 2019 +0100 + + Docs: Regularize GTK-Doc comments for hb-ot-color. + + src/hb-ot-color.cc | 136 ++++++++++++++++++++++++++++++----------------------- + src/hb-ot-color.h | 6 +-- + 2 files changed, 80 insertions(+), 62 deletions(-) + +commit 47e538a35f9072e5775a65e2bf110ae895818321 Author: Behdad Esfahbod -Date: Tue May 7 00:13:11 2019 -0700 +Date: Fri Apr 12 22:50:22 2019 -0400 - Actually make it work + Add HB_NO_SUBSET_LAYOUT + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 - src/hb-iter.hh | 2 ++ - src/hb-meta.hh | 6 ++++-- - 2 files changed, 6 insertions(+), 2 deletions(-) + src/hb-subset.cc | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) -commit 025eaa3c81214cdb20f2f588bab665512d21507c +commit a98e4068e76d50bd9562d85a452b56e681f1d62b Author: Behdad Esfahbod -Date: Tue May 7 00:05:37 2019 -0700 +Date: Fri Apr 12 22:42:44 2019 -0400 - [iter] Make filter/map copyable + Revert "Hide symbols in hb-iter" + + This reverts commit 98f14c4cdb837a962083a6702f401d41b4c1ec5c. + + Same as previous commit. - src/hb-iter.hh | 18 +++++++++--------- - src/test-iter.cc | 4 ++-- - 2 files changed, 11 insertions(+), 11 deletions(-) + src/hb-iter.hh | 88 +++++++++++++++++++++++++++++----------------------------- + 1 file changed, 44 insertions(+), 44 deletions(-) -commit 03a68165d8296ed5cc0eb2434500381419409e79 +commit dab92bdd4623aa7dac8eb00b14131566d75d095e Author: Behdad Esfahbod -Date: Tue May 7 00:03:35 2019 -0700 +Date: Fri Apr 12 22:39:38 2019 -0400 - [meta] Add hb_reference_wrapper<> + Revert "Hide more symbols" + + This reverts commit 2e86d50915cf1a791da9acb95245aa820a3d70f4. - Functionality kinda superset of std:: counterpart. + I think the setup that caused me to do this is faulty and not hiding inlines. - src/hb-meta.hh | 21 +++++++++++++++++++++ - 1 file changed, 21 insertions(+) + src/hb-blob.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 0bf86d9c5dcb0de206b38c3cf1824d2254376f37 +commit 98f14c4cdb837a962083a6702f401d41b4c1ec5c Author: Behdad Esfahbod -Date: Mon May 6 23:39:26 2019 -0700 +Date: Fri Apr 12 18:11:18 2019 -0400 - Whitespace + Hide symbols in hb-iter + + Painful. All template methods need to be explicitly hidden :(. + + Maybe we should switch to -fvisibility=hidden pragma. + + A LOT more to go. - src/hb-meta.hh | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/hb-iter.hh | 88 +++++++++++++++++++++++++++++----------------------------- + 1 file changed, 44 insertions(+), 44 deletions(-) -commit 72eb91deb9eb7a08e38e100a3234518651fe4cb8 +commit 2e86d50915cf1a791da9acb95245aa820a3d70f4 Author: Behdad Esfahbod -Date: Mon May 6 23:39:13 2019 -0700 +Date: Fri Apr 12 18:07:42 2019 -0400 - Add hb_ref() + Hide more symbols - Unused. + Exposed by: + + $ make -j5 CPPFLAGS="-O0" CXXFLAGS=-flto=thin LDFLAGS=-lc++ && ./check-symbols.sh - src/hb-meta.hh | 10 ++++++++++ - 1 file changed, 10 insertions(+) + src/hb-blob.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 240f57e58d3b0161feb90621d5db9e2fc4d99b27 +commit caa20e4ef9dff61a86312daec5d5a1df27d95ff7 Author: Behdad Esfahbod -Date: Mon May 6 23:17:39 2019 -0700 +Date: Fri Apr 12 17:59:18 2019 -0400 - Rename hb_deref_pointer() to hb_deref() + Hide a few more symbols + + Exposed by: + + $ make CPPFLAGS=-O0 - src/hb-algs.hh | 12 ++++++------ - src/hb-map.hh | 2 +- - src/hb-meta.hh | 2 +- - src/hb-serialize.hh | 2 +- - 4 files changed, 9 insertions(+), 9 deletions(-) + src/hb-array.hh | 4 ++-- + src/hb-meta.hh | 6 +++--- + 2 files changed, 5 insertions(+), 5 deletions(-) -commit 0b1ca5a13b6921cb4d00f8651bb99fc7c7037ec2 +commit 95df00aec1996d521acdff6deff063ba98214fb9 Author: Behdad Esfahbod -Date: Mon May 6 23:04:32 2019 -0700 +Date: Fri Apr 12 17:50:03 2019 -0400 - [iter] Adjust hb_filter + Hide a few static methods + + Looks like static methods that do not get inlined end up exported. + We have a lot more. Need to protect all at some point. Wish there + was an easier way, like the visibility flag we pass that automatically + hides all inline methods. + + Was exposed by check-symbols.sh when compiling on OS X 10.14 with: + + $ make CPPFLAGS=-Oz CXXFLAGS=-flto=thin LDFLAGS=-lc++ - src/hb-iter.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-aat-layout.hh | 2 +- + src/hb-aat-map.hh | 2 +- + src/hb-array.hh | 2 +- + src/hb-coretext.cc | 4 ++-- + src/hb-open-file.hh | 2 +- + src/hb-open-type.hh | 3 ++- + src/hb-ot-cmap-table.hh | 14 +++++++------- + src/hb-ot-layout-base-table.hh | 6 +++--- + src/hb-ot-layout-gpos-table.hh | 8 ++++---- + src/hb-ot-layout-gsub-table.hh | 8 ++++---- + src/hb-ot-layout-gsubgpos.hh | 2 +- + src/hb-ot-map.hh | 4 ++-- + src/hb-uniscribe.cc | 4 ++-- + 13 files changed, 31 insertions(+), 30 deletions(-) -commit 4c2fd05ca5fa34303b986c34948b512d770ab8fe +commit 2f4be4ba54b539fbadc31fc53bdcfca81d7db77a Author: Behdad Esfahbod -Date: Mon May 6 19:57:15 2019 -0700 +Date: Fri Apr 12 16:21:58 2019 -0400 - [iter] Implement range-based for loops + Add HB_NO_OPTIONS - Part of https://github.com/harfbuzz/harfbuzz/issues/1648 + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 - src/hb-array.hh | 6 ++++ - src/hb-iter.hh | 74 ++++++++++++++++++++++++++++++++++++++++++++-- - src/hb-ot-layout-common.hh | 14 +++++++++ - src/hb-set.hh | 3 ++ - src/test-iter.cc | 28 ++++++++++++++---- - 5 files changed, 118 insertions(+), 7 deletions(-) + src/hb-debug.hh | 3 +++ + 1 file changed, 3 insertions(+) -commit e261dc3a4043230ae1b4f56e2cc7d3133b7da4ca -Author: Ebrahim Byagowi -Date: Tue May 7 01:24:55 2019 +0430 +commit 3e524bf77280e5f3cd0c4d7429d2a6a5ec49268d +Author: Michiharu Ariza +Date: Fri Apr 12 12:48:48 2019 -0700 - Ignore -Wc++11-compat as we require C++11 actually + fix VarData serialize to remove unused data sets - pollutes gcc bots logs https://circleci.com/gh/harfbuzz/harfbuzz/85395 + add api test case for that - src/hb.hh | 1 + - 1 file changed, 1 insertion(+) + src/hb-ot-layout-common.hh | 14 ++++++++++---- + .../fonts/SourceSansVariable-Roman-modHVAR.abc.ttf | Bin 0 -> 3260 bytes + .../fonts/SourceSansVariable-Roman-modHVAR.ac.ttf | Bin 0 -> 3032 bytes + test/api/test-subset-hvar.c | 21 +++++++++++++++++++++ + 4 files changed, 31 insertions(+), 4 deletions(-) -commit 9f9890e9e82c620e733d123f421f7c63d91ce8e1 +commit 079d2dcbb2607cda3daa497199090c5813a51de5 Author: Behdad Esfahbod -Date: Mon May 6 12:16:51 2019 -0700 +Date: Fri Apr 12 15:00:37 2019 -0400 - Remove HB_NO_OPTIONS in favor of HB_NO_GETENV + Add HB_NO_NAME_TABLE_AAT Part of https://github.com/harfbuzz/harfbuzz/issues/1652 - src/hb-debug.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-name-table.hh | 2 ++ + 1 file changed, 2 insertions(+) -commit 36bb24f7b4dbbe171b945639bac749c46785e17c +commit 60a58aa61c09cafd12c432fdc1f7325f2a6d44bd Author: Behdad Esfahbod -Date: Sun May 5 10:14:17 2019 -0700 +Date: Fri Apr 12 14:58:53 2019 -0400 - [dispatch] Forward arguments in all dispatch multiplexers + Add HB_NO_OT_FONT_BITMAP + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 - src/hb-aat-layout-kerx-table.hh | 14 ++++----- - src/hb-aat-layout-morx-table.hh | 14 ++++----- - src/hb-ot-kern-table.hh | 16 +++++----- - src/hb-ot-layout-common.hh | 6 ++-- - src/hb-ot-layout-gpos-table.hh | 68 ++++++++++++++++++++--------------------- - src/hb-ot-layout-gsub-table.hh | 58 +++++++++++++++++------------------ - src/hb-ot-layout-gsubgpos.hh | 32 +++++++++---------- - 7 files changed, 104 insertions(+), 104 deletions(-) + src/hb-ot-font.cc | 2 ++ + 1 file changed, 2 insertions(+) -commit c14efb8e68e31fb7537bcfe5eea779c0830a0b0c +commit 160c4d8b2d9f6c205b713236f043081e6dd532ee Author: Behdad Esfahbod -Date: Sun May 5 09:54:58 2019 -0700 +Date: Fri Apr 12 14:57:49 2019 -0400 - Fix previous commit + Add HB_NO_OT_FONT_CFF - Priority should be given to specific over dispatch. Broke sanitize before. - This fixes it, by moving prioritization to the context implementation, since - the correct priority cannot be done in the dispatch implementation. Done - for subset and sanitize only, which need it. + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 - src/hb-aat-layout-common.hh | 2 +- - src/hb-dispatch.hh | 10 +--------- - src/hb-ot-layout-gsubgpos.hh | 14 +++++++------- - src/hb-sanitize.hh | 16 +++++++++++++--- - src/hb-subset.hh | 15 ++++++++++++--- - 5 files changed, 34 insertions(+), 23 deletions(-) + src/hb-ot-font.cc | 2 ++ + 1 file changed, 2 insertions(+) -commit b10f65933a77434bf8d68058793037f38a8ed5a6 +commit 35f3b97fac3b106d345a06a4970f6adce182797b Author: Behdad Esfahbod -Date: Sun May 5 09:23:35 2019 -0700 +Date: Fri Apr 12 10:16:12 2019 -0400 - [dispatch] Use functionality from previous commit + Add HB_NO_OT_SHAPE_COMPLEX_HEBREW_FALLBACK - To remove a couple of unwanted wrapper methods + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 - src/hb-dispatch.hh | 15 +++++++++------ - src/hb-open-type.hh | 10 +++++----- - src/hb-ot-layout-gpos-table.hh | 6 ------ - src/hb-ot-layout-gsub-table.hh | 6 ------ - src/hb-sanitize.hh | 5 +++-- - src/hb-subset.hh | 5 +++-- - 6 files changed, 20 insertions(+), 27 deletions(-) + src/hb-ot-shape-complex-hebrew.cc | 4 ++++ + 1 file changed, 4 insertions(+) -commit ac350c92fd6b04845c6240a5f3b77ceaf29e51d0 +commit 414c5de26b34c0c53f6f4b5f00ddc8e1a3b62ac2 Author: Behdad Esfahbod -Date: Sun May 5 09:10:46 2019 -0700 +Date: Fri Apr 12 10:12:11 2019 -0400 - [dispatch] Try obj.dispatch(c) before trying c->dispatch(obj) + Add HB_NO_OT_SHAPE_FALLBACK + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 - src/hb-aat-layout-common.hh | 2 +- - src/hb-dispatch.hh | 13 +++++++++++++ - src/hb-ot-layout-gsubgpos.hh | 14 +++++++------- - src/hb-sanitize.hh | 2 +- - src/hb-subset.hh | 4 ++-- - 5 files changed, 24 insertions(+), 11 deletions(-) + src/hb-ot-shape-fallback.cc | 12 ++++++++++++ + 1 file changed, 12 insertions(+) -commit 0d5fd168f8e3c1202358a82161a28e407149b1b4 +commit fe0018f7ef804acefa729e888f5a9935e571079d Author: Behdad Esfahbod -Date: Fri May 3 10:37:32 2019 -0700 +Date: Fri Apr 12 09:35:29 2019 -0400 - Revert "[WIP] [name] Port to fancy serializer machinery" - - This reverts commit c7f366fbbb208d0a9103ac4ee4ac00ff726c31e4. + Add HB_NO_OT_SHAPE_COMPLEX_THAI_FALLBACK - Don't know how it got to master! + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 - src/hb-ot-name-table.hh | 18 +++++++----------- - 1 file changed, 7 insertions(+), 11 deletions(-) + src/hb-ot-shape-complex-thai.cc | 4 ++++ + 1 file changed, 4 insertions(+) -commit 72e3eba8f87e2a8b145a4f98e24499f0aafe099b -Author: Cody Planteen -Date: Thu May 2 13:03:15 2019 -0600 +commit 9ddbfa006d752f6ddd3610ff968f84cf18dec031 +Author: Behdad Esfahbod +Date: Fri Apr 12 09:33:25 2019 -0400 - Add configuration option HB_NO_GETENV to disable use of getenv() + Add HB_NO_OT_LAYOUT_BLACKLIST + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 - src/hb.hh | 12 ++++++++++-- - 1 file changed, 10 insertions(+), 2 deletions(-) + src/hb-ot-layout.cc | 9 +++++++++ + 1 file changed, 9 insertions(+) -commit c7f366fbbb208d0a9103ac4ee4ac00ff726c31e4 +commit 571fad4cf17d90434562d1b6f5d08b6f27343c7a Author: Behdad Esfahbod -Date: Thu May 2 16:29:07 2019 -0700 - - [WIP] [name] Port to fancy serializer machinery +Date: Thu Apr 11 17:54:38 2019 -0400 - src/hb-ot-name-table.hh | 18 +++++++++++------- - 1 file changed, 11 insertions(+), 7 deletions(-) + Add HB_NO_OT_SHAPE_COMPLEX_VOWEL_CONSTRAINTS + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 -commit 8855af38a8497d7788924d368baa9eeae4916940 -Author: Behdad Esfahbod -Date: Thu May 2 16:26:06 2019 -0700 + src/hb-ot-shape-complex-vowel-constraints.cc | 3 +++ + 1 file changed, 3 insertions(+) - [name] Add NameRecord::copy() +commit a90e4916df74f6f84ce78eb2a73b6f325e7e8617 +Merge: 94573702 3db22726 +Author: Michiharu Ariza +Date: Thu Apr 11 15:57:32 2019 -0700 - src/hb-ot-name-table.hh | 10 ++++++++++ - 1 file changed, 10 insertions(+) + Merge branch 'master' into var-subset -commit 097bb3f0af391dbb5d498df548b769f165f35c8a -Author: Behdad Esfahbod -Date: Thu May 2 16:25:00 2019 -0700 +commit 3db227265bc0790ffd718bf265d245c78598a49d +Author: Nathan Willis +Date: Tue Apr 2 18:49:40 2019 +0100 - [name] Minor changes + Update gtk-doc annotations for inout counts on various getter functions. - src/hb-ot-name-table.hh | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) + src/hb-ot-layout.cc | 122 ++++++++++++++++++++++++++++++---------------------- + 1 file changed, 70 insertions(+), 52 deletions(-) -commit 431b6e1c449582619169722e16b472e872b02d58 -Author: Behdad Esfahbod -Date: Thu May 2 16:22:32 2019 -0700 +commit c08ddbd91b7f0fffe761638a2ee4893304b012db +Author: Nathan Willis +Date: Sun Mar 24 15:07:07 2019 +0000 - [serialize] Disable assertion for now + [Docs] Minor edits to gtk-doc inline comment review. - src/hb-serialize.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-layout.cc | 21 +++++++++++++-------- + 1 file changed, 13 insertions(+), 8 deletions(-) -commit 8a32c9eecbdc907415195eca9ebad47c8acf2df5 -Author: Behdad Esfahbod -Date: Thu May 2 16:20:18 2019 -0700 +commit af5230bce39020cf6fc87ee5e21cca3ba201a417 +Author: Nathan Willis +Date: Mon Mar 18 14:03:16 2019 +0000 - [serialize] Misc getting copy() to work + [Docs] Minor; fix formatting for gtk-doc multiple-annotations. - src/hb-open-type.hh | 16 +++++++++------- - src/hb-serialize.hh | 26 ++++++++++++++++---------- - 2 files changed, 25 insertions(+), 17 deletions(-) + src/hb-ot-layout.cc | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) -commit 7d497a3a92973d4cec14888b932091f49de1d190 -Author: Behdad Esfahbod -Date: Thu May 2 16:20:03 2019 -0700 +commit 6c0a1e8cd67144d20c8b5fcad23953910eeeea51 +Author: Nathan Willis +Date: Sun Mar 17 14:50:47 2019 +0000 - [debug] Allow return_trace() to return any type + [Docs] Annotate gtk-doc formatting with some un-annotated (out)s. - src/hb-debug.hh | 14 ++++++++------ - 1 file changed, 8 insertions(+), 6 deletions(-) + src/hb-ot-layout.cc | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) -commit 49b1c763a0459d586b7f0aa86eadd13d21b24867 -Author: Behdad Esfahbod -Date: Thu May 2 16:19:34 2019 -0700 +commit 5122805c740961d4fdfbff440ed68792b63d50ed +Author: Nathan Willis +Date: Sun Mar 17 14:43:06 2019 +0000 - [test] Run "fonttools ttx" instead of "ttx" + [Docs] Fix gtk-doc formatting for (out) and (inout). - test/subset/run-tests.py | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) + src/hb-ot-layout.cc | 108 ++++++++++++++++++++++++++-------------------------- + 1 file changed, 54 insertions(+), 54 deletions(-) -commit 91176d5b778b44172591e82ba84127e5eff1372d -Author: Behdad Esfahbod -Date: Thu May 2 15:12:07 2019 -0700 +commit d3178aa52ae822ac6af606027ac8150ded0a2966 +Author: Nathan Willis +Date: Sun Mar 17 14:27:27 2019 +0000 - [serialize] Check offset base is within (possibly end of) object + [Docs] Fix gtk-doc references to 'kern' table functions, clarifying that GPOS is not examined. - src/hb-serialize.hh | 1 + - 1 file changed, 1 insertion(+) + src/hb-ot-layout.cc | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) -commit 0f1a6ce8268b197732aab40069bbda57eddac2e0 -Author: Behdad Esfahbod -Date: Thu May 2 15:03:41 2019 -0700 +commit 3449031fad9dff7acedde7dceb0e47db708fc025 +Author: Nathan Willis +Date: Sat Mar 16 15:38:08 2019 +0000 - [name] Fix format of susbetted table to 0 + [Docs] Add inline gtk-doc documentation of GDEF glyph classes. - src/hb-ot-name-table.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-layout.h | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) -commit 87810fc958e28d0c5e05097b1b3fe78d962fdc62 -Author: Behdad Esfahbod -Date: Thu May 2 14:45:57 2019 -0700 +commit 930f6fc3da04ce1897e65862fccb03afa9d3a780 +Author: Nathan Willis +Date: Sat Mar 16 15:10:21 2019 +0000 - [name] Use variable forwarding to simplify sanitize() + [Docs] Add inlind gtk-doc comments for hb-ot-layout functions. - src/hb-ot-name-table.hh | 7 ++----- - 1 file changed, 2 insertions(+), 5 deletions(-) + src/hb-ot-layout.cc | 456 +++++++++++++++++++++++++++++++++++++++++++++++++++- + src/hb-ot-layout.h | 11 ++ + 2 files changed, 462 insertions(+), 5 deletions(-) -commit bf91b418b0e988619c230156f5f062c5d2802dd8 -Author: Behdad Esfahbod -Date: Thu May 2 14:42:37 2019 -0700 +commit 945737026d5647c42c1fb897a88364613a7dd51c +Author: Michiharu Ariza +Date: Thu Apr 11 10:52:11 2019 -0700 - [name] + tweak: moved xshift code out of get_points_var - src/hb-ot-name-table.hh | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) + src/hb-ot-glyf-table.hh | 21 +++++++++------------ + 1 file changed, 9 insertions(+), 12 deletions(-) -commit 998b0b68ac2eafd1d5bca51b3723fa753e4db7c4 -Author: Behdad Esfahbod -Date: Thu May 2 14:39:52 2019 -0700 +commit e8140832025e31d62784ce16a03fc5667b0c4015 +Author: Michiharu Ariza +Date: Thu Apr 11 09:59:13 2019 -0700 - [serializer] Add copy() to (Unsized)ArrayOf + undo hb_ot_ge_glyph_v_origin to fix test failures - src/hb-open-type.hh | 41 +++++++++++++++++++++++++++++++++++++++++ - src/hb-serialize.hh | 4 ++-- - 2 files changed, 43 insertions(+), 2 deletions(-) + src/hb-ot-font.cc | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) -commit 88a41472404a8e7754e1099ca4a5b2146dae5298 +commit b52c0e54b9855a1f3d400e4dbcd0372520f2c2fc Author: Behdad Esfahbod -Date: Thu May 2 14:22:31 2019 -0700 +Date: Thu Apr 11 11:20:10 2019 -0400 - [serializer] Accept exact type in serialize_subset/copy() + Use injected class name to simplify macros - src/hb-open-type.hh | 12 ++++++------ - src/hb-ot-layout-common.hh | 33 ++------------------------------- - src/hb-ot-layout-gpos-table.hh | 6 ++++++ - src/hb-ot-layout-gsub-table.hh | 6 ++++++ - 4 files changed, 20 insertions(+), 37 deletions(-) + src/hb-open-type.hh | 10 +++++----- + src/hb.hh | 14 -------------- + 2 files changed, 5 insertions(+), 19 deletions(-) -commit 88fdeeecc0ef57e41219d92c90f35f13cbd3a35e +commit baf1e79075b0f917b79484446cd2ca47b58f50aa Author: Behdad Esfahbod -Date: Thu May 2 14:14:33 2019 -0700 +Date: Thu Apr 11 11:18:04 2019 -0400 - [serialize] Take arguments in copy() + [C++11] Use deleted methods - src/hb-open-type.hh | 6 +++--- - src/hb-serialize.hh | 10 ++++++---- - 2 files changed, 9 insertions(+), 7 deletions(-) + src/hb.hh | 30 +++++++++++++++--------------- + 1 file changed, 15 insertions(+), 15 deletions(-) -commit 273ed6127bd9471fd11b3c1c7f232638f1ff1dba +commit 824fd342d5d66584a5ed88951e05975f33c55617 Author: Behdad Esfahbod -Date: Thu May 2 14:04:51 2019 -0700 +Date: Thu Apr 11 11:16:01 2019 -0400 - [serializer] Add serialize_copy() + Rename a few macros - src/hb-open-type.hh | 14 ++++++++++++++ - 1 file changed, 14 insertions(+) + src/hb-map.hh | 2 +- + src/hb-open-type.hh | 10 +++++----- + src/hb-set.hh | 2 +- + src/hb.hh | 12 ++++++------ + 4 files changed, 13 insertions(+), 13 deletions(-) -commit bf22338f49fb1711f7cbcad2d9949d7962cdc0bc -Author: Behdad Esfahbod -Date: Thu May 2 13:51:52 2019 -0700 +commit 9e79285ef3b4d7490b4bbad0eef16dd73fd8fb62 +Merge: 6d79a25b c5509be9 +Author: Michiharu Ariza +Date: Wed Apr 10 17:24:29 2019 -0700 - Remove dead code + Merge branch 'master' into var-subset - src/hb-algs.hh | 3 --- - 1 file changed, 3 deletions(-) +commit 6d79a25bed110b2d8842bd102ffdb5606023b8a1 +Merge: ab9d3096 196481cc +Author: Michiharu Ariza +Date: Wed Apr 10 17:23:00 2019 -0700 -commit 14e1fabc41a9a5ead3d91d560773050469982f54 -Author: David Corbett -Date: Wed May 1 21:29:06 2019 -0400 + Merge branch 'var-subset' of https://github.com/harfbuzz/harfbuzz into var-subset - Sync gen-vowel-constraints.py with current output +commit ab9d30965d298c10e0f1934364b03276067cf8a5 +Author: Michiharu Ariza +Date: Wed Apr 10 17:21:37 2019 -0700 - src/gen-vowel-constraints.py | 3 +++ - 1 file changed, 3 insertions(+) + Add tt var metrics test cases & bug fixes -commit 026ab825c8e41980e286be911cc6fbb958dd7cd3 -Author: David Corbett -Date: Wed May 1 16:15:58 2019 -0400 + src/hb-ot-font.cc | 4 +- + src/hb-ot-glyf-table.hh | 131 ++++++++++----------- + src/hb-ot-hmtx-table.hh | 4 +- + src/hb-ot-var-gvar-table.hh | 4 +- + .../api/fonts/SourceSansVariable-Roman.modcomp.ttf | Bin 0 -> 3252 bytes + test/api/test-ot-metrics-tt-var.c | 79 ++++++++++++- + 6 files changed, 147 insertions(+), 75 deletions(-) - Add dotted circles to more broken clusters +commit edfc6be4a0362efa5c1d39f4792a28b5726c3ce5 +Author: Behdad Esfahbod +Date: Wed Apr 10 15:53:48 2019 -0400 - src/gen-use-table.py | 9 + - src/hb-ot-shape-complex-myanmar-machine.hh | 196 +++++----- - src/hb-ot-shape-complex-myanmar-machine.rl | 4 +- - src/hb-ot-shape-complex-use-machine.hh | 602 +++++++++++++++-------------- - src/hb-ot-shape-complex-use-machine.rl | 11 +- - src/hb-ot-shape-complex-use-table.cc | 2 +- - 6 files changed, 433 insertions(+), 391 deletions(-) + [arabic] Disable fallback shaping if HB_NO_OT_SHAPE_COMPLEX_ARABIC_FALLBACK defined + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 -commit 92588782d7a45e0c023c5f48cbd19b11cfa8f0d2 -Author: Ebrahim Byagowi -Date: Tue Apr 30 13:05:10 2019 -0700 + src/hb-ot-shape-complex-arabic-fallback.hh | 1 - + src/hb-ot-shape-complex-arabic.cc | 4 ++++ + 2 files changed, 4 insertions(+), 1 deletion(-) - Remove space between right angle brackets now that we have C++11 (#1689) +commit 4d31662b5da20790f6f860cec8f5fdabf48210f0 +Author: Behdad Esfahbod +Date: Wed Apr 10 15:40:03 2019 -0400 - src/hb-aat-layout-ankr-table.hh | 2 +- - src/hb-aat-layout-common.hh | 14 +++---- - src/hb-aat-layout-just-table.hh | 4 +- - src/hb-aat-layout-kerx-table.hh | 14 +++---- - src/hb-aat-layout-lcar-table.hh | 2 +- - src/hb-aat-layout-morx-table.hh | 14 +++---- - src/hb-aat-layout-trak-table.hh | 2 +- - src/hb-aat-ltag-table.hh | 2 +- - src/hb-cff-interp-cs-common.hh | 2 +- - src/hb-cff1-interp-cs.hh | 2 +- - src/hb-cff2-interp-cs.hh | 2 +- - src/hb-iter.hh | 4 +- - src/hb-null.hh | 8 ++-- - src/hb-open-file.hh | 8 ++-- - src/hb-open-type.hh | 8 ++-- - src/hb-ot-color-cbdt-table.hh | 2 +- - src/hb-ot-color-colr-table.hh | 4 +- - src/hb-ot-color-cpal-table.hh | 8 ++-- - src/hb-ot-color-sbix-table.hh | 2 +- - src/hb-ot-color-svg-table.hh | 4 +- - src/hb-ot-kern-table.hh | 6 +-- - src/hb-ot-layout-base-table.hh | 2 +- - src/hb-ot-layout-common.hh | 10 ++--- - src/hb-ot-layout-gdef-table.hh | 4 +- - src/hb-ot-layout-gpos-table.hh | 6 +-- - src/hb-ot-layout-gsub-table.hh | 18 ++++----- - src/hb-ot-layout-gsubgpos.hh | 86 ++++++++++++++++++++--------------------- - src/hb-ot-math-table.hh | 2 +- - src/hb-ot-name-table.hh | 10 ++--- - src/hb-ot-stat-table.hh | 4 +- - src/hb-subset-cff1.cc | 2 +- - src/test-iter.cc | 10 ++--- - 32 files changed, 134 insertions(+), 134 deletions(-) + Don't install ot-font funcs on new fonts if HB_NO_OT_FONT defined + + Currently linker cannot GC hb-ot-font completely because we install + it on fonts by default. Don't do that if HB_NO_OT_FONT defined. + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 -commit f27fdca4aa438ec366ee17370fbc9fdeb962c397 -Author: Ebrahim Byagowi -Date: Tue Apr 30 13:01:04 2019 -0700 + src/hb-font.cc | 2 ++ + 1 file changed, 2 insertions(+) - [doc] Add documentation to hb_color_get_* and hb_directwrite_face_* (#1690) +commit b111b3de020cde6fb0686efc224cace4608f2e45 +Author: Behdad Esfahbod +Date: Wed Apr 10 15:38:15 2019 -0400 - src/hb-common.cc | 12 ++++++++---- - src/hb-directwrite.cc | 8 ++++++-- - 2 files changed, 14 insertions(+), 6 deletions(-) + Don't use any default unicode funcs if HB_NO_UNICODE_FUNCS is defined + + Part of https://github.com/harfbuzz/harfbuzz/issues/1652 -commit fe4a0ac707802b5bb36787723f8d55a58c2946a5 -Author: David Corbett -Date: Tue Apr 30 13:35:50 2019 -0400 + src/hb-unicode.cc | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) - Fix some dead links +commit c5509be93a351177724f2891dd5e9ddb02553452 +Author: Behdad Esfahbod +Date: Mon Apr 8 14:50:58 2019 -0400 - src/gen-os2-unicode-ranges.py | 2 +- - src/gen-use-table.py | 6 +++--- - src/hb-ot-shape-complex-myanmar.hh | 2 +- - 3 files changed, 5 insertions(+), 5 deletions(-) + [coretext] Fix unused-variable error + + Fixes https://github.com/harfbuzz/harfbuzz/issues/1659 -commit 68749e996aedbae9b1c4553f5672f74e1727b850 -Author: Nathan Willis -Date: Tue Apr 30 17:23:55 2019 +0100 + src/hb-coretext.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 196481ccb913d23e30cbd267df296deada919e88 +Author: Michiharu Ariza +Date: Fri Apr 5 16:37:12 2019 -0700 - [Docs] Usermanual; update XML manifest for new chapters. + shift glyph horizontally at top level, not components - docs/Makefile.am | 4 ++-- - docs/harfbuzz-docs.xml | 4 ++-- - 2 files changed, 4 insertions(+), 4 deletions(-) + src/hb-ot-glyf-table.hh | 1 + + 1 file changed, 1 insertion(+) -commit 30d7d1064ee339ca216699851030f9bae8c07c68 -Author: Nathan Willis -Date: Tue Apr 30 17:23:19 2019 +0100 +commit 8a92ffd9bb9357cdf219e166c8a71abc90823976 +Author: Michiharu Ariza +Date: Fri Apr 5 15:04:23 2019 -0700 - [Docs] Usermanual; add Utilities chapter. + fix failure to check glyf recursion - docs/usermanual-utilities.xml | 244 ++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 244 insertions(+) + src/hb-ot-glyf-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit d0f5a05aef73293fe21ddb022084166a7a095862 -Author: Nathan Willis -Date: Tue Apr 30 17:22:54 2019 +0100 +commit 4c19aa26204d0dc2f08b6e4a824e9088301f68d8 +Author: Maks Naumov +Date: Fri Apr 5 21:46:27 2019 +0300 - [Docs] Usermanual; add Shaping, Features, and Plans. + Fix MSVC C4068 warning (#1656) - docs/usermanual-opentype-features.xml | 279 +++++++++++++++++++++++++++++++++- - 1 file changed, 277 insertions(+), 2 deletions(-) + src/hb-blob.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 8354c99fbee2887cb71440f4e25ad1e6f46b2592 -Author: Nathan Willis -Date: Tue Apr 30 17:22:08 2019 +0100 +commit e44b83aac0443bd23df15b505a3d638883621b0e +Author: Michiharu Ariza +Date: Fri Apr 5 10:15:08 2019 -0700 - [Docs] Usermanual; add Fonts And Faces chapter. + replace test font SourceHanSans with its subet - docs/usermanual-fonts-and-faces.xml | 445 +++++++++++++++++++++++++++++++++++- - 1 file changed, 437 insertions(+), 8 deletions(-) + ...gular.default.3042,3044,3046,3048,304A,304B.otf | Bin 6356 -> 0 bytes + ...gular.default.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 6564 -> 0 bytes + .../SourceHanSans-Regular.default.61,63,65,6B.otf | Bin 5532 -> 0 bytes + ...gular.default.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 6780 -> 0 bytes + .../SourceHanSans-Regular.default.660E.otf | Bin 5248 -> 0 bytes + ...e-retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 537992 -> 0 bytes + ...e-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 692312 -> 0 bytes + ...ular.desubroutinize-retain-gids.61,63,65,6B.otf | Bin 531624 -> 0 bytes + ...e-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 692496 -> 0 bytes + ...ans-Regular.desubroutinize-retain-gids.660E.otf | Bin 613836 -> 0 bytes + ...esubroutinize.3042,3044,3046,3048,304A,304B.otf | Bin 6272 -> 0 bytes + ...esubroutinize.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 6456 -> 0 bytes + ...eHanSans-Regular.desubroutinize.61,63,65,6B.otf | Bin 5460 -> 0 bytes + ...esubroutinize.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 6572 -> 0 bytes + .../SourceHanSans-Regular.desubroutinize.660E.otf | Bin 5224 -> 0 bytes + ...e-retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 537424 -> 0 bytes + ...e-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 691692 -> 0 bytes + ...ints-desubroutinize-retain-gids.61,63,65,6B.otf | Bin 531124 -> 0 bytes + ...e-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 691808 -> 0 bytes + ....drop-hints-desubroutinize-retain-gids.660E.otf | Bin 613348 -> 0 bytes + ...esubroutinize.3042,3044,3046,3048,304A,304B.otf | Bin 6096 -> 0 bytes + ...esubroutinize.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 6204 -> 0 bytes + ...gular.drop-hints-desubroutinize.61,63,65,6B.otf | Bin 5344 -> 0 bytes + ...esubroutinize.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 6268 -> 0 bytes + ...Sans-Regular.drop-hints-desubroutinize.660E.otf | Bin 5120 -> 0 bytes + ...s-retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 537492 -> 0 bytes + ...s-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 691788 -> 0 bytes + ...-Regular.drop-hints-retain-gids.61,63,65,6B.otf | Bin 531164 -> 0 bytes + ...-Regular.drop-hints-retain-gids.61,63,65,6B.ttx | 393879 ------------------ + ...s-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 692008 -> 0 bytes + ...HanSans-Regular.drop-hints-retain-gids.660E.otf | Bin 613368 -> 0 bytes + ...ar.drop-hints.3042,3044,3046,3048,304A,304B.otf | Bin 6164 -> 0 bytes + ...ar.drop-hints.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 6300 -> 0 bytes + ...ourceHanSans-Regular.drop-hints.61,63,65,6B.otf | Bin 5376 -> 0 bytes + ...ar.drop-hints.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 6472 -> 0 bytes + .../SourceHanSans-Regular.drop-hints.660E.otf | Bin 5140 -> 0 bytes + ...r.retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 538076 -> 0 bytes + ...r.retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 692420 -> 0 bytes + ...urceHanSans-Regular.retain-gids.61,63,65,6B.otf | Bin 531704 -> 0 bytes + ...r.retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 692700 -> 0 bytes + .../SourceHanSans-Regular.retain-gids.660E.otf | Bin 613860 -> 0 bytes + ...ubset.default.3042,3044,3046,3048,304A,304B.otf | Bin 0 -> 3028 bytes + ...ubset.default.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 0 -> 3240 bytes + ...eHanSans-Regular_subset.default.61,63,65,6B.otf | Bin 0 -> 2200 bytes + ...ubset.default.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 0 -> 3460 bytes + .../SourceHanSans-Regular_subset.default.660E.otf | Bin 0 -> 1920 bytes + ...e-retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 0 -> 90956 bytes + ...e-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 0 -> 125820 bytes + ...bset.desubroutinize-retain-gids.61,63,65,6B.otf | Bin 0 -> 88392 bytes + ...e-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 0 -> 126004 bytes + ...ular_subset.desubroutinize-retain-gids.660E.otf | Bin 0 -> 103780 bytes + ...esubroutinize.3042,3044,3046,3048,304A,304B.otf | Bin 0 -> 2952 bytes + ...esubroutinize.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 0 -> 3136 bytes + ...s-Regular_subset.desubroutinize.61,63,65,6B.otf | Bin 0 -> 2132 bytes + ...esubroutinize.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 0 -> 3256 bytes + ...eHanSans-Regular_subset.desubroutinize.660E.otf | Bin 0 -> 1896 bytes + ...e-retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 0 -> 90656 bytes + ...e-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 0 -> 125468 bytes + ...ints-desubroutinize-retain-gids.61,63,65,6B.otf | Bin 0 -> 88156 bytes + ...e-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 0 -> 125584 bytes + ....drop-hints-desubroutinize-retain-gids.660E.otf | Bin 0 -> 103556 bytes + ...esubroutinize.3042,3044,3046,3048,304A,304B.otf | Bin 0 -> 2792 bytes + ...esubroutinize.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 0 -> 2896 bytes + ...ubset.drop-hints-desubroutinize.61,63,65,6B.otf | Bin 0 -> 2028 bytes + ...esubroutinize.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 0 -> 2964 bytes + ...gular_subset.drop-hints-desubroutinize.660E.otf | Bin 0 -> 1804 bytes + ...s-retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 0 -> 90724 bytes + ...s-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 0 -> 125560 bytes + ...r_subset.drop-hints-retain-gids.61,63,65,6B.otf | Bin 0 -> 88196 bytes + ...s-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 0 -> 125780 bytes + ...-Regular_subset.drop-hints-retain-gids.660E.otf | Bin 0 -> 103572 bytes + ...et.drop-hints.3042,3044,3046,3048,304A,304B.otf | Bin 0 -> 2848 bytes + ...et.drop-hints.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 0 -> 2988 bytes + ...nSans-Regular_subset.drop-hints.61,63,65,6B.otf | Bin 0 -> 2060 bytes + ...et.drop-hints.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 0 -> 3164 bytes + ...ourceHanSans-Regular_subset.drop-hints.660E.otf | Bin 0 -> 1824 bytes + ...t.retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 0 -> 91040 bytes + ...t.retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 0 -> 125924 bytes + ...Sans-Regular_subset.retain-gids.61,63,65,6B.otf | Bin 0 -> 88468 bytes + ...t.retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 0 -> 126208 bytes + ...urceHanSans-Regular_subset.retain-gids.660E.otf | Bin 0 -> 103800 bytes + test/subset/data/fonts/SourceHanSans-Regular.otf | Bin 16427580 -> 0 bytes + .../data/fonts/SourceHanSans-Regular_subset.otf | Bin 0 -> 2707728 bytes + test/subset/data/tests/cff-japanese.tests | 2 +- + 84 files changed, 1 insertion(+), 393880 deletions(-) -commit 3b301c5ac6b15728f858cb6f5de8dfc6a77209fa -Author: Nathan Willis -Date: Tue Apr 30 17:21:33 2019 +0100 +commit a96d003d6ec4212fadad4f5b9058c9f8b07bcf89 +Author: Maks Naumov +Date: Fri Apr 5 12:29:56 2019 +0300 - [Docs] Usermanual; fill out Buffers chapter. + Fix MSVC C4138 warning (#1657) - ...anual-buffers-language-script-and-direction.xml | 358 +++++++++++++++++++-- - 1 file changed, 335 insertions(+), 23 deletions(-) + src/hb-ot-cff-common.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 6d9a86ae7535ea8e3c108a49c6da877a78cdac26 -Author: Nathan Willis -Date: Tue Apr 30 16:09:01 2019 +0100 +commit c68eb7002f1c2b847d955797e27f5403199e3d9d +Author: Behdad Esfahbod +Date: Wed Apr 3 16:24:12 2019 -0700 - [Docs] Usermanual; fixes to Object Model chapter + Minor - docs/usermanual-object-model.xml | 35 ++++++++++++++++++++++------------- - 1 file changed, 22 insertions(+), 13 deletions(-) + src/hb-ot-layout-common.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit 9542bdd0ed2d581cdb4bd950ac3cd7e3bf899478 -Author: Ebrahim Byagowi -Date: Mon Apr 29 14:52:28 2019 -0700 +commit 85adf4ad5c76172514f281bfbe3850ef35473cc7 +Author: Behdad Esfahbod +Date: Wed Apr 3 16:06:55 2019 -0700 - Add color channels getters ABI (#1513) + [GDEF] Don't assume glyphlist is sorted - So can be used with language wrappers + As was hit by the fuzzer. + + Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14032 - src/hb-common.cc | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/hb-common.h | 40 +++++++++++----------------------------- - 2 files changed, 64 insertions(+), 29 deletions(-) + src/hb-ot-layout-common.hh | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) -commit e200d165a4e8a5f901165c705d617b6e457ec595 -Author: Ebrahim Byagowi -Date: Tue Apr 30 02:10:50 2019 +0430 +commit ecabdffc61cb0b71424f4845aeda8cd0a6d25a29 +Author: Behdad Esfahbod +Date: Wed Apr 3 16:06:34 2019 -0700 - [ci] Remove crosscompile-notest-freebsd9 bot - - It was testing an old version of freebsd and now it's image is gone. - We really like to test the environment. + [algs] Add hb_min() and hb_max() - .circleci/config.yml | 10 ---------- - 1 file changed, 10 deletions(-) + src/hb-algs.hh | 11 +++++++++++ + 1 file changed, 11 insertions(+) -commit 4aa546b70ad7b11154b901e67f98c1ec6bc5c364 -Author: David Corbett -Date: Mon Apr 29 14:16:51 2019 -0400 +commit 7b863142ceb82fc2fd23802f19f7379aa2f152e5 +Author: Behdad Esfahbod +Date: Wed Apr 3 15:48:27 2019 -0700 - Allow some Balinese Po & So as aksara modre bases + [serialize] Make putting breakpoint on out-of-memory easier - src/gen-use-table.py | 10 ++++++++-- - src/hb-ot-shape-complex-use-table.cc | 4 ++-- - 2 files changed, 10 insertions(+), 4 deletions(-) + src/hb-serialize.hh | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) -commit 6d6edc8b25395c87477181a647a8e6d02f2cad4f -Author: Ebrahim Byagowi -Date: Sun Apr 28 11:54:07 2019 -0700 +commit 2bd275023405b6a669d59ad4cdcb2e8cb410d593 +Author: Behdad Esfahbod +Date: Wed Apr 3 15:31:53 2019 -0700 - [valgrind] Use libtool and support run-subset-fuzzer-tests (#1668) + [iter] Tweak SFINAE again + + Don't think we need hb_is_same(). - test/fuzzing/Makefile.am | 4 +- - test/fuzzing/run-shape-fuzzer-tests.py | 28 ++++++------ - test/fuzzing/run-subset-fuzzer-tests.py | 75 ++++++++++++++++++++++++++++++--- - 3 files changed, 85 insertions(+), 22 deletions(-) + src/hb-iter.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 62c6e170728303f4225aaa25523675fc260ae1ab -Author: Ebrahim Byagowi -Date: Sun Apr 28 10:55:07 2019 -0700 +commit f02ebc89ec89e78a348f9b67d613a2024feabc18 +Author: Behdad Esfahbod +Date: Wed Apr 3 15:23:06 2019 -0700 - [test] Add crbug.com/oss-fuzz/14474 testcase - - Fixed at 6977a95f + [array] Add compy assignment operator since copy constructor is explicit - ...testcase-minimized-hb-subset-fuzzer-5716947896893440 | Bin 0 -> 65833 bytes - 1 file changed, 0 insertions(+), 0 deletions(-) + src/hb-array.hh | 6 ++++++ + 1 file changed, 6 insertions(+) -commit 6977a95fed8a35d6e915ed3fc3a3ea8709f3d4a4 +commit 20a73da2c9227a0f9bc943a3d766eedeb5bed3b3 Author: Behdad Esfahbod -Date: Sat Apr 27 10:05:25 2019 -0700 +Date: Wed Apr 3 14:32:15 2019 -0700 - [subset] Don't crash if subsetting GSUB/GPOS fails + [array] Add default copy constructor - Fixes fuzzer issue. + MSVC seems to need it. - src/hb-subset.cc | 27 ++++++++++++++------------- - 1 file changed, 14 insertions(+), 13 deletions(-) + src/hb-array.hh | 1 + + 1 file changed, 1 insertion(+) -commit 2b051e7aa147c78cfbf953b6f0eb18c25b732eb2 +commit d419a9a4376de7b2ae1dec7df09f8d034cc2d039 Author: Behdad Esfahbod -Date: Sat Apr 27 10:01:11 2019 -0700 +Date: Wed Apr 3 14:18:19 2019 -0700 - [subset] Check error after calling serializer end + [iter] Use different SFINAE scheme to make MSVC happy + + From Orvid King: TLDR; MSVC has some issues using sizeof(declval()) for + SFINAE of templated types, so I just used SFINAE in a different context where + MSVC doesn't have the issue. - src/hb-subset.cc | 5 ++--- - 1 file changed, 2 insertions(+), 3 deletions(-) + src/hb-iter.hh | 21 ++++++++++++--------- + 1 file changed, 12 insertions(+), 9 deletions(-) -commit 750b65e9a980efc13e50ea5d0388ecf06e7a93b1 +commit 2778df7972f537192b51cd0719adf2ab4d1f3397 Author: Behdad Esfahbod -Date: Fri Apr 26 17:14:25 2019 -0700 +Date: Wed Apr 3 14:15:01 2019 -0700 - [meta] Add hb_type_identity<> - - To block template argument deduction. + [meta] Add hb_is_same() + + src/hb-meta.hh | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) - src/hb-meta.hh | 4 ++++ - 1 file changed, 4 insertions(+) +commit b999ce9bf06fc90c4cb3c531357967835d7e706d +Merge: c2d727a4 6215fb8e +Author: Michiharu Ariza +Date: Wed Apr 3 10:34:09 2019 -0700 -commit 8c8922a019eb1ceb8beffc05ca638ee0ca25b565 -Author: Qunxin Liu -Date: Thu Apr 25 09:17:58 2019 -0700 + Merge branch 'master' into var-subset - [subset] Updates due to changes in resolve_links() on master branch +commit c2d727a479429b7c14126569e0f3e41d4b0beadf +Author: Michiharu Ariza +Date: Wed Apr 3 10:33:55 2019 -0700 - src/Makefile.sources | 1 + - src/hb-ot-name-table.hh | 7 +++++-- - src/hb-static.cc | 3 +-- - 3 files changed, 7 insertions(+), 4 deletions(-) + fix xshift by (lsb - xMin) -commit 2f6ec35344db08d0c892152bc7a7eaa67e7c03f0 -Author: Garret Rieger -Date: Wed Apr 24 15:15:36 2019 -0700 + src/hb-ot-glyf-table.hh | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) - Move implementations of hb-ot-name-language.cc into a hb-static.cc +commit 6215fb8e68bdf69f4af9f7f4959ad55a70723774 +Author: Behdad Esfahbod +Date: Tue Apr 2 23:10:03 2019 -0700 - src/hb-aat-layout.hh | 1 - - src/hb-ot-name-language-static.hh | 462 ++++++++++++++++++++++++++++++++++++++ - src/hb-ot-name-language.hh | 432 +---------------------------------- - src/hb-static.cc | 2 + - 4 files changed, 468 insertions(+), 429 deletions(-) + [serialize] Actually reclaim storage from duplicate objects -commit 19afd25004487cfaa7b487b1768b4dae1ab37296 -Author: Qunxin Liu -Date: Wed Apr 24 14:02:29 2019 -0700 + src/hb-serialize.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) - [subset] Update to use _subset2() for name table +commit 3305a2cad24f878f5d8773c2acae491ebd5a9059 +Author: Behdad Esfahbod +Date: Tue Apr 2 22:42:22 2019 -0700 - src/hb-ot-name-table.hh | 47 ++++++++++------------------------------------- - src/hb-subset.cc | 4 ++-- - 2 files changed, 12 insertions(+), 39 deletions(-) + [serialize] Port to use object pool + + Tested, but feels fragile :(. -commit 1ca4b5c77012ed586413f39e730b03bf965e1305 -Author: Qunxin Liu -Date: Mon Apr 22 11:31:23 2019 -0700 + src/hb-pool.hh | 5 +- + src/hb-serialize.hh | 141 ++++++++++++++++++++++++++++++++-------------------- + 2 files changed, 91 insertions(+), 55 deletions(-) - [subset] Add unit test for str de-dup - Also move the implementation of some methods from the .cc to the .hh +commit 5efbc01174127bede4d533866acac239e5a0cfd5 +Author: Behdad Esfahbod +Date: Tue Apr 2 22:41:06 2019 -0700 - src/Makefile.sources | 1 - - src/hb-aat-layout.cc | 8 - - src/hb-aat-layout.hh | 9 +- - src/hb-ot-name-language.cc | 457 --------------------------------- - src/hb-ot-name-language.hh | 432 ++++++++++++++++++++++++++++++- - test/api/fonts/nameID.dup.expected.ttf | Bin 0 -> 2340 bytes - test/api/fonts/nameID.dup.origin.ttf | Bin 0 -> 170680 bytes - test/api/test-subset-nameids.c | 21 ++ - 8 files changed, 456 insertions(+), 472 deletions(-) + [pool] Uses memset() instead of assigning Null() + + Assignment is invalid on invalid object. -commit 9ad14f56b6cf2a345104b3a897b52a1f4c0f33a5 -Author: Qunxin Liu -Date: Tue Apr 16 11:20:58 2019 -0700 + src/hb-pool.hh | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) - [subset] update name table subsetting with new serializer +commit 434d78bf91ac5204ffbf2144f199eb7a0f65c421 +Author: Behdad Esfahbod +Date: Tue Apr 2 21:46:40 2019 -0700 - src/hb-ot-name-table.hh | 126 ++++++++++++++++++++++++++++-------------------- - 1 file changed, 75 insertions(+), 51 deletions(-) + Add hb_pool_t<> for pooled memory allocation -commit 6faac8df83bb59f08e5d329e76435ba438b2ea54 -Author: Qunxin Liu -Date: Wed Apr 10 16:38:35 2019 -0700 + src/Makefile.sources | 1 + + src/hb-pool.hh | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 99 insertions(+) - [subset] Subsetting Name Table Step 4 - Add unit test and integration test +commit 8e4df1a152f3916613594fa1bac308efdb61d512 +Author: Behdad Esfahbod +Date: Tue Apr 2 20:20:53 2019 -0700 - test/api/Makefile.am | 2 + - test/api/fonts/nameID.expected.ttf | Bin 0 -> 170696 bytes - test/api/fonts/nameID.origin.ttf | Bin 0 -> 170976 bytes - test/api/hb-subset-test.h | 9 ++++ - test/api/test-subset-nameids.c | 58 +++++++++++++++++++++ - .../Roboto-Regular.abc.name-ids.61,62,63.ttf | Bin 0 -> 2168 bytes - .../basics/Roboto-Regular.abc.name-ids.61,63.ttf | Bin 0 -> 1988 bytes - .../basics/Roboto-Regular.abc.name-ids.61.ttf | Bin 0 -> 1792 bytes - .../basics/Roboto-Regular.abc.name-ids.62.ttf | Bin 0 -> 1740 bytes - .../basics/Roboto-Regular.abc.name-ids.63.ttf | Bin 0 -> 1716 bytes - test/subset/data/profiles/name-ids.txt | 1 + - test/subset/data/tests/basics.tests | 1 + - 12 files changed, 71 insertions(+) + [serialize] Disable packed_map again + + Ugh. Need to think of something else. -commit e501ea143d1e63974903cdb41932c50f4222ff4e -Author: Qunxin Liu -Date: Fri Apr 5 10:05:55 2019 -0700 + src/hb-serialize.hh | 1 + + 1 file changed, 1 insertion(+) - [subset] Subset name table step 3, add --nameids option to guide the - selection of which name records to keep in the subset method. +commit 31c1a83899147310b27bd40fac755c629cb59cef +Author: Behdad Esfahbod +Date: Tue Apr 2 20:17:27 2019 -0700 - src/hb-ot-name-table.hh | 28 ++++++++++++++++------------ - src/hb-subset-input.cc | 8 ++++++++ - src/hb-subset-input.hh | 3 ++- - src/hb-subset-plan.cc | 10 ++++++---- - src/hb-subset-plan.hh | 3 +++ - src/hb-subset.h | 3 +++ - util/hb-subset.cc | 1 + - util/options.cc | 45 +++++++++++++++++++++++++++++++++++++++++++++ - util/options.hh | 8 ++++++++ - 9 files changed, 92 insertions(+), 17 deletions(-) + [map] Protect more against pointer deref -commit 2637a81615c80443911a603cbd161ade525c79f1 -Author: Qunxin Liu -Date: Tue Apr 2 13:38:27 2019 -0700 + src/hb-map.hh | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) - [subset] subset name table step 2, add implementation for collecting subset - elements and serialize method +commit 5bffa9e375fe294718452ad51e4c5ff017a046b4 +Author: Behdad Esfahbod +Date: Tue Apr 2 20:13:16 2019 -0700 - src/hb-ot-name-table.hh | 131 ++++++++++++++++++++++++++++++++++++++++-------- - 1 file changed, 109 insertions(+), 22 deletions(-) + More -commit 408c1daeb4ff86d2204ed1bdd059513357ada392 -Author: Qunxin Liu -Date: Fri Mar 29 10:34:32 2019 -0700 + src/hb-map.hh | 5 +++++ + src/hb-set.hh | 9 ++++++++- + src/hb-vector.hh | 8 ++++---- + 3 files changed, 17 insertions(+), 5 deletions(-) - [subset] subset name table step 1, write out table unmodified, use accelerator to access - string +commit 5b66b033fd2cd9c95284d283f08d6789c7ec985d +Author: Behdad Esfahbod +Date: Tue Apr 2 19:27:02 2019 -0700 - src/hb-ot-name-table.hh | 53 +++++++++++++++++++++++++++++++++++++++++++++++++ - src/hb-subset.cc | 4 ++++ - 2 files changed, 57 insertions(+) + [serialize] Fix hb_hashmap_t<> for pointers and use in packed_map -commit 3a7f5bdd18314676425ec811199767a5f8e65a40 + src/hb-array.hh | 12 +++++++++++- + src/hb-map.hh | 22 ++++++++++++++-------- + src/hb-serialize.hh | 8 +++----- + src/hb-vector.hh | 1 + + 4 files changed, 29 insertions(+), 14 deletions(-) + +commit 42ab32cbbaf8b403c351953f091c0fbe8464c4cb Author: Behdad Esfahbod -Date: Fri Apr 26 14:40:01 2019 -0700 +Date: Tue Apr 2 18:41:33 2019 -0700 - Rewrite hb_is_signed() + [iter] Remove passing pointer to hb_iter() + + While doable with hb_deref_pointer() as well, we also would then + need to do it in a ton of places. Not worth it / messy. - src/hb-meta.hh | 20 +++++++++++--------- - 1 file changed, 11 insertions(+), 9 deletions(-) + src/hb-array.hh | 2 +- + src/hb-iter.hh | 5 ----- + src/test-iter.cc | 3 --- + 3 files changed, 1 insertion(+), 9 deletions(-) -commit 73c82f2301a52cf2111296b34691bc898a7a6363 +commit d0da547b3741323493398eed8975a76f4a5742c2 Author: Behdad Esfahbod -Date: Fri Apr 26 13:16:48 2019 -0700 +Date: Tue Apr 2 18:22:39 2019 -0700 - [iter] Fix hb_is_iterator_of() to actually check item type + [array] Use dagger for hashing array + + Also switch to better mixing. - src/hb-iter.hh | 20 +++++++++----------- - 1 file changed, 9 insertions(+), 11 deletions(-) + src/hb-array.hh | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) -commit c51f15ddfcae8578483693b761b81ceaebf05f2a +commit b6f29bf14153cac51b218e3aaba9e1b3aa747a8c Author: Behdad Esfahbod -Date: Fri Apr 26 13:03:41 2019 -0700 +Date: Tue Apr 2 18:12:01 2019 -0700 - [array] Adjust hb_sorted_array_t copy constructor/assignment to match hb_array_t + [iter] Accept pointers in hb_iter() + + No idea how to avoid dupicating code. Was hoping hb_deref_pointer() + would do it, but looks like a pointer can't bind to a universal + reference T&&. Humm. - src/hb-array.hh | 13 ++++++++++--- - 1 file changed, 10 insertions(+), 3 deletions(-) + src/hb-iter.hh | 5 +++++ + src/test-iter.cc | 3 +++ + 2 files changed, 8 insertions(+) -commit b2758c360cc08d7a0334aae11845d0c5d50c46af +commit fc24bb9046e7e39d52a245bdc3480a30095cb6ee Author: Behdad Esfahbod -Date: Fri Apr 26 12:58:06 2019 -0700 +Date: Tue Apr 2 17:49:52 2019 -0700 - [array] Use hb_is_cr_convertible_to() + [serialize] Towards maintaining packed_map - src/hb-array.hh | 14 ++------------ - 1 file changed, 2 insertions(+), 12 deletions(-) + src/hb-serialize.hh | 4 ++++ + 1 file changed, 4 insertions(+) -commit 8ecae793aa79056a312d3c8518106cfeca42390e +commit aa2293a55eaa39f4e77b60851bbdee56b1120225 Author: Behdad Esfahbod -Date: Fri Apr 26 12:57:56 2019 -0700 +Date: Tue Apr 2 17:42:10 2019 -0700 - [meta] Add hb_is_cr_convertible_to() + [serialize] Minor - src/hb-meta.hh | 5 +++++ - 1 file changed, 5 insertions(+) + src/hb-open-type.hh | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) -commit 52bb0346d319c322f117567a096fafa1bc804e26 +commit e42b82c828ecec6f534040dae5518e04643b5f10 Author: Behdad Esfahbod -Date: Fri Apr 26 12:52:28 2019 -0700 +Date: Tue Apr 2 17:21:54 2019 -0700 - [meta] Add hb_decay<> + [serialize] Handle non-nullable offsets - src/hb-meta.hh | 2 ++ - 1 file changed, 2 insertions(+) + src/hb-open-type.hh | 13 +++++++++---- + 1 file changed, 9 insertions(+), 4 deletions(-) -commit 474f3587cd18fdaf86b2068647fa03b107557d8c -Author: Michiharu Ariza -Date: Fri Apr 26 10:12:38 2019 -0700 +commit e04518bafc66224887bf7f478e1affb54bc7acd0 +Author: Behdad Esfahbod +Date: Tue Apr 2 17:20:04 2019 -0700 - copy retain_gids from input to plan + [serialize] Movce empty-object handling earlier - src/hb-subset-plan.cc | 1 + - src/hb-subset-plan.hh | 1 + - 2 files changed, 2 insertions(+) + src/hb-serialize.hh | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) -commit 3fc066314ac19005ea8157a6541412cfd24abbc2 +commit 7f73c9744e6c0e8dd37a208b75a4bc299bccbd4d Author: Behdad Esfahbod -Date: Wed Apr 24 16:41:57 2019 -0700 +Date: Tue Apr 2 17:12:24 2019 -0700 + + [serialize] Minor + + src/hb-open-type.hh | 14 +++++--------- + 1 file changed, 5 insertions(+), 9 deletions(-) + +commit 27d3bac8ef77d56f91a7bd88bed02c3f1aceba0a +Author: Michiharu Ariza +Date: Tue Apr 2 17:02:11 2019 -0700 - Another try at fixing cmake build + fix 2x2 component transform - CMakeLists.txt | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-var-gvar-table.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit c69f02784ac53a7fd13eee559559b38d8224ef59 +commit 5a3de4f4f8791139d2c04a66244001aba192ef6b Author: Behdad Esfahbod -Date: Wed Apr 24 16:31:37 2019 -0700 +Date: Tue Apr 2 16:53:05 2019 -0700 - Fix sign-compare error on 32-bit systems + [serialize] Allow offset links that have base offset from the object base + + Rarely used, but used, in name table or similar constructs. - src/hb-open-type.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-serialize.hh | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) -commit f2d20dd9d3b52f434f5fe9dbef82bd95eb499edf -Author: Behdad Esfahbod -Date: Wed Apr 24 15:08:27 2019 -0700 +commit edad6b2c450e22e67ae86c5f2328cca3c29aaad2 +Author: Ebrahim Byagowi +Date: Wed Apr 3 00:48:59 2019 +0430 - [THANKS] Add Ivan Kuckir - - https://github.com/harfbuzz/harfbuzz/issues/1633#issuecomment-485764140 + [test][iter] minor, fix double promotion warning - THANKS | 2 +- + src/test-iter.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 0ca358f21a2a6e86a3d5c145a70bb84ab6e2db32 -Author: Behdad Esfahbod -Date: Wed Apr 24 16:36:29 2019 -0400 +commit 8801b80d724d36f9e6547b7975aaf1cc1a355734 +Author: Michiharu Ariza +Date: Tue Apr 2 13:10:36 2019 -0700 - Try fixing cmake build + refix: orig_points must be saved before any adjustment - CMakeLists.txt | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-var-gvar-table.hh | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) -commit 59a8fa53533b10b9c25458d9ba2d68b7b01c3ff0 -Author: Behdad Esfahbod -Date: Wed Apr 24 12:19:13 2019 -0400 +commit ee58f6012e9570c8d56e23d14c605a2186d4a265 +Author: Michiharu Ariza +Date: Tue Apr 2 11:24:29 2019 -0700 - [iter] Add tests for casting to hb_iter_t<> base class for hb_sorted_array_t<> - - Something's phishy about hb_sorted_array_t<>. Can't get it work nicely with - change I'm making. Ugh.. + infer gvar deltas for each region (not after accumulation) - src/test-iter.cc | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) + src/hb-ot-var-gvar-table.hh | 74 ++++++++++++++++++++++----------------------- + 1 file changed, 37 insertions(+), 37 deletions(-) -commit 714307cc437f375f128e17e5ab01eba0c57aaf01 -Author: Behdad Esfahbod -Date: Wed Apr 24 10:56:12 2019 -0400 +commit 2c31652c8a9186068ee8958b46139121c51f1bf4 +Author: Michiharu Ariza +Date: Tue Apr 2 10:07:43 2019 -0700 - [iter] Remove fixed TODO + fix private_indices vs shared_indices - src/hb-iter.hh | 3 --- - 1 file changed, 3 deletions(-) + src/hb-ot-var-gvar-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 22da12318a3e9fd9955f24fd0092de1a4a1a940d -Author: Behdad Esfahbod -Date: Wed Apr 24 10:53:16 2019 -0400 +commit 062f5d6e7aa061358eb5874a8f3a3f3bd6e9f16f +Author: Ebrahim Byagowi +Date: Tue Apr 2 20:27:00 2019 +0430 - [map] Fix TODO + [test] minor, c style comments - src/hb-map.hh | 6 ++---- - src/hb-meta.hh | 6 ++++++ - src/hb-ot-cff1-table.cc | 1 - - src/hb-ot-cff2-table.cc | 1 - - src/hb.hh | 3 +-- - 5 files changed, 9 insertions(+), 8 deletions(-) + src/test-iter.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit 4c6136e976af4f7332f703f5a7625505ffc296b6 -Author: Behdad Esfahbod -Date: Wed Apr 24 10:44:24 2019 -0400 +commit afdbf960d6147ec607ddb2c780d3a83068f61357 +Author: Ebrahim Byagowi +Date: Tue Apr 2 20:25:06 2019 +0430 - [mutex] Remove TODO + [iter][test] Add another test for hb_reduce + + Different initial and accumulator types - src/hb-mutex.hh | 2 -- - 1 file changed, 2 deletions(-) + src/test-iter.cc | 6 ++++++ + 1 file changed, 6 insertions(+) -commit 0268db11965d022883d5ef2ef828c0635165b7bd +commit bfa02bef4546f448e048288c1162988c8c39322a Author: Behdad Esfahbod -Date: Wed Apr 24 10:43:40 2019 -0400 +Date: Mon Apr 1 21:36:13 2019 -0700 - [map] Use hb_invoke() with pointer-to-method + [serialize] Switch to tetris-packing - src/hb-algs.hh | 5 ++++- - src/hb-map.hh | 4 ++-- - src/test-algs.cc | 8 ++++++++ - 3 files changed, 14 insertions(+), 3 deletions(-) + src/hb-open-type.hh | 15 +++++++++++---- + 1 file changed, 11 insertions(+), 4 deletions(-) -commit 8f79a5750e8982f9ab73c0dc6a8534dffef74610 +commit f0ea3ac17bef98409d302b9f285e94015e069823 Author: Behdad Esfahbod -Date: Wed Apr 24 10:32:49 2019 -0400 +Date: Mon Apr 1 21:36:03 2019 -0700 - [algs] Add more hb_forward<>()'s + [serialize] Fix linking - src/hb-algs.hh | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) + src/hb-serialize.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit 42526d1697e2449fa23741f84721dcf2ce688af7 +commit 7c0e2054e0799ed89cdc5de8c1416d009c0029b5 Author: Behdad Esfahbod -Date: Wed Apr 24 10:24:33 2019 -0400 +Date: Mon Apr 1 21:32:29 2019 -0700 - [serialize] Fix SingleSubstFormat1 failure + [serialize] Minor - src/hb-ot-layout-gsub-table.hh | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) + src/hb-serialize.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 6cc9707c9c0885a3133b7844f615cdcdaeccec18 -Author: Behdad Esfahbod -Date: Wed Apr 24 10:22:06 2019 -0400 +commit dce9e5e622b94aaf8ba7e81dd6e09a0cead0c51f +Author: Michiharu Ariza +Date: Mon Apr 1 20:55:02 2019 -0700 - [serialize] Rename + fix get_start_tuple, get_end_tuple - src/hb-serialize.hh | 8 +++----- - 1 file changed, 3 insertions(+), 5 deletions(-) + src/hb-ot-var-gvar-table.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit 085793d6cd35a1590a66712f39260030367490db +commit 64d0f0893812fa1cb2746071d8b021560969526d Author: Behdad Esfahbod -Date: Wed Apr 24 10:15:59 2019 -0400 +Date: Mon Apr 1 16:50:28 2019 -0700 - Remove wrong TODOs + [cmap] Minor - src/hb-ot-layout-gsubgpos.hh | 2 +- - src/hb-ot-shape-complex-indic.cc | 1 - - src/hb-ot-shape-complex-khmer.cc | 4 ++-- - src/hb-ot-shape-complex-myanmar.cc | 3 ++- - src/hb-ot-shape-complex-use.cc | 4 ++-- - 5 files changed, 7 insertions(+), 7 deletions(-) + src/hb-ot-cmap-table.hh | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) -commit 915b9ea5f48d56df21419761477b2d4ba2843b54 +commit 2e675cc7b50b5a57ceddf799d63811801ffcfe94 Author: Behdad Esfahbod -Date: Wed Apr 24 10:07:19 2019 -0400 +Date: Mon Apr 1 16:45:50 2019 -0700 - [serialize] Add c->check_assign() + [subset] Call serialize start/end around it - To check for assignment overflows. + To be cleaned up. - src/hb-open-type.hh | 7 +++---- - src/hb-ot-layout-gsub-table.hh | 2 +- - src/hb-serialize.hh | 20 +++++++++++++------- - 3 files changed, 17 insertions(+), 12 deletions(-) + src/hb-subset.cc | 2 ++ + 1 file changed, 2 insertions(+) -commit 00a00bc1f23c681d64fbd4df33582ec0165e337a +commit abe33c6149719eb371c5f2b0d8c143550938129e Author: Behdad Esfahbod -Date: Wed Apr 24 10:01:30 2019 -0400 +Date: Mon Apr 1 16:45:40 2019 -0700 - Fix two TODOs + [serialize] Assert stack - src/hb-ot-layout-gsub-table.hh | 11 +++++------ - 1 file changed, 5 insertions(+), 6 deletions(-) + src/hb-serialize.hh | 1 + + 1 file changed, 1 insertion(+) -commit 11ab889a8d743304c8ec17920e209a514f46739d +commit 72e9b2c16cd1bc183226ca0aa8a58a5b1222573d Author: Behdad Esfahbod -Date: Wed Apr 24 09:55:24 2019 -0400 +Date: Mon Apr 1 16:17:30 2019 -0700 - Rename a few test programs + [serialize] Add add_link() to add link - src/Makefile.am | 24 +++++++++++----------- - ...est-size-params.cc => test-gpos-size-params.cc} | 0 - ...substitute.cc => test-gsub-would-substitute.cc} | 0 - src/{test-name-table.cc => test-ot-name.cc} | 0 - 4 files changed, 12 insertions(+), 12 deletions(-) + src/hb-serialize.hh | 26 +++++++++++++++++++++++--- + 1 file changed, 23 insertions(+), 3 deletions(-) -commit 12017db0bfe62e7777e1ab6ba5b14729dcd4c351 +commit 74addbecac3b8be699ac90b3853970f6c7efd0eb Author: Behdad Esfahbod -Date: Wed Apr 24 09:24:38 2019 -0400 +Date: Mon Apr 1 14:17:09 2019 -0700 - Move test code around + [serialize] Add default template type to push() - src/test-algs.cc | 8 ++++++++ - src/test-iter.cc | 9 --------- - 2 files changed, 8 insertions(+), 9 deletions(-) + src/hb-serialize.hh | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) -commit 27377a7e287dd39e3f7caad5c1e0691ae381ccf8 -Author: Behdad Esfahbod -Date: Wed Apr 24 09:22:14 2019 -0400 +commit b8642087e6c2ec96dc70fcef617128b6ce353a7e +Author: Ebrahim Byagowi +Date: Tue Apr 2 00:30:06 2019 +0430 - Rely on variadic parameter pack more + [iter] hb_reduce, accumulator with a different type - src/hb-open-type.hh | 16 ++++++++-------- - 1 file changed, 8 insertions(+), 8 deletions(-) + src/hb-iter.hh | 22 ++++++++++++---------- + src/test-iter.cc | 26 +++++++++++++++++++++++++- + 2 files changed, 37 insertions(+), 11 deletions(-) -commit 3ad20c38ade76aca8aed024014977ecb5f2b636e -Author: Behdad Esfahbod -Date: Wed Apr 24 09:09:00 2019 -0400 +commit e526414c759ebca82f1071cdeafe1160bcaa9637 +Author: Ebrahim Byagowi +Date: Sun Mar 31 12:41:58 2019 +0430 - [serialize] Fix a few overflow TODO items + [iter] Implement hb_reduce - src/hb-open-type.hh | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) + src/hb-iter.hh | 28 ++++++++++++++++++++++++++++ + src/test-iter.cc | 5 +++++ + 2 files changed, 33 insertions(+) -commit 175bdad8bff5b0e9732ab1fb97617a9293680fd4 +commit 72545cb83949571393f06b0f26c36adf461b967e +Author: Michiharu Ariza +Date: Mon Apr 1 16:49:15 2019 -0700 + + fixed off by one bug in apply_deltas_to_points() + + src/hb-ot-var-gvar-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f3aca6aa267f7687a0406c7c545aefb5eed300b2 Author: Behdad Esfahbod -Date: Tue Apr 23 23:57:11 2019 -0400 +Date: Sun Mar 31 21:37:14 2019 -0700 - One more variadic parameter pack use + [serialize] Implement linking + + Untested! - src/hb-aat-layout-common.hh | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) + src/hb-serialize.hh | 29 +++++++++++++++++++++++++++-- + 1 file changed, 27 insertions(+), 2 deletions(-) -commit 441cca235477a5399af214c9ac85320d4de69f0b +commit 17f0cfa7ea3a5f0946d8800b98c1582c05dad853 Author: Behdad Esfahbod -Date: Tue Apr 23 23:49:21 2019 -0400 +Date: Sun Mar 31 21:34:19 2019 -0700 - Use hb_forward() when forwarding parameter pack + Move BEInt to hb.hh + + I knows... - src/hb-open-type.hh | 32 ++++++++++++++++---------------- - src/hb-serialize.hh | 3 ++- - 2 files changed, 18 insertions(+), 17 deletions(-) + src/hb-machinery.hh | 88 ---------------------------------------------------- + src/hb.hh | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 89 insertions(+), 88 deletions(-) -commit 20f3134789f65b10f301c4635c9f80c2dda0fb97 +commit 78fc43f2930064cd6cf4229c1e4cb76edb8ed7f6 Author: Behdad Esfahbod -Date: Tue Apr 23 12:58:52 2019 -0400 +Date: Sun Mar 31 19:17:07 2019 -0700 - Use variadic templates in OffsetTo<> and various ArrayOf<>s + [iter] Fix up build, ouch + + Yeah, some things not very clear... - src/hb-open-type.hh | 145 ++++++++++++++++++---------------------------------- - 1 file changed, 49 insertions(+), 96 deletions(-) + src/hb-iter.hh | 8 ++++++-- + src/test-iter.cc | 4 ++-- + 2 files changed, 8 insertions(+), 4 deletions(-) -commit aa6692cb0079bbe1e003f211a321e8fe6a18ea94 -Author: Nathan Willis -Date: Tue Apr 23 17:56:44 2019 +0100 +commit e5d6fe9782a9fcde0786392c075c6c0b85c24829 +Author: Jonathan Kew +Date: Sun Mar 31 19:17:32 2019 +0100 - Usermanual: update Makefile SGML list. Again. + Don't skip setting the .end field of the first range + + Fixes a bug in CoverageFormat2::serialize whereby the first range + was not serialized correctly if it consists of only a single glyph ID. + This broke shaping of U+0626 in the Arabic fallback shaper, because it + is not found in the coverage table of the 'init' and 'medi' lookups. + + Also fix similar bug in ClassDefFormat2::serialize, noted during code + inspection (I haven't observed a case that was actually affected by + this, but it looks broken). + + Fixes https://github.com/harfbuzz/harfbuzz/issues/1504 - docs/Makefile.am | 1 + - 1 file changed, 1 insertion(+) + src/hb-ot-layout-common.hh | 14 +++++++++----- + 1 file changed, 9 insertions(+), 5 deletions(-) -commit 98c54cdef8b0615a95382bdba4ecd008789f8c9e -Author: Nathan Willis -Date: Tue Apr 23 17:48:42 2019 +0100 +commit 8a8d45b924cdb4343b4b11a7ef14e2d1fabb6f82 +Author: Behdad Esfahbod +Date: Sun Mar 31 19:00:09 2019 -0700 - Usermanual: add chapter on object model. + [iter] Adjust hb_copy() and use it + + Untested. - docs/harfbuzz-docs.xml | 1 + - docs/usermanual-object-model.xml | 249 +++++++++++++++++++++++++++++++++++++++ - 2 files changed, 250 insertions(+) + src/hb-iter.hh | 11 ++++------- + src/hb-vector.hh | 4 ++-- + 2 files changed, 6 insertions(+), 9 deletions(-) -commit 64ca2ffa4c88b961dcbd9d06be8ac7dd80ad8182 +commit ba4b7be45523e88c26f763f8a329cc43c13b98a1 Author: Ebrahim Byagowi -Date: Tue Apr 23 01:10:46 2019 -0700 +Date: Sun Mar 31 01:32:30 2019 -0700 - Fix clang's -Wmain complain (#1678) + Remove coretext_aat shaper (#1581) + + coretext_aat was a temporary shaper to redirect shaping of AAT fonts + to CoreText and leaving the rest for HarfBuzz. As HarfBuzz now supports + AAT and Chrome now actually ships that on a stable version on macOS, + we no longer care about such use-case. If a client really wants 100% + metrics compatibility with CoreText better to use it directly or through + our API. Replicating the same behavior still is possible using + hb_shape_full, something we don't care or like to offer anymore. + + Fixes https://github.com/harfbuzz/harfbuzz/issues/1478 - src/test-iter.cc | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) + src/hb-coretext.cc | 56 --------------------------------------------------- + src/hb-shaper-list.hh | 4 ---- + 2 files changed, 60 deletions(-) -commit 7c218351ab45c41e48147b2196393357f7b551d4 -Author: Ebrahim Byagowi -Date: Tue Apr 23 12:40:29 2019 +0430 +commit ef11305bfda0e261f0793acd81c9478df1719b1e +Author: Michiharu Ariza +Date: Sun Mar 31 00:23:58 2019 -0700 - .editorconfig, minor + fixed tt var extents - still doesn't work with vscode + max bounds were not correctly initialized - .editorconfig | 2 +- + src/hb-ot-glyf-table.hh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 25dd88efc6521b972babe1067c0de1b9d4f5dbe5 +commit f7700fc479c25599e89b9d59edaad66e103a742d +Merge: 43725d36 d6005b49 +Author: Michiharu Ariza +Date: Sat Mar 30 20:49:34 2019 -0700 + + Merge branch 'master' into var-subset + +commit d6005b49b32410543a8dfa93ce2a213223cf8f01 Author: Behdad Esfahbod -Date: Mon Apr 22 17:45:23 2019 -0400 +Date: Sat Mar 30 19:49:56 2019 -0700 - Err, fix hb_invoke() variadic + [serialize] Start implementing linking - src/hb-algs.hh | 6 +++--- - src/test-iter.cc | 5 ++++- - 2 files changed, 7 insertions(+), 4 deletions(-) + src/hb-serialize.hh | 15 ++++++++++++--- + 1 file changed, 12 insertions(+), 3 deletions(-) -commit c862a532df0bc3ce0b47f3fde9bf1dd300ff8bee +commit 313b3057c335da6baa4cd447bac95812992413b9 Author: Behdad Esfahbod -Date: Mon Apr 22 17:32:19 2019 -0400 +Date: Sat Mar 30 19:46:35 2019 -0700 - Add variadic arguments to hb_invoke() + [serializer] Implement dedup! - src/hb-algs.hh | 22 +++++++++++----------- - 1 file changed, 11 insertions(+), 11 deletions(-) + src/hb-serialize.hh | 18 +++++++++++++++--- + 1 file changed, 15 insertions(+), 3 deletions(-) -commit 9c724e48a2f5d61c31c79f0b4660f08e5d07db10 +commit b189bbc48fb4b7c251d30b26a57ad84d1cb6dbe4 Author: Behdad Esfahbod -Date: Mon Apr 22 15:37:10 2019 -0400 +Date: Sat Mar 30 19:41:48 2019 -0700 - [serializer] Add err_propagaged_error() + Implement hashing of objects + + Should be improved for hb_bytes_t. - src/hb-serialize.hh | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) + src/hb-algs.hh | 2 +- + src/hb-array.hh | 13 +++++++++++++ + src/hb-serialize.hh | 5 +++++ + src/hb-vector.hh | 5 +++++ + 4 files changed, 24 insertions(+), 1 deletion(-) -commit ae8da4b61b4cc3b55242b85fe7c63393d65bd6cf +commit d6b28057a5cc636138cd453947d3a2008f18729f Author: Behdad Esfahbod -Date: Mon Apr 22 15:25:11 2019 -0400 +Date: Sat Mar 30 19:31:51 2019 -0700 - Minor + Fix hb_hash(pointer) - src/hb-iter.hh | 9 ++++++--- - 1 file changed, 6 insertions(+), 3 deletions(-) + src/hb-algs.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 24da1d08603a7fe262ae88d687986efc0343956f +commit d74dc3ef65a159fe585e906deccdb32b570433aa Author: Behdad Esfahbod -Date: Mon Apr 22 15:20:25 2019 -0400 +Date: Sat Mar 30 19:26:37 2019 -0700 - Use variadic template args for propagate_error() - - Let's see if bots happy. - - Not sure where else we can use these. Mm. Maybe in hb_invoke(). + [serialize] Don't insert empty object into tree - src/hb-serialize.hh | 7 ++----- - 1 file changed, 2 insertions(+), 5 deletions(-) + src/hb-serialize.hh | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) -commit 9bab398462fa598047f34fd6d23e07a91305b1b3 +commit 7fd82283263f8caded4870d6e12f74c7e660fa8d Author: Behdad Esfahbod -Date: Mon Apr 22 15:16:35 2019 -0400 +Date: Sat Mar 30 19:16:20 2019 -0700 - Simplify propagate_error() + [serialize] Towards maintaining hashmap - src/hb-serialize.hh | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) + src/hb-algs.hh | 2 +- + src/hb-serialize.hh | 16 ++++++++++++++-- + src/hb-vector.hh | 1 + + 3 files changed, 16 insertions(+), 3 deletions(-) -commit ecac94ca763e80d217ba5db429745e8882b38464 +commit f254f45a1e6b1de6d83c97033773d20408772763 Author: Behdad Esfahbod -Date: Sun Apr 21 12:27:32 2019 -0400 +Date: Sat Mar 30 19:05:51 2019 -0700 - [docs] Remove fdo repo + [serialize] Only pack main object if there are other objects - Has not been updated. + Avoids a memmove for tables that don't use the object packing mechanism. - docs/harfbuzz-docs.xml | 6 +----- - 1 file changed, 1 insertion(+), 5 deletions(-) + src/hb-serialize.hh | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) -commit 8ed7655be89c658219ab702e34a79734ba0efb73 +commit 946d446f9b795f657d56ca443edbc0b77d660a50 Author: Behdad Esfahbod -Date: Sun Apr 21 12:25:19 2019 -0400 - - Update AUTHORS / COPYING +Date: Sat Mar 30 19:03:55 2019 -0700 - AUTHORS | 3 +++ - COPYING | 3 ++- - 2 files changed, 5 insertions(+), 1 deletion(-) + [serialize] Copy both sides of the buffer -commit a464cbeecea73aeaa03c262f49fed8584057d9bb -Author: Ebrahim Byagowi -Date: Fri Apr 19 12:14:09 2019 -0700 + src/hb-serialize.hh | 13 +++++++++---- + 1 file changed, 9 insertions(+), 4 deletions(-) - Revert "Add harfbuzzjs build configuration (#1636)" (#1675) - - This reverts commit 694cb1beeefe1c54b2e613d2d566a21e248a2c9c. +commit 8512dc565d310e9fd80d831282736284cc3ecd2e +Author: Behdad Esfahbod +Date: Sat Mar 30 19:01:23 2019 -0700 - CMakeLists.txt | 35 ----------------------------------- - 1 file changed, 35 deletions(-) + [serialize] Simplify copy -commit 694cb1beeefe1c54b2e613d2d566a21e248a2c9c -Author: Ebrahim Byagowi -Date: Fri Apr 19 07:51:04 2019 -0700 + src/hb-serialize.hh | 22 +++++++--------------- + 1 file changed, 7 insertions(+), 15 deletions(-) - Add harfbuzzjs build configuration (#1636) +commit 43725d36322b7277d515b958b5e894e1c892cede +Merge: 294d520f a7c63cd8 +Author: Michiharu Ariza +Date: Sat Mar 30 18:51:15 2019 -0700 - CMakeLists.txt | 35 +++++++++++++++++++++++++++++++++++ - 1 file changed, 35 insertions(+) + Merge branch 'master' into var-subset -commit 42f4bd6b801f96fc33a365db8ab6390e74cef05a +commit 0b1fe7b716628f7b7b4098da9ef544e1518008f5 Author: Behdad Esfahbod -Date: Thu Apr 18 19:04:59 2019 -0400 - - Minor warning fix again +Date: Sat Mar 30 18:48:26 2019 -0700 - src/hb-ot-map.cc | 20 ++++++++++---------- - test/api/test-ot-face.c | 2 +- - 2 files changed, 11 insertions(+), 11 deletions(-) + [serializer] Unbreak for now -commit 267fb9c7163e61c9cdbafbb16005bc659ec5a4a2 -Author: Michiharu Ariza -Date: Thu Apr 18 15:17:10 2019 -0700 + src/hb-serialize.hh | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) - add spaces +commit 10f062234eb7c762a36cf750e75fe6f74ee89a3d +Author: Behdad Esfahbod +Date: Sat Mar 30 18:44:01 2019 -0700 - src/hb-ot-cff1-table.hh | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + [map] Shuffle fini code -commit ba0386060d92dffcde2d14f9e523a46ea8713de2 -Author: Michiharu Ariza -Date: Thu Apr 18 14:53:35 2019 -0700 + src/hb-map.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) - fix oss-fuzz issue 14345 +commit e6b78003efbe02ba4542cadcc13bc1dd0b1d57b0 +Author: Behdad Esfahbod +Date: Sat Mar 30 18:33:30 2019 -0700 - src/hb-ot-cff1-table.hh | 3 ++- - ...testcase-minimized-hb-subset-fuzzer-5923632099885056 | Bin 0 -> 25847 bytes - 2 files changed, 2 insertions(+), 1 deletion(-) + [vector] Add move semantics -commit 63a2108480cca2d9c1a2f61d6642d70496f1a5e3 -Author: Michiharu Ariza -Date: Thu Apr 18 13:54:58 2019 -0700 + src/hb-vector.hh | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) - silence MVC warnings 3rd attempt +commit 4c4d3c3ed55a8f1eea20593c08322e61fe1cdd3c +Author: Behdad Esfahbod +Date: Sat Mar 30 18:30:50 2019 -0700 - src/hb-ot-cff1-table.cc | 5 +++-- - src/hb-ot-cff2-table.cc | 9 +++++---- - 2 files changed, 8 insertions(+), 6 deletions(-) + [vector] Add some move and forwarding -commit 705dde57fe7bd5aafe93f284db2aa809aad932dc -Author: Michiharu Ariza -Date: Thu Apr 18 11:32:10 2019 -0700 + src/hb-serialize.hh | 2 +- + src/hb-vector.hh | 8 ++++---- + 2 files changed, 5 insertions(+), 5 deletions(-) - silence MVC warnings 2nd attempt +commit 7c9ceabcef426ca6fc54b70db9dd8cb63937710b +Author: Behdad Esfahbod +Date: Sat Mar 30 18:19:36 2019 -0700 - src/hb-ot-cff1-table.cc | 4 ++-- - src/hb-ot-cff2-table.cc | 8 ++++---- - 2 files changed, 6 insertions(+), 6 deletions(-) + [meta] Add hb_move and hb_forward ala std:: -commit dd4c37529bcecee33d43015a852a3fcf9e978b7f -Author: Michiharu Ariza -Date: Thu Apr 18 10:38:57 2019 -0700 + src/hb-meta.hh | 11 +++++++++++ + 1 file changed, 11 insertions(+) - silence MVC warnings +commit 9a19b885f9136b0b7cdfa04679274cd4b6d16188 +Author: Behdad Esfahbod +Date: Sat Mar 30 18:14:30 2019 -0700 - src/hb-cff-interp-common.hh | 2 +- - src/hb-ot-cff1-table.cc | 4 ++-- - src/hb-ot-cff2-table.cc | 8 ++++---- - 3 files changed, 7 insertions(+), 7 deletions(-) + [serialize] Flesh out packing -commit 518e6e07f29d9bb7e532313fb0af6177d8022ea5 + src/hb-serialize.hh | 58 +++++++++++++++++++++++++++++++---------------------- + 1 file changed, 34 insertions(+), 24 deletions(-) + +commit 357c7c611cc20f86c646bd2d392c243140f92d34 Author: Behdad Esfahbod -Date: Thu Apr 18 12:21:25 2019 -0400 +Date: Sat Mar 30 18:13:57 2019 -0700 - Minor + [vector] Add copy constructor and assignment operator - src/hb-ot-map.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-vector.hh | 17 ++++++++++++++++- + 1 file changed, 16 insertions(+), 1 deletion(-) -commit 91d958acc08cb99ddd3b656922e13497b9d1595d +commit 6f69c9d26fa53cd8a2331395bbc146bfc85fd1e3 Author: Behdad Esfahbod -Date: Thu Apr 18 10:04:10 2019 -0400 +Date: Sat Mar 30 18:00:03 2019 -0700 - [array] Simplify copy assignment/constructor - - To fix bogus MSVC warnings: - - c:\projects\harfbuzz\src\hb-array.hh(189): warning C4521: 'hb_array_t': multiple copy constructors specified [C:\projects\harfbuzz\build\harfbuzz.vcxproj] - c:\projects\harfbuzz\src\hb-array.hh(189): warning C4522: 'hb_array_t': multiple assignment operators specified [C:\projects\harfbuzz\build\harfbuzz.vcxproj] + [serialize] Minor - src/hb-array.hh | 29 +++++++++++++++++++---------- - 1 file changed, 19 insertions(+), 10 deletions(-) + src/hb-serialize.hh | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) -commit 693d91cd49fda3e728b59e6885bea8d7b01958ef +commit a43290192beedc6335efc3841c05ec7fa54e8871 Author: Behdad Esfahbod -Date: Wed Apr 17 17:59:39 2019 -0400 +Date: Sat Mar 30 17:51:26 2019 -0700 - [serialize] Fix offset calculation + [serialize] Add packed_map - src/hb-serialize.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-map.hh | 7 +++++++ + src/hb-serialize.hh | 24 +++++++++++++++++++++--- + 2 files changed, 28 insertions(+), 3 deletions(-) -commit db0c9a1485ae6ca7ca9af38a43504f1ae4ea09c8 +commit bed150bd2e8d61950ea17d1b5a4bf4705801c1cc Author: Behdad Esfahbod -Date: Wed Apr 17 17:58:13 2019 -0400 +Date: Sat Mar 30 17:26:35 2019 -0700 - [subset] Assert offsets are zero during relocation - - If they're not, it's a bug in our subsetting logic somewhere. So check. + [serialize] Start fleshing out object stack - src/hb-serialize.hh | 2 ++ - 1 file changed, 2 insertions(+) + src/hb-serialize.hh | 91 ++++++++++++++++++++++++++++++++++++++--------------- + src/hb-vector.hh | 9 ++++-- + 2 files changed, 72 insertions(+), 28 deletions(-) -commit efbba7ad26dda5930f5d1bd5292304835432f504 +commit 63c35651893b2a1c555f728012e9ad36c0f84145 Author: Behdad Esfahbod -Date: Wed Apr 17 11:00:08 2019 -0400 +Date: Sat Mar 30 17:12:40 2019 -0700 - [serializer] Add copy() - - Calls obj.copy() or obj.operator=() in that order. + [serialize] Simplify propagate_error() - src/hb-serialize.hh | 18 ++++++++++++++++++ - 1 file changed, 18 insertions(+) + src/hb-serialize.hh | 9 ++------- + 1 file changed, 2 insertions(+), 7 deletions(-) -commit c67a0d581fcc50df5563c23060b4fcd9dac4c87c +commit dbe9ba6711c6d35374de645097babfd81bc295b2 Author: Behdad Esfahbod -Date: Wed Apr 17 10:20:02 2019 -0400 +Date: Sat Mar 30 17:10:59 2019 -0700 - Add HB_RETURN + [serialize] Add object_t, link_t, and snapshot_t - src/hb-algs.hh | 13 ++++++------- - src/hb-meta.hh | 34 ++++++++++++++++++++-------------- - 2 files changed, 26 insertions(+), 21 deletions(-) + src/hb-serialize.hh | 32 +++++++++++++++++++++++++++++++- + 1 file changed, 31 insertions(+), 1 deletion(-) -commit 6745a600bfec13b3f5468b3d31bab7d82b1e61ce -Author: David Corbett -Date: Tue Apr 16 17:29:34 2019 -0400 +commit 38d57b9a66008c9722125d4d677d759a910cf2a1 +Author: Behdad Esfahbod +Date: Sat Mar 30 16:38:06 2019 -0700 - Comment out ot_languages where fallback suffices + [map] Add another TODO item - src/gen-tag-table.py | 15 +- - src/hb-ot-tag-table.hh | 443 +++++++++++++++++++++++++------------------------ - src/hb-ot-tag.cc | 19 ++- - test/api/test-ot-tag.c | 5 +- - 4 files changed, 255 insertions(+), 227 deletions(-) + src/hb-map.hh | 2 ++ + 1 file changed, 2 insertions(+) -commit 5daeff3e68e4e202effb152f52702a044c09f386 -Author: David Corbett -Date: Wed Apr 17 09:11:44 2019 -0400 +commit 7fd940f899da4948d2c61ed497c1face42776187 +Author: Behdad Esfahbod +Date: Sat Mar 30 16:29:19 2019 -0700 - Fix "hb_script_" doc typo + [map] Add TODO - src/hb-common.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-map.hh | 8 ++++++++ + 1 file changed, 8 insertions(+) -commit 6916b77863cd5ce492a274eb85f196f2152fbb96 +commit 6dcf7c4017619c782dbc8bd2c584bb33df96fc83 Author: Behdad Esfahbod -Date: Tue Apr 16 18:33:51 2019 -0400 +Date: Sat Mar 30 15:08:39 2019 -0700 - One more auto return type + [serialize] Add unused 'tail' - src/hb-iter.hh | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/hb-serialize.hh | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) -commit 5b33427f2c4d596a12f05ffebebfd68655fd63eb +commit fe05e48086be9ed685b8a6ca4af966660744bc0f Author: Behdad Esfahbod -Date: Tue Apr 16 18:28:17 2019 -0400 +Date: Sat Mar 30 15:06:25 2019 -0700 - Rename HB_AUTO_RETURN_EXPR to HB_AUTO_RETURN + [serialize] Add ran_out_of_room - src/hb-algs.hh | 34 +++++++++++++++++----------------- - src/hb-meta.hh | 8 ++++---- - 2 files changed, 21 insertions(+), 21 deletions(-) + src/hb-serialize.hh | 8 +++++++- + src/hb-subset.cc | 7 ++++++- + 2 files changed, 13 insertions(+), 2 deletions(-) -commit da293b0e59a0d6c47e9b3a7807115a168a0a5c94 +commit a7c63cd8f8475c6de7fd5bb6444bf5d24082a191 Author: Behdad Esfahbod -Date: Tue Apr 16 18:27:25 2019 -0400 +Date: Sat Mar 30 14:59:40 2019 -0700 - Use HB_AUTO_RETURN_EXPR in hb_min/max + Split sanitize and dispatch into their own files - src/hb-algs.hh | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) + src/Makefile.sources | 2 + + src/hb-dispatch.hh | 50 +++++++ + src/hb-machinery.hh | 369 +----------------------------------------------- + src/hb-sanitize.hh | 388 +++++++++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 442 insertions(+), 367 deletions(-) -commit 0241a40f2aff43aba045fb7de4a2c3e5f1e9626a +commit be66b575fc15dbbe82cf1a7fa0b58020e86cffdc Author: Behdad Esfahbod -Date: Tue Apr 16 18:26:30 2019 -0400 +Date: Sat Mar 30 14:53:54 2019 -0700 - Use auto return type for hb_first/hb_second + Move serializer to hb-serialize.hh - src/hb-algs.hh | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) + src/Makefile.sources | 1 + + src/hb-machinery.hh | 164 +----------------------------------------- + src/hb-serialize.hh | 196 +++++++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 198 insertions(+), 163 deletions(-) -commit fe30fcd228ff95be1f169f580b30184c8511d1c3 +commit bb22462f292995a724bf20363adf52d3a8357a97 Author: Behdad Esfahbod -Date: Tue Apr 16 17:34:06 2019 -0400 +Date: Sat Mar 30 14:46:54 2019 -0700 - Use hb_deref_pointer() to reduce number of overloads + Whitespace - src/hb-algs.hh | 27 ++++++++++----------------- - src/hb-meta.hh | 36 +++++++++++++++++++----------------- - 2 files changed, 29 insertions(+), 34 deletions(-) + src/hb-machinery.hh | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) -commit c918a6706fa759696569ad6dcaae03fed76306bc +commit ef33b5d1f6d3ec21e15ad74ca2524a117f594e06 Author: Behdad Esfahbod -Date: Tue Apr 16 17:28:18 2019 -0400 +Date: Sat Mar 30 14:39:21 2019 -0700 - Properly prioritize hb_hash() + [map] Deref pointers before equality check - src/hb-algs.hh | 46 +++++++++++++++++++++++----------------------- - 1 file changed, 23 insertions(+), 23 deletions(-) + src/hb-map.hh | 6 ++++-- + src/hb-meta.hh | 4 ++-- + 2 files changed, 6 insertions(+), 4 deletions(-) -commit 75fd845a4abccc2596f0e1fe2294f936199e61f3 +commit c98f51da719d1792bf23b53a9a345926056bf34d Author: Behdad Esfahbod -Date: Tue Apr 16 17:22:29 2019 -0400 +Date: Sat Mar 30 14:30:22 2019 -0700 - Move around + [map] Templatize hb_map_t + + Template name is hb_hashmap_t. - src/hb-algs.hh | 25 ++++++++++++------------- - 1 file changed, 12 insertions(+), 13 deletions(-) + src/hb-map.hh | 65 ++++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 37 insertions(+), 28 deletions(-) -commit 973717175d46d62471772318bb0b607070c53ec7 -Author: Behdad Esfahbod -Date: Tue Apr 16 16:50:07 2019 -0400 +commit 294d520f6542198fa6cf08764f7732fe138e5c97 +Author: Michiharu Ariza +Date: Sat Mar 30 13:58:22 2019 -0700 - Fix priorities + more iter changes from master - src/hb-algs.hh | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) + src/hb-iter.hh | 4 ++-- + src/hb-ot-layout-gsubgpos.hh | 12 ++++++------ + src/test-iter.cc | 2 +- + 3 files changed, 9 insertions(+), 9 deletions(-) -commit 54ece299bcb3436763cc4f3b6b0ca11de8133b28 +commit 4b7f4dbc0cf58d87f4c91f059734e91e4d988480 Author: Behdad Esfahbod -Date: Tue Apr 16 16:45:53 2019 -0400 +Date: Sat Mar 30 13:48:32 2019 -0700 - Use type aliasing for meta-functions, ie. those returning a type + Add hb_deref_pointer() - src/hb-algs.hh | 3 ++- - src/hb-array.hh | 6 +++--- - src/hb-atomic.hh | 2 +- - src/hb-blob.hh | 2 +- - src/hb-common.cc | 2 +- - src/hb-ft.cc | 2 +- - src/hb-iter.hh | 2 +- - src/hb-meta.hh | 12 ++++++------ - src/hb-null.hh | 6 +++--- - 9 files changed, 19 insertions(+), 18 deletions(-) + src/hb-algs.hh | 18 +++++++++++++----- + src/hb-meta.hh | 8 ++++++++ + 2 files changed, 21 insertions(+), 5 deletions(-) -commit 1ce11b44375dae74e8984ace1db4f08c51ac9c38 -Author: David Corbett -Date: Tue Apr 16 10:04:45 2019 -0400 +commit 8f2ce82f7699e12b80986fcdf408f7b43358bcc8 +Author: Michiharu Ariza +Date: Sat Mar 30 11:50:24 2019 -0700 - Reduce LangTag from 3 language system tags to 1 + hb.hh from master - src/gen-tag-table.py | 13 +- - src/hb-ot-tag-table.hh | 2078 ++++++++++++++++++++++++------------------------ - src/hb-ot-tag.cc | 22 +- - 3 files changed, 1053 insertions(+), 1060 deletions(-) + src/hb.hh | 53 ----------------------------------------------------- + 1 file changed, 53 deletions(-) -commit 155e92f25908830bef192304a2039853f6f5d4b5 -Author: Behdad Esfahbod -Date: Tue Apr 16 11:35:09 2019 -0400 +commit 3bfd3a367cdd8714b151d2504148b772f1159558 +Author: Michiharu Ariza +Date: Sat Mar 30 00:27:02 2019 -0700 - Reduce NullPool size + fix build - src/hb-null.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/Makefile.sources | 1 + + 1 file changed, 1 insertion(+) -commit 4fc2d2d7248171c386c39630aa2612f240669a58 -Author: Behdad Esfahbod -Date: Tue Apr 16 11:24:42 2019 -0400 +commit c7ca8853ae286b685d8e3dea342c044237213341 +Author: Michiharu Ariza +Date: Sat Mar 30 00:11:58 2019 -0700 - [meta] Flesh out hb_invoke() + more change set() to = - src/hb-algs.hh | 14 ++++++++++++-- - 1 file changed, 12 insertions(+), 2 deletions(-) + src/hb-ot-layout-common.hh | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) -commit e03d9395aa79a29d731607bfd46533b700dc1a37 -Author: Behdad Esfahbod -Date: Tue Apr 16 11:20:16 2019 -0400 +commit d75b73a309d5b6064a6e13d9a7eb998e0ec53822 +Author: Michiharu Ariza +Date: Sat Mar 30 00:06:54 2019 -0700 - Comment + fix rebase errors + + .circleci/config.yml | 11 ----------- + src/hb-common.h | 2 +- + src/hb-directwrite.cc | 15 ++++++++++++++- + src/hb-directwrite.h | 3 +++ + src/hb-null.hh | 2 +- + 5 files changed, 19 insertions(+), 14 deletions(-) - src/hb-algs.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) +commit 3fbd242ba62835a5c41164807bfdb0e4f63260da +Author: Michiharu Ariza +Date: Fri Mar 29 23:53:06 2019 -0700 -commit b8e763fd7140b3e298863e04053ec0f3c73a6a70 -Author: Behdad Esfahbod -Date: Tue Apr 16 10:50:22 2019 -0400 + replace .set() with = + + remove .gitignore - [meta] Add hb_invoke() + .gitignore | 1 - + src/hb-ot-var-gvar-table.hh | 26 +++++++++++++------------- + src/hb-ot-var-hvar-table.hh | 18 +++++++++--------- + 3 files changed, 22 insertions(+), 23 deletions(-) - src/hb-algs.hh | 34 ++++++++++++++++++++++++++++++++-- - src/hb-iter.hh | 2 +- - 2 files changed, 33 insertions(+), 3 deletions(-) +commit 8a8965be39d909198d6c91d5a45aede6802ebd71 +Merge: cc94a9ed 3236623e +Author: Michiharu Ariza +Date: Fri Mar 29 23:38:16 2019 -0700 -commit a3fcb9a370ad7a3c205342f831d8529c81660466 -Author: Behdad Esfahbod -Date: Tue Apr 16 10:45:20 2019 -0400 + Merge branch 'var-subset' of https://github.com/harfbuzz/harfbuzz into var-subset - [meta] Add HB_AUTO_RETURN_EXPR, HB_VOID_RETURN_EXPR, hb_priority, hb_has(), hb_get() - - The first three based on range-v3. +commit cc94a9ed3b63cf74aa64c83a203137f16c6e152c +Merge: 435bc7f3 ce6093a9 +Author: Michiharu Ariza +Date: Fri Mar 29 18:41:38 2019 -0700 - src/hb-algs.hh | 46 ++++++++++++++++++++++++++++++++++++++++++++++ - src/hb-iter.hh | 7 ++++--- - src/hb-meta.hh | 32 +++++++++++++++----------------- - src/hb.hh | 2 +- - 4 files changed, 66 insertions(+), 21 deletions(-) + Merge branch 'var-subset' of https://github.com/harfbuzz/harfbuzz into var-subset + rebase master -commit ff68be31bf2ea82bf6bfcc6f993fb6806a895f97 +commit e5306927994e8e412dea5dd960b8b3ed4ca848eb Author: Behdad Esfahbod -Date: Tue Apr 16 09:59:08 2019 -0400 +Date: Fri Mar 29 23:31:07 2019 -0700 - Add hb_void_tt<> ala std::void_t + [iter] Fix bug in hb_any() and hb_none() - src/hb-meta.hh | 7 +++++++ - 1 file changed, 7 insertions(+) + src/hb-iter.hh | 4 ++-- + src/hb-ot-layout-gsubgpos.hh | 12 ++++++------ + src/test-iter.cc | 2 +- + 3 files changed, 9 insertions(+), 9 deletions(-) -commit 89fea21697adfbba5057dd1d69c9806ee86e5ca8 -Author: Behdad Esfahbod -Date: Mon Apr 15 17:36:09 2019 -0400 +commit ce6093a96ba4c68b4eb4f1cd4b695eb41f1fa334 +Merge: ddb84dce a1177fec +Author: Michiharu Ariza +Date: Fri Mar 29 10:32:45 2019 -0700 - Fix copyright + Merge branch 'var-subset' of https://github.com/harfbuzz/harfbuzz into var-subset - src/hb-iter.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) +commit a1177fec8f43a65bca6696378995d6d39d8f6330 +Merge: 58c8c7a4 f505b5d5 +Author: Michiharu Ariza +Date: Fri Mar 29 08:43:47 2019 -0700 -commit b7384c89e2685cec1b6761c918ec7d91e8ae3af8 + Merge branch 'master' into var-subset + + rebase master + +commit f505b5d5c9c05741a933b4b986503e1697bbdfdb Author: Behdad Esfahbod -Date: Mon Apr 15 16:53:10 2019 -0400 +Date: Fri Mar 29 22:55:02 2019 -0700 - [fuzzing] Run valgrind with --leak-check=full + [iter] Port remaining "for (auto" instances to daggers - test/fuzzing/run-shape-fuzzer-tests.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-layout-gsubgpos.hh | 35 +++++++++++++++++++++++------------ + 1 file changed, 23 insertions(+), 12 deletions(-) -commit 3ff66c00292b20325b0d991dfd5eee80284cb9a8 +commit 668d2d562fec797d779c6d6a43eb6e1c7cfbc07a Author: Behdad Esfahbod -Date: Mon Apr 15 16:52:21 2019 -0400 +Date: Fri Mar 29 22:48:38 2019 -0700 - [fuzzing] Fail if valgrind is requested but not found + [iter] One more dagger - test/fuzzing/run-shape-fuzzer-tests.py | 3 +++ - 1 file changed, 3 insertions(+) + src/hb-ot-layout-gsubgpos.hh | 13 +++++++------ + 1 file changed, 7 insertions(+), 6 deletions(-) -commit 07776b60965d503dfb7fb5c611397e40759b0bdc +commit d51452500f909803a346f26c71cf4b3f84f619bd Author: Behdad Esfahbod -Date: Mon Apr 15 16:43:34 2019 -0400 +Date: Fri Mar 29 22:48:12 2019 -0700 - More tweaks to previous commit - - Delete assignment operator of OffsetTo<> instead of Offset<>. + [iter] Remove more wrong &&'s - In simple ArrayOf<>::sanitize() assert that Type has assignment operator. - Ideally we should SFINAE this and fallback to calling Type::sanitize() - if assignment operator is not available. But we don't have a case of - that in the codebase. + Sigh... - src/hb-open-file.hh | 4 ++-- - src/hb-open-type.hh | 16 +++++++++++----- - 2 files changed, 13 insertions(+), 7 deletions(-) + src/hb-iter.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 699de689e9aa2246ba9207c07140ccd564f5ec20 +commit 05f2130a1c479afe7982e8ddcfb3d83af9960e5b Author: Behdad Esfahbod -Date: Mon Apr 15 16:00:20 2019 -0400 +Date: Fri Mar 29 22:40:13 2019 -0700 - Delete default assignment operator Offset<> + [iter] More daggers - src/hb-open-type.hh | 3 +++ - src/hb-ot-cmap-table.hh | 2 +- - src/hb-ot-layout-common.hh | 14 +++++++------- - 3 files changed, 11 insertions(+), 8 deletions(-) + src/hb-ot-layout-gsubgpos.hh | 110 +++++++++++++++++++++++++------------------ + 1 file changed, 64 insertions(+), 46 deletions(-) -commit 02d864aa26359b7f057e2aa81404309e17180d47 +commit 22ec4c3aa5aa41b7aa2a89290851ddd386273579 Author: Behdad Esfahbod -Date: Mon Apr 15 15:39:03 2019 -0400 +Date: Fri Mar 29 22:27:46 2019 -0700 - Add HB_FUNCOBJ() - - Fixes https://github.com/harfbuzz/harfbuzz/issues/1651 + [iter] More daggers - src/hb-algs.hh | 28 +++++++++++++++------------- - src/hb-iter.hh | 56 ++++++++++++++++++++++++++++---------------------------- - src/hb-meta.hh | 22 +++++++++++++--------- - src/hb.hh | 7 +++++++ - 4 files changed, 63 insertions(+), 50 deletions(-) + src/hb-ot-layout-gsubgpos.hh | 55 ++++++++++++++++++++++++++------------------ + 1 file changed, 33 insertions(+), 22 deletions(-) -commit 60be1450ad04612a6c2a6116036dbf3e436018de -Author: Nathan Willis -Date: Mon Apr 15 18:05:14 2019 +0100 +commit 688069bbfb40d69fb141371633cd499d91324cc2 +Author: Behdad Esfahbod +Date: Fri Mar 29 22:17:31 2019 -0700 - [Usermanual]: fix Tamil error in Why-do-I-need-a-shaping-engine section. + [iter] One more dagger - docs/usermanual-what-is-harfbuzz.xml | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/hb-ot-layout-gsub-table.hh | 13 +++++-------- + 1 file changed, 5 insertions(+), 8 deletions(-) -commit 38b1d0b9b2e798dd808a816a397323ed7ba697ab +commit 90b60bd6909ffc6d0bff3e6901057439460407ca Author: Behdad Esfahbod -Date: Mon Apr 15 12:44:31 2019 -0400 +Date: Fri Mar 29 22:12:42 2019 -0700 - Move static const to post-struct for a function object - - Just sending this to bots to see if all happy, then turn it into macro and - apply everywhere. + Remove HB_DEBUG_WOULD_APPLY - Part of https://github.com/harfbuzz/harfbuzz/issues/1651 + Not that useful. - src/hb-algs.hh | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/hb-debug.hh | 15 +--------- + src/hb-ot-layout-gsub-table.hh | 49 ++++++++++---------------------- + src/hb-ot-layout-gsubgpos.hh | 64 ++++++++++++++++++------------------------ + 3 files changed, 43 insertions(+), 85 deletions(-) -commit 19e800c9d881ec016ab2e5fcaadab55ab5188398 +commit 4d28267e59406cc85761131b84c5b2b4c65c6b35 Author: Behdad Esfahbod -Date: Mon Apr 15 12:07:00 2019 -0400 +Date: Fri Mar 29 22:04:15 2019 -0700 - Ugh. Another try, to unbreak gcc this time! - - Jenga. + [iter] Port more to daggers - src/hb-subset.cc | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) + src/hb-ot-layout-gsub-table.hh | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) -commit 3a88f55c15b625a0ad10fbfadf4562bcbb41ae53 +commit 9d8c72042b4a023b55cb39779407fdecaf098af1 Author: Behdad Esfahbod -Date: Mon Apr 15 11:59:57 2019 -0400 +Date: Fri Mar 29 21:59:28 2019 -0700 - Move location of HB_UNUSED to make MSVC happy + Whitespace - src/hb-subset.cc | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/hb-ot-layout-gpos-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 1ae265888e144328dbf1df796d379bf742c4151a +commit 418e9d07e2120f806852312f4c74204fa085a6cc Author: Behdad Esfahbod -Date: Mon Apr 15 11:31:40 2019 -0400 - - Fix gcc warning - - src/hb-array.hh | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) +Date: Fri Mar 29 21:57:26 2019 -0700 -commit c0ea37b557f53b50094042f11fe2611b1b30d725 -Author: Ebrahim Byagowi -Date: Mon Apr 15 00:34:04 2019 +0430 + Simplify code - [ci] Fix macOS glib issue + src/hb-ot-layout-gsub-table.hh | 20 +++----------------- + 1 file changed, 3 insertions(+), 17 deletions(-) - .circleci/config.yml | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) +commit f5ef8a7347656ad5f5bb8cec5f9a3de262a79411 +Author: Behdad Esfahbod +Date: Fri Mar 29 21:57:17 2019 -0700 -commit ad126036643e44a98c4c42d2a2a4a3b4a3649937 -Merge: 341b70a3 47e538a3 -Author: Nathan Willis -Date: Sun Apr 14 15:42:42 2019 +0100 + [iter] Port one more function to dagger - Merge branch 'master' of https://github.com/harfbuzz/harfbuzz + src/hb-ot-layout-gpos-table.hh | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) -commit cd9889cac3ac3b271f7335f3e94acc4667a59b40 -Author: Nathan Willis -Date: Sun Apr 14 15:33:56 2019 +0100 +commit bcab098c8f35ac4bef6618d949a7bf1d95869fa5 +Author: Behdad Esfahbod +Date: Fri Mar 29 21:49:18 2019 -0700 - Docs: update and extended GTK-Doc comments for hb-ot-math. + [iter] Port more code to daggers - src/hb-ot-math.cc | 133 ++++++++++++++++++++++++++++++++---------------------- - src/hb-ot-math.h | 21 +++++++++ - 2 files changed, 99 insertions(+), 55 deletions(-) + src/hb-ot-layout-gsub-table.hh | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) -commit 3f74b7a14bffb8e91cd98edd0c3ddf0b0ddc169a -Author: Nathan Willis -Date: Sun Apr 14 15:20:56 2019 +0100 +commit 4c75158e1803e73d6126f715aa4b22ebe30aa7c7 +Author: Behdad Esfahbod +Date: Fri Mar 29 21:46:13 2019 -0700 - Docs: Regularize GTK-Doc comments for hb-ot-color. + [iter] Port two more functions to daggers - src/hb-ot-color.cc | 136 ++++++++++++++++++++++++++++++----------------------- - src/hb-ot-color.h | 6 +-- - 2 files changed, 80 insertions(+), 62 deletions(-) + src/hb-ot-layout-gsub-table.hh | 29 +++++++++++++++++------------ + 1 file changed, 17 insertions(+), 12 deletions(-) -commit 47e538a35f9072e5775a65e2bf110ae895818321 +commit e70ccbe9edd4d5e033df4afa728b3593ba9f78af Author: Behdad Esfahbod -Date: Fri Apr 12 22:50:22 2019 -0400 +Date: Fri Mar 29 21:45:49 2019 -0700 - Add HB_NO_SUBSET_LAYOUT + Fix pair signature - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + Oh well. Again, who does fully understand what is right??? - src/hb-subset.cc | 10 +++++++++- - 1 file changed, 9 insertions(+), 1 deletion(-) + src/hb-algs.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit a98e4068e76d50bd9562d85a452b56e681f1d62b +commit 6237b47f0c59fd3913b19b23800cdf83eaa01fb6 Author: Behdad Esfahbod -Date: Fri Apr 12 22:42:44 2019 -0400 +Date: Fri Mar 29 21:36:49 2019 -0700 - Revert "Hide symbols in hb-iter" - - This reverts commit 98f14c4cdb837a962083a6702f401d41b4c1ec5c. - - Same as previous commit. + [iter] Add hb_unzip() - src/hb-iter.hh | 88 +++++++++++++++++++++++++++++----------------------------- - 1 file changed, 44 insertions(+), 44 deletions(-) + src/hb-iter.hh | 38 ++++++++++++++++++++++++++++++++++++++ + 1 file changed, 38 insertions(+) -commit dab92bdd4623aa7dac8eb00b14131566d75d095e +commit f1dad91eb3ce9dcdedbb4a0d6e34517db0154a84 Author: Behdad Esfahbod -Date: Fri Apr 12 22:39:38 2019 -0400 +Date: Fri Mar 29 21:17:08 2019 -0700 - Revert "Hide more symbols" - - This reverts commit 2e86d50915cf1a791da9acb95245aa820a3d70f4. - - I think the setup that caused me to do this is faulty and not hiding inlines. + Whitespace - src/hb-blob.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-layout-gsub-table.hh | 3 +++ + 1 file changed, 3 insertions(+) -commit 98f14c4cdb837a962083a6702f401d41b4c1ec5c +commit 896b31670d07cbe276feff1db249b64faa5c552c Author: Behdad Esfahbod -Date: Fri Apr 12 18:11:18 2019 -0400 +Date: Fri Mar 29 21:16:30 2019 -0700 - Hide symbols in hb-iter - - Painful. All template methods need to be explicitly hidden :(. - - Maybe we should switch to -fvisibility=hidden pragma. - - A LOT more to go. + [iter] Port two more loops to dagger - src/hb-iter.hh | 88 +++++++++++++++++++++++++++++----------------------------- - 1 file changed, 44 insertions(+), 44 deletions(-) + src/hb-ot-layout-gsub-table.hh | 14 +++++++++----- + 1 file changed, 9 insertions(+), 5 deletions(-) -commit 2e86d50915cf1a791da9acb95245aa820a3d70f4 +commit 8e34cb251a9b22d6fbc637fd2f25965beb260270 Author: Behdad Esfahbod -Date: Fri Apr 12 18:07:42 2019 -0400 +Date: Fri Mar 29 21:14:20 2019 -0700 - Hide more symbols - - Exposed by: + [iter] Remove unneeded && - $ make -j5 CPPFLAGS="-O0" CXXFLAGS=-flto=thin LDFLAGS=-lc++ && ./check-symbols.sh + Next commit needs this. I never fully get this, sigh. - src/hb-blob.hh | 2 +- + src/hb-iter.hh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit caa20e4ef9dff61a86312daec5d5a1df27d95ff7 +commit 12a4c0441ff13e56bb87f53eab45930c2a6142ed Author: Behdad Esfahbod -Date: Fri Apr 12 17:59:18 2019 -0400 +Date: Fri Mar 29 21:06:10 2019 -0700 - Hide a few more symbols - - Exposed by: - - $ make CPPFLAGS=-O0 + Whitespace - src/hb-array.hh | 4 ++-- - src/hb-meta.hh | 6 +++--- - 2 files changed, 5 insertions(+), 5 deletions(-) + src/hb-ot-layout-gsub-table.hh | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) -commit 95df00aec1996d521acdff6deff063ba98214fb9 +commit 4c38a9f6011a9b1dd6c4fc98620e23decc340322 Author: Behdad Esfahbod -Date: Fri Apr 12 17:50:03 2019 -0400 +Date: Fri Mar 29 20:23:07 2019 -0700 - Hide a few static methods - - Looks like static methods that do not get inlined end up exported. - We have a lot more. Need to protect all at some point. Wish there - was an easier way, like the visibility flag we pass that automatically - hides all inline methods. - - Was exposed by check-symbols.sh when compiling on OS X 10.14 with: + Remove hb_assign() - $ make CPPFLAGS=-Oz CXXFLAGS=-flto=thin LDFLAGS=-lc++ + Not needed anymore. We just use operator= now. - src/hb-aat-layout.hh | 2 +- - src/hb-aat-map.hh | 2 +- - src/hb-array.hh | 2 +- - src/hb-coretext.cc | 4 ++-- - src/hb-open-file.hh | 2 +- - src/hb-open-type.hh | 3 ++- - src/hb-ot-cmap-table.hh | 14 +++++++------- - src/hb-ot-layout-base-table.hh | 6 +++--- - src/hb-ot-layout-gpos-table.hh | 8 ++++---- - src/hb-ot-layout-gsub-table.hh | 8 ++++---- - src/hb-ot-layout-gsubgpos.hh | 2 +- - src/hb-ot-map.hh | 4 ++-- - src/hb-uniscribe.cc | 4 ++-- - 13 files changed, 31 insertions(+), 30 deletions(-) + src/hb-iter.hh | 2 +- + src/hb-machinery.hh | 2 +- + src/hb-null.hh | 13 ------------- + src/hb-open-type.hh | 2 +- + 4 files changed, 3 insertions(+), 16 deletions(-) -commit 2f4be4ba54b539fbadc31fc53bdcfca81d7db77a +commit b986c6a321f7d997eba0a9308b651966644bf336 Author: Behdad Esfahbod -Date: Fri Apr 12 16:21:58 2019 -0400 +Date: Fri Mar 29 20:17:46 2019 -0700 - Add HB_NO_OPTIONS - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + [C++11] Remove IntType::set() in favor of operator= - src/hb-debug.hh | 3 +++ - 1 file changed, 3 insertions(+) + src/hb-cff-interp-common.hh | 4 +- + src/hb-ft.cc | 2 +- + src/hb-null.hh | 6 --- + src/hb-open-file.hh | 14 +++--- + src/hb-open-type.hh | 43 +++++++++++------ + src/hb-ot-cff-common.hh | 24 +++++----- + src/hb-ot-cff1-table.hh | 32 ++++++------- + src/hb-ot-cmap-table.hh | 77 +++++++++++++++--------------- + src/hb-ot-glyf-table.hh | 2 +- + src/hb-ot-hdmx-table.hh | 12 ++--- + src/hb-ot-hmtx-table.hh | 8 ++-- + src/hb-ot-layout-common.hh | 44 ++++++++--------- + src/hb-ot-layout-gdef-table.hh | 8 ++-- + src/hb-ot-layout-gsub-table.hh | 18 +++---- + src/hb-ot-maxp-table.hh | 16 +++---- + src/hb-ot-os2-table.hh | 10 ++-- + src/hb-ot-post-table.hh | 2 +- + src/hb-ot-shape-complex-arabic-fallback.hh | 10 ++-- + src/hb-ot-vorg-table.hh | 12 ++--- + src/hb-subset-cff-common.cc | 12 ++--- + src/hb-subset-cff-common.hh | 2 +- + src/hb-subset-cff1.cc | 10 ++-- + src/hb-subset-cff2.cc | 8 ++-- + src/hb-subset-glyf.cc | 8 ++-- + src/hb-uniscribe.cc | 22 ++++----- + 25 files changed, 206 insertions(+), 200 deletions(-) -commit 079d2dcbb2607cda3daa497199090c5813a51de5 +commit 58ad357951a732f05d9680573d00a4764171a9dd Author: Behdad Esfahbod -Date: Fri Apr 12 15:00:37 2019 -0400 +Date: Fri Mar 29 20:05:19 2019 -0700 - Add HB_NO_NAME_TABLE_AAT + [vector] Accept all types in push(...) - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + Let assignment operator worry about conversion. - src/hb-ot-name-table.hh | 2 ++ - 1 file changed, 2 insertions(+) + src/hb-vector.hh | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) -commit 60a58aa61c09cafd12c432fdc1f7325f2a6d44bd +commit 489faf826ca16e9bc89515869ebaf52653450b54 Author: Behdad Esfahbod -Date: Fri Apr 12 14:58:53 2019 -0400 +Date: Fri Mar 29 20:01:37 2019 -0700 - Add HB_NO_OT_FONT_BITMAP - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + [C++11] Use type aliases for template partial instantiations - src/hb-ot-font.cc | 2 ++ - 1 file changed, 2 insertions(+) + src/hb-open-type.hh | 24 ++++++++++++++---------- + 1 file changed, 14 insertions(+), 10 deletions(-) -commit 160c4d8b2d9f6c205b713236f043081e6dd532ee -Author: Behdad Esfahbod -Date: Fri Apr 12 14:57:49 2019 -0400 +commit 3236623e1f4a11c23f8f2fb41d886d1255c2bc63 +Merge: 435bc7f3 d30e5e74 +Author: Michiharu Ariza +Date: Fri Mar 29 18:41:38 2019 -0700 - Add HB_NO_OT_FONT_CFF - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + Merge branch 'var-subset' of https://github.com/harfbuzz/harfbuzz into var-subset - src/hb-ot-font.cc | 2 ++ - 1 file changed, 2 insertions(+) +commit 435bc7f3e2290e108550ed460f4fdeacf25e9f28 +Author: Michiharu Ariza +Date: Fri Mar 29 18:39:30 2019 -0700 -commit 35f3b97fac3b106d345a06a4970f6adce182797b -Author: Behdad Esfahbod -Date: Fri Apr 12 10:16:12 2019 -0400 + Update hb-ot-var-gvar-table.hh - Add HB_NO_OT_SHAPE_COMPLEX_HEBREW_FALLBACK - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + src/hb-ot-var-gvar-table.hh | 1 - + 1 file changed, 1 deletion(-) - src/hb-ot-shape-complex-hebrew.cc | 4 ++++ - 1 file changed, 4 insertions(+) +commit 8fdb8fcf808da7d928aa289e0d1c432223fb1a26 +Author: Michiharu Ariza +Date: Fri Mar 29 18:39:27 2019 -0700 -commit 414c5de26b34c0c53f6f4b5f00ddc8e1a3b62ac2 -Author: Behdad Esfahbod -Date: Fri Apr 12 10:12:11 2019 -0400 + fix rebase errors - Add HB_NO_OT_SHAPE_FALLBACK - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + src/hb-ot-layout-common.hh | 21 ++++++-- + src/hb-ot-var-gvar-table.hh | 119 ++++++++++++++------------------------------ + 2 files changed, 54 insertions(+), 86 deletions(-) - src/hb-ot-shape-fallback.cc | 12 ++++++++++++ - 1 file changed, 12 insertions(+) +commit 1ccb457cbb7be2466536661d76d62de9fe582639 +Author: Michiharu Ariza +Date: Fri Mar 29 18:28:25 2019 -0700 -commit fe0018f7ef804acefa729e888f5a9935e571079d + fix gvar fuzz bug + + src/hb-ot-var-gvar-table.hh | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +commit 3f84589232b5a6397e711774351bfe8dc6b1cfd7 Author: Behdad Esfahbod -Date: Fri Apr 12 09:35:29 2019 -0400 +Date: Thu Mar 28 21:21:26 2019 -0700 - Add HB_NO_OT_SHAPE_COMPLEX_THAI_FALLBACK - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + 2.4.0 - src/hb-ot-shape-complex-thai.cc | 4 ++++ - 1 file changed, 4 insertions(+) + NEWS | 11 +++++++++++ + configure.ac | 2 +- + src/hb-buffer.h | 2 +- + src/hb-version.h | 6 +++--- + 4 files changed, 16 insertions(+), 5 deletions(-) -commit 9ddbfa006d752f6ddd3610ff968f84cf18dec031 +commit 282c76d9a01cbe4300d9306d391c387f1890c391 Author: Behdad Esfahbod -Date: Fri Apr 12 09:33:25 2019 -0400 +Date: Thu Mar 28 21:00:58 2019 -0700 - Add HB_NO_OT_LAYOUT_BLACKLIST + Use internal bsearch() for language tags - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + Fixes https://github.com/harfbuzz/harfbuzz/pull/1639 - src/hb-ot-layout.cc | 9 +++++++++ - 1 file changed, 9 insertions(+) + src/hb-ot-tag.cc | 46 ++++++++++++++++++++++------------------------ + 1 file changed, 22 insertions(+), 24 deletions(-) -commit 571fad4cf17d90434562d1b6f5d08b6f27343c7a +commit 3bed03dc6aded78037b09f21ea1defe842bfb73c Author: Behdad Esfahbod -Date: Thu Apr 11 17:54:38 2019 -0400 +Date: Thu Mar 28 20:50:04 2019 -0700 - Add HB_NO_OT_SHAPE_COMPLEX_VOWEL_CONSTRAINTS + [indic] Add back medial-consonant to grammar - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + Fixes https://github.com/harfbuzz/harfbuzz/issues/1592 - src/hb-ot-shape-complex-vowel-constraints.cc | 3 +++ - 1 file changed, 3 insertions(+) + src/hb-ot-shape-complex-indic-machine.hh | 1244 +++++++++++--------- + src/hb-ot-shape-complex-indic-machine.rl | 5 +- + src/hb-ot-shape-complex-indic.cc | 2 +- + src/hb-ot-shape-complex-indic.hh | 6 +- + .../f75c4b05a0a4d67c1a808081ae3d74a9c66509e8.ttf | Bin 0 -> 1924 bytes + .../data/in-house/tests/indic-syllable.tests | 2 + + 6 files changed, 672 insertions(+), 587 deletions(-) -commit 3db227265bc0790ffd718bf265d245c78598a49d -Author: Nathan Willis -Date: Tue Apr 2 18:49:40 2019 +0100 +commit f8803fbacec52d633adc37acfd2c9c79c4c12041 +Author: Behdad Esfahbod +Date: Thu Mar 28 20:23:12 2019 -0700 - Update gtk-doc annotations for inout counts on various getter functions. + [khmer] Add trailing Coeng to syllable grammar + + Fixes https://github.com/harfbuzz/harfbuzz/issues/1541 - src/hb-ot-layout.cc | 122 ++++++++++++++++++++++++++++++---------------------- - 1 file changed, 70 insertions(+), 52 deletions(-) + src/hb-ot-shape-complex-khmer-machine.hh | 248 ++++++++++----------- + src/hb-ot-shape-complex-khmer-machine.rl | 2 +- + .../ad01ab2ea1cb1a4d3a2783e2675112ef11ae6404.ttf | Bin 0 -> 1500 bytes + test/shaping/data/in-house/tests/khmer-misc.tests | 1 + + 4 files changed, 122 insertions(+), 129 deletions(-) -commit c08ddbd91b7f0fffe761638a2ee4893304b012db -Author: Nathan Willis -Date: Sun Mar 24 15:07:07 2019 +0000 +commit 93a6a063dc448b7b8303fe10fc9bbf1c2298b5f8 +Author: Ebrahim Byagowi +Date: Thu Mar 28 16:57:56 2019 -0700 - [Docs] Minor edits to gtk-doc inline comment review. + [ci] Tweak macos and psvita bots (#1638) + + * Add --with-graphite2 to macOS + * Add a dummy ragel script for psvita - src/hb-ot-layout.cc | 21 +++++++++++++-------- - 1 file changed, 13 insertions(+), 8 deletions(-) + .circleci/config.yml | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) -commit af5230bce39020cf6fc87ee5e21cca3ba201a417 -Author: Nathan Willis -Date: Mon Mar 18 14:03:16 2019 +0000 +commit f84342c094727a41be6225d484d30170d1ddf118 +Author: Michiharu Ariza +Date: Thu Mar 28 16:17:36 2019 -0700 - [Docs] Minor; fix formatting for gtk-doc multiple-annotations. + minor - src/hb-ot-layout.cc | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) + src/hb-ot-var-hvar-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 6c0a1e8cd67144d20c8b5fcad23953910eeeea51 -Author: Nathan Willis -Date: Sun Mar 17 14:50:47 2019 +0000 +commit 7e8c4585accc9608a7cb167279ab1ca9e6e1f779 +Author: Ebrahim Byagowi +Date: Thu Mar 28 15:42:45 2019 -0700 - [Docs] Annotate gtk-doc formatting with some un-annotated (out)s. + [ci] Use only CircleCI for macOS (#1637) - src/hb-ot-layout.cc | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) + .circleci/config.yml | 5 +++-- + .travis.yml | 18 ------------------ + 2 files changed, 3 insertions(+), 20 deletions(-) -commit 5122805c740961d4fdfbff440ed68792b63d50ed -Author: Nathan Willis -Date: Sun Mar 17 14:43:06 2019 +0000 +commit 3e18447c6445f4d5e35f706f086872a21f46e9f4 +Author: Michiharu Ariza +Date: Thu Mar 28 15:07:49 2019 -0700 - [Docs] Fix gtk-doc formatting for (out) and (inout). + fixed a fuzzer bug - src/hb-ot-layout.cc | 108 ++++++++++++++++++++++++++-------------------------- - 1 file changed, 54 insertions(+), 54 deletions(-) + src/hb-ot-var-hvar-table.hh | 1 + + 1 file changed, 1 insertion(+) -commit d3178aa52ae822ac6af606027ac8150ded0a2966 -Author: Nathan Willis -Date: Sun Mar 17 14:27:27 2019 +0000 +commit 4774283a2c8c286bc431fa1c56950ece3b57f13f +Author: Behdad Esfahbod +Date: Thu Mar 28 13:44:38 2019 -0700 - [Docs] Fix gtk-doc references to 'kern' table functions, clarifying that GPOS is not examined. + Fix shell syntax error + + Fixes https://github.com/harfbuzz/harfbuzz/issues/1612 - src/hb-ot-layout.cc | 10 +++++++--- - 1 file changed, 7 insertions(+), 3 deletions(-) + src/check-symbols.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 3449031fad9dff7acedde7dceb0e47db708fc025 -Author: Nathan Willis -Date: Sat Mar 16 15:38:08 2019 +0000 +commit 4b763affa640735cf5c7382e15f16dbcb88cf54e +Author: Behdad Esfahbod +Date: Thu Mar 28 11:11:52 2019 -0700 - [Docs] Add inline gtk-doc documentation of GDEF glyph classes. + Comment - src/hb-ot-layout.h | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) + src/hb.hh | 1 + + 1 file changed, 1 insertion(+) -commit 930f6fc3da04ce1897e65862fccb03afa9d3a780 -Author: Nathan Willis -Date: Sat Mar 16 15:10:21 2019 +0000 +commit d9d6649bf2de061704651eb2b7f57f4434e75c49 +Author: punchcutter +Date: Wed Mar 27 23:12:58 2019 -0700 - [Docs] Add inlind gtk-doc comments for hb-ot-layout functions. + Override USE category for Grantha and Tirhuta visargas to allow marks - src/hb-ot-layout.cc | 456 +++++++++++++++++++++++++++++++++++++++++++++++++++- - src/hb-ot-layout.h | 11 ++ - 2 files changed, 462 insertions(+), 5 deletions(-) + src/gen-use-table.py | 3 ++- + src/hb-ot-shape-complex-use-table.cc | 4 ++-- + 2 files changed, 4 insertions(+), 3 deletions(-) -commit b52c0e54b9855a1f3d400e4dbcd0372520f2c2fc -Author: Behdad Esfahbod -Date: Thu Apr 11 11:20:10 2019 -0400 +commit 13ae138af3e108eb81a0df907f1232f581245091 +Author: Egor Pugin +Date: Thu Mar 28 19:06:12 2019 +0300 - Use injected class name to simplify macros + Disable unwanted C++ definitions for MSVC. + + MSVC does not set __cplusplus to the latest standard and also it does not like redefining some keywords. - src/hb-open-type.hh | 10 +++++----- - src/hb.hh | 14 -------------- - 2 files changed, 5 insertions(+), 19 deletions(-) + src/hb.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit baf1e79075b0f917b79484446cd2ca47b58f50aa -Author: Behdad Esfahbod -Date: Thu Apr 11 11:18:04 2019 -0400 +commit 53d40426e10f14b2b4e583b7d51f23bfefbd0700 +Author: Michiharu Ariza +Date: Wed Mar 27 08:52:46 2019 -0700 - [C++11] Use deleted methods + tweaked recursion checks - src/hb.hh | 30 +++++++++++++++--------------- - 1 file changed, 15 insertions(+), 15 deletions(-) + src/hb-ot-glyf-table.hh | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) -commit 824fd342d5d66584a5ed88951e05975f33c55617 -Author: Behdad Esfahbod -Date: Thu Apr 11 11:16:01 2019 -0400 +commit dc07ecbd80814f79733ce3a2662d17bcbb54b1e9 +Author: Ebrahim Byagowi +Date: Wed Mar 27 16:38:39 2019 +0430 - Rename a few macros + [ci] remove ragel from psvita compile bot - src/hb-map.hh | 2 +- - src/hb-open-type.hh | 10 +++++----- - src/hb-set.hh | 2 +- - src/hb.hh | 12 ++++++------ - 4 files changed, 13 insertions(+), 13 deletions(-) + .circleci/config.yml | 1 - + 1 file changed, 1 deletion(-) -commit edfc6be4a0362efa5c1d39f4792a28b5726c3ce5 -Author: Behdad Esfahbod -Date: Wed Apr 10 15:53:48 2019 -0400 +commit dd3624b6d5186e910dd70dd6939192507324b089 +Author: Ebrahim Byagowi +Date: Wed Mar 27 16:21:47 2019 +0430 - [arabic] Disable fallback shaping if HB_NO_OT_SHAPE_COMPLEX_ARABIC_FALLBACK defined + [ci] Don't install ragel on cmake build bot images - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + It is not needed anyway - src/hb-ot-shape-complex-arabic-fallback.hh | 1 - - src/hb-ot-shape-complex-arabic.cc | 4 ++++ - 2 files changed, 4 insertions(+), 1 deletion(-) + .circleci/config.yml | 5 ----- + 1 file changed, 5 deletions(-) -commit 4d31662b5da20790f6f860cec8f5fdabf48210f0 -Author: Behdad Esfahbod -Date: Wed Apr 10 15:40:03 2019 -0400 +commit 4f351754bbb91795b373e12c2c004f59c071af1d +Author: Michiharu Ariza +Date: Tue Mar 26 20:35:01 2019 -0700 - Don't install ot-font funcs on new fonts if HB_NO_OT_FONT defined - - Currently linker cannot GC hb-ot-font completely because we install - it on fonts by default. Don't do that if HB_NO_OT_FONT defined. - - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + add recursion checks - src/hb-font.cc | 2 ++ - 1 file changed, 2 insertions(+) + src/hb-ot-glyf-table.hh | 24 ++++++++++++++---------- + 1 file changed, 14 insertions(+), 10 deletions(-) -commit b111b3de020cde6fb0686efc224cace4608f2e45 -Author: Behdad Esfahbod -Date: Wed Apr 10 15:38:15 2019 -0400 +commit 0008963b28d57f180bcd7930d63b451381f4a02f +Author: Michiharu Ariza +Date: Tue Mar 26 17:10:46 2019 -0700 - Don't use any default unicode funcs if HB_NO_UNICODE_FUNCS is defined + add support of anchor point & SCALED/UNSCALED_COMPONENT_OFFSET - Part of https://github.com/harfbuzz/harfbuzz/issues/1652 + some code cleanup - src/hb-unicode.cc | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) + src/hb-ot-glyf-table.hh | 166 ++++++++++++++------- + src/hb-ot-var-gvar-table.hh | 38 ++++- + test/api/fonts/SourceSansVariable-Roman.anchor.ttf | Bin 0 -> 4708 bytes + test/api/test-ot-metrics-tt-var.c | 33 ++++ + 4 files changed, 179 insertions(+), 58 deletions(-) -commit c5509be93a351177724f2891dd5e9ddb02553452 -Author: Behdad Esfahbod -Date: Mon Apr 8 14:50:58 2019 -0400 +commit ea281aa8d07dac2b90bf4762882a3f3d2bca8249 +Author: Behdad Esfahbod +Date: Tue Mar 26 16:18:03 2019 -0700 - [coretext] Fix unused-variable error + Use class templates for Null objects - Fixes https://github.com/harfbuzz/harfbuzz/issues/1659 + This allows partial-instantiating custom Null object for template Lookup. + Before, this had to be handcoded per instantiation. Apparently I missed + adding one for AAT::ankr.lookupTable, so it was getting the wrong (generic) + null for Lookup object, which is wrong and unsafe. + + Fixes https://bugs.chromium.org/p/chromium/issues/detail?id=944346 - src/hb-coretext.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-aat-layout-common.hh | 14 ++++------ + src/hb-null.hh | 31 +++++++++++++-------- + ...case-minimized-harfbuzz_fuzzer-5748102301614080 | Bin 0 -> 213 bytes + 3 files changed, 24 insertions(+), 21 deletions(-) -commit 4c19aa26204d0dc2f08b6e4a824e9088301f68d8 -Author: Maks Naumov -Date: Fri Apr 5 21:46:27 2019 +0300 +commit 1dfc2dfff57802633d819a66708c210f76174461 +Author: Behdad Esfahbod +Date: Tue Mar 26 16:17:45 2019 -0700 - Fix MSVC C4068 warning (#1656) + [aat] Add missing check to ankr table + + Isn't absolutely needed. But helps. - src/hb-blob.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-aat-layout-ankr-table.hh | 1 + + 1 file changed, 1 insertion(+) -commit e44b83aac0443bd23df15b505a3d638883621b0e -Author: Michiharu Ariza -Date: Fri Apr 5 10:15:08 2019 -0700 +commit 782961d216f53ff3237bdb6fd9544f54a1bc69a5 +Author: Behdad Esfahbod +Date: Mon Mar 25 15:15:37 2019 -0700 - replace test font SourceHanSans with its subet + [docs] Update - ...gular.default.3042,3044,3046,3048,304A,304B.otf | Bin 6356 -> 0 bytes - ...gular.default.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 6564 -> 0 bytes - .../SourceHanSans-Regular.default.61,63,65,6B.otf | Bin 5532 -> 0 bytes - ...gular.default.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 6780 -> 0 bytes - .../SourceHanSans-Regular.default.660E.otf | Bin 5248 -> 0 bytes - ...e-retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 537992 -> 0 bytes - ...e-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 692312 -> 0 bytes - ...ular.desubroutinize-retain-gids.61,63,65,6B.otf | Bin 531624 -> 0 bytes - ...e-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 692496 -> 0 bytes - ...ans-Regular.desubroutinize-retain-gids.660E.otf | Bin 613836 -> 0 bytes - ...esubroutinize.3042,3044,3046,3048,304A,304B.otf | Bin 6272 -> 0 bytes - ...esubroutinize.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 6456 -> 0 bytes - ...eHanSans-Regular.desubroutinize.61,63,65,6B.otf | Bin 5460 -> 0 bytes - ...esubroutinize.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 6572 -> 0 bytes - .../SourceHanSans-Regular.desubroutinize.660E.otf | Bin 5224 -> 0 bytes - ...e-retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 537424 -> 0 bytes - ...e-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 691692 -> 0 bytes - ...ints-desubroutinize-retain-gids.61,63,65,6B.otf | Bin 531124 -> 0 bytes - ...e-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 691808 -> 0 bytes - ....drop-hints-desubroutinize-retain-gids.660E.otf | Bin 613348 -> 0 bytes - ...esubroutinize.3042,3044,3046,3048,304A,304B.otf | Bin 6096 -> 0 bytes - ...esubroutinize.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 6204 -> 0 bytes - ...gular.drop-hints-desubroutinize.61,63,65,6B.otf | Bin 5344 -> 0 bytes - ...esubroutinize.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 6268 -> 0 bytes - ...Sans-Regular.drop-hints-desubroutinize.660E.otf | Bin 5120 -> 0 bytes - ...s-retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 537492 -> 0 bytes - ...s-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 691788 -> 0 bytes - ...-Regular.drop-hints-retain-gids.61,63,65,6B.otf | Bin 531164 -> 0 bytes - ...-Regular.drop-hints-retain-gids.61,63,65,6B.ttx | 393879 ------------------ - ...s-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 692008 -> 0 bytes - ...HanSans-Regular.drop-hints-retain-gids.660E.otf | Bin 613368 -> 0 bytes - ...ar.drop-hints.3042,3044,3046,3048,304A,304B.otf | Bin 6164 -> 0 bytes - ...ar.drop-hints.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 6300 -> 0 bytes - ...ourceHanSans-Regular.drop-hints.61,63,65,6B.otf | Bin 5376 -> 0 bytes - ...ar.drop-hints.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 6472 -> 0 bytes - .../SourceHanSans-Regular.drop-hints.660E.otf | Bin 5140 -> 0 bytes - ...r.retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 538076 -> 0 bytes - ...r.retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 692420 -> 0 bytes - ...urceHanSans-Regular.retain-gids.61,63,65,6B.otf | Bin 531704 -> 0 bytes - ...r.retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 692700 -> 0 bytes - .../SourceHanSans-Regular.retain-gids.660E.otf | Bin 613860 -> 0 bytes - ...ubset.default.3042,3044,3046,3048,304A,304B.otf | Bin 0 -> 3028 bytes - ...ubset.default.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 0 -> 3240 bytes - ...eHanSans-Regular_subset.default.61,63,65,6B.otf | Bin 0 -> 2200 bytes - ...ubset.default.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 0 -> 3460 bytes - .../SourceHanSans-Regular_subset.default.660E.otf | Bin 0 -> 1920 bytes - ...e-retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 0 -> 90956 bytes - ...e-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 0 -> 125820 bytes - ...bset.desubroutinize-retain-gids.61,63,65,6B.otf | Bin 0 -> 88392 bytes - ...e-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 0 -> 126004 bytes - ...ular_subset.desubroutinize-retain-gids.660E.otf | Bin 0 -> 103780 bytes - ...esubroutinize.3042,3044,3046,3048,304A,304B.otf | Bin 0 -> 2952 bytes - ...esubroutinize.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 0 -> 3136 bytes - ...s-Regular_subset.desubroutinize.61,63,65,6B.otf | Bin 0 -> 2132 bytes - ...esubroutinize.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 0 -> 3256 bytes - ...eHanSans-Regular_subset.desubroutinize.660E.otf | Bin 0 -> 1896 bytes - ...e-retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 0 -> 90656 bytes - ...e-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 0 -> 125468 bytes - ...ints-desubroutinize-retain-gids.61,63,65,6B.otf | Bin 0 -> 88156 bytes - ...e-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 0 -> 125584 bytes - ....drop-hints-desubroutinize-retain-gids.660E.otf | Bin 0 -> 103556 bytes - ...esubroutinize.3042,3044,3046,3048,304A,304B.otf | Bin 0 -> 2792 bytes - ...esubroutinize.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 0 -> 2896 bytes - ...ubset.drop-hints-desubroutinize.61,63,65,6B.otf | Bin 0 -> 2028 bytes - ...esubroutinize.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 0 -> 2964 bytes - ...gular_subset.drop-hints-desubroutinize.660E.otf | Bin 0 -> 1804 bytes - ...s-retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 0 -> 90724 bytes - ...s-retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 0 -> 125560 bytes - ...r_subset.drop-hints-retain-gids.61,63,65,6B.otf | Bin 0 -> 88196 bytes - ...s-retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 0 -> 125780 bytes - ...-Regular_subset.drop-hints-retain-gids.660E.otf | Bin 0 -> 103572 bytes - ...et.drop-hints.3042,3044,3046,3048,304A,304B.otf | Bin 0 -> 2848 bytes - ...et.drop-hints.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 0 -> 2988 bytes - ...nSans-Regular_subset.drop-hints.61,63,65,6B.otf | Bin 0 -> 2060 bytes - ...et.drop-hints.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 0 -> 3164 bytes - ...ourceHanSans-Regular_subset.drop-hints.660E.otf | Bin 0 -> 1824 bytes - ...t.retain-gids.3042,3044,3046,3048,304A,304B.otf | Bin 0 -> 91040 bytes - ...t.retain-gids.3042,3044,3046,73E0,5EA6,8F38.otf | Bin 0 -> 125924 bytes - ...Sans-Regular_subset.retain-gids.61,63,65,6B.otf | Bin 0 -> 88468 bytes - ...t.retain-gids.660E,6975,73E0,5EA6,8F38,6E05.otf | Bin 0 -> 126208 bytes - ...urceHanSans-Regular_subset.retain-gids.660E.otf | Bin 0 -> 103800 bytes - test/subset/data/fonts/SourceHanSans-Regular.otf | Bin 16427580 -> 0 bytes - .../data/fonts/SourceHanSans-Regular_subset.otf | Bin 0 -> 2707728 bytes - test/subset/data/tests/cff-japanese.tests | 2 +- - 84 files changed, 1 insertion(+), 393880 deletions(-) + docs/harfbuzz-docs.xml | 1 + + 1 file changed, 1 insertion(+) -commit a96d003d6ec4212fadad4f5b9058c9f8b07bcf89 -Author: Maks Naumov -Date: Fri Apr 5 12:29:56 2019 +0300 +commit d4fb54508d17d1c64636f336a699ef8352d8c863 +Author: Behdad Esfahbod +Date: Mon Mar 25 15:08:14 2019 -0700 - Fix MSVC C4138 warning (#1657) + Update ChangeLog generation + + Let's see if I can make a release on Mac... - src/hb-ot-cff-common.hh | 2 +- + Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit c68eb7002f1c2b847d955797e27f5403199e3d9d -Author: Behdad Esfahbod -Date: Wed Apr 3 16:24:12 2019 -0700 +commit 2f97cd7a525c64a98730466f195d1d3c5cd3ea50 +Author: Qunxin Liu +Date: Tue Mar 26 10:37:24 2019 -0700 - Minor + completely remove lines that are commented out - src/hb-ot-layout-common.hh | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/hb-subset-plan.cc | 6 ------ + src/hb-subset-plan.hh | 3 --- + 2 files changed, 9 deletions(-) -commit 85adf4ad5c76172514f281bfbe3850ef35473cc7 -Author: Behdad Esfahbod -Date: Wed Apr 3 16:06:55 2019 -0700 +commit e74d646d9ee3ecfda4f338a0e3bf2e0564fb1858 +Author: Qunxin Liu +Date: Tue Mar 26 09:15:56 2019 -0700 - [GDEF] Don't assume glyphlist is sorted - - As was hit by the fuzzer. - - Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14032 + update arguments in_populate_gids_to_retain() and _create_old_gid_to_new_gid_map() + so they don't use deprecated variable - src/hb-ot-layout-common.hh | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) + src/hb-subset-plan.cc | 36 ++++++++++++++++++------------------ + 1 file changed, 18 insertions(+), 18 deletions(-) -commit ecabdffc61cb0b71424f4845aeda8cd0a6d25a29 -Author: Behdad Esfahbod -Date: Wed Apr 3 16:06:34 2019 -0700 +commit b12a5daad7cd5ec4c019c8d4827bf8456ef632c9 +Author: Qunxin Liu +Date: Mon Mar 25 19:59:37 2019 -0700 - [algs] Add hb_min() and hb_max() + try to remove deprecated variable from struct definition - src/hb-algs.hh | 11 +++++++++++ - 1 file changed, 11 insertions(+) + src/hb-subset-plan.cc | 9 +++++---- + src/hb-subset-plan.hh | 2 +- + 2 files changed, 6 insertions(+), 5 deletions(-) -commit 7b863142ceb82fc2fd23802f19f7379aa2f152e5 -Author: Behdad Esfahbod -Date: Wed Apr 3 15:48:27 2019 -0700 +commit 9c5d694af2c6146833011498c3adcf68c0123c31 +Author: Michiharu Ariza +Date: Fri Mar 22 11:05:23 2019 -0700 - [serialize] Make putting breakpoint on out-of-memory easier + add HVAR & VVAR advance width api test - src/hb-serialize.hh | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) + test/api/test-ot-metrics-tt-var.c | 41 +++++++++++++++++++++++++++++++++++++-- + 1 file changed, 39 insertions(+), 2 deletions(-) -commit 2bd275023405b6a669d59ad4cdcb2e8cb410d593 -Author: Behdad Esfahbod -Date: Wed Apr 3 15:31:53 2019 -0700 +commit ae3db1f4e3bb1c451e04b96125cb95cdfce964d4 +Author: Michiharu Ariza +Date: Thu Mar 21 18:09:37 2019 -0700 - [iter] Tweak SFINAE again + added api test for subset VVAR & bug fix - Don't think we need hb_is_same(). + added a mod copy of SourceSerifVariable-Roman.ttf with VVAR as a test font - src/hb-iter.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-var-hvar-table.hh | 7 +- + test/api/Makefile.am | 2 + + .../fonts/SourceSerifVariable-Roman-VVAR.abc.ttf | Bin 0 -> 5632 bytes + ...ourceSerifVariable-Roman-VVAR.ac.retaingids.ttf | Bin 0 -> 5288 bytes + .../fonts/SourceSerifVariable-Roman-VVAR.ac.ttf | Bin 0 -> 3224 bytes + test/api/test-subset-vvar.c | 103 +++++++++++++++++++++ + 6 files changed, 108 insertions(+), 4 deletions(-) -commit f02ebc89ec89e78a348f9b67d613a2024feabc18 -Author: Behdad Esfahbod -Date: Wed Apr 3 15:23:06 2019 -0700 +commit b3007ec2098884721979c1105a0f1e428b95e2ca +Author: Michiharu Ariza +Date: Thu Mar 21 09:50:53 2019 -0700 - [array] Add compy assignment operator since copy constructor is explicit + regenerated expected full fonts data after fontTools bug 1550 fixed - src/hb-array.hh | 6 ++++++ - 1 file changed, 6 insertions(+) + ...eSerifVariable-Roman.drop-hints.D7,D8,D9,DA,DE.ttf | Bin 5928 -> 5924 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) -commit 20a73da2c9227a0f9bc943a3d766eedeb5bed3b3 -Author: Behdad Esfahbod -Date: Wed Apr 3 14:32:15 2019 -0700 +commit fe5aa8b36c040b3561e33aac79006337fffda282 +Author: Michiharu Ariza +Date: Wed Mar 20 15:10:59 2019 -0700 + + added TT VF full font test & fixed bugs + + updated CFF2 VF api test results too + + src/hb-ot-layout-common.hh | 34 +++++++++++--- + src/hb-ot-var-hvar-table.hh | 51 +++++++++++---------- + test/api/fonts/AdobeVFPrototype.abc.otf | Bin 6772 -> 6952 bytes + test/api/fonts/AdobeVFPrototype.ac.nohints.otf | Bin 6096 -> 6272 bytes + .../fonts/AdobeVFPrototype.ac.nosubrs.nohints.otf | Bin 6160 -> 6152 bytes + test/api/fonts/AdobeVFPrototype.ac.nosubrs.otf | Bin 6376 -> 6336 bytes + test/api/fonts/AdobeVFPrototype.ac.otf | Bin 6312 -> 6460 bytes + test/api/fonts/AdobeVFPrototype.ac.retaingids.otf | Bin 6316 -> 6464 bytes + ...ifVariable-Roman.default.1FC,21,41,20,62,63.ttf | Bin 0 -> 5464 bytes + .../SourceSerifVariable-Roman.default.61,62,63.ttf | Bin 0 -> 5432 bytes + ...eSerifVariable-Roman.default.D7,D8,D9,DA,DE.ttf | Bin 0 -> 5924 bytes + ...ariable-Roman.drop-hints.1FC,21,41,20,62,63.ttf | Bin 0 -> 5464 bytes + ...urceSerifVariable-Roman.drop-hints.61,62,63.ttf | Bin 0 -> 5432 bytes + ...rifVariable-Roman.drop-hints.D7,D8,D9,DA,DE.ttf | Bin 0 -> 5928 bytes + .../data/fonts/SourceSerifVariable-Roman.ttf | Bin 0 -> 586100 bytes + test/subset/data/tests/full-font.tests | 1 + + 16 files changed, 56 insertions(+), 30 deletions(-) + +commit 2bd2e656f96111bc1261e4670851c2dc5f3acfd9 +Author: Michiharu Ariza +Date: Tue Mar 19 18:23:14 2019 -0700 - [array] Add default copy constructor - - MSVC seems to need it. + update CFF2 test results - src/hb-array.hh | 1 + - 1 file changed, 1 insertion(+) + test/api/fonts/AdobeVFPrototype.abc.otf | Bin 7456 -> 6772 bytes + test/api/fonts/AdobeVFPrototype.ac.nohints.otf | Bin 6780 -> 6096 bytes + .../api/fonts/AdobeVFPrototype.ac.nosubrs.nohints.otf | Bin 6844 -> 6160 bytes + test/api/fonts/AdobeVFPrototype.ac.nosubrs.otf | Bin 7060 -> 6376 bytes + test/api/fonts/AdobeVFPrototype.ac.otf | Bin 6996 -> 6312 bytes + test/api/fonts/AdobeVFPrototype.ac.retaingids.otf | Bin 7000 -> 6316 bytes + 6 files changed, 0 insertions(+), 0 deletions(-) -commit d419a9a4376de7b2ae1dec7df09f8d034cc2d039 -Author: Behdad Esfahbod -Date: Wed Apr 3 14:18:19 2019 -0700 +commit 212dcb758c9c43dc74da3d4507a54ac78c6bee57 +Author: Michiharu Ariza +Date: Tue Mar 19 16:00:01 2019 -0700 - [iter] Use different SFINAE scheme to make MSVC happy + add api test cases for HVAR with index map (and fix) + + src/hb-ot-var-hvar-table.hh | 2 +- + test/api/test-subset-hvar.c | 76 +++++++++++++++++++++++++++++++++++++++++---- + 2 files changed, 71 insertions(+), 7 deletions(-) + +commit dc10a7ef603b911b15596e80f12b702ecfcd60c4 +Author: Michiharu Ariza +Date: Tue Mar 19 12:34:03 2019 -0700 + + add gvar & HVAR retain-gids test cases + + .../SourceSansVariable-Roman.ac.retaingids.ttf | Bin 0 -> 3040 bytes + test/api/test-subset-gvar.c | 22 ++++++++++++++++++++ + test/api/test-subset-hvar.c | 23 +++++++++++++++++++++ + 3 files changed, 45 insertions(+) + +commit 43420dfa964c2ee4ccc359001e5664def5371623 +Author: Michiharu Ariza +Date: Tue Mar 19 01:00:53 2019 -0700 + + fix test build + + test/api/Makefile.am | 2 ++ + 1 file changed, 2 insertions(+) + +commit 6ee71166b0003b3464d9a20554a0270f5ead5194 +Author: Michiharu Ariza +Date: Tue Mar 19 00:41:41 2019 -0700 + + add api tests for subset gvar & HVAR; bug fixes + + src/hb-ot-layout-common.hh | 3 +- + src/hb-ot-var-gvar-table.hh | 24 +++---- + src/hb-ot-var-hvar-table.hh | 19 +++++- + test/api/Makefile.am | 2 + + test/api/fonts/SourceSansVariable-Roman.abc.ttf | Bin 0 -> 3240 bytes + test/api/fonts/SourceSansVariable-Roman.ac.ttf | Bin 0 -> 3028 bytes + test/api/test-subset-gvar.c | 81 ++++++++++++++++++++++++ + test/api/test-subset-hvar.c | 81 ++++++++++++++++++++++++ + 8 files changed, 194 insertions(+), 16 deletions(-) + +commit 6e066464f0c1611738ff784ee7f8f3d84645e85f +Author: Michiharu Ariza +Date: Mon Mar 18 18:11:00 2019 -0700 + + replaced tt var api test with a composite glyph - From Orvid King: TLDR; MSVC has some issues using sizeof(declval()) for - SFINAE of templated types, so I just used SFINAE in a different context where - MSVC doesn't have the issue. + for better coverage - src/hb-iter.hh | 21 ++++++++++++--------- - 1 file changed, 12 insertions(+), 9 deletions(-) + .../SourceSansVariable-Roman-nohvar-41,C1.ttf | Bin 0 -> 4696 bytes + test/api/fonts/SourceSansVariable-Roman.abc.ttf | Bin 3168 -> 0 bytes + test/api/test-ot-metrics-tt-var.c | 36 ++++++++++----------- + 3 files changed, 18 insertions(+), 18 deletions(-) -commit 2778df7972f537192b51cd0719adf2ab4d1f3397 -Author: Behdad Esfahbod -Date: Wed Apr 3 14:15:01 2019 -0700 +commit 84d0af456bb42f5a468fb5ef9edb04647e7840d8 +Author: Michiharu Ariza +Date: Mon Mar 18 17:50:20 2019 -0700 - [meta] Add hb_is_same() + move rounding advance width to glyf - src/hb-meta.hh | 9 ++++++--- - 1 file changed, 6 insertions(+), 3 deletions(-) + src/hb-ot-glyf-table.hh | 24 ++++++++++++++---------- + src/hb-ot-hmtx-table.cc | 8 ++++---- + 2 files changed, 18 insertions(+), 14 deletions(-) -commit 6215fb8e68bdf69f4af9f7f4959ad55a70723774 -Author: Behdad Esfahbod -Date: Tue Apr 2 23:10:03 2019 -0700 +commit 10f264da7518ba3cc48b635d00343ecce9d734e7 +Author: Michiharu Ariza +Date: Mon Mar 18 17:16:43 2019 -0700 - [serialize] Actually reclaim storage from duplicate objects + fix empty glyf's advance width - src/hb-serialize.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-glyf-table.hh | 8 +++++++- + src/hb-ot-hmtx-table.cc | 4 ++-- + 2 files changed, 9 insertions(+), 3 deletions(-) -commit 3305a2cad24f878f5d8773c2acae491ebd5a9059 -Author: Behdad Esfahbod -Date: Tue Apr 2 22:42:22 2019 -0700 +commit 511518c759c13ebad32e4879146c036c9af031ac +Author: Michiharu Ariza +Date: Mon Mar 18 15:39:10 2019 -0700 - [serialize] Port to use object pool + add api test for tt var advance widths - Tested, but feels fragile :(. + stripped HVAR from SourceSansVariable-Roman.abc.ttf so glyf gets parsed - src/hb-pool.hh | 5 +- - src/hb-serialize.hh | 141 ++++++++++++++++++++++++++++++++-------------------- - 2 files changed, 91 insertions(+), 55 deletions(-) + src/hb-ot-hmtx-table.hh | 1 - + test/api/fonts/SourceSansVariable-Roman.abc.ttf | Bin 3240 -> 3168 bytes + test/api/test-ot-metrics-tt-var.c | 37 ++++++++++++++++++++++++ + 3 files changed, 37 insertions(+), 1 deletion(-) -commit 5efbc01174127bede4d533866acac239e5a0cfd5 -Author: Behdad Esfahbod -Date: Tue Apr 2 22:41:06 2019 -0700 +commit bee8d86671c45b093d4f238ceba9eebe4120e0bb +Author: Michiharu Ariza +Date: Mon Mar 18 10:48:53 2019 -0700 - [pool] Uses memset() instead of assigning Null() + fix build + + src/hb-ot-hmtx-table.cc | 15 ++++----------- + src/hb-ot-hmtx-table.hh | 15 +++++++++------ + src/hb-ot-var-gvar-table.hh | 1 + + 3 files changed, 14 insertions(+), 17 deletions(-) + +commit f74712a4e025375730176be7578359945bedcef0 +Author: Michiharu Ariza +Date: Sun Mar 17 22:49:18 2019 -0700 + + fix composite glyf extents + + src/hb-ot-glyf-table.hh | 41 +++++++++++++++++++++++++++-------------- + src/hb-ot-var-gvar-table.hh | 3 +++ + 2 files changed, 30 insertions(+), 14 deletions(-) + +commit cd817e7955c45c3e56b33a304027e7fd6c6e0520 +Author: Michiharu Ariza +Date: Sun Mar 17 18:45:30 2019 -0700 + + fix unpack_points + + src/hb-ot-var-gvar-table.hh | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +commit a35e3dfc775f8a86b8a95623059f581c02cf8e00 +Author: Michiharu Ariza +Date: Sun Mar 17 17:48:10 2019 -0700 + + fix infer_delta - Assignment is invalid on invalid object. + code cleanup - src/hb-pool.hh | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) + src/hb-ot-glyf-table.hh | 22 ++++++++++++++-------- + src/hb-ot-var-gvar-table.hh | 9 +++++++-- + 2 files changed, 21 insertions(+), 10 deletions(-) -commit 434d78bf91ac5204ffbf2144f199eb7a0f65c421 -Author: Behdad Esfahbod -Date: Tue Apr 2 21:46:40 2019 -0700 +commit 4f4fbb1d5e4b120336a2f8f6d23417b64888b37e +Author: Michiharu Ariza +Date: Sun Mar 17 16:01:49 2019 -0700 - Add hb_pool_t<> for pooled memory allocation + added explicit casts to metrics - src/Makefile.sources | 1 + - src/hb-pool.hh | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 99 insertions(+) + src/hb-ot-hmtx-table.cc | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) -commit 8e4df1a152f3916613594fa1bac308efdb61d512 -Author: Behdad Esfahbod -Date: Tue Apr 2 20:20:53 2019 -0700 +commit c302ec6d945411b3023e9a633ea288aa3024366d +Author: Michiharu Ariza +Date: Sun Mar 17 15:36:26 2019 -0700 - [serialize] Disable packed_map again + moved most of var code from gvar to glyf - Ugh. Need to think of something else. + initialize phantom points from metrics from htmx/vmtx & glyf bbox before execution + added source file hb-ot-hmtx-table.cc to call glyf from hmtx/vmtx indirectly & temporarily, workaround a cyclic reference between the two - src/hb-serialize.hh | 1 + - 1 file changed, 1 insertion(+) + src/Makefile.sources | 1 + + src/hb-ot-face.hh | 1 - + src/hb-ot-font.cc | 8 +- + src/hb-ot-glyf-table.hh | 236 +++++++++++++++++++++++++++++++++++++------- + src/hb-ot-hmtx-table.cc | 61 ++++++++++++ + src/hb-ot-hmtx-table.hh | 39 ++++---- + src/hb-ot-var-gvar-table.hh | 123 ++++++++--------------- + src/hb-ot-var-hvar-table.hh | 10 +- + 8 files changed, 333 insertions(+), 146 deletions(-) + +commit bd040a43548b30e8e7ff56cacbf35885becb6173 +Author: Michiharu Ariza +Date: Sat Mar 16 16:27:33 2019 -0700 -commit 31c1a83899147310b27bd40fac755c629cb59cef -Author: Behdad Esfahbod -Date: Tue Apr 2 20:17:27 2019 -0700 + add components transformation - [map] Protect more against pointer deref + src/hb-ot-glyf-table.hh | 44 ++++++++++++++++++++++++++++++++++++++++++-- + src/hb-ot-var-gvar-table.hh | 31 ++++++++++++++++++------------- + 2 files changed, 60 insertions(+), 15 deletions(-) - src/hb-map.hh | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) +commit 139e87b56caf46a63bb78290316b3ddeb71e1e65 +Author: Michiharu Ariza +Date: Sat Mar 16 00:08:03 2019 -0700 -commit 5bffa9e375fe294718452ad51e4c5ff017a046b4 -Author: Behdad Esfahbod -Date: Tue Apr 2 20:13:16 2019 -0700 + fix tt var extents & add test - More + src/hb-ot-glyf-table.hh | 32 +-- + src/hb-ot-var-gvar-table.hh | 257 ++++++++++++------------ + test/api/Makefile.am | 1 + + test/api/fonts/SourceSansVariable-Roman.abc.ttf | Bin 0 -> 3240 bytes + test/api/test-ot-metrics-tt-var.c | 72 +++++++ + 5 files changed, 223 insertions(+), 139 deletions(-) - src/hb-map.hh | 5 +++++ - src/hb-set.hh | 9 ++++++++- - src/hb-vector.hh | 8 ++++---- - 3 files changed, 17 insertions(+), 5 deletions(-) +commit 9584b090bbd4286d611dda4de00f81c87f808ec7 +Author: Michiharu Ariza +Date: Fri Mar 15 13:46:25 2019 -0700 -commit 5b66b033fd2cd9c95284d283f08d6789c7ec985d -Author: Behdad Esfahbod -Date: Tue Apr 2 19:27:02 2019 -0700 + cff2 subset fuzzer issues (#1619) + + * add check to FDArray::serialize + + * add test files + + * fix off by one - [serialize] Fix hb_hashmap_t<> for pointers and use in packed_map + src/hb-ot-cff-common.hh | 1 + + ...z-testcase-minimized-hb-subset-fuzzer-5739000398086144 | Bin 0 -> 620 bytes + ...z-testcase-minimized-hb-subset-fuzzer-5760768497156096 | Bin 0 -> 210 bytes + ...z-testcase-minimized-hb-subset-fuzzer-5764268627066880 | Bin 0 -> 687 bytes + 4 files changed, 1 insertion(+) - src/hb-array.hh | 12 +++++++++++- - src/hb-map.hh | 22 ++++++++++++++-------- - src/hb-serialize.hh | 8 +++----- - src/hb-vector.hh | 1 + - 4 files changed, 29 insertions(+), 14 deletions(-) +commit 161e61fc3beae6173253f7ec13b504dc70052cc1 +Author: Michiharu Ariza +Date: Fri Mar 1 21:49:04 2019 -0800 -commit 42ab32cbbaf8b403c351953f091c0fbe8464c4cb -Author: Behdad Esfahbod -Date: Tue Apr 2 18:41:33 2019 -0700 + minor edits - [iter] Remove passing pointer to hb_iter() + src/hb-ot-layout-common.hh | 2 ++ + 1 file changed, 2 insertions(+) + +commit ebbfe36510e50fb713469437d625c5c9293154cd +Author: Michiharu Ariza +Date: Fri Mar 1 15:14:22 2019 -0800 + + calculate VF advance widths from gvar & glyf + + src/hb-ot-glyf-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9690461a91df3a6bb467cc111e0dfe1da20a821e +Author: Michiharu Ariza +Date: Tue Feb 26 11:11:50 2019 -0800 + + Added hb-ot-var-gvar-table.hh - While doable with hb_deref_pointer() as well, we also would then - need to do it in a ton of places. Not worth it / messy. + implemented sanitize() + placeholder subset() + some code cleanup - src/hb-array.hh | 2 +- - src/hb-iter.hh | 5 ----- - src/test-iter.cc | 3 --- - 3 files changed, 1 insertion(+), 9 deletions(-) + src/hb-ot-gvar-table.hh | 211 -------------------------------------------- + src/hb-ot-var-gvar-table.hh | 12 +-- + 2 files changed, 6 insertions(+), 217 deletions(-) -commit d0da547b3741323493398eed8975a76f4a5742c2 -Author: Behdad Esfahbod -Date: Tue Apr 2 18:22:39 2019 -0700 +commit 9168b32a1bb4ce4efbdefbee8ea7d0b73fb84753 +Author: Michiharu Ariza +Date: Mon Feb 25 09:59:27 2019 -0800 - [array] Use dagger for hashing array + renamed hb_map2_t to hb_bimap_h in its own .hh + + src/hb-ot-gvar-table.hh | 211 +++++++++++++++++++++++++++++++++++++++++++++ + src/hb-ot-layout-common.hh | 77 ----------------- + 2 files changed, 211 insertions(+), 77 deletions(-) + +commit d102c7a65258b3421f4d5628e5630e8688528743 +Author: Michiharu Ariza +Date: Fri Feb 22 10:22:08 2019 -0800 + + unuse set in hb_map2_t impl - Also switch to better mixing. + also some code cleanup - src/hb-array.hh | 9 +++++---- - 1 file changed, 5 insertions(+), 4 deletions(-) + src/hb-ot-layout-common.hh | 46 +++++++++++++++++++++++----------------------- + 1 file changed, 23 insertions(+), 23 deletions(-) -commit b6f29bf14153cac51b218e3aaba9e1b3aa747a8c -Author: Behdad Esfahbod -Date: Tue Apr 2 18:12:01 2019 -0700 +commit dd67214210da15c6b61096cde3d60ac3a238967c +Author: Michiharu Ariza +Date: Wed Feb 20 15:48:29 2019 -0800 - [iter] Accept pointers in hb_iter() + subset HVAR - No idea how to avoid dupicating code. Was hoping hb_deref_pointer() - would do it, but looks like a pointer can't bind to a universal - reference T&&. Humm. + Re-implemented & repurposed CFF:remap_t as hb_map2_t (moved to hb-ot-layout-common.hh) for two-way mapping for use by index map subsetting. + Hooked up HVAR subsetter through _subset2. + Some renaming in CFF code. - src/hb-iter.hh | 5 +++++ - src/test-iter.cc | 3 +++ - 2 files changed, 8 insertions(+) + src/hb-ot-layout-common.hh | 81 +++++++++++++++++++++++++++++++++++++++++++-- + src/hb-ot-var-hvar-table.hh | 2 +- + 2 files changed, 79 insertions(+), 4 deletions(-) -commit fc24bb9046e7e39d52a245bdc3480a30095cb6ee -Author: Behdad Esfahbod -Date: Tue Apr 2 17:49:52 2019 -0700 +commit 5bbe78a0f353bb806a686fd97ad411fa8a9ebf5b +Author: Ebrahim Byagowi +Date: Thu Mar 14 16:49:42 2019 -0700 - [serialize] Towards maintaining packed_map + Allow zero length ranges in sanitization (#1617) + + Fixes fvar table sanitization where there are no named instance + by allowing zero length ranges starting from Null() address. + + Fixes #1607 - src/hb-serialize.hh | 4 ++++ - 1 file changed, 4 insertions(+) + src/hb-machinery.hh | 30 ++++++++++++++++-------------- + test/api/fonts/Zycon.ttf | Bin 0 -> 21036 bytes + test/api/test-ot-face.c | 9 +++++++++ + 3 files changed, 25 insertions(+), 14 deletions(-) -commit aa2293a55eaa39f4e77b60851bbdee56b1120225 -Author: Behdad Esfahbod -Date: Tue Apr 2 17:42:10 2019 -0700 +commit ee8719eaaf4d5719053f0ba21a2b116771aa1b2f +Author: Khaled Hosny +Date: Thu Mar 14 21:41:25 2019 +0200 - [serialize] Minor + [ci] Cache FreeType build on Travis - src/hb-open-type.hh | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) + .ci/build-freetype.sh | 17 +++++++++++++++++ + .travis.yml | 18 ++++++++++++------ + 2 files changed, 29 insertions(+), 6 deletions(-) -commit e42b82c828ecec6f534040dae5518e04643b5f10 -Author: Behdad Esfahbod -Date: Tue Apr 2 17:21:54 2019 -0700 +commit 5d7725ad1a950bceaef184b113fd5a8b7ba3dff7 +Author: David Corbett +Date: Tue Mar 12 19:30:47 2019 -0400 - [serialize] Handle non-nullable offsets + Categorize U+09FC as Consonant_Placeholder - src/hb-open-type.hh | 13 +++++++++---- - 1 file changed, 9 insertions(+), 4 deletions(-) + src/hb-ot-shape-complex-indic.hh | 1 + + 1 file changed, 1 insertion(+) -commit e04518bafc66224887bf7f478e1affb54bc7acd0 -Author: Behdad Esfahbod -Date: Tue Apr 2 17:20:04 2019 -0700 +commit b150bb4a49d9214f747c55d506975ea9b4f0a60e +Author: Khaled Hosny +Date: Wed Mar 13 13:21:12 2019 +0200 - [serialize] Movce empty-object handling earlier + [ci] Simplify and fix Travis CI macOS build - src/hb-serialize.hh | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) + .travis.yml | 16 +++++++++------- + 1 file changed, 9 insertions(+), 7 deletions(-) -commit 7f73c9744e6c0e8dd37a208b75a4bc299bccbd4d -Author: Behdad Esfahbod -Date: Tue Apr 2 17:12:24 2019 -0700 +commit 628d457c871954bdbf2bca2cc7b1bb821f4bd638 +Author: Michiharu Ariza +Date: Tue Mar 12 11:03:53 2019 -0700 - [serialize] Minor + add gvar::get_extents - src/hb-open-type.hh | 14 +++++--------- - 1 file changed, 5 insertions(+), 9 deletions(-) + src/hb-ot-face.hh | 1 + + src/hb-ot-font.cc | 3 + + src/hb-ot-glyf-table.hh | 21 ++++-- + src/hb-ot-var-gvar-table.hh | 164 +++++++++++++++++++++++++++++++++++++++++--- + 4 files changed, 175 insertions(+), 14 deletions(-) -commit 5a3de4f4f8791139d2c04a66244001aba192ef6b -Author: Behdad Esfahbod -Date: Tue Apr 2 16:53:05 2019 -0700 +commit 7b27fe5255b14e7701966b1435e2bb5585b29cbc +Author: Behdad Esfahbod +Date: Mon Mar 11 18:09:51 2019 -0700 - [serialize] Allow offset links that have base offset from the object base - - Rarely used, but used, in name table or similar constructs. + Remove redundant hb_ot_layout_lookup_would_substitute_fast - src/hb-serialize.hh | 18 +++++++++--------- - 1 file changed, 9 insertions(+), 9 deletions(-) + src/hb-ot-layout.cc | 13 ------------- + src/hb-ot-layout.hh | 7 ------- + src/hb-ot-shape-complex-indic.cc | 2 +- + src/hb-ot-shape-complex-khmer.cc | 2 +- + 4 files changed, 2 insertions(+), 22 deletions(-) -commit edad6b2c450e22e67ae86c5f2328cca3c29aaad2 -Author: Ebrahim Byagowi -Date: Wed Apr 3 00:48:59 2019 +0430 +commit 56164f754f0302cb99fecc30298699a1216c94ab +Author: Khaled Hosny +Date: Tue Mar 12 01:09:27 2019 +0200 - [test][iter] minor, fix double promotion warning + [doc] Add placeholder since version for new flag - src/test-iter.cc | 2 +- + src/hb-buffer.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 062f5d6e7aa061358eb5874a8f3a3f3bd6e9f16f -Author: Ebrahim Byagowi -Date: Tue Apr 2 20:27:00 2019 +0430 +commit cb758f2669cfd04e732788f6ca8bead67a1a5ee8 +Author: David Corbett +Date: Fri Mar 8 09:46:48 2019 -0500 - [test] minor, c style comments + Remove obsolete overrides from Indic/USE scripts - src/test-iter.cc | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/gen-indic-table.py | 4 ---- + src/gen-use-table.py | 30 +++++++----------------------- + src/hb-ot-shape-complex-use-table.cc | 2 +- + 3 files changed, 8 insertions(+), 28 deletions(-) -commit afdbf960d6147ec607ddb2c780d3a83068f61357 -Author: Ebrahim Byagowi -Date: Tue Apr 2 20:25:06 2019 +0430 +commit 40c4bd3e123deb97506526d868cbc94b972b4bee +Author: Eric Muller +Date: Tue Feb 12 11:41:16 2019 -0800 - [iter][test] Add another test for hb_reduce - - Different initial and accumulator types + Update generation code for hb-ot-shape-complex-vowel-constraints.cc. Remove 'unlikely' - src/test-iter.cc | 6 ++++++ - 1 file changed, 6 insertions(+) + src/gen-vowel-constraints.py | 3 +++ + src/hb-ot-shape-complex-vowel-constraints.cc | 2 +- + 2 files changed, 4 insertions(+), 1 deletion(-) -commit bfa02bef4546f448e048288c1162988c8c39322a -Author: Behdad Esfahbod -Date: Mon Apr 1 21:36:13 2019 -0700 +commit ce7f2c4da3a933444b3c331c08847a9d7d0f2ef0 +Author: Eric Muller +Date: Sun Feb 10 04:31:41 2019 -0800 - [serialize] Switch to tetris-packing + Fix coding style. - src/hb-open-type.hh | 15 +++++++++++---- - 1 file changed, 11 insertions(+), 4 deletions(-) + src/hb-ot-shape-complex-hangul.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit f0ea3ac17bef98409d302b9f285e94015e069823 -Author: Behdad Esfahbod -Date: Mon Apr 1 21:36:03 2019 -0700 +commit a86356913e65efff195697016de27cc8cbd2186f +Author: Eric Muller +Date: Sat Feb 9 02:55:27 2019 -0800 - [serialize] Fix linking + Add a flag to hb_buffer_t to prevent the insertion of dotted circles on incorrect character sequences. + + Current behavior unchanged if this flag is not set (and it isn't by default). - src/hb-serialize.hh | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/hb-buffer.h | 7 ++++++- + src/hb-ot-shape-complex-hangul.cc | 3 ++- + src/hb-ot-shape-complex-indic.cc | 3 +++ + src/hb-ot-shape-complex-khmer.cc | 3 +++ + src/hb-ot-shape-complex-myanmar.cc | 3 +++ + src/hb-ot-shape-complex-use.cc | 3 +++ + src/hb-ot-shape-complex-vowel-constraints.cc | 3 +++ + src/hb-ot-shape.cc | 3 +++ + 8 files changed, 26 insertions(+), 2 deletions(-) -commit 7c0e2054e0799ed89cdc5de8c1416d009c0029b5 -Author: Behdad Esfahbod -Date: Mon Apr 1 21:32:29 2019 -0700 +commit 9b5556d985b6d06a2475af588cc329385b29ffa4 +Author: Ebrahim Byagowi +Date: Fri Mar 8 01:33:41 2019 +0330 - [serialize] Minor + Add a macOS 10.14.3 fonts tests (#1608) - src/hb-serialize.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + .circleci/config.yml | 11 +++++++++++ + test/shaping/data/in-house/tests/macos.tests | 19 +++++++++++++++++++ + 2 files changed, 30 insertions(+) -commit 64d0f0893812fa1cb2746071d8b021560969526d -Author: Behdad Esfahbod -Date: Mon Apr 1 16:50:28 2019 -0700 +commit 4a19d3b0806ed110ac5f05492ab98caabfa6306e +Author: David Corbett +Date: Wed Mar 6 12:37:25 2019 -0500 - [cmap] Minor + Update to Unicode 12.0.0 - src/hb-ot-cmap-table.hh | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) + src/gen-use-table.py | 1 - + src/gen-vowel-constraints.py | 1 + + src/hb-common.h | 8 + + src/hb-ot-shape-complex-arabic-table.hh | 14 +- + src/hb-ot-shape-complex-indic-table.cc | 56 +- + src/hb-ot-shape-complex-use-table.cc | 49 +- + src/hb-ot-shape-complex-vowel-constraints.cc | 4 +- + src/hb-ot-shape-complex.hh | 3 + + src/hb-ot-tag-table.hh | 12 +- + src/hb-ucdn.cc | 4 + + src/hb-ucdn/ucdn.h | 11 + + src/hb-ucdn/ucdn_db.h | 2998 +++++++++++++------------- + src/hb-unicode-emoji-table.hh | 6 +- + 13 files changed, 1631 insertions(+), 1536 deletions(-) -commit 2e675cc7b50b5a57ceddf799d63811801ffcfe94 -Author: Behdad Esfahbod -Date: Mon Apr 1 16:45:50 2019 -0700 +commit 4f03d5c79d6fccbd63ede421daa9d270e7677964 +Author: Adrian Wong +Date: Wed Feb 13 21:04:46 2019 +1100 - [subset] Call serialize start/end around it + [indic] Remove superfluous ZWNJ check in final reorder of pre-base matras + + src/hb-ot-shape-complex-indic.cc | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +commit 7b7852efa5422b2e1481addf09e6c0afa0b25830 +Author: Stephan Bergmann +Date: Tue Mar 5 17:18:57 2019 +0100 + + Fix hb_atomic_* variants based on C++11 atomics - To be cleaned up. + I stumbled over this when trying to upgrade the version of HarfBuzz used by + LibreOffice to 3.2.1 (see "Upgrade to latest + HarfBuzz 2.3.1"), where building with MSVC 2017 failed like + + > c:\cygwin\home\tdf\lode\jenkins\workspace\gerrit_windows\workdir\unpackedtarball\harfbuzz\src\hb-atomic.hh(272): error C2440: 'reinterpret_cast': cannot convert from 'const int *' to 'std::atomic *' + > c:\cygwin\home\tdf\lode\jenkins\workspace\gerrit_windows\workdir\unpackedtarball\harfbuzz\src\hb-atomic.hh(272): note: Conversion loses qualifiers + > c:\cygwin\home\tdf\lode\jenkins\workspace\gerrit_windows\workdir\unpackedtarball\harfbuzz\src\hb-atomic.hh(272): error C2227: left of '->load' must point to class/struct/union/generic type + + (see ). + + I added all the necessary "const" to make building of HarfBuzz 2.3.1 with + MSVC 2017 succeed for me. There may be more missing at least conceptually. - src/hb-subset.cc | 2 ++ - 1 file changed, 2 insertions(+) + src/hb-atomic.hh | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) -commit abe33c6149719eb371c5f2b0d8c143550938129e -Author: Behdad Esfahbod -Date: Mon Apr 1 16:45:40 2019 -0700 +commit 72962420465f6d4b6b140032f2b14feea0e54fb9 +Author: Martin Hosken +Date: Mon Mar 4 11:12:21 2019 +0700 - [serialize] Assert stack + Fix offset drift in graphite integration - src/hb-serialize.hh | 1 + - 1 file changed, 1 insertion(+) + src/hb-graphite2.cc | 35 +++++++++++++++++++---------------- + 1 file changed, 19 insertions(+), 16 deletions(-) -commit 72e9b2c16cd1bc183226ca0aa8a58a5b1222573d -Author: Behdad Esfahbod -Date: Mon Apr 1 16:17:30 2019 -0700 +commit 5fc99b3d341a120d22f9789d0ce112af3eaa0d83 +Author: Michiharu Ariza +Date: Fri Mar 1 21:54:49 2019 -0800 - [serialize] Add add_link() to add link + fix build - src/hb-serialize.hh | 26 +++++++++++++++++++++++--- - 1 file changed, 23 insertions(+), 3 deletions(-) + src/hb-ot-var-gvar-table.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit 74addbecac3b8be699ac90b3853970f6c7efd0eb -Author: Behdad Esfahbod -Date: Mon Apr 1 14:17:09 2019 -0700 +commit 696b841a5a0c8b3d54514e76f442455c31c5107d +Author: Michiharu Ariza +Date: Fri Mar 1 21:49:04 2019 -0800 - [serialize] Add default template type to push() + minor edits - src/hb-serialize.hh | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) + src/hb-ot-cff-common.hh | 2 +- + src/hb-ot-layout-common.hh | 2 ++ + 2 files changed, 3 insertions(+), 1 deletion(-) -commit b8642087e6c2ec96dc70fcef617128b6ce353a7e -Author: Ebrahim Byagowi -Date: Tue Apr 2 00:30:06 2019 +0430 +commit 14be8b9e877c2f3998e28241f1c1cc9aa2d03238 +Author: Michiharu Ariza +Date: Fri Mar 1 21:33:21 2019 -0800 - [iter] hb_reduce, accumulator with a different type + build fix attempt - src/hb-iter.hh | 22 ++++++++++++---------- - src/test-iter.cc | 26 +++++++++++++++++++++++++- - 2 files changed, 37 insertions(+), 11 deletions(-) + src/hb-ot-glyf-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit e526414c759ebca82f1071cdeafe1160bcaa9637 -Author: Ebrahim Byagowi -Date: Sun Mar 31 12:41:58 2019 +0430 +commit 618de1c7f9973c2297e4488e2d5e0698e209a87d +Author: Michiharu Ariza +Date: Fri Mar 1 18:24:56 2019 -0800 - [iter] Implement hb_reduce + more build fixes - src/hb-iter.hh | 28 ++++++++++++++++++++++++++++ - src/test-iter.cc | 5 +++++ - 2 files changed, 33 insertions(+) + src/hb-ot-glyf-table.hh | 2 +- + src/hb-ot-var-gvar-table.hh | 13 ++++++------- + 2 files changed, 7 insertions(+), 8 deletions(-) -commit f3aca6aa267f7687a0406c7c545aefb5eed300b2 -Author: Behdad Esfahbod -Date: Sun Mar 31 21:37:14 2019 -0700 +commit f2c556594a54196ed3cce771afc6371249463068 +Author: Michiharu Ariza +Date: Fri Mar 1 18:12:31 2019 -0800 - [serialize] Implement linking - - Untested! + fix build attempt - src/hb-serialize.hh | 29 +++++++++++++++++++++++++++-- - 1 file changed, 27 insertions(+), 2 deletions(-) + src/hb-ot-var-gvar-table.hh | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) -commit 17f0cfa7ea3a5f0946d8800b98c1582c05dad853 -Author: Behdad Esfahbod -Date: Sun Mar 31 21:34:19 2019 -0700 +commit 64eb1ddc2685d830fb0f96447dbd3a2734874218 +Author: Ebrahim Byagowi +Date: Sat Mar 2 03:24:49 2019 +0330 - Move BEInt to hb.hh + Minor, remove .editorconfig hack - I knows... + As vscode is going to support it soon - src/hb-machinery.hh | 88 ---------------------------------------------------- - src/hb.hh | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 89 insertions(+), 88 deletions(-) + .editorconfig | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) -commit 78fc43f2930064cd6cf4229c1e4cb76edb8ed7f6 -Author: Behdad Esfahbod -Date: Sun Mar 31 19:17:07 2019 -0700 +commit 40dfca72132775b8a2fc34b3b9aea0999f1e193a +Author: Michiharu Ariza +Date: Fri Mar 1 15:14:22 2019 -0800 - [iter] Fix up build, ouch - - Yeah, some things not very clear... + calculate VF advance widths from gvar & glyf - src/hb-iter.hh | 8 ++++++-- - src/test-iter.cc | 4 ++-- - 2 files changed, 8 insertions(+), 4 deletions(-) + src/hb-ot-glyf-table.hh | 151 ++++++++++++++++ + src/hb-ot-hmtx-table.hh | 23 ++- + src/hb-ot-var-gvar-table.hh | 410 +++++++++++++++++++++++++++++++++++++++----- + 3 files changed, 542 insertions(+), 42 deletions(-) -commit e5d6fe9782a9fcde0786392c075c6c0b85c24829 -Author: Jonathan Kew -Date: Sun Mar 31 19:17:32 2019 +0100 +commit d0b6d539f6b5424b8f769f800c1126a5cf5374c9 +Author: Garret Rieger +Date: Thu Feb 28 17:25:05 2019 -0800 - Don't skip setting the .end field of the first range - - Fixes a bug in CoverageFormat2::serialize whereby the first range - was not serialized correctly if it consists of only a single glyph ID. - This broke shaping of U+0626 in the Arabic fallback shaper, because it - is not found in the coverage table of the 'init' and 'medi' lookups. - - Also fix similar bug in ClassDefFormat2::serialize, noted during code - inspection (I haven't observed a case that was actually affected by - this, but it looks broken). - - Fixes https://github.com/harfbuzz/harfbuzz/issues/1504 + Make hb_subset_input_glyph_set () actually do something. - src/hb-ot-layout-common.hh | 14 +++++++++----- - 1 file changed, 9 insertions(+), 5 deletions(-) + src/hb-subset-plan.cc | 3 +++ + test/api/hb-subset-test.h | 11 ++++++++++- + test/api/test-subset-glyf.c | 24 ++++++++++++++++++++++++ + 3 files changed, 37 insertions(+), 1 deletion(-) -commit 8a8d45b924cdb4343b4b11a7ef14e2d1fabb6f82 -Author: Behdad Esfahbod -Date: Sun Mar 31 19:00:09 2019 -0700 +commit a842fdfbf0986c05b91efa02a5d95583e80511e9 +Author: Michiharu Ariza +Date: Tue Feb 26 16:54:00 2019 -0800 - [iter] Adjust hb_copy() and use it - - Untested. + gvar::subset() - src/hb-iter.hh | 11 ++++------- - src/hb-vector.hh | 4 ++-- - 2 files changed, 6 insertions(+), 9 deletions(-) + src/hb-ot-var-gvar-table.hh | 81 +++++++++++++++++++++++++++++++++++++++------ + 1 file changed, 71 insertions(+), 10 deletions(-) -commit ba4b7be45523e88c26f763f8a329cc43c13b98a1 +commit c2e9d750351665324fa86d8d20eace9fe349892d Author: Ebrahim Byagowi -Date: Sun Mar 31 01:32:30 2019 -0700 +Date: Fri Feb 22 13:13:42 2019 +0330 - Remove coretext_aat shaper (#1581) - - coretext_aat was a temporary shaper to redirect shaping of AAT fonts - to CoreText and leaving the rest for HarfBuzz. As HarfBuzz now supports - AAT and Chrome now actually ships that on a stable version on macOS, - we no longer care about such use-case. If a client really wants 100% - metrics compatibility with CoreText better to use it directly or through - our API. Replicating the same behavior still is possible using - hb_shape_full, something we don't care or like to offer anymore. + [dwrite] hb_directwrite_face_create, a new API - Fixes https://github.com/harfbuzz/harfbuzz/issues/1478 - - src/hb-coretext.cc | 56 --------------------------------------------------- - src/hb-shaper-list.hh | 4 ---- - 2 files changed, 60 deletions(-) + It makes a hb_face_t from IDWriteFontFace, useful when using + DirectWrite facilities for font selection, loading and rendering + but using harfbuzz for shaping. -commit d6005b49b32410543a8dfa93ce2a213223cf8f01 -Author: Behdad Esfahbod -Date: Sat Mar 30 19:49:56 2019 -0700 + src/hb-directwrite.cc | 70 +++++++++++++++++++++++++++++++++++++++++++++++---- + src/hb-directwrite.h | 5 +++- + 2 files changed, 69 insertions(+), 6 deletions(-) - [serialize] Start implementing linking +commit 2c5ed7f152afe989e039de4e6d41a7e72f0de80f +Author: Michiharu Ariza +Date: Tue Feb 26 11:11:50 2019 -0800 - src/hb-serialize.hh | 15 ++++++++++++--- - 1 file changed, 12 insertions(+), 3 deletions(-) + Added hb-ot-var-gvar-table.hh + + implemented sanitize() + placeholder subset() + some code cleanup -commit 313b3057c335da6baa4cd447bac95812992413b9 -Author: Behdad Esfahbod -Date: Sat Mar 30 19:46:35 2019 -0700 + src/Makefile.sources | 1 + + src/hb-bimap.hh | 6 +- + src/hb-ot-gvar-table.hh | 211 -------------------------------------------- + src/hb-ot-var-gvar-table.hh | 207 +++++++++++++++++++++++++++++++++++++++++++ + src/hb-ot-var-hvar-table.hh | 14 +-- + src/hb-subset.cc | 4 + + 6 files changed, 222 insertions(+), 221 deletions(-) + +commit 087b9a0ad0759f6c190597ec5ee65d998fd2b829 +Author: David Corbett +Date: Mon Feb 18 22:30:40 2019 -0500 - [serializer] Implement dedup! + Fix or document unsupported font-feature-settings - src/hb-serialize.hh | 18 +++++++++++++++--- - 1 file changed, 15 insertions(+), 3 deletions(-) + src/hb-common.cc | 18 ++++++++++++------ + util/options.cc | 3 ++- + 2 files changed, 14 insertions(+), 7 deletions(-) -commit b189bbc48fb4b7c251d30b26a57ad84d1cb6dbe4 -Author: Behdad Esfahbod -Date: Sat Mar 30 19:41:48 2019 -0700 +commit bb29ece23ae860f923741bb09af6efcf56ac41c4 +Author: Joël R. Langlois +Date: Mon Feb 25 15:26:58 2019 -0500 - Implement hashing of objects + Remove Forcing Diagnostic Colours from CMakeLists.txt (#1597) - Should be improved for hb_bytes_t. + Fixes https://github.com/harfbuzz/harfbuzz/issues/1596 - src/hb-algs.hh | 2 +- - src/hb-array.hh | 13 +++++++++++++ - src/hb-serialize.hh | 5 +++++ - src/hb-vector.hh | 5 +++++ - 4 files changed, 24 insertions(+), 1 deletion(-) + CMakeLists.txt | 12 ------------ + 1 file changed, 12 deletions(-) -commit d6b28057a5cc636138cd453947d3a2008f18729f -Author: Behdad Esfahbod -Date: Sat Mar 30 19:31:51 2019 -0700 +commit f1e97c189ec506ec1dfd74a413884b63dedcb682 +Author: Michiharu Ariza +Date: Mon Feb 25 09:59:27 2019 -0800 - Fix hb_hash(pointer) + renamed hb_map2_t to hb_bimap_h in its own .hh - src/hb-algs.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/Makefile.sources | 1 + + src/hb-bimap.hh | 109 +++++++++++++++++++++++ + src/hb-ot-cff-common.hh | 4 +- + src/hb-ot-cff1-table.hh | 4 +- + src/hb-ot-gvar-table.hh | 211 ++++++++++++++++++++++++++++++++++++++++++++ + src/hb-ot-layout-common.hh | 84 +----------------- + src/hb-ot-var-hvar-table.hh | 12 +-- + src/hb-subset-cff-common.cc | 2 +- + src/hb-subset-cff-common.hh | 4 +- + src/hb-subset-cff1.cc | 8 +- + src/hb-subset-cff2.cc | 2 +- + 11 files changed, 343 insertions(+), 98 deletions(-) + +commit 655bc96bc23265f85c1c3c531957ee7e4aa3bf2c +Author: Michiharu Ariza +Date: Fri Feb 22 14:53:06 2019 -0800 -commit d74dc3ef65a159fe585e906deccdb32b570433aa -Author: Behdad Esfahbod -Date: Sat Mar 30 19:26:37 2019 -0700 + subset VVAR & outer indices - [serialize] Don't insert empty object into tree + src/hb-ot-var-hvar-table.hh | 49 ++++++++++++++++++++++++++++++++++++--------- + src/hb-subset.cc | 3 +++ + 2 files changed, 43 insertions(+), 9 deletions(-) - src/hb-serialize.hh | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) +commit 6ecfaaa6d5f0fd7f3ab3e1670a055b372975fffb +Author: Michiharu Ariza +Date: Fri Feb 22 10:22:08 2019 -0800 -commit 7fd82283263f8caded4870d6e12f74c7e660fa8d -Author: Behdad Esfahbod -Date: Sat Mar 30 19:16:20 2019 -0700 + unuse set in hb_map2_t impl + + also some code cleanup - [serialize] Towards maintaining hashmap + src/hb-ot-layout-common.hh | 46 +++++++++++++++++++++++----------------------- + 1 file changed, 23 insertions(+), 23 deletions(-) - src/hb-algs.hh | 2 +- - src/hb-serialize.hh | 16 ++++++++++++++-- - src/hb-vector.hh | 1 + - 3 files changed, 16 insertions(+), 3 deletions(-) +commit a762cf5033e4520cc01949854a772207bb27191f +Author: Michiharu Ariza +Date: Thu Feb 21 16:42:30 2019 -0800 -commit f254f45a1e6b1de6d83c97033773d20408772763 -Author: Behdad Esfahbod -Date: Sat Mar 30 19:05:51 2019 -0700 + fixed compiler gripes - [serialize] Only pack main object if there are other objects + src/hb-ot-var-hvar-table.hh | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit a00d1d5e7454dadf70328c723111f219b0ef9a39 +Author: Michiharu Ariza +Date: Thu Feb 21 16:34:49 2019 -0800 + + fix CFF2 local subr subsetting - Avoids a memmove for tables that don't use the object packing mechanism. + bug exposed by impl change of fdmap + also fixed name of subr_remap_ts as subr_remaps_t - src/hb-serialize.hh | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) + src/hb-subset-cff-common.hh | 8 ++++---- + src/hb-subset-cff2.cc | 20 +++++++++----------- + 2 files changed, 13 insertions(+), 15 deletions(-) -commit 946d446f9b795f657d56ca443edbc0b77d660a50 -Author: Behdad Esfahbod -Date: Sat Mar 30 19:03:55 2019 -0700 +commit 8bd9d28e2a4d21aa939918626121e90e37d1e61f +Author: Michiharu Ariza +Date: Thu Feb 21 15:47:27 2019 -0800 - [serialize] Copy both sides of the buffer + fix HVAR & VarStore subsetting - src/hb-serialize.hh | 13 +++++++++---- - 1 file changed, 9 insertions(+), 4 deletions(-) + src/hb-ot-layout-common.hh | 15 +++-- + src/hb-ot-var-hvar-table.hh | 140 ++++++++++++++++++++++---------------------- + 2 files changed, 77 insertions(+), 78 deletions(-) -commit 8512dc565d310e9fd80d831282736284cc3ecd2e +commit 4fd02f6ee58ebf7b4ecf0526328938c5bd74a180 Author: Behdad Esfahbod -Date: Sat Mar 30 19:01:23 2019 -0700 +Date: Fri Mar 29 17:57:59 2019 -0700 - [serialize] Simplify copy + Remove unused line - src/hb-serialize.hh | 22 +++++++--------------- - 1 file changed, 7 insertions(+), 15 deletions(-) + src/hb-machinery.hh | 1 - + 1 file changed, 1 deletion(-) -commit 0b1fe7b716628f7b7b4098da9ef544e1518008f5 +commit 9a5b15dc1eda4f34496bb942d78f0df4e975b469 Author: Behdad Esfahbod -Date: Sat Mar 30 18:48:26 2019 -0700 +Date: Fri Mar 29 17:57:24 2019 -0700 - [serializer] Unbreak for now + [C++11] Replace BEInt.set() with operator= - src/hb-serialize.hh | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) + src/hb-machinery.hh | 15 +++++++++++---- + src/hb-open-type.hh | 8 ++++---- + 2 files changed, 15 insertions(+), 8 deletions(-) -commit 10f062234eb7c762a36cf750e75fe6f74ee89a3d +commit 0aa59b1de34ddebc242cca3ebddde6859269f5f1 Author: Behdad Esfahbod -Date: Sat Mar 30 18:44:01 2019 -0700 +Date: Fri Mar 29 17:49:55 2019 -0700 - [map] Shuffle fini code + [C++11] Add operator= to IntType<> + + Now that we require C++11 we can do this. - src/hb-map.hh | 2 +- + src/hb-open-type.hh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit e6b78003efbe02ba4542cadcc13bc1dd0b1d57b0 +commit eca466e6b1a3e29532af92a2d30b2555c0fafbfc Author: Behdad Esfahbod -Date: Sat Mar 30 18:33:30 2019 -0700 +Date: Fri Mar 29 15:59:04 2019 -0700 - [vector] Add move semantics + Err. Fixup C++11 polyfill removal + + Fixes 1d75db19fb5df139b9648ff3f5e6184a5c554345 - src/hb-vector.hh | 16 ++++++++++++++++ - 1 file changed, 16 insertions(+) + src/hb.hh | 27 +++++++++++++++++++++------ + 1 file changed, 21 insertions(+), 6 deletions(-) -commit 4c4d3c3ed55a8f1eea20593c08322e61fe1cdd3c +commit 3f36c89f2ea16e293f8af7e7f549ebcd7247ea97 Author: Behdad Esfahbod -Date: Sat Mar 30 18:30:50 2019 -0700 +Date: Fri Mar 29 15:22:46 2019 -0700 - [vector] Add some move and forwarding + Inline explicit_operator macro + + Now that we require C++11, no need to macro. - src/hb-serialize.hh | 2 +- - src/hb-vector.hh | 8 ++++---- - 2 files changed, 5 insertions(+), 5 deletions(-) + src/hb-iter.hh | 2 +- + src/hb-machinery.hh | 2 +- + src/hb-open-type.hh | 2 +- + src/hb-vector.hh | 6 +++--- + src/hb.hh | 5 ----- + 5 files changed, 6 insertions(+), 11 deletions(-) -commit 7c9ceabcef426ca6fc54b70db9dd8cb63937710b +commit 1d75db19fb5df139b9648ff3f5e6184a5c554345 Author: Behdad Esfahbod -Date: Sat Mar 30 18:19:36 2019 -0700 +Date: Fri Mar 29 15:20:34 2019 -0700 + + Remove C++<11 polyfill + + Leaving hb-atomic.hh as is since harmless and other projects might + copy from that file. + + src/hb.hh | 81 --------------------------------------------------------------- + 1 file changed, 81 deletions(-) - [meta] Add hb_move and hb_forward ala std:: +commit 8e7887ca5f8a2822345bdcbdc873c73a31c81177 +Merge: 7929b0f0 90aebc6c +Author: Behdad Esfahbod +Date: Fri Mar 29 14:37:04 2019 -0700 - src/hb-meta.hh | 11 +++++++++++ - 1 file changed, 11 insertions(+) + Merge branch 'master' into iter -commit 9a19b885f9136b0b7cdfa04679274cd4b6d16188 +commit 90aebc6cf1aaca281ce51cb8e23831d7167cdcd3 Author: Behdad Esfahbod -Date: Sat Mar 30 18:14:30 2019 -0700 +Date: Fri Mar 29 14:30:02 2019 -0700 - [serialize] Flesh out packing + Update RELEASING - src/hb-serialize.hh | 58 +++++++++++++++++++++++++++++++---------------------- - 1 file changed, 34 insertions(+), 24 deletions(-) + RELEASING.md | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) -commit 357c7c611cc20f86c646bd2d392c243140f92d34 +commit 7929b0f07e87a77687ea50205e6e4013c9264f85 Author: Behdad Esfahbod -Date: Sat Mar 30 18:13:57 2019 -0700 +Date: Fri Mar 29 14:14:55 2019 -0700 - [vector] Add copy constructor and assignment operator + [ci] Fix build - src/hb-vector.hh | 17 ++++++++++++++++- - 1 file changed, 16 insertions(+), 1 deletion(-) + .circleci/config.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 6f69c9d26fa53cd8a2331395bbc146bfc85fd1e3 -Author: Behdad Esfahbod -Date: Sat Mar 30 18:00:03 2019 -0700 +commit b292772e6ef15728dd66329e637265748df0efe1 +Author: Ebrahim Byagowi +Date: Fri Mar 29 13:00:56 2019 -0700 - [serialize] Minor + [dwrite] A new API, hb_directwrite_face_get_font_face (#1600) + + Can be useful when using HarfBuzz for font loading and shaping + but using DirectWrite for rendering. - src/hb-serialize.hh | 9 +++++---- - 1 file changed, 5 insertions(+), 4 deletions(-) + docs/harfbuzz-sections.txt | 10 ++++++++-- + src/hb-directwrite.cc | 34 ++++++++++++++++++++++++++++++---- + src/hb-directwrite.h | 3 +++ + 3 files changed, 41 insertions(+), 6 deletions(-) -commit a43290192beedc6335efc3841c05ec7fa54e8871 +commit 59f36f36820f6e6fb1d3b6da26d6b5ee7588c42f Author: Behdad Esfahbod -Date: Sat Mar 30 17:51:26 2019 -0700 +Date: Fri Mar 29 10:55:12 2019 -0700 - [serialize] Add packed_map + Replace REPLACEME's left out of 2.4.0 + + https://github.com/harfbuzz/harfbuzz/issues/1641 - src/hb-map.hh | 7 +++++++ - src/hb-serialize.hh | 24 +++++++++++++++++++++--- - 2 files changed, 28 insertions(+), 3 deletions(-) + src/hb-common.h | 2 +- + src/hb-directwrite.cc | 2 +- + src/hb-subset-input.cc | 4 ++-- + 3 files changed, 4 insertions(+), 4 deletions(-) -commit bed150bd2e8d61950ea17d1b5a4bf4705801c1cc +commit fe570bc043ca2c6be71b18f7401c8f06e73527e0 Author: Behdad Esfahbod -Date: Sat Mar 30 17:26:35 2019 -0700 +Date: Fri Mar 29 10:51:38 2019 -0700 - [serialize] Start fleshing out object stack + [docs] Remove unexisting section - src/hb-serialize.hh | 91 ++++++++++++++++++++++++++++++++++++++--------------- - src/hb-vector.hh | 9 ++++-- - 2 files changed, 72 insertions(+), 28 deletions(-) + docs/harfbuzz-docs.xml | 1 - + 1 file changed, 1 deletion(-) -commit 63c35651893b2a1c555f728012e9ad36c0f84145 +commit 443db2a24624b63c49fa3ad9a10d3b4c523af1ce Author: Behdad Esfahbod -Date: Sat Mar 30 17:12:40 2019 -0700 +Date: Fri Mar 29 10:46:44 2019 -0700 - [serialize] Simplify propagate_error() + [iter] Remove hb_len() + + Not planning on using it. So remove. Can add later if needed. - src/hb-serialize.hh | 9 ++------- - 1 file changed, 2 insertions(+), 7 deletions(-) + src/hb-iter.hh | 8 -------- + src/test-iter.cc | 2 -- + 2 files changed, 10 deletions(-) -commit dbe9ba6711c6d35374de645097babfd81bc295b2 -Author: Behdad Esfahbod -Date: Sat Mar 30 17:10:59 2019 -0700 +commit d30e5e74814c6db23fdedbe75fd9b89c0dfb4dce +Merge: ddb84dce a252392b +Author: Michiharu Ariza +Date: Fri Mar 29 10:32:45 2019 -0700 - [serialize] Add object_t, link_t, and snapshot_t + Merge branch 'var-subset' of https://github.com/harfbuzz/harfbuzz into var-subset - src/hb-serialize.hh | 32 +++++++++++++++++++++++++++++++- - 1 file changed, 31 insertions(+), 1 deletion(-) +commit ddb84dcece8a12a5615cb1609030a52387bd2fce +Author: Michiharu Ariza +Date: Fri Mar 29 10:32:42 2019 -0700 -commit 38d57b9a66008c9722125d4d677d759a910cf2a1 -Author: Behdad Esfahbod -Date: Sat Mar 30 16:38:06 2019 -0700 + fix gvar fuzz bug - [map] Add another TODO item + .gitignore | 1 + + src/hb-ot-var-gvar-table.hh | 8 +++++++- + 2 files changed, 8 insertions(+), 1 deletion(-) - src/hb-map.hh | 2 ++ - 1 file changed, 2 insertions(+) +commit a252392bc05e8e9e4127e0002b10fe514323730f +Merge: 58c8c7a4 d6fc1d49 +Author: Michiharu Ariza +Date: Fri Mar 29 08:43:47 2019 -0700 -commit 7fd940f899da4948d2c61ed497c1face42776187 + Merge branch 'master' into var-subset + +commit bdd5a9c48d644b660f8fcac16902a576cc7ff443 Author: Behdad Esfahbod -Date: Sat Mar 30 16:29:19 2019 -0700 +Date: Thu Mar 28 21:58:07 2019 -0700 - [map] Add TODO + Add hb_hash() + + I don't like the hb_remove_reference() hack, but necessary. - src/hb-map.hh | 8 ++++++++ - 1 file changed, 8 insertions(+) + src/hb-algs.hh | 17 +++++++++++++++++ + src/hb-map.hh | 10 +--------- + src/hb.hh | 2 +- + 3 files changed, 19 insertions(+), 10 deletions(-) -commit 6dcf7c4017619c782dbc8bd2c584bb33df96fc83 +commit 343e6063dcd512164a999f1d12bae50877392a82 Author: Behdad Esfahbod -Date: Sat Mar 30 15:08:39 2019 -0700 +Date: Thu Mar 28 21:44:12 2019 -0700 - [serialize] Add unused 'tail' + Add hb_is_integer(T) - src/hb-serialize.hh | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) + src/hb-meta.hh | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) -commit fe05e48086be9ed685b8a6ca4af966660744bc0f +commit f639b9a8eab369bee6e36b3e60b585b4f720e77e Author: Behdad Esfahbod -Date: Sat Mar 30 15:06:25 2019 -0700 +Date: Thu Mar 28 21:34:47 2019 -0700 - [serialize] Add ran_out_of_room + [iter] Add hb_len() function-object - src/hb-serialize.hh | 8 +++++++- - src/hb-subset.cc | 7 ++++++- - 2 files changed, 13 insertions(+), 2 deletions(-) + src/hb-iter.hh | 8 ++++++++ + src/test-iter.cc | 2 ++ + 2 files changed, 10 insertions(+) -commit a7c63cd8f8475c6de7fd5bb6444bf5d24082a191 +commit a030ce4ff83e0948e4f865accc5670e8b5e78dde +Merge: 11456b2d d6fc1d49 Author: Behdad Esfahbod -Date: Sat Mar 30 14:59:40 2019 -0700 - - Split sanitize and dispatch into their own files +Date: Thu Mar 28 21:26:50 2019 -0700 - src/Makefile.sources | 2 + - src/hb-dispatch.hh | 50 +++++++ - src/hb-machinery.hh | 369 +----------------------------------------------- - src/hb-sanitize.hh | 388 +++++++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 442 insertions(+), 367 deletions(-) + Merge branch 'master' into iter -commit be66b575fc15dbbe82cf1a7fa0b58020e86cffdc +commit d6fc1d49aa099104a889c96bc9087c21d8fc0960 Author: Behdad Esfahbod -Date: Sat Mar 30 14:53:54 2019 -0700 +Date: Thu Mar 28 21:21:26 2019 -0700 - Move serializer to hb-serialize.hh + 2.4.0 - src/Makefile.sources | 1 + - src/hb-machinery.hh | 164 +----------------------------------------- - src/hb-serialize.hh | 196 +++++++++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 198 insertions(+), 163 deletions(-) + NEWS | 11 +++++++++++ + configure.ac | 2 +- + src/hb-buffer.h | 2 +- + src/hb-version.h | 6 +++--- + 4 files changed, 16 insertions(+), 5 deletions(-) -commit bb22462f292995a724bf20363adf52d3a8357a97 +commit d2db71fdc4764eecf8320cf465ee0e4254146b6e Author: Behdad Esfahbod -Date: Sat Mar 30 14:46:54 2019 -0700 +Date: Thu Mar 28 21:00:58 2019 -0700 - Whitespace + Use internal bsearch() for language tags + + Fixes https://github.com/harfbuzz/harfbuzz/pull/1639 - src/hb-machinery.hh | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) + src/hb-ot-tag.cc | 46 ++++++++++++++++++++++------------------------ + 1 file changed, 22 insertions(+), 24 deletions(-) -commit ef33b5d1f6d3ec21e15ad74ca2524a117f594e06 +commit 21bb80ebf2e20025a196386cee8fd92dd1eb4597 Author: Behdad Esfahbod -Date: Sat Mar 30 14:39:21 2019 -0700 +Date: Thu Mar 28 20:50:04 2019 -0700 - [map] Deref pointers before equality check + [indic] Add back medial-consonant to grammar + + Fixes https://github.com/harfbuzz/harfbuzz/issues/1592 - src/hb-map.hh | 6 ++++-- - src/hb-meta.hh | 4 ++-- - 2 files changed, 6 insertions(+), 4 deletions(-) + src/hb-ot-shape-complex-indic-machine.hh | 1244 +++++++++++--------- + src/hb-ot-shape-complex-indic-machine.rl | 5 +- + src/hb-ot-shape-complex-indic.cc | 2 +- + src/hb-ot-shape-complex-indic.hh | 6 +- + .../f75c4b05a0a4d67c1a808081ae3d74a9c66509e8.ttf | Bin 0 -> 1924 bytes + .../data/in-house/tests/indic-syllable.tests | 2 + + 6 files changed, 672 insertions(+), 587 deletions(-) -commit c98f51da719d1792bf23b53a9a345926056bf34d +commit 5ab6de7a6fbad4c4a954c2c81d216486a5a14f72 Author: Behdad Esfahbod -Date: Sat Mar 30 14:30:22 2019 -0700 +Date: Thu Mar 28 20:23:12 2019 -0700 - [map] Templatize hb_map_t + [khmer] Add trailing Coeng to syllable grammar - Template name is hb_hashmap_t. + Fixes https://github.com/harfbuzz/harfbuzz/issues/1541 - src/hb-map.hh | 65 ++++++++++++++++++++++++++++++++++------------------------- - 1 file changed, 37 insertions(+), 28 deletions(-) + src/hb-ot-shape-complex-khmer-machine.hh | 248 ++++++++++----------- + src/hb-ot-shape-complex-khmer-machine.rl | 2 +- + .../ad01ab2ea1cb1a4d3a2783e2675112ef11ae6404.ttf | Bin 0 -> 1500 bytes + test/shaping/data/in-house/tests/khmer-misc.tests | 1 + + 4 files changed, 122 insertions(+), 129 deletions(-) -commit 4b7f4dbc0cf58d87f4c91f059734e91e4d988480 -Author: Behdad Esfahbod -Date: Sat Mar 30 13:48:32 2019 -0700 +commit 7360265e69a8cdaa9f993c36def2860a79cca49f +Author: Ebrahim Byagowi +Date: Thu Mar 28 16:57:56 2019 -0700 - Add hb_deref_pointer() + [ci] Tweak macos and psvita bots (#1638) + + * Add --with-graphite2 to macOS + * Add a dummy ragel script for psvita - src/hb-algs.hh | 18 +++++++++++++----- - src/hb-meta.hh | 8 ++++++++ - 2 files changed, 21 insertions(+), 5 deletions(-) + .circleci/config.yml | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) -commit e5306927994e8e412dea5dd960b8b3ed4ca848eb -Author: Behdad Esfahbod -Date: Fri Mar 29 23:31:07 2019 -0700 +commit 58c8c7a495fcc353d09158fc23a45f35b2dab2dc +Merge: 485fe06f a548d1da +Author: Michiharu Ariza +Date: Thu Mar 28 16:17:41 2019 -0700 - [iter] Fix bug in hb_any() and hb_none() + Merge branch 'master' into var-subset - src/hb-iter.hh | 4 ++-- - src/hb-ot-layout-gsubgpos.hh | 12 ++++++------ - src/test-iter.cc | 2 +- - 3 files changed, 9 insertions(+), 9 deletions(-) +commit 485fe06f74d7dce41480d7d6f0dbe0129a7b2a39 +Author: Michiharu Ariza +Date: Thu Mar 28 16:17:36 2019 -0700 -commit f505b5d5c9c05741a933b4b986503e1697bbdfdb -Author: Behdad Esfahbod -Date: Fri Mar 29 22:55:02 2019 -0700 + minor - [iter] Port remaining "for (auto" instances to daggers + src/hb-ot-var-hvar-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) - src/hb-ot-layout-gsubgpos.hh | 35 +++++++++++++++++++++++------------ - 1 file changed, 23 insertions(+), 12 deletions(-) +commit a548d1da78b506cc6460fdde3715f6ef13ccad48 +Author: Ebrahim Byagowi +Date: Thu Mar 28 15:42:45 2019 -0700 -commit 668d2d562fec797d779c6d6a43eb6e1c7cfbc07a -Author: Behdad Esfahbod -Date: Fri Mar 29 22:48:38 2019 -0700 + [ci] Use only CircleCI for macOS (#1637) + + .circleci/config.yml | 5 +++-- + .travis.yml | 18 ------------------ + 2 files changed, 3 insertions(+), 20 deletions(-) - [iter] One more dagger +commit 5f36771c2ab612b403e55504b7901b0390b1b76d +Merge: 99f0c107 061bd0a9 +Author: Michiharu Ariza +Date: Thu Mar 28 15:07:53 2019 -0700 - src/hb-ot-layout-gsubgpos.hh | 13 +++++++------ - 1 file changed, 7 insertions(+), 6 deletions(-) + Merge branch 'var-subset' of https://github.com/harfbuzz/harfbuzz into var-subset -commit d51452500f909803a346f26c71cf4b3f84f619bd -Author: Behdad Esfahbod -Date: Fri Mar 29 22:48:12 2019 -0700 +commit 99f0c107f7e1083d3b8ad8354876770f69fddf52 +Author: Michiharu Ariza +Date: Thu Mar 28 15:07:49 2019 -0700 - [iter] Remove more wrong &&'s - - Sigh... + fixed a fuzzer bug - src/hb-iter.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-var-hvar-table.hh | 1 + + 1 file changed, 1 insertion(+) -commit 05f2130a1c479afe7982e8ddcfb3d83af9960e5b +commit 160b4a2b01e925812fbf0e7db5bc9dcb90dc81cc Author: Behdad Esfahbod -Date: Fri Mar 29 22:40:13 2019 -0700 +Date: Thu Mar 28 13:44:38 2019 -0700 - [iter] More daggers + Fix shell syntax error + + Fixes https://github.com/harfbuzz/harfbuzz/issues/1612 - src/hb-ot-layout-gsubgpos.hh | 110 +++++++++++++++++++++++++------------------ - 1 file changed, 64 insertions(+), 46 deletions(-) + src/check-symbols.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 22ec4c3aa5aa41b7aa2a89290851ddd386273579 +commit 8665b9b0a24e4d46e486057d72c0486b9da16523 Author: Behdad Esfahbod -Date: Fri Mar 29 22:27:46 2019 -0700 +Date: Thu Mar 28 11:11:52 2019 -0700 - [iter] More daggers + Comment - src/hb-ot-layout-gsubgpos.hh | 55 ++++++++++++++++++++++++++------------------ - 1 file changed, 33 insertions(+), 22 deletions(-) + src/hb.hh | 1 + + 1 file changed, 1 insertion(+) -commit 688069bbfb40d69fb141371633cd499d91324cc2 -Author: Behdad Esfahbod -Date: Fri Mar 29 22:17:31 2019 -0700 +commit a7eed7e41dba8e583a9c740a4ca7ddf53e77de63 +Author: punchcutter +Date: Wed Mar 27 23:12:58 2019 -0700 - [iter] One more dagger + Override USE category for Grantha and Tirhuta visargas to allow marks - src/hb-ot-layout-gsub-table.hh | 13 +++++-------- - 1 file changed, 5 insertions(+), 8 deletions(-) + src/gen-use-table.py | 3 ++- + src/hb-ot-shape-complex-use-table.cc | 4 ++-- + 2 files changed, 4 insertions(+), 3 deletions(-) -commit 90b60bd6909ffc6d0bff3e6901057439460407ca -Author: Behdad Esfahbod -Date: Fri Mar 29 22:12:42 2019 -0700 +commit cf040c0fef4a049a75a5ec7972f518b9034bdc76 +Author: Egor Pugin +Date: Thu Mar 28 19:06:12 2019 +0300 - Remove HB_DEBUG_WOULD_APPLY + Disable unwanted C++ definitions for MSVC. - Not that useful. + MSVC does not set __cplusplus to the latest standard and also it does not like redefining some keywords. - src/hb-debug.hh | 15 +--------- - src/hb-ot-layout-gsub-table.hh | 49 ++++++++++---------------------- - src/hb-ot-layout-gsubgpos.hh | 64 ++++++++++++++++++------------------------ - 3 files changed, 43 insertions(+), 85 deletions(-) + src/hb.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 4d28267e59406cc85761131b84c5b2b4c65c6b35 -Author: Behdad Esfahbod -Date: Fri Mar 29 22:04:15 2019 -0700 +commit 061bd0a99b0724953fcbdaaef4ea91a54cd7d3ce +Merge: d8e3e360 67175987 +Author: Michiharu Ariza +Date: Wed Mar 27 08:53:50 2019 -0700 - [iter] Port more to daggers + Merge branch 'var-subset' of https://github.com/harfbuzz/harfbuzz into var-subset - src/hb-ot-layout-gsub-table.hh | 22 +++++++++++----------- - 1 file changed, 11 insertions(+), 11 deletions(-) +commit d8e3e3607e6435b994a3e2f4285c5b4d17c5dfa4 +Merge: bcd689bb 717181c5 +Author: Michiharu Ariza +Date: Wed Mar 27 08:53:48 2019 -0700 -commit 9d8c72042b4a023b55cb39779407fdecaf098af1 -Author: Behdad Esfahbod -Date: Fri Mar 29 21:59:28 2019 -0700 + Merge branch 'master' into var-subset - Whitespace +commit 67175987bd6c90ca2e79e8d604a73e6052e82823 +Author: Michiharu Ariza +Date: Wed Mar 27 08:52:46 2019 -0700 - src/hb-ot-layout-gpos-table.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + tweaked recursion checks -commit 418e9d07e2120f806852312f4c74204fa085a6cc -Author: Behdad Esfahbod -Date: Fri Mar 29 21:57:26 2019 -0700 + src/hb-ot-glyf-table.hh | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) - Simplify code +commit 717181c5943c13a682c719dce10bfc3d9cc47e6b +Author: Ebrahim Byagowi +Date: Wed Mar 27 16:38:39 2019 +0430 - src/hb-ot-layout-gsub-table.hh | 20 +++----------------- - 1 file changed, 3 insertions(+), 17 deletions(-) + [ci] remove ragel from psvita compile bot -commit f5ef8a7347656ad5f5bb8cec5f9a3de262a79411 -Author: Behdad Esfahbod -Date: Fri Mar 29 21:57:17 2019 -0700 + .circleci/config.yml | 1 - + 1 file changed, 1 deletion(-) - [iter] Port one more function to dagger +commit 08e36c5d8be22b3a7e31f33af9452372dafeacc0 +Author: Ebrahim Byagowi +Date: Wed Mar 27 16:21:47 2019 +0430 - src/hb-ot-layout-gpos-table.hh | 14 ++++++++------ - 1 file changed, 8 insertions(+), 6 deletions(-) + [ci] Don't install ragel on cmake build bot images + + It is not needed anyway -commit bcab098c8f35ac4bef6618d949a7bf1d95869fa5 -Author: Behdad Esfahbod -Date: Fri Mar 29 21:49:18 2019 -0700 + .circleci/config.yml | 5 ----- + 1 file changed, 5 deletions(-) - [iter] Port more code to daggers +commit feb712d8d80c48e08f3f715a41400e4ef19b80de +Author: Michiharu Ariza +Date: Tue Mar 26 20:35:01 2019 -0700 - src/hb-ot-layout-gsub-table.hh | 14 ++++++++------ - 1 file changed, 8 insertions(+), 6 deletions(-) + add recursion checks -commit 4c75158e1803e73d6126f715aa4b22ebe30aa7c7 -Author: Behdad Esfahbod -Date: Fri Mar 29 21:46:13 2019 -0700 + src/hb-ot-glyf-table.hh | 24 ++++++++++++++---------- + 1 file changed, 14 insertions(+), 10 deletions(-) - [iter] Port two more functions to daggers +commit bcd689bb1090a1bf5113e67edfce583832bb2187 +Merge: 49f93596 ec2a5dc8 +Author: Michiharu Ariza +Date: Tue Mar 26 17:13:31 2019 -0700 - src/hb-ot-layout-gsub-table.hh | 29 +++++++++++++++++------------ - 1 file changed, 17 insertions(+), 12 deletions(-) + Merge branch 'master' into var-subset -commit e70ccbe9edd4d5e033df4afa728b3593ba9f78af -Author: Behdad Esfahbod -Date: Fri Mar 29 21:45:49 2019 -0700 +commit 49f9359632c78754b6e1eb32f2505b340cde55c8 +Author: Michiharu Ariza +Date: Tue Mar 26 17:10:46 2019 -0700 - Fix pair signature + add support of anchor point & SCALED/UNSCALED_COMPONENT_OFFSET - Oh well. Again, who does fully understand what is right??? + some code cleanup - src/hb-algs.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-glyf-table.hh | 166 ++++++++++++++------- + src/hb-ot-var-gvar-table.hh | 38 ++++- + test/api/fonts/SourceSansVariable-Roman.anchor.ttf | Bin 0 -> 4708 bytes + test/api/test-ot-metrics-tt-var.c | 33 ++++ + 4 files changed, 179 insertions(+), 58 deletions(-) -commit 6237b47f0c59fd3913b19b23800cdf83eaa01fb6 -Author: Behdad Esfahbod -Date: Fri Mar 29 21:36:49 2019 -0700 +commit ec2a5dc859b03ceb92518aa992e4e9c053b30534 +Author: Behdad Esfahbod +Date: Tue Mar 26 16:18:03 2019 -0700 - [iter] Add hb_unzip() + Use class templates for Null objects + + This allows partial-instantiating custom Null object for template Lookup. + Before, this had to be handcoded per instantiation. Apparently I missed + adding one for AAT::ankr.lookupTable, so it was getting the wrong (generic) + null for Lookup object, which is wrong and unsafe. + + Fixes https://bugs.chromium.org/p/chromium/issues/detail?id=944346 - src/hb-iter.hh | 38 ++++++++++++++++++++++++++++++++++++++ - 1 file changed, 38 insertions(+) + src/hb-aat-layout-common.hh | 14 ++++------ + src/hb-null.hh | 31 +++++++++++++-------- + ...case-minimized-harfbuzz_fuzzer-5748102301614080 | Bin 0 -> 213 bytes + 3 files changed, 24 insertions(+), 21 deletions(-) -commit f1dad91eb3ce9dcdedbb4a0d6e34517db0154a84 -Author: Behdad Esfahbod -Date: Fri Mar 29 21:17:08 2019 -0700 +commit 96f12377942dbe1c6b1d0ffa7d626d99cb265443 +Author: Behdad Esfahbod +Date: Tue Mar 26 16:17:45 2019 -0700 - Whitespace + [aat] Add missing check to ankr table + + Isn't absolutely needed. But helps. - src/hb-ot-layout-gsub-table.hh | 3 +++ - 1 file changed, 3 insertions(+) + src/hb-aat-layout-ankr-table.hh | 1 + + 1 file changed, 1 insertion(+) -commit 896b31670d07cbe276feff1db249b64faa5c552c -Author: Behdad Esfahbod -Date: Fri Mar 29 21:16:30 2019 -0700 +commit e5dfffb1ef610a982ed9878fbf3f9ee49cbc3a97 +Author: Behdad Esfahbod +Date: Mon Mar 25 15:15:37 2019 -0700 - [iter] Port two more loops to dagger + [docs] Update - src/hb-ot-layout-gsub-table.hh | 14 +++++++++----- - 1 file changed, 9 insertions(+), 5 deletions(-) + docs/harfbuzz-docs.xml | 1 + + 1 file changed, 1 insertion(+) -commit 8e34cb251a9b22d6fbc637fd2f25965beb260270 -Author: Behdad Esfahbod -Date: Fri Mar 29 21:14:20 2019 -0700 +commit 0dd3fdf9d227f9bd79f395078f8e58dcfc32d1bf +Author: Behdad Esfahbod +Date: Mon Mar 25 15:08:14 2019 -0700 - [iter] Remove unneeded && + Update ChangeLog generation - Next commit needs this. I never fully get this, sigh. + Let's see if I can make a release on Mac... - src/hb-iter.hh | 2 +- + Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 12a4c0441ff13e56bb87f53eab45930c2a6142ed -Author: Behdad Esfahbod -Date: Fri Mar 29 21:06:10 2019 -0700 - - Whitespace - - src/hb-ot-layout-gsub-table.hh | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) +commit 2d9034491eca0a63db82d3801f05c067a5241b7d +Author: Qunxin Liu +Date: Tue Mar 26 10:37:24 2019 -0700 -commit 4c38a9f6011a9b1dd6c4fc98620e23decc340322 -Author: Behdad Esfahbod -Date: Fri Mar 29 20:23:07 2019 -0700 + completely remove lines that are commented out - Remove hb_assign() - - Not needed anymore. We just use operator= now. + src/hb-subset-plan.cc | 6 ------ + src/hb-subset-plan.hh | 3 --- + 2 files changed, 9 deletions(-) - src/hb-iter.hh | 2 +- - src/hb-machinery.hh | 2 +- - src/hb-null.hh | 13 ------------- - src/hb-open-type.hh | 2 +- - 4 files changed, 3 insertions(+), 16 deletions(-) +commit 3147133b6173487c26813a2a406aebd067b53fbf +Author: Qunxin Liu +Date: Tue Mar 26 09:15:56 2019 -0700 -commit b986c6a321f7d997eba0a9308b651966644bf336 -Author: Behdad Esfahbod -Date: Fri Mar 29 20:17:46 2019 -0700 + update arguments in_populate_gids_to_retain() and _create_old_gid_to_new_gid_map() + so they don't use deprecated variable - [C++11] Remove IntType::set() in favor of operator= + src/hb-subset-plan.cc | 36 ++++++++++++++++++------------------ + 1 file changed, 18 insertions(+), 18 deletions(-) - src/hb-cff-interp-common.hh | 4 +- - src/hb-ft.cc | 2 +- - src/hb-null.hh | 6 --- - src/hb-open-file.hh | 14 +++--- - src/hb-open-type.hh | 43 +++++++++++------ - src/hb-ot-cff-common.hh | 24 +++++----- - src/hb-ot-cff1-table.hh | 32 ++++++------- - src/hb-ot-cmap-table.hh | 77 +++++++++++++++--------------- - src/hb-ot-glyf-table.hh | 2 +- - src/hb-ot-hdmx-table.hh | 12 ++--- - src/hb-ot-hmtx-table.hh | 8 ++-- - src/hb-ot-layout-common.hh | 44 ++++++++--------- - src/hb-ot-layout-gdef-table.hh | 8 ++-- - src/hb-ot-layout-gsub-table.hh | 18 +++---- - src/hb-ot-maxp-table.hh | 16 +++---- - src/hb-ot-os2-table.hh | 10 ++-- - src/hb-ot-post-table.hh | 2 +- - src/hb-ot-shape-complex-arabic-fallback.hh | 10 ++-- - src/hb-ot-vorg-table.hh | 12 ++--- - src/hb-subset-cff-common.cc | 12 ++--- - src/hb-subset-cff-common.hh | 2 +- - src/hb-subset-cff1.cc | 10 ++-- - src/hb-subset-cff2.cc | 8 ++-- - src/hb-subset-glyf.cc | 8 ++-- - src/hb-uniscribe.cc | 22 ++++----- - 25 files changed, 206 insertions(+), 200 deletions(-) +commit 79a6c258497e80be15245a7b576e34443d9f7bff +Author: Qunxin Liu +Date: Mon Mar 25 19:59:37 2019 -0700 -commit 58ad357951a732f05d9680573d00a4764171a9dd -Author: Behdad Esfahbod -Date: Fri Mar 29 20:05:19 2019 -0700 + try to remove deprecated variable from struct definition - [vector] Accept all types in push(...) - - Let assignment operator worry about conversion. + src/hb-subset-plan.cc | 9 +++++---- + src/hb-subset-plan.hh | 2 +- + 2 files changed, 6 insertions(+), 5 deletions(-) - src/hb-vector.hh | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) +commit 94ef1a703ff20614538680587a23cec5f1649189 +Author: Michiharu Ariza +Date: Fri Mar 22 11:05:23 2019 -0700 -commit 489faf826ca16e9bc89515869ebaf52653450b54 -Author: Behdad Esfahbod -Date: Fri Mar 29 20:01:37 2019 -0700 + add HVAR & VVAR advance width api test - [C++11] Use type aliases for template partial instantiations + test/api/test-ot-metrics-tt-var.c | 41 +++++++++++++++++++++++++++++++++++++-- + 1 file changed, 39 insertions(+), 2 deletions(-) - src/hb-open-type.hh | 24 ++++++++++++++---------- - 1 file changed, 14 insertions(+), 10 deletions(-) +commit 3c4f041e9e8adc5d906a7bd37dc86345c2bf91e8 +Author: Michiharu Ariza +Date: Fri Mar 22 10:26:48 2019 -0700 -commit 4fd02f6ee58ebf7b4ecf0526328938c5bd74a180 -Author: Behdad Esfahbod -Date: Fri Mar 29 17:57:59 2019 -0700 + fix uninitialized memory bug - Remove unused line + src/hb-ot-layout-common.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) - src/hb-machinery.hh | 1 - - 1 file changed, 1 deletion(-) +commit d2a0149c2999eab315a0582a5e1fa31a2511b869 +Author: Michiharu Ariza +Date: Thu Mar 21 18:09:37 2019 -0700 -commit 9a5b15dc1eda4f34496bb942d78f0df4e975b469 -Author: Behdad Esfahbod -Date: Fri Mar 29 17:57:24 2019 -0700 + added api test for subset VVAR & bug fix + + added a mod copy of SourceSerifVariable-Roman.ttf with VVAR as a test font - [C++11] Replace BEInt.set() with operator= + src/hb-ot-var-hvar-table.hh | 7 +- + test/api/Makefile.am | 2 + + .../fonts/SourceSerifVariable-Roman-VVAR.abc.ttf | Bin 0 -> 5632 bytes + ...ourceSerifVariable-Roman-VVAR.ac.retaingids.ttf | Bin 0 -> 5288 bytes + .../fonts/SourceSerifVariable-Roman-VVAR.ac.ttf | Bin 0 -> 3224 bytes + test/api/test-subset-vvar.c | 103 +++++++++++++++++++++ + 6 files changed, 108 insertions(+), 4 deletions(-) - src/hb-machinery.hh | 15 +++++++++++---- - src/hb-open-type.hh | 8 ++++---- - 2 files changed, 15 insertions(+), 8 deletions(-) +commit 8ec279072e039c7a75ea90e2284d46bd9faee8ee +Merge: 0593a95e 5390e393 +Author: Michiharu Ariza +Date: Thu Mar 21 10:38:12 2019 -0700 -commit 0aa59b1de34ddebc242cca3ebddde6859269f5f1 -Author: Behdad Esfahbod -Date: Fri Mar 29 17:49:55 2019 -0700 + Merge branch 'var-subset' of https://github.com/harfbuzz/harfbuzz into var-subset - [C++11] Add operator= to IntType<> - - Now that we require C++11 we can do this. +commit 0593a95e28e08a130c87f23c527156ac1d46219b +Author: Michiharu Ariza +Date: Thu Mar 21 10:36:53 2019 -0700 - src/hb-open-type.hh | 2 +- + refix short count + + src/hb-ot-layout-common.hh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit eca466e6b1a3e29532af92a2d30b2555c0fafbfc -Author: Behdad Esfahbod -Date: Fri Mar 29 15:59:04 2019 -0700 +commit 5390e39342e78566095b580603bd1f76cdafc010 +Merge: 084be9a0 5f15fca6 +Author: Michiharu Ariza +Date: Thu Mar 21 10:21:50 2019 -0700 - Err. Fixup C++11 polyfill removal - - Fixes 1d75db19fb5df139b9648ff3f5e6184a5c554345 + Merge branch 'var-subset' of https://github.com/harfbuzz/harfbuzz into var-subset - src/hb.hh | 27 +++++++++++++++++++++------ - 1 file changed, 21 insertions(+), 6 deletions(-) +commit 084be9a0f466134998da79e9a81191836f847ab8 +Merge: 3faaa52a bcb4e505 +Author: Michiharu Ariza +Date: Thu Mar 21 10:21:31 2019 -0700 -commit 3f36c89f2ea16e293f8af7e7f549ebcd7247ea97 -Author: Behdad Esfahbod -Date: Fri Mar 29 15:22:46 2019 -0700 + Merge branch 'master' into var-subset - Inline explicit_operator macro - - Now that we require C++11, no need to macro. +commit 5f15fca66206af36cafc9a7b650462b544460d6e +Author: Michiharu Ariza +Date: Thu Mar 21 10:18:03 2019 -0700 - src/hb-iter.hh | 2 +- - src/hb-machinery.hh | 2 +- - src/hb-open-type.hh | 2 +- - src/hb-vector.hh | 6 +++--- - src/hb.hh | 5 ----- - 5 files changed, 6 insertions(+), 11 deletions(-) + fix short count optimization -commit 1d75db19fb5df139b9648ff3f5e6184a5c554345 -Author: Behdad Esfahbod -Date: Fri Mar 29 15:20:34 2019 -0700 + src/hb-ot-layout-common.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) - Remove C++<11 polyfill - - Leaving hb-atomic.hh as is since harmless and other projects might - copy from that file. +commit 3faaa52aa7e4c72d94657702047e2d3dddbb3292 +Author: Michiharu Ariza +Date: Thu Mar 21 09:50:53 2019 -0700 - src/hb.hh | 81 --------------------------------------------------------------- - 1 file changed, 81 deletions(-) + regenerated expected full fonts data after fontTools bug 1550 fixed -commit 8e7887ca5f8a2822345bdcbdc873c73a31c81177 -Merge: 7929b0f0 90aebc6c -Author: Behdad Esfahbod -Date: Fri Mar 29 14:37:04 2019 -0700 + ...eSerifVariable-Roman.drop-hints.D7,D8,D9,DA,DE.ttf | Bin 5928 -> 5924 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) - Merge branch 'master' into iter +commit 325918172e7a346b6de6a8afcd94a4d7fd35d5c0 +Author: Michiharu Ariza +Date: Wed Mar 20 15:10:59 2019 -0700 + + added TT VF full font test & fixed bugs + + updated CFF2 VF api test results too + + src/hb-ot-layout-common.hh | 53 +++++++++++++++++---- + src/hb-ot-var-hvar-table.hh | 51 +++++++++++--------- + test/api/fonts/AdobeVFPrototype.abc.otf | Bin 6772 -> 6952 bytes + test/api/fonts/AdobeVFPrototype.ac.nohints.otf | Bin 6096 -> 6272 bytes + .../fonts/AdobeVFPrototype.ac.nosubrs.nohints.otf | Bin 6160 -> 6152 bytes + test/api/fonts/AdobeVFPrototype.ac.nosubrs.otf | Bin 6376 -> 6336 bytes + test/api/fonts/AdobeVFPrototype.ac.otf | Bin 6312 -> 6460 bytes + test/api/fonts/AdobeVFPrototype.ac.retaingids.otf | Bin 6316 -> 6464 bytes + ...ifVariable-Roman.default.1FC,21,41,20,62,63.ttf | Bin 0 -> 5464 bytes + .../SourceSerifVariable-Roman.default.61,62,63.ttf | Bin 0 -> 5432 bytes + ...eSerifVariable-Roman.default.D7,D8,D9,DA,DE.ttf | Bin 0 -> 5924 bytes + ...ariable-Roman.drop-hints.1FC,21,41,20,62,63.ttf | Bin 0 -> 5464 bytes + ...urceSerifVariable-Roman.drop-hints.61,62,63.ttf | Bin 0 -> 5432 bytes + ...rifVariable-Roman.drop-hints.D7,D8,D9,DA,DE.ttf | Bin 0 -> 5928 bytes + .../data/fonts/SourceSerifVariable-Roman.ttf | Bin 0 -> 586100 bytes + test/subset/data/tests/full-font.tests | 1 + + 16 files changed, 72 insertions(+), 33 deletions(-) + +commit 92bc74055831acae3d296f6e1470fa4cd4d193fd +Author: Michiharu Ariza +Date: Tue Mar 19 18:23:14 2019 -0700 -commit 90aebc6cf1aaca281ce51cb8e23831d7167cdcd3 -Author: Behdad Esfahbod -Date: Fri Mar 29 14:30:02 2019 -0700 + update CFF2 test results - Update RELEASING + test/api/fonts/AdobeVFPrototype.abc.otf | Bin 7456 -> 6772 bytes + test/api/fonts/AdobeVFPrototype.ac.nohints.otf | Bin 6780 -> 6096 bytes + .../api/fonts/AdobeVFPrototype.ac.nosubrs.nohints.otf | Bin 6844 -> 6160 bytes + test/api/fonts/AdobeVFPrototype.ac.nosubrs.otf | Bin 7060 -> 6376 bytes + test/api/fonts/AdobeVFPrototype.ac.otf | Bin 6996 -> 6312 bytes + test/api/fonts/AdobeVFPrototype.ac.retaingids.otf | Bin 7000 -> 6316 bytes + 6 files changed, 0 insertions(+), 0 deletions(-) - RELEASING.md | 9 +++++---- - 1 file changed, 5 insertions(+), 4 deletions(-) +commit 1051faf7aa639abc27974da213eb48f549f8c39c +Author: Michiharu Ariza +Date: Tue Mar 19 16:00:01 2019 -0700 -commit 7929b0f07e87a77687ea50205e6e4013c9264f85 -Author: Behdad Esfahbod -Date: Fri Mar 29 14:14:55 2019 -0700 + add api test cases for HVAR with index map (and fix) - [ci] Fix build + src/hb-ot-var-hvar-table.hh | 2 +- + test/api/test-subset-hvar.c | 76 +++++++++++++++++++++++++++++++++++++++++---- + 2 files changed, 71 insertions(+), 7 deletions(-) - .circleci/config.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) +commit 0576253a340243eb8e4feabb3481f354a82a11a1 +Author: Michiharu Ariza +Date: Tue Mar 19 12:34:03 2019 -0700 -commit b292772e6ef15728dd66329e637265748df0efe1 -Author: Ebrahim Byagowi -Date: Fri Mar 29 13:00:56 2019 -0700 + add gvar & HVAR retain-gids test cases - [dwrite] A new API, hb_directwrite_face_get_font_face (#1600) - - Can be useful when using HarfBuzz for font loading and shaping - but using DirectWrite for rendering. + .../SourceSansVariable-Roman.ac.retaingids.ttf | Bin 0 -> 3040 bytes + test/api/test-subset-gvar.c | 22 ++++++++++++++++++++ + test/api/test-subset-hvar.c | 23 +++++++++++++++++++++ + 3 files changed, 45 insertions(+) - docs/harfbuzz-sections.txt | 10 ++++++++-- - src/hb-directwrite.cc | 34 ++++++++++++++++++++++++++++++---- - src/hb-directwrite.h | 3 +++ - 3 files changed, 41 insertions(+), 6 deletions(-) +commit 6dd1077b68e20e97b595c676267b964dd5cbbe1c +Author: Michiharu Ariza +Date: Tue Mar 19 01:00:53 2019 -0700 -commit 59f36f36820f6e6fb1d3b6da26d6b5ee7588c42f -Author: Behdad Esfahbod -Date: Fri Mar 29 10:55:12 2019 -0700 + fix test build - Replace REPLACEME's left out of 2.4.0 + test/api/Makefile.am | 2 ++ + 1 file changed, 2 insertions(+) + +commit 2e6038a209022c8b7957daf661488edfc166bdc5 +Author: Michiharu Ariza +Date: Tue Mar 19 00:41:41 2019 -0700 + + add api tests for subset gvar & HVAR; bug fixes + + src/hb-ot-layout-common.hh | 3 +- + src/hb-ot-var-gvar-table.hh | 24 +++---- + src/hb-ot-var-hvar-table.hh | 19 +++++- + test/api/Makefile.am | 2 + + test/api/fonts/SourceSansVariable-Roman.abc.ttf | Bin 0 -> 3240 bytes + test/api/fonts/SourceSansVariable-Roman.ac.ttf | Bin 0 -> 3028 bytes + test/api/test-subset-gvar.c | 81 ++++++++++++++++++++++++ + test/api/test-subset-hvar.c | 81 ++++++++++++++++++++++++ + 8 files changed, 194 insertions(+), 16 deletions(-) + +commit aeddb30f87ea957e7e780705c099e849c6d7e27d +Author: Michiharu Ariza +Date: Mon Mar 18 18:11:00 2019 -0700 + + replaced tt var api test with a composite glyph - https://github.com/harfbuzz/harfbuzz/issues/1641 + for better coverage - src/hb-common.h | 2 +- - src/hb-directwrite.cc | 2 +- - src/hb-subset-input.cc | 4 ++-- - 3 files changed, 4 insertions(+), 4 deletions(-) + .../SourceSansVariable-Roman-nohvar-41,C1.ttf | Bin 0 -> 4696 bytes + test/api/fonts/SourceSansVariable-Roman.abc.ttf | Bin 3168 -> 0 bytes + test/api/test-ot-metrics-tt-var.c | 36 ++++++++++----------- + 3 files changed, 18 insertions(+), 18 deletions(-) -commit fe570bc043ca2c6be71b18f7401c8f06e73527e0 -Author: Behdad Esfahbod -Date: Fri Mar 29 10:51:38 2019 -0700 +commit 560bcd774473691b310e746d2e7c0287c2bea9fe +Author: Michiharu Ariza +Date: Mon Mar 18 17:50:20 2019 -0700 - [docs] Remove unexisting section + move rounding advance width to glyf - docs/harfbuzz-docs.xml | 1 - - 1 file changed, 1 deletion(-) + src/hb-ot-glyf-table.hh | 24 ++++++++++++++---------- + src/hb-ot-hmtx-table.cc | 8 ++++---- + 2 files changed, 18 insertions(+), 14 deletions(-) -commit 443db2a24624b63c49fa3ad9a10d3b4c523af1ce -Author: Behdad Esfahbod -Date: Fri Mar 29 10:46:44 2019 -0700 +commit c7edd14dc96af59cb53e9560a45f48d809fe8bb1 +Author: Michiharu Ariza +Date: Mon Mar 18 17:16:43 2019 -0700 - [iter] Remove hb_len() - - Not planning on using it. So remove. Can add later if needed. + fix empty glyf's advance width - src/hb-iter.hh | 8 -------- - src/test-iter.cc | 2 -- - 2 files changed, 10 deletions(-) + src/hb-ot-glyf-table.hh | 8 +++++++- + src/hb-ot-hmtx-table.cc | 4 ++-- + 2 files changed, 9 insertions(+), 3 deletions(-) -commit bdd5a9c48d644b660f8fcac16902a576cc7ff443 -Author: Behdad Esfahbod -Date: Thu Mar 28 21:58:07 2019 -0700 +commit 9d3a252030e8f86aff4a35ce56fe77eb718e2071 +Author: Michiharu Ariza +Date: Mon Mar 18 15:39:10 2019 -0700 - Add hb_hash() + add api test for tt var advance widths - I don't like the hb_remove_reference() hack, but necessary. + stripped HVAR from SourceSansVariable-Roman.abc.ttf so glyf gets parsed - src/hb-algs.hh | 17 +++++++++++++++++ - src/hb-map.hh | 10 +--------- - src/hb.hh | 2 +- - 3 files changed, 19 insertions(+), 10 deletions(-) + src/hb-ot-hmtx-table.hh | 1 - + test/api/fonts/SourceSansVariable-Roman.abc.ttf | Bin 3240 -> 3168 bytes + test/api/test-ot-metrics-tt-var.c | 37 ++++++++++++++++++++++++ + 3 files changed, 37 insertions(+), 1 deletion(-) -commit 343e6063dcd512164a999f1d12bae50877392a82 -Author: Behdad Esfahbod -Date: Thu Mar 28 21:44:12 2019 -0700 +commit 9d9d5c706b68a16b2d07f8b8972b2b499c94bf0a +Author: Michiharu Ariza +Date: Mon Mar 18 10:48:53 2019 -0700 - Add hb_is_integer(T) + fix build - src/hb-meta.hh | 14 ++++++++++++++ - 1 file changed, 14 insertions(+) + src/hb-ot-hmtx-table.cc | 15 ++++----------- + src/hb-ot-hmtx-table.hh | 15 +++++++++------ + src/hb-ot-var-gvar-table.hh | 1 + + 3 files changed, 14 insertions(+), 17 deletions(-) -commit f639b9a8eab369bee6e36b3e60b585b4f720e77e -Author: Behdad Esfahbod -Date: Thu Mar 28 21:34:47 2019 -0700 +commit b6cc838888cc302f0de19030b75773fe0fda372f +Author: Michiharu Ariza +Date: Sun Mar 17 22:49:18 2019 -0700 - [iter] Add hb_len() function-object + fix composite glyf extents - src/hb-iter.hh | 8 ++++++++ - src/test-iter.cc | 2 ++ - 2 files changed, 10 insertions(+) + src/hb-ot-glyf-table.hh | 41 +++++++++++++++++++++++++++-------------- + src/hb-ot-var-gvar-table.hh | 3 +++ + 2 files changed, 30 insertions(+), 14 deletions(-) -commit a030ce4ff83e0948e4f865accc5670e8b5e78dde -Merge: 11456b2d d6fc1d49 -Author: Behdad Esfahbod -Date: Thu Mar 28 21:26:50 2019 -0700 +commit 597ad4df0cdff4a0355121e3da2a59e7fa8ee68f +Author: Michiharu Ariza +Date: Sun Mar 17 18:45:30 2019 -0700 - Merge branch 'master' into iter + fix unpack_points -commit d6fc1d49aa099104a889c96bc9087c21d8fc0960 -Author: Behdad Esfahbod -Date: Thu Mar 28 21:21:26 2019 -0700 + src/hb-ot-var-gvar-table.hh | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) - 2.4.0 +commit cabe22fc6967e6299c3a06bbfa9c19e9a23a0ae3 +Author: Michiharu Ariza +Date: Sun Mar 17 17:48:10 2019 -0700 - NEWS | 11 +++++++++++ - configure.ac | 2 +- - src/hb-buffer.h | 2 +- - src/hb-version.h | 6 +++--- - 4 files changed, 16 insertions(+), 5 deletions(-) + fix infer_delta + + code cleanup -commit d2db71fdc4764eecf8320cf465ee0e4254146b6e -Author: Behdad Esfahbod -Date: Thu Mar 28 21:00:58 2019 -0700 + src/hb-ot-glyf-table.hh | 22 ++++++++++++------- + src/hb-ot-var-gvar-table.hh | 52 ++++++++++++++++++++++++++++++--------------- + 2 files changed, 49 insertions(+), 25 deletions(-) - Use internal bsearch() for language tags - - Fixes https://github.com/harfbuzz/harfbuzz/pull/1639 +commit c8b31773a6513e7051e5db98d7d26700856a32a3 +Author: Michiharu Ariza +Date: Sun Mar 17 16:01:49 2019 -0700 - src/hb-ot-tag.cc | 46 ++++++++++++++++++++++------------------------ - 1 file changed, 22 insertions(+), 24 deletions(-) + added explicit casts to metrics -commit 21bb80ebf2e20025a196386cee8fd92dd1eb4597 -Author: Behdad Esfahbod -Date: Thu Mar 28 20:50:04 2019 -0700 + src/hb-ot-hmtx-table.cc | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) - [indic] Add back medial-consonant to grammar +commit 8a7998fd6ce730dd0f182d69d598b802476250dc +Author: Michiharu Ariza +Date: Sun Mar 17 15:36:26 2019 -0700 + + moved most of var code from gvar to glyf - Fixes https://github.com/harfbuzz/harfbuzz/issues/1592 + initialize phantom points from metrics from htmx/vmtx & glyf bbox before execution + added source file hb-ot-hmtx-table.cc to call glyf from hmtx/vmtx indirectly & temporarily, workaround a cyclic reference between the two - src/hb-ot-shape-complex-indic-machine.hh | 1244 +++++++++++--------- - src/hb-ot-shape-complex-indic-machine.rl | 5 +- - src/hb-ot-shape-complex-indic.cc | 2 +- - src/hb-ot-shape-complex-indic.hh | 6 +- - .../f75c4b05a0a4d67c1a808081ae3d74a9c66509e8.ttf | Bin 0 -> 1924 bytes - .../data/in-house/tests/indic-syllable.tests | 2 + - 6 files changed, 672 insertions(+), 587 deletions(-) + src/Makefile.sources | 1 + + src/hb-ot-face.hh | 1 - + src/hb-ot-font.cc | 8 +- + src/hb-ot-glyf-table.hh | 236 +++++++++++++++++++++++++++++++++++++------- + src/hb-ot-hmtx-table.cc | 61 ++++++++++++ + src/hb-ot-hmtx-table.hh | 39 ++++---- + src/hb-ot-var-gvar-table.hh | 195 ++++++++---------------------------- + src/hb-ot-var-hvar-table.hh | 10 +- + 8 files changed, 333 insertions(+), 218 deletions(-) + +commit 00b2653ac3b927f93ac350dbe1d3711790a50119 +Author: Michiharu Ariza +Date: Sat Mar 16 16:27:33 2019 -0700 -commit 5ab6de7a6fbad4c4a954c2c81d216486a5a14f72 -Author: Behdad Esfahbod -Date: Thu Mar 28 20:23:12 2019 -0700 + add components transformation + + src/hb-ot-glyf-table.hh | 44 ++++++++++++++++++++++++++++++++++++++++++-- + src/hb-ot-var-gvar-table.hh | 31 ++++++++++++++++++------------- + 2 files changed, 60 insertions(+), 15 deletions(-) + +commit 434ea06841e60b98601b529ca20cf6bf25f6c165 +Author: Michiharu Ariza +Date: Sat Mar 16 00:08:03 2019 -0700 + + fix tt var extents & add test + + src/hb-ot-glyf-table.hh | 32 +-- + src/hb-ot-var-gvar-table.hh | 270 +++++++++++++----------- + test/api/Makefile.am | 1 + + test/api/fonts/SourceSansVariable-Roman.abc.ttf | Bin 0 -> 3240 bytes + test/api/test-ot-metrics-tt-var.c | 72 +++++++ + 5 files changed, 236 insertions(+), 139 deletions(-) + +commit bcb4e505d6ffe33e3268a06698e75d6be0e64957 +Author: Michiharu Ariza +Date: Fri Mar 15 13:46:25 2019 -0700 + + cff2 subset fuzzer issues (#1619) + + * add check to FDArray::serialize + + * add test files + + * fix off by one + + src/hb-ot-cff-common.hh | 1 + + ...z-testcase-minimized-hb-subset-fuzzer-5739000398086144 | Bin 0 -> 620 bytes + ...z-testcase-minimized-hb-subset-fuzzer-5760768497156096 | Bin 0 -> 210 bytes + ...z-testcase-minimized-hb-subset-fuzzer-5764268627066880 | Bin 0 -> 687 bytes + 4 files changed, 1 insertion(+) - [khmer] Add trailing Coeng to syllable grammar - - Fixes https://github.com/harfbuzz/harfbuzz/issues/1541 +commit a5118c1db51d6d3b24622a52e50246e00b07fa74 +Merge: 90ea140a 079c386c +Author: Michiharu Ariza +Date: Fri Mar 15 10:33:03 2019 -0700 - src/hb-ot-shape-complex-khmer-machine.hh | 248 ++++++++++----------- - src/hb-ot-shape-complex-khmer-machine.rl | 2 +- - .../ad01ab2ea1cb1a4d3a2783e2675112ef11ae6404.ttf | Bin 0 -> 1500 bytes - test/shaping/data/in-house/tests/khmer-misc.tests | 1 + - 4 files changed, 122 insertions(+), 129 deletions(-) + Merge branch 'var-subset' of https://github.com/harfbuzz/harfbuzz into var-subset -commit 7360265e69a8cdaa9f993c36def2860a79cca49f -Author: Ebrahim Byagowi -Date: Thu Mar 28 16:57:56 2019 -0700 +commit 079c386ca89b6d2833786db3ba54b7137d045188 +Merge: 99502b32 8aaab78e +Author: Michiharu Ariza +Date: Fri Mar 15 10:12:19 2019 -0700 - [ci] Tweak macos and psvita bots (#1638) - - * Add --with-graphite2 to macOS - * Add a dummy ragel script for psvita + Merge branch 'master' into var-subset - .circleci/config.yml | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) +commit 90ea140aca18d073401fc971681ce48403fbf399 +Merge: d23c201f 99502b32 +Author: Michiharu Ariza +Date: Thu Mar 14 16:58:19 2019 -0700 -commit a548d1da78b506cc6460fdde3715f6ef13ccad48 -Author: Ebrahim Byagowi -Date: Thu Mar 28 15:42:45 2019 -0700 + Merge branch 'var-subset' of https://github.com/harfbuzz/harfbuzz into var-subset - [ci] Use only CircleCI for macOS (#1637) +commit d23c201f5d8af8f9b38c666e1ba6525d38ef0806 +Author: Michiharu Ariza +Date: Tue Mar 12 11:03:53 2019 -0700 - .circleci/config.yml | 5 +++-- - .travis.yml | 18 ------------------ - 2 files changed, 3 insertions(+), 20 deletions(-) + add gvar::get_extents -commit 160b4a2b01e925812fbf0e7db5bc9dcb90dc81cc -Author: Behdad Esfahbod -Date: Thu Mar 28 13:44:38 2019 -0700 + src/hb-ot-face.hh | 1 + + src/hb-ot-font.cc | 3 + + src/hb-ot-glyf-table.hh | 21 ++++-- + src/hb-ot-var-gvar-table.hh | 164 +++++++++++++++++++++++++++++++++++++++++--- + 4 files changed, 175 insertions(+), 14 deletions(-) - Fix shell syntax error - - Fixes https://github.com/harfbuzz/harfbuzz/issues/1612 +commit dde8bb1f6d0bfaac283fd8c2ad15e354c233bac1 +Author: Michiharu Ariza +Date: Fri Mar 1 21:54:49 2019 -0800 - src/check-symbols.sh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + fix build -commit 8665b9b0a24e4d46e486057d72c0486b9da16523 -Author: Behdad Esfahbod -Date: Thu Mar 28 11:11:52 2019 -0700 + src/hb-ot-var-gvar-table.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) - Comment +commit 5ec65f779bef1ebf2479f83f4b76f4e24d69ddad +Author: Michiharu Ariza +Date: Fri Mar 1 21:49:04 2019 -0800 - src/hb.hh | 1 + - 1 file changed, 1 insertion(+) + minor edits -commit a7eed7e41dba8e583a9c740a4ca7ddf53e77de63 -Author: punchcutter -Date: Wed Mar 27 23:12:58 2019 -0700 + src/hb-ot-cff-common.hh | 2 +- + src/hb-ot-layout-common.hh | 2 ++ + 2 files changed, 3 insertions(+), 1 deletion(-) - Override USE category for Grantha and Tirhuta visargas to allow marks +commit 2d7ad3f28ba3a9c97287eb9e1bf75ad353a908c6 +Author: Michiharu Ariza +Date: Fri Mar 1 21:33:21 2019 -0800 - src/gen-use-table.py | 3 ++- - src/hb-ot-shape-complex-use-table.cc | 4 ++-- - 2 files changed, 4 insertions(+), 3 deletions(-) + build fix attempt -commit cf040c0fef4a049a75a5ec7972f518b9034bdc76 -Author: Egor Pugin -Date: Thu Mar 28 19:06:12 2019 +0300 + src/hb-ot-glyf-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) - Disable unwanted C++ definitions for MSVC. - - MSVC does not set __cplusplus to the latest standard and also it does not like redefining some keywords. +commit cf2ef92c741a20158d15d7ea7c14f6ba82906d36 +Author: Michiharu Ariza +Date: Fri Mar 1 18:24:56 2019 -0800 - src/hb.hh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + more build fixes -commit 717181c5943c13a682c719dce10bfc3d9cc47e6b -Author: Ebrahim Byagowi -Date: Wed Mar 27 16:38:39 2019 +0430 + src/hb-ot-glyf-table.hh | 2 +- + src/hb-ot-var-gvar-table.hh | 13 ++++++------- + 2 files changed, 7 insertions(+), 8 deletions(-) - [ci] remove ragel from psvita compile bot +commit ae0a557c2e56064d204ae549a3be135dca884f67 +Author: Michiharu Ariza +Date: Fri Mar 1 18:12:31 2019 -0800 - .circleci/config.yml | 1 - - 1 file changed, 1 deletion(-) + fix build attempt -commit 08e36c5d8be22b3a7e31f33af9452372dafeacc0 -Author: Ebrahim Byagowi -Date: Wed Mar 27 16:21:47 2019 +0430 + src/hb-ot-var-gvar-table.hh | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) - [ci] Don't install ragel on cmake build bot images - - It is not needed anyway +commit baf2ccf1471856f948ed8d2d46e4d68b0c0b739a +Author: Michiharu Ariza +Date: Fri Mar 1 15:14:22 2019 -0800 - .circleci/config.yml | 5 ----- - 1 file changed, 5 deletions(-) + calculate VF advance widths from gvar & glyf -commit ec2a5dc859b03ceb92518aa992e4e9c053b30534 -Author: Behdad Esfahbod -Date: Tue Mar 26 16:18:03 2019 -0700 + src/hb-ot-glyf-table.hh | 151 ++++++++++++++++ + src/hb-ot-hmtx-table.hh | 23 ++- + src/hb-ot-var-gvar-table.hh | 410 +++++++++++++++++++++++++++++++++++++++----- + 3 files changed, 542 insertions(+), 42 deletions(-) - Use class templates for Null objects - - This allows partial-instantiating custom Null object for template Lookup. - Before, this had to be handcoded per instantiation. Apparently I missed - adding one for AAT::ankr.lookupTable, so it was getting the wrong (generic) - null for Lookup object, which is wrong and unsafe. - - Fixes https://bugs.chromium.org/p/chromium/issues/detail?id=944346 +commit 0b1ae2385b5564efe3dbcd5d068462bcd55effe2 +Author: Michiharu Ariza +Date: Tue Feb 26 16:54:00 2019 -0800 - src/hb-aat-layout-common.hh | 14 ++++------ - src/hb-null.hh | 31 +++++++++++++-------- - ...case-minimized-harfbuzz_fuzzer-5748102301614080 | Bin 0 -> 213 bytes - 3 files changed, 24 insertions(+), 21 deletions(-) + gvar::subset() -commit 96f12377942dbe1c6b1d0ffa7d626d99cb265443 -Author: Behdad Esfahbod -Date: Tue Mar 26 16:17:45 2019 -0700 + src/hb-ot-var-gvar-table.hh | 81 +++++++++++++++++++++++++++++++++++++++------ + 1 file changed, 71 insertions(+), 10 deletions(-) - [aat] Add missing check to ankr table +commit eddbc9d0dbb09589a09e7d8e661004cdd7487e87 +Author: Michiharu Ariza +Date: Tue Feb 26 11:11:50 2019 -0800 + + Added hb-ot-var-gvar-table.hh - Isn't absolutely needed. But helps. + implemented sanitize() + placeholder subset() + some code cleanup - src/hb-aat-layout-ankr-table.hh | 1 + - 1 file changed, 1 insertion(+) + src/Makefile.sources | 1 + + src/hb-bimap.hh | 6 +- + src/hb-ot-gvar-table.hh | 211 -------------------------------------------- + src/hb-ot-var-gvar-table.hh | 207 +++++++++++++++++++++++++++++++++++++++++++ + src/hb-ot-var-hvar-table.hh | 14 +-- + src/hb-subset.cc | 4 + + 6 files changed, 222 insertions(+), 221 deletions(-) + +commit f289ffe5eaf1c8cc87f9ee80f77a4af974919611 +Author: Michiharu Ariza +Date: Mon Feb 25 09:59:27 2019 -0800 -commit e5dfffb1ef610a982ed9878fbf3f9ee49cbc3a97 -Author: Behdad Esfahbod -Date: Mon Mar 25 15:15:37 2019 -0700 + renamed hb_map2_t to hb_bimap_h in its own .hh - [docs] Update + src/Makefile.sources | 1 + + src/hb-bimap.hh | 109 +++++++++++++++++++++++ + src/hb-ot-cff-common.hh | 4 +- + src/hb-ot-cff1-table.hh | 4 +- + src/hb-ot-gvar-table.hh | 211 ++++++++++++++++++++++++++++++++++++++++++++ + src/hb-ot-layout-common.hh | 84 +----------------- + src/hb-ot-var-hvar-table.hh | 12 +-- + src/hb-subset-cff-common.cc | 2 +- + src/hb-subset-cff-common.hh | 4 +- + src/hb-subset-cff1.cc | 8 +- + src/hb-subset-cff2.cc | 2 +- + 11 files changed, 343 insertions(+), 98 deletions(-) + +commit 8563169291bf257400608aa0900fc3ee8c2f9e8b +Author: Michiharu Ariza +Date: Fri Feb 22 14:53:06 2019 -0800 - docs/harfbuzz-docs.xml | 1 + - 1 file changed, 1 insertion(+) + subset VVAR & outer indices -commit 0dd3fdf9d227f9bd79f395078f8e58dcfc32d1bf -Author: Behdad Esfahbod -Date: Mon Mar 25 15:08:14 2019 -0700 + src/hb-ot-var-hvar-table.hh | 49 ++++++++++++++++++++++++++++++++++++--------- + src/hb-subset.cc | 3 +++ + 2 files changed, 43 insertions(+), 9 deletions(-) - Update ChangeLog generation +commit 08dc86594bb17e31df2d5c0e25521ee1f072871b +Author: Michiharu Ariza +Date: Fri Feb 22 10:22:08 2019 -0800 + + unuse set in hb_map2_t impl - Let's see if I can make a release on Mac... + also some code cleanup - Makefile.am | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/hb-ot-layout-common.hh | 46 +++++++++++++++++++++++----------------------- + 1 file changed, 23 insertions(+), 23 deletions(-) -commit 2d9034491eca0a63db82d3801f05c067a5241b7d -Author: Qunxin Liu -Date: Tue Mar 26 10:37:24 2019 -0700 +commit 1b13cc775c3b8143b1218e205b21b91b0852f8bd +Author: Michiharu Ariza +Date: Thu Feb 21 16:42:30 2019 -0800 - completely remove lines that are commented out + fixed compiler gripes - src/hb-subset-plan.cc | 6 ------ - src/hb-subset-plan.hh | 3 --- - 2 files changed, 9 deletions(-) + src/hb-ot-var-hvar-table.hh | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) -commit 3147133b6173487c26813a2a406aebd067b53fbf -Author: Qunxin Liu -Date: Tue Mar 26 09:15:56 2019 -0700 +commit c485b77c7c1df2fcd2f21107692d1afd0ed34e1f +Author: Michiharu Ariza +Date: Thu Feb 21 16:34:49 2019 -0800 - update arguments in_populate_gids_to_retain() and _create_old_gid_to_new_gid_map() - so they don't use deprecated variable + fix CFF2 local subr subsetting + + bug exposed by impl change of fdmap + also fixed name of subr_remap_ts as subr_remaps_t - src/hb-subset-plan.cc | 36 ++++++++++++++++++------------------ - 1 file changed, 18 insertions(+), 18 deletions(-) + src/hb-subset-cff-common.hh | 8 ++++---- + src/hb-subset-cff2.cc | 20 +++++++++----------- + 2 files changed, 13 insertions(+), 15 deletions(-) -commit 79a6c258497e80be15245a7b576e34443d9f7bff -Author: Qunxin Liu -Date: Mon Mar 25 19:59:37 2019 -0700 +commit c9b07c75a14b6efb4b32cb12b2f3e8cfc1953638 +Author: Michiharu Ariza +Date: Thu Feb 21 15:47:27 2019 -0800 - try to remove deprecated variable from struct definition + fix HVAR & VarStore subsetting - src/hb-subset-plan.cc | 9 +++++---- - src/hb-subset-plan.hh | 2 +- - 2 files changed, 6 insertions(+), 5 deletions(-) + src/hb-ot-layout-common.hh | 15 +++-- + src/hb-ot-var-hvar-table.hh | 140 ++++++++++++++++++++++---------------------- + 2 files changed, 77 insertions(+), 78 deletions(-) -commit bcb4e505d6ffe33e3268a06698e75d6be0e64957 +commit c8420109ccb74a7bf15c4af425f9f58bc315d2ce Author: Michiharu Ariza -Date: Fri Mar 15 13:46:25 2019 -0700 +Date: Wed Feb 20 15:48:29 2019 -0800 - cff2 subset fuzzer issues (#1619) + subset HVAR - * add check to FDArray::serialize - - * add test files - - * fix off by one + Re-implemented & repurposed CFF:remap_t as hb_map2_t (moved to hb-ot-layout-common.hh) for two-way mapping for use by index map subsetting. + Hooked up HVAR subsetter through _subset2. + Some renaming in CFF code. - src/hb-ot-cff-common.hh | 1 + - ...z-testcase-minimized-hb-subset-fuzzer-5739000398086144 | Bin 0 -> 620 bytes - ...z-testcase-minimized-hb-subset-fuzzer-5760768497156096 | Bin 0 -> 210 bytes - ...z-testcase-minimized-hb-subset-fuzzer-5764268627066880 | Bin 0 -> 687 bytes - 4 files changed, 1 insertion(+) + src/hb-ot-cff-common.hh | 63 ++---------- + src/hb-ot-cff1-table.hh | 8 +- + src/hb-ot-layout-common.hh | 158 ++++++++++++++++++++++++++++-- + src/hb-ot-var-hvar-table.hh | 232 +++++++++++++++++++++++++++++++++++++++++++- + src/hb-subset-cff-common.cc | 9 +- + src/hb-subset-cff-common.hh | 27 ++---- + src/hb-subset-cff1.cc | 29 +++--- + src/hb-subset-cff2.cc | 12 +-- + src/hb-subset.cc | 4 + + 9 files changed, 426 insertions(+), 116 deletions(-) commit 8aaab78efcac81a05ec919be13792c98741ea1b5 Author: Ebrahim Byagowi @@ -14306,6 +24685,25 @@ Date: Wed Mar 13 13:21:12 2019 +0200 .travis.yml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) +commit 99502b324dd6cb45d401bc5f6cc08d7a77677ba5 +Author: Michiharu Ariza +Date: Tue Mar 12 11:03:53 2019 -0700 + + add gvar::get_extents + + src/hb-ot-face.hh | 1 + + src/hb-ot-font.cc | 3 + + src/hb-ot-glyf-table.hh | 21 ++++-- + src/hb-ot-var-gvar-table.hh | 164 +++++++++++++++++++++++++++++++++++++++++--- + 4 files changed, 175 insertions(+), 14 deletions(-) + +commit 23e2d5ac86968c7548df0d212c1a321d09328ffa +Merge: f5a46638 e52ec3fc +Author: Michiharu Ariza +Date: Tue Mar 12 10:53:15 2019 -0700 + + Merge branch 'master' into var-subset + commit e52ec3fc23c2d5a881849f047885e0423bd74740 Author: Behdad Esfahbod Date: Mon Mar 11 18:09:51 2019 -0700 @@ -14447,6 +24845,60 @@ Date: Mon Mar 4 11:12:21 2019 +0700 src/hb-graphite2.cc | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) +commit f5a466389382183cbc009b66734e0fa339f168ff +Author: Michiharu Ariza +Date: Fri Mar 1 21:54:49 2019 -0800 + + fix build + + src/hb-ot-var-gvar-table.hh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 2e1965e572f5643c56e5a0c11a8bf7d5cf68a483 +Author: Michiharu Ariza +Date: Fri Mar 1 21:49:04 2019 -0800 + + minor edits + + src/hb-ot-cff-common.hh | 2 +- + src/hb-ot-layout-common.hh | 2 ++ + 2 files changed, 3 insertions(+), 1 deletion(-) + +commit ff60f34dd6b57401c8904a8808c1775ee09f4458 +Author: Michiharu Ariza +Date: Fri Mar 1 21:33:21 2019 -0800 + + build fix attempt + + src/hb-ot-glyf-table.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9aa5805a44e883c3dcb09a43e952b8bf40016423 +Author: Michiharu Ariza +Date: Fri Mar 1 18:24:56 2019 -0800 + + more build fixes + + src/hb-ot-glyf-table.hh | 2 +- + src/hb-ot-var-gvar-table.hh | 13 ++++++------- + 2 files changed, 7 insertions(+), 8 deletions(-) + +commit 3f3da718632e9beef9a1d9cf8b5775025ffe3fd6 +Merge: 21aaf300 f448195a +Author: Michiharu Ariza +Date: Fri Mar 1 18:12:35 2019 -0800 + + Merge branch 'var-subset' of https://github.com/harfbuzz/harfbuzz into var-subset + +commit 21aaf30058823e06c121908734b05c6c7f0bdeec +Author: Michiharu Ariza +Date: Fri Mar 1 18:12:31 2019 -0800 + + fix build attempt + + src/hb-ot-var-gvar-table.hh | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + commit 8a25868e6a41a3d82782aadb3c7b744ad87d20ff Author: Ebrahim Byagowi Date: Sat Mar 2 03:24:49 2019 +0330 @@ -14458,6 +24910,24 @@ Date: Sat Mar 2 03:24:49 2019 +0330 .editorconfig | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) +commit f448195a4b041db83b0e515c829b99d2349bf73f +Merge: fa2b3d30 4f37ab63 +Author: Michiharu Ariza +Date: Fri Mar 1 15:22:17 2019 -0800 + + Merge branch 'master' into var-subset + +commit fa2b3d30f6562a7457acca205f1bf544089c88ba +Author: Michiharu Ariza +Date: Fri Mar 1 15:14:22 2019 -0800 + + calculate VF advance widths from gvar & glyf + + src/hb-ot-glyf-table.hh | 151 ++++++++++++++++ + src/hb-ot-hmtx-table.hh | 23 ++- + src/hb-ot-var-gvar-table.hh | 410 +++++++++++++++++++++++++++++++++++++++----- + 3 files changed, 542 insertions(+), 42 deletions(-) + commit 4f37ab63de9705d7bf74ee75364747e41b7c06a1 Author: Garret Rieger Date: Thu Feb 28 17:25:05 2019 -0800 @@ -14469,6 +24939,15 @@ Date: Thu Feb 28 17:25:05 2019 -0800 test/api/test-subset-glyf.c | 24 ++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) +commit 33354ab6b87211ae2e702bee162fa4260078e70a +Author: Michiharu Ariza +Date: Tue Feb 26 16:54:00 2019 -0800 + + gvar::subset() + + src/hb-ot-var-gvar-table.hh | 81 +++++++++++++++++++++++++++++++++++++++------ + 1 file changed, 71 insertions(+), 10 deletions(-) + commit 45149eb34f9735b5d690a2a7956adb42b938c8d9 Author: Ebrahim Byagowi Date: Fri Feb 22 13:13:42 2019 +0330 @@ -14483,6 +24962,24 @@ Date: Fri Feb 22 13:13:42 2019 +0330 src/hb-directwrite.h | 5 +++- 2 files changed, 69 insertions(+), 6 deletions(-) +commit 6f91e0d903d7510a4612a9cc7306ec04260cefed +Author: Michiharu Ariza +Date: Tue Feb 26 11:11:50 2019 -0800 + + Added hb-ot-var-gvar-table.hh + + implemented sanitize() + placeholder subset() + some code cleanup + + src/Makefile.sources | 1 + + src/hb-bimap.hh | 6 +- + src/hb-ot-gvar-table.hh | 211 -------------------------------------------- + src/hb-ot-var-gvar-table.hh | 207 +++++++++++++++++++++++++++++++++++++++++++ + src/hb-ot-var-hvar-table.hh | 14 +-- + src/hb-subset.cc | 4 + + 6 files changed, 222 insertions(+), 221 deletions(-) + commit 45adc185260f0fa1fa86472aafb7f91f942c567e Author: David Corbett Date: Mon Feb 18 22:30:40 2019 -0500 @@ -14504,6 +25001,99 @@ Date: Mon Feb 25 15:26:58 2019 -0500 CMakeLists.txt | 12 ------------ 1 file changed, 12 deletions(-) +commit d817b446a132816e48e9ce4e3619a52a340ab35a +Author: Michiharu Ariza +Date: Mon Feb 25 09:59:27 2019 -0800 + + renamed hb_map2_t to hb_bimap_h in its own .hh + + src/Makefile.sources | 1 + + src/hb-bimap.hh | 109 +++++++++++++++++++++++ + src/hb-ot-cff-common.hh | 4 +- + src/hb-ot-cff1-table.hh | 4 +- + src/hb-ot-gvar-table.hh | 211 ++++++++++++++++++++++++++++++++++++++++++++ + src/hb-ot-layout-common.hh | 84 +----------------- + src/hb-ot-var-hvar-table.hh | 12 +-- + src/hb-subset-cff-common.cc | 2 +- + src/hb-subset-cff-common.hh | 4 +- + src/hb-subset-cff1.cc | 8 +- + src/hb-subset-cff2.cc | 2 +- + 11 files changed, 343 insertions(+), 98 deletions(-) + +commit 5d781f62ba4df4f322b01ded5008d1c936acd585 +Author: Michiharu Ariza +Date: Fri Feb 22 14:53:06 2019 -0800 + + subset VVAR & outer indices + + src/hb-ot-var-hvar-table.hh | 49 ++++++++++++++++++++++++++++++++++++--------- + src/hb-subset.cc | 3 +++ + 2 files changed, 43 insertions(+), 9 deletions(-) + +commit 2d545e1e86d94af05550118cac20ec097bc843b4 +Author: Michiharu Ariza +Date: Fri Feb 22 10:22:08 2019 -0800 + + unuse set in hb_map2_t impl + + also some code cleanup + + src/hb-ot-layout-common.hh | 46 +++++++++++++++++++++++----------------------- + 1 file changed, 23 insertions(+), 23 deletions(-) + +commit ca3b4a21dff4fcd804b0bf2249fb3f286486d8fa +Author: Michiharu Ariza +Date: Thu Feb 21 16:42:30 2019 -0800 + + fixed compiler gripes + + src/hb-ot-var-hvar-table.hh | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit a7b801f6d1410443f518cec5dad4d89a8feaf01d +Author: Michiharu Ariza +Date: Thu Feb 21 16:34:49 2019 -0800 + + fix CFF2 local subr subsetting + + bug exposed by impl change of fdmap + also fixed name of subr_remap_ts as subr_remaps_t + + src/hb-subset-cff-common.hh | 8 ++++---- + src/hb-subset-cff2.cc | 20 +++++++++----------- + 2 files changed, 13 insertions(+), 15 deletions(-) + +commit a190140fa47ff5655edbb4eb414175852f722f85 +Author: Michiharu Ariza +Date: Thu Feb 21 15:47:27 2019 -0800 + + fix HVAR & VarStore subsetting + + src/hb-ot-layout-common.hh | 15 +++-- + src/hb-ot-var-hvar-table.hh | 140 ++++++++++++++++++++++---------------------- + 2 files changed, 77 insertions(+), 78 deletions(-) + +commit 09df17e71b1860e250638e8e76deee1da5e7a06b +Author: Michiharu Ariza +Date: Wed Feb 20 15:48:29 2019 -0800 + + subset HVAR + + Re-implemented & repurposed CFF:remap_t as hb_map2_t (moved to hb-ot-layout-common.hh) for two-way mapping for use by index map subsetting. + Hooked up HVAR subsetter through _subset2. + Some renaming in CFF code. + + src/hb-ot-cff-common.hh | 63 ++---------- + src/hb-ot-cff1-table.hh | 8 +- + src/hb-ot-layout-common.hh | 158 ++++++++++++++++++++++++++++-- + src/hb-ot-var-hvar-table.hh | 232 +++++++++++++++++++++++++++++++++++++++++++- + src/hb-subset-cff-common.cc | 9 +- + src/hb-subset-cff-common.hh | 27 ++---- + src/hb-subset-cff1.cc | 29 +++--- + src/hb-subset-cff2.cc | 12 +-- + src/hb-subset.cc | 4 + + 9 files changed, 426 insertions(+), 116 deletions(-) + commit 93739242e1aab9b745d0ba3c22c33b4acaf9526c Author: Michiharu Ariza Date: Wed Feb 20 13:23:12 2019 -0800 diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/Makefile.am b/Build/source/libs/harfbuzz/harfbuzz-src/Makefile.am index 2bbd3c55da3..79c2715910a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/Makefile.am +++ b/Build/source/libs/harfbuzz/harfbuzz-src/Makefile.am @@ -18,6 +18,17 @@ EXTRA_DIST = \ TESTING.md \ CMakeLists.txt \ replace-enum-strings.cmake \ + meson.build \ + meson_options.txt \ + subprojects/expat.wrap \ + subprojects/fontconfig.wrap \ + subprojects/freetype2.wrap \ + subprojects/glib.wrap \ + subprojects/libffi.wrap \ + subprojects/proxy-libintl.wrap \ + subprojects/zlib.wrap \ + meson-cc-tests/intel-atomic-primitives-test.c \ + meson-cc-tests/solaris-atomic-operations.c \ mingw-configure.sh \ mingw-ldd.py \ mingw32.sh \ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/NEWS b/Build/source/libs/harfbuzz/harfbuzz-src/NEWS index 7dde1193f31..02ff93eaf2b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/NEWS +++ b/Build/source/libs/harfbuzz/harfbuzz-src/NEWS @@ -1,3 +1,23 @@ +Overview of changes leading to 2.6.6 +Tuesday, May 12, 2020 +==================================== +- A fix in AAT kerning for Geeza Pro. +- Better support for resource fork fonts on macOS. + + +Overview of changes leading to 2.6.5 +Friday, April 17, 2020 +==================================== +- Add experimental meson build system. Autotools is still the primary + and supported build system. +- AAT is now always preferred for horizontal scripts when both AAT and OT + layout tables exist at the same time. +- Subsetter improvements. +- New API: ++hb_ft_font_lock_face() ++hb_ft_font_unlock_face() + + Overview of changes leading to 2.6.4 Monday, October 29, 2019 ==================================== diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/README b/Build/source/libs/harfbuzz/harfbuzz-src/README index e0ef93576be..36109121361 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/README +++ b/Build/source/libs/harfbuzz/harfbuzz-src/README @@ -27,8 +27,8 @@ Documentation: https://harfbuzz.github.io
- Packaging status of HarfBuzzPackaging status of HarfBuzz -[![Packaging status](https://repology.org/badge/vertical-allrepos/harfbuzz.svg?header=harfbuzz)](https://repology.org/project/harfbuzz/versions) +[![Packaging status](https://repology.org/badge/vertical-allrepos/harfbuzz.svg?header=harfbuzz)](https://repology.org/project/harfbuzz/versions)
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/README.md b/Build/source/libs/harfbuzz/harfbuzz-src/README.md index e0ef93576be..36109121361 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/README.md +++ b/Build/source/libs/harfbuzz/harfbuzz-src/README.md @@ -27,8 +27,8 @@ Documentation: https://harfbuzz.github.io
- Packaging status of HarfBuzzPackaging status of HarfBuzz -[![Packaging status](https://repology.org/badge/vertical-allrepos/harfbuzz.svg?header=harfbuzz)](https://repology.org/project/harfbuzz/versions) +[![Packaging status](https://repology.org/badge/vertical-allrepos/harfbuzz.svg?header=harfbuzz)](https://repology.org/project/harfbuzz/versions)
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/RELEASING.md b/Build/source/libs/harfbuzz/harfbuzz-src/RELEASING.md index 360aea76450..22ea3d4b1bf 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/RELEASING.md +++ b/Build/source/libs/harfbuzz/harfbuzz-src/RELEASING.md @@ -22,7 +22,7 @@ HarfBuzz release walk-through checklist: 4. Make sure you have correct date and new version at the top of NEWS file, -5. Bump version in configure.ac line 3, +5. Bump version in configure.ac line 3 and meson.build line 4. 6. Do "make distcheck", if it passes, you get a tarball. Otherwise, fix things and commit them separately before making release, @@ -50,23 +50,13 @@ HarfBuzz release walk-through checklist: b. Run "make dist-win" to build Win32 bundle. -11. Copy all artefacts to users.freedesktop.org and move them into - `/srv/www.freedesktop.org/www/software/harfbuzz/release` There should be four - files. Eg.: - ``` --rw-r--r-- 1 behdad eng 1592693 Jul 18 11:25 harfbuzz-1.4.7.tar.xz --rw-r--r-- 1 behdad eng 89 Jul 18 11:34 harfbuzz-1.4.7.tar.xz.sha256 --rw-r--r-- 1 behdad eng 339 Jul 18 11:34 harfbuzz-1.4.7.tar.xz.sha256.asc --rw-r--r-- 1 behdad eng 2895619 Jul 18 11:34 harfbuzz-1.4.7-win32.zip -``` - -12. While doing that, quickly double-check the size of the .tar.xz and .zip - files against their previous releases to make sure nothing bad happened. +11. Quickly double-check the size of the .tar.xz and .zip files against their + previous releases to make sure nothing bad happened. They should be in the ballpark, perhaps slightly larger. Sometimes they do shrink, that's not by itself a stopper. -13. Push the commit and tag out: "git push --follow-tags". Make sure it's +12. Push the commit and tag out: "git push --follow-tags". Make sure it's pushed both to freedesktop repo and github. -14. Go to GitHub release page [here](https://github.com/harfbuzz/harfbuzz/releases), +13. Go to GitHub release page [here](https://github.com/harfbuzz/harfbuzz/releases), edit the tag, upload artefacts and NEWS entry and save. diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/TESTING.md b/Build/source/libs/harfbuzz/harfbuzz-src/TESTING.md index 94be3a0a7f7..d70da070a2d 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/TESTING.md +++ b/Build/source/libs/harfbuzz/harfbuzz-src/TESTING.md @@ -55,10 +55,9 @@ make CPPFLAGS=-DHB_DEBUG_SUBSET=100 Note: You'll need to first install ninja-build via apt-get. ```shell -cd harfbuzz -mkdir buid -cmake -DHB_CHECK=ON -Bbuild -H. -GNinja && ninja -Cbuild && CTEST_OUTPUT_ON_FAILURE=1 ninja -Cbuild test +meson build && ninja -Cbuild && ninja -Cbuild test ``` + ## Test with the Fuzzer ```shell diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/config.h.in b/Build/source/libs/harfbuzz/harfbuzz-src/config.h.in index 381036e5928..934252ef542 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/config.h.in +++ b/Build/source/libs/harfbuzz/harfbuzz-src/config.h.in @@ -81,9 +81,6 @@ /* Define to 1 if you have the `mprotect' function. */ #undef HAVE_MPROTECT -/* Define to 1 if you have the `newlocale' function. */ -#undef HAVE_NEWLOCALE - /* Have POSIX threads */ #undef HAVE_PTHREAD @@ -117,9 +114,6 @@ /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H -/* Define to 1 if you have the `strtod_l' function. */ -#undef HAVE_STRTOD_L - /* Define to 1 if you have the `sysconf' function. */ #undef HAVE_SYSCONF @@ -144,9 +138,6 @@ /* Define to 1 if you have the header file. */ #undef HAVE_WINDOWS_H -/* Define to 1 if you have the header file. */ -#undef HAVE_XLOCALE_H - /* Define to the sub-directory where libtool stores uninstalled libraries. */ #undef LT_OBJDIR diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac b/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac index 41257561cc3..5fc703a09cb 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], - [2.6.4], + [2.6.6], [https://github.com/harfbuzz/harfbuzz/issues/new], [harfbuzz], [http://harfbuzz.org/]) @@ -23,7 +23,7 @@ AC_PROG_CC AC_PROG_CC_C99 AM_PROG_CC_C_O AC_PROG_CXX -AX_CXX_COMPILE_STDCXX(11,, optional) +AX_CXX_COMPILE_STDCXX(11) AC_SYS_LARGEFILE PKG_PROG_PKG_CONFIG([0.20]) AM_MISSING_PROG([RAGEL], [ragel]) @@ -77,8 +77,8 @@ GTK_DOC_CHECK([1.15],[--flavour no-tmpl]) ]) # Functions and headers -AC_CHECK_FUNCS(atexit mprotect sysconf getpagesize mmap isatty newlocale strtod_l roundf) -AC_CHECK_HEADERS(unistd.h sys/mman.h xlocale.h stdbool.h) +AC_CHECK_FUNCS(atexit mprotect sysconf getpagesize mmap isatty roundf) +AC_CHECK_HEADERS(unistd.h sys/mman.h stdbool.h) # Compiler flags AC_CANONICAL_HOST diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/meson.build b/Build/source/libs/harfbuzz/harfbuzz-src/meson.build new file mode 100644 index 00000000000..e07ee76fc48 --- /dev/null +++ b/Build/source/libs/harfbuzz/harfbuzz-src/meson.build @@ -0,0 +1,345 @@ +project('harfbuzz', 'c', 'cpp', + meson_version: '>= 0.47.0', + default_options : ['cpp_std=c++11'], + version: '2.6.6') + +warning('Meson is not our main build system yet, don\'t use it for packaging HarfBuzz for *nix distros for now') + +hb_version_arr = meson.project_version().split('.') +hb_version_major = hb_version_arr[0].to_int() +hb_version_minor = hb_version_arr[1].to_int() +hb_version_micro = hb_version_arr[2].to_int() + +# libtool versioning +hb_version_int = hb_version_major*10000 + hb_version_minor*100 + hb_version_micro +if hb_version_minor % 2 == 1 + hb_libtool_revision = 0 # for unstable releases +else + hb_libtool_revision = hb_version_micro # for stable releases +endif +hb_libtool_age = hb_version_int - hb_libtool_revision +hb_libtool_current = hb_libtool_age +hb_libtool_version_info = '@0@:@1@:@2@'.format(hb_libtool_current, hb_libtool_revision, hb_libtool_age) + +pkgmod = import('pkgconfig') +cpp = meson.get_compiler('cpp') + +if cpp.get_id() == 'msvc' + # Ignore several spurious warnings for things HarfBuzz does very commonly. + # If a warning is completely useless and spammy, use '/wdXXXX' to suppress it + # If a warning is harmless but hard to fix, use '/woXXXX' so it's shown once + # NOTE: Only add warnings here if you are sure they're spurious + msvc_args = [ + '/wd4018', # implicit signed/unsigned conversion + '/wd4146', # unary minus on unsigned (beware INT_MIN) + '/wd4244', # lossy type conversion (e.g. double -> int) + '/wd4305', # truncating type conversion (e.g. double -> float) + cpp.get_supported_arguments(['/utf-8']), # set the input encoding to utf-8 + ] + add_project_arguments(msvc_args, language : ['c', 'cpp']) + # Disable SAFESEH with MSVC for libs that use external deps that are built with MinGW + # noseh_link_args = ['/SAFESEH:NO'] +endif + +add_project_arguments(cpp.get_supported_arguments([ + '-fno-rtti', + '-fno-exceptions', + '-fno-threadsafe-statics', + '-fvisibility-inlines-hidden', # maybe shouldn't be applied for mingw +]), language : 'cpp') + +if host_machine.cpu_family() == 'arm' and cpp.alignment('struct { char c; }') != 1 + if cpp.has_argument('-mstructure-size-boundary=8') + add_project_arguments('-mstructure-size-boundary=8', language : 'cpp') + endif +endif + +python3 = import('python').find_installation('python3') + +check_headers = [ + ['unistd.h'], + ['sys/mman.h'], + ['stdbool.h'], +] + +check_funcs = [ + ['atexit'], + ['mprotect'], + ['sysconf'], + ['getpagesize'], + ['mmap'], + ['isatty'], + ['roundf'], +] + +freetype_dep = dependency('freetype2', required: false) + +if not freetype_dep.found() and cpp.get_id() == 'msvc' + if cpp.has_header('ft2build.h') + freetype_dep = cpp.find_library('freetype', required: false) + endif +endif + +if not freetype_dep.found() and get_option('freetype').enabled() + freetype_dep = dependency('freetype2', fallback: ['freetype2', 'freetype_dep']) +endif + +glib_dep = dependency('glib-2.0', required: get_option('glib'), + fallback: ['glib', 'libglib_dep']) +gobject_dep = dependency('gobject-2.0', required: get_option('gobject'), + fallback: ['glib', 'libgobject_dep']) +cairo_dep = dependency('cairo', required: false) +fontconfig_dep = dependency('fontconfig', required: get_option('fontconfig'), + fallback: ['fontconfig', 'fontconfig_dep']) +graphite2_dep = dependency('graphite2', required: get_option('graphite')) +icu_dep = dependency('icu-uc', required: false) +m_dep = cpp.find_library('m', required: false) + +if not icu_dep.found() and get_option('icu').enabled() + icu_dep = dependency('icu-uc', required: cpp.get_id() != 'msvc') +endif + +if not icu_dep.found() and cpp.get_id() == 'msvc' + if cpp.has_header('unicode/uchar.h') and \ + cpp.has_header('unicode/unorm2.h') and \ + cpp.has_header('unicode/ustring.h') and \ + cpp.has_header('unicode/utf16.h') and \ + cpp.has_header('unicode/uversion.h') and \ + cpp.has_header('unicode/uscript.h') + if get_option('buildtype') == 'debug' + icu_dep = cpp.find_library('icuucd', required: get_option('icu')) + else + icu_dep = cpp.find_library('icuuc', required: get_option('icu')) + endif + else + if get_option('icu').enabled() + error('ICU headers and libraries must be present to build ICU support') + endif + endif +endif + +if not cairo_dep.found() and cpp.get_id() == 'msvc' + if cpp.has_header('cairo.h') + cairo_dep = cpp.find_library('cairo') + endif +endif + +if not cairo_dep.found() and get_option('cairo').enabled() + cairo_dep = dependency('cairo', fallback: ['cairo', 'libcairo_dep']) +endif + +# Ensure that cairo-ft is fetched from the same library as cairo itself +if cairo_dep.found() + if cairo_dep.type_name() == 'pkgconfig' + cairo_ft_dep = dependency('cairo-ft', required: get_option('cairo')) + else + if cpp.has_header('cairo-ft.h') and \ + cpp.has_function('cairo_ft_font_face_create_for_ft_face', dependencies: cairo_dep) + cairo_ft_dep = cairo_dep + endif + endif +else + # Not-found dependency + cairo_ft_dep = dependency('', required: false) +endif + +deps = [] + +conf = configuration_data() +incconfig = include_directories('.') + +add_project_arguments('-DHAVE_CONFIG_H', language: ['c', 'cpp']) + +warn_cflags = [ + '-Wno-non-virtual-dtor', +] + +cpp_args = cpp.get_supported_arguments(warn_cflags) + +if m_dep.found() + deps += [m_dep] +endif + +if glib_dep.found() + conf.set('HAVE_GLIB', 1) + deps += [glib_dep] +endif + +if gobject_dep.found() + conf.set('HAVE_GOBJECT', 1) + deps += [gobject_dep] +endif + +if cairo_dep.found() + conf.set('HAVE_CAIRO', 1) + deps += [cairo_dep] +endif + +if cairo_ft_dep.found() + conf.set('HAVE_CAIRO_FT', 1) + deps += [cairo_ft_dep] +endif + +if graphite2_dep.found() + conf.set('HAVE_GRAPHITE2', 1) + deps += [graphite2_dep] +endif + +if icu_dep.found() + conf.set('HAVE_ICU', 1) +endif + +if get_option('icu-builtin') + conf.set('HAVE_ICU_BUILTIN', 1) +endif + +if get_option('experimental-api') + conf.set('HB_EXPERIMENTAL_API', 1) +endif + +if freetype_dep.found() + conf.set('HAVE_FREETYPE', 1) + deps += [freetype_dep] + check_freetype_funcs = [ + ['FT_Get_Var_Blend_Coordinates', {'deps': freetype_dep}], + ['FT_Set_Var_Blend_Coordinates', {'deps': freetype_dep}], + ['FT_Done_MM_Var', {'deps': freetype_dep}], + ] + + if freetype_dep.type_name() == 'internal' + foreach func: check_freetype_funcs + name = func[0] + conf.set('HAVE_@0@'.format(name.to_upper()), 1) + endforeach + else + check_funcs += check_freetype_funcs + endif +endif + +if fontconfig_dep.found() + conf.set('HAVE_FONTCONFIG', 1) + deps += [fontconfig_dep] +endif + +# GDI (uniscribe) (windows) +if host_machine.system() == 'windows' and not get_option('gdi').disabled() + # TODO: make nicer once we have https://github.com/mesonbuild/meson/issues/3940 + if cpp.has_header('usp10.h') and cpp.has_header('windows.h') + foreach usplib : ['usp10', 'gdi32', 'rpcrt4'] + deps += [cpp.find_library(usplib, required: true)] + endforeach + conf.set('HAVE_UNISCRIBE', 1) + conf.set('HAVE_GDI', 1) + elif get_option('gdi').enabled() + error('gdi was enabled explicitly, but some required headers are missing.') + endif +endif + +# DirectWrite (windows) +if host_machine.system() == 'windows' and not get_option('directwrite').disabled() + if cpp.has_header('dwrite_1.h') + deps += [cpp.find_library('dwrite', required: true)] + conf.set('HAVE_DIRECTWRITE', 1) + elif get_option('directwrite').enabled() + error('DirectWrite was enabled explicitly, but required header is missing.') + endif +endif + +# CoreText (macOS) - FIXME: untested +if host_machine.system() == 'darwin' and not get_option('coretext').disabled() + app_services_dep = dependency('appleframeworks', modules : ['ApplicationServices'], required: false) + if cpp.has_type('CTFontRef', prefix: '#include ', dependencies: app_services_dep) + deps += [app_services_dep] + conf.set('HAVE_CORETEXT', 1) + # On iOS CoreText and CoreGraphics are stand-alone frameworks + # Check for a different symbol to avoid getting cached result + else + coretext_dep = dependency('appleframeworks', modules : ['CoreText'], required: false) + coregraphics_dep = dependency('appleframeworks', modules : ['CoreGraphics'], required: false) + corefoundation_dep = dependency('appleframeworks', modules : ['CoreFoundation'], required: false) + if cpp.has_type('CTRunRef', prefix: '#include ', dependencies: [coretext_dep, coregraphics_dep, corefoundation_dep]) + deps += [coretext_dep, coregraphics_dep, corefoundation_dep] + conf.set('HAVE_CORETEXT', 1) + elif get_option('coretext').enabled() + error('CoreText was enabled explicitly, but required headers or frameworks are missing.') + endif + endif +endif + +# threads +if host_machine.system() != 'windows' + thread_dep = dependency('threads', required: false) + + if thread_dep.found() + conf.set('HAVE_PTHREAD', 1) + deps += [thread_dep] + else + check_headers += ['sched.h'] + check_funcs += ['sched_yield', {'link_with': 'rt'}] + endif +endif + +conf.set('HAVE_OT', 1) +conf.set('HAVE_FALLBACK', 1) +conf.set_quoted('PACKAGE_NAME', 'HarfBuzz') +conf.set_quoted('PACKAGE_VERSION', meson.project_version()) + +foreach check : check_headers + name = check[0] + + if cpp.has_header(name) + conf.set('HAVE_@0@'.format(name.to_upper().underscorify()), 1) + endif +endforeach + +foreach check : check_funcs + name = check[0] + opts = check.get(1, {}) + link_withs = opts.get('link_with', []) + check_deps = opts.get('deps', []) + extra_deps = [] + found = true + + # First try without linking + + found = cpp.has_function(name, dependencies: check_deps) + + if not found and link_withs.length() > 0 + found = true + + foreach link_with : link_withs + dep = cpp.find_library(link_with, required: false) + if dep.found() + extra_deps += dep + else + found = false + endif + endforeach + + if found + found = cpp.has_function(name, dependencies: check_deps + extra_deps) + endif + endif + + if found + deps += extra_deps + conf.set('HAVE_@0@'.format(name.to_upper()), 1) + endif +endforeach + +if cpp.links(files('meson-cc-tests/intel-atomic-primitives-test.c'), name: 'Intel atomics') + conf.set('HAVE_INTEL_ATOMIC_PRIMITIVES', 1) +endif + +if cpp.links(files('meson-cc-tests/solaris-atomic-operations.c'), name: 'Solaris atomic ops') + conf.set('HAVE_SOLARIS_ATOMIC_OPS', 1) +endif + +subdir('src') +subdir('util') + +if not get_option('tests').disabled() + subdir('test') +endif + +configure_file(output: 'config.h', configuration: conf) diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/meson_options.txt b/Build/source/libs/harfbuzz/harfbuzz-src/meson_options.txt new file mode 100644 index 00000000000..c76ccaf71cf --- /dev/null +++ b/Build/source/libs/harfbuzz/harfbuzz-src/meson_options.txt @@ -0,0 +1,36 @@ +# HarfBuzz feature options +option('glib', type: 'feature', value: 'auto', + description: 'Enable GLib unicode functions') +option('gobject', type: 'feature', value: 'disabled', + description: 'Enable GObject bindings') +option('cairo', type: 'feature', value: 'auto', + description: 'Use Cairo graphics library') +option('fontconfig', type: 'feature', value: 'auto', + description: 'Use fontconfig') +option('icu', type: 'feature', value: 'auto', + description: 'Enable ICU library unicode functions') +option('graphite', type: 'feature', value: 'disabled', + description: 'Enable Graphite2 complementary shaper') +option('freetype', type: 'feature', value: 'auto', + description: 'Enable freetype interop helpers') +option('gdi', type: 'feature', value: 'disabled', + description: 'Enable GDI helpers and Uniscribe shaper backend (Windows only)') +option('directwrite', type: 'feature', value: 'disabled', + description: 'Enable DirectWrite shaper backend on Windows (experimental)') +option('coretext', type: 'feature', value: 'disabled', + description: 'Enable CoreText shaper backend on macOS') + +# Common feature options +option('tests', type : 'feature', value : 'enabled', yield : true, + description: 'Enable or disable unit tests') +option('introspection', type : 'feature', value : 'disabled', yield : true, + description : 'Generate gobject-introspection bindings (.gir/.typelib files)') + +option('icu-builtin', type: 'boolean', value: false, + description: 'Don\'t separate ICU support as harfbuzz-icu module') +option('with-libstdcxx', type: 'boolean', value: false, + description: 'Allow linking with libstdc++ (ignored and always enabled in Windows)') +option('experimental-api', type: 'boolean', value: false, + description: 'Enable experimental APIs') +option('amalgam', type : 'boolean', value : false, + description : 'Enable amalgam builds') diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/mingw-ldd.py b/Build/source/libs/harfbuzz/harfbuzz-src/mingw-ldd.py index 1d659efa46d..abc3d7861c2 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/mingw-ldd.py +++ b/Build/source/libs/harfbuzz/harfbuzz-src/mingw-ldd.py @@ -1,10 +1,9 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copied from https://github.com/xantares/mingw-ldd/blob/master/mingw-ldd.py # Modified to point to right prefix location on Fedora. # WTFPL - Do What the Fuck You Want to Public License -from __future__ import print_function import pefile import os import sys diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.am b/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.am index a76d9685839..d2e1ccdf8c8 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.am +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.am @@ -13,6 +13,8 @@ TESTS = check_PROGRAMS = EXTRA_DIST += harfbuzz.cc +EXTRA_DIST += meson.build +EXTRA_DIST += fix_get_types.py # Convenience targets: lib: $(BUILT_SOURCES) libharfbuzz.la @@ -50,12 +52,7 @@ endif if HAVE_FREETYPE HBCFLAGS += $(FREETYPE_CFLAGS) HBLIBS += $(FREETYPE_LIBS) -# XXX -# The following creates a recursive dependency on FreeType if FreeType is -# built with HarfBuzz support enabled. Newer pkg-config handles that just -# fine but pkg-config 0.26 as shipped in Ubuntu 14.04 crashes. Remove -# in a year or two, or otherwise work around it... -#HBDEPS += $(FREETYPE_DEPS) +HBDEPS += $(FREETYPE_DEPS) HBSOURCES += $(HB_FT_sources) HBHEADERS += $(HB_FT_headers) endif @@ -153,6 +150,7 @@ cmake_DATA = harfbuzz-config.cmake EXTRA_DIST += hb-version.h.in harfbuzz.pc.in harfbuzz-config.cmake.in lib_LTLIBRARIES += libharfbuzz-subset.la +libharfbuzz_subset_la_LINK = $(chosen_linker) $(libharfbuzz_subset_la_LDFLAGS) libharfbuzz_subset_la_SOURCES = $(HB_SUBSET_sources) libharfbuzz_subset_la_CPPFLAGS = $(HBCFLAGS) $(CODE_COVERAGE_CFLAGS) libharfbuzz_subset_la_LDFLAGS = $(base_link_flags) $(export_symbols_subset) $(CODE_COVERAGE_LDFLAGS) @@ -290,7 +288,7 @@ ucd-table: gen-ucd-table.py ucd.nounihan.grouped.zip hb-common.h use-table: gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt UnicodeData.txt Blocks.txt $(AM_V_GEN) $(builddir)/$^ > $(srcdir)/hb-ot-shape-complex-use-table.cc \ || ($(RM) $(srcdir)/hb-ot-shape-complex-use-table.cc; false) -vowel-constraints: gen-vowel-constraints.py HBIndicVowelConstraints.txt Scripts.txt +vowel-constraints: gen-vowel-constraints.py ms-use/IndicShapingInvalidCluster.txt Scripts.txt $(AM_V_GEN) $(builddir)/$^ > $(srcdir)/hb-ot-shape-complex-vowel-constraints.cc \ || ($(RM) $(srcdir)/hb-ot-shape-complex-vowel-constraints.cc; false) @@ -334,6 +332,7 @@ noinst_PROGRAMS = \ test-buffer-serialize \ test-ot-meta \ test-ot-name \ + test-ot-glyphname \ test-gpos-size-params \ test-gsub-would-substitute \ $(NULL) @@ -359,6 +358,10 @@ test_ot_name_SOURCES = test-ot-name.cc test_ot_name_CPPFLAGS = $(HBCFLAGS) test_ot_name_LDADD = libharfbuzz.la $(HBLIBS) +test_ot_glyphname_SOURCES = test-ot-glyphname.cc +test_ot_glyphname_CPPFLAGS = $(HBCFLAGS) +test_ot_glyphname_LDADD = libharfbuzz.la $(HBLIBS) + test_gpos_size_params_SOURCES = test-gpos-size-params.cc test_gpos_size_params_CPPFLAGS = $(HBCFLAGS) test_gpos_size_params_LDADD = libharfbuzz.la $(HBLIBS) @@ -367,31 +370,6 @@ test_gsub_would_substitute_SOURCES = test-gsub-would-substitute.cc test_gsub_would_substitute_CPPFLAGS = $(HBCFLAGS) $(FREETYPE_CFLAGS) test_gsub_would_substitute_LDADD = libharfbuzz.la $(HBLIBS) $(FREETYPE_LIBS) -if HAVE_FREETYPE -if HAVE_CAIRO_FT -noinst_PROGRAMS += test-ot-color -test_ot_color_SOURCES = test-ot-color.cc -test_ot_color_CPPFLAGS = $(HBCFLAGS) $(FREETYPE_CFLAGS) $(CAIRO_FT_CFLAGS) -test_ot_color_LDADD = libharfbuzz.la $(HBLIBS) $(FREETYPE_LIBS) $(CAIRO_LIBS) $(CAIRO_FT_LIBS) -endif # HAVE_CAIRO_FT -endif # HAVE_FREETYPE - -dist_check_SCRIPTS = \ - check-c-linkage-decls.sh \ - check-externs.sh \ - check-header-guards.sh \ - check-includes.sh \ - check-static-inits.sh \ - check-symbols.sh \ - $(NULL) -TESTS += $(dist_check_SCRIPTS) - -if !WITH_LIBSTDCXX -dist_check_SCRIPTS += \ - check-libstdc++.sh \ - $(NULL) -endif - check_PROGRAMS += \ dump-indic-data \ dump-khmer-data \ @@ -411,7 +389,7 @@ dump_use_data_SOURCES = dump-use-data.cc hb-ot-shape-complex-use-table.cc dump_use_data_CPPFLAGS = $(HBCFLAGS) dump_use_data_LDADD = libharfbuzz.la $(HBLIBS) -COMPILED_TESTS = test-algs test-iter test-meta test-number test-ot-tag test-unicode-ranges test-bimap +COMPILED_TESTS = test-algs test-array test-iter test-meta test-number test-ot-tag test-unicode-ranges test-bimap COMPILED_TESTS_CPPFLAGS = $(HBCFLAGS) -DMAIN -UNDEBUG COMPILED_TESTS_LDADD = libharfbuzz.la $(HBLIBS) check_PROGRAMS += $(COMPILED_TESTS) @@ -421,6 +399,10 @@ test_algs_SOURCES = test-algs.cc hb-static.cc test_algs_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS) test_algs_LDADD = $(COMPILED_TESTS_LDADD) +test_array_SOURCES = test-array.cc +test_array_CPPFLAGS = $(HBCFLAGS) +test_array_LDADD = libharfbuzz.la $(HBLIBS) + test_iter_SOURCES = test-iter.cc hb-static.cc test_iter_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS) test_iter_LDADD = $(COMPILED_TESTS_LDADD) @@ -445,8 +427,25 @@ test_bimap_SOURCES = test-bimap.cc hb-static.cc test_bimap_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS) test_bimap_LDADD = $(COMPILED_TESTS_LDADD) +dist_check_SCRIPTS = \ + check-c-linkage-decls.sh \ + check-externs.sh \ + check-header-guards.sh \ + check-includes.sh \ + check-static-inits.sh \ + check-symbols.sh \ + $(NULL) +TESTS += $(dist_check_SCRIPTS) + +if !WITH_LIBSTDCXX +dist_check_SCRIPTS += \ + check-libstdc++.sh \ + $(NULL) +endif + TESTS_ENVIRONMENT = \ srcdir="$(srcdir)" \ + builddir="$(builddir)" \ MAKE="$(MAKE) $(AM_MAKEFLAGS)" \ HBSOURCES="$(HBSOURCES)" \ HBHEADERS="$(HBHEADERS)" \ @@ -456,7 +455,16 @@ if HAVE_INTROSPECTION -include $(INTROSPECTION_MAKEFILE) INTROSPECTION_GIRS = HarfBuzz-0.0.gir # What does the 0 mean anyway?! -INTROSPECTION_SCANNER_ARGS = -I$(srcdir) -n hb --identifier-prefix=hb_ --warn-all +INTROSPECTION_SCANNER_ARGS = \ + -I$(srcdir) \ + --warn-all --verbose \ + --namespace=HarfBuzz \ + --nsversion=0.0 \ + --symbol-prefix=hb \ + --symbol-prefix=hb_gobject \ + --identifier-prefix=hb_ \ + --pkg-export=harfbuzz-gobject \ + --c-include=hb-gobject.h INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir) INTROSPECTION_SCANNER_ENV = CC="$(CC)" diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.sources b/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.sources index cbbad90d22f..81b5cde7a49 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.sources +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.sources @@ -35,6 +35,8 @@ HB_BASE_sources = \ hb-config.hh \ hb-debug.hh \ hb-dispatch.hh \ + hb-draw.cc \ + hb-draw.hh \ hb-face.cc \ hb-face.hh \ hb-fallback-shape.cc \ @@ -57,6 +59,7 @@ HB_BASE_sources = \ hb-ot-cff-common.hh \ hb-ot-cff1-table.cc \ hb-ot-cff1-table.hh \ + hb-ot-cff1-std-str.hh \ hb-ot-cff2-table.cc \ hb-ot-cff2-table.hh \ hb-ot-cmap-table.hh \ @@ -192,6 +195,7 @@ HB_BASE_headers = \ hb-buffer.h \ hb-common.h \ hb-deprecated.h \ + hb-draw.h \ hb-face.h \ hb-font.h \ hb-map.h \ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/check-libstdc++.sh b/Build/source/libs/harfbuzz/harfbuzz-src/src/check-libstdc++.sh index ce0bdab755f..a7b4c495ffb 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/check-libstdc++.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/check-libstdc++.sh @@ -22,8 +22,7 @@ fi tested=false # harfbuzz-icu links to libstdc++ because icu does. -# harfbuzz-subset uses libstdc++. -for soname in harfbuzz harfbuzz-gobject; do +for soname in harfbuzz harfbuzz-subset harfbuzz-gobject; do for suffix in so dylib; do so=$libs/lib$soname.$suffix if ! test -f "$so"; then continue; fi diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/check-static-inits.sh b/Build/source/libs/harfbuzz/harfbuzz-src/src/check-static-inits.sh index def25c70143..cdfdee8fc40 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/check-static-inits.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/check-static-inits.sh @@ -4,7 +4,7 @@ LC_ALL=C export LC_ALL test -z "$srcdir" && srcdir=. -test -z "$libs" && libs=.libs +test -z "$builddir" && builddir=. stat=0 if which objdump 2>/dev/null >/dev/null; then @@ -14,18 +14,21 @@ else exit 77 fi -OBJS=$libs/*.o +OBJS=$(find $builddir/ -name '*.o') if test "x`echo $OBJS`" = "x$OBJS" 2>/dev/null >/dev/null; then echo "check-static-inits.sh: object files not found; skipping test" exit 77 fi +tested=false + echo "Checking that no object file has static initializers" for obj in $OBJS; do if objdump -t "$obj" | grep '[.][cd]tors' | grep -v '\<00*\>'; then echo "Ouch, $obj has static initializers/finalizers" stat=1 fi + tested=true done echo "Checking that no object file has lazy static C++ constructors/destructors or other such stuff" @@ -35,6 +38,12 @@ for obj in $OBJS; do echo "Ouch, $obj has lazy static C++ constructors/destructors or other such stuff" stat=1 fi + tested=true done +if ! $tested; then + echo "check-static-inits.sh: no objects found; skipping test" + exit 77 +fi + exit $stat diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/check-symbols.sh b/Build/source/libs/harfbuzz/harfbuzz-src/src/check-symbols.sh index f181b631212..a6ca1c2d6c1 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/check-symbols.sh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/check-symbols.sh @@ -4,10 +4,11 @@ LC_ALL=C export LC_ALL test -z "$srcdir" && srcdir=. +test -z "$builddir" && builddir=. test -z "$libs" && libs=.libs stat=0 -IGNORED_SYMBOLS='_fini\|_init\|_fdata\|_ftext\|_fbss\|__bss_start\|__bss_start__\|__bss_end__\|_edata\|_end\|_bss_end__\|__end__\|__gcov_.*\|llvm_.*' +IGNORED_SYMBOLS='_fini\|_init\|_fdata\|_ftext\|_fbss\|__bss_start\|__bss_start__\|__bss_end__\|_edata\|_end\|_bss_end__\|__end__\|__gcov_.*\|llvm_.*\|flush_fn_list\|writeout_fn_list' if which nm 2>/dev/null >/dev/null; then : @@ -26,7 +27,7 @@ for soname in harfbuzz harfbuzz-subset harfbuzz-icu harfbuzz-gobject; do symprefix= if test $suffix = dylib; then symprefix=_; fi - EXPORTED_SYMBOLS=`nm "$so" | grep ' [BCDGINRST] .' | grep -v " $symprefix\\($IGNORED_SYMBOLS\\>\\)" | cut -d' ' -f3 | c++filt` + EXPORTED_SYMBOLS=`nm "$so" | grep ' [BCDGIRST] .' | grep -v " $symprefix\\($IGNORED_SYMBOLS\\>\\)" | cut -d' ' -f3 | c++filt` prefix=$symprefix`basename "$so" | sed 's/libharfbuzz/hb/; s/-/_/g; s/[.].*//'` @@ -36,7 +37,7 @@ for soname in harfbuzz harfbuzz-subset harfbuzz-icu harfbuzz-gobject; do stat=1 fi - def=$soname.def + def=$builddir/$soname.def if ! test -f "$def"; then echo "'$def' not found; skipping" else @@ -47,9 +48,9 @@ for soname in harfbuzz harfbuzz-subset harfbuzz-icu harfbuzz-gobject; do # cheat: copy the last line from the def file! tail -n1 "$def" } | c++filt | diff "$def" - >&2 || stat=1 - fi - tested=true + tested=true + fi done done if ! $tested; then diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/fix_get_types.py b/Build/source/libs/harfbuzz/harfbuzz-src/src/fix_get_types.py new file mode 100644 index 00000000000..f5df60522a9 --- /dev/null +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/fix_get_types.py @@ -0,0 +1,15 @@ +import re +import argparse + +if __name__=='__main__': + parser = argparse.ArgumentParser() + parser.add_argument('input') + parser.add_argument('output') + args = parser.parse_args() + + with open(args.input, 'r') as inp: + with open(args.output, 'w') as out: + for l in inp.readlines(): + l = re.sub('_t_get_type', '_get_type', l) + l = re.sub('_T \(', ' (', l) + out.write(l) diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-arabic-table.py b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-arabic-table.py index ccecb406a0b..5e4206ba695 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-arabic-table.py +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-arabic-table.py @@ -1,11 +1,15 @@ -#!/usr/bin/env python - -from __future__ import print_function, division, absolute_import +#!/usr/bin/env python3 import io, os.path, sys if len (sys.argv) != 4: - print ("usage: ./gen-arabic-table.py ArabicShaping.txt UnicodeData.txt Blocks.txt", file=sys.stderr) + print ("""usage: ./gen-arabic-table.py ArabicShaping.txt UnicodeData.txt Blocks.txt + +Input files, as of Unicode 12: +* https://unicode.org/Public/UCD/latest/ucd/ArabicShaping.txt +* https://unicode.org/Public/UCD/latest/ucd/UnicodeData.txt +* https://unicode.org/Public/UCD/latest/ucd/Blocks.txt +""", file=sys.stderr) sys.exit (1) files = [io.open (x, encoding='utf-8') for x in sys.argv[1:]] diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-def.py b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-def.py index 9111c698c36..37f54bc2281 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-def.py +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-def.py @@ -1,6 +1,4 @@ -#!/usr/bin/env python - -from __future__ import print_function, division, absolute_import +#!/usr/bin/env python3 import io, os, re, sys @@ -15,10 +13,35 @@ for h in header_paths: if h.endswith (".h"): with io.open (h, encoding='utf-8') as f: headers_content.append (f.read ()) -symbols = "\n".join (sorted (re.findall (r"^hb_\w+(?= \()", "\n".join (headers_content), re.M))) +symbols = sorted (re.findall (r"^hb_\w+(?= \()", "\n".join (headers_content), re.M)) +if '--experimental-api' not in sys.argv: + # Move these to harfbuzz-sections.txt when got stable + experimental_symbols = \ +"""hb_font_draw_glyph +hb_draw_funcs_t +hb_draw_close_path_func_t +hb_draw_cubic_to_func_t +hb_draw_line_to_func_t +hb_draw_move_to_func_t +hb_draw_quadratic_to_func_t +hb_draw_funcs_create +hb_draw_funcs_destroy +hb_draw_funcs_is_immutable +hb_draw_funcs_make_immutable +hb_draw_funcs_reference +hb_draw_funcs_set_close_path_func +hb_draw_funcs_set_cubic_to_func +hb_draw_funcs_set_line_to_func +hb_draw_funcs_set_move_to_func +hb_draw_funcs_set_quadratic_to_func +hb_font_get_var_coords_design +hb_ot_layout_closure_lookups +hb_ot_layout_closure_features""".splitlines () + symbols = [x for x in symbols if x not in experimental_symbols] +symbols = "\n".join (symbols) result = symbols if os.environ.get('PLAIN_LIST', '') else """EXPORTS %s -LIBRARY lib%s-0.dll""" % (symbols, output_file.replace ('.def', '')) +LIBRARY lib%s-0.dll""" % (symbols, output_file.replace ('src/', '').replace ('.def', '')) with open (output_file, "w") as f: f.write (result) diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-emoji-table.py b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-emoji-table.py index 49770d4fd8b..c02febca1ad 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-emoji-table.py +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-emoji-table.py @@ -1,13 +1,15 @@ -#!/usr/bin/python +#!/usr/bin/env python3 -from __future__ import print_function, division, absolute_import import sys import os.path from collections import OrderedDict import packTab if len (sys.argv) != 2: - print("usage: ./gen-emoji-table.py emoji-data.txt", file=sys.stderr) + print("""usage: ./gen-emoji-table.py emoji-data.txt + +Input file, as of Unicode 12: +* https://www.unicode.org/Public/emoji/12.0/emoji-data.txt""", file=sys.stderr) sys.exit (1) f = open(sys.argv[1]) diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-indic-table.py b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-indic-table.py index 912b1d7ea2c..e9d152acd27 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-indic-table.py +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-indic-table.py @@ -1,11 +1,14 @@ -#!/usr/bin/env python - -from __future__ import print_function, division, absolute_import +#!/usr/bin/env python3 import io, sys if len (sys.argv) != 4: - print ("usage: ./gen-indic-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt Blocks.txt", file=sys.stderr) + print ("""usage: ./gen-indic-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt Blocks.txt + +Input files, as of Unicode 12: +* https://unicode.org/Public/UCD/latest/ucd/IndicSyllabicCategory.txt +* https://unicode.org/Public/UCD/latest/ucd/IndicPositionalCategory.txt +* https://unicode.org/Public/UCD/latest/ucd/Blocks.txt""", file=sys.stderr) sys.exit (1) ALLOWED_SINGLES = [0x00A0, 0x25CC] diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-os2-unicode-ranges.py b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-os2-unicode-ranges.py index 515f4ca1492..4d433c50b38 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-os2-unicode-ranges.py +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-os2-unicode-ranges.py @@ -1,22 +1,13 @@ -#!/usr/bin/python - -# -*- coding: utf-8 -*- +#!/usr/bin/env python3 # Generates the code for a sorted unicode range array as used in hb-ot-os2-unicode-ranges.hh # Input is a tab seperated list of unicode ranges from the otspec # (https://docs.microsoft.com/en-us/typography/opentype/spec/os2#ur). -from __future__ import print_function, division, absolute_import - import io import re import sys -try: - reload(sys) - sys.setdefaultencoding('utf-8') -except NameError: - pass # Python 3 print ("""static OS2Range _hb_os2_unicode_ranges[] = {""") diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-tag-table.py b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-tag-table.py index 49f5b30bbe5..958a6e7c097 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-tag-table.py +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-tag-table.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python3 """Generator of the mapping from OpenType tags to BCP 47 tags and vice versa. @@ -18,18 +18,11 @@ first BCP 47 tag happens to be the chosen disambiguated tag. In that case, the fallback behavior will choose the right tag anyway. """ -from __future__ import absolute_import, division, print_function, unicode_literals - import collections -try: - from HTMLParser import HTMLParser - def write (s): - print (s.encode ('utf-8'), end='') -except ImportError: - from html.parser import HTMLParser - def write (s): - sys.stdout.flush () - sys.stdout.buffer.write (s.encode ('utf-8')) +from html.parser import HTMLParser +def write (s): + sys.stdout.flush () + sys.stdout.buffer.write (s.encode ('utf-8')) import io import itertools import re @@ -37,16 +30,16 @@ import sys import unicodedata if len (sys.argv) != 3: - print ('usage: ./gen-tag-table.py languagetags language-subtag-registry', file=sys.stderr) + print ('''usage: ./gen-tag-table.py languagetags language-subtag-registry + +Input files, as of Unicode 12: +* https://docs.microsoft.com/en-us/typography/opentype/spec/languagetags +* https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry''', file=sys.stderr) sys.exit (1) -try: - from html import unescape - def html_unescape (parser, entity): - return unescape (entity) -except ImportError: - def html_unescape (parser, entity): - return parser.unescape (entity) +from html import unescape +def html_unescape (parser, entity): + return unescape (entity) def expect (condition, message=None): if not condition: @@ -54,7 +47,7 @@ def expect (condition, message=None): raise AssertionError raise AssertionError (message) -# from http://www-01.sil.org/iso639-3/iso-639-3.tab +# from https://www-01.sil.org/iso639-3/iso-639-3.tab ISO_639_3_TO_1 = { 'aar': 'aa', 'abk': 'ab', @@ -754,7 +747,7 @@ ot.add_language ('und-Syre', 'SYRE') ot.add_language ('und-Syrj', 'SYRJ') ot.add_language ('und-Syrn', 'SYRN') -bcp_47.names['xst'] = u"Silt'e" +bcp_47.names['xst'] = "Silt'e" bcp_47.scopes['xst'] = ' (retired code)' bcp_47.macrolanguages['xst'] = {'stv', 'wle'} @@ -861,7 +854,7 @@ def hb_tag (tag): Returns: A snippet of C++ representing ``tag``. """ - return u"HB_TAG('%s','%s','%s','%s')" % tuple (('%-4s' % tag)[:4]) + return "HB_TAG('%s','%s','%s','%s')" % tuple (('%-4s' % tag)[:4]) def get_variant_set (name): """Return a set of variant language names from a name. @@ -873,7 +866,7 @@ def get_variant_set (name): Returns: A set of normalized language names. """ - return set (unicodedata.normalize ('NFD', n.replace ('\u2019', u"'")) + return set (unicodedata.normalize ('NFD', n.replace ('\u2019', "'")) .encode ('ASCII', 'ignore') .strip () for n in re.split ('[\n(),]', name) if n) diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-ucd-table.py b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-ucd-table.py index 552c3c675c1..21788365524 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-ucd-table.py +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-ucd-table.py @@ -1,13 +1,14 @@ -#!/usr/bin/env python - -from __future__ import print_function, division, absolute_import +#!/usr/bin/env python3 import io, os.path, sys, re import logging logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.INFO) if len (sys.argv) not in (2, 3): - print("usage: ./gen-ucd-table ucd.nounihan.grouped.xml [/path/to/hb-common.h]", file=sys.stderr) + print("""usage: ./gen-ucd-table ucd.nounihan.grouped.xml [/path/to/hb-common.h] + +Input file, as of Unicode 12: +* https://unicode.org/Public/UCD/latest/ucdxml/ucd.nounihan.grouped.zip""", file=sys.stderr) sys.exit(1) # https://github.com/harfbuzz/packtab diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py index 4523fb8ed76..0cbb52906c6 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py @@ -1,13 +1,17 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # flake8: noqa -from __future__ import print_function, division, absolute_import - import io import sys if len (sys.argv) != 5: - print ("usage: ./gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt UnicodeData.txt Blocks.txt", file=sys.stderr) + print ("""usage: ./gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt UnicodeData.txt Blocks.txt + +Input file, as of Unicode 12: +* https://unicode.org/Public/UCD/latest/ucd/IndicSyllabicCategory.txt +* https://unicode.org/Public/UCD/latest/ucd/IndicPositionalCategory.txt +* https://unicode.org/Public/UCD/latest/ucd/UnicodeData.txt +* https://unicode.org/Public/UCD/latest/ucd/Blocks.txt""", file=sys.stderr) sys.exit (1) BLACKLISTED_BLOCKS = ["Thai", "Lao"] @@ -147,18 +151,13 @@ property_names = [ 'Overstruck', ] -try: - basestring -except NameError: - basestring = str - class PropertyValue(object): def __init__(self, name_): self.name = name_ def __str__(self): return self.name def __eq__(self, other): - return self.name == (other if isinstance(other, basestring) else other.name) + return self.name == (other if isinstance(other, str) else other.name) def __ne__(self, other): return not (self == other) def __hash__(self): diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-vowel-constraints.py b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-vowel-constraints.py index 8ca90c819cb..0a0337f27e5 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-vowel-constraints.py +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-vowel-constraints.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python3 """Generator of the function to prohibit certain vowel sequences. @@ -6,26 +6,23 @@ It creates ``_hb_preprocess_text_vowel_constraints``, which inserts dotted circles into sequences prohibited by the USE script development spec. This function should be used as the ``preprocess_text`` of an ``hb_ot_complex_shaper_t``. -""" -from __future__ import absolute_import, division, print_function, unicode_literals +""" import collections -try: - from HTMLParser import HTMLParser - def write (s): - print (s.encode ('utf-8'), end='') -except ImportError: - from html.parser import HTMLParser - def write (s): - sys.stdout.flush () - sys.stdout.buffer.write (s.encode ('utf-8')) +from html.parser import HTMLParser +def write (s): + sys.stdout.flush () + sys.stdout.buffer.write (s.encode ('utf-8')) import itertools import io import sys if len (sys.argv) != 3: - print ('usage: ./gen-vowel-constraints.py HBIndicVowelConstraints.txt Scripts.txt', file=sys.stderr) + print ("""usage: ./gen-vowel-constraints.py ms-use/IndicShapingInvalidCluster.txt Scripts.txt + +Input file, as of Unicode 12: +* https://unicode.org/Public/UCD/latest/ucd/Scripts.txt""", file=sys.stderr) sys.exit (1) with io.open (sys.argv[2], encoding='utf-8') as f: @@ -84,7 +81,8 @@ class ConstraintSet (object): else: self._c[first] = ConstraintSet (rest) - def _indent (self, depth): + @staticmethod + def _indent (depth): return (' ' * depth).replace (' ', '\t') def __str__ (self, index=0, depth=4): @@ -92,17 +90,20 @@ class ConstraintSet (object): indent = self._indent (depth) if isinstance (self._c, list): if len (self._c) == 0: + assert index == 2, 'Cannot use `matched` for this constraint; the general case has not been implemented' s.append ('{}matched = true;\n'.format (indent)) elif len (self._c) == 1: + assert index == 1, 'Cannot use `matched` for this constraint; the general case has not been implemented' s.append ('{}matched = 0x{:04X}u == buffer->cur ({}).codepoint;\n'.format (indent, next (iter (self._c)), index or '')) else: - s.append ('{}if (0x{:04X}u == buffer->cur ({}).codepoint &&\n'.format (indent, self._c[0], index)) - s.append ('{}buffer->idx + {} < count &&\n'.format (self._indent (depth + 2), len (self._c))) + s.append ('{}if (0x{:04X}u == buffer->cur ({}).codepoint &&\n'.format (indent, self._c[0], index or '')) + if index: + s.append ('{}buffer->idx + {} < count &&\n'.format (self._indent (depth + 2), index + 1)) for i, cp in enumerate (self._c[1:], start=1): s.append ('{}0x{:04X}u == buffer->cur ({}).codepoint{}\n'.format ( self._indent (depth + 2), cp, index + i, ')' if i == len (self._c) - 1 else ' &&')) s.append ('{}{{\n'.format (indent)) - for i in range (len (self._c)): + for i in range (index + 1): s.append ('{}buffer->next_glyph ();\n'.format (self._indent (depth + 1))) s.append ('{}_output_dotted_circle (buffer);\n'.format (self._indent (depth + 1))) s.append ('{}}}\n'.format (indent)) @@ -128,7 +129,12 @@ class ConstraintSet (object): constraints = {} with io.open (sys.argv[1], encoding='utf-8') as f: - constraints_header = [f.readline ().strip () for i in range (2)] + constraints_header = [] + while True: + line = f.readline ().strip () + if line == '#': + break + constraints_header.append(line) for line in f: j = line.find ('#') if j >= 0: @@ -147,7 +153,7 @@ print ('/* == Start of generated functions == */') print ('/*') print (' * The following functions are generated by running:') print (' *') -print (' * %s use Scripts.txt' % sys.argv[0]) +print (' * %s ms-use/IndicShapingInvalidCluster.txt Scripts.txt' % sys.argv[0]) print (' *') print (' * on files with these headers:') print (' *') @@ -185,7 +191,7 @@ print ('_hb_preprocess_text_vowel_constraints (const hb_ot_shape_plan_t *plan HB print ('\t\t\t\t hb_buffer_t *buffer,') print ('\t\t\t\t hb_font_t *font HB_UNUSED)') print ('{') -print ('#if defined(HB_NO_OT_SHAPE_COMPLEX_VOWEL_CONSTRAINTS)') +print ('#ifdef HB_NO_OT_SHAPE_COMPLEX_VOWEL_CONSTRAINTS') print (' return;') print ('#endif') print (' if (buffer->flags & HB_BUFFER_FLAG_DO_NOT_INSERT_DOTTED_CIRCLE)') diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/harfbuzz.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/harfbuzz.cc index 251a0654dc4..6a07a9e0db2 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/harfbuzz.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/harfbuzz.cc @@ -4,6 +4,7 @@ #include "hb-buffer-serialize.cc" #include "hb-buffer.cc" #include "hb-common.cc" +#include "hb-draw.cc" #include "hb-face.cc" #include "hb-fallback-shape.cc" #include "hb-font.cc" diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-fdsc-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-fdsc-table.hh index 604d5bcf054..4bc97b742bb 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-fdsc-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-fdsc-table.hh @@ -65,7 +65,7 @@ struct FontDescriptor protected: Tag tag; /* The 4-byte table tag name. */ union { - HBFixed value; /* The value for the descriptor tag. */ + HBFixed value; /* The value for the descriptor tag. */ HBUINT32 nalfType; /* If the tag is `nalf`, see non_alphabetic_value_t */ } u; public: @@ -80,10 +80,10 @@ struct fdsc Weight = HB_TAG ('w','g','h','t'), /* Percent weight relative to regular weight. * (defaul value: 1.0) */ - Width = HB_TAG ('w','d','t','h'), + Width = HB_TAG ('w','d','t','h'), /* Percent width relative to regular width. * (default value: 1.0) */ - Slant = HB_TAG ('s','l','n','t'), + Slant = HB_TAG ('s','l','n','t'), /* Angle of slant in degrees, where positive * is clockwise from straight up. * (default value: 0.0) */ @@ -108,7 +108,7 @@ struct fdsc } protected: - HBFixed version; /* Version number of the font descriptors + HBFixed version; /* Version number of the font descriptors * table (0x00010000 for the current version). */ LArrayOf descriptors; /* List of tagged-coordinate pairs style descriptors diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-ankr-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-ankr-table.hh index ef988841a94..f2785a6f588 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-ankr-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-ankr-table.hh @@ -66,7 +66,7 @@ struct ankr { const NNOffsetTo *offset = (this+lookupTable).get_value (glyph_id, num_glyphs); if (!offset) - return Null(Anchor); + return Null (Anchor); const GlyphAnchors &anchors = &(this+anchorData) + *offset; return anchors[i]; } @@ -81,7 +81,7 @@ struct ankr } protected: - HBUINT16 version; /* Version number (set to zero) */ + HBUINT16 version; /* Version number (set to zero) */ HBUINT16 flags; /* Flags (currently unused; set to zero) */ LOffsetTo>> lookupTable; /* Offset to the table's lookup table */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-common.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-common.hh index 473f2cdcd27..f186917fc62 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-common.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-common.hh @@ -303,7 +303,7 @@ struct LookupFormat10 const typename T::type get_value_or_null (hb_codepoint_t glyph_id) const { if (!(firstGlyph <= glyph_id && glyph_id - firstGlyph < glyphCount)) - return Null(T); + return Null (T); const HBUINT8 *p = &valueArrayZ[(glyph_id - firstGlyph) * valueSize]; @@ -358,7 +358,7 @@ struct Lookup case 10: return u.format10.get_value_or_null (glyph_id); default: const T *v = get_value (glyph_id, num_glyphs); - return v ? *v : Null(T); + return v ? *v : Null (T); } } @@ -825,7 +825,7 @@ struct hb_aat_apply_context_t : HB_INTERNAL hb_aat_apply_context_t (const hb_ot_shape_plan_t *plan_, hb_font_t *font_, hb_buffer_t *buffer_, - hb_blob_t *blob = const_cast (&Null(hb_blob_t))); + hb_blob_t *blob = const_cast (&Null (hb_blob_t))); HB_INTERNAL ~hb_aat_apply_context_t (); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-feat-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-feat-table.hh index 788d4084a1f..359e859cfc6 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-feat-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-feat-table.hh @@ -129,6 +129,11 @@ struct FeatureName hb_ot_name_id_t get_feature_name_id () const { return nameIndex; } + bool is_exclusive () const { return featureFlags & Exclusive; } + + /* A FeatureName with no settings is meaningless */ + bool has_data () const { return nSettings; } + bool sanitize (hb_sanitize_context_t *c, const void *base) const { TRACE_SANITIZE (this); @@ -139,7 +144,7 @@ struct FeatureName protected: HBUINT16 feature; /* Feature type. */ HBUINT16 nSettings; /* The number of records in the setting name array. */ - LOffsetTo, false> + LNNOffsetTo> settingTableZ; /* Offset in bytes from the beginning of this table to * this feature's setting name array. The actual type of * record this offset refers to will depend on the @@ -172,6 +177,9 @@ struct feat return featureNameCount; } + bool exposes_feature (hb_aat_layout_feature_type_t feature_type) const + { return get_feature (feature_type).has_data (); } + const FeatureName& get_feature (hb_aat_layout_feature_type_t feature_type) const { return namesZ.bsearch (featureNameCount, feature_type); } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-just-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-just-table.hh index e1787d10c67..49506e9f5ab 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-just-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-just-table.hh @@ -51,10 +51,10 @@ struct ActionSubrecordHeader return_trace (likely (c->check_struct (this))); } - HBUINT16 actionClass; /* The JustClass value associated with this + HBUINT16 actionClass; /* The JustClass value associated with this * ActionSubrecord. */ - HBUINT16 actionType; /* The type of postcompensation action. */ - HBUINT16 actionLength; /* Length of this ActionSubrecord record, which + HBUINT16 actionType; /* The type of postcompensation action. */ + HBUINT16 actionLength; /* Length of this ActionSubrecord record, which * must be a multiple of 4. */ public: DEFINE_SIZE_STATIC (6); @@ -70,11 +70,11 @@ struct DecompositionAction ActionSubrecordHeader header; - HBFixed lowerLimit; /* If the distance factor is less than this value, + HBFixed lowerLimit; /* If the distance factor is less than this value, * then the ligature is decomposed. */ - HBFixed upperLimit; /* If the distance factor is greater than this value, + HBFixed upperLimit; /* If the distance factor is greater than this value, * then the ligature is decomposed. */ - HBUINT16 order; /* Numerical order in which this ligature will + HBUINT16 order; /* Numerical order in which this ligature will * be decomposed; you may want infrequent ligatures * to decompose before more frequent ones. The ligatures * on the line of text will decompose in increasing @@ -118,14 +118,14 @@ struct ConditionalAddGlyphAction protected: ActionSubrecordHeader header; - HBFixed substThreshold; /* Distance growth factor (in ems) at which + HBFixed substThreshold; /* Distance growth factor (in ems) at which * this glyph is replaced and the growth factor * recalculated. */ - HBGlyphID addGlyph; /* Glyph to be added as kashida. If this value is + HBGlyphID addGlyph; /* Glyph to be added as kashida. If this value is * 0xFFFF, no extra glyph will be added. Note that * generally when a glyph is added, justification * will need to be redone. */ - HBGlyphID substGlyph; /* Glyph to be substituted for this glyph if the + HBGlyphID substGlyph; /* Glyph to be substituted for this glyph if the * growth factor equals or exceeds the value of * substThreshold. */ public: @@ -143,16 +143,16 @@ struct DuctileGlyphAction protected: ActionSubrecordHeader header; - HBUINT32 variationAxis; /* The 4-byte tag identifying the ductile axis. + HBUINT32 variationAxis; /* The 4-byte tag identifying the ductile axis. * This would normally be 0x64756374 ('duct'), * but you may use any axis the font contains. */ - HBFixed minimumLimit; /* The lowest value for the ductility axis tha + HBFixed minimumLimit; /* The lowest value for the ductility axis tha * still yields an acceptable appearance. Normally * this will be 1.0. */ - HBFixed noStretchValue; /* This is the default value that corresponds to + HBFixed noStretchValue; /* This is the default value that corresponds to * no change in appearance. Normally, this will * be 1.0. */ - HBFixed maximumLimit; /* The highest value for the ductility axis that + HBFixed maximumLimit; /* The highest value for the ductility axis that * still yields an acceptable appearance. */ public: DEFINE_SIZE_STATIC (22); @@ -169,8 +169,8 @@ struct RepeatedAddGlyphAction protected: ActionSubrecordHeader header; - HBUINT16 flags; /* Currently unused; set to 0. */ - HBGlyphID glyph; /* Glyph that should be added if the distance factor + HBUINT16 flags; /* Currently unused; set to 0. */ + HBGlyphID glyph; /* Glyph that should be added if the distance factor * is growing. */ public: DEFINE_SIZE_STATIC (10); @@ -271,14 +271,14 @@ struct JustWidthDeltaEntry }; protected: - HBFixed beforeGrowLimit;/* The ratio by which the advance width of the + HBFixed beforeGrowLimit;/* The ratio by which the advance width of the * glyph is permitted to grow on the left or top side. */ - HBFixed beforeShrinkLimit; + HBFixed beforeShrinkLimit; /* The ratio by which the advance width of the * glyph is permitted to shrink on the left or top side. */ - HBFixed afterGrowLimit; /* The ratio by which the advance width of the glyph + HBFixed afterGrowLimit; /* The ratio by which the advance width of the glyph * is permitted to shrink on the left or top side. */ - HBFixed afterShrinkLimit; + HBFixed afterShrinkLimit; /* The ratio by which the advance width of the glyph * is at most permitted to shrink on the right or * bottom side. */ @@ -361,7 +361,7 @@ struct JustificationHeader OffsetTo justClassTable; /* Offset to the justification category state table. */ OffsetTo - wdcTable; /* Offset from start of justification table to start + wdcTable; /* Offset from start of justification table to start * of the subtable containing the width delta factors * for the glyphs in your font. * @@ -372,7 +372,7 @@ struct JustificationHeader * * The postcompensation subtable, if present in the font. */ Lookup> - lookupTable; /* Lookup table associating glyphs with width delta + lookupTable; /* Lookup table associating glyphs with width delta * clusters. See the description of Width Delta Clusters * table for details on how to interpret the lookup values. */ @@ -397,7 +397,7 @@ struct just protected: FixedVersion<>version; /* Version of the justification table * (0x00010000u for version 1.0). */ - HBUINT16 format; /* Format of the justification table (set to 0). */ + HBUINT16 format; /* Format of the justification table (set to 0). */ OffsetTo horizData; /* Byte offset from the start of the justification table * to the header for tables that contain justification diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-kerx-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-kerx-table.hh index be1b339aa3c..6ad32b30002 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-kerx-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-kerx-table.hh @@ -281,35 +281,28 @@ struct KerxSubTableFormat1 hb_glyph_position_t &o = buffer->pos[idx]; - /* Testing shows that CoreText only applies kern (cross-stream or not) - * if none has been applied by previous subtables. That is, it does - * NOT seem to accumulate as otherwise implied by specs. */ - - /* The following flag is undocumented in the spec, but described - * in the 'kern' table example. */ - if (v == -0x8000) - { - o.attach_type() = ATTACH_TYPE_NONE; - o.attach_chain() = 0; - o.x_offset = o.y_offset = 0; - } - else if (HB_DIRECTION_IS_HORIZONTAL (buffer->props.direction)) + if (HB_DIRECTION_IS_HORIZONTAL (buffer->props.direction)) { if (crossStream) { - if (buffer->pos[idx].attach_type() && !buffer->pos[idx].y_offset) + /* The following flag is undocumented in the spec, but described + * in the 'kern' table example. */ + if (v == -0x8000) { - o.y_offset = c->font->em_scale_y (v); + o.attach_type() = ATTACH_TYPE_NONE; + o.attach_chain() = 0; + o.y_offset = 0; + } + else if (o.attach_type()) + { + o.y_offset += c->font->em_scale_y (v); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_GPOS_ATTACHMENT; } } else if (buffer->info[idx].mask & kern_mask) { - if (!buffer->pos[idx].x_offset) - { - buffer->pos[idx].x_advance += c->font->em_scale_x (v); - buffer->pos[idx].x_offset += c->font->em_scale_x (v); - } + o.x_advance += c->font->em_scale_x (v); + o.x_offset += c->font->em_scale_x (v); } } else @@ -317,19 +310,22 @@ struct KerxSubTableFormat1 if (crossStream) { /* CoreText doesn't do crossStream kerning in vertical. We do. */ - if (buffer->pos[idx].attach_type() && !buffer->pos[idx].x_offset) + if (v == -0x8000) + { + o.attach_type() = ATTACH_TYPE_NONE; + o.attach_chain() = 0; + o.x_offset = 0; + } + else if (o.attach_type()) { - o.x_offset = c->font->em_scale_x (v); + o.x_offset += c->font->em_scale_x (v); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_GPOS_ATTACHMENT; } } else if (buffer->info[idx].mask & kern_mask) { - if (!buffer->pos[idx].y_offset) - { - buffer->pos[idx].y_advance += c->font->em_scale_y (v); - buffer->pos[idx].y_offset += c->font->em_scale_y (v); - } + o.y_advance += c->font->em_scale_y (v); + o.y_offset += c->font->em_scale_y (v); } } } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-morx-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-morx-table.hh index d8df579f507..9d04c7102ef 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-morx-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-morx-table.hh @@ -948,8 +948,10 @@ struct Chain hb_aat_layout_feature_type_t type = (hb_aat_layout_feature_type_t) (unsigned int) feature.featureType; hb_aat_layout_feature_selector_t setting = (hb_aat_layout_feature_selector_t) (unsigned int) feature.featureSetting; retry: - const hb_aat_map_builder_t::feature_info_t *info = map->features.bsearch (type); - if (info && info->setting == setting) + // Check whether this type/setting pair was requested in the map, and if so, apply its flags. + // (The search here only looks at the type and setting fields of feature_info_t.) + hb_aat_map_builder_t::feature_info_t info = { type, setting, false, 0 }; + if (map->features.bsearch (info)) { flags &= feature.disableFlags; flags |= feature.enableFlags; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-opbd-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-opbd-table.hh index 4e0234074fe..8c04a6482ff 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-opbd-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-opbd-table.hh @@ -160,8 +160,8 @@ struct opbd * Format 0 indicates distance and Format 1 indicates * control point. */ union { - opbdFormat0 format0; - opbdFormat1 format1; + opbdFormat0 format0; + opbdFormat1 format1; } u; public: DEFINE_SIZE_MIN (8); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-trak-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-trak-table.hh index 99dddd88268..baa1c72020f 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-trak-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-trak-table.hh @@ -62,7 +62,7 @@ struct TrackTableEntry } protected: - HBFixed track; /* Track value for this record. */ + HBFixed track; /* Track value for this record. */ NameID trackNameID; /* The 'name' table index for this track. * (a short word or phrase like "loose" * or "very tight") */ @@ -141,7 +141,7 @@ struct TrackData protected: HBUINT16 nTracks; /* Number of separate tracks included in this table. */ HBUINT16 nSizes; /* Number of point sizes included in this table. */ - LOffsetTo, false> + LNNOffsetTo> sizeTable; /* Offset from start of the tracking table to * Array[nSizes] of size values.. */ UnsizedArrayOf @@ -210,8 +210,8 @@ struct trak protected: FixedVersion<>version; /* Version of the tracking table - * (0x00010000u for version 1.0). */ - HBUINT16 format; /* Format of the tracking table (set to 0). */ + * (0x00010000u for version 1.0). */ + HBUINT16 format; /* Format of the tracking table (set to 0). */ OffsetTo horizData; /* Offset from start of tracking table to TrackData * for horizontal text (or 0 if none). */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout.cc index 4e506de16e8..49c908fd16f 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout.cc @@ -55,7 +55,7 @@ AAT::hb_aat_apply_context_t::hb_aat_apply_context_t (const hb_ot_shape_plan_t *p face (font->face), buffer (buffer_), sanitizer (), - ankr_table (&Null(AAT::ankr)), + ankr_table (&Null (AAT::ankr)), lookup_index (0), debug_depth (0) { @@ -172,11 +172,7 @@ static const hb_aat_feature_mapping_t feature_mappings[] = const hb_aat_feature_mapping_t * hb_aat_layout_find_feature_mapping (hb_tag_t tag) { - return (const hb_aat_feature_mapping_t *) hb_bsearch (&tag, - feature_mappings, - ARRAY_LENGTH (feature_mappings), - sizeof (feature_mappings[0]), - hb_aat_feature_mapping_t::cmp); + return hb_sorted_array (feature_mappings).bsearch (tag); } #endif diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout.hh index 8310bfcc2d2..5e4e3bda154 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout.hh @@ -39,14 +39,8 @@ struct hb_aat_feature_mapping_t hb_aat_layout_feature_selector_t selectorToEnable; hb_aat_layout_feature_selector_t selectorToDisable; - HB_INTERNAL static int cmp (const void *key_, const void *entry_) - { - hb_tag_t key = * (unsigned int *) key_; - const hb_aat_feature_mapping_t * entry = (const hb_aat_feature_mapping_t *) entry_; - return key < entry->otFeatureTag ? -1 : - key > entry->otFeatureTag ? 1 : - 0; - } + int cmp (hb_tag_t key) const + { return key < otFeatureTag ? -1 : key > otFeatureTag ? 1 : 0; } }; HB_INTERNAL const hb_aat_feature_mapping_t * diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-map.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-map.cc index bc879359aae..2c38c350296 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-map.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-map.cc @@ -33,25 +33,48 @@ #include "hb-aat-map.hh" #include "hb-aat-layout.hh" +#include "hb-aat-layout-feat-table.hh" -void hb_aat_map_builder_t::add_feature (hb_tag_t tag, - unsigned int value) +void hb_aat_map_builder_t::add_feature (hb_tag_t tag, unsigned value) { + if (!face->table.feat->has_data ()) return; + if (tag == HB_TAG ('a','a','l','t')) { + if (!face->table.feat->exposes_feature (HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_ALTERNATIVES)) + return; feature_info_t *info = features.push(); info->type = HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_ALTERNATIVES; info->setting = (hb_aat_layout_feature_selector_t) value; + info->seq = features.length; + info->is_exclusive = true; return; } const hb_aat_feature_mapping_t *mapping = hb_aat_layout_find_feature_mapping (tag); if (!mapping) return; + const AAT::FeatureName* feature = &face->table.feat->get_feature (mapping->aatFeatureType); + if (!feature->has_data ()) + { + /* Special case: Chain::compile_flags will fall back to the deprecated version of + * small-caps if necessary, so we need to check for that possibility. + * https://github.com/harfbuzz/harfbuzz/issues/2307 */ + if (mapping->aatFeatureType == HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE && + mapping->selectorToEnable == HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_SMALL_CAPS) + { + feature = &face->table.feat->get_feature (HB_AAT_LAYOUT_FEATURE_TYPE_LETTER_CASE); + if (!feature->has_data ()) return; + } + else return; + } + feature_info_t *info = features.push(); info->type = mapping->aatFeatureType; info->setting = value ? mapping->selectorToEnable : mapping->selectorToDisable; + info->seq = features.length; + info->is_exclusive = feature->is_exclusive (); } void @@ -63,7 +86,11 @@ hb_aat_map_builder_t::compile (hb_aat_map_t &m) features.qsort (); unsigned int j = 0; for (unsigned int i = 1; i < features.length; i++) - if (features[i].type != features[j].type) + if (features[i].type != features[j].type || + /* Nonexclusive feature selectors come in even/odd pairs to turn a setting on/off + * respectively, so we mask out the low-order bit when checking for "duplicates" + * (selectors referring to the same feature setting) here. */ + (!features[i].is_exclusive && ((features[i].setting & ~1) != (features[j].setting & ~1)))) features[++j] = features[i]; features.shrink (j + 1); } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-map.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-map.hh index 984a59cca5b..5a0fa705445 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-map.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-map.hh @@ -64,19 +64,24 @@ struct hb_aat_map_builder_t { hb_aat_layout_feature_type_t type; hb_aat_layout_feature_selector_t setting; + bool is_exclusive; unsigned seq; /* For stable sorting only. */ HB_INTERNAL static int cmp (const void *pa, const void *pb) { const feature_info_t *a = (const feature_info_t *) pa; const feature_info_t *b = (const feature_info_t *) pb; - return (a->type != b->type) ? (a->type < b->type ? -1 : 1) : - (a->seq < b->seq ? -1 : a->seq > b->seq ? 1 : 0); + if (a->type != b->type) return (a->type < b->type ? -1 : 1); + if (!a->is_exclusive && + (a->setting & ~1) != (b->setting & ~1)) return (a->setting < b->setting ? -1 : 1); + return (a->seq < b->seq ? -1 : a->seq > b->seq ? 1 : 0); } - int cmp (hb_aat_layout_feature_type_t ty) const + /* compares type & setting only, not is_exclusive flag or seq number */ + int cmp (const feature_info_t& f) const { - return (type != ty) ? (type < ty ? -1 : 1) : 0; + return (f.type != type) ? (f.type < type ? -1 : 1) : + (f.setting != setting) ? (f.setting < setting ? -1 : 1) : 0; } }; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-algs.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-algs.hh index 042e1c20d58..5d2a48c4694 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-algs.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-algs.hh @@ -360,6 +360,13 @@ struct (hb_forward (a) >= hb_forward (b) ? hb_forward (a) : hb_forward (b)) } HB_FUNCOBJ (hb_max); +struct +{ + template constexpr auto + operator () (T&& x, T2&& min, T3&& max) const HB_AUTO_RETURN + (hb_min (hb_max (hb_forward (x), hb_forward (min)), hb_forward (max))) +} +HB_FUNCOBJ (hb_clamp); /* @@ -486,7 +493,7 @@ template static inline HB_CONST_FUNC unsigned int hb_ctz (T v) { - if (unlikely (!v)) return 0; + if (unlikely (!v)) return 8 * sizeof (T); #if (defined(__GNUC__) && (__GNUC__ >= 4)) || defined(__clang__) if (sizeof (T) <= sizeof (unsigned int)) @@ -600,12 +607,6 @@ hb_memset (void *s, int c, unsigned int n) return memset (s, c, n); } -static inline bool -hb_unsigned_mul_overflows (unsigned int count, unsigned int size) -{ - return (size > 0) && (count >= ((unsigned int) -1) / size); -} - static inline unsigned int hb_ceil_to_4 (unsigned int v) { @@ -633,30 +634,91 @@ hb_in_ranges (T u, T lo1, T hi1, T lo2, T hi2, T lo3, T hi3) } +/* + * Overflow checking. + */ + +/* Consider __builtin_mul_overflow use here also */ +static inline bool +hb_unsigned_mul_overflows (unsigned int count, unsigned int size) +{ + return (size > 0) && (count >= ((unsigned int) -1) / size); +} + + /* * Sort and search. */ -template -static inline void * -hb_bsearch (const void *key, const void *base, - size_t nmemb, size_t size, - int (*compar)(const void *_key, const void *_item, Ts... _ds), - Ts... ds) + +template +static int +_hb_cmp_method (const void *pkey, const void *pval, Ts... ds) +{ + const K& key = * (const K*) pkey; + const V& val = * (const V*) pval; + + return val.cmp (key, ds...); +} + +template +static inline bool +hb_bsearch_impl (unsigned *pos, /* Out */ + const K& key, + V* base, size_t nmemb, size_t stride, + int (*compar)(const void *_key, const void *_item, Ts... _ds), + Ts... ds) { + /* This is our *only* bsearch implementation. */ + int min = 0, max = (int) nmemb - 1; while (min <= max) { int mid = ((unsigned int) min + (unsigned int) max) / 2; - const void *p = (const void *) (((const char *) base) + (mid * size)); - int c = compar (key, p, ds...); +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wcast-align" + V* p = (V*) (((const char *) base) + (mid * stride)); +#pragma GCC diagnostic pop + int c = compar ((const void *) hb_addressof (key), (const void *) p, ds...); if (c < 0) max = mid - 1; else if (c > 0) min = mid + 1; else - return (void *) p; + { + *pos = mid; + return true; + } } - return nullptr; + *pos = min; + return false; +} + +template +static inline V* +hb_bsearch (const K& key, V* base, + size_t nmemb, size_t stride = sizeof (V), + int (*compar)(const void *_key, const void *_item) = _hb_cmp_method) +{ + unsigned pos; +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wcast-align" + return hb_bsearch_impl (&pos, key, base, nmemb, stride, compar) ? + (V*) (((const char *) base) + (pos * stride)) : nullptr; +#pragma GCC diagnostic pop +} +template +static inline V* +hb_bsearch (const K& key, V* base, + size_t nmemb, size_t stride, + int (*compar)(const void *_key, const void *_item, Ts... _ds), + Ts... ds) +{ + unsigned pos; +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wcast-align" + return hb_bsearch_impl (&pos, key, base, nmemb, stride, compar, ds...) ? + (V*) (((const char *) base) + (pos * stride)) : nullptr; +#pragma GCC diagnostic pop } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-array.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-array.hh index d9adf2c728e..172d9c13cc9 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-array.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-array.hh @@ -171,6 +171,24 @@ struct hb_array_t : hb_iter_with_fallback_t, Type&> unsigned int get_size () const { return length * this->get_item_size (); } + /* + * Reverse the order of items in this array in the range [start, end). + */ + void reverse (unsigned start = 0, unsigned end = -1) + { + start = hb_min (start, length); + end = hb_min (end, length); + + if (end < start + 2) + return; + + for (unsigned lhs = start, rhs = end - 1; lhs < rhs; lhs++, rhs--) { + Type temp = arrayZ[rhs]; + arrayZ[rhs] = arrayZ[lhs]; + arrayZ[lhs] = temp; + } + } + hb_array_t sub_array (unsigned int start_offset = 0, unsigned int *seg_count = nullptr /* IN/OUT */) const { if (!start_offset && !seg_count) @@ -199,10 +217,11 @@ struct hb_array_t : hb_iter_with_fallback_t, Type&> template - bool in_range (const T *p, unsigned int size = T::static_size) const + bool check_range (const T *p, unsigned int size = T::static_size) const { - return ((const char *) p) >= arrayZ - && ((const char *) p + size) <= arrayZ + length; + return arrayZ <= ((const char *) p) + && ((const char *) p) <= arrayZ + length + && (unsigned int) (arrayZ + length - (const char *) p) >= size; } /* Only call if you allocated the underlying array using malloc() or similar. */ @@ -300,23 +319,15 @@ struct hb_sorted_array_t : hb_bfind_not_found_t not_found = HB_BFIND_NOT_FOUND_DONT_STORE, unsigned int to_store = (unsigned int) -1) const { - int min = 0, max = (int) this->length - 1; - const Type *array = this->arrayZ; - while (min <= max) + unsigned pos; + + if (bsearch_impl (x, &pos)) { - int mid = ((unsigned int) min + (unsigned int) max) / 2; - int c = array[mid].cmp (x); - if (c < 0) - max = mid - 1; - else if (c > 0) - min = mid + 1; - else - { - if (i) - *i = mid; - return true; - } + if (i) + *i = pos; + return true; } + if (i) { switch (not_found) @@ -329,14 +340,22 @@ struct hb_sorted_array_t : break; case HB_BFIND_NOT_FOUND_STORE_CLOSEST: - if (max < 0 || (max < (int) this->length && array[max].cmp (x) > 0)) - max++; - *i = max; + *i = pos; break; } } return false; } + template + bool bsearch_impl (const T &x, unsigned *pos) const + { + return hb_bsearch_impl (pos, + x, + this->arrayZ, + this->length, + sizeof (Type), + _hb_cmp_method); + } }; template inline hb_sorted_array_t hb_sorted_array (T *array, unsigned int length) diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-bimap.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-bimap.hh index cae0a4dea44..e9f3a6a52df 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-bimap.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-bimap.hh @@ -151,9 +151,9 @@ struct hb_inc_bimap_t : hb_bimap_t for (hb_codepoint_t rhs = 0; rhs < count; rhs++) work[rhs] = back_map[rhs]; - + work.qsort (cmp_id); - + clear (); for (hb_codepoint_t rhs = 0; rhs < count; rhs++) set (work[rhs], rhs); 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 2e72683c8b9..3ca31c5fe65 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-blob.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-blob.cc @@ -25,18 +25,6 @@ * Red Hat Author(s): Behdad Esfahbod */ - -/* https://github.com/harfbuzz/harfbuzz/issues/1308 - * http://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html - * https://www.oracle.com/technetwork/articles/servers-storage-dev/standardheaderfiles-453865.html - */ -#if !defined(_POSIX_C_SOURCE) && !defined(_MSC_VER) && !defined(__NetBSD__) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-macros" -#define _POSIX_C_SOURCE 200809L -#pragma GCC diagnostic pop -#endif - #include "hb.hh" #include "hb-blob.hh" @@ -201,7 +189,7 @@ hb_blob_copy_writable_or_fail (hb_blob_t *blob) hb_blob_t * hb_blob_get_empty () { - return const_cast (&Null(hb_blob_t)); + return const_cast (&Null (hb_blob_t)); } /** @@ -488,6 +476,9 @@ hb_blob_t::try_make_writable () #ifndef HB_NO_OPEN #ifdef HAVE_MMAP +# if !defined(HB_NO_RESOURCE_FORK) && defined(__APPLE__) +# include +# endif # include # include # include @@ -532,6 +523,39 @@ _hb_mapped_file_destroy (void *file_) } #endif +#ifdef _PATH_RSRCFORKSPEC +static int +_open_resource_fork (const char *file_name, hb_mapped_file_t *file) +{ + size_t name_len = strlen (file_name); + size_t len = name_len + sizeof (_PATH_RSRCFORKSPEC); + + char *rsrc_name = (char *) malloc (len); + if (unlikely (!rsrc_name)) return -1; + + strncpy (rsrc_name, file_name, name_len); + strncpy (rsrc_name + name_len, _PATH_RSRCFORKSPEC, + sizeof (_PATH_RSRCFORKSPEC) - 1); + + int fd = open (rsrc_name, O_RDONLY | O_BINARY, 0); + free (rsrc_name); + + if (fd != -1) + { + struct stat st; + if (fstat (fd, &st) != -1) + file->length = (unsigned long) st.st_size; + else + { + close (fd); + fd = -1; + } + } + + return fd; +} +#endif + /** * hb_blob_create_from_file: * @file_name: font filename. @@ -556,6 +580,19 @@ hb_blob_create_from_file (const char *file_name) if (unlikely (fstat (fd, &st) == -1)) goto fail; file->length = (unsigned long) st.st_size; + +#ifdef _PATH_RSRCFORKSPEC + if (unlikely (file->length == 0)) + { + int rfd = _open_resource_fork (file_name, file); + if (rfd != -1) + { + close (fd); + fd = rfd; + } + } +#endif + file->contents = (char *) mmap (nullptr, file->length, PROT_READ, MAP_PRIVATE | MAP_NORESERVE, fd, 0); @@ -579,7 +616,7 @@ fail_without_close: HANDLE fd; unsigned int size = strlen (file_name) + 1; wchar_t * wchar_file_name = (wchar_t *) malloc (sizeof (wchar_t) * size); - if (unlikely (wchar_file_name == nullptr)) goto fail_without_close; + if (unlikely (!wchar_file_name)) goto fail_without_close; mbstowcs (wchar_file_name, file_name, size); #if defined(WINAPI_FAMILY) && (WINAPI_FAMILY==WINAPI_FAMILY_PC_APP || WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP) { @@ -613,14 +650,14 @@ fail_without_close: file->length = (unsigned long) GetFileSize (fd, nullptr); file->mapping = CreateFileMapping (fd, nullptr, PAGE_READONLY, 0, 0, nullptr); #endif - if (unlikely (file->mapping == nullptr)) goto fail; + if (unlikely (!file->mapping)) goto fail; #if defined(WINAPI_FAMILY) && (WINAPI_FAMILY==WINAPI_FAMILY_PC_APP || WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP) file->contents = (char *) MapViewOfFileFromApp (file->mapping, FILE_MAP_READ, 0, 0); #else file->contents = (char *) MapViewOfFile (file->mapping, FILE_MAP_READ, 0, 0, 0); #endif - if (unlikely (file->contents == nullptr)) goto fail; + if (unlikely (!file->contents)) goto fail; CloseHandle (fd); return hb_blob_create (file->contents, file->length, @@ -638,10 +675,10 @@ fail_without_close: It's used as a fallback for systems without mmap or to read from pipes */ unsigned long len = 0, allocated = BUFSIZ * 16; char *data = (char *) malloc (allocated); - if (unlikely (data == nullptr)) return hb_blob_get_empty (); + if (unlikely (!data)) return hb_blob_get_empty (); FILE *fp = fopen (file_name, "rb"); - if (unlikely (fp == nullptr)) goto fread_fail_without_close; + if (unlikely (!fp)) goto fread_fail_without_close; while (!feof (fp)) { @@ -652,7 +689,7 @@ fail_without_close: can cover files like that but lets limit our fallback reader */ if (unlikely (allocated > (2 << 28))) goto fread_fail; char *new_data = (char *) realloc (data, allocated); - if (unlikely (new_data == nullptr)) goto fread_fail; + if (unlikely (!new_data)) goto fread_fail; data = new_data; } @@ -666,6 +703,7 @@ fail_without_close: len += addition; } + fclose (fp); return hb_blob_create (data, len, HB_MEMORY_MODE_WRITABLE, data, (hb_destroy_func_t) free); 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 6131c861773..d443edf2584 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc @@ -438,13 +438,6 @@ hb_buffer_t::set_masks (hb_mask_t value, if (!mask) return; - if (cluster_start == 0 && cluster_end == (unsigned int)-1) { - unsigned int count = len; - for (unsigned int i = 0; i < count; i++) - info[i].mask = (info[i].mask & not_mask) | value; - return; - } - unsigned int count = len; for (unsigned int i = 0; i < count; i++) if (cluster_start <= info[i].cluster && info[i].cluster < cluster_end) @@ -455,27 +448,13 @@ void hb_buffer_t::reverse_range (unsigned int start, unsigned int end) { - unsigned int i, j; - if (end - start < 2) return; - for (i = start, j = end - 1; i < j; i++, j--) { - hb_glyph_info_t t; - - t = info[i]; - info[i] = info[j]; - info[j] = t; - } + hb_array_t (info, len).reverse (start, end); if (have_positions) { - for (i = start, j = end - 1; i < j; i++, j--) { - hb_glyph_position_t t; - - t = pos[i]; - pos[i] = pos[j]; - pos[j] = t; - } + hb_array_t (pos, len).reverse (start, end); } } @@ -612,7 +591,7 @@ done: void hb_buffer_t::unsafe_to_break_impl (unsigned int start, unsigned int end) { - unsigned int cluster = (unsigned int) -1; + unsigned int cluster = UINT_MAX; cluster = _unsafe_to_break_find_min_cluster (info, start, end, cluster); _unsafe_to_break_set_mask (info, start, end, cluster); } @@ -628,7 +607,7 @@ hb_buffer_t::unsafe_to_break_from_outbuffer (unsigned int start, unsigned int en assert (start <= out_len); assert (idx <= end); - unsigned int cluster = (unsigned int) -1; + unsigned int cluster = UINT_MAX; cluster = _unsafe_to_break_find_min_cluster (out_info, start, out_len, cluster); cluster = _unsafe_to_break_find_min_cluster (info, idx, end, cluster); _unsafe_to_break_set_mask (out_info, start, out_len, cluster); @@ -736,7 +715,7 @@ hb_buffer_create () hb_buffer_t * hb_buffer_get_empty () { - return const_cast (&Null(hb_buffer_t)); + return const_cast (&Null (hb_buffer_t)); } /** @@ -958,7 +937,7 @@ hb_buffer_get_direction (hb_buffer_t *buffer) * * You can pass one of the predefined #hb_script_t values, or use * hb_script_from_string() or hb_script_from_iso15924_tag() to get the - * corresponding script from an ISO 15924 script tag. + * corresponding script from an ISO 15924 script tag. * * Since: 0.9.2 **/ @@ -1001,7 +980,7 @@ hb_buffer_get_script (hb_buffer_t *buffer) * are orthogonal to the scripts, and though they are related, they are * different concepts and should not be confused with each other. * - * Use hb_language_from_string() to convert from BCP 47 language tags to + * Use hb_language_from_string() to convert from BCP 47 language tags to * #hb_language_t. * * Since: 0.9.2 @@ -1738,7 +1717,7 @@ hb_buffer_add_codepoints (hb_buffer_t *buffer, * @buffer: an #hb_buffer_t. * @source: source #hb_buffer_t. * @start: start index into source buffer to copy. Use 0 to copy from start of buffer. - * @end: end index into source buffer to copy. Use (unsigned int) -1 to copy to end of buffer. + * @end: end index into source buffer to copy. Use @HB_FEATURE_GLOBAL_END to copy to end of buffer. * * Append (part of) contents of another buffer to this buffer. * @@ -1860,18 +1839,8 @@ hb_buffer_normalize_glyphs (hb_buffer_t *buffer) bool backward = HB_DIRECTION_IS_BACKWARD (buffer->props.direction); - unsigned int count = buffer->len; - if (unlikely (!count)) return; - hb_glyph_info_t *info = buffer->info; - - unsigned int start = 0; - unsigned int end; - for (end = start + 1; end < count; end++) - if (info[start].cluster != info[end].cluster) { - normalize_glyphs_cluster (buffer, start, end, backward); - start = end; - } - normalize_glyphs_cluster (buffer, start, end, backward); + foreach_cluster (buffer, start, end) + normalize_glyphs_cluster (buffer, start, end, backward); } void 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 d5cb7468618..2f581f3c735 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.h +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.h @@ -365,7 +365,7 @@ hb_buffer_clear_contents (hb_buffer_t *buffer); HB_EXTERN hb_bool_t hb_buffer_pre_allocate (hb_buffer_t *buffer, - unsigned int size); + unsigned int size); HB_EXTERN hb_bool_t diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.hh index b5596d94577..dce89fabeb8 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.hh @@ -228,10 +228,10 @@ struct hb_buffer_t /* Makes a copy of the glyph at idx to output and replace glyph_index */ hb_glyph_info_t & output_glyph (hb_codepoint_t glyph_index) { - if (unlikely (!make_room_for (0, 1))) return Crap(hb_glyph_info_t); + if (unlikely (!make_room_for (0, 1))) return Crap (hb_glyph_info_t); if (unlikely (idx == len && !out_len)) - return Crap(hb_glyph_info_t); + return Crap (hb_glyph_info_t); out_info[out_len] = idx < len ? info[idx] : out_info[out_len - 1]; out_info[out_len].codepoint = glyph_index; @@ -386,7 +386,7 @@ struct hb_buffer_t inf.cluster = cluster; } - int + unsigned int _unsafe_to_break_find_min_cluster (const hb_glyph_info_t *infos, unsigned int start, unsigned int end, unsigned int cluster) const diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cff-interp-common.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cff-interp-common.hh index 780f61892d7..91a9b7d0d16 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cff-interp-common.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cff-interp-common.hh @@ -252,30 +252,27 @@ struct number_t struct UnsizedByteStr : UnsizedArrayOf { // encode 2-byte int (Dict/CharString) or 4-byte int (Dict) - template - static bool serialize_int (hb_serialize_context_t *c, op_code_t intOp, int value) + template + static bool serialize_int (hb_serialize_context_t *c, op_code_t intOp, V value) { TRACE_SERIALIZE (this); - if (unlikely ((value < minVal || value > maxVal))) - return_trace (false); - HBUINT8 *p = c->allocate_size (1); - if (unlikely (p == nullptr)) return_trace (false); + if (unlikely (!p)) return_trace (false); *p = intOp; - INTTYPE *ip = c->allocate_size (INTTYPE::static_size); - if (unlikely (ip == nullptr)) return_trace (false); - *ip = (unsigned int) value; - - return_trace (true); + T *ip = c->allocate_size (T::static_size); + if (unlikely (!ip)) return_trace (false); + return_trace (c->check_assign (*ip, value)); } - static bool serialize_int4 (hb_serialize_context_t *c, int value) - { return serialize_int (c, OpCode_longintdict, value); } + template + static bool serialize_int4 (hb_serialize_context_t *c, V value) + { return serialize_int (c, OpCode_longintdict, value); } - static bool serialize_int2 (hb_serialize_context_t *c, int value) - { return serialize_int (c, OpCode_shortint, value); } + template + static bool serialize_int2 (hb_serialize_context_t *c, V value) + { return serialize_int (c, OpCode_shortint, value); } /* Defining null_size allows a Null object may be created. Should be safe because: * A descendent struct Dict uses a Null pointer to indicate a missing table, @@ -408,7 +405,7 @@ struct cff_stack_t else { set_error (); - return Crap(ELEM); + return Crap (ELEM); } } @@ -419,7 +416,7 @@ struct cff_stack_t else { set_error (); - return Crap(ELEM); + return Crap (ELEM); } } void pop (unsigned int n) @@ -435,7 +432,7 @@ struct cff_stack_t if (unlikely (count < 0)) { set_error (); - return Null(ELEM); + return Null (ELEM); } return elements[count - 1]; } @@ -542,7 +539,7 @@ struct op_serializer_t TRACE_SERIALIZE (this); HBUINT8 *d = c->allocate_size (opstr.str.length); - if (unlikely (d == nullptr)) return_trace (false); + if (unlikely (!d)) return_trace (false); memcpy (d, &opstr.str[0], opstr.str.length); return_trace (true); } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cff-interp-cs-common.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cff-interp-cs-common.hh index d9ad4d0d69f..52d778ffe29 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cff-interp-cs-common.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cff-interp-cs-common.hh @@ -76,13 +76,13 @@ struct biased_subrs_t void fini () {} - unsigned int get_count () const { return (subrs == nullptr) ? 0 : subrs->count; } + unsigned int get_count () const { return subrs ? subrs->count : 0; } unsigned int get_bias () const { return bias; } byte_str_t operator [] (unsigned int index) const { - if (unlikely ((subrs == nullptr) || index >= subrs->count)) - return Null(byte_str_t); + if (unlikely (!subrs || index >= subrs->count)) + return Null (byte_str_t); else return (*subrs)[index]; } @@ -551,8 +551,13 @@ struct path_procs_t static void rcurveline (ENV &env, PARAM& param) { + unsigned int arg_count = env.argStack.get_count (); + if (unlikely (arg_count < 8)) + return; + unsigned int i = 0; - for (; i + 6 <= env.argStack.get_count (); i += 6) + unsigned int curve_limit = arg_count - 2; + for (; i + 6 <= curve_limit; i += 6) { point_t pt1 = env.get_pt (); pt1.move (env.eval_arg (i), env.eval_arg (i+1)); @@ -562,34 +567,34 @@ struct path_procs_t pt3.move (env.eval_arg (i+4), env.eval_arg (i+5)); PATH::curve (env, param, pt1, pt2, pt3); } - for (; i + 2 <= env.argStack.get_count (); i += 2) - { - point_t pt1 = env.get_pt (); - pt1.move (env.eval_arg (i), env.eval_arg (i+1)); - PATH::line (env, param, pt1); - } + + point_t pt1 = env.get_pt (); + pt1.move (env.eval_arg (i), env.eval_arg (i+1)); + PATH::line (env, param, pt1); } static void rlinecurve (ENV &env, PARAM& param) { + unsigned int arg_count = env.argStack.get_count (); + if (unlikely (arg_count < 8)) + return; + unsigned int i = 0; - unsigned int line_limit = (env.argStack.get_count () % 6); + unsigned int line_limit = arg_count - 6; for (; i + 2 <= line_limit; i += 2) { point_t pt1 = env.get_pt (); pt1.move (env.eval_arg (i), env.eval_arg (i+1)); PATH::line (env, param, pt1); } - for (; i + 6 <= env.argStack.get_count (); i += 6) - { - point_t pt1 = env.get_pt (); - pt1.move (env.eval_arg (i), env.eval_arg (i+1)); - point_t pt2 = pt1; - pt2.move (env.eval_arg (i+2), env.eval_arg (i+3)); - point_t pt3 = pt2; - pt3.move (env.eval_arg (i+4), env.eval_arg (i+5)); - PATH::curve (env, param, pt1, pt2, pt3); - } + + point_t pt1 = env.get_pt (); + pt1.move (env.eval_arg (i), env.eval_arg (i+1)); + point_t pt2 = pt1; + pt2.move (env.eval_arg (i+2), env.eval_arg (i+3)); + point_t pt3 = pt2; + pt3.move (env.eval_arg (i+4), env.eval_arg (i+5)); + PATH::curve (env, param, pt1, pt2, pt3); } static void vvcurveto (ENV &env, PARAM& param) diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cff-interp-dict-common.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cff-interp-dict-common.hh index 1f03d82399b..a520ca3bce5 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cff-interp-dict-common.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cff-interp-dict-common.hh @@ -27,8 +27,6 @@ #define HB_CFF_INTERP_DICT_COMMON_HH #include "hb-cff-interp-common.hh" -#include -#include namespace CFF { @@ -58,19 +56,6 @@ struct top_dict_values_t : dict_values_t } void fini () { dict_values_t::fini (); } - unsigned int calculate_serialized_op_size (const OPSTR& opstr) const - { - switch (opstr.op) - { - case OpCode_CharStrings: - case OpCode_FDArray: - return OpCode_Size (OpCode_longintdict) + 4 + OpCode_Size (opstr.op); - - default: - return opstr.str.length; - } - } - unsigned int charStringsOffset; unsigned int FDArrayOffset; }; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cff2-interp-cs.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cff2-interp-cs.hh index a72100e1aba..8d9bb2689bb 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cff2-interp-cs.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cff2-interp-cs.hh @@ -80,7 +80,7 @@ struct cff2_cs_interp_env_t : cs_interp_env_t { template void init (const byte_str_t &str, ACC &acc, unsigned int fd, - const int *coords_=nullptr, unsigned int num_coords_=0) + const int *coords_=nullptr, unsigned int num_coords_=0) { SUPER::init (str, acc.globalSubrs, acc.privateDicts[fd].localSubrs); @@ -90,7 +90,7 @@ struct cff2_cs_interp_env_t : cs_interp_env_t seen_blend = false; seen_vsindex_ = false; scalars.init (); - do_blend = (coords != nullptr) && num_coords && (varStore != &Null(CFF2VariationStore)); + do_blend = num_coords && coords && varStore->size; set_ivs (acc.privateDicts[fd].ivs); } @@ -134,8 +134,7 @@ struct cff2_cs_interp_env_t : cs_interp_env_t if (do_blend) { scalars.resize (region_count); - varStore->varStore.get_scalars (get_ivs (), - (int *)coords, num_coords, + varStore->varStore.get_scalars (get_ivs (), coords, num_coords, &scalars[0], region_count); } seen_blend = true; 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 0ae0c05f488..5b60ff4b215 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.cc @@ -69,7 +69,6 @@ _hb_options_init () if (0 == strncmp (c, name, p - c) && strlen (name) == static_cast(p - c)) do { u.opts.symbol = true; } while (0) OPTION ("uniscribe-bug-compatible", uniscribe_bug_compatible); - OPTION ("aat", aat); #undef OPTION @@ -333,14 +332,14 @@ retry: /** * hb_language_from_string: * @str: (array length=len) (element-type uint8_t): a string representing - * a BCP 47 language tag + * a BCP 47 language tag * @len: length of the @str, or -1 if it is %NULL-terminated. * - * Converts @str representing a BCP 47 language tag to the corresponding + * Converts @str representing a BCP 47 language tag to the corresponding * #hb_language_t. * * Return value: (transfer none): - * The #hb_language_t corresponding to the BCP 47 language tag. + * The #hb_language_t corresponding to the BCP 47 language tag. * * Since: 0.9.2 **/ @@ -422,12 +421,12 @@ hb_language_get_default () /** * hb_script_from_iso15924_tag: - * @tag: an #hb_tag_t representing an ISO 15924 tag. + * @tag: an #hb_tag_t representing an ISO 15924 tag. * - * Converts an ISO 15924 script tag to a corresponding #hb_script_t. + * Converts an ISO 15924 script tag to a corresponding #hb_script_t. * * Return value: - * An #hb_script_t corresponding to the ISO 15924 tag. + * An #hb_script_t corresponding to the ISO 15924 tag. * * Since: 0.9.2 **/ @@ -468,15 +467,15 @@ hb_script_from_iso15924_tag (hb_tag_t tag) /** * hb_script_from_string: * @str: (array length=len) (element-type uint8_t): a string representing an - * ISO 15924 tag. + * ISO 15924 tag. * @len: length of the @str, or -1 if it is %NULL-terminated. * - * Converts a string @str representing an ISO 15924 script tag to a + * Converts a string @str representing an ISO 15924 script tag to a * corresponding #hb_script_t. Shorthand for hb_tag_from_string() then * hb_script_from_iso15924_tag(). * * Return value: - * An #hb_script_t corresponding to the ISO 15924 tag. + * An #hb_script_t corresponding to the ISO 15924 tag. * * Since: 0.9.2 **/ @@ -493,7 +492,7 @@ hb_script_from_string (const char *str, int len) * See hb_script_from_iso15924_tag(). * * Return value: - * An #hb_tag_t representing an ISO 15924 script tag. + * An #hb_tag_t representing an ISO 15924 script tag. * * Since: 0.9.2 **/ @@ -590,38 +589,6 @@ hb_script_get_horizontal_direction (hb_script_t script) } -/* hb_user_data_array_t */ - -bool -hb_user_data_array_t::set (hb_user_data_key_t *key, - void * data, - hb_destroy_func_t destroy, - hb_bool_t replace) -{ - if (!key) - return false; - - if (replace) { - if (!data && !destroy) { - items.remove (key, lock); - return true; - } - } - hb_user_data_item_t item = {key, data, destroy}; - bool ret = !!items.replace_or_insert (item, lock, (bool) replace); - - return ret; -} - -void * -hb_user_data_array_t::get (hb_user_data_key_t *key) -{ - hb_user_data_item_t item = {nullptr, nullptr, nullptr}; - - return items.find (key, &item, lock) ? item.data : nullptr; -} - - /* hb_version */ @@ -960,14 +927,14 @@ hb_feature_to_string (hb_feature_t *feature, len += 4; while (len && s[len - 1] == ' ') len--; - if (feature->start != 0 || feature->end != (unsigned int) -1) + if (feature->start != HB_FEATURE_GLOBAL_START || feature->end != HB_FEATURE_GLOBAL_END) { s[len++] = '['; if (feature->start) len += hb_max (0, snprintf (s + len, ARRAY_LENGTH (s) - len, "%u", feature->start)); if (feature->end != feature->start + 1) { s[len++] = ':'; - if (feature->end != (unsigned int) -1) + if (feature->end != HB_FEATURE_GLOBAL_END) len += hb_max (0, snprintf (s + len, ARRAY_LENGTH (s) - len, "%u", feature->end)); } s[len++] = ']'; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-config.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-config.hh index 14c5395952b..07659fad153 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-config.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-config.hh @@ -58,6 +58,7 @@ #define HB_NO_BITMAP #define HB_NO_CFF #define HB_NO_COLOR +#define HB_NO_DRAW #define HB_NO_ERRNO #define HB_NO_FACE_COLLECT_UNICODES #define HB_NO_GETENV 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 8885cfe7304..76e00fd5ce3 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc @@ -278,13 +278,32 @@ _hb_coretext_shaper_face_data_destroy (hb_coretext_face_data_t *data) CFRelease ((CGFontRef) data); } +/** + * hb_coretext_face_create: + * @cg_font: The CGFontRef to work upon + * + * Creates an #hb_face_t face object from the specified + * CGFontRef. + * + * Return value: the new #hb_face_t face object + * + * Since: 0.9.10 + */ hb_face_t * hb_coretext_face_create (CGFontRef cg_font) { return hb_face_create_for_tables (_hb_cg_reference_table, CGFontRetain (cg_font), _hb_cg_font_release); } -/* +/** + * hb_coretext_face_get_cg_font: + * @face: The #hb_face_t to work upon + * + * Fetches the CGFontRef associated with an #hb_face_t + * face object + * + * Return value: the CGFontRef found + * * Since: 0.9.10 */ CGFontRef @@ -351,10 +370,17 @@ retry: return font->data.coretext; } - -/* +/** + * hb_coretext_font_create: + * @ct_font: The CTFontRef to work upon + * + * Creates an #hb_font_t font object from the specified + * CTFontRef. + * + * Return value: the new #hb_font_t font object + * * Since: 1.7.2 - */ + **/ hb_font_t * hb_coretext_font_create (CTFontRef ct_font) { @@ -375,6 +401,17 @@ hb_coretext_font_create (CTFontRef ct_font) return font; } +/** + * hb_coretext_face_get_ct_font: + * @font: #hb_font_t to work upon + * + * Fetches the CTFontRef associated with the specified + * #hb_font_t font object. + * + * Return value: the CTFontRef found + * + * Since: 0.9.10 + */ CTFontRef hb_coretext_font_get_ct_font (hb_font_t *font) { @@ -475,13 +512,19 @@ _hb_coretext_shape (hb_shape_plan_t *shape_plan, hb_vector_t feature_events; for (unsigned int i = 0; i < num_features; i++) { + active_feature_t feature; + +#if MAC_OS_X_VERSION_MIN_REQUIRED < 1010 const hb_aat_feature_mapping_t * mapping = hb_aat_layout_find_feature_mapping (features[i].tag); if (!mapping) continue; - active_feature_t feature; feature.rec.feature = mapping->aatFeatureType; feature.rec.setting = features[i].value ? mapping->selectorToEnable : mapping->selectorToDisable; +#else + feature.rec.feature = features[i].tag; + feature.rec.setting = features[i].value; +#endif feature.order = i; feature_event_t *event; @@ -530,6 +573,7 @@ _hb_coretext_shape (hb_shape_plan_t *shape_plan, /* active_features.qsort (); */ for (unsigned int j = 0; j < active_features.length; j++) { +#if MAC_OS_X_VERSION_MIN_REQUIRED < 1010 CFStringRef keys[] = { kCTFontFeatureTypeIdentifierKey, kCTFontFeatureSelectorIdentifierKey @@ -538,6 +582,17 @@ _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) }; +#else + char tag[5] = {HB_UNTAG (active_features[j].rec.feature)}; + CFTypeRef keys[] = { + kCTFontOpenTypeFeatureTag, + kCTFontOpenTypeFeatureValue + }; + CFTypeRef values[] = { + CFStringCreateWithCString (kCFAllocatorDefault, tag, kCFStringEncodingASCII), + CFNumberCreate (kCFAllocatorDefault, kCFNumberIntType, &active_features[j].rec.setting) + }; +#endif static_assert ((ARRAY_LENGTH_CONST (keys) == ARRAY_LENGTH_CONST (values)), ""); CFDictionaryRef dict = CFDictionaryCreate (kCFAllocatorDefault, (const void **) keys, @@ -605,7 +660,7 @@ _hb_coretext_shape (hb_shape_plan_t *shape_plan, scratch_size -= _consumed; \ } while (0) - ALLOCATE_ARRAY (UniChar, pchars, buffer->len * 2, /*nothing*/); + ALLOCATE_ARRAY (UniChar, pchars, buffer->len * 2, ((void)nullptr) /*nothing*/); unsigned int chars_len = 0; for (unsigned int i = 0; i < buffer->len; i++) { hb_codepoint_t c = buffer->info[i].codepoint; @@ -619,7 +674,7 @@ _hb_coretext_shape (hb_shape_plan_t *shape_plan, } } - ALLOCATE_ARRAY (unsigned int, log_clusters, chars_len, /*nothing*/); + ALLOCATE_ARRAY (unsigned int, log_clusters, chars_len, ((void)nullptr) /*nothing*/); chars_len = 0; for (unsigned int i = 0; i < buffer->len; i++) { diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.h index 4b0a6f01b6f..e53dbaf2c7f 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.h +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.h @@ -40,8 +40,40 @@ HB_BEGIN_DECLS +/** + * HB_CORETEXT_TAG_MORT: + * + * The #hb_tag_t tag for the `mort` (glyph metamorphosis) table, + * which holds AAT features. + * + * For more information, see + * https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6mort.html + * + **/ #define HB_CORETEXT_TAG_MORT HB_TAG('m','o','r','t') + +/** + * HB_CORETEXT_TAG_MORX: + * + * The #hb_tag_t tag for the `morx` (extended glyph metamorphosis) + * table, which holds AAT features. + * + * For more information, see + * https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6morx.html + * + **/ #define HB_CORETEXT_TAG_MORX HB_TAG('m','o','r','x') + +/** + * HB_CORETEXT_TAG_KERX: + * + * The #hb_tag_t tag for the `kerx` (extended kerning) table, which + * holds AAT kerning information. + * + * For more information, see + * https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6kerx.html + * + **/ #define HB_CORETEXT_TAG_KERX HB_TAG('k','e','r','x') diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-debug.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-debug.hh index a7e52c8cbe2..5c13e5d1aab 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-debug.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-debug.hh @@ -46,7 +46,6 @@ struct hb_options_t bool unused : 1; /* In-case sign bit is here. */ bool initialized : 1; bool uniscribe_bug_compatible : 1; - bool aat : 1; }; union hb_options_union_t { @@ -230,7 +229,7 @@ _hb_debug_msg<0> (const char *what HB_UNUSED, ...) {} #define DEBUG_MSG_LEVEL(WHAT, OBJ, LEVEL, LEVEL_DIR, ...) _hb_debug_msg (#WHAT, (OBJ), nullptr, true, (LEVEL), (LEVEL_DIR), __VA_ARGS__) -#define DEBUG_MSG(WHAT, OBJ, ...) _hb_debug_msg (#WHAT, (OBJ), nullptr, false, 0, 0, __VA_ARGS__) +#define DEBUG_MSG(WHAT, OBJ, ...) _hb_debug_msg (#WHAT, (OBJ), nullptr, false, 0, 0, __VA_ARGS__) #define DEBUG_MSG_FUNC(WHAT, OBJ, ...) _hb_debug_msg (#WHAT, (OBJ), HB_FUNC, false, 0, 0, __VA_ARGS__) 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 efb2029ec0c..f2fce073e05 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-directwrite.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-directwrite.cc @@ -635,7 +635,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 != nullptr) + if (buffer->props.language) mbstowcs ((wchar_t*) localeName, hb_language_to_string (buffer->props.language), 20); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-draw.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-draw.cc new file mode 100644 index 00000000000..1a5f9c8c6bd --- /dev/null +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-draw.cc @@ -0,0 +1,261 @@ +/* + * Copyright © 2019-2020 Ebrahim Byagowi + * + * 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. + */ + +#include "hb.hh" + +#ifndef HB_NO_DRAW +#ifdef HB_EXPERIMENTAL_API + +#include "hb-draw.hh" +#include "hb-ot.h" +#include "hb-ot-glyf-table.hh" +#include "hb-ot-cff1-table.hh" +#include "hb-ot-cff2-table.hh" + +/** + * hb_draw_funcs_set_move_to_func: + * @funcs: draw functions object + * @move_to: move-to callback + * + * Sets move-to callback to the draw functions object. + * + * Since: EXPERIMENTAL + **/ +void +hb_draw_funcs_set_move_to_func (hb_draw_funcs_t *funcs, + hb_draw_move_to_func_t move_to) +{ + if (unlikely (hb_object_is_immutable (funcs))) return; + funcs->move_to = move_to; +} + +/** + * hb_draw_funcs_set_line_to_func: + * @funcs: draw functions object + * @line_to: line-to callback + * + * Sets line-to callback to the draw functions object. + * + * Since: EXPERIMENTAL + **/ +void +hb_draw_funcs_set_line_to_func (hb_draw_funcs_t *funcs, + hb_draw_line_to_func_t line_to) +{ + if (unlikely (hb_object_is_immutable (funcs))) return; + funcs->line_to = line_to; +} + +/** + * hb_draw_funcs_set_quadratic_to_func: + * @funcs: draw functions object + * @move_to: quadratic-to callback + * + * Sets quadratic-to callback to the draw functions object. + * + * Since: EXPERIMENTAL + **/ +void +hb_draw_funcs_set_quadratic_to_func (hb_draw_funcs_t *funcs, + hb_draw_quadratic_to_func_t quadratic_to) +{ + if (unlikely (hb_object_is_immutable (funcs))) return; + funcs->quadratic_to = quadratic_to; + funcs->is_quadratic_to_set = true; +} + +/** + * hb_draw_funcs_set_cubic_to_func: + * @funcs: draw functions + * @cubic_to: cubic-to callback + * + * Sets cubic-to callback to the draw functions object. + * + * Since: EXPERIMENTAL + **/ +void +hb_draw_funcs_set_cubic_to_func (hb_draw_funcs_t *funcs, + hb_draw_cubic_to_func_t cubic_to) +{ + if (unlikely (hb_object_is_immutable (funcs))) return; + funcs->cubic_to = cubic_to; +} + +/** + * hb_draw_funcs_set_close_path_func: + * @funcs: draw functions object + * @close_path: close-path callback + * + * Sets close-path callback to the draw functions object. + * + * Since: EXPERIMENTAL + **/ +void +hb_draw_funcs_set_close_path_func (hb_draw_funcs_t *funcs, + hb_draw_close_path_func_t close_path) +{ + if (unlikely (hb_object_is_immutable (funcs))) return; + funcs->close_path = close_path; +} + +static void +_move_to_nil (hb_position_t to_x HB_UNUSED, hb_position_t to_y HB_UNUSED, void *user_data HB_UNUSED) {} + +static void +_line_to_nil (hb_position_t to_x HB_UNUSED, hb_position_t to_y HB_UNUSED, void *user_data HB_UNUSED) {} + +static void +_quadratic_to_nil (hb_position_t control_x HB_UNUSED, hb_position_t control_y HB_UNUSED, + hb_position_t to_x HB_UNUSED, hb_position_t to_y HB_UNUSED, + void *user_data HB_UNUSED) {} + +static void +_cubic_to_nil (hb_position_t control1_x HB_UNUSED, hb_position_t control1_y HB_UNUSED, + hb_position_t control2_x HB_UNUSED, hb_position_t control2_y HB_UNUSED, + hb_position_t to_x HB_UNUSED, hb_position_t to_y HB_UNUSED, + void *user_data HB_UNUSED) {} + +static void +_close_path_nil (void *user_data HB_UNUSED) {} + +/** + * hb_draw_funcs_create: + * + * Creates a new draw callbacks object. + * + * Since: EXPERIMENTAL + **/ +hb_draw_funcs_t * +hb_draw_funcs_create () +{ + hb_draw_funcs_t *funcs; + if (unlikely (!(funcs = hb_object_create ()))) + return const_cast (&Null (hb_draw_funcs_t)); + + funcs->move_to = (hb_draw_move_to_func_t) _move_to_nil; + funcs->line_to = (hb_draw_line_to_func_t) _line_to_nil; + funcs->quadratic_to = (hb_draw_quadratic_to_func_t) _quadratic_to_nil; + funcs->is_quadratic_to_set = false; + funcs->cubic_to = (hb_draw_cubic_to_func_t) _cubic_to_nil; + funcs->close_path = (hb_draw_close_path_func_t) _close_path_nil; + return funcs; +} + +/** + * hb_draw_funcs_reference: + * @funcs: draw functions + * + * Add to callbacks object refcount. + * + * Returns: The same object. + * Since: EXPERIMENTAL + **/ +hb_draw_funcs_t * +hb_draw_funcs_reference (hb_draw_funcs_t *funcs) +{ + return hb_object_reference (funcs); +} + +/** + * hb_draw_funcs_destroy: + * @funcs: draw functions + * + * Decreases refcount of callbacks object and deletes the object if it reaches + * to zero. + * + * Since: EXPERIMENTAL + **/ +void +hb_draw_funcs_destroy (hb_draw_funcs_t *funcs) +{ + if (!hb_object_destroy (funcs)) return; + + free (funcs); +} + +/** + * hb_draw_funcs_make_immutable: + * @funcs: draw functions + * + * Makes funcs object immutable. + * + * Since: EXPERIMENTAL + **/ +void +hb_draw_funcs_make_immutable (hb_draw_funcs_t *funcs) +{ + if (hb_object_is_immutable (funcs)) + return; + + hb_object_make_immutable (funcs); +} + +/** + * hb_draw_funcs_is_immutable: + * @funcs: draw functions + * + * Checks whether funcs is immutable. + * + * Returns: If is immutable. + * Since: EXPERIMENTAL + **/ +hb_bool_t +hb_draw_funcs_is_immutable (hb_draw_funcs_t *funcs) +{ + return hb_object_is_immutable (funcs); +} + +/** + * hb_font_draw_glyph: + * @font: a font object + * @glyph: a glyph id + * @funcs: draw callbacks object + * @user_data: parameter you like be passed to the callbacks when are called + * + * Draw a glyph. + * + * Returns: Whether the font had the glyph and the operation completed successfully. + * Since: EXPERIMENTAL + **/ +hb_bool_t +hb_font_draw_glyph (hb_font_t *font, hb_codepoint_t glyph, + const hb_draw_funcs_t *funcs, + void *user_data) +{ + if (unlikely (funcs == &Null (hb_draw_funcs_t) || + glyph >= font->face->get_num_glyphs ())) + return false; + + draw_helper_t draw_helper (funcs, user_data); + if (font->face->table.glyf->get_path (font, glyph, draw_helper)) return true; +#ifndef HB_NO_CFF + if (font->face->table.cff1->get_path (font, glyph, draw_helper)) return true; + if (font->face->table.cff2->get_path (font, glyph, draw_helper)) return true; +#endif + + return false; +} + +#endif +#endif diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-draw.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-draw.h new file mode 100644 index 00000000000..98eccf4c0c0 --- /dev/null +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-draw.h @@ -0,0 +1,98 @@ +/* + * Copyright © 2019-2020 Ebrahim Byagowi + * + * 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. + */ + +#ifndef HB_H_IN +#error "Include instead." +#endif + +#ifndef HB_DRAW_H +#define HB_DRAW_H + +#include "hb.h" + +HB_BEGIN_DECLS + +#ifdef HB_EXPERIMENTAL_API +typedef void (*hb_draw_move_to_func_t) (hb_position_t to_x, hb_position_t to_y, void *user_data); +typedef void (*hb_draw_line_to_func_t) (hb_position_t to_x, hb_position_t to_y, void *user_data); +typedef void (*hb_draw_quadratic_to_func_t) (hb_position_t control_x, hb_position_t control_y, + hb_position_t to_x, hb_position_t to_y, + void *user_data); +typedef void (*hb_draw_cubic_to_func_t) (hb_position_t control1_x, hb_position_t control1_y, + hb_position_t control2_x, hb_position_t control2_y, + hb_position_t to_x, hb_position_t to_y, + void *user_data); +typedef void (*hb_draw_close_path_func_t) (void *user_data); + +/** + * hb_draw_funcs_t: + * + * Glyph draw callbacks. + * + * _move_to, _line_to and _cubic_to calls are nessecary to be defined but we + * translate _quadratic_to calls to _cubic_to if the callback isn't defined. + * + * Since: EXPERIMENTAL + **/ +typedef struct hb_draw_funcs_t hb_draw_funcs_t; + +HB_EXTERN void +hb_draw_funcs_set_move_to_func (hb_draw_funcs_t *funcs, + hb_draw_move_to_func_t move_to); + +HB_EXTERN void +hb_draw_funcs_set_line_to_func (hb_draw_funcs_t *funcs, + hb_draw_line_to_func_t line_to); + +HB_EXTERN void +hb_draw_funcs_set_quadratic_to_func (hb_draw_funcs_t *funcs, + hb_draw_quadratic_to_func_t quadratic_to); + +HB_EXTERN void +hb_draw_funcs_set_cubic_to_func (hb_draw_funcs_t *funcs, + hb_draw_cubic_to_func_t cubic_to); + +HB_EXTERN void +hb_draw_funcs_set_close_path_func (hb_draw_funcs_t *funcs, + hb_draw_close_path_func_t close_path); + +HB_EXTERN hb_draw_funcs_t * +hb_draw_funcs_create (void); + +HB_EXTERN hb_draw_funcs_t * +hb_draw_funcs_reference (hb_draw_funcs_t *funcs); + +HB_EXTERN void +hb_draw_funcs_destroy (hb_draw_funcs_t *funcs); + +HB_EXTERN void +hb_draw_funcs_make_immutable (hb_draw_funcs_t *funcs); + +HB_EXTERN hb_bool_t +hb_draw_funcs_is_immutable (hb_draw_funcs_t *funcs); +#endif + +HB_END_DECLS + +#endif /* HB_DRAW_H */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-draw.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-draw.hh new file mode 100644 index 00000000000..2aa0a5b4db4 --- /dev/null +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-draw.hh @@ -0,0 +1,139 @@ +/* + * Copyright © 2020 Ebrahim Byagowi + * + * 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. + */ + +#ifndef HB_DRAW_HH +#define HB_DRAW_HH + +#include "hb.hh" + +#ifdef HB_EXPERIMENTAL_API +struct hb_draw_funcs_t +{ + hb_object_header_t header; + + hb_draw_move_to_func_t move_to; + hb_draw_line_to_func_t line_to; + hb_draw_quadratic_to_func_t quadratic_to; + bool is_quadratic_to_set; + hb_draw_cubic_to_func_t cubic_to; + hb_draw_close_path_func_t close_path; +}; + +struct draw_helper_t +{ + draw_helper_t (const hb_draw_funcs_t *funcs_, void *user_data_) + { + funcs = funcs_; + user_data = user_data_; + path_open = false; + path_start_x = current_x = path_start_y = current_y = 0; + } + ~draw_helper_t () { end_path (); } + + void move_to (hb_position_t x, hb_position_t y) + { + if (path_open) end_path (); + current_x = path_start_x = x; + current_y = path_start_y = y; + } + + void line_to (hb_position_t x, hb_position_t y) + { + if (equal_to_current (x, y)) return; + if (!path_open) start_path (); + funcs->line_to (x, y, user_data); + current_x = x; + current_y = y; + } + + void + quadratic_to (hb_position_t control_x, hb_position_t control_y, + hb_position_t to_x, hb_position_t to_y) + { + if (equal_to_current (control_x, control_y) && equal_to_current (to_x, to_y)) + return; + if (!path_open) start_path (); + if (funcs->is_quadratic_to_set) + funcs->quadratic_to (control_x, control_y, to_x, to_y, user_data); + else + funcs->cubic_to (roundf ((current_x + 2.f * control_x) / 3.f), + roundf ((current_y + 2.f * control_y) / 3.f), + roundf ((to_x + 2.f * control_x) / 3.f), + roundf ((to_y + 2.f * control_y) / 3.f), + to_x, to_y, user_data); + current_x = to_x; + current_y = to_y; + } + + void + cubic_to (hb_position_t control1_x, hb_position_t control1_y, + hb_position_t control2_x, hb_position_t control2_y, + hb_position_t to_x, hb_position_t to_y) + { + if (equal_to_current (control1_x, control1_y) && + equal_to_current (control2_x, control2_y) && + equal_to_current (to_x, to_y)) + return; + if (!path_open) start_path (); + funcs->cubic_to (control1_x, control1_y, control2_x, control2_y, to_x, to_y, user_data); + current_x = to_x; + current_y = to_y; + } + + void end_path () + { + if (path_open) + { + if ((path_start_x != current_x) || (path_start_y != current_y)) + funcs->line_to (path_start_x, path_start_y, user_data); + funcs->close_path (user_data); + } + path_open = false; + path_start_x = current_x = path_start_y = current_y = 0; + } + + protected: + bool equal_to_current (hb_position_t x, hb_position_t y) + { return current_x == x && current_y == y; } + + void start_path () + { + if (path_open) end_path (); + path_open = true; + funcs->move_to (path_start_x, path_start_y, user_data); + } + + hb_position_t path_start_x; + hb_position_t path_start_y; + + hb_position_t current_x; + hb_position_t current_y; + + bool path_open; + const hb_draw_funcs_t *funcs; + void *user_data; +}; +#endif + +#endif /* HB_DRAW_HH */ 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 0c9949fff19..e4d8a3f36ad 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.cc @@ -226,7 +226,7 @@ hb_face_create (hb_blob_t *blob, hb_face_t * hb_face_get_empty () { - return const_cast (&Null(hb_face_t)); + return const_cast (&Null (hb_face_t)); } @@ -546,7 +546,7 @@ void hb_face_collect_unicodes (hb_face_t *face, hb_set_t *out) { - face->table.cmap->collect_unicodes (out); + face->table.cmap->collect_unicodes (out, face->get_num_glyphs ()); } /** * hb_face_collect_variation_selectors: diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.hh index 68834baeb83..f1b472ccf39 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.hh @@ -94,7 +94,7 @@ struct hb_face_t unsigned int get_num_glyphs () const { unsigned int ret = num_glyphs.get_relaxed (); - if (unlikely (ret == (unsigned int) -1)) + if (unlikely (ret == UINT_MAX)) return load_num_glyphs (); return ret; } 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 e89ad697efd..27959487dc9 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.cc @@ -33,6 +33,9 @@ #include "hb-ot.h" +#include "hb-ot-var-avar-table.hh" +#include "hb-ot-var-fvar-table.hh" + /** * SECTION:hb-font @@ -674,7 +677,8 @@ hb_font_funcs_set_##name##_func (hb_font_funcs_t *ffuncs, \ void *user_data, \ hb_destroy_func_t destroy) \ { \ - if (hb_object_is_immutable (ffuncs)) { \ + if (hb_object_is_immutable (ffuncs)) \ + { \ if (destroy) \ destroy (user_data); \ return; \ @@ -1332,6 +1336,7 @@ DEFINE_NULL_INSTANCE (hb_font_t) = 0, /* num_coords */ nullptr, /* coords */ + nullptr, /* design_coords */ const_cast (&_hb_Null_hb_font_funcs_t), @@ -1383,6 +1388,20 @@ hb_font_create (hb_face_t *face) return font; } +static void +_hb_font_adopt_var_coords (hb_font_t *font, + int *coords, /* 2.14 normalized */ + float *design_coords, + unsigned int coords_length) +{ + free (font->coords); + free (font->design_coords); + + font->coords = coords; + font->design_coords = design_coords; + font->num_coords = coords_length; +} + /** * hb_font_create_sub_font: * @parent: parent font. @@ -1413,15 +1432,22 @@ hb_font_create_sub_font (hb_font_t *parent) font->y_ppem = parent->y_ppem; font->ptem = parent->ptem; - font->num_coords = parent->num_coords; - if (font->num_coords) + unsigned int num_coords = parent->num_coords; + if (num_coords) { - unsigned int size = parent->num_coords * sizeof (parent->coords[0]); - font->coords = (int *) malloc (size); - if (unlikely (!font->coords)) - font->num_coords = 0; + int *coords = (int *) calloc (num_coords, sizeof (parent->coords[0])); + float *design_coords = (float *) calloc (num_coords, sizeof (parent->design_coords[0])); + if (likely (coords && design_coords)) + { + memcpy (coords, parent->coords, num_coords * sizeof (parent->coords[0])); + memcpy (design_coords, parent->design_coords, num_coords * sizeof (parent->design_coords[0])); + _hb_font_adopt_var_coords (font, coords, design_coords, num_coords); + } else - memcpy (font->coords, parent->coords, size); + { + free (coords); + free (design_coords); + } } return font; @@ -1439,7 +1465,7 @@ hb_font_create_sub_font (hb_font_t *parent) hb_font_t * hb_font_get_empty () { - return const_cast (&Null(hb_font_t)); + return const_cast (&Null (hb_font_t)); } /** @@ -1481,6 +1507,7 @@ hb_font_destroy (hb_font_t *font) hb_font_funcs_destroy (font->klass); free (font->coords); + free (font->design_coords); free (font); } @@ -1842,17 +1869,6 @@ hb_font_get_ptem (hb_font_t *font) * Variations */ -static void -_hb_font_adopt_var_coords_normalized (hb_font_t *font, - int *coords, /* 2.14 normalized */ - unsigned int coords_length) -{ - free (font->coords); - - font->coords = coords; - font->num_coords = coords_length; -} - /** * hb_font_set_variations: * @@ -1875,13 +1891,30 @@ hb_font_set_variations (hb_font_t *font, unsigned int coords_length = hb_ot_var_get_axis_count (font->face); int *normalized = coords_length ? (int *) calloc (coords_length, sizeof (int)) : nullptr; - if (unlikely (coords_length && !normalized)) + float *design_coords = coords_length ? (float *) calloc (coords_length, sizeof (float)) : nullptr; + + if (unlikely (coords_length && !(normalized && design_coords))) + { + free (normalized); + free (design_coords); return; + } - hb_ot_var_normalize_variations (font->face, - variations, variations_length, - normalized, coords_length); - _hb_font_adopt_var_coords_normalized (font, normalized, coords_length); + const OT::fvar &fvar = *font->face->table.fvar; + for (unsigned int i = 0; i < variations_length; i++) + { + hb_ot_var_axis_info_t info; + if (hb_ot_var_find_axis_info (font->face, variations[i].tag, &info) && + info.axis_index < coords_length) + { + float v = variations[i].value; + design_coords[info.axis_index] = v; + normalized[info.axis_index] = fvar.normalize_axis_value (info.axis_index, v); + } + } + font->face->table.avar->map_coords (normalized, coords_length); + + _hb_font_adopt_var_coords (font, normalized, design_coords, coords_length); } /** @@ -1898,11 +1931,20 @@ hb_font_set_var_coords_design (hb_font_t *font, return; int *normalized = coords_length ? (int *) calloc (coords_length, sizeof (int)) : nullptr; - if (unlikely (coords_length && !normalized)) + float *design_coords = coords_length ? (float *) calloc (coords_length, sizeof (float)) : nullptr; + + if (unlikely (coords_length && !(normalized && design_coords))) + { + free (normalized); + free (design_coords); return; + } + + if (coords_length) + memcpy (design_coords, coords, coords_length * sizeof (font->design_coords[0])); hb_ot_var_normalize_coords (font->face, coords_length, coords, normalized); - _hb_font_adopt_var_coords_normalized (font, normalized, coords_length); + _hb_font_adopt_var_coords (font, normalized, design_coords, coords_length); } /** @@ -1946,13 +1988,30 @@ hb_font_set_var_coords_normalized (hb_font_t *font, return; int *copy = coords_length ? (int *) calloc (coords_length, sizeof (coords[0])) : nullptr; - if (unlikely (coords_length && !copy)) + int *unmapped = coords_length ? (int *) calloc (coords_length, sizeof (coords[0])) : nullptr; + float *design_coords = coords_length ? (float *) calloc (coords_length, sizeof (design_coords[0])) : nullptr; + + if (unlikely (coords_length && !(copy && unmapped && design_coords))) + { + free (copy); + free (unmapped); + free (design_coords); return; + } if (coords_length) + { memcpy (copy, coords, coords_length * sizeof (coords[0])); + memcpy (unmapped, coords, coords_length * sizeof (coords[0])); + } + + /* Best effort design coords simulation */ + font->face->table.avar->unmap_coords (unmapped, coords_length); + for (unsigned int i = 0; i < coords_length; ++i) + design_coords[i] = font->face->table.fvar->unnormalize_axis_value (i, unmapped[i]); + free (unmapped); - _hb_font_adopt_var_coords_normalized (font, copy, coords_length); + _hb_font_adopt_var_coords (font, copy, design_coords, coords_length); } /** @@ -1972,6 +2031,26 @@ hb_font_get_var_coords_normalized (hb_font_t *font, return font->coords; } + +#ifdef HB_EXPERIMENTAL_API +/** + * hb_font_get_var_coords_design: + * + * Return value is valid as long as variation coordinates of the font + * are not modified. + * + * Since: EXPERIMENTAL + */ +const float * +hb_font_get_var_coords_design (hb_font_t *font, + unsigned int *length) +{ + if (length) + *length = font->num_coords; + + return font->design_coords; +} +#endif #endif #ifndef HB_DISABLE_DEPRECATED @@ -2076,6 +2155,13 @@ 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) { + if (hb_object_is_immutable (ffuncs)) + { + if (destroy) + destroy (user_data); + return; + } + hb_font_get_glyph_trampoline_t *trampoline; trampoline = trampoline_create (func, user_data, destroy); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.h index 01ff201aeec..e1a5719f1dd 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.h +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.h @@ -33,6 +33,7 @@ #include "hb-common.h" #include "hb-face.h" +#include "hb-draw.h" HB_BEGIN_DECLS @@ -704,6 +705,12 @@ hb_font_set_var_coords_design (hb_font_t *font, const float *coords, unsigned int coords_length); +#ifdef HB_EXPERIMENTAL_API +HB_EXTERN const float * +hb_font_get_var_coords_design (hb_font_t *font, + unsigned int *length); +#endif + HB_EXTERN void hb_font_set_var_coords_normalized (hb_font_t *font, const int *coords, /* 2.14 normalized */ @@ -717,6 +724,12 @@ HB_EXTERN void hb_font_set_var_named_instance (hb_font_t *font, unsigned instance_index); +#ifdef HB_EXPERIMENTAL_API +HB_EXTERN hb_bool_t +hb_font_draw_glyph (hb_font_t *font, hb_codepoint_t glyph, + const hb_draw_funcs_t *funcs, void *user_data); +#endif + HB_END_DECLS #endif /* HB_FONT_H */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.hh index b1e8e6440cc..12982fc6b49 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.hh @@ -120,6 +120,7 @@ struct hb_font_t /* Font variation coordinates. */ unsigned int num_coords; int *coords; + float *design_coords; hb_font_funcs_t *klass; void *user_data; @@ -286,7 +287,7 @@ struct hb_font_t } hb_bool_t get_glyph_h_origin (hb_codepoint_t glyph, - hb_position_t *x, hb_position_t *y) + hb_position_t *x, hb_position_t *y) { *x = *y = 0; return klass->get.f.glyph_h_origin (this, user_data, 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 e526bf40d56..b18b990b975 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc @@ -48,8 +48,13 @@ * @short_description: FreeType integration * @include: hb-ft.h * - * Functions for using HarfBuzz with the FreeType library to provide face and + * Functions for using HarfBuzz with the FreeType library. + * + * HarfBuzz supports using FreeType to provide face and * font data. + * + * Note that FreeType is not thread-safe, therefore these + * functions are not thread-safe either. **/ @@ -127,10 +132,13 @@ _hb_ft_font_destroy (void *data) /** * hb_ft_font_set_load_flags: - * @font: - * @load_flags: + * @font: #hb_font_t to work upon + * @load_flags: The FreeType load flags to set * + * Sets the FT_Load_Glyph load flags for the specified #hb_font_t. * + * For more information, see + * https://www.freetype.org/freetype2/docs/reference/ft2-base_interface.html#ft_load_xxx * * Since: 1.0.5 **/ @@ -140,7 +148,7 @@ hb_ft_font_set_load_flags (hb_font_t *font, int load_flags) if (hb_object_is_immutable (font)) return; - if (font->destroy != (hb_destroy_func_t) _hb_ft_font_destroy) + if (unlikely (font->destroy != (hb_destroy_func_t) _hb_ft_font_destroy)) return; hb_ft_font_t *ft_font = (hb_ft_font_t *) font->user_data; @@ -150,17 +158,21 @@ hb_ft_font_set_load_flags (hb_font_t *font, int load_flags) /** * hb_ft_font_get_load_flags: - * @font: + * @font: #hb_font_t to work upon * + * Fetches the FT_Load_Glyph load flags of the specified #hb_font_t. * + * For more information, see + * https://www.freetype.org/freetype2/docs/reference/ft2-base_interface.html#ft_load_xxx + * + * Return value: FT_Load_Glyph flags found * - * Return value: * Since: 1.0.5 **/ int hb_ft_font_get_load_flags (hb_font_t *font) { - if (font->destroy != (hb_destroy_func_t) _hb_ft_font_destroy) + if (unlikely (font->destroy != (hb_destroy_func_t) _hb_ft_font_destroy)) return 0; const hb_ft_font_t *ft_font = (const hb_ft_font_t *) font->user_data; @@ -168,10 +180,21 @@ hb_ft_font_get_load_flags (hb_font_t *font) return ft_font->load_flags; } +/** + * hb_ft_get_face: + * @font: #hb_font_t to work upon + * + * Fetches the FT_Face associated with the specified #hb_font_t + * font object. + * + * Return value: the FT_Face found + * + * Since: 0.9.2 + **/ FT_Face hb_ft_font_get_face (hb_font_t *font) { - if (font->destroy != (hb_destroy_func_t) _hb_ft_font_destroy) + if (unlikely (font->destroy != (hb_destroy_func_t) _hb_ft_font_destroy)) return nullptr; const hb_ft_font_t *ft_font = (const hb_ft_font_t *) font->user_data; @@ -179,6 +202,47 @@ hb_ft_font_get_face (hb_font_t *font) return ft_font->ft_face; } +/** + * hb_ft_font_lock_face: + * @font: + * + * + * + * Return value: + * Since: 2.6.5 + **/ +FT_Face +hb_ft_font_lock_face (hb_font_t *font) +{ + if (unlikely (font->destroy != (hb_destroy_func_t) _hb_ft_font_destroy)) + return nullptr; + + const hb_ft_font_t *ft_font = (const hb_ft_font_t *) font->user_data; + + ft_font->lock.lock (); + + return ft_font->ft_face; +} + +/** + * hb_ft_font_unlock_face: + * @font: + * + * + * + * Return value: + * Since: 2.6.5 + **/ +void +hb_ft_font_unlock_face (hb_font_t *font) +{ + if (unlikely (font->destroy != (hb_destroy_func_t) _hb_ft_font_destroy)) + return; + + const hb_ft_font_t *ft_font = (const hb_ft_font_t *) font->user_data; + + ft_font->lock.unlock (); +} static hb_bool_t @@ -595,12 +659,22 @@ _hb_ft_reference_table (hb_face_t *face HB_UNUSED, hb_tag_t tag, void *user_data /** * hb_ft_face_create: - * @ft_face: (destroy destroy) (scope notified): - * @destroy: + * @ft_face: (destroy destroy) (scope notified): FT_Face to work upon + * @destroy: A callback to call when the face object is not needed anymore + * + * Creates an #hb_face_t face object from the specified FT_Face. + * + * This variant of the function does not provide any life-cycle management. * + * Most client programs should use hb_ft_face_create_referenced() + * (or, perhaps, hb_ft_face_create_cached()) instead. * + * If you know you have valid reasons not to use hb_ft_face_create_referenced(), + * then it is the client program's responsibility to destroy @ft_face + * after the #hb_face_t face object has been destroyed. + * + * Return value: (transfer full): the new #hb_face_t face object * - * Return value: (transfer full): * Since: 0.9.2 **/ hb_face_t * @@ -630,11 +704,20 @@ hb_ft_face_create (FT_Face ft_face, /** * hb_ft_face_create_referenced: - * @ft_face: + * @ft_face: FT_Face to work upon + * + * Creates an #hb_face_t face object from the specified FT_Face. + * + * This is the preferred variant of the hb_ft_face_create* + * function family, because it calls FT_Reference_Face() on @ft_face, + * ensuring that @ft_face remains alive as long as the resulting + * #hb_face_t face object remains alive. Also calls FT_Done_Face() + * when the #hb_face_t face object is destroyed. * + * Use this version unless you know you have good reasons not to. * + * Return value: (transfer full): the new #hb_face_t face object * - * Return value: (transfer full): * Since: 0.9.38 **/ hb_face_t * @@ -652,11 +735,21 @@ hb_ft_face_finalize (FT_Face ft_face) /** * hb_ft_face_create_cached: - * @ft_face: + * @ft_face: FT_Face to work upon + * + * Creates an #hb_face_t face object from the specified FT_Face. + * + * This variant of the function caches the newly created #hb_face_t + * face object, using the @generic pointer of @ft_face. Subsequent function + * calls that are passed the same @ft_face parameter will have the same + * #hb_face_t returned to them, and that #hb_face_t will be correctly + * reference counted. * + * However, client programs are still responsible for destroying + * @ft_face after the last #hb_face_t face object has been destroyed. * + * Return value: (transfer full): the new #hb_face_t face object * - * Return value: (transfer full): * Since: 0.9.2 **/ hb_face_t * @@ -674,15 +767,34 @@ hb_ft_face_create_cached (FT_Face ft_face) return hb_face_reference ((hb_face_t *) ft_face->generic.data); } - /** * hb_ft_font_create: - * @ft_face: (destroy destroy) (scope notified): - * @destroy: + * @ft_face: (destroy destroy) (scope notified): FT_Face to work upon + * @destroy: (optional): A callback to call when the font object is not needed anymore + * + * Creates an #hb_font_t font object from the specified FT_Face. + * + * Note: You must set the face size on @ft_face before calling + * hb_ft_font_create() on it. Otherwise, HarfBuzz will not pick up + * the face size. + * + * This variant of the function does not provide any life-cycle management. * + * Most client programs should use hb_ft_font_create_referenced() + * instead. * + * If you know you have valid reasons not to use hb_ft_font_create_referenced(), + * then it is the client program's responsibility to destroy @ft_face + * after the #hb_font_t font object has been destroyed. + * + * HarfBuzz will use the @destroy callback on the #hb_font_t font object + * if it is supplied when you use this function. However, even if @destroy + * is provided, it is the client program's responsibility to destroy @ft_face, + * and it is the client program's responsibility to ensure that @ft_face is + * destroyed only after the #hb_font_t font object has been destroyed. + * + * Return value: (transfer full): the new #hb_font_t font object * - * Return value: (transfer full): * Since: 0.9.2 **/ hb_font_t * @@ -700,6 +812,16 @@ hb_ft_font_create (FT_Face ft_face, return font; } +/** + * hb_ft_font_has_changed: + * @font: #hb_font_t to work upon + * + * Refreshes the state of @font when the underlying FT_Face has changed. + * This function should be called after changing the size or + * variation-axis settings on the FT_Face. + * + * Since: 1.0.5 + **/ void hb_ft_font_changed (hb_font_t *font) { @@ -718,7 +840,7 @@ hb_ft_font_changed (hb_font_t *font) ft_face->size->metrics.y_ppem); #endif -#ifdef HAVE_FT_GET_VAR_BLEND_COORDINATES +#if defined(HAVE_FT_GET_VAR_BLEND_COORDINATES) && !defined(HB_NO_VAR) FT_MM_Var *mm_var = nullptr; if (!FT_Get_MM_Var (ft_face, &mm_var)) { @@ -755,11 +877,23 @@ hb_ft_font_changed (hb_font_t *font) /** * hb_ft_font_create_referenced: - * @ft_face: + * @ft_face: FT_Face to work upon + * + * Creates an #hb_font_t font object from the specified FT_Face. + * + * Note: You must set the face size on @ft_face before calling + * hb_ft_font_create_references() on it. Otherwise, HarfBuzz will not pick up + * the face size. * + * This is the preferred variant of the hb_ft_font_create* + * function family, because it calls FT_Reference_Face() on @ft_face, + * ensuring that @ft_face remains alive as long as the resulting + * #hb_font_t font object remains alive. * + * Use this version unless you know you have good reasons not to. + * + * Return value: (transfer full): the new #hb_font_t font object * - * Return value: (transfer full): * Since: 0.9.38 **/ hb_font_t * @@ -818,6 +952,28 @@ _release_blob (FT_Face ft_face) hb_blob_destroy ((hb_blob_t *) ft_face->generic.data); } +/** + * hb_ft_font_set_funcs: + * @font: #hb_font_t to work upon + * + * Configures the font-functions structure of the specified + * #hb_font_t font object to use FreeType font functions. + * + * In particular, you can use this function to configure an + * existing #hb_face_t face object for use with FreeType font + * functions even if that #hb_face_t face object was initially + * created with hb_face_create(), and therefore was not + * initially configured to use FreeType font functions. + * + * An #hb_face_t face object created with hb_ft_face_create() + * is preconfigured for FreeType font functions and does not + * require this function to be used. + * + * Note: Internally, this function creates an FT_Face. +* + * + * Since: 1.0.5 + **/ void hb_ft_font_set_funcs (hb_font_t *font) { @@ -857,7 +1013,7 @@ hb_ft_font_set_funcs (hb_font_t *font) FT_Set_Transform (ft_face, &matrix, nullptr); } -#ifdef HAVE_FT_SET_VAR_BLEND_COORDINATES +#if defined(HAVE_FT_GET_VAR_BLEND_COORDINATES) && !defined(HB_NO_VAR) unsigned int num_coords; const int *coords = hb_font_get_var_coords_normalized (font, &num_coords); if (num_coords) diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.h index 94013eeb915..bf07115ab92 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.h +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.h @@ -110,6 +110,12 @@ hb_ft_font_create_referenced (FT_Face ft_face); HB_EXTERN FT_Face hb_ft_font_get_face (hb_font_t *font); +HB_EXTERN FT_Face +hb_ft_font_lock_face (hb_font_t *font); + +HB_EXTERN void +hb_ft_font_unlock_face (hb_font_t *font); + HB_EXTERN void hb_ft_font_set_load_flags (hb_font_t *font, int load_flags); 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 db02b6760e3..058f65ae69c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-glib.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-glib.cc @@ -41,7 +41,11 @@ * @short_description: GLib integration * @include: hb-glib.h * - * Functions for using HarfBuzz with the GLib library to provide Unicode data. + * Functions for using HarfBuzz with the GLib library. + * + * HarfBuzz supports using GLib to provide Unicode data, by attaching + * GLib functions to the virtual methods in a #hb_unicode_funcs_t function + * structure. **/ @@ -169,6 +173,17 @@ glib_script_to_script[] = }; #endif +/** + * hb_glib_script_to_script: + * @script: The GUnicodeScript identifier to query + * + * Fetches the #hb_script_t script that corresponds to the + * specified GUnicodeScript identifier. + * + * Return value: the #hb_script_t script found + * + * Since: 0.9.38 + **/ hb_script_t hb_glib_script_to_script (GUnicodeScript script) { @@ -185,6 +200,17 @@ hb_glib_script_to_script (GUnicodeScript script) #endif } +/** + * hb_glib_script_from_script: + * @script: The #hb_script_t to query + * + * Fetches the GUnicodeScript identifier that corresponds to the + * specified #hb_script_t script. + * + * Return value: the GUnicodeScript identifier found + * + * Since: 0.9.38 + **/ GUnicodeScript hb_glib_script_from_script (hb_script_t script) { @@ -373,6 +399,16 @@ void free_static_glib_funcs () } #endif +/** + * hb_glib_get_unicode_funcs: + * + * Fetches a Unicode-functions structure that is populated + * with the appropriate GLib function for each method. + * + * Return value: (transfer none): a pointer to the #hb_unicode_funcs_t Unicode-functions structure + * + * Since: 0.9.38 + **/ hb_unicode_funcs_t * hb_glib_get_unicode_funcs () { @@ -391,6 +427,12 @@ _hb_g_bytes_unref (void *data) /** * hb_glib_blob_create: + * @gbytes: the GBytes structure to work upon + * + * Creates an #hb_blob_t blob from the specified + * GBytes data structure. + * + * Return value: (transfer full): the new #hb_blob_t blob object * * Since: 0.9.38 **/ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gobject-enums.cc.tmpl b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gobject-enums.cc.tmpl index 17f1adeb1dc..2ffd1c9d7bb 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gobject-enums.cc.tmpl +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gobject-enums.cc.tmpl @@ -1,6 +1,6 @@ /*** BEGIN file-header ***/ /* - * Copyright © 2011 Google, Inc. + * Copyright (C) 2011 Google, Inc. * * This is part of HarfBuzz, a text shaping library. * diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gobject-enums.h.tmpl b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gobject-enums.h.tmpl index 7ef9dfc0295..f8bd29e5401 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gobject-enums.h.tmpl +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gobject-enums.h.tmpl @@ -1,6 +1,6 @@ /*** BEGIN file-header ***/ /* - * Copyright © 2013 Google, Inc. + * Copyright (C) 2013 Google, Inc. * * This is part of HarfBuzz, a text shaping library. * 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 7f4922ef192..7c46e264007 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 @@ -32,11 +32,20 @@ /** * SECTION:hb-gobject * @title: hb-gobject - * @short_description: GObject integration + * @short_description: GObject integration support * @include: hb-gobject.h * - * Functions for using HarfBuzz with the GObject library to provide + * Support for using HarfBuzz with the GObject library to provide * type data. + * + * The types and functions listed here are solely a linkage between + * HarfBuzz's public data types and the GTypes used by the GObject framework. + * HarfBuzz uses GObject introspection to generate its Python bindings + * (and potentially other language bindings); client programs should never need + * to access the GObject-integration mechanics. + * + * For client programs using the GNOME and GTK software stack, please see the + * GLib and FreeType integration pages. **/ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gobject-structs.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gobject-structs.h index 800beede0f1..6fad8d70194 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gobject-structs.h +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gobject-structs.h @@ -1,5 +1,5 @@ /* - * Copyright © 2011 Google, Inc. + * Copyright (C) 2011 Google, Inc. * * This is part of HarfBuzz, a text shaping library. * diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gobject.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gobject.h index ea1bd25df82..8891aa0ee79 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gobject.h +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gobject.h @@ -1,5 +1,5 @@ /* - * Copyright © 2011 Google, Inc. + * Copyright (C) 2011 Google, Inc. * * This is part of HarfBuzz, a text shaping library. * 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 f0f2f8c7361..d8a72dc2f18 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-graphite2.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-graphite2.cc @@ -45,7 +45,11 @@ * @short_description: Graphite2 integration * @include: hb-graphite2.h * - * Functions for using HarfBuzz with the Graphite2 fonts. + * Functions for using HarfBuzz with fonts that include Graphite features. + * + * For Graphite features to work, you must be sure that HarfBuzz was compiled + * with the `graphite2` shaping engine enabled. Currently, the default is to + * not enable `graphite2` shaping. **/ @@ -152,7 +156,15 @@ _hb_graphite2_shaper_face_data_destroy (hb_graphite2_face_data_t *data) free (data); } -/* +/** + * hb_graphite2_face_get_gr_face: + * @face: @hb_face_t to query + * + * Fetches the Graphite2 gr_face corresponding to the specified + * #hb_face_t face object. + * + * Return value: the gr_face found + * * Since: 0.9.10 */ gr_face * @@ -376,7 +388,7 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan HB_UNUSED, buffer->len = glyph_count; /* Positioning. */ - unsigned int currclus = (unsigned int) -1; + unsigned int currclus = UINT_MAX; const hb_glyph_info_t *info = buffer->info; hb_glyph_position_t *pPos = hb_buffer_get_glyph_positions (buffer, nullptr); if (!HB_DIRECTION_IS_BACKWARD(buffer->props.direction)) diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-graphite2.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-graphite2.h index 1720191b42f..f299da9f71c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-graphite2.h +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-graphite2.h @@ -32,7 +32,15 @@ HB_BEGIN_DECLS - +/** + * HB_GRAPHITE2_TAG_SILF: + * + * The #hb_tag_t tag for the `Silf` table, which holds Graphite + * features. + * + * For more information, see http://graphite.sil.org/ + * + **/ #define HB_GRAPHITE2_TAG_SILF HB_TAG('S','i','l','f') 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 985ff02dcdf..c1dcc24c26e 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-icu.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-icu.cc @@ -54,7 +54,21 @@ * @short_description: ICU integration * @include: hb-icu.h * - * Functions for using HarfBuzz with the ICU library to provide Unicode data. + * Functions for using HarfBuzz with the International Components for Unicode + * (ICU) library. HarfBuzz supports using ICU to provide Unicode data, by attaching + * ICU functions to the virtual methods in a #hb_unicode_funcs_t function + * structure. + **/ + +/** + * hb_icu_script_to_script: + * @script: The UScriptCode identifier to query + * + * Fetches the #hb_script_t script that corresponds to the + * specified UScriptCode identifier. + * + * Return value: the #hb_script_t script found + * **/ hb_script_t @@ -66,6 +80,16 @@ hb_icu_script_to_script (UScriptCode script) return hb_script_from_string (uscript_getShortName (script), -1); } +/** + * hb_icu_script_from_script: + * @script: The #hb_script_t script to query + * + * Fetches the UScriptCode identifier that corresponds to the + * specified #hb_script_t script. + * + * Return value: the UScriptCode identifier found + * + **/ UScriptCode hb_icu_script_from_script (hb_script_t script) { @@ -350,6 +374,16 @@ void free_static_icu_funcs () } #endif +/** + * hb_icu_get_unicode_funcs: + * + * Fetches a Unicode-functions structure that is populated + * with the appropriate ICU function for each method. + * + * Return value: (transfer none): a pointer to the #hb_unicode_funcs_t Unicode-functions structure + * + * Since: 0.9.38 + **/ hb_unicode_funcs_t * hb_icu_get_unicode_funcs () { diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-kern.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-kern.hh index 99d533c045c..3f952fe7fce 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-kern.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-kern.hh @@ -52,8 +52,7 @@ struct hb_kern_machine_t OT::hb_ot_apply_context_t c (1, font, buffer); c.set_lookup_mask (kern_mask); c.set_lookup_props (OT::LookupFlag::IgnoreMarks); - OT::hb_ot_apply_context_t::skipping_iterator_t &skippy_iter = c.iter_input; - skippy_iter.init (&c); + auto &skippy_iter = c.iter_input; bool horizontal = HB_DIRECTION_IS_HORIZONTAL (buffer->props.direction); unsigned int count = buffer->len; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-machinery.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-machinery.hh index 15535d75bd4..54bc60d4c8b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-machinery.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-machinery.hh @@ -41,22 +41,6 @@ * Casts */ -/* Cast to struct T, reference to reference */ -template -static inline const Type& CastR(const TObject &X) -{ return reinterpret_cast (X); } -template -static inline Type& CastR(TObject &X) -{ return reinterpret_cast (X); } - -/* Cast to struct T, pointer to pointer */ -template -static inline const Type* CastP(const TObject *X) -{ return reinterpret_cast (X); } -template -static inline Type* CastP(TObject *X) -{ return reinterpret_cast (X); } - /* StructAtOffset(P,Ofs) returns the struct T& that is placed at memory * location pointed to by P plus Ofs bytes. */ template @@ -70,7 +54,7 @@ static inline const Type& StructAtOffsetUnaligned(const void *P, unsigned int of { #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wcast-align" - return * reinterpret_cast ((char *) P + offset); + return * reinterpret_cast ((const char *) P + offset); #pragma GCC diagnostic pop } template @@ -135,7 +119,7 @@ static inline Type& StructAfter(TObject &X) #define DEFINE_SIZE_ARRAY(size, array) \ DEFINE_COMPILES_ASSERTION ((void) (array)[0].static_size) \ - DEFINE_INSTANCE_ASSERTION (sizeof (*this) == (size) + HB_VAR_ARRAY * sizeof ((array)[0])) \ + DEFINE_INSTANCE_ASSERTION (sizeof (*this) == (size) + (HB_VAR_ARRAY+0) * sizeof ((array)[0])) \ static constexpr unsigned null_size = (size); \ static constexpr unsigned min_size = (size) @@ -250,7 +234,7 @@ struct hb_lazy_loader_t : hb_data_wrapper_t static Returned* convert (Stored *p) { return p; } /* By default null/init/fini the object. */ - static const Stored* get_null () { return &Null(Stored); } + static const Stored* get_null () { return &Null (Stored); } static Stored *create (Data *data) { Stored *p = (Stored *) calloc (1, sizeof (Stored)); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-map.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-map.cc index a2c770c586d..191be143727 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-map.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-map.cc @@ -69,7 +69,7 @@ hb_map_create () hb_map_t * hb_map_get_empty () { - return const_cast (&Null(hb_map_t)); + return const_cast (&Null (hb_map_t)); } /** diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-map.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-map.hh index 8c8db4d520b..b7bf7fe59d1 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-map.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-map.hh @@ -135,8 +135,8 @@ struct hb_hashmap_t for (unsigned int i = 0; i < old_size; i++) if (old_items[i].is_real ()) set_with_hash (old_items[i].key, - old_items[i].hash, - old_items[i].value); + old_items[i].hash, + old_items[i].value); free (old_items); @@ -211,7 +211,7 @@ struct hb_hashmap_t ) /* Sink interface. */ - hb_hashmap_t& operator << (const hb_pair_t& v) + hb_hashmap_t& operator << (const hb_pair_t& v) { set (v.first, v.second); return *this; } protected: diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-meta.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-meta.hh index 2dfaeb7b464..c08b191f1fd 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-meta.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-meta.hh @@ -396,5 +396,16 @@ using hb_is_trivial= hb_bool_constant< >; #define hb_is_trivial(T) hb_is_trivial::value +/* hb_unwrap_type (T) + * If T has no T::type, returns T. Otherwise calls itself on T::type recursively. + */ + +template +struct _hb_unwrap_type : hb_type_identity_t {}; +template +struct _hb_unwrap_type> : _hb_unwrap_type {}; +template +using hb_unwrap_type = _hb_unwrap_type; +#define hb_unwrap_type(T) typename hb_unwrap_type::type #endif /* HB_META_HH */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-null.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-null.hh index d4578205e33..9853939b077 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-null.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-null.hh @@ -104,7 +104,7 @@ struct NullHelper } \ }; \ namespace Namespace { \ - static_assert (true, "Just so we take semicolon after.") + static_assert (true, "") /* Require semicolon after. */ #define DEFINE_NULL_NAMESPACE_BYTES(Namespace, Type) \ const unsigned char _hb_Null_##Namespace##_##Type[Namespace::Type::null_size] @@ -117,7 +117,7 @@ struct NullHelper return _hb_Null_##Type; \ } \ }; \ - static_assert (true, "Just so we take semicolon after.") + static_assert (true, "") /* Require semicolon after. */ #define DEFINE_NULL_INSTANCE(Type) \ const Type _hb_Null_##Type @@ -135,7 +135,7 @@ template static inline Type& Crap () { static_assert (hb_null_size (Type) <= HB_NULL_POOL_SIZE, "Increase HB_NULL_POOL_SIZE."); Type *obj = reinterpret_cast (_hb_CrapPool); - memcpy (obj, &Null(Type), sizeof (*obj)); + memcpy (obj, &Null (Type), sizeof (*obj)); return *obj; } template @@ -148,11 +148,11 @@ struct CrapHelper template struct CrapOrNullHelper { - static Type & get () { return Crap(Type); } + static Type & get () { return Crap (Type); } }; template struct CrapOrNullHelper { - static const Type & get () { return Null(Type); } + static const Type & get () { return Null (Type); } }; #define CrapOrNull(Type) CrapOrNullHelper::get () @@ -174,7 +174,7 @@ struct hb_nonnull_ptr_t /* Only auto-cast to const types. */ template operator const C * () const { return get (); } operator const char * () const { return (const char *) get (); } - T * get () const { return v ? v : const_cast (&Null(T)); } + T * get () const { return v ? v : const_cast (&Null (T)); } T * get_raw () const { return v; } T *v; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-number-parser.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-number-parser.hh index c78c85097e1..1a9dbba6dd3 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-number-parser.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-number-parser.hh @@ -30,10 +30,8 @@ #include "hb.hh" -#include - -#line 37 "hb-number-parser.hh" +#line 35 "hb-number-parser.hh" static const unsigned char _double_parser_trans_keys[] = { 0u, 0u, 43u, 57u, 46u, 57u, 48u, 57u, 43u, 57u, 48u, 57u, 48u, 101u, 48u, 57u, 46u, 101u, 0 @@ -93,12 +91,12 @@ static const int double_parser_error = 0; static const int double_parser_en_main = 1; -#line 70 "hb-number-parser.rl" +#line 68 "hb-number-parser.rl" /* Works only for n < 512 */ static inline double -_pow10 (unsigned int exponent) +_pow10 (unsigned exponent) { static const double _powers_of_10[] = { @@ -112,38 +110,37 @@ _pow10 (unsigned int exponent) 100., 10. }; - unsigned int mask = 1 << (ARRAY_LENGTH (_powers_of_10) - 1); + unsigned mask = 1 << (ARRAY_LENGTH (_powers_of_10) - 1); double result = 1; for (const double *power = _powers_of_10; mask; ++power, mask >>= 1) if (exponent & mask) result *= *power; return result; } +/* a variant of strtod that also gets end of buffer in its second argument */ static inline double -strtod_rl (const char *buf, char **end_ptr) +strtod_rl (const char *p, const char **end_ptr /* IN/OUT */) { - const char *p, *pe; double value = 0; double frac = 0; double frac_count = 0; - unsigned int exp = 0; + unsigned exp = 0; bool neg = false, exp_neg = false, exp_overflow = false; - const unsigned long long MAX_FRACT = 0xFFFFFFFFFFFFFull; /* 1^52-1 */ - const unsigned int MAX_EXP = 0x7FFu; /* 1^11-1 */ - p = buf; - pe = p + strlen (p); + const unsigned long long MAX_FRACT = 0xFFFFFFFFFFFFFull; /* 2^52-1 */ + const unsigned MAX_EXP = 0x7FFu; /* 2^11-1 */ + const char *pe = *end_ptr; while (p < pe && ISSPACE (*p)) p++; int cs; -#line 142 "hb-number-parser.hh" +#line 139 "hb-number-parser.hh" { cs = double_parser_start; } -#line 147 "hb-number-parser.hh" +#line 144 "hb-number-parser.hh" { int _slen; int _trans; @@ -169,21 +166,21 @@ _resume: switch ( _double_parser_trans_actions[_trans] ) { case 1: -#line 39 "hb-number-parser.rl" +#line 37 "hb-number-parser.rl" { neg = true; } break; case 4: -#line 40 "hb-number-parser.rl" +#line 38 "hb-number-parser.rl" { exp_neg = true; } break; case 2: -#line 42 "hb-number-parser.rl" +#line 40 "hb-number-parser.rl" { value = value * 10. + ((*p) - '0'); } break; case 3: -#line 45 "hb-number-parser.rl" +#line 43 "hb-number-parser.rl" { if (likely (frac <= MAX_FRACT / 10)) { @@ -193,7 +190,7 @@ _resume: } break; case 5: -#line 52 "hb-number-parser.rl" +#line 50 "hb-number-parser.rl" { if (likely (exp * 10 + ((*p) - '0') <= MAX_EXP)) exp = exp * 10 + ((*p) - '0'); @@ -201,7 +198,7 @@ _resume: exp_overflow = true; } break; -#line 205 "hb-number-parser.hh" +#line 202 "hb-number-parser.hh" } _again: @@ -213,10 +210,10 @@ _again: _out: {} } -#line 116 "hb-number-parser.rl" +#line 113 "hb-number-parser.rl" - *end_ptr = (char *) p; + *end_ptr = p; if (frac_count) value += frac / _pow10 (frac_count); if (neg) value *= -1.; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-number-parser.rl b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-number-parser.rl index 8445fa22a13..c6c4a3bab88 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-number-parser.rl +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-number-parser.rl @@ -28,8 +28,6 @@ #include "hb.hh" -#include - %%{ machine double_parser; @@ -71,7 +69,7 @@ main := ( /* Works only for n < 512 */ static inline double -_pow10 (unsigned int exponent) +_pow10 (unsigned exponent) { static const double _powers_of_10[] = { @@ -85,27 +83,26 @@ _pow10 (unsigned int exponent) 100., 10. }; - unsigned int mask = 1 << (ARRAY_LENGTH (_powers_of_10) - 1); + unsigned mask = 1 << (ARRAY_LENGTH (_powers_of_10) - 1); double result = 1; for (const double *power = _powers_of_10; mask; ++power, mask >>= 1) if (exponent & mask) result *= *power; return result; } +/* a variant of strtod that also gets end of buffer in its second argument */ static inline double -strtod_rl (const char *buf, char **end_ptr) +strtod_rl (const char *p, const char **end_ptr /* IN/OUT */) { - const char *p, *pe; double value = 0; double frac = 0; double frac_count = 0; - unsigned int exp = 0; + unsigned exp = 0; bool neg = false, exp_neg = false, exp_overflow = false; - const unsigned long long MAX_FRACT = 0xFFFFFFFFFFFFFull; /* 1^52-1 */ - const unsigned int MAX_EXP = 0x7FFu; /* 1^11-1 */ - p = buf; - pe = p + strlen (p); + const unsigned long long MAX_FRACT = 0xFFFFFFFFFFFFFull; /* 2^52-1 */ + const unsigned MAX_EXP = 0x7FFu; /* 2^11-1 */ + const char *pe = *end_ptr; while (p < pe && ISSPACE (*p)) p++; @@ -115,7 +112,7 @@ strtod_rl (const char *buf, char **end_ptr) write exec; }%% - *end_ptr = (char *) p; + *end_ptr = p; if (frac_count) value += frac / _pow10 (frac_count); if (neg) value *= -1.; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-number.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-number.cc index 4f84d4ad5cd..6e4f3f7ebd0 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-number.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-number.cc @@ -25,21 +25,16 @@ #include "hb.hh" #include "hb-machinery.hh" +#include "hb-number.hh" #include "hb-number-parser.hh" -#include -#ifdef HAVE_XLOCALE_H -#include -#endif - template static bool _parse_number (const char **pp, const char *end, T *pv, bool whole_buffer, Func f) { char buf[32]; - unsigned int len = hb_min (ARRAY_LENGTH (buf) - 1, - (unsigned int) (end - *pp)); + unsigned len = hb_min (ARRAY_LENGTH (buf) - 1, (unsigned) (end - *pp)); strncpy (buf, *pp, len); buf[len] = '\0'; @@ -50,7 +45,8 @@ _parse_number (const char **pp, const char *end, T *pv, *pv = f (p, &pend); if (unlikely (errno || p == pend || /* Check if consumed whole buffer if is requested */ - (whole_buffer && pend - p != end - *pp))) return false; + (whole_buffer && pend - p != end - *pp))) + return false; *pp += pend - p; return true; @@ -65,83 +61,20 @@ hb_parse_int (const char **pp, const char *end, int *pv, bool whole_buffer) } bool -hb_parse_uint (const char **pp, const char *end, unsigned int *pv, +hb_parse_uint (const char **pp, const char *end, unsigned *pv, bool whole_buffer, int base) { - return _parse_number (pp, end, pv, whole_buffer, - [base] (const char *p, char **end) - { return strtoul (p, end, base); }); -} - - -#if defined (HAVE_NEWLOCALE) && defined (HAVE_STRTOD_L) -#define USE_XLOCALE 1 -#define HB_LOCALE_T locale_t -#define HB_CREATE_LOCALE(locName) newlocale (LC_ALL_MASK, locName, nullptr) -#define HB_FREE_LOCALE(loc) freelocale (loc) -#elif defined(_MSC_VER) -#define USE_XLOCALE 1 -#define HB_LOCALE_T _locale_t -#define HB_CREATE_LOCALE(locName) _create_locale (LC_ALL, locName) -#define HB_FREE_LOCALE(loc) _free_locale (loc) -#define strtod_l(a, b, c) _strtod_l ((a), (b), (c)) -#endif - -#ifdef USE_XLOCALE - -#if HB_USE_ATEXIT -static void free_static_C_locale (); -#endif - -static struct hb_C_locale_lazy_loader_t : hb_lazy_loader_t, - hb_C_locale_lazy_loader_t> -{ - static HB_LOCALE_T create () - { - HB_LOCALE_T C_locale = HB_CREATE_LOCALE ("C"); - -#if HB_USE_ATEXIT - atexit (free_static_C_locale); -#endif - - return C_locale; - } - static void destroy (HB_LOCALE_T p) - { - HB_FREE_LOCALE (p); - } - static HB_LOCALE_T get_null () - { - return nullptr; - } -} static_C_locale; - -#if HB_USE_ATEXIT -static -void free_static_C_locale () -{ - static_C_locale.free_instance (); -} -#endif - -static HB_LOCALE_T -get_C_locale () -{ - return static_C_locale.get_unconst (); + return _parse_number (pp, end, pv, whole_buffer, + [base] (const char *p, char **end) + { return strtoul (p, end, base); }); } -#endif /* USE_XLOCALE */ bool -hb_parse_double (const char **pp, const char *end, double *pv, - bool whole_buffer) +hb_parse_double (const char **pp, const char *end, double *pv, bool whole_buffer) { - return _parse_number (pp, end, pv, whole_buffer, - [] (const char *p, char **end) - { -#ifdef USE_XLOCALE - return strtod_l (p, end, get_C_locale ()); -#else - return strtod_rl (p, end); -#endif - }); + const char *pend = end; + *pv = strtod_rl (*pp, &pend); + if (unlikely (*pp == pend)) return false; + *pp = pend; + return !whole_buffer || end == pend; } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-file.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-file.hh index cb1fdf1c998..2f01ce91e98 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-file.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-file.hh @@ -249,7 +249,7 @@ struct TTCHeader switch (u.header.version.major) { case 2: /* version 2 is compatible with version 1 */ case 1: return u.version1.get_face (i); - default:return Null(OpenTypeFontFace); + default:return Null (OpenTypeFontFace); } } @@ -284,7 +284,7 @@ struct TTCHeader struct ResourceRecord { const OpenTypeFontFace & get_face (const void *data_base) const - { return CastR ((data_base+offset).arrayZ); } + { return * reinterpret_cast ((data_base+offset).arrayZ); } bool sanitize (hb_sanitize_context_t *c, const void *data_base) const @@ -478,7 +478,7 @@ struct OpenTypeFontFile case TrueTypeTag: return u.fontFace; case TTCTag: return u.ttcHeader.get_face (i); case DFontTag: return u.rfHeader.get_face (i, base_offset); - default: return Null(OpenTypeFontFace); + default: return Null (OpenTypeFontFace); } } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type.hh index af242ece12e..fee71df8465 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type.hh @@ -73,6 +73,13 @@ struct IntType HB_INTERNAL static int cmp (const IntType *a, const IntType *b) { return b->cmp (*a); } + HB_INTERNAL static int cmp (const void *a, const void *b) + { + IntType *pa = (IntType *) a; + IntType *pb = (IntType *) b; + + return pb->cmp (*pa); + } template int cmp (Type2 a) const { @@ -306,11 +313,8 @@ struct OffsetTo : Offset } template - bool serialize_subset (hb_subset_context_t *c, - const OffsetTo& src, - const void *src_base, - const void *dst_base, - Ts&&... ds) + bool serialize_subset (hb_subset_context_t *c, const OffsetTo& src, + const void *src_base, Ts&&... ds) { *this = 0; if (src.is_null ()) @@ -323,7 +327,7 @@ struct OffsetTo : Offset bool ret = c->dispatch (src_base+src, hb_forward (ds)...); if (ret || !has_null) - s->add_link (*this, s->pop_pack (), dst_base); + s->add_link (*this, s->pop_pack ()); else s->pop_discard (); @@ -331,11 +335,13 @@ struct OffsetTo : Offset } /* TODO: Somehow merge this with previous function into a serialize_dispatch(). */ + /* Workaround clang bug: https://bugs.llvm.org/show_bug.cgi?id=23029 + * Can't compile: whence = hb_serialize_context_t::Head followed by Ts&&... + */ template - bool serialize_copy (hb_serialize_context_t *c, - const OffsetTo& src, - const void *src_base, - const void *dst_base, + bool serialize_copy (hb_serialize_context_t *c, const OffsetTo& src, + const void *src_base, unsigned dst_bias, + hb_serialize_context_t::whence_t whence, Ts&&... ds) { *this = 0; @@ -346,11 +352,15 @@ struct OffsetTo : Offset bool ret = c->copy (src_base+src, hb_forward (ds)...); - c->add_link (*this, c->pop_pack (), dst_base); + c->add_link (*this, c->pop_pack (), whence, dst_bias); return ret; } + bool serialize_copy (hb_serialize_context_t *c, const OffsetTo& src, + const void *src_base, unsigned dst_bias = 0) + { return serialize_copy (c, src, src_base, dst_bias, hb_serialize_context_t::Head); } + bool sanitize_shallow (hb_sanitize_context_t *c, const void *base) const { TRACE_SANITIZE (this); @@ -594,7 +604,7 @@ struct ArrayOf hb_array_t sub_array (unsigned int start_offset, unsigned int *count = nullptr /* IN/OUT */) { return as_array ().sub_array (start_offset, count); } - bool serialize (hb_serialize_context_t *c, unsigned int items_len) + hb_success_t serialize (hb_serialize_context_t *c, unsigned items_len) { TRACE_SERIALIZE (this); if (unlikely (!c->extend_min (*this))) return_trace (false); @@ -604,7 +614,7 @@ struct ArrayOf } template - bool serialize (hb_serialize_context_t *c, Iterator items) + hb_success_t serialize (hb_serialize_context_t *c, Iterator items) { TRACE_SERIALIZE (this); unsigned count = items.len (); @@ -1026,18 +1036,15 @@ struct VarSizedBinSearchArrayOf template const Type *bsearch (const T &key) const { - unsigned int size = header.unitSize; - int min = 0, max = (int) get_length () - 1; - while (min <= max) - { - int mid = ((unsigned int) min + (unsigned int) max) / 2; - const Type *p = (const Type *) (((const char *) &bytesZ) + (mid * size)); - int c = p->cmp (key); - if (c < 0) max = mid - 1; - else if (c > 0) min = mid + 1; - else return p; - } - return nullptr; + unsigned pos; + return hb_bsearch_impl (&pos, + key, + (const void *) bytesZ, + get_length (), + header.unitSize, + _hb_cmp_method) + ? (const Type *) (((const char *) &bytesZ) + (pos * header.unitSize)) + : nullptr; } private: diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff-common.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff-common.hh index 6735c74be49..e5286cd792d 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff-common.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff-common.hh @@ -38,6 +38,9 @@ using namespace OT; #define CFF_UNDEF_CODE 0xFFFFFFFF +using objidx_t = hb_serialize_context_t::objidx_t; +using whence_t = hb_serialize_context_t::whence_t; + /* utility macro */ template static inline const Type& StructAtOffsetOrNull (const void *P, unsigned int offset) @@ -89,11 +92,14 @@ struct CFFIndex unsigned int offset_array_size () const { return calculate_offset_array_size (offSize, count); } - static unsigned int calculate_serialized_size (unsigned int offSize_, unsigned int count, - unsigned int dataSize) + CFFIndex *copy (hb_serialize_context_t *c) const { - if (count == 0) return COUNT::static_size; - return min_size + calculate_offset_array_size (offSize_, count) + dataSize; + TRACE_SERIALIZE (this); + unsigned int size = get_size (); + CFFIndex *out = c->allocate_size (size); + if (likely (out)) + memcpy (out, this, size); + return_trace (out); } bool serialize (hb_serialize_context_t *c, const CFFIndex &src) @@ -101,7 +107,7 @@ struct CFFIndex TRACE_SERIALIZE (this); unsigned int size = src.get_size (); CFFIndex *dest = c->allocate_size (size); - if (unlikely (dest == nullptr)) return_trace (false); + if (unlikely (!dest)) return_trace (false); memcpy (dest, &src, size); return_trace (true); } @@ -114,7 +120,7 @@ struct CFFIndex if (byteArray.length == 0) { COUNT *dest = c->allocate_min (); - if (unlikely (dest == nullptr)) return_trace (false); + if (unlikely (!dest)) return_trace (false); *dest = 0; } else @@ -139,10 +145,9 @@ struct CFFIndex /* serialize data */ for (unsigned int i = 0; i < byteArray.length; i++) { - const byte_str_t &bs = byteArray[i]; - unsigned char *dest = c->allocate_size (bs.length); - if (unlikely (dest == nullptr)) - return_trace (false); + const byte_str_t &bs = byteArray[i]; + unsigned char *dest = c->allocate_size (bs.length); + if (unlikely (!dest)) return_trace (false); memcpy (dest, &bs[0], bs.length); } } @@ -163,6 +168,71 @@ struct CFFIndex return result; } + template + bool serialize (hb_serialize_context_t *c, + Iterator it) + { + TRACE_SERIALIZE (this); + if (it.len () == 0) + { + COUNT *dest = c->allocate_min (); + if (unlikely (!dest)) return_trace (false); + *dest = 0; + } + else + { + serialize_header(c, + it | hb_map ([] (const byte_str_t &_) { return _.length; })); + for (const byte_str_t &_ : +it) + _.copy (c); + } + return_trace (true); + } + + bool serialize (hb_serialize_context_t *c, + const byte_str_array_t &byteArray) + { return serialize (c, + hb_iter (byteArray)); } + + bool serialize (hb_serialize_context_t *c, + const str_buff_vec_t &buffArray) + { + auto it = + + hb_iter (buffArray) + | hb_map ([] (const str_buff_t &_) { return byte_str_t (_.arrayZ, _.length); }) + ; + return serialize (c, it); + } + + template + bool serialize_header (hb_serialize_context_t *c, + Iterator it) + { + TRACE_SERIALIZE (this); + + unsigned total = + it | hb_reduce (hb_add, 0); + unsigned off_size = calcOffSize (total); + + /* serialize CFFIndex header */ + if (unlikely (!c->extend_min (*this))) return_trace (false); + this->count = it.len (); + this->offSize = off_size; + if (unlikely (!c->allocate_size (off_size * (it.len () + 1)))) + return_trace (false); + + /* serialize indices */ + unsigned int offset = 1; + unsigned int i = 0; + for (unsigned _ : +it) + { + CFFIndex::set_offset_at (i++, offset); + offset += _; + } + CFFIndex::set_offset_at (i, offset); + + return_trace (true); + } + void set_offset_at (unsigned int index, unsigned int offset) { HBUINT8 *p = offsets + offSize * index + offSize; @@ -189,7 +259,7 @@ struct CFFIndex unsigned int length_at (unsigned int index) const { if (unlikely ((offset_at (index + 1) < offset_at (index)) || - (offset_at (index + 1) > offset_at (count)))) + (offset_at (index + 1) > offset_at (count)))) return 0; return offset_at (index + 1) - offset_at (index); } @@ -237,7 +307,8 @@ struct CFFIndex public: COUNT count; /* Number of object data. Note there are (count+1) offsets */ HBUINT8 offSize; /* The byte size of each offset in the offsets array. */ - HBUINT8 offsets[HB_VAR_ARRAY]; /* The array of (count + 1) offsets into objects array (1-base). */ + HBUINT8 offsets[HB_VAR_ARRAY]; + /* The array of (count + 1) offsets into objects array (1-base). */ /* HBUINT8 data[HB_VAR_ARRAY]; Object data */ public: DEFINE_SIZE_ARRAY (COUNT::static_size + HBUINT8::static_size, offsets); @@ -250,7 +321,7 @@ struct CFFIndexOf : CFFIndex { if (likely (index < CFFIndex::count)) return byte_str_t (CFFIndex::data_base () + CFFIndex::offset_at (index) - 1, CFFIndex::length_at (index)); - return Null(byte_str_t); + return Null (byte_str_t); } template @@ -284,85 +355,41 @@ struct CFFIndexOf : CFFIndex for (unsigned int i = 0; i < dataArrayLen; i++) { TYPE *dest = c->start_embed (); - if (unlikely (dest == nullptr || - !dest->serialize (c, dataArray[i], param1, param2))) + if (unlikely (!dest || !dest->serialize (c, dataArray[i], param1, param2))) return_trace (false); } return_trace (true); } - - /* in parallel to above */ - template - static unsigned int calculate_serialized_size (unsigned int &offSize_ /* OUT */, - const DATA *dataArray, - unsigned int dataArrayLen, - hb_vector_t &dataSizeArray, /* OUT */ - const PARAM ¶m) - { - /* determine offset size */ - unsigned int totalDataSize = 0; - for (unsigned int i = 0; i < dataArrayLen; i++) - { - unsigned int dataSize = TYPE::calculate_serialized_size (dataArray[i], param); - dataSizeArray[i] = dataSize; - totalDataSize += dataSize; - } - offSize_ = calcOffSize (totalDataSize); - - return CFFIndex::calculate_serialized_size (offSize_, dataArrayLen, totalDataSize); - } }; /* Top Dict, Font Dict, Private Dict */ struct Dict : UnsizedByteStr { - template + template bool serialize (hb_serialize_context_t *c, const DICTVAL &dictval, OP_SERIALIZER& opszr, - PARAM& param) + Ts&&... ds) { TRACE_SERIALIZE (this); for (unsigned int i = 0; i < dictval.get_count (); i++) - if (unlikely (!opszr.serialize (c, dictval[i], param))) + if (unlikely (!opszr.serialize (c, dictval[i], hb_forward (ds)...))) return_trace (false); return_trace (true); } - /* in parallel to above */ - template - static unsigned int calculate_serialized_size (const DICTVAL &dictval, - OP_SERIALIZER& opszr, - PARAM& param) - { - unsigned int size = 0; - for (unsigned int i = 0; i < dictval.get_count (); i++) - size += opszr.calculate_serialized_size (dictval[i], param); - return size; - } - - template - static unsigned int calculate_serialized_size (const DICTVAL &dictval, - OP_SERIALIZER& opszr) - { - unsigned int size = 0; - for (unsigned int i = 0; i < dictval.get_count (); i++) - size += opszr.calculate_serialized_size (dictval[i]); - return size; - } - - template - static bool serialize_int_op (hb_serialize_context_t *c, op_code_t op, int value, op_code_t intOp) + template + static bool serialize_int_op (hb_serialize_context_t *c, op_code_t op, V value, op_code_t intOp) { // XXX: not sure why but LLVM fails to compile the following 'unlikely' macro invocation - if (/*unlikely*/ (!serialize_int (c, intOp, value))) + if (/*unlikely*/ (!serialize_int (c, intOp, value))) return false; TRACE_SERIALIZE (this); /* serialize the opcode */ HBUINT8 *p = c->allocate_size (OpCode_Size (op)); - if (unlikely (p == nullptr)) return_trace (false); + if (unlikely (!p)) return_trace (false); if (Is_OpCode_ESC (op)) { *p = OpCode_escape; @@ -373,17 +400,28 @@ struct Dict : UnsizedByteStr return_trace (true); } - static bool serialize_uint4_op (hb_serialize_context_t *c, op_code_t op, int value) - { return serialize_int_op (c, op, value, OpCode_longintdict); } + template + static bool serialize_int4_op (hb_serialize_context_t *c, op_code_t op, V value) + { return serialize_int_op (c, op, value, OpCode_longintdict); } + + template + static bool serialize_int2_op (hb_serialize_context_t *c, op_code_t op, V value) + { return serialize_int_op (c, op, value, OpCode_shortint); } - static bool serialize_uint2_op (hb_serialize_context_t *c, op_code_t op, int value) - { return serialize_int_op (c, op, value, OpCode_shortint); } + template + static bool serialize_link_op (hb_serialize_context_t *c, op_code_t op, objidx_t link, whence_t whence) + { + T &ofs = *(T *) (c->head + OpCode_Size (int_op)); + if (unlikely (!serialize_int_op (c, op, 0, int_op))) return false; + c->add_link (ofs, link, whence); + return true; + } - static bool serialize_offset4_op (hb_serialize_context_t *c, op_code_t op, int value) - { return serialize_uint4_op (c, op, value); } + static bool serialize_link4_op (hb_serialize_context_t *c, op_code_t op, objidx_t link, whence_t whence = whence_t::Head) + { return serialize_link_op (c, op, link, whence); } - static bool serialize_offset2_op (hb_serialize_context_t *c, op_code_t op, int value) - { return serialize_uint2_op (c, op, value); } + static bool serialize_link2_op (hb_serialize_context_t *c, op_code_t op, objidx_t link, whence_t whence = whence_t::Head) + { return serialize_link_op (c, op, link, whence); } }; struct TopDict : Dict {}; @@ -392,105 +430,39 @@ struct PrivateDict : Dict {}; struct table_info_t { - void init () { offSize = offset = size = 0; } + void init () { offset = size = 0; link = 0; } unsigned int offset; unsigned int size; - unsigned int offSize; + objidx_t link; }; template struct FDArray : CFFIndexOf { - /* used by CFF1 */ - template + template bool serialize (hb_serialize_context_t *c, - unsigned int offSize_, - const hb_vector_t &fontDicts, + Iterator it, OP_SERIALIZER& opszr) { TRACE_SERIALIZE (this); - if (unlikely (!c->extend_min (*this))) return_trace (false); - this->count = fontDicts.length; - this->offSize = offSize_; - if (unlikely (!c->allocate_size (offSize_ * (fontDicts.length + 1)))) - return_trace (false); - /* serialize font dict offsets */ - unsigned int offset = 1; - unsigned int fid = 0; - for (; fid < fontDicts.length; fid++) - { - CFFIndexOf::set_offset_at (fid, offset); - offset += FontDict::calculate_serialized_size (fontDicts[fid], opszr); - } - CFFIndexOf::set_offset_at (fid, offset); - - /* serialize font dicts */ - for (unsigned int i = 0; i < fontDicts.length; i++) + /* serialize INDEX data */ + hb_vector_t sizes; + c->push (); + + it + | hb_map ([&] (const hb_pair_t &_) { FontDict *dict = c->start_embed (); - if (unlikely (!dict->serialize (c, fontDicts[i], opszr, fontDicts[i]))) - return_trace (false); - } - return_trace (true); - } - - /* used by CFF2 */ - template - bool serialize (hb_serialize_context_t *c, - unsigned int offSize_, - const hb_vector_t &fontDicts, - unsigned int fdCount, - const hb_inc_bimap_t &fdmap, - OP_SERIALIZER& opszr, - const hb_vector_t &privateInfos) - { - TRACE_SERIALIZE (this); - if (unlikely (!c->extend_min (*this))) return_trace (false); - this->count = fdCount; - this->offSize = offSize_; - if (unlikely (!c->allocate_size (offSize_ * (fdCount + 1)))) - return_trace (false); - - /* serialize font dict offsets */ - unsigned int offset = 1; - unsigned int fid = 0; - for (unsigned i = 0; i < fontDicts.length; i++) - if (fdmap.has (i)) - { - if (unlikely (fid >= fdCount)) return_trace (false); - CFFIndexOf::set_offset_at (fid++, offset); - offset += FontDict::calculate_serialized_size (fontDicts[i], opszr); - } - CFFIndexOf::set_offset_at (fid, offset); - - /* serialize font dicts */ - for (unsigned int i = 0; i < fontDicts.length; i++) - if (fdmap.has (i)) - { - FontDict *dict = c->start_embed (); - if (unlikely (!dict->serialize (c, fontDicts[i], opszr, privateInfos[fdmap[i]]))) - return_trace (false); - } - return_trace (true); - } - - /* in parallel to above */ - template - static unsigned int calculate_serialized_size (unsigned int &offSize_ /* OUT */, - const hb_vector_t &fontDicts, - unsigned int fdCount, - const hb_inc_bimap_t &fdmap, - OP_SERIALIZER& opszr) - { - unsigned int dictsSize = 0; - for (unsigned int i = 0; i < fontDicts.len; i++) - if (fdmap.has (i)) - dictsSize += FontDict::calculate_serialized_size (fontDicts[i], opszr); - - offSize_ = calcOffSize (dictsSize); - return CFFIndex::calculate_serialized_size (offSize_, fdCount, dictsSize); + dict->serialize (c, _.first, opszr, _.second); + return c->head - (const char*)dict; + }) + | hb_sink (sizes) + ; + c->pop_pack (false); + + /* serialize INDEX header */ + return_trace (CFFIndex::serialize_header (c, hb_iter (sizes))); } }; @@ -544,7 +516,7 @@ struct FDSelect3_4 { TRACE_SANITIZE (this); if (unlikely (!c->check_struct (this) || !ranges.sanitize (c, nullptr, fdcount) || - (nRanges () == 0) || ranges[0].first != 0)) + (nRanges () == 0) || ranges[0].first != 0)) return_trace (false); for (unsigned int i = 1; i < nRanges (); i++) @@ -588,14 +560,11 @@ struct FDSelect TRACE_SERIALIZE (this); unsigned int size = src.get_size (num_glyphs); FDSelect *dest = c->allocate_size (size); - if (unlikely (dest == nullptr)) return_trace (false); + if (unlikely (!dest)) return_trace (false); memcpy (dest, &src, size); return_trace (true); } - unsigned int calculate_serialized_size (unsigned int num_glyphs) const - { return get_size (num_glyphs); } - unsigned int get_size (unsigned int num_glyphs) const { switch (format) diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff1-std-str.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff1-std-str.hh new file mode 100644 index 00000000000..65d56ae18b5 --- /dev/null +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff1-std-str.hh @@ -0,0 +1,425 @@ +/* + * Copyright © 2019 Adobe, 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. + * + * Adobe Author(s): Michiharu Ariza + */ + +#ifndef HB_OT_CFF1_STD_STR_HH +#if 0 /* Make checks happy. */ +#define HB_OT_CFF1_STD_STR_HH +#include "hb.hh" +#endif + +_S(".notdef") +_S("space") +_S("exclam") +_S("quotedbl") +_S("numbersign") +_S("dollar") +_S("percent") +_S("ampersand") +_S("quoteright") +_S("parenleft") +_S("parenright") +_S("asterisk") +_S("plus") +_S("comma") +_S("hyphen") +_S("period") +_S("slash") +_S("zero") +_S("one") +_S("two") +_S("three") +_S("four") +_S("five") +_S("six") +_S("seven") +_S("eight") +_S("nine") +_S("colon") +_S("semicolon") +_S("less") +_S("equal") +_S("greater") +_S("question") +_S("at") +_S("A") +_S("B") +_S("C") +_S("D") +_S("E") +_S("F") +_S("G") +_S("H") +_S("I") +_S("J") +_S("K") +_S("L") +_S("M") +_S("N") +_S("O") +_S("P") +_S("Q") +_S("R") +_S("S") +_S("T") +_S("U") +_S("V") +_S("W") +_S("X") +_S("Y") +_S("Z") +_S("bracketleft") +_S("backslash") +_S("bracketright") +_S("asciicircum") +_S("underscore") +_S("quoteleft") +_S("a") +_S("b") +_S("c") +_S("d") +_S("e") +_S("f") +_S("g") +_S("h") +_S("i") +_S("j") +_S("k") +_S("l") +_S("m") +_S("n") +_S("o") +_S("p") +_S("q") +_S("r") +_S("s") +_S("t") +_S("u") +_S("v") +_S("w") +_S("x") +_S("y") +_S("z") +_S("braceleft") +_S("bar") +_S("braceright") +_S("asciitilde") +_S("exclamdown") +_S("cent") +_S("sterling") +_S("fraction") +_S("yen") +_S("florin") +_S("section") +_S("currency") +_S("quotesingle") +_S("quotedblleft") +_S("guillemotleft") +_S("guilsinglleft") +_S("guilsinglright") +_S("fi") +_S("fl") +_S("endash") +_S("dagger") +_S("daggerdbl") +_S("periodcentered") +_S("paragraph") +_S("bullet") +_S("quotesinglbase") +_S("quotedblbase") +_S("quotedblright") +_S("guillemotright") +_S("ellipsis") +_S("perthousand") +_S("questiondown") +_S("grave") +_S("acute") +_S("circumflex") +_S("tilde") +_S("macron") +_S("breve") +_S("dotaccent") +_S("dieresis") +_S("ring") +_S("cedilla") +_S("hungarumlaut") +_S("ogonek") +_S("caron") +_S("emdash") +_S("AE") +_S("ordfeminine") +_S("Lslash") +_S("Oslash") +_S("OE") +_S("ordmasculine") +_S("ae") +_S("dotlessi") +_S("lslash") +_S("oslash") +_S("oe") +_S("germandbls") +_S("onesuperior") +_S("logicalnot") +_S("mu") +_S("trademark") +_S("Eth") +_S("onehalf") +_S("plusminus") +_S("Thorn") +_S("onequarter") +_S("divide") +_S("brokenbar") +_S("degree") +_S("thorn") +_S("threequarters") +_S("twosuperior") +_S("registered") +_S("minus") +_S("eth") +_S("multiply") +_S("threesuperior") +_S("copyright") +_S("Aacute") +_S("Acircumflex") +_S("Adieresis") +_S("Agrave") +_S("Aring") +_S("Atilde") +_S("Ccedilla") +_S("Eacute") +_S("Ecircumflex") +_S("Edieresis") +_S("Egrave") +_S("Iacute") +_S("Icircumflex") +_S("Idieresis") +_S("Igrave") +_S("Ntilde") +_S("Oacute") +_S("Ocircumflex") +_S("Odieresis") +_S("Ograve") +_S("Otilde") +_S("Scaron") +_S("Uacute") +_S("Ucircumflex") +_S("Udieresis") +_S("Ugrave") +_S("Yacute") +_S("Ydieresis") +_S("Zcaron") +_S("aacute") +_S("acircumflex") +_S("adieresis") +_S("agrave") +_S("aring") +_S("atilde") +_S("ccedilla") +_S("eacute") +_S("ecircumflex") +_S("edieresis") +_S("egrave") +_S("iacute") +_S("icircumflex") +_S("idieresis") +_S("igrave") +_S("ntilde") +_S("oacute") +_S("ocircumflex") +_S("odieresis") +_S("ograve") +_S("otilde") +_S("scaron") +_S("uacute") +_S("ucircumflex") +_S("udieresis") +_S("ugrave") +_S("yacute") +_S("ydieresis") +_S("zcaron") +_S("exclamsmall") +_S("Hungarumlautsmall") +_S("dollaroldstyle") +_S("dollarsuperior") +_S("ampersandsmall") +_S("Acutesmall") +_S("parenleftsuperior") +_S("parenrightsuperior") +_S("twodotenleader") +_S("onedotenleader") +_S("zerooldstyle") +_S("oneoldstyle") +_S("twooldstyle") +_S("threeoldstyle") +_S("fouroldstyle") +_S("fiveoldstyle") +_S("sixoldstyle") +_S("sevenoldstyle") +_S("eightoldstyle") +_S("nineoldstyle") +_S("commasuperior") +_S("threequartersemdash") +_S("periodsuperior") +_S("questionsmall") +_S("asuperior") +_S("bsuperior") +_S("centsuperior") +_S("dsuperior") +_S("esuperior") +_S("isuperior") +_S("lsuperior") +_S("msuperior") +_S("nsuperior") +_S("osuperior") +_S("rsuperior") +_S("ssuperior") +_S("tsuperior") +_S("ff") +_S("ffi") +_S("ffl") +_S("parenleftinferior") +_S("parenrightinferior") +_S("Circumflexsmall") +_S("hyphensuperior") +_S("Gravesmall") +_S("Asmall") +_S("Bsmall") +_S("Csmall") +_S("Dsmall") +_S("Esmall") +_S("Fsmall") +_S("Gsmall") +_S("Hsmall") +_S("Ismall") +_S("Jsmall") +_S("Ksmall") +_S("Lsmall") +_S("Msmall") +_S("Nsmall") +_S("Osmall") +_S("Psmall") +_S("Qsmall") +_S("Rsmall") +_S("Ssmall") +_S("Tsmall") +_S("Usmall") +_S("Vsmall") +_S("Wsmall") +_S("Xsmall") +_S("Ysmall") +_S("Zsmall") +_S("colonmonetary") +_S("onefitted") +_S("rupiah") +_S("Tildesmall") +_S("exclamdownsmall") +_S("centoldstyle") +_S("Lslashsmall") +_S("Scaronsmall") +_S("Zcaronsmall") +_S("Dieresissmall") +_S("Brevesmall") +_S("Caronsmall") +_S("Dotaccentsmall") +_S("Macronsmall") +_S("figuredash") +_S("hypheninferior") +_S("Ogoneksmall") +_S("Ringsmall") +_S("Cedillasmall") +_S("questiondownsmall") +_S("oneeighth") +_S("threeeighths") +_S("fiveeighths") +_S("seveneighths") +_S("onethird") +_S("twothirds") +_S("zerosuperior") +_S("foursuperior") +_S("fivesuperior") +_S("sixsuperior") +_S("sevensuperior") +_S("eightsuperior") +_S("ninesuperior") +_S("zeroinferior") +_S("oneinferior") +_S("twoinferior") +_S("threeinferior") +_S("fourinferior") +_S("fiveinferior") +_S("sixinferior") +_S("seveninferior") +_S("eightinferior") +_S("nineinferior") +_S("centinferior") +_S("dollarinferior") +_S("periodinferior") +_S("commainferior") +_S("Agravesmall") +_S("Aacutesmall") +_S("Acircumflexsmall") +_S("Atildesmall") +_S("Adieresissmall") +_S("Aringsmall") +_S("AEsmall") +_S("Ccedillasmall") +_S("Egravesmall") +_S("Eacutesmall") +_S("Ecircumflexsmall") +_S("Edieresissmall") +_S("Igravesmall") +_S("Iacutesmall") +_S("Icircumflexsmall") +_S("Idieresissmall") +_S("Ethsmall") +_S("Ntildesmall") +_S("Ogravesmall") +_S("Oacutesmall") +_S("Ocircumflexsmall") +_S("Otildesmall") +_S("Odieresissmall") +_S("OEsmall") +_S("Oslashsmall") +_S("Ugravesmall") +_S("Uacutesmall") +_S("Ucircumflexsmall") +_S("Udieresissmall") +_S("Yacutesmall") +_S("Thornsmall") +_S("Ydieresissmall") +_S("001.000") +_S("001.001") +_S("001.002") +_S("001.003") +_S("Black") +_S("Bold") +_S("Book") +_S("Light") +_S("Medium") +_S("Regular") +_S("Roman") +_S("Semibold") + +#endif /* HB_OT_CFF1_STD_STR_HH */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff1-table.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff1-table.cc index 55abd11d610..66b9c8c907a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff1-table.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff1-table.cc @@ -28,11 +28,25 @@ #ifndef HB_NO_CFF +#include "hb-draw.hh" +#include "hb-algs.hh" #include "hb-ot-cff1-table.hh" #include "hb-cff1-interp-cs.hh" using namespace CFF; +struct sid_to_gid_t +{ + uint16_t sid; + uint8_t gid; + + int cmp (uint16_t a) const + { + if (a == sid) return 0; + return (a < sid) ? -1 : 1; + } +}; + /* SID to code */ static const uint8_t standard_encoding_to_code [] = { @@ -104,6 +118,80 @@ static const uint16_t expert_subset_charset_to_sid [] = 340, 341, 342, 343, 344, 345, 346 }; +/* SID to glyph ID */ +static const sid_to_gid_t expert_charset_sid_to_gid [] = +{ + { 1, 1 }, { 13, 12 }, { 14, 13 }, { 15, 14 }, + { 27, 26 }, { 28, 27 }, { 99, 15 }, { 109, 46 }, + { 110, 47 }, { 150, 111 }, { 155, 101 }, { 158, 100 }, + { 163, 102 }, { 164, 112 }, { 169, 113 }, { 229, 2 }, + { 230, 3 }, { 231, 4 }, { 232, 5 }, { 233, 6 }, + { 234, 7 }, { 235, 8 }, { 236, 9 }, { 237, 10 }, + { 238, 11 }, { 239, 16 }, { 240, 17 }, { 241, 18 }, + { 242, 19 }, { 243, 20 }, { 244, 21 }, { 245, 22 }, + { 246, 23 }, { 247, 24 }, { 248, 25 }, { 249, 28 }, + { 250, 29 }, { 251, 30 }, { 252, 31 }, { 253, 32 }, + { 254, 33 }, { 255, 34 }, { 256, 35 }, { 257, 36 }, + { 258, 37 }, { 259, 38 }, { 260, 39 }, { 261, 40 }, + { 262, 41 }, { 263, 42 }, { 264, 43 }, { 265, 44 }, + { 266, 45 }, { 267, 48 }, { 268, 49 }, { 269, 50 }, + { 270, 51 }, { 271, 52 }, { 272, 53 }, { 273, 54 }, + { 274, 55 }, { 275, 56 }, { 276, 57 }, { 277, 58 }, + { 278, 59 }, { 279, 60 }, { 280, 61 }, { 281, 62 }, + { 282, 63 }, { 283, 64 }, { 284, 65 }, { 285, 66 }, + { 286, 67 }, { 287, 68 }, { 288, 69 }, { 289, 70 }, + { 290, 71 }, { 291, 72 }, { 292, 73 }, { 293, 74 }, + { 294, 75 }, { 295, 76 }, { 296, 77 }, { 297, 78 }, + { 298, 79 }, { 299, 80 }, { 300, 81 }, { 301, 82 }, + { 302, 83 }, { 303, 84 }, { 304, 85 }, { 305, 86 }, + { 306, 87 }, { 307, 88 }, { 308, 89 }, { 309, 90 }, + { 310, 91 }, { 311, 92 }, { 312, 93 }, { 313, 94 }, + { 314, 95 }, { 315, 96 }, { 316, 97 }, { 317, 98 }, + { 318, 99 }, { 319, 103 }, { 320, 104 }, { 321, 105 }, + { 322, 106 }, { 323, 107 }, { 324, 108 }, { 325, 109 }, + { 326, 110 }, { 327, 114 }, { 328, 115 }, { 329, 116 }, + { 330, 117 }, { 331, 118 }, { 332, 119 }, { 333, 120 }, + { 334, 121 }, { 335, 122 }, { 336, 123 }, { 337, 124 }, + { 338, 125 }, { 339, 126 }, { 340, 127 }, { 341, 128 }, + { 342, 129 }, { 343, 130 }, { 344, 131 }, { 345, 132 }, + { 346, 133 }, { 347, 134 }, { 348, 135 }, { 349, 136 }, + { 350, 137 }, { 351, 138 }, { 352, 139 }, { 353, 140 }, + { 354, 141 }, { 355, 142 }, { 356, 143 }, { 357, 144 }, + { 358, 145 }, { 359, 146 }, { 360, 147 }, { 361, 148 }, + { 362, 149 }, { 363, 150 }, { 364, 151 }, { 365, 152 }, + { 366, 153 }, { 367, 154 }, { 368, 155 }, { 369, 156 }, + { 370, 157 }, { 371, 158 }, { 372, 159 }, { 373, 160 }, + { 374, 161 }, { 375, 162 }, { 376, 163 }, { 377, 164 }, + { 378, 165 } +}; + +/* SID to glyph ID */ +static const sid_to_gid_t expert_subset_charset_sid_to_gid [] = +{ + { 1, 1 }, { 13, 8 }, { 14, 9 }, { 15, 10 }, + { 27, 22 }, { 28, 23 }, { 99, 11 }, { 109, 41 }, + { 110, 42 }, { 150, 64 }, { 155, 55 }, { 158, 54 }, + { 163, 56 }, { 164, 65 }, { 169, 66 }, { 231, 2 }, + { 232, 3 }, { 235, 4 }, { 236, 5 }, { 237, 6 }, + { 238, 7 }, { 239, 12 }, { 240, 13 }, { 241, 14 }, + { 242, 15 }, { 243, 16 }, { 244, 17 }, { 245, 18 }, + { 246, 19 }, { 247, 20 }, { 248, 21 }, { 249, 24 }, + { 250, 25 }, { 251, 26 }, { 253, 27 }, { 254, 28 }, + { 255, 29 }, { 256, 30 }, { 257, 31 }, { 258, 32 }, + { 259, 33 }, { 260, 34 }, { 261, 35 }, { 262, 36 }, + { 263, 37 }, { 264, 38 }, { 265, 39 }, { 266, 40 }, + { 267, 43 }, { 268, 44 }, { 269, 45 }, { 270, 46 }, + { 272, 47 }, { 300, 48 }, { 301, 49 }, { 302, 50 }, + { 305, 51 }, { 314, 52 }, { 315, 53 }, { 320, 57 }, + { 321, 58 }, { 322, 59 }, { 323, 60 }, { 324, 61 }, + { 325, 62 }, { 326, 63 }, { 327, 67 }, { 328, 68 }, + { 329, 69 }, { 330, 70 }, { 331, 71 }, { 332, 72 }, + { 333, 73 }, { 334, 74 }, { 335, 75 }, { 336, 76 }, + { 337, 77 }, { 338, 78 }, { 339, 79 }, { 340, 80 }, + { 341, 81 }, { 342, 82 }, { 343, 83 }, { 344, 84 }, + { 345, 85 }, { 346, 86 } +}; + /* code to SID */ static const uint8_t standard_encoding_to_sid [] = { @@ -157,6 +245,18 @@ hb_codepoint_t OT::cff1::lookup_expert_subset_charset_for_sid (hb_codepoint_t gl return 0; } +hb_codepoint_t OT::cff1::lookup_expert_charset_for_glyph (hb_codepoint_t sid) +{ + const auto *pair = hb_sorted_array (expert_charset_sid_to_gid).bsearch (sid); + return pair ? pair->gid : 0; +} + +hb_codepoint_t OT::cff1::lookup_expert_subset_charset_for_glyph (hb_codepoint_t sid) +{ + const auto *pair = hb_sorted_array (expert_subset_charset_sid_to_gid).bsearch (sid); + return pair ? pair->gid : 0; +} + hb_codepoint_t OT::cff1::lookup_standard_encoding_for_sid (hb_codepoint_t code) { if (code < ARRAY_LENGTH (standard_encoding_to_sid)) @@ -342,6 +442,130 @@ bool OT::cff1::accelerator_t::get_extents (hb_font_t *font, hb_codepoint_t glyph return true; } +#ifdef HB_EXPERIMENTAL_API +struct cff1_path_param_t +{ + cff1_path_param_t (const OT::cff1::accelerator_t *cff_, hb_font_t *font_, + draw_helper_t &draw_helper_, point_t *delta_) + { + draw_helper = &draw_helper_; + cff = cff_; + font = font_; + delta = delta_; + } + + void move_to (const point_t &p) + { + point_t point = p; + if (delta) point.move (*delta); + draw_helper->move_to (font->em_scalef_x (point.x.to_real ()), font->em_scalef_y (point.y.to_real ())); + } + + void line_to (const point_t &p) + { + point_t point = p; + if (delta) point.move (*delta); + draw_helper->line_to (font->em_scalef_x (point.x.to_real ()), font->em_scalef_y (point.y.to_real ())); + } + + void cubic_to (const point_t &p1, const point_t &p2, const point_t &p3) + { + point_t point1 = p1, point2 = p2, point3 = p3; + if (delta) + { + point1.move (*delta); + point2.move (*delta); + point3.move (*delta); + } + draw_helper->cubic_to (font->em_scalef_x (point1.x.to_real ()), font->em_scalef_y (point1.y.to_real ()), + font->em_scalef_x (point2.x.to_real ()), font->em_scalef_y (point2.y.to_real ()), + font->em_scalef_x (point3.x.to_real ()), font->em_scalef_y (point3.y.to_real ())); + } + + void end_path () { draw_helper->end_path (); } + + hb_font_t *font; + draw_helper_t *draw_helper; + point_t *delta; + + const OT::cff1::accelerator_t *cff; +}; + +struct cff1_path_procs_path_t : path_procs_t +{ + static void moveto (cff1_cs_interp_env_t &env, cff1_path_param_t& param, const point_t &pt) + { + param.move_to (pt); + env.moveto (pt); + } + + static void line (cff1_cs_interp_env_t &env, cff1_path_param_t ¶m, const point_t &pt1) + { + param.line_to (pt1); + env.moveto (pt1); + } + + static void curve (cff1_cs_interp_env_t &env, cff1_path_param_t ¶m, const point_t &pt1, const point_t &pt2, const point_t &pt3) + { + param.cubic_to (pt1, pt2, pt3); + env.moveto (pt3); + } +}; + +static bool _get_path (const OT::cff1::accelerator_t *cff, hb_font_t *font, hb_codepoint_t glyph, + draw_helper_t &draw_helper, bool in_seac = false, point_t *delta = nullptr); + +struct cff1_cs_opset_path_t : cff1_cs_opset_t +{ + static void process_seac (cff1_cs_interp_env_t &env, cff1_path_param_t& param) + { + /* End previous path */ + param.end_path (); + + unsigned int n = env.argStack.get_count (); + point_t delta; + delta.x = env.argStack[n-4]; + delta.y = env.argStack[n-3]; + hb_codepoint_t base = param.cff->std_code_to_glyph (env.argStack[n-2].to_int ()); + hb_codepoint_t accent = param.cff->std_code_to_glyph (env.argStack[n-1].to_int ()); + + if (unlikely (!(!env.in_seac && base && accent + && _get_path (param.cff, param.font, base, *param.draw_helper, true) + && _get_path (param.cff, param.font, accent, *param.draw_helper, true, &delta)))) + env.set_error (); + } +}; + +bool _get_path (const OT::cff1::accelerator_t *cff, hb_font_t *font, hb_codepoint_t glyph, + draw_helper_t &draw_helper, bool in_seac, point_t *delta) +{ + if (unlikely (!cff->is_valid () || (glyph >= cff->num_glyphs))) return false; + + unsigned int fd = cff->fdSelect->get_fd (glyph); + cff1_cs_interpreter_t interp; + const byte_str_t str = (*cff->charStrings)[glyph]; + interp.env.init (str, *cff, fd); + interp.env.set_in_seac (in_seac); + cff1_path_param_t param (cff, font, draw_helper, delta); + if (unlikely (!interp.interpret (param))) return false; + + /* Let's end the path specially since it is called inside seac also */ + param.end_path (); + + return true; +} + +bool OT::cff1::accelerator_t::get_path (hb_font_t *font, hb_codepoint_t glyph, draw_helper_t &draw_helper) const +{ +#ifdef HB_NO_OT_FONT_CFF + /* XXX Remove check when this code moves to .hh file. */ + return true; +#endif + + return _get_path (this, font, glyph, draw_helper); +} +#endif + struct get_seac_param_t { void init (const OT::cff1::accelerator_t *_cff) diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff1-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff1-table.hh index ad206511c1e..e1296c391ad 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff1-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff1-table.hh @@ -27,15 +27,21 @@ #ifndef HB_OT_CFF1_TABLE_HH #define HB_OT_CFF1_TABLE_HH -#include "hb-ot-head-table.hh" #include "hb-ot-cff-common.hh" #include "hb-subset-cff1.hh" +#include "hb-draw.hh" + +#define HB_STRING_ARRAY_NAME cff1_std_strings +#define HB_STRING_ARRAY_LIST "hb-ot-cff1-std-str.hh" +#include "hb-string-array.hh" +#undef HB_STRING_ARRAY_LIST +#undef HB_STRING_ARRAY_NAME namespace CFF { /* * CFF -- Compact Font Format (CFF) - * http://www.adobe.com/content/dam/acom/en/devnet/font/pdfs/5176.CFF.pdf + * https://www.adobe.com/content/dam/acom/en/devnet/font/pdfs/5176.CFF.pdf */ #define HB_OT_TAG_cff1 HB_TAG('C','F','F',' ') @@ -49,7 +55,6 @@ template struct CFF1IndexOf : CFFIndexOf {}; typedef CFFIndex CFF1Index; typedef CFF1Index CFF1CharStrings; -typedef FDArray CFF1FDArray; typedef Subrs CFF1Subrs; struct CFF1FDSelect : FDSelect {}; @@ -169,7 +174,7 @@ struct Encoding TRACE_SERIALIZE (this); unsigned int size = src.get_size (); Encoding *dest = c->allocate_size (size); - if (unlikely (dest == nullptr)) return_trace (false); + if (unlikely (!dest)) return_trace (false); memcpy (dest, &src, size); return_trace (true); } @@ -183,13 +188,13 @@ struct Encoding { TRACE_SERIALIZE (this); Encoding *dest = c->extend_min (*this); - if (unlikely (dest == nullptr)) return_trace (false); + if (unlikely (!dest)) return_trace (false); dest->format = format | ((supp_codes.length > 0) ? 0x80 : 0); switch (format) { case 0: { Encoding0 *fmt0 = c->allocate_size (Encoding0::min_size + HBUINT8::static_size * enc_count); - if (unlikely (fmt0 == nullptr)) return_trace (false); + if (unlikely (!fmt0)) return_trace (false); fmt0->nCodes () = enc_count; unsigned int glyph = 0; for (unsigned int i = 0; i < code_ranges.length; i++) @@ -206,7 +211,7 @@ struct Encoding case 1: { Encoding1 *fmt1 = c->allocate_size (Encoding1::min_size + Encoding1_Range::static_size * code_ranges.length); - if (unlikely (fmt1 == nullptr)) return_trace (false); + if (unlikely (!fmt1)) return_trace (false); fmt1->nRanges () = code_ranges.length; for (unsigned int i = 0; i < code_ranges.length; i++) { @@ -223,7 +228,7 @@ struct Encoding if (supp_codes.length) { CFF1SuppEncData *suppData = c->allocate_size (CFF1SuppEncData::min_size + SuppEncoding::static_size * supp_codes.length); - if (unlikely (suppData == nullptr)) return_trace (false); + if (unlikely (!suppData)) return_trace (false); suppData->nSups () = supp_codes.length; for (unsigned int i = 0; i < supp_codes.length; i++) { @@ -235,23 +240,6 @@ struct Encoding return_trace (true); } - /* parallel to above: calculate the size of a subset Encoding */ - static unsigned int calculate_serialized_size (uint8_t format, - unsigned int enc_count, - unsigned int supp_count) - { - unsigned int size = min_size; - switch (format) - { - case 0: size += Encoding0::min_size + HBUINT8::static_size * enc_count; break; - case 1: size += Encoding1::min_size + Encoding1_Range::static_size * enc_count; break; - default:return 0; - } - if (supp_count > 0) - size += CFF1SuppEncData::min_size + SuppEncoding::static_size * supp_count; - return size; - } - unsigned int get_size () const { unsigned int size = min_size; @@ -414,7 +402,7 @@ struct Charset1_2 { for (unsigned int i = 0;; i++) { if (glyph >= num_glyphs) - return 0; + return 0; if ((ranges[i].first <= sid) && (sid <= ranges[i].first + ranges[i].nLeft)) return glyph + (sid - ranges[i].first); glyph += (ranges[i].nLeft + 1); @@ -457,7 +445,7 @@ struct Charset TRACE_SERIALIZE (this); unsigned int size = src.get_size (num_glyphs); Charset *dest = c->allocate_size (size); - if (unlikely (dest == nullptr)) return_trace (false); + if (unlikely (!dest)) return_trace (false); memcpy (dest, &src, size); return_trace (true); } @@ -470,14 +458,14 @@ struct Charset { TRACE_SERIALIZE (this); Charset *dest = c->extend_min (*this); - if (unlikely (dest == nullptr)) return_trace (false); + if (unlikely (!dest)) return_trace (false); dest->format = format; switch (format) { case 0: { Charset0 *fmt0 = c->allocate_size (Charset0::min_size + HBUINT16::static_size * (num_glyphs - 1)); - if (unlikely (fmt0 == nullptr)) return_trace (false); + if (unlikely (!fmt0)) return_trace (false); unsigned int glyph = 0; for (unsigned int i = 0; i < sid_ranges.length; i++) { @@ -491,10 +479,10 @@ struct Charset case 1: { Charset1 *fmt1 = c->allocate_size (Charset1::min_size + Charset1_Range::static_size * sid_ranges.length); - if (unlikely (fmt1 == nullptr)) return_trace (false); + if (unlikely (!fmt1)) return_trace (false); for (unsigned int i = 0; i < sid_ranges.length; i++) { - if (unlikely (!(sid_ranges[i].glyph <= 0xFF))) + if (unlikely (!(sid_ranges[i].glyph <= 0xFF))) return_trace (false); fmt1->ranges[i].first = sid_ranges[i].code; fmt1->ranges[i].nLeft = sid_ranges[i].glyph; @@ -505,10 +493,10 @@ struct Charset case 2: { Charset2 *fmt2 = c->allocate_size (Charset2::min_size + Charset2_Range::static_size * sid_ranges.length); - if (unlikely (fmt2 == nullptr)) return_trace (false); + if (unlikely (!fmt2)) return_trace (false); for (unsigned int i = 0; i < sid_ranges.length; i++) { - if (unlikely (!(sid_ranges[i].glyph <= 0xFFFF))) + if (unlikely (!(sid_ranges[i].glyph <= 0xFFFF))) return_trace (false); fmt2->ranges[i].first = sid_ranges[i].code; fmt2->ranges[i].nLeft = sid_ranges[i].glyph; @@ -520,19 +508,6 @@ struct Charset return_trace (true); } - /* parallel to above: calculate the size of a subset Charset */ - static unsigned int calculate_serialized_size (uint8_t format, - unsigned int count) - { - switch (format) - { - case 0: return min_size + Charset0::min_size + HBUINT16::static_size * (count - 1); - case 1: return min_size + Charset1::min_size + Charset1_Range::static_size * count; - case 2: return min_size + Charset2::min_size + Charset2_Range::static_size * count; - default:return 0; - } - } - unsigned int get_size (unsigned int num_glyphs) const { switch (format) @@ -544,8 +519,9 @@ struct Charset } } - hb_codepoint_t get_sid (hb_codepoint_t glyph) const + hb_codepoint_t get_sid (hb_codepoint_t glyph, unsigned int num_glyphs) const { + if (unlikely (glyph >= num_glyphs)) return 0; switch (format) { case 0: return u.format0.get_sid (glyph); @@ -594,7 +570,7 @@ struct Charset struct CFF1StringIndex : CFF1Index { bool serialize (hb_serialize_context_t *c, const CFF1StringIndex &strings, - unsigned int offSize_, const hb_inc_bimap_t &sidmap) + const hb_inc_bimap_t &sidmap) { TRACE_SERIALIZE (this); if (unlikely ((strings.count == 0) || (sidmap.get_population () == 0))) @@ -612,30 +588,14 @@ struct CFF1StringIndex : CFF1Index for (unsigned int i = 0; i < strings.count; i++) { hb_codepoint_t j = sidmap[i]; - if (j != CFF_UNDEF_CODE) + if (j != HB_MAP_VALUE_INVALID) bytesArray[j] = strings[i]; } - bool result = CFF1Index::serialize (c, offSize_, bytesArray); + bool result = CFF1Index::serialize (c, bytesArray); bytesArray.fini (); return_trace (result); } - - /* in parallel to above */ - unsigned int calculate_serialized_size (unsigned int &offSize_ /*OUT*/, const hb_inc_bimap_t &sidmap) const - { - offSize_ = 0; - if ((count == 0) || (sidmap.get_population () == 0)) - return count.static_size; - - unsigned int dataSize = 0; - for (unsigned int i = 0; i < count; i++) - if (sidmap[i] != CFF_UNDEF_CODE) - dataSize += length_at (i); - - offSize_ = calcOffSize(dataSize); - return CFF1Index::calculate_serialized_size (offSize_, sidmap.get_population (), dataSize); - } }; struct cff1_top_dict_interp_env_t : num_interp_env_t @@ -738,7 +698,7 @@ struct cff1_top_dict_values_t : top_dict_values_t unsigned int EncodingOffset; unsigned int CharsetOffset; unsigned int FDSelectOffset; - table_info_t privateDictInfo; + table_info_t privateDictInfo; }; struct cff1_top_dict_opset_t : top_dict_opset_t @@ -880,21 +840,10 @@ struct cff1_private_dict_values_base_t : dict_values_t { dict_values_t::init (); subrsOffset = 0; - localSubrs = &Null(CFF1Subrs); + localSubrs = &Null (CFF1Subrs); } void fini () { dict_values_t::fini (); } - unsigned int calculate_serialized_size () const - { - unsigned int size = 0; - for (unsigned int i = 0; i < dict_values_t::get_count; i++) - if (dict_values_t::get_value (i).op == OpCode_Subrs) - size += OpCode_Size (OpCode_shortint) + 2 + OpCode_Size (OpCode_Subrs); - else - size += dict_values_t::get_value (i).str.length; - return size; - } - unsigned int subrsOffset; const CFF1Subrs *localSubrs; }; @@ -997,6 +946,37 @@ typedef dict_interpreter_t cff1 typedef CFF1Index CFF1NameIndex; typedef CFF1IndexOf CFF1TopDictIndex; +struct cff1_font_dict_values_mod_t +{ + cff1_font_dict_values_mod_t() { init (); } + + void init () { init ( &Null (cff1_font_dict_values_t), CFF_UNDEF_SID ); } + + void init (const cff1_font_dict_values_t *base_, + unsigned int fontName_) + { + base = base_; + fontName = fontName_; + privateDictInfo.init (); + } + + unsigned get_count () const { return base->get_count (); } + + const op_str_t &operator [] (unsigned int i) const { return (*base)[i]; } + + const cff1_font_dict_values_t *base; + table_info_t privateDictInfo; + unsigned int fontName; +}; + +struct CFF1FDArray : FDArray +{ + /* FDArray::serialize() requires this partial specialization to compile */ + template + bool serialize (hb_serialize_context_t *c, ITER it, OP_SERIALIZER& opszr) + { return FDArray::serialize (c, it, opszr); } +}; + } /* namespace CFF */ namespace OT { @@ -1031,7 +1011,7 @@ struct cff1 const OT::cff1 *cff = this->blob->template as (); - if (cff == &Null(OT::cff1)) + if (cff == &Null (OT::cff1)) { fini (); return; } nameIndex = &cff->nameIndex (cff); @@ -1052,7 +1032,7 @@ struct cff1 } if (is_predef_charset ()) - charset = &Null(Charset); + charset = &Null (Charset); else { charset = &StructAtOffsetOrNull (cff, topDict.CharsetOffset); @@ -1064,16 +1044,30 @@ struct cff1 { fdArray = &StructAtOffsetOrNull (cff, topDict.FDArrayOffset); fdSelect = &StructAtOffsetOrNull (cff, topDict.FDSelectOffset); - if (unlikely ((fdArray == &Null(CFF1FDArray)) || !fdArray->sanitize (&sc) || - (fdSelect == &Null(CFF1FDSelect)) || !fdSelect->sanitize (&sc, fdArray->count))) + if (unlikely ((fdArray == &Null (CFF1FDArray)) || !fdArray->sanitize (&sc) || + (fdSelect == &Null (CFF1FDSelect)) || !fdSelect->sanitize (&sc, fdArray->count))) { fini (); return; } fdCount = fdArray->count; } else { - fdArray = &Null(CFF1FDArray); - fdSelect = &Null(CFF1FDSelect); + fdArray = &Null (CFF1FDArray); + fdSelect = &Null (CFF1FDSelect); + } + + encoding = &Null (Encoding); + if (is_CID ()) + { + if (unlikely (charset == &Null (Charset))) { fini (); return; } + } + else + { + if (!is_predef_encoding ()) + { + encoding = &StructAtOffsetOrNull (cff, topDict.EncodingOffset); + if (unlikely ((encoding == &Null (Encoding)) || !encoding->sanitize (&sc))) { fini (); return; } + } } stringIndex = &StructAtOffset (topDictIndex, topDictIndex->get_size ()); @@ -1086,7 +1080,7 @@ struct cff1 charStrings = &StructAtOffsetOrNull (cff, topDict.charStringsOffset); - if ((charStrings == &Null(CFF1CharStrings)) || unlikely (!charStrings->sanitize (&sc))) + if ((charStrings == &Null (CFF1CharStrings)) || unlikely (!charStrings->sanitize (&sc))) { fini (); return; } num_glyphs = charStrings->count; @@ -1104,14 +1098,14 @@ struct cff1 { byte_str_t fontDictStr = (*fdArray)[i]; if (unlikely (!fontDictStr.sanitize (&sc))) { fini (); return; } - cff1_font_dict_values_t *font; + cff1_font_dict_values_t *font; cff1_font_dict_interpreter_t font_interp; font_interp.env.init (fontDictStr); font = fontDicts.push (); - if (unlikely (font == &Crap(cff1_font_dict_values_t))) { fini (); return; } + if (unlikely (font == &Crap (cff1_font_dict_values_t))) { fini (); return; } font->init (); if (unlikely (!font_interp.interpret (*font))) { fini (); return; } - PRIVDICTVAL *priv = &privateDicts[i]; + PRIVDICTVAL *priv = &privateDicts[i]; const byte_str_t privDictStr (StructAtOffset (cff, font->privateDictInfo.offset), font->privateDictInfo.size); if (unlikely (!privDictStr.sanitize (&sc))) { fini (); return; } dict_interpreter_t priv_interp; @@ -1120,15 +1114,15 @@ struct cff1 if (unlikely (!priv_interp.interpret (*priv))) { fini (); return; } priv->localSubrs = &StructAtOffsetOrNull (&privDictStr, priv->subrsOffset); - if (priv->localSubrs != &Null(CFF1Subrs) && + if (priv->localSubrs != &Null (CFF1Subrs) && unlikely (!priv->localSubrs->sanitize (&sc))) { fini (); return; } } } else /* non-CID */ { - cff1_top_dict_values_t *font = &topDict; - PRIVDICTVAL *priv = &privateDicts[0]; + cff1_top_dict_values_t *font = &topDict; + PRIVDICTVAL *priv = &privateDicts[0]; const byte_str_t privDictStr (StructAtOffset (cff, font->privateDictInfo.offset), font->privateDictInfo.size); if (unlikely (!privDictStr.sanitize (&sc))) { fini (); return; } @@ -1138,7 +1132,7 @@ struct cff1 if (unlikely (!priv_interp.interpret (*priv))) { fini (); return; } priv->localSubrs = &StructAtOffsetOrNull (&privDictStr, priv->subrsOffset); - if (priv->localSubrs != &Null(CFF1Subrs) && + if (priv->localSubrs != &Null (CFF1Subrs) && unlikely (!priv->localSubrs->sanitize (&sc))) { fini (); return; } } @@ -1154,7 +1148,7 @@ struct cff1 blob = nullptr; } - bool is_valid () const { return blob != nullptr; } + bool is_valid () const { return blob; } bool is_CID () const { return topDict.is_CID (); } bool is_predef_charset () const { return topDict.CharsetOffset <= ExpertSubsetCharset; } @@ -1165,69 +1159,18 @@ struct cff1 if (unlikely (sid == CFF_UNDEF_SID)) return 0; - if (charset != &Null(Charset)) + if (charset != &Null (Charset)) return charset->get_glyph (sid, num_glyphs); else if ((topDict.CharsetOffset == ISOAdobeCharset) && (code <= 228 /*zcaron*/)) return sid; return 0; } - protected: - hb_blob_t *blob; - hb_sanitize_context_t sc; - - public: - const Charset *charset; - const CFF1NameIndex *nameIndex; - const CFF1TopDictIndex *topDictIndex; - const CFF1StringIndex *stringIndex; - const CFF1Subrs *globalSubrs; - const CFF1CharStrings *charStrings; - const CFF1FDArray *fdArray; - const CFF1FDSelect *fdSelect; - unsigned int fdCount; - - cff1_top_dict_values_t topDict; - hb_vector_t fontDicts; - hb_vector_t privateDicts; - - unsigned int num_glyphs; - }; - - struct accelerator_t : accelerator_templ_t - { - HB_INTERNAL bool get_extents (hb_font_t *font, hb_codepoint_t glyph, hb_glyph_extents_t *extents) const; - HB_INTERNAL bool get_seac_components (hb_codepoint_t glyph, hb_codepoint_t *base, hb_codepoint_t *accent) const; - }; - - struct accelerator_subset_t : accelerator_templ_t - { - void init (hb_face_t *face) - { - SUPER::init (face); - if (blob == nullptr) return; - - const OT::cff1 *cff = this->blob->as (); - encoding = &Null(Encoding); - if (is_CID ()) - { - if (unlikely (charset == &Null(Charset))) { fini (); return; } - } - else - { - if (!is_predef_encoding ()) - { - encoding = &StructAtOffsetOrNull (cff, topDict.EncodingOffset); - if (unlikely ((encoding == &Null (Encoding)) || !encoding->sanitize (&sc))) { fini (); return; } - } - } - } - bool is_predef_encoding () const { return topDict.EncodingOffset <= ExpertEncoding; } hb_codepoint_t glyph_to_code (hb_codepoint_t glyph) const { - if (encoding != &Null(Encoding)) + if (encoding != &Null (Encoding)) return encoding->get_code (glyph); else { @@ -1251,20 +1194,20 @@ struct cff1 hb_codepoint_t glyph_to_sid (hb_codepoint_t glyph) const { - if (charset != &Null(Charset)) - return charset->get_sid (glyph); + if (charset != &Null (Charset)) + return charset->get_sid (glyph, num_glyphs); else { hb_codepoint_t sid = 0; switch (topDict.CharsetOffset) { - case ISOAdobeCharset: + case ISOAdobeCharset: if (glyph <= 228 /*zcaron*/) sid = glyph; break; - case ExpertCharset: + case ExpertCharset: sid = lookup_expert_charset_for_sid (glyph); break; - case ExpertSubsetCharset: + case ExpertSubsetCharset: sid = lookup_expert_subset_charset_for_sid (glyph); break; default: @@ -1274,35 +1217,174 @@ struct cff1 } } - const Encoding *encoding; + hb_codepoint_t sid_to_glyph (hb_codepoint_t sid) const + { + if (charset != &Null (Charset)) + return charset->get_glyph (sid, num_glyphs); + else + { + hb_codepoint_t glyph = 0; + switch (topDict.CharsetOffset) + { + case ISOAdobeCharset: + if (sid <= 228 /*zcaron*/) glyph = sid; + break; + case ExpertCharset: + glyph = lookup_expert_charset_for_glyph (sid); + break; + case ExpertSubsetCharset: + glyph = lookup_expert_subset_charset_for_glyph (sid); + break; + default: + break; + } + return glyph; + } + } - private: - typedef accelerator_templ_t SUPER; + protected: + hb_blob_t *blob; + hb_sanitize_context_t sc; + + public: + const Encoding *encoding; + const Charset *charset; + const CFF1NameIndex *nameIndex; + const CFF1TopDictIndex *topDictIndex; + const CFF1StringIndex *stringIndex; + const CFF1Subrs *globalSubrs; + const CFF1CharStrings *charStrings; + const CFF1FDArray *fdArray; + const CFF1FDSelect *fdSelect; + unsigned int fdCount; + + cff1_top_dict_values_t topDict; + hb_vector_t + fontDicts; + hb_vector_t privateDicts; + + unsigned int num_glyphs; }; - bool subset (hb_subset_plan_t *plan) const + struct accelerator_t : accelerator_templ_t { - hb_blob_t *cff_prime = nullptr; - - bool success = true; - if (hb_subset_cff1 (plan, &cff_prime)) { - success = success && plan->add_table (HB_OT_TAG_cff1, cff_prime); - hb_blob_t *head_blob = hb_sanitize_context_t().reference_table (plan->source); - success = success && head_blob && plan->add_table (HB_OT_TAG_head, head_blob); - hb_blob_destroy (head_blob); - } else { - success = false; + void init (hb_face_t *face) + { + SUPER::init (face); + + if (!is_valid ()) return; + if (is_CID ()) return; + + /* fill glyph_names */ + for (hb_codepoint_t gid = 0; gid < num_glyphs; gid++) + { + hb_codepoint_t sid = glyph_to_sid (gid); + gname_t gname; + gname.sid = sid; + if (sid < cff1_std_strings_length) + gname.name = cff1_std_strings (sid); + else + { + byte_str_t ustr = (*stringIndex)[sid - cff1_std_strings_length]; + gname.name = hb_bytes_t ((const char*)ustr.arrayZ, ustr.length); + } + if (unlikely (!gname.name.arrayZ)) { fini (); return; } + glyph_names.push (gname); + } + glyph_names.qsort (); } - hb_blob_destroy (cff_prime); - return success; - } + void fini () + { + glyph_names.fini (); + + SUPER::fini (); + } + + bool get_glyph_name (hb_codepoint_t glyph, + char *buf, unsigned int buf_len) const + { + if (!buf) return true; + if (unlikely (!is_valid ())) return false; + if (is_CID()) return false; + hb_codepoint_t sid = glyph_to_sid (glyph); + const char *str; + size_t str_len; + if (sid < cff1_std_strings_length) + { + hb_bytes_t byte_str = cff1_std_strings (sid); + str = byte_str.arrayZ; + str_len = byte_str.length; + } + else + { + byte_str_t ubyte_str = (*stringIndex)[sid - cff1_std_strings_length]; + str = (const char *)ubyte_str.arrayZ; + str_len = ubyte_str.length; + } + if (!str_len) return false; + unsigned int len = hb_min (buf_len - 1, str_len); + strncpy (buf, (const char*)str, len); + buf[len] = '\0'; + return true; + } + + bool get_glyph_from_name (const char *name, int len, + hb_codepoint_t *glyph) const + { + if (len < 0) len = strlen (name); + if (unlikely (!len)) return false; + + gname_t key = { hb_bytes_t (name, len), 0 }; + const gname_t *gname = glyph_names.bsearch (key); + if (!gname) return false; + hb_codepoint_t gid = sid_to_glyph (gname->sid); + if (!gid && gname->sid) return false; + *glyph = gid; + return true; + } + + HB_INTERNAL bool get_extents (hb_font_t *font, hb_codepoint_t glyph, hb_glyph_extents_t *extents) const; + HB_INTERNAL bool get_seac_components (hb_codepoint_t glyph, hb_codepoint_t *base, hb_codepoint_t *accent) const; +#ifdef HB_EXPERIMENTAL_API + HB_INTERNAL bool get_path (hb_font_t *font, hb_codepoint_t glyph, draw_helper_t &draw_helper) const; +#endif + + private: + struct gname_t + { + hb_bytes_t name; + uint16_t sid; + + static int cmp (const void *a_, const void *b_) + { + const gname_t *a = (const gname_t *)a_; + const gname_t *b = (const gname_t *)b_; + int minlen = hb_min (a->name.length, b->name.length); + int ret = strncmp (a->name.arrayZ, b->name.arrayZ, minlen); + if (ret) return ret; + return a->name.length - b->name.length; + } + + int cmp (const gname_t &a) const { return cmp (&a, this); } + }; + + hb_sorted_vector_t glyph_names; + + typedef accelerator_templ_t SUPER; + }; + + struct accelerator_subset_t : accelerator_templ_t {}; + + bool subset (hb_subset_context_t *c) const { return hb_subset_cff1 (c); } protected: HB_INTERNAL static hb_codepoint_t lookup_standard_encoding_for_code (hb_codepoint_t sid); HB_INTERNAL static hb_codepoint_t lookup_expert_encoding_for_code (hb_codepoint_t sid); HB_INTERNAL static hb_codepoint_t lookup_expert_charset_for_sid (hb_codepoint_t glyph); HB_INTERNAL static hb_codepoint_t lookup_expert_subset_charset_for_sid (hb_codepoint_t glyph); + HB_INTERNAL static hb_codepoint_t lookup_expert_charset_for_glyph (hb_codepoint_t sid); + HB_INTERNAL static hb_codepoint_t lookup_expert_subset_charset_for_glyph (hb_codepoint_t sid); HB_INTERNAL static hb_codepoint_t lookup_standard_encoding_for_sid (hb_codepoint_t code); public: diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff2-table.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff2-table.cc index a2242b76fb9..ac0feeee21b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff2-table.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff2-table.cc @@ -30,6 +30,7 @@ #include "hb-ot-cff2-table.hh" #include "hb-cff2-interp-cs.hh" +#include "hb-draw.hh" using namespace CFF; @@ -142,5 +143,73 @@ bool OT::cff2::accelerator_t::get_extents (hb_font_t *font, return true; } +#ifdef HB_EXPERIMENTAL_API +struct cff2_path_param_t +{ + cff2_path_param_t (hb_font_t *font_, draw_helper_t &draw_helper_) + { + draw_helper = &draw_helper_; + font = font_; + } + + void move_to (const point_t &p) + { draw_helper->move_to (font->em_scalef_x (p.x.to_real ()), font->em_scalef_y (p.y.to_real ())); } + + void line_to (const point_t &p) + { draw_helper->line_to (font->em_scalef_x (p.x.to_real ()), font->em_scalef_y (p.y.to_real ())); } + + void cubic_to (const point_t &p1, const point_t &p2, const point_t &p3) + { + draw_helper->cubic_to (font->em_scalef_x (p1.x.to_real ()), font->em_scalef_y (p1.y.to_real ()), + font->em_scalef_x (p2.x.to_real ()), font->em_scalef_y (p2.y.to_real ()), + font->em_scalef_x (p3.x.to_real ()), font->em_scalef_y (p3.y.to_real ())); + } + + protected: + draw_helper_t *draw_helper; + hb_font_t *font; +}; + +struct cff2_path_procs_path_t : path_procs_t +{ + static void moveto (cff2_cs_interp_env_t &env, cff2_path_param_t& param, const point_t &pt) + { + param.move_to (pt); + env.moveto (pt); + } + + static void line (cff2_cs_interp_env_t &env, cff2_path_param_t& param, const point_t &pt1) + { + param.line_to (pt1); + env.moveto (pt1); + } + + static void curve (cff2_cs_interp_env_t &env, cff2_path_param_t& param, const point_t &pt1, const point_t &pt2, const point_t &pt3) + { + param.cubic_to (pt1, pt2, pt3); + env.moveto (pt3); + } +}; + +struct cff2_cs_opset_path_t : cff2_cs_opset_t {}; + +bool OT::cff2::accelerator_t::get_path (hb_font_t *font, hb_codepoint_t glyph, draw_helper_t &draw_helper) const +{ +#ifdef HB_NO_OT_FONT_CFF + /* XXX Remove check when this code moves to .hh file. */ + return true; +#endif + + if (unlikely (!is_valid () || (glyph >= num_glyphs))) return false; + + unsigned int fd = fdSelect->get_fd (glyph); + cff2_cs_interpreter_t interp; + const byte_str_t str = (*charStrings)[glyph]; + interp.env.init (str, *this, fd, font->coords, font->num_coords); + cff2_path_param_t param (font, draw_helper); + if (unlikely (!interp.interpret (param))) return false; + return true; +} +#endif #endif diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff2-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff2-table.hh index 8646cde58d6..075a0d4ef72 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff2-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff2-table.hh @@ -27,9 +27,9 @@ #ifndef HB_OT_CFF2_TABLE_HH #define HB_OT_CFF2_TABLE_HH -#include "hb-ot-head-table.hh" #include "hb-ot-cff-common.hh" #include "hb-subset-cff2.hh" +#include "hb-draw.hh" namespace CFF { @@ -43,7 +43,6 @@ typedef CFFIndex CFF2Index; template struct CFF2IndexOf : CFFIndexOf {}; typedef CFF2Index CFF2CharStrings; -typedef FDArray CFF2FDArray; typedef Subrs CFF2Subrs; typedef FDSelect3_4 FDSelect4; @@ -56,14 +55,11 @@ struct CFF2FDSelect TRACE_SERIALIZE (this); unsigned int size = src.get_size (num_glyphs); CFF2FDSelect *dest = c->allocate_size (size); - if (unlikely (dest == nullptr)) return_trace (false); + if (unlikely (!dest)) return_trace (false); memcpy (dest, &src, size); return_trace (true); } - unsigned int calculate_serialized_size (unsigned int num_glyphs) const - { return get_size (num_glyphs); } - unsigned int get_size (unsigned int num_glyphs) const { switch (format) @@ -127,7 +123,7 @@ struct CFF2VariationStore TRACE_SERIALIZE (this); unsigned int size_ = varStore->get_size (); CFF2VariationStore *dest = c->allocate_size (size_); - if (unlikely (dest == nullptr)) return_trace (false); + if (unlikely (!dest)) return_trace (false); memcpy (dest, varStore, size_); return_trace (true); } @@ -150,26 +146,6 @@ struct cff2_top_dict_values_t : top_dict_values_t<> } void fini () { top_dict_values_t<>::fini (); } - unsigned int calculate_serialized_size () const - { - unsigned int size = 0; - for (unsigned int i = 0; i < get_count (); i++) - { - op_code_t op = get_value (i).op; - switch (op) - { - case OpCode_vstore: - case OpCode_FDSelect: - size += OpCode_Size (OpCode_longintdict) + 4 + OpCode_Size (op); - break; - default: - size += top_dict_values_t<>::calculate_serialized_op_size (get_value (i)); - break; - } - } - return size; - } - unsigned int vstoreOffset; unsigned int FDSelectOffset; }; @@ -256,22 +232,11 @@ struct cff2_private_dict_values_base_t : dict_values_t { dict_values_t::init (); subrsOffset = 0; - localSubrs = &Null(CFF2Subrs); + localSubrs = &Null (CFF2Subrs); ivs = 0; } void fini () { dict_values_t::fini (); } - unsigned int calculate_serialized_size () const - { - unsigned int size = 0; - for (unsigned int i = 0; i < dict_values_t::get_count; i++) - if (dict_values_t::get_value (i).op == OpCode_Subrs) - size += OpCode_Size (OpCode_shortint) + 2 + OpCode_Size (OpCode_Subrs); - else - size += dict_values_t::get_value (i).str.length; - return size; - } - unsigned int subrsOffset; const CFF2Subrs *localSubrs; unsigned int ivs; @@ -404,6 +369,14 @@ struct cff2_private_dict_opset_subset_t : dict_opset_t typedef dict_interpreter_t cff2_top_dict_interpreter_t; typedef dict_interpreter_t cff2_font_dict_interpreter_t; +struct CFF2FDArray : FDArray +{ + /* FDArray::serialize does not compile without this partial specialization */ + template + bool serialize (hb_serialize_context_t *c, ITER it, OP_SERIALIZER& opszr) + { return FDArray::serialize (c, it, opszr); } +}; + } /* namespace CFF */ namespace OT { @@ -438,7 +411,7 @@ struct cff2 const OT::cff2 *cff2 = this->blob->template as (); - if (cff2 == &Null(OT::cff2)) + if (cff2 == &Null (OT::cff2)) { fini (); return; } { /* parse top dict */ @@ -456,11 +429,11 @@ struct cff2 fdArray = &StructAtOffsetOrNull (cff2, topDict.FDArrayOffset); fdSelect = &StructAtOffsetOrNull (cff2, topDict.FDSelectOffset); - if (((varStore != &Null(CFF2VariationStore)) && unlikely (!varStore->sanitize (&sc))) || - (charStrings == &Null(CFF2CharStrings)) || unlikely (!charStrings->sanitize (&sc)) || - (globalSubrs == &Null(CFF2Subrs)) || unlikely (!globalSubrs->sanitize (&sc)) || - (fdArray == &Null(CFF2FDArray)) || unlikely (!fdArray->sanitize (&sc)) || - (((fdSelect != &Null(CFF2FDSelect)) && unlikely (!fdSelect->sanitize (&sc, fdArray->count))))) + if (((varStore != &Null (CFF2VariationStore)) && unlikely (!varStore->sanitize (&sc))) || + (charStrings == &Null (CFF2CharStrings)) || unlikely (!charStrings->sanitize (&sc)) || + (globalSubrs == &Null (CFF2Subrs)) || unlikely (!globalSubrs->sanitize (&sc)) || + (fdArray == &Null (CFF2FDArray)) || unlikely (!fdArray->sanitize (&sc)) || + (((fdSelect != &Null (CFF2FDSelect)) && unlikely (!fdSelect->sanitize (&sc, fdArray->count))))) { fini (); return; } num_glyphs = charStrings->count; @@ -479,7 +452,7 @@ struct cff2 cff2_font_dict_interpreter_t font_interp; font_interp.env.init (fontDictStr); font = fontDicts.push (); - if (unlikely (font == &Crap(cff2_font_dict_values_t))) { fini (); return; } + if (unlikely (font == &Crap (cff2_font_dict_values_t))) { fini (); return; } font->init (); if (unlikely (!font_interp.interpret (*font))) { fini (); return; } @@ -491,7 +464,7 @@ struct cff2 if (unlikely (!priv_interp.interpret (privateDicts[i]))) { fini (); return; } privateDicts[i].localSubrs = &StructAtOffsetOrNull (&privDictStr[0], privateDicts[i].subrsOffset); - if (privateDicts[i].localSubrs != &Null(CFF2Subrs) && + if (privateDicts[i].localSubrs != &Null (CFF2Subrs) && unlikely (!privateDicts[i].localSubrs->sanitize (&sc))) { fini (); return; } } @@ -507,7 +480,7 @@ struct cff2 blob = nullptr; } - bool is_valid () const { return blob != nullptr; } + bool is_valid () const { return blob; } protected: hb_blob_t *blob; @@ -533,27 +506,14 @@ struct cff2 HB_INTERNAL bool get_extents (hb_font_t *font, hb_codepoint_t glyph, hb_glyph_extents_t *extents) const; +#ifdef HB_EXPERIMENTAL_API + HB_INTERNAL bool get_path (hb_font_t *font, hb_codepoint_t glyph, draw_helper_t &draw_helper) const; +#endif }; typedef accelerator_templ_t accelerator_subset_t; - bool subset (hb_subset_plan_t *plan) const - { - hb_blob_t *cff2_prime = nullptr; - - bool success = true; - if (hb_subset_cff2 (plan, &cff2_prime)) { - success = success && plan->add_table (HB_OT_TAG_cff2, cff2_prime); - hb_blob_t *head_blob = hb_sanitize_context_t().reference_table (plan->source); - success = success && head_blob && plan->add_table (HB_OT_TAG_head, head_blob); - hb_blob_destroy (head_blob); - } else { - success = false; - } - hb_blob_destroy (cff2_prime); - - return success; - } + bool subset (hb_subset_context_t *c) const { return hb_subset_cff2 (c); } public: FixedVersion version; /* Version of CFF2 table. set to 0x0200u */ 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 9ebd8e417f9..861a5eaedbb 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 @@ -83,18 +83,16 @@ struct CmapSubtableFormat4 HBUINT16 *endCode = c->start_embed (); hb_codepoint_t prev_endcp = 0xFFFF; - + it - | hb_apply ([&] (const hb_item_type _) - { - if (prev_endcp != 0xFFFF && prev_endcp + 1u != _.first) - { - HBUINT16 end_code; - end_code = prev_endcp; - c->copy (end_code); - } - prev_endcp = _.first; - }) - ; + for (const hb_item_type _ : +it) + { + if (prev_endcp != 0xFFFF && prev_endcp + 1u != _.first) + { + HBUINT16 end_code; + end_code = prev_endcp; + c->copy (end_code); + } + prev_endcp = _.first; + } { // last endCode @@ -121,19 +119,17 @@ struct CmapSubtableFormat4 HBUINT16 *startCode = c->start_embed (); hb_codepoint_t prev_cp = 0xFFFF; - + it - | hb_apply ([&] (const hb_item_type _) - { - if (prev_cp == 0xFFFF || prev_cp + 1u != _.first) - { - HBUINT16 start_code; - start_code = _.first; - c->copy (start_code); - } - - prev_cp = _.first; - }) - ; + for (const hb_item_type _ : +it) + { + if (prev_cp == 0xFFFF || prev_cp + 1u != _.first) + { + HBUINT16 start_code; + start_code = _.first; + c->copy (start_code); + } + + prev_cp = _.first; + } // There must be a final entry with end_code == 0xFFFF. if (it.len () == 0 || prev_cp != 0xFFFF) @@ -162,30 +158,28 @@ struct CmapSubtableFormat4 if ((char *)idDelta - (char *)startCode != (int) segcount * (int) HBINT16::static_size) return nullptr; - + it - | hb_apply ([&] (const hb_item_type _) - { - if (_.first == startCode[i]) - { - use_delta = true; - start_gid = _.second; - } - else if (_.second != last_gid + 1) use_delta = false; - - if (_.first == endCode[i]) - { - HBINT16 delta; - if (use_delta) delta = (int)start_gid - (int)startCode[i]; - else delta = 0; - c->copy (delta); - - i++; - } - - last_gid = _.second; - last_cp = _.first; - }) - ; + for (const hb_item_type _ : +it) + { + if (_.first == startCode[i]) + { + use_delta = true; + start_gid = _.second; + } + else if (_.second != last_gid + 1) use_delta = false; + + if (_.first == endCode[i]) + { + HBINT16 delta; + if (use_delta) delta = (int)start_gid - (int)startCode[i]; + else delta = 0; + c->copy (delta); + + i++; + } + + last_gid = _.second; + last_cp = _.first; + } if (it.len () == 0 || last_cp != 0xFFFF) { @@ -238,12 +232,21 @@ struct CmapSubtableFormat4 void serialize (hb_serialize_context_t *c, Iterator it) { + auto format4_iter = + + it + | hb_filter ([&] (const hb_pair_t _) + { return _.first <= 0xFFFF; }) + ; + + //comment off temporarily while we're working on supporting --gids option + //if (format4_iter.len () == 0) return; + unsigned table_initpos = c->length (); if (unlikely (!c->extend_min (*this))) return; this->format = 4; //serialize endCode[] - HBUINT16 *endCode = serialize_endcode_array (c, it); + HBUINT16 *endCode = serialize_endcode_array (c, format4_iter); if (unlikely (!endCode)) return; unsigned segcount = (c->length () - min_size) / HBUINT16::static_size; @@ -252,14 +255,14 @@ struct CmapSubtableFormat4 if (unlikely (!c->allocate_size (HBUINT16::static_size))) return; // 2 bytes of padding. // serialize startCode[] - HBUINT16 *startCode = serialize_startcode_array (c, it); + HBUINT16 *startCode = serialize_startcode_array (c, format4_iter); if (unlikely (!startCode)) return; //serialize idDelta[] - HBINT16 *idDelta = serialize_idDelta_array (c, it, endCode, startCode, segcount); + HBINT16 *idDelta = serialize_idDelta_array (c, format4_iter, endCode, startCode, segcount); if (unlikely (!idDelta)) return; - HBUINT16 *idRangeOffset = serialize_rangeoffset_glyid (c, it, endCode, startCode, idDelta, segcount); + HBUINT16 *idRangeOffset = serialize_rangeoffset_glyid (c, format4_iter, endCode, startCode, idDelta, segcount); if (unlikely (!c->check_success (idRangeOffset))) return; if (unlikely (!c->check_assign(this->length, c->length () - table_initpos))) return; @@ -291,27 +294,28 @@ struct CmapSubtableFormat4 bool get_glyph (hb_codepoint_t codepoint, hb_codepoint_t *glyph) const { - /* Custom two-array bsearch. */ - int min = 0, max = (int) this->segCount - 1; - const HBUINT16 *startCount = this->startCount; - const HBUINT16 *endCount = this->endCount; - unsigned int i; - while (min <= max) + struct CustomRange { - int mid = ((unsigned int) min + (unsigned int) max) / 2; - if (codepoint < startCount[mid]) - max = mid - 1; - else if (codepoint > endCount[mid]) - min = mid + 1; - else + int cmp (hb_codepoint_t k, + unsigned distance) const { - i = mid; - goto found; + if (k > last) return +1; + if (k < (&last)[distance]) return -1; + return 0; } - } - return false; + HBUINT16 last; + }; + + const HBUINT16 *found =hb_bsearch (codepoint, + this->endCount, + this->segCount, + 2, + _hb_cmp_method, + this->segCount + 1); + if (!found) + return false; + unsigned int i = found - endCount; - found: hb_codepoint_t gid; unsigned int rangeOffset = this->idRangeOffset[i]; if (rangeOffset == 0) @@ -333,8 +337,10 @@ struct CmapSubtableFormat4 *glyph = gid; return true; } + HB_INTERNAL static bool get_glyph_func (const void *obj, hb_codepoint_t codepoint, hb_codepoint_t *glyph) { return ((const accelerator_t *) obj)->get_glyph (codepoint, glyph); } + void collect_unicodes (hb_set_t *out) const { unsigned int count = this->segCount; @@ -528,20 +534,26 @@ struct CmapSubtableLongSegmented return true; } - void collect_unicodes (hb_set_t *out) const + void collect_unicodes (hb_set_t *out, unsigned int num_glyphs) const { for (unsigned int i = 0; i < this->groups.len; i++) { hb_codepoint_t start = this->groups[i].startCharCode; hb_codepoint_t end = hb_min ((hb_codepoint_t) this->groups[i].endCharCode, (hb_codepoint_t) HB_UNICODE_MAX); - for (hb_codepoint_t codepoint = start; codepoint <= end; codepoint++) + hb_codepoint_t gid = this->groups[i].glyphID; + if (!gid) { - hb_codepoint_t gid = T::group_get_glyph (this->groups[i], codepoint); - if (unlikely (!gid)) - continue; - out->add (codepoint); + /* Intention is: if (hb_is_same (T, CmapSubtableFormat13)) continue; */ + if (! T::group_get_glyph (this->groups[i], end)) continue; + start++; + gid++; } + if (unlikely ((unsigned int) gid >= num_glyphs)) continue; + if (unlikely ((unsigned int) (gid + end - start) >= num_glyphs)) + end = start + (hb_codepoint_t) num_glyphs - gid; + + out->add_range (start, end); } } @@ -582,33 +594,29 @@ struct CmapSubtableFormat12 : CmapSubtableLongSegmented hb_codepoint_t startCharCode = 0xFFFF, endCharCode = 0xFFFF; hb_codepoint_t glyphID = 0; - + it - | hb_apply ([&] (const hb_item_type _) - { - if (startCharCode == 0xFFFF) - { - startCharCode = _.first; - endCharCode = _.first; - glyphID = _.second; - } - else if (!_is_gid_consecutive (endCharCode, startCharCode, glyphID, _.first, _.second)) - { - CmapSubtableLongGroup grouprecord; - grouprecord.startCharCode = startCharCode; - grouprecord.endCharCode = endCharCode; - grouprecord.glyphID = glyphID; - c->copy (grouprecord); - - startCharCode = _.first; - endCharCode = _.first; - glyphID = _.second; - } - else - { - endCharCode = _.first; - } - }) - ; + for (const hb_item_type _ : +it) + { + if (startCharCode == 0xFFFF) + { + startCharCode = _.first; + endCharCode = _.first; + glyphID = _.second; + } + else if (!_is_gid_consecutive (endCharCode, startCharCode, glyphID, _.first, _.second)) + { + CmapSubtableLongGroup grouprecord; + grouprecord.startCharCode = startCharCode; + grouprecord.endCharCode = endCharCode; + grouprecord.glyphID = glyphID; + c->copy (grouprecord); + + startCharCode = _.first; + endCharCode = _.first; + glyphID = _.second; + } + else + endCharCode = _.first; + } CmapSubtableLongGroup record; record.startCharCode = startCharCode; @@ -772,7 +780,7 @@ struct NonDefaultUVS : SortedArrayOf { unsigned int count = len; for (unsigned int i = 0; i < count; i++) - out->add (arrayZ[i].glyphID); + out->add (arrayZ[i].unicodeValue); } void closure_glyphs (const hb_set_t *unicodes, @@ -839,6 +847,20 @@ struct VariationSelectorRecord return GLYPH_VARIANT_NOT_FOUND; } + VariationSelectorRecord(const VariationSelectorRecord& other) + { + *this = other; + } + + void operator= (const VariationSelectorRecord& other) + { + varSelector = other.varSelector; + HBUINT32 offset = other.defaultUVS; + defaultUVS = offset; + offset = other.nonDefaultUVS; + nonDefaultUVS = offset; + } + void collect_unicodes (hb_set_t *out, const void *base) const { (base+defaultUVS).collect_unicodes (out); @@ -856,50 +878,43 @@ struct VariationSelectorRecord nonDefaultUVS.sanitize (c, base)); } - VariationSelectorRecord* copy (hb_serialize_context_t *c, - const hb_set_t *unicodes, - const hb_set_t *glyphs, - const hb_map_t *glyph_map, - const void *src_base, - const void *dst_base) const + hb_pair_t + copy (hb_serialize_context_t *c, + const hb_set_t *unicodes, + const hb_set_t *glyphs, + const hb_map_t *glyph_map, + const void *base) const { auto snap = c->snapshot (); auto *out = c->embed (*this); - if (unlikely (!out)) return nullptr; + if (unlikely (!out)) return hb_pair (0, 0); out->defaultUVS = 0; out->nonDefaultUVS = 0; - bool drop = true; - - if (defaultUVS != 0) + unsigned non_default_uvs_objidx = 0; + if (nonDefaultUVS != 0) { c->push (); - if (c->copy (src_base+defaultUVS, unicodes)) - { - c->add_link (out->defaultUVS, c->pop_pack (), dst_base); - drop = false; - } + if (c->copy (base+nonDefaultUVS, unicodes, glyphs, glyph_map)) + non_default_uvs_objidx = c->pop_pack (); else c->pop_discard (); } - if (nonDefaultUVS != 0) + unsigned default_uvs_objidx = 0; + if (defaultUVS != 0) { c->push (); - if (c->copy (src_base+nonDefaultUVS, unicodes, glyphs, glyph_map)) - { - c->add_link (out->nonDefaultUVS, c->pop_pack (), dst_base); - drop = false; - } + if (c->copy (base+defaultUVS, unicodes)) + default_uvs_objidx = c->pop_pack (); else c->pop_discard (); } - if (drop) - { + + if (!default_uvs_objidx && !non_default_uvs_objidx) c->revert (snap); - return nullptr; - } - else return out; + + return hb_pair (default_uvs_objidx, non_default_uvs_objidx); } HBUINT24 varSelector; /* Variation selector. */ @@ -932,7 +947,7 @@ struct CmapSubtableFormat14 const hb_set_t *unicodes, const hb_set_t *glyphs, const hb_map_t *glyph_map, - const void *src_base) + const void *base) { auto snap = c->snapshot (); unsigned table_initpos = c->length (); @@ -941,17 +956,67 @@ struct CmapSubtableFormat14 if (unlikely (!c->extend_min (*this))) return; this->format = 14; - const CmapSubtableFormat14 *src_tbl = reinterpret_cast (src_base); - for (const VariationSelectorRecord& _ : src_tbl->record) - c->copy (_, unicodes, glyphs, glyph_map, src_base, this); + auto src_tbl = reinterpret_cast (base); + + /* + * Some versions of OTS require that offsets are in order. Due to the use + * of push()/pop_pack() serializing the variation records in order results + * in the offsets being in reverse order (first record has the largest + * offset). While this is perfectly valid, it will cause some versions of + * OTS to consider this table bad. + * + * So to prevent this issue we serialize the variation records in reverse + * order, so that the offsets are ordered from small to large. Since + * variation records are supposed to be in increasing order of varSelector + * we then have to reverse the order of the written variation selector + * records after everything is finalized. + */ + hb_vector_t> obj_indices; + for (int i = src_tbl->record.len - 1; i >= 0; i--) + { + hb_pair_t result = src_tbl->record[i].copy (c, unicodes, glyphs, glyph_map, base); + if (result.first || result.second) + obj_indices.push (result); + } if (c->length () - table_initpos == CmapSubtableFormat14::min_size) + { c->revert (snap); - else + return; + } + + int tail_len = init_tail - c->tail; + c->check_assign (this->length, c->length () - table_initpos + tail_len); + c->check_assign (this->record.len, + (c->length () - table_initpos - CmapSubtableFormat14::min_size) / + VariationSelectorRecord::static_size); + + /* Correct the incorrect write order by reversing the order of the variation + records array. */ + _reverse_variation_records (); + + /* Now that records are in the right order, we can set up the offsets. */ + _add_links_to_variation_records (c, obj_indices); + } + + void _reverse_variation_records () + { + record.as_array ().reverse (); + } + + void _add_links_to_variation_records (hb_serialize_context_t *c, + const hb_vector_t>& obj_indices) + { + for (unsigned i = 0; i < obj_indices.length; i++) { - int tail_len = init_tail - c->tail; - c->check_assign (this->length, c->length () - table_initpos + tail_len); - c->check_assign (this->record.len, (c->length () - table_initpos - CmapSubtableFormat14::min_size) / VariationSelectorRecord::static_size); + /* + * Since the record array has been reversed (see comments in copy()) + * but obj_indices has not been, the indices at obj_indices[i] + * are for the variation record at record[j]. + */ + int j = obj_indices.length - 1 - i; + c->add_link (record[j].defaultUVS, obj_indices[i].first); + c->add_link (record[j].nonDefaultUVS, obj_indices[i].second); } } @@ -966,6 +1031,12 @@ struct CmapSubtableFormat14 ; } + void collect_unicodes (hb_set_t *out) const + { + for (const VariationSelectorRecord& _ : record) + _.collect_unicodes (out, this); + } + bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); @@ -1001,15 +1072,15 @@ struct CmapSubtable default: return false; } } - void collect_unicodes (hb_set_t *out) const + void collect_unicodes (hb_set_t *out, unsigned int num_glyphs = UINT_MAX) const { switch (u.format) { case 0: u.format0 .collect_unicodes (out); return; case 4: u.format4 .collect_unicodes (out); return; case 6: u.format6 .collect_unicodes (out); return; case 10: u.format10.collect_unicodes (out); return; - case 12: u.format12.collect_unicodes (out); return; - case 13: u.format13.collect_unicodes (out); return; + case 12: u.format12.collect_unicodes (out, num_glyphs); return; + case 13: u.format13.collect_unicodes (out, num_glyphs); return; case 14: default: return; } @@ -1021,12 +1092,12 @@ struct CmapSubtable Iterator it, unsigned format, const hb_subset_plan_t *plan, - const void *src_base) + const void *base) { switch (format) { - case 4: u.format4.serialize (c, it); return; - case 12: u.format12.serialize (c, it); return; - case 14: u.format14.serialize (c, plan->unicodes, plan->_glyphset, plan->glyph_map, src_base); return; + case 4: return u.format4.serialize (c, it); + case 12: return u.format12.serialize (c, it); + case 14: return u.format14.serialize (c, plan->unicodes, plan->_glyphset, plan->glyph_map, base); default: return; } } @@ -1087,8 +1158,7 @@ struct EncodingRecord EncodingRecord* copy (hb_serialize_context_t *c, Iterator it, unsigned format, - const void *src_base, - const void *dst_base, + const void *base, const hb_subset_plan_t *plan, /* INOUT */ unsigned *objidx) const { @@ -1102,7 +1172,7 @@ struct EncodingRecord { CmapSubtable *cmapsubtable = c->push (); unsigned origin_length = c->length (); - cmapsubtable->serialize (c, it, format, plan, &(src_base+subtable)); + cmapsubtable->serialize (c, it, format, plan, &(base+subtable)); if (c->length () - origin_length > 0) *objidx = c->pop_pack (); else c->pop_discard (); } @@ -1113,7 +1183,7 @@ struct EncodingRecord return_trace (nullptr); } - c->add_link (out->subtable, *objidx, dst_base); + c->add_link (out->subtable, *objidx); return_trace (out); } @@ -1134,7 +1204,7 @@ struct cmap void serialize (hb_serialize_context_t *c, Iterator it, EncodingRecIter encodingrec_iter, - const void *src_base, + const void *base, const hb_subset_plan_t *plan) { if (unlikely (!c->extend_min ((*this)))) return; @@ -1144,11 +1214,14 @@ struct cmap for (const EncodingRecord& _ : encodingrec_iter) { - unsigned format = (src_base+_.subtable).u.format; + hb_set_t unicodes_set; + (base+_.subtable).collect_unicodes (&unicodes_set); - if (format == 4) c->copy (_, it, 4u, src_base, this, plan, &format4objidx); - else if (format == 12) c->copy (_, it, 12u, src_base, this, plan, &format12objidx); - else if (format == 14) c->copy (_, it, 14u, src_base, this, plan, &format14objidx); + unsigned format = (base+_.subtable).u.format; + + if (format == 4) c->copy (_, + it | hb_filter (unicodes_set, hb_first), 4u, base, plan, &format4objidx); + else if (format == 12) c->copy (_, + it | hb_filter (unicodes_set, hb_first), 12u, base, plan, &format12objidx); + else if (format == 14) c->copy (_, it, 14u, base, plan, &format14objidx); } c->check_assign(this->encodingRecord.len, (c->length () - cmap::min_size)/EncodingRecord::static_size); @@ -1187,7 +1260,6 @@ struct cmap }) ; - if (unlikely (!encodingrec_iter.len ())) return_trace (false); const EncodingRecord *unicode_bmp= nullptr, *unicode_ucs4 = nullptr, *ms_bmp = nullptr, *ms_ucs4 = nullptr; @@ -1205,7 +1277,7 @@ struct cmap else if (_.platformID == 3 && _.encodingID == 10) ms_ucs4 = table; } - if (unlikely (!unicode_bmp && !ms_bmp)) return_trace (false); + if (unlikely (!has_format12 && !unicode_bmp && !ms_bmp)) return_trace (false); if (unlikely (has_format12 && (!unicode_ucs4 && !ms_ucs4))) return_trace (false); auto it = @@ -1339,8 +1411,8 @@ struct cmap return get_nominal_glyph (unicode, glyph); } - void collect_unicodes (hb_set_t *out) const - { subtable->collect_unicodes (out); } + void collect_unicodes (hb_set_t *out, unsigned int num_glyphs) const + { subtable->collect_unicodes (out, num_glyphs); } void collect_variation_selectors (hb_set_t *out) const { subtable_uvs->collect_variation_selectors (out); } void collect_variation_unicodes (hb_codepoint_t variation_selector, @@ -1413,7 +1485,7 @@ struct cmap } const EncodingRecord *find_encodingrec (unsigned int platform_id, - unsigned int encoding_id) const + unsigned int encoding_id) const { EncodingRecord key; key.platformID = platform_id; @@ -1445,9 +1517,9 @@ struct cmap } protected: - HBUINT16 version; /* Table version number (0). */ + HBUINT16 version; /* Table version number (0). */ SortedArrayOf - encodingRecord; /* Encoding tables. */ + encodingRecord; /* Encoding tables. */ public: DEFINE_SIZE_ARRAY (4, encodingRecord); }; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-cbdt-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-cbdt-table.hh index 3498d3b360d..2500fbe3f22 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-cbdt-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-cbdt-table.hh @@ -21,7 +21,7 @@ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * - * Google Author(s): Seigo Nonaka + * Google Author(s): Seigo Nonaka, Calder Kitagawa */ #ifndef HB_OT_COLOR_CBDT_TABLE_HH @@ -43,6 +43,35 @@ namespace OT { +struct cblc_bitmap_size_subset_context_t +{ + const char *cbdt; + unsigned int cbdt_length; + hb_vector_t *cbdt_prime; + unsigned int size; /* INOUT + * Input: old size of IndexSubtable + * Output: new size of IndexSubtable + */ + unsigned int num_tables; /* INOUT + * Input: old number of subtables. + * Output: new number of subtables. + */ + hb_codepoint_t start_glyph; /* OUT */ + hb_codepoint_t end_glyph; /* OUT */ +}; + +static inline bool +_copy_data_to_cbdt (hb_vector_t *cbdt_prime, + const void *data, + unsigned length) +{ + unsigned int new_len = cbdt_prime->length + length; + if (unlikely (!cbdt_prime->alloc (new_len))) return false; + memcpy (cbdt_prime->arrayZ + cbdt_prime->length, data, length); + cbdt_prime->length = new_len; + return true; +} + struct SmallGlyphMetrics { bool sanitize (hb_sanitize_context_t *c) const @@ -56,7 +85,7 @@ struct SmallGlyphMetrics extents->x_bearing = font->em_scale_x (bearingX); extents->y_bearing = font->em_scale_y (bearingY); extents->width = font->em_scale_x (width); - extents->height = font->em_scale_y (-height); + extents->height = font->em_scale_y (-static_cast(height)); } HBUINT8 height; @@ -65,7 +94,7 @@ struct SmallGlyphMetrics HBINT8 bearingY; HBUINT8 advance; public: - DEFINE_SIZE_STATIC(5); + DEFINE_SIZE_STATIC (5); }; struct BigGlyphMetrics : SmallGlyphMetrics @@ -74,7 +103,7 @@ struct BigGlyphMetrics : SmallGlyphMetrics HBINT8 vertBearingY; HBUINT8 vertAdvance; public: - DEFINE_SIZE_STATIC(8); + DEFINE_SIZE_STATIC (8); }; struct SBitLineMetrics @@ -98,7 +127,7 @@ struct SBitLineMetrics HBINT8 padding1; HBINT8 padding2; public: - DEFINE_SIZE_STATIC(12); + DEFINE_SIZE_STATIC (12); }; @@ -118,7 +147,7 @@ struct IndexSubtableHeader HBUINT16 imageFormat; HBUINT32 imageDataOffset; public: - DEFINE_SIZE_STATIC(8); + DEFINE_SIZE_STATIC (8); }; template @@ -143,11 +172,23 @@ struct IndexSubtableFormat1Or3 return true; } + bool add_offset (hb_serialize_context_t *c, + unsigned int offset, + unsigned int *size /* OUT (accumulated) */) + { + TRACE_SERIALIZE (this); + Offset embedded_offset; + embedded_offset = offset; + *size += sizeof (OffsetType); + auto *o = c->embed (embedded_offset); + return_trace ((bool) o); + } + IndexSubtableHeader header; UnsizedArrayOf> - offsetArrayZ; + offsetArrayZ; public: - DEFINE_SIZE_ARRAY(8, offsetArrayZ); + DEFINE_SIZE_ARRAY (8, offsetArrayZ); }; struct IndexSubtableFormat1 : IndexSubtableFormat1Or3 {}; @@ -159,35 +200,153 @@ struct IndexSubtable { TRACE_SANITIZE (this); if (!u.header.sanitize (c)) return_trace (false); - switch (u.header.indexFormat) { + switch (u.header.indexFormat) + { case 1: return_trace (u.format1.sanitize (c, glyph_count)); case 3: return_trace (u.format3.sanitize (c, glyph_count)); default:return_trace (true); } } + bool + finish_subtable (hb_serialize_context_t *c, + unsigned int cbdt_prime_len, + unsigned int num_glyphs, + unsigned int *size /* OUT (accumulated) */) + { + TRACE_SERIALIZE (this); + + unsigned int local_offset = cbdt_prime_len - u.header.imageDataOffset; + switch (u.header.indexFormat) + { + case 1: return_trace (u.format1.add_offset (c, local_offset, size)); + case 3: { + if (!u.format3.add_offset (c, local_offset, size)) + return_trace (false); + if (!(num_glyphs & 0x01)) // Pad to 32-bit alignment if needed. + return_trace (u.format3.add_offset (c, 0, size)); + return_trace (true); + } + // TODO: implement 2, 4, 5. + case 2: case 4: // No-op. + case 5: // Pad to 32-bit aligned. + default: return_trace (false); + } + } + + bool + fill_missing_glyphs (hb_serialize_context_t *c, + unsigned int cbdt_prime_len, + unsigned int num_missing, + unsigned int *size /* OUT (accumulated) */, + unsigned int *num_glyphs /* OUT (accumulated) */) + { + TRACE_SERIALIZE (this); + + unsigned int local_offset = cbdt_prime_len - u.header.imageDataOffset; + switch (u.header.indexFormat) + { + case 1: { + for (unsigned int i = 0; i < num_missing; i++) + { + if (unlikely (!u.format1.add_offset (c, local_offset, size))) + return_trace (false); + *num_glyphs += 1; + } + return_trace (true); + } + case 3: { + for (unsigned int i = 0; i < num_missing; i++) + { + if (unlikely (!u.format3.add_offset (c, local_offset, size))) + return_trace (false); + *num_glyphs += 1; + } + return_trace (true); + } + // TODO: implement 2, 4, 5. + case 2: // Add empty space in cbdt_prime?. + case 4: case 5: // No-op as sparse is supported. + default: return_trace (false); + } + } + + bool + copy_glyph_at_idx (hb_serialize_context_t *c, unsigned int idx, + const char *cbdt, unsigned int cbdt_length, + hb_vector_t *cbdt_prime /* INOUT */, + IndexSubtable *subtable_prime /* INOUT */, + unsigned int *size /* OUT (accumulated) */) const + { + TRACE_SERIALIZE (this); + + unsigned int offset, length, format; + if (unlikely (!get_image_data (idx, &offset, &length, &format))) return_trace (false); + if (unlikely (offset > cbdt_length || cbdt_length - offset < length)) return_trace (false); + + auto *header_prime = subtable_prime->get_header (); + unsigned int new_local_offset = cbdt_prime->length - (unsigned int) header_prime->imageDataOffset; + if (unlikely (!_copy_data_to_cbdt (cbdt_prime, cbdt + offset, length))) return_trace (false); + + return_trace (subtable_prime->add_offset (c, new_local_offset, size)); + } + + bool + add_offset (hb_serialize_context_t *c, unsigned int local_offset, + unsigned int *size /* OUT (accumulated) */) + { + TRACE_SERIALIZE (this); + switch (u.header.indexFormat) + { + case 1: return_trace (u.format1.add_offset (c, local_offset, size)); + case 3: return_trace (u.format3.add_offset (c, local_offset, size)); + // TODO: Implement tables 2, 4, 5 + case 2: // Should be a no-op. + case 4: case 5: // Handle sparse cases. + default: return_trace (false); + } + } + bool get_extents (hb_glyph_extents_t *extents HB_UNUSED) const { - switch (u.header.indexFormat) { + switch (u.header.indexFormat) + { case 2: case 5: /* TODO */ case 1: case 3: case 4: /* Variable-metrics formats do not have metrics here. */ default:return (false); } } - bool get_image_data (unsigned int idx, - unsigned int *offset, - unsigned int *length, - unsigned int *format) const + bool + get_image_data (unsigned int idx, unsigned int *offset, + unsigned int *length, unsigned int *format) const { *format = u.header.imageFormat; - switch (u.header.indexFormat) { + switch (u.header.indexFormat) + { case 1: return u.format1.get_image_data (idx, offset, length); case 3: return u.format3.get_image_data (idx, offset, length); default: return false; } } + const IndexSubtableHeader* get_header () const { return &u.header; } + + void populate_header (unsigned index_format, + unsigned image_format, + unsigned int image_data_offset, + unsigned int *size) + { + u.header.indexFormat = index_format; + u.header.imageFormat = image_format; + u.header.imageDataOffset = image_data_offset; + switch (u.header.indexFormat) + { + case 1: *size += IndexSubtableFormat1::min_size; break; + case 3: *size += IndexSubtableFormat3::min_size; break; + } + } + protected: union { IndexSubtableHeader header; @@ -209,12 +368,133 @@ struct IndexSubtableRecord offsetToSubtable.sanitize (c, base, lastGlyphIndex - firstGlyphIndex + 1)); } - bool get_extents (hb_glyph_extents_t *extents, - const void *base) const + const IndexSubtable* get_subtable (const void *base) const + { + return &(base+offsetToSubtable); + } + + bool add_new_subtable (hb_subset_context_t* c, + cblc_bitmap_size_subset_context_t *bitmap_size_context, + IndexSubtableRecord *record, + const hb_vector_t> *lookup, /* IN */ + const void *base, + unsigned int *start /* INOUT */) const + { + TRACE_SERIALIZE (this); + + auto *subtable = c->serializer->start_embed (); + if (unlikely (!subtable)) return_trace (false); + if (unlikely (!c->serializer->extend_min (subtable))) return_trace (false); + + auto *old_subtable = get_subtable (base); + auto *old_header = old_subtable->get_header (); + + subtable->populate_header (old_header->indexFormat, + old_header->imageFormat, + bitmap_size_context->cbdt_prime->length, + &bitmap_size_context->size); + + unsigned int num_glyphs = 0; + bool early_exit = false; + for (unsigned int i = *start; i < lookup->length; i++) + { + hb_codepoint_t new_gid = (*lookup)[i].first; + const IndexSubtableRecord *next_record = (*lookup)[i].second; + const IndexSubtable *next_subtable = next_record->get_subtable (base); + auto *next_header = next_subtable->get_header (); + if (next_header != old_header) + { + *start = i; + early_exit = true; + break; + } + unsigned int num_missing = record->add_glyph_for_subset (new_gid); + if (unlikely (!subtable->fill_missing_glyphs (c->serializer, + bitmap_size_context->cbdt_prime->length, + num_missing, + &bitmap_size_context->size, + &num_glyphs))) + return_trace (false); + + hb_codepoint_t old_gid = 0; + c->plan->old_gid_for_new_gid (new_gid, &old_gid); + if (old_gid < next_record->firstGlyphIndex) + return_trace (false); + + unsigned int old_idx = (unsigned int) old_gid - next_record->firstGlyphIndex; + if (unlikely (!next_subtable->copy_glyph_at_idx (c->serializer, + old_idx, + bitmap_size_context->cbdt, + bitmap_size_context->cbdt_length, + bitmap_size_context->cbdt_prime, + subtable, + &bitmap_size_context->size))) + return_trace (false); + num_glyphs += 1; + } + if (!early_exit) + *start = lookup->length; + if (unlikely (!subtable->finish_subtable (c->serializer, + bitmap_size_context->cbdt_prime->length, + num_glyphs, + &bitmap_size_context->size))) + return_trace (false); + return_trace (true); + } + + bool add_new_record (hb_subset_context_t *c, + cblc_bitmap_size_subset_context_t *bitmap_size_context, + const hb_vector_t> *lookup, /* IN */ + const void *base, + unsigned int *start, /* INOUT */ + hb_vector_t* records /* INOUT */) const { - return (base+offsetToSubtable).get_extents (extents); + TRACE_SERIALIZE (this); + auto snap = c->serializer->snapshot (); + unsigned int old_size = bitmap_size_context->size; + unsigned int old_cbdt_prime_length = bitmap_size_context->cbdt_prime->length; + + // Set to invalid state to indicate filling glyphs is not yet started. + records->resize (records->length + 1); + (*records)[records->length - 1].firstGlyphIndex = 1; + (*records)[records->length - 1].lastGlyphIndex = 0; + bitmap_size_context->size += IndexSubtableRecord::min_size; + + c->serializer->push (); + + if (unlikely (!add_new_subtable (c, bitmap_size_context, &((*records)[records->length - 1]), lookup, base, start))) + { + c->serializer->pop_discard (); + c->serializer->revert (snap); + bitmap_size_context->cbdt_prime->shrink (old_cbdt_prime_length); + bitmap_size_context->size = old_size; + records->resize (records->length - 1); + return_trace (false); + } + + bitmap_size_context->num_tables += 1; + return_trace (true); } + unsigned int add_glyph_for_subset (hb_codepoint_t gid) + { + if (firstGlyphIndex > lastGlyphIndex) + { + firstGlyphIndex = gid; + lastGlyphIndex = gid; + return 0; + } + // TODO maybe assert? this shouldn't occur. + if (lastGlyphIndex > gid) + return 0; + unsigned int num_missing = (unsigned int) (gid - lastGlyphIndex - 1); + lastGlyphIndex = gid; + return num_missing; + } + + bool get_extents (hb_glyph_extents_t *extents, const void *base) const + { return (base+offsetToSubtable).get_extents (extents); } + bool get_image_data (unsigned int gid, const void *base, unsigned int *offset, @@ -230,7 +510,7 @@ struct IndexSubtableRecord HBGlyphID lastGlyphIndex; LOffsetTo offsetToSubtable; public: - DEFINE_SIZE_STATIC(8); + DEFINE_SIZE_STATIC (8); }; struct IndexSubtableArray @@ -243,6 +523,77 @@ struct IndexSubtableArray return_trace (indexSubtablesZ.sanitize (c, count, this)); } + void + build_lookup (hb_subset_context_t *c, cblc_bitmap_size_subset_context_t *bitmap_size_context, + hb_vector_t> *lookup /* OUT */) const + { + bool start_glyph_is_set = false; + for (hb_codepoint_t new_gid = 0; new_gid < c->plan->num_output_glyphs (); new_gid++) + { + hb_codepoint_t old_gid; + if (unlikely (!c->plan->old_gid_for_new_gid (new_gid, &old_gid))) continue; + + const IndexSubtableRecord* record = find_table (old_gid, bitmap_size_context->num_tables); + if (unlikely (!record)) continue; + + // Don't add gaps to the lookup. The best way to determine if a glyph is a + // gap is that it has no image data. + unsigned int offset, length, format; + if (unlikely (!record->get_image_data (old_gid, this, &offset, &length, &format))) continue; + + lookup->push (hb_pair_t (new_gid, record)); + + if (!start_glyph_is_set) + { + bitmap_size_context->start_glyph = new_gid; + start_glyph_is_set = true; + } + + bitmap_size_context->end_glyph = new_gid; + } + } + + bool + subset (hb_subset_context_t *c, + cblc_bitmap_size_subset_context_t *bitmap_size_context) const + { + TRACE_SUBSET (this); + + auto *dst = c->serializer->start_embed (); + if (unlikely (!dst)) return_trace (false); + + hb_vector_t> lookup; + build_lookup (c, bitmap_size_context, &lookup); + + bitmap_size_context->size = 0; + bitmap_size_context->num_tables = 0; + hb_vector_t records; + for (unsigned int start = 0; start < lookup.length;) + { + if (unlikely (!lookup[start].second->add_new_record (c, bitmap_size_context, &lookup, this, &start, &records))) + { + // Discard any leftover pushes to the serializer from successful records. + for (unsigned int i = 0; i < records.length; i++) + c->serializer->pop_discard (); + return_trace (false); + } + } + + /* Workaround to ensure offset ordering is from least to greatest when + * resolving links. */ + hb_vector_t objidxs; + for (unsigned int i = 0; i < records.length; i++) + objidxs.push (c->serializer->pop_pack ()); + for (unsigned int i = 0; i < records.length; i++) + { + IndexSubtableRecord* record = c->serializer->embed (records[i]); + if (unlikely (!record)) return_trace (false); + c->serializer->add_link (record->offsetToSubtable, objidxs[records.length - 1 - i]); + } + return_trace (true); + } + public: const IndexSubtableRecord* find_table (hb_codepoint_t glyph, unsigned int numTables) const { @@ -274,14 +625,48 @@ struct BitmapSizeTable vertical.sanitize (c)); } - const IndexSubtableRecord *find_table (hb_codepoint_t glyph, - const void *base, - const void **out_base) const + const IndexSubtableRecord * + find_table (hb_codepoint_t glyph, const void *base, const void **out_base) const { *out_base = &(base+indexSubtableArrayOffset); return (base+indexSubtableArrayOffset).find_table (glyph, numberOfIndexSubtables); } + bool + subset (hb_subset_context_t *c, const void *base, + const char *cbdt, unsigned int cbdt_length, + hb_vector_t *cbdt_prime /* INOUT */) const + { + TRACE_SUBSET (this); + auto *out_table = c->serializer->embed (this); + if (unlikely (!out_table)) return_trace (false); + + cblc_bitmap_size_subset_context_t bitmap_size_context; + bitmap_size_context.cbdt = cbdt; + bitmap_size_context.cbdt_length = cbdt_length; + bitmap_size_context.cbdt_prime = cbdt_prime; + bitmap_size_context.size = indexTablesSize; + bitmap_size_context.num_tables = numberOfIndexSubtables; + bitmap_size_context.start_glyph = 1; + bitmap_size_context.end_glyph = 0; + + if (!out_table->indexSubtableArrayOffset.serialize_subset (c, + indexSubtableArrayOffset, + base, + &bitmap_size_context)) + return_trace (false); + if (!bitmap_size_context.size || + !bitmap_size_context.num_tables || + bitmap_size_context.start_glyph > bitmap_size_context.end_glyph) + return_trace (false); + + out_table->indexTablesSize = bitmap_size_context.size; + out_table->numberOfIndexSubtables = bitmap_size_context.num_tables; + out_table->startGlyphIndex = bitmap_size_context.start_glyph; + out_table->endGlyphIndex = bitmap_size_context.end_glyph; + return_trace (true); + } + protected: LNNOffsetTo indexSubtableArrayOffset; @@ -297,7 +682,7 @@ struct BitmapSizeTable HBUINT8 bitDepth; HBINT8 flags; public: - DEFINE_SIZE_STATIC(48); + DEFINE_SIZE_STATIC (48); }; @@ -310,7 +695,7 @@ struct GlyphBitmapDataFormat17 SmallGlyphMetrics glyphMetrics; LArrayOf data; public: - DEFINE_SIZE_ARRAY(9, data); + DEFINE_SIZE_ARRAY (9, data); }; struct GlyphBitmapDataFormat18 @@ -318,14 +703,14 @@ struct GlyphBitmapDataFormat18 BigGlyphMetrics glyphMetrics; LArrayOf data; public: - DEFINE_SIZE_ARRAY(12, data); + DEFINE_SIZE_ARRAY (12, data); }; struct GlyphBitmapDataFormat19 { LArrayOf data; public: - DEFINE_SIZE_ARRAY(4, data); + DEFINE_SIZE_ARRAY (4, data); }; struct CBLC @@ -342,12 +727,50 @@ struct CBLC sizeTables.sanitize (c, this)); } + static bool + sink_cbdt (hb_subset_context_t *c, hb_vector_t* cbdt_prime) + { + hb_blob_t *cbdt_prime_blob = hb_blob_create (cbdt_prime->arrayZ, + cbdt_prime->length, + HB_MEMORY_MODE_WRITABLE, + cbdt_prime->arrayZ, + free); + cbdt_prime->init (); // Leak arrayZ to the blob. + bool ret = c->plan->add_table (HB_OT_TAG_CBDT, cbdt_prime_blob); + hb_blob_destroy (cbdt_prime_blob); + return ret; + } + + bool + subset_size_table (hb_subset_context_t *c, const BitmapSizeTable& table, + const char *cbdt /* IN */, unsigned int cbdt_length, + CBLC *cblc_prime /* INOUT */, hb_vector_t *cbdt_prime /* INOUT */) const + { + TRACE_SUBSET (this); + cblc_prime->sizeTables.len++; + + auto snap = c->serializer->snapshot (); + auto cbdt_prime_len = cbdt_prime->length; + + if (!table.subset (c, this, cbdt, cbdt_length, cbdt_prime)) + { + cblc_prime->sizeTables.len--; + c->serializer->revert (snap); + cbdt_prime->shrink (cbdt_prime_len); + return_trace (false); + } + return_trace (true); + } + + // Implemented in cc file as it depends on definition of CBDT. + HB_INTERNAL bool subset (hb_subset_context_t *c) const; + protected: const BitmapSizeTable &choose_strike (hb_font_t *font) const { unsigned count = sizeTables.len; if (unlikely (!count)) - return Null(BitmapSizeTable); + return Null (BitmapSizeTable); unsigned int requested_ppem = hb_max (font->x_ppem, font->y_ppem); if (!requested_ppem) @@ -373,7 +796,7 @@ struct CBLC FixedVersion<> version; LArrayOf sizeTables; public: - DEFINE_SIZE_ARRAY(8, sizeTables); + DEFINE_SIZE_ARRAY (8, sizeTables); }; struct CBDT @@ -384,8 +807,8 @@ struct CBDT { void init (hb_face_t *face) { - cblc = hb_sanitize_context_t().reference_table (face); - cbdt = hb_sanitize_context_t().reference_table (face); + cblc = hb_sanitize_context_t ().reference_table (face); + cbdt = hb_sanitize_context_t ().reference_table (face); upem = hb_face_get_upem (face); } @@ -396,8 +819,8 @@ struct CBDT this->cbdt.destroy (); } - bool get_extents (hb_font_t *font, hb_codepoint_t glyph, - hb_glyph_extents_t *extents) const + bool + get_extents (hb_font_t *font, hb_codepoint_t glyph, hb_glyph_extents_t *extents) const { const void *base; const BitmapSizeTable &strike = this->cblc->choose_strike (font); @@ -412,33 +835,27 @@ struct CBDT if (!subtable_record->get_image_data (glyph, base, &image_offset, &image_length, &image_format)) return false; + unsigned int cbdt_len = cbdt.get_length (); + if (unlikely (image_offset > cbdt_len || cbdt_len - image_offset < image_length)) + return false; + + switch (image_format) { - unsigned int cbdt_len = cbdt.get_length (); - if (unlikely (image_offset > cbdt_len || cbdt_len - image_offset < image_length)) + case 17: { + if (unlikely (image_length < GlyphBitmapDataFormat17::min_size)) return false; - - switch (image_format) - { - case 17: { - if (unlikely (image_length < GlyphBitmapDataFormat17::min_size)) - return false; - const GlyphBitmapDataFormat17& glyphFormat17 = - StructAtOffset (this->cbdt, image_offset); - glyphFormat17.glyphMetrics.get_extents (font, extents); - break; - } - case 18: { - if (unlikely (image_length < GlyphBitmapDataFormat18::min_size)) - return false; - const GlyphBitmapDataFormat18& glyphFormat18 = - StructAtOffset (this->cbdt, image_offset); - glyphFormat18.glyphMetrics.get_extents (font, extents); - break; - } - default: - // TODO: Support other image formats. - return false; - } + auto &glyphFormat17 = StructAtOffset (this->cbdt, image_offset); + glyphFormat17.glyphMetrics.get_extents (font, extents); + break; + } + case 18: { + if (unlikely (image_length < GlyphBitmapDataFormat18::min_size)) + return false; + auto &glyphFormat18 = StructAtOffset (this->cbdt, image_offset); + glyphFormat18.glyphMetrics.get_extents (font, extents); + break; + } + default: return false; /* TODO: Support other image formats. */ } /* Convert to font units. */ @@ -452,8 +869,8 @@ struct CBDT return true; } - hb_blob_t* reference_png (hb_font_t *font, - hb_codepoint_t glyph) const + hb_blob_t* + reference_png (hb_font_t *font, hb_codepoint_t glyph) const { const void *base; const BitmapSizeTable &strike = this->cblc->choose_strike (font); @@ -465,44 +882,41 @@ struct CBDT if (!subtable_record->get_image_data (glyph, base, &image_offset, &image_length, &image_format)) return hb_blob_get_empty (); + unsigned int cbdt_len = cbdt.get_length (); + if (unlikely (image_offset > cbdt_len || cbdt_len - image_offset < image_length)) + return hb_blob_get_empty (); + + switch (image_format) + { + case 17: { - unsigned int cbdt_len = cbdt.get_length (); - if (unlikely (image_offset > cbdt_len || cbdt_len - image_offset < image_length)) + if (unlikely (image_length < GlyphBitmapDataFormat17::min_size)) return hb_blob_get_empty (); - - switch (image_format) - { - case 17: { - if (unlikely (image_length < GlyphBitmapDataFormat17::min_size)) - return hb_blob_get_empty (); - const GlyphBitmapDataFormat17& glyphFormat17 = - StructAtOffset (this->cbdt, image_offset); - return hb_blob_create_sub_blob (cbdt.get_blob (), - image_offset + GlyphBitmapDataFormat17::min_size, - glyphFormat17.data.len); - } - case 18: { - if (unlikely (image_length < GlyphBitmapDataFormat18::min_size)) - return hb_blob_get_empty (); - const GlyphBitmapDataFormat18& glyphFormat18 = - StructAtOffset (this->cbdt, image_offset); - return hb_blob_create_sub_blob (cbdt.get_blob (), - image_offset + GlyphBitmapDataFormat18::min_size, - glyphFormat18.data.len); - } - case 19: { - if (unlikely (image_length < GlyphBitmapDataFormat19::min_size)) - return hb_blob_get_empty (); - const GlyphBitmapDataFormat19& glyphFormat19 = - StructAtOffset (this->cbdt, image_offset); - return hb_blob_create_sub_blob (cbdt.get_blob (), - image_offset + GlyphBitmapDataFormat19::min_size, - glyphFormat19.data.len); - } - } + auto &glyphFormat17 = StructAtOffset (this->cbdt, image_offset); + return hb_blob_create_sub_blob (cbdt.get_blob (), + image_offset + GlyphBitmapDataFormat17::min_size, + glyphFormat17.data.len); + } + case 18: + { + if (unlikely (image_length < GlyphBitmapDataFormat18::min_size)) + return hb_blob_get_empty (); + auto &glyphFormat18 = StructAtOffset (this->cbdt, image_offset); + return hb_blob_create_sub_blob (cbdt.get_blob (), + image_offset + GlyphBitmapDataFormat18::min_size, + glyphFormat18.data.len); + } + case 19: + { + if (unlikely (image_length < GlyphBitmapDataFormat19::min_size)) + return hb_blob_get_empty (); + auto &glyphFormat19 = StructAtOffset (this->cbdt, image_offset); + return hb_blob_create_sub_blob (cbdt.get_blob (), + image_offset + GlyphBitmapDataFormat19::min_size, + glyphFormat19.data.len); + } + default: return hb_blob_get_empty (); /* TODO: Support other image formats. */ } - - return hb_blob_get_empty (); } bool has_data () const { return cbdt.get_length (); } @@ -525,9 +939,41 @@ struct CBDT FixedVersion<> version; UnsizedArrayOf dataZ; public: - DEFINE_SIZE_ARRAY(4, dataZ); + DEFINE_SIZE_ARRAY (4, dataZ); }; +inline bool +CBLC::subset (hb_subset_context_t *c) const +{ + TRACE_SUBSET (this); + + auto *cblc_prime = c->serializer->start_embed (); + + // Use a vector as a secondary buffer as the tables need to be built in parallel. + hb_vector_t cbdt_prime; + + if (unlikely (!cblc_prime)) return_trace (false); + if (unlikely (!c->serializer->extend_min (cblc_prime))) return_trace (false); + cblc_prime->version = version; + + hb_blob_t* cbdt_blob = hb_sanitize_context_t ().reference_table (c->plan->source); + unsigned int cbdt_length; + CBDT* cbdt = (CBDT *) hb_blob_get_data (cbdt_blob, &cbdt_length); + if (unlikely (cbdt_length < CBDT::min_size)) + { + hb_blob_destroy (cbdt_blob); + return_trace (false); + } + _copy_data_to_cbdt (&cbdt_prime, cbdt, CBDT::min_size); + + for (const BitmapSizeTable& table : + sizeTables.iter ()) + subset_size_table (c, table, (const char *) cbdt, cbdt_length, cblc_prime, &cbdt_prime); + + hb_blob_destroy (cbdt_blob); + + return_trace (CBLC::sink_cbdt (c, &cbdt_prime)); +} + struct CBDT_accelerator_t : CBDT::accelerator_t {}; } /* namespace OT */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-colr-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-colr-table.hh index e2ed7c65490..82eab963371 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-colr-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-colr-table.hh @@ -1,5 +1,6 @@ /* * Copyright © 2018 Ebrahim Byagowi + * Copyright © 2020 Google, Inc. * * This is part of HarfBuzz, a text shaping library. * @@ -20,6 +21,8 @@ * 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): Calder Kitagawa */ #ifndef HB_OT_COLOR_COLR_TABLE_HH @@ -47,7 +50,7 @@ struct LayerRecord return_trace (c->check_struct (this)); } - protected: + public: HBGlyphID glyphId; /* Glyph ID of layer glyph */ Index colorIdx; /* Index value to use with a * selected color palette. @@ -112,6 +115,38 @@ struct COLR return glyph_layers.length; } + struct accelerator_t + { + accelerator_t () {} + ~accelerator_t () { fini (); } + + void init (hb_face_t *face) + { colr = hb_sanitize_context_t ().reference_table (face); } + + void fini () { this->colr.destroy (); } + + bool is_valid () { return colr.get_blob ()->length; } + + void closure_glyphs (hb_codepoint_t glyph, + hb_set_t *related_ids /* OUT */) const + { colr->closure_glyphs (glyph, related_ids); } + + private: + hb_blob_ptr_t colr; + }; + + void closure_glyphs (hb_codepoint_t glyph, + hb_set_t *related_ids /* OUT */) const + { + const BaseGlyphRecord *record = get_base_glyph_record (glyph); + if (!record) return; + + auto glyph_layers = (this+layersZ).as_array (numLayers).sub_array (record->firstLayerIdx, + record->numLayers); + if (!glyph_layers.length) return; + related_ids->add_array (&glyph_layers[0].glyphId, glyph_layers.length, LayerRecord::min_size); + } + bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); @@ -120,6 +155,111 @@ struct COLR (this+layersZ).sanitize (c, numLayers))); } + template + bool serialize (hb_serialize_context_t *c, + unsigned version, + BaseIterator base_it, + LayerIterator layer_it) + { + TRACE_SERIALIZE (this); + if (unlikely (base_it.len () != layer_it.len ())) + return_trace (false); + + if (unlikely (!c->extend_min (this))) return_trace (false); + this->version = version; + numLayers = 0; + numBaseGlyphs = base_it.len (); + baseGlyphsZ = COLR::min_size; + layersZ = COLR::min_size + numBaseGlyphs * BaseGlyphRecord::min_size; + + for (const hb_item_type& _ : + base_it.iter ()) + { + auto* record = c->embed (_); + if (unlikely (!record)) return_trace (false); + record->firstLayerIdx = numLayers; + numLayers += record->numLayers; + } + + for (const hb_item_type& _ : + layer_it.iter ()) + _.as_array ().copy (c); + + return_trace (true); + } + + const BaseGlyphRecord* get_base_glyph_record (hb_codepoint_t gid) const + { + if ((unsigned int) gid == 0) // Ignore notdef. + return nullptr; + const BaseGlyphRecord* record = &(this+baseGlyphsZ).bsearch (numBaseGlyphs, (unsigned int) gid); + if ((record && (hb_codepoint_t) record->glyphId != gid)) + record = nullptr; + return record; + } + + bool subset (hb_subset_context_t *c) const + { + TRACE_SUBSET (this); + + const hb_map_t &reverse_glyph_map = *c->plan->reverse_glyph_map; + + auto base_it = + + hb_range (c->plan->num_output_glyphs ()) + | hb_map_retains_sorting ([&](hb_codepoint_t new_gid) + { + hb_codepoint_t old_gid = reverse_glyph_map.get (new_gid); + + const BaseGlyphRecord* old_record = get_base_glyph_record (old_gid); + if (unlikely (!old_record)) + return hb_pair_t (false, Null (BaseGlyphRecord)); + + BaseGlyphRecord new_record; + new_record.glyphId = new_gid; + new_record.numLayers = old_record->numLayers; + return hb_pair_t (true, new_record); + }) + | hb_filter (hb_first) + | hb_map_retains_sorting (hb_second) + ; + + auto layer_it = + + hb_range (c->plan->num_output_glyphs ()) + | hb_map (reverse_glyph_map) + | hb_map_retains_sorting ([&](hb_codepoint_t old_gid) + { + const BaseGlyphRecord* old_record = get_base_glyph_record (old_gid); + hb_vector_t out_layers; + + if (unlikely (!old_record || + old_record->firstLayerIdx >= numLayers || + old_record->firstLayerIdx + old_record->numLayers > numLayers)) + return hb_pair_t> (false, out_layers); + + auto layers = (this+layersZ).as_array (numLayers).sub_array (old_record->firstLayerIdx, + old_record->numLayers); + out_layers.resize (layers.length); + for (unsigned int i = 0; i < layers.length; i++) { + out_layers[i] = layers[i]; + hb_codepoint_t new_gid = 0; + if (unlikely (!c->plan->new_gid_for_old_gid (out_layers[i].glyphId, &new_gid))) + return hb_pair_t> (false, out_layers); + out_layers[i].glyphId = new_gid; + } + + return hb_pair_t> (true, out_layers); + }) + | hb_filter (hb_first) + | hb_map_retains_sorting (hb_second) + ; + + if (unlikely (!base_it || !layer_it || base_it.len () != layer_it.len ())) + return_trace (false); + + COLR *colr_prime = c->serializer->start_embed (); + return_trace (colr_prime->serialize (c->serializer, version, base_it, layer_it)); + } + protected: HBUINT16 version; /* Table version number (starts at 0). */ HBUINT16 numBaseGlyphs; /* Number of Base Glyph Records. */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-cpal-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-cpal-table.hh index 1b3c7fc0b88..ce9f76e45e9 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-cpal-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-cpal-table.hh @@ -155,7 +155,7 @@ struct CPAL private: const CPALV1Tail& v1 () const { - if (version == 0) return Null(CPALV1Tail); + if (version == 0) return Null (CPALV1Tail); return StructAfter (*this); } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-sbix-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-sbix-table.hh index 35d3fd51056..09da11597da 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-sbix-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-sbix-table.hh @@ -1,5 +1,6 @@ /* * Copyright © 2018 Ebrahim Byagowi + * Copyright © 2020 Google, Inc. * * This is part of HarfBuzz, a text shaping library. * @@ -20,12 +21,15 @@ * 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): Calder Kitagawa */ #ifndef HB_OT_COLOR_SBIX_TABLE_HH #define HB_OT_COLOR_SBIX_TABLE_HH #include "hb-open-type.hh" +#include "hb-ot-layout-common.hh" /* * sbix -- Standard Bitmap Graphics @@ -40,6 +44,20 @@ namespace OT { struct SBIXGlyph { + SBIXGlyph* copy (hb_serialize_context_t *c, unsigned int data_length) const + { + TRACE_SERIALIZE (this); + SBIXGlyph* new_glyph = c->start_embed (); + if (unlikely (!new_glyph)) return_trace (nullptr); + if (unlikely (!c->extend_min (new_glyph))) return_trace (nullptr); + + new_glyph->xOffset = xOffset; + new_glyph->yOffset = yOffset; + new_glyph->graphicType = graphicType; + data.copy (c, data_length); + return_trace (new_glyph); + } + HBINT16 xOffset; /* The horizontal (x-axis) offset from the left * edge of the graphic to the glyph’s origin. * That is, the x-coordinate of the point on the @@ -62,6 +80,9 @@ struct SBIXGlyph struct SBIXStrike { + static unsigned int get_size (unsigned num_glyphs) + { return min_size + num_glyphs * HBUINT32::static_size; } + bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); @@ -116,6 +137,49 @@ struct SBIXStrike return hb_blob_create_sub_blob (sbix_blob, glyph_offset, glyph_length); } + bool subset (hb_subset_context_t *c, unsigned int available_len) const + { + TRACE_SUBSET (this); + unsigned int num_output_glyphs = c->plan->num_output_glyphs (); + + auto* out = c->serializer->start_embed (); + if (unlikely (!out)) return_trace (false); + auto snap = c->serializer->snapshot (); + if (unlikely (!c->serializer->extend (*out, num_output_glyphs + 1))) return_trace (false); + out->ppem = ppem; + out->resolution = resolution; + HBUINT32 head; + head = get_size (num_output_glyphs + 1); + + bool has_glyphs = false; + for (unsigned new_gid = 0; new_gid < num_output_glyphs; new_gid++) + { + hb_codepoint_t old_gid; + if (!c->plan->old_gid_for_new_gid (new_gid, &old_gid) || + unlikely (imageOffsetsZ[old_gid].is_null () || + imageOffsetsZ[old_gid + 1].is_null () || + imageOffsetsZ[old_gid + 1] <= imageOffsetsZ[old_gid] || + imageOffsetsZ[old_gid + 1] - imageOffsetsZ[old_gid] <= SBIXGlyph::min_size) || + (unsigned int) imageOffsetsZ[old_gid + 1] > available_len) + { + out->imageOffsetsZ[new_gid] = head; + continue; + } + has_glyphs = true; + unsigned int delta = imageOffsetsZ[old_gid + 1] - imageOffsetsZ[old_gid]; + unsigned int glyph_data_length = delta - SBIXGlyph::min_size; + if (!(this+imageOffsetsZ[old_gid]).copy (c->serializer, glyph_data_length)) + return_trace (false); + out->imageOffsetsZ[new_gid] = head; + head += delta; + } + if (has_glyphs) + out->imageOffsetsZ[num_output_glyphs] = head; + else + c->serializer->revert (snap); + return_trace (has_glyphs); + } + public: HBUINT16 ppem; /* The PPEM size for which this strike was designed. */ HBUINT16 resolution; /* The device pixel density (in PPI) for which this @@ -140,7 +204,7 @@ struct sbix { void init (hb_face_t *face) { - table = hb_sanitize_context_t().reference_table (face); + table = hb_sanitize_context_t ().reference_table (face); num_glyphs = face->get_num_glyphs (); } void fini () { table.destroy (); } @@ -173,7 +237,7 @@ struct sbix { unsigned count = table->strikes.len; if (unlikely (!count)) - return Null(SBIXStrike); + return Null (SBIXStrike); unsigned int requested_ppem = hb_max (font->x_ppem, font->y_ppem); if (!requested_ppem) @@ -237,7 +301,7 @@ struct sbix extents->x_bearing = x_offset; extents->y_bearing = png.IHDR.height + y_offset; extents->width = png.IHDR.width; - extents->height = -png.IHDR.height; + extents->height = -1 * png.IHDR.height; /* Convert to font units. */ if (strike_ppem) @@ -275,6 +339,63 @@ struct sbix strikes.sanitize (c, this))); } + bool + add_strike (hb_subset_context_t *c, unsigned i) const + { + if (strikes[i].is_null () || c->source_blob->length < (unsigned) strikes[i]) + return false; + + return (this+strikes[i]).subset (c, c->source_blob->length - (unsigned) strikes[i]); + } + + bool serialize_strike_offsets (hb_subset_context_t *c) const + { + TRACE_SERIALIZE (this); + + auto *out = c->serializer->start_embed> (); + if (unlikely (!out)) return_trace (false); + if (unlikely (!c->serializer->extend_min (out))) return_trace (false); + + hb_vector_t*> new_strikes; + hb_vector_t objidxs; + for (int i = strikes.len - 1; i >= 0; --i) + { + auto* o = out->serialize_append (c->serializer); + if (unlikely (!o)) return_trace (false); + *o = 0; + auto snap = c->serializer->snapshot (); + c->serializer->push (); + bool ret = add_strike (c, i); + if (!ret) + { + c->serializer->pop_discard (); + out->pop (); + c->serializer->revert (snap); + } + else + { + objidxs.push (c->serializer->pop_pack ()); + new_strikes.push (o); + } + } + for (unsigned int i = 0; i < new_strikes.length; ++i) + c->serializer->add_link (*new_strikes[i], objidxs[new_strikes.length - 1 - i]); + + return_trace (true); + } + + bool subset (hb_subset_context_t* c) const + { + TRACE_SUBSET (this); + + sbix *sbix_prime = c->serializer->start_embed (); + if (unlikely (!sbix_prime)) return_trace (false); + if (unlikely (!c->serializer->embed (this->version))) return_trace (false); + if (unlikely (!c->serializer->embed (this->flags))) return_trace (false); + + return_trace (serialize_strike_offsets (c)); + } + protected: HBUINT16 version; /* Table version number — set to 1 */ HBUINT16 flags; /* Bit 0: Set to 1. Bit 1: Draw outlines. diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-svg-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-svg-table.hh index 926d61e0faf..1cc40ae53fa 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-svg-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-color-svg-table.hh @@ -80,7 +80,7 @@ struct SVG struct accelerator_t { void init (hb_face_t *face) - { table = hb_sanitize_context_t().reference_table (face); } + { table = hb_sanitize_context_t ().reference_table (face); } void fini () { table.destroy (); } hb_blob_t *reference_blob_for_glyph (hb_codepoint_t glyph_id) const 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 96f94e4a9ec..a1dc88603a2 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 @@ -183,22 +183,21 @@ hb_ot_get_glyph_extents (hb_font_t *font, void *user_data HB_UNUSED) { const hb_ot_face_t *ot_face = (const hb_ot_face_t *) font_data; - bool ret = false; #if !defined(HB_NO_OT_FONT_BITMAP) && !defined(HB_NO_COLOR) - if (!ret) ret = ot_face->sbix->get_extents (font, glyph, extents); + if (ot_face->sbix->get_extents (font, glyph, extents)) return true; #endif - if (!ret) ret = ot_face->glyf->get_extents (font, glyph, extents); + if (ot_face->glyf->get_extents (font, glyph, extents)) return true; #ifndef HB_NO_OT_FONT_CFF - if (!ret) ret = ot_face->cff1->get_extents (font, glyph, extents); - if (!ret) ret = ot_face->cff2->get_extents (font, glyph, extents); + if (ot_face->cff1->get_extents (font, glyph, extents)) return true; + if (ot_face->cff2->get_extents (font, glyph, extents)) return true; #endif #if !defined(HB_NO_OT_FONT_BITMAP) && !defined(HB_NO_COLOR) - if (!ret) ret = ot_face->CBDT->get_extents (font, glyph, extents); + if (ot_face->CBDT->get_extents (font, glyph, extents)) return true; #endif // TODO Hook up side-bearings variations. - return ret; + return false; } #ifndef HB_NO_OT_FONT_GLYPH_NAMES @@ -210,7 +209,11 @@ hb_ot_get_glyph_name (hb_font_t *font HB_UNUSED, void *user_data HB_UNUSED) { const hb_ot_face_t *ot_face = (const hb_ot_face_t *) font_data; - return ot_face->post->get_glyph_name (glyph, name, size); + if (ot_face->post->get_glyph_name (glyph, name, size)) return true; +#ifndef HB_NO_OT_FONT_CFF + if (ot_face->cff1->get_glyph_name (glyph, name, size)) return true; +#endif + return false; } static hb_bool_t hb_ot_get_glyph_from_name (hb_font_t *font HB_UNUSED, @@ -220,7 +223,11 @@ hb_ot_get_glyph_from_name (hb_font_t *font HB_UNUSED, void *user_data HB_UNUSED) { const hb_ot_face_t *ot_face = (const hb_ot_face_t *) font_data; - return ot_face->post->get_glyph_from_name (name, len, glyph); + if (ot_face->post->get_glyph_from_name (name, len, glyph)) return true; +#ifndef HB_NO_OT_FONT_CFF + if (ot_face->cff1->get_glyph_from_name (name, len, glyph)) return true; +#endif + return false; } #endif diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-gasp-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-gasp-table.hh index 94fff58a158..4f291924afd 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-gasp-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-gasp-table.hh @@ -48,8 +48,8 @@ struct GaspRange } public: - HBUINT16 rangeMaxPPEM; /* Upper limit of range, in PPEM */ - HBUINT16 rangeGaspBehavior; + HBUINT16 rangeMaxPPEM; /* Upper limit of range, in PPEM */ + HBUINT16 rangeGaspBehavior; /* Flags describing desired rasterizer behavior. */ public: DEFINE_SIZE_STATIC (4); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-glyf-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-glyf-table.hh index 571e50ea0c7..ce7ffa9d1f8 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-glyf-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-glyf-table.hh @@ -34,8 +34,7 @@ #include "hb-ot-head-table.hh" #include "hb-ot-hmtx-table.hh" #include "hb-ot-var-gvar-table.hh" - -#include +#include "hb-draw.hh" namespace OT { @@ -148,7 +147,19 @@ struct glyf const hb_subset_plan_t *plan) { TRACE_SERIALIZE (this); + unsigned init_len = c->length (); for (const auto &_ : it) _.serialize (c, plan); + + /* As a special case when all glyph in the font are empty, add a zero byte + * to the table, so that OTS doesn’t reject it, and to make the table work + * on Windows as well. + * See https://github.com/khaledhosny/ots/issues/52 */ + if (init_len == c->length ()) + { + HBUINT8 empty_byte; + empty_byte = 0; + c->copy (empty_byte); + } return_trace (true); } @@ -229,18 +240,18 @@ struct glyf { enum composite_glyph_flag_t { - ARG_1_AND_2_ARE_WORDS = 0x0001, - ARGS_ARE_XY_VALUES = 0x0002, - ROUND_XY_TO_GRID = 0x0004, - WE_HAVE_A_SCALE = 0x0008, - MORE_COMPONENTS = 0x0020, - WE_HAVE_AN_X_AND_Y_SCALE = 0x0040, - WE_HAVE_A_TWO_BY_TWO = 0x0080, - WE_HAVE_INSTRUCTIONS = 0x0100, - USE_MY_METRICS = 0x0200, - OVERLAP_COMPOUND = 0x0400, - SCALED_COMPONENT_OFFSET = 0x0800, - UNSCALED_COMPONENT_OFFSET = 0x1000 + ARG_1_AND_2_ARE_WORDS = 0x0001, + ARGS_ARE_XY_VALUES = 0x0002, + ROUND_XY_TO_GRID = 0x0004, + WE_HAVE_A_SCALE = 0x0008, + MORE_COMPONENTS = 0x0020, + WE_HAVE_AN_X_AND_Y_SCALE = 0x0040, + WE_HAVE_A_TWO_BY_TWO = 0x0080, + WE_HAVE_INSTRUCTIONS = 0x0100, + USE_MY_METRICS = 0x0200, + OVERLAP_COMPOUND = 0x0400, + SCALED_COMPONENT_OFFSET = 0x0800, + UNSCALED_COMPONENT_OFFSET = 0x1000 }; unsigned int get_size () const @@ -361,7 +372,7 @@ struct glyf typedef const CompositeGlyphChain *__item_t__; composite_iter_t (hb_bytes_t glyph_, __item_t__ current_) : glyph (glyph_), current (current_) - { if (!in_range (current)) current = nullptr; } + { if (!check_range (current)) current = nullptr; } composite_iter_t () : glyph (hb_bytes_t ()), current (nullptr) {} const CompositeGlyphChain &__item__ () const { return *current; } @@ -372,16 +383,16 @@ struct glyf const CompositeGlyphChain *possible = &StructAfter (*current); - if (!in_range (possible)) { current = nullptr; return; } + if (!check_range (possible)) { current = nullptr; return; } current = possible; } bool operator != (const composite_iter_t& o) const { return glyph != o.glyph || current != o.current; } - bool in_range (const CompositeGlyphChain *composite) const + bool check_range (const CompositeGlyphChain *composite) const { - return glyph.in_range (composite, CompositeGlyphChain::min_size) - && glyph.in_range (composite, composite->get_size ()); + return glyph.check_range (composite, CompositeGlyphChain::min_size) + && glyph.check_range (composite, composite->get_size ()); } private: @@ -389,8 +400,29 @@ struct glyf __item_t__ current; }; + enum phantom_point_index_t + { + PHANTOM_LEFT = 0, + PHANTOM_RIGHT = 1, + PHANTOM_TOP = 2, + PHANTOM_BOTTOM = 3, + PHANTOM_COUNT = 4 + }; + struct Glyph { + enum simple_glyph_flag_t + { + FLAG_ON_CURVE = 0x01, + FLAG_X_SHORT = 0x02, + FLAG_Y_SHORT = 0x04, + FLAG_REPEAT = 0x08, + FLAG_X_SAME = 0x10, + FLAG_Y_SAME = 0x20, + FLAG_RESERVED1 = 0x40, + FLAG_RESERVED2 = 0x80 + }; + private: struct GlyphHeader { @@ -445,18 +477,6 @@ struct glyf return instructionLength; } - enum simple_glyph_flag_t - { - FLAG_ON_CURVE = 0x01, - FLAG_X_SHORT = 0x02, - FLAG_Y_SHORT = 0x04, - FLAG_REPEAT = 0x08, - FLAG_X_SAME = 0x10, - FLAG_Y_SAME = 0x20, - FLAG_RESERVED1 = 0x40, - FLAG_RESERVED2 = 0x80 - }; - const Glyph trim_padding () const { /* based on FontTools _g_l_y_f.py::trim */ @@ -470,7 +490,6 @@ struct glyf unsigned int num_instructions = StructAtOffset (glyph, 0); glyph += 2 + num_instructions; - if (unlikely (glyph + 2 >= glyph_end)) return Glyph (); unsigned int coord_bytes = 0; unsigned int coords_with_flags = 0; @@ -519,70 +538,53 @@ struct glyf dest_end = bytes.sub_array (glyph_length, bytes.length - glyph_length); } - struct x_setter_t - { - void set (contour_point_t &point, float v) const { point.x = v; } - bool is_short (uint8_t flag) const { return flag & FLAG_X_SHORT; } - bool is_same (uint8_t flag) const { return flag & FLAG_X_SAME; } - }; - - struct y_setter_t - { - void set (contour_point_t &point, float v) const { point.y = v; } - bool is_short (uint8_t flag) const { return flag & FLAG_Y_SHORT; } - bool is_same (uint8_t flag) const { return flag & FLAG_Y_SAME; } - }; - - template static bool read_points (const HBUINT8 *&p /* IN/OUT */, contour_point_vector_t &points_ /* IN/OUT */, - const hb_bytes_t &bytes) + const hb_bytes_t &bytes, + void (* setter) (contour_point_t &_, float v), + const simple_glyph_flag_t short_flag, + const simple_glyph_flag_t same_flag) { - T coord_setter; float v = 0; - for (unsigned int i = 0; i < points_.length - PHANTOM_COUNT; i++) + for (unsigned i = 0; i < points_.length; i++) { uint8_t flag = points_[i].flag; - if (coord_setter.is_short (flag)) + if (flag & short_flag) { - if (unlikely (!bytes.in_range (p))) return false; - if (coord_setter.is_same (flag)) + if (unlikely (!bytes.check_range (p))) return false; + if (flag & same_flag) v += *p++; else v -= *p++; } else { - if (!coord_setter.is_same (flag)) + if (!(flag & same_flag)) { - if (unlikely (!bytes.in_range ((const HBUINT16 *) p))) return false; + if (unlikely (!bytes.check_range ((const HBUINT16 *) p))) return false; v += *(const HBINT16 *) p; p += HBINT16::static_size; } } - coord_setter.set (points_[i], v); + setter (points_[i], v); } return true; } bool get_contour_points (contour_point_vector_t &points_ /* OUT */, - hb_vector_t &end_points_ /* OUT */, - const bool phantom_only=false) const + bool phantom_only = false) const { const HBUINT16 *endPtsOfContours = &StructAfter (header); int num_contours = header.numberOfContours; - if (unlikely (!bytes.in_range (&endPtsOfContours[num_contours + 1]))) return false; + if (unlikely (!bytes.check_range (&endPtsOfContours[num_contours + 1]))) return false; unsigned int num_points = endPtsOfContours[num_contours - 1] + 1; - points_.resize (num_points + PHANTOM_COUNT); + points_.resize (num_points); for (unsigned int i = 0; i < points_.length; i++) points_[i].init (); if (phantom_only) return true; - /* Read simple glyph points if !phantom_only */ - end_points_.resize (num_contours); - for (int i = 0; i < num_contours; i++) - end_points_[i] = endPtsOfContours[i]; + points_[endPtsOfContours[i]].is_end_point = true; /* Skip instructions */ const HBUINT8 *p = &StructAtOffset (&endPtsOfContours[num_contours + 1], @@ -591,12 +593,12 @@ struct glyf /* Read flags */ for (unsigned int i = 0; i < num_points; i++) { - if (unlikely (!bytes.in_range (p))) return false; + if (unlikely (!bytes.check_range (p))) return false; uint8_t flag = *p++; points_[i].flag = flag; if (flag & FLAG_REPEAT) { - if (unlikely (!bytes.in_range (p))) return false; + if (unlikely (!bytes.check_range (p))) return false; unsigned int repeat_count = *p++; while ((repeat_count-- > 0) && (++i < num_points)) points_[i].flag = flag; @@ -604,8 +606,10 @@ struct glyf } /* Read x & y coordinates */ - return (read_points (p, points_, bytes) && - read_points (p, points_, bytes)); + return (read_points (p, points_, bytes, + [] (contour_point_t &p, float v) { p.x = v; }, FLAG_X_SHORT, FLAG_X_SAME) && + read_points (p, points_, bytes, + [] (contour_point_t &p, float v) { p.y = v; }, FLAG_Y_SHORT, FLAG_Y_SAME)); } }; @@ -648,30 +652,10 @@ struct glyf /* Chop instructions off the end */ void drop_hints_bytes (hb_bytes_t &dest_start) const { dest_start = bytes.sub_array (0, bytes.length - instructions_length (bytes)); } - - bool get_contour_points (contour_point_vector_t &points_ /* OUT */, - hb_vector_t &end_points_ /* OUT */, - const bool phantom_only=false) const - { - /* add one pseudo point for each component in composite glyph */ - unsigned int num_points = hb_len (get_iterator ()); - points_.resize (num_points + PHANTOM_COUNT); - for (unsigned int i = 0; i < points_.length; i++) points_[i].init (); - return true; - } }; enum glyph_type_t { EMPTY, SIMPLE, COMPOSITE }; - enum phantom_point_index_t - { - PHANTOM_LEFT = 0, - PHANTOM_RIGHT = 1, - PHANTOM_TOP = 2, - PHANTOM_BOTTOM = 3, - PHANTOM_COUNT = 4 - }; - public: composite_iter_t get_composite_iterator () const { @@ -706,39 +690,130 @@ struct glyf } } - /* for a simple glyph, return contour end points, flags, along with coordinate points - * for a composite glyph, return pseudo component points - * in both cases points trailed with four phantom points + /* Note: Recursively calls itself. + * all_points includes phantom points */ - bool get_contour_points (contour_point_vector_t &points_ /* OUT */, - hb_vector_t &end_points_ /* OUT */, - const bool phantom_only=false) const + template + bool get_points (T glyph_for_gid, hb_font_t *font, + contour_point_vector_t &all_points /* OUT */, + bool phantom_only = false, + unsigned int depth = 0) const { + if (unlikely (depth > HB_MAX_NESTING_LEVEL)) return false; + contour_point_vector_t points; + switch (type) { - case COMPOSITE: return CompositeGlyph (*header, bytes).get_contour_points (points_, end_points_, phantom_only); - case SIMPLE: return SimpleGlyph (*header, bytes).get_contour_points (points_, end_points_, phantom_only); - default: - /* empty glyph */ - points_.resize (PHANTOM_COUNT); - for (unsigned int i = 0; i < points_.length; i++) points_[i].init (); - return true; + case COMPOSITE: + { + /* pseudo component points for each component in composite glyph */ + unsigned num_points = hb_len (CompositeGlyph (*header, bytes).get_iterator ()); + if (unlikely (!points.resize (num_points))) return false; + for (unsigned i = 0; i < points.length; i++) + points[i].init (); + break; + } + case SIMPLE: + if (unlikely (!SimpleGlyph (*header, bytes).get_contour_points (points, phantom_only))) + return false; + break; + default: return false; /* empty glyph */ } - } - bool is_simple_glyph () const { return type == SIMPLE; } - bool is_composite_glyph () const { return type == COMPOSITE; } + hb_face_t *face = font->face; - bool get_extents (hb_font_t *font, hb_codepoint_t gid, hb_glyph_extents_t *extents) const + /* Init phantom points */ + if (unlikely (!points.resize (points.length + PHANTOM_COUNT))) return false; + hb_array_t phantoms = points.sub_array (points.length - PHANTOM_COUNT, PHANTOM_COUNT); + { + for (unsigned i = 0; i < PHANTOM_COUNT; ++i) phantoms[i].init (); + int h_delta = (int) header->xMin - face->table.hmtx->get_side_bearing (gid); + int v_orig = (int) header->yMax + face->table.vmtx->get_side_bearing (gid); + unsigned h_adv = face->table.hmtx->get_advance (gid); + unsigned v_adv = face->table.vmtx->get_advance (gid); + phantoms[PHANTOM_LEFT].x = h_delta; + phantoms[PHANTOM_RIGHT].x = h_adv + h_delta; + phantoms[PHANTOM_TOP].y = v_orig; + phantoms[PHANTOM_BOTTOM].y = v_orig - (int) v_adv; + } + +#ifndef HB_NO_VAR + if (unlikely (!face->table.gvar->apply_deltas_to_points (gid, font, points.as_array ()))) + return false; +#endif + + switch (type) { + case SIMPLE: + all_points.extend (points.as_array ()); + break; + case COMPOSITE: + { + unsigned int comp_index = 0; + for (auto &item : get_composite_iterator ()) + { + contour_point_vector_t comp_points; + if (unlikely (!glyph_for_gid (item.glyphIndex).get_points (glyph_for_gid, font, comp_points, phantom_only, depth + 1)) + || comp_points.length < PHANTOM_COUNT) + return false; + + /* Copy phantom points from component if USE_MY_METRICS flag set */ + if (item.is_use_my_metrics ()) + for (unsigned int i = 0; i < PHANTOM_COUNT; i++) + phantoms[i] = comp_points[comp_points.length - PHANTOM_COUNT + i]; + + /* Apply component transformation & translation */ + item.transform_points (comp_points); + + /* Apply translation from gvar */ + comp_points.translate (points[comp_index]); + + if (item.is_anchored ()) + { + unsigned int p1, p2; + item.get_anchor_points (p1, p2); + if (likely (p1 < all_points.length && p2 < comp_points.length)) + { + contour_point_t delta; + delta.init (all_points[p1].x - comp_points[p2].x, + all_points[p1].y - comp_points[p2].y); + + comp_points.translate (delta); + } + } + + all_points.extend (comp_points.sub_array (0, comp_points.length - PHANTOM_COUNT)); + + comp_index++; + } + + all_points.extend (phantoms); + } break; + default: return false; + } + + if (depth == 0) /* Apply at top level */ + { + /* Undocumented rasterizer behavior: + * Shift points horizontally by the updated left side bearing + */ + contour_point_t delta; + delta.init (-phantoms[PHANTOM_LEFT].x, 0.f); + if (delta.x) all_points.translate (delta); + } + + return true; + } + + bool get_extents (hb_font_t *font, hb_glyph_extents_t *extents) const { if (type == EMPTY) return true; /* Empty glyph; zero extents. */ return header->get_extents (font, gid, extents); } - hb_bytes_t get_bytes () const { return bytes; } - const GlyphHeader &get_header () const { return *header; } + hb_bytes_t get_bytes () const { return bytes; } - Glyph (hb_bytes_t bytes_ = hb_bytes_t ()) : - bytes (bytes_), header (bytes.as ()) + Glyph (hb_bytes_t bytes_ = hb_bytes_t (), + hb_codepoint_t gid_ = (hb_codepoint_t) -1) : bytes (bytes_), gid (gid_), + header (bytes.as ()) { int num_contours = header->numberOfContours; if (unlikely (num_contours == 0)) type = EMPTY; @@ -748,6 +823,7 @@ struct glyf protected: hb_bytes_t bytes; + hb_codepoint_t gid; const GlyphHeader *header; unsigned type; }; @@ -771,6 +847,7 @@ struct glyf glyf_table = hb_sanitize_context_t ().reference_table (face); num_glyphs = hb_max (1u, loca_table.get_length () / (short_offset ? 2 : 4)) - 1; + num_glyphs = hb_min (num_glyphs, face->get_num_glyphs ()); } void fini () @@ -779,223 +856,137 @@ struct glyf glyf_table.destroy (); } - enum phantom_point_index_t - { - PHANTOM_LEFT = 0, - PHANTOM_RIGHT = 1, - PHANTOM_TOP = 2, - PHANTOM_BOTTOM = 3, - PHANTOM_COUNT = 4 - }; - protected: - - void init_phantom_points (hb_codepoint_t gid, hb_array_t &phantoms /* IN/OUT */) const + template + bool get_points (hb_font_t *font, hb_codepoint_t gid, T consumer) const { - const Glyph &glyph = glyph_for_gid (gid); - int h_delta = (int) glyph.get_header ().xMin - face->table.hmtx->get_side_bearing (gid); - int v_orig = (int) glyph.get_header ().yMax + face->table.vmtx->get_side_bearing (gid); - unsigned int h_adv = face->table.hmtx->get_advance (gid); - unsigned int v_adv = face->table.vmtx->get_advance (gid); - - phantoms[PHANTOM_LEFT].x = h_delta; - phantoms[PHANTOM_RIGHT].x = h_adv + h_delta; - phantoms[PHANTOM_TOP].y = v_orig; - phantoms[PHANTOM_BOTTOM].y = v_orig - (int) v_adv; - } + /* Making this alloc free is not that easy + https://github.com/harfbuzz/harfbuzz/issues/2095 + mostly because of gvar handling in VF fonts, + perhaps a separate path for non-VF fonts can be considered */ + contour_point_vector_t all_points; - struct contour_bounds_t - { - contour_bounds_t () { min_x = min_y = FLT_MAX; max_x = max_y = -FLT_MAX; } + bool phantom_only = !consumer.is_consuming_contour_points (); + if (unlikely (!glyph_for_gid (gid).get_points ([this] (hb_codepoint_t gid) -> const Glyph { return this->glyph_for_gid (gid); }, + font, all_points, phantom_only))) + return false; - void add (const contour_point_t &p) + if (consumer.is_consuming_contour_points ()) { - min_x = hb_min (min_x, p.x); - min_y = hb_min (min_y, p.y); - max_x = hb_max (max_x, p.x); - max_y = hb_max (max_y, p.y); + for (unsigned point_index = 0; point_index + 4 < all_points.length; ++point_index) + consumer.consume_point (all_points[point_index]); + consumer.points_end (); } - bool empty () const { return (min_x >= max_x) || (min_y >= max_y); } - - void get_extents (hb_font_t *font, hb_glyph_extents_t *extents) - { - if (unlikely (empty ())) - { - extents->width = 0; - extents->x_bearing = 0; - extents->height = 0; - extents->y_bearing = 0; - return; - } - extents->x_bearing = font->em_scalef_x (min_x); - extents->width = font->em_scalef_x (max_x - min_x); - extents->y_bearing = font->em_scalef_y (max_y); - extents->height = font->em_scalef_y (min_y - max_y); - } + /* Where to write phantoms, nullptr if not requested */ + contour_point_t *phantoms = consumer.get_phantoms_sink (); + if (phantoms) + for (unsigned i = 0; i < PHANTOM_COUNT; ++i) + phantoms[i] = all_points[all_points.length - PHANTOM_COUNT + i]; - protected: - float min_x, min_y, max_x, max_y; - }; + return true; + } + public: #ifndef HB_NO_VAR - /* Note: Recursively calls itself. - * all_points includes phantom points - */ - bool get_points_var (hb_codepoint_t gid, - const int *coords, unsigned int coord_count, - contour_point_vector_t &all_points /* OUT */, - unsigned int depth = 0) const + struct points_aggregator_t { - if (unlikely (depth++ > HB_MAX_NESTING_LEVEL)) return false; - contour_point_vector_t points; - hb_vector_t end_points; - const Glyph &glyph = glyph_for_gid (gid); - if (unlikely (!glyph.get_contour_points (points, end_points))) return false; - hb_array_t phantoms = points.sub_array (points.length - PHANTOM_COUNT, PHANTOM_COUNT); - init_phantom_points (gid, phantoms); - if (unlikely (!face->table.gvar->apply_deltas_to_points (gid, coords, coord_count, points.as_array (), end_points.as_array ()))) return false; + hb_font_t *font; + hb_glyph_extents_t *extents; + contour_point_t *phantoms; - unsigned int comp_index = 0; - if (glyph.is_simple_glyph ()) - all_points.extend (points.as_array ()); - else if (glyph.is_composite_glyph ()) + struct contour_bounds_t { - for (auto &item : glyph.get_composite_iterator ()) - { - contour_point_vector_t comp_points; - if (unlikely (!get_points_var (item.glyphIndex, coords, coord_count, - comp_points, depth)) - || comp_points.length < PHANTOM_COUNT) - return false; - - /* Copy phantom points from component if USE_MY_METRICS flag set */ - if (item.is_use_my_metrics ()) - for (unsigned int i = 0; i < PHANTOM_COUNT; i++) - phantoms[i] = comp_points[comp_points.length - PHANTOM_COUNT + i]; + contour_bounds_t () { min_x = min_y = FLT_MAX; max_x = max_y = -FLT_MAX; } - /* Apply component transformation & translation */ - item.transform_points (comp_points); + void add (const contour_point_t &p) + { + min_x = hb_min (min_x, p.x); + min_y = hb_min (min_y, p.y); + max_x = hb_max (max_x, p.x); + max_y = hb_max (max_y, p.y); + } - /* Apply translatation from gvar */ - comp_points.translate (points[comp_index]); + bool empty () const { return (min_x >= max_x) || (min_y >= max_y); } - if (item.is_anchored ()) + void get_extents (hb_font_t *font, hb_glyph_extents_t *extents) + { + if (unlikely (empty ())) { - unsigned int p1, p2; - item.get_anchor_points (p1, p2); - if (likely (p1 < all_points.length && p2 < comp_points.length)) - { - contour_point_t delta; - delta.init (all_points[p1].x - comp_points[p2].x, - all_points[p1].y - comp_points[p2].y); - - comp_points.translate (delta); - } + extents->width = 0; + extents->x_bearing = 0; + extents->height = 0; + extents->y_bearing = 0; + return; } - - all_points.extend (comp_points.sub_array (0, comp_points.length - PHANTOM_COUNT)); - - comp_index++; + extents->x_bearing = font->em_scalef_x (min_x); + extents->width = font->em_scalef_x (max_x - min_x); + extents->y_bearing = font->em_scalef_y (max_y); + extents->height = font->em_scalef_y (min_y - max_y); } - all_points.extend (phantoms); - } - else return false; + protected: + float min_x, min_y, max_x, max_y; + } bounds; - return true; - } - - bool get_points_bearing_applied (hb_font_t *font, hb_codepoint_t gid, contour_point_vector_t &all_points) const - { - if (unlikely (!get_points_var (gid, font->coords, font->num_coords, all_points) || - all_points.length < PHANTOM_COUNT)) return false; - - /* Undocumented rasterizer behavior: - * Shift points horizontally by the updated left side bearing - */ - contour_point_t delta; - delta.init (-all_points[all_points.length - PHANTOM_COUNT + PHANTOM_LEFT].x, 0.f); - if (delta.x) all_points.translate (delta); - return true; - } - - protected: - - bool get_var_extents_and_phantoms (hb_font_t *font, hb_codepoint_t gid, - hb_glyph_extents_t *extents=nullptr /* OUT */, - contour_point_vector_t *phantoms=nullptr /* OUT */) const - { - contour_point_vector_t all_points; - if (!unlikely (get_points_bearing_applied (font, gid, all_points))) return false; - if (extents) + points_aggregator_t (hb_font_t *font_, hb_glyph_extents_t *extents_, contour_point_t *phantoms_) { - contour_bounds_t bounds; - for (unsigned int i = 0; i + PHANTOM_COUNT < all_points.length; i++) - bounds.add (all_points[i]); - bounds.get_extents (font, extents); + font = font_; + extents = extents_; + phantoms = phantoms_; + if (extents) bounds = contour_bounds_t (); } - if (phantoms) - for (unsigned int i = 0; i < PHANTOM_COUNT; i++) - (*phantoms)[i] = all_points[all_points.length - PHANTOM_COUNT + i]; - return true; - } - bool get_var_metrics (hb_font_t *font, hb_codepoint_t gid, - contour_point_vector_t &phantoms) const - { return get_var_extents_and_phantoms (font, gid, nullptr, &phantoms); } + void consume_point (const contour_point_t &point) { bounds.add (point); } + void points_end () { bounds.get_extents (font, extents); } - bool get_extents_var (hb_font_t *font, hb_codepoint_t gid, - hb_glyph_extents_t *extents) const - { return get_var_extents_and_phantoms (font, gid, extents); } -#endif + bool is_consuming_contour_points () { return extents; } + contour_point_t *get_phantoms_sink () { return phantoms; } + }; - public: -#ifndef HB_NO_VAR - unsigned int get_advance_var (hb_font_t *font, hb_codepoint_t gid, - bool is_vertical) const + unsigned int + get_advance_var (hb_font_t *font, hb_codepoint_t gid, bool is_vertical) const { bool success = false; - contour_point_vector_t phantoms; - phantoms.resize (PHANTOM_COUNT); + contour_point_t phantoms[PHANTOM_COUNT]; if (likely (font->num_coords == face->table.gvar->get_axis_count ())) - success = get_var_metrics (font, gid, phantoms); + success = get_points (font, gid, points_aggregator_t (font, nullptr, phantoms)); if (unlikely (!success)) - return is_vertical ? face->table.vmtx->get_advance (gid) : face->table.hmtx->get_advance (gid); + return is_vertical + ? face->table.vmtx->get_advance (gid) + : face->table.hmtx->get_advance (gid); - if (is_vertical) - return roundf (phantoms[PHANTOM_TOP].y - phantoms[PHANTOM_BOTTOM].y); - else - return roundf (phantoms[PHANTOM_RIGHT].x - phantoms[PHANTOM_LEFT].x); + return is_vertical + ? roundf (phantoms[PHANTOM_TOP].y - phantoms[PHANTOM_BOTTOM].y) + : roundf (phantoms[PHANTOM_RIGHT].x - phantoms[PHANTOM_LEFT].x); } int get_side_bearing_var (hb_font_t *font, hb_codepoint_t gid, bool is_vertical) const { hb_glyph_extents_t extents; - contour_point_vector_t phantoms; - phantoms.resize (PHANTOM_COUNT); - if (unlikely (!get_var_extents_and_phantoms (font, gid, &extents, &phantoms))) - return is_vertical ? face->table.vmtx->get_side_bearing (gid) : face->table.hmtx->get_side_bearing (gid); + contour_point_t phantoms[PHANTOM_COUNT]; + if (unlikely (!get_points (font, gid, points_aggregator_t (font, &extents, phantoms)))) + return is_vertical + ? face->table.vmtx->get_side_bearing (gid) + : face->table.hmtx->get_side_bearing (gid); - return is_vertical ? ceil (phantoms[PHANTOM_TOP].y) - extents.y_bearing : floor (phantoms[PHANTOM_LEFT].x); + return is_vertical + ? ceilf (phantoms[PHANTOM_TOP].y) - extents.y_bearing + : floorf (phantoms[PHANTOM_LEFT].x); } #endif bool get_extents (hb_font_t *font, hb_codepoint_t gid, hb_glyph_extents_t *extents) const { + if (unlikely (gid >= num_glyphs)) return false; #ifndef HB_NO_VAR - unsigned int coord_count; - const int *coords = hb_font_get_var_coords_normalized (font, &coord_count); - if (coords && coord_count > 0 && coord_count == face->table.gvar->get_axis_count ()) - return get_extents_var (font, gid, extents); + if (font->num_coords && font->num_coords == face->table.gvar->get_axis_count ()) + return get_points (font, gid, points_aggregator_t (font, extents, nullptr)); #endif - - if (unlikely (gid >= num_glyphs)) return false; - - return glyph_for_gid (gid).get_extents (font, gid, extents); + return glyph_for_gid (gid).get_extents (font, extents); } const Glyph @@ -1021,7 +1012,7 @@ struct glyf return Glyph (); Glyph glyph (hb_bytes_t ((const char *) this->glyf_table + start_offset, - end_offset - start_offset)); + end_offset - start_offset), gid); return needs_padding_removal ? glyph.trim_padding () : glyph; } @@ -1036,9 +1027,130 @@ struct glyf gids_to_retain->add (gid); for (auto &item : glyph_for_gid (gid).get_composite_iterator ()) - add_gid_and_children (item.glyphIndex, gids_to_retain, depth); + add_gid_and_children (item.glyphIndex, gids_to_retain, depth); } +#ifdef HB_EXPERIMENTAL_API + struct path_builder_t + { + hb_font_t *font; + draw_helper_t *draw_helper; + + struct optional_point_t + { + optional_point_t () { has_data = false; } + optional_point_t (float x_, float y_) { x = x_; y = y_; has_data = true; } + + bool has_data; + float x; + float y; + + optional_point_t lerp (optional_point_t p, float t) + { return optional_point_t (x + t * (p.x - x), y + t * (p.y - y)); } + } first_oncurve, first_offcurve, last_offcurve; + + path_builder_t (hb_font_t *font_, draw_helper_t &draw_helper_) + { + font = font_; + draw_helper = &draw_helper_; + first_oncurve = first_offcurve = last_offcurve = optional_point_t (); + } + + /* based on https://github.com/RazrFalcon/ttf-parser/blob/4f32821/src/glyf.rs#L287 + See also: + * https://developer.apple.com/fonts/TrueType-Reference-Manual/RM01/Chap1.html + * https://stackoverflow.com/a/20772557 */ + void consume_point (const contour_point_t &point) + { + /* Skip empty contours */ + if (unlikely (point.is_end_point && !first_oncurve.has_data && !first_offcurve.has_data)) + return; + + bool is_on_curve = point.flag & Glyph::FLAG_ON_CURVE; + optional_point_t p (point.x, point.y); + if (!first_oncurve.has_data) + { + if (is_on_curve) + { + first_oncurve = p; + draw_helper->move_to (font->em_scalef_x (p.x), font->em_scalef_y (p.y)); + } + else + { + if (first_offcurve.has_data) + { + optional_point_t mid = first_offcurve.lerp (p, .5f); + first_oncurve = mid; + last_offcurve = p; + draw_helper->move_to (font->em_scalef_x (mid.x), font->em_scalef_y (mid.y)); + } + else + first_offcurve = p; + } + } + else + { + if (last_offcurve.has_data) + { + if (is_on_curve) + { + draw_helper->quadratic_to (font->em_scalef_x (last_offcurve.x), font->em_scalef_y (last_offcurve.y), + font->em_scalef_x (p.x), font->em_scalef_y (p.y)); + last_offcurve = optional_point_t (); + } + else + { + optional_point_t mid = last_offcurve.lerp (p, .5f); + draw_helper->quadratic_to (font->em_scalef_x (last_offcurve.x), font->em_scalef_y (last_offcurve.y), + font->em_scalef_x (mid.x), font->em_scalef_y (mid.y)); + last_offcurve = p; + } + } + else + { + if (is_on_curve) + draw_helper->line_to (font->em_scalef_x (p.x), font->em_scalef_y (p.y)); + else + last_offcurve = p; + } + } + + if (point.is_end_point) + { + if (first_offcurve.has_data && last_offcurve.has_data) + { + optional_point_t mid = last_offcurve.lerp (first_offcurve, .5f); + draw_helper->quadratic_to (font->em_scalef_x (last_offcurve.x), font->em_scalef_y (last_offcurve.y), + font->em_scalef_x (mid.x), font->em_scalef_y (mid.y)); + last_offcurve = optional_point_t (); + /* now check the rest */ + } + + if (first_offcurve.has_data && first_oncurve.has_data) + draw_helper->quadratic_to (font->em_scalef_x (first_offcurve.x), font->em_scalef_y (first_offcurve.y), + font->em_scalef_x (first_oncurve.x), font->em_scalef_y (first_oncurve.y)); + else if (last_offcurve.has_data && first_oncurve.has_data) + draw_helper->quadratic_to (font->em_scalef_x (last_offcurve.x), font->em_scalef_y (last_offcurve.y), + font->em_scalef_x (first_oncurve.x), font->em_scalef_y (first_oncurve.y)); + else if (first_oncurve.has_data) + draw_helper->line_to (font->em_scalef_x (first_oncurve.x), font->em_scalef_y (first_oncurve.y)); + + /* Getting ready for the next contour */ + first_oncurve = first_offcurve = last_offcurve = optional_point_t (); + draw_helper->end_path (); + } + } + void points_end () {} + + bool is_consuming_contour_points () { return true; } + contour_point_t *get_phantoms_sink () { return nullptr; } + }; + + bool + get_path (hb_font_t *font, hb_codepoint_t gid, draw_helper_t &draw_helper) const + { return get_points (font, gid, path_builder_t (font, draw_helper)); } +#endif + private: bool short_offset; unsigned int num_glyphs; @@ -1073,7 +1185,7 @@ struct glyf pad_length--; } - if (!unlikely (dest_glyph.length)) return_trace (true); + if (unlikely (!dest_glyph.length)) return_trace (true); /* update components gids */ for (auto &_ : Glyph (dest_glyph).get_composite_iterator ()) diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-hdmx-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-hdmx-table.hh index 96c1d1f634f..c9c391bad5f 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-hdmx-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-hdmx-table.hh @@ -107,11 +107,8 @@ struct hdmx this->numRecords = it.len (); this->sizeDeviceRecord = DeviceRecord::get_size (it ? (*it).second.len () : 0); - + it - | hb_apply ([c] (const hb_item_type& _) { - c->start_embed ()->serialize (c, _.first, _.second); - }) - ; + for (const hb_item_type& _ : +it) + c->start_embed ()->serialize (c, _.first, _.second); return_trace (c->successful); } @@ -134,10 +131,10 @@ struct hdmx auto row = + hb_range (c->plan->num_output_glyphs ()) | hb_map (c->plan->reverse_glyph_map) - | hb_map ([=] (hb_codepoint_t _) + | hb_map ([this, c, device_record] (hb_codepoint_t _) { if (c->plan->is_empty_glyph (_)) - return Null(HBUINT8); + return Null (HBUINT8); return device_record->widthsZ.as_array (get_num_glyphs ()) [_]; }) ; @@ -164,10 +161,12 @@ struct hdmx } protected: - HBUINT16 version; /* Table version number (0) */ - HBUINT16 numRecords; /* Number of device records. */ - HBUINT32 sizeDeviceRecord; /* Size of a device record, 32-bit aligned. */ - DeviceRecord firstDeviceRecord; /* Array of device records. */ + HBUINT16 version; /* Table version number (0) */ + HBUINT16 numRecords; /* Number of device records. */ + HBUINT32 sizeDeviceRecord; + /* Size of a device record, 32-bit aligned. */ + DeviceRecord firstDeviceRecord; + /* Array of device records. */ public: DEFINE_SIZE_MIN (8); }; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-head-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-head-table.hh index 3c0bb3d6ddd..5613a96dbfd 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-head-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-head-table.hh @@ -54,6 +54,18 @@ struct head return 16 <= upem && upem <= 16384 ? upem : 1000; } + bool serialize (hb_serialize_context_t *c) const + { + TRACE_SERIALIZE (this); + return_trace ((bool) c->embed (this)); + } + + bool subset (hb_subset_context_t *c) const + { + TRACE_SUBSET (this); + return_trace (serialize (c->serializer)); + } + enum mac_style_flag_t { BOLD = 1u<<0, ITALIC = 1u<<1, diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-hhea-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-hhea-table.hh index 778b6c51323..d9c9bd35377 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-hhea-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-hhea-table.hh @@ -54,35 +54,38 @@ struct _hea } public: - FixedVersion<>version; /* 0x00010000u for version 1.0. */ - FWORD ascender; /* Typographic ascent. */ - FWORD descender; /* Typographic descent. */ - FWORD lineGap; /* Typographic line gap. */ - UFWORD advanceMax; /* Maximum advance width/height value in - * metrics table. */ - FWORD minLeadingBearing; /* Minimum left/top sidebearing value in - * metrics table. */ - FWORD minTrailingBearing; /* Minimum right/bottom sidebearing value; - * calculated as Min(aw - lsb - - * (xMax - xMin)) for horizontal. */ - FWORD maxExtent; /* horizontal: Max(lsb + (xMax - xMin)), - * vertical: minLeadingBearing+(yMax-yMin). */ - HBINT16 caretSlopeRise; /* Used to calculate the slope of the - * cursor (rise/run); 1 for vertical caret, - * 0 for horizontal.*/ - HBINT16 caretSlopeRun; /* 0 for vertical caret, 1 for horizontal. */ - HBINT16 caretOffset; /* The amount by which a slanted - * highlight on a glyph needs - * to be shifted to produce the - * best appearance. Set to 0 for - * non-slanted fonts. */ - HBINT16 reserved1; /* Set to 0. */ - HBINT16 reserved2; /* Set to 0. */ - HBINT16 reserved3; /* Set to 0. */ - HBINT16 reserved4; /* Set to 0. */ - HBINT16 metricDataFormat; /* 0 for current format. */ - HBUINT16 numberOfLongMetrics; /* Number of LongMetric entries in metric - * table. */ + FixedVersion<>version; /* 0x00010000u for version 1.0. */ + FWORD ascender; /* Typographic ascent. */ + FWORD descender; /* Typographic descent. */ + FWORD lineGap; /* Typographic line gap. */ + UFWORD advanceMax; /* Maximum advance width/height value in + * metrics table. */ + FWORD minLeadingBearing; + /* Minimum left/top sidebearing value in + * metrics table. */ + FWORD minTrailingBearing; + /* Minimum right/bottom sidebearing value; + * calculated as Min(aw - lsb - + * (xMax - xMin)) for horizontal. */ + FWORD maxExtent; /* horizontal: Max(lsb + (xMax - xMin)), + * vertical: minLeadingBearing+(yMax-yMin). */ + HBINT16 caretSlopeRise; /* Used to calculate the slope of the + * cursor (rise/run); 1 for vertical caret, + * 0 for horizontal.*/ + HBINT16 caretSlopeRun; /* 0 for vertical caret, 1 for horizontal. */ + HBINT16 caretOffset; /* The amount by which a slanted + * highlight on a glyph needs + * to be shifted to produce the + * best appearance. Set to 0 for + * non-slanted fonts. */ + HBINT16 reserved1; /* Set to 0. */ + HBINT16 reserved2; /* Set to 0. */ + HBINT16 reserved3; /* Set to 0. */ + HBINT16 reserved4; /* Set to 0. */ + HBINT16 metricDataFormat;/* 0 for current format. */ + HBUINT16 numberOfLongMetrics; + /* Number of LongMetric entries in metric + * table. */ public: DEFINE_SIZE_STATIC (36); }; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-hmtx-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-hmtx-table.hh index e20b3726226..413774284f1 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-hmtx-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-hmtx-table.hh @@ -169,7 +169,7 @@ struct hmtxvmtx num_advances = T::is_horizontal ? face->table.hhea->numberOfLongMetrics : face->table.vhea->numberOfLongMetrics; - table = hb_sanitize_context_t().reference_table (face, T::tableTag); + table = hb_sanitize_context_t ().reference_table (face, T::tableTag); /* Cap num_metrics() and num_advances() based on table length. */ unsigned int len = table.get_length (); @@ -186,7 +186,7 @@ struct hmtxvmtx table = hb_blob_get_empty (); } - var_table = hb_sanitize_context_t().reference_table (face, T::variationsTag); + var_table = hb_sanitize_context_t ().reference_table (face, T::variationsTag); } void fini () @@ -216,7 +216,7 @@ struct hmtxvmtx return side_bearing; if (var_table.get_length ()) - return side_bearing + var_table->get_side_bearing_var (glyph, font->coords, font->num_coords); // TODO Optimize?! + return side_bearing + var_table->get_side_bearing_var (glyph, font->coords, font->num_coords); // TODO Optimize?! return _glyf_get_side_bearing_var (font, glyph, T::tableTag == HB_OT_TAG_vmtx); #else @@ -250,7 +250,7 @@ struct hmtxvmtx return advance; if (var_table.get_length ()) - return advance + roundf (var_table->get_advance_var (font, glyph)); // TODO Optimize?! + return advance + roundf (var_table->get_advance_var (glyph, font)); // TODO Optimize?! return _glyf_get_advance_var (font, glyph, T::tableTag == HB_OT_TAG_vmtx); #else @@ -295,27 +295,29 @@ struct hmtxvmtx }; protected: - UnsizedArrayOflongMetricZ;/* Paired advance width and leading - * bearing values for each glyph. The - * value numOfHMetrics comes from - * the 'hhea' table. If the font is - * monospaced, only one entry need - * be in the array, but that entry is - * required. The last entry applies to - * all subsequent glyphs. */ -/*UnsizedArrayOf leadingBearingX;*//* Here the advance is assumed - * to be the same as the advance - * for the last entry above. The - * number of entries in this array is - * derived from numGlyphs (from 'maxp' - * table) minus numberOfLongMetrics. - * This generally is used with a run - * of monospaced glyphs (e.g., Kanji - * fonts or Courier fonts). Only one - * run is allowed and it must be at - * the end. This allows a monospaced - * font to vary the side bearing - * values for each glyph. */ + UnsizedArrayOf + longMetricZ; /* Paired advance width and leading + * bearing values for each glyph. The + * value numOfHMetrics comes from + * the 'hhea' table. If the font is + * monospaced, only one entry need + * be in the array, but that entry is + * required. The last entry applies to + * all subsequent glyphs. */ +/*UnsizedArrayOf leadingBearingX;*/ + /* Here the advance is assumed + * to be the same as the advance + * for the last entry above. The + * number of entries in this array is + * derived from numGlyphs (from 'maxp' + * table) minus numberOfLongMetrics. + * This generally is used with a run + * of monospaced glyphs (e.g., Kanji + * fonts or Courier fonts). Only one + * run is allowed and it must be at + * the end. This allows a monospaced + * font to vary the side bearing + * values for each glyph. */ public: DEFINE_SIZE_ARRAY (0, longMetricZ); }; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-kern-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-kern-table.hh index 36e5a358e6a..3563cab8bd8 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-kern-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-kern-table.hh @@ -86,21 +86,26 @@ struct KernSubTableFormat3 } protected: - KernSubTableHeader header; - HBUINT16 glyphCount; /* The number of glyphs in this font. */ - HBUINT8 kernValueCount; /* The number of kerning values. */ - HBUINT8 leftClassCount; /* The number of left-hand classes. */ - HBUINT8 rightClassCount;/* The number of right-hand classes. */ - HBUINT8 flags; /* Set to zero (reserved for future use). */ - UnsizedArrayOf kernValueZ; /* The kerning values. - * Length kernValueCount. */ + KernSubTableHeader + header; + HBUINT16 glyphCount; /* The number of glyphs in this font. */ + HBUINT8 kernValueCount; /* The number of kerning values. */ + HBUINT8 leftClassCount; /* The number of left-hand classes. */ + HBUINT8 rightClassCount;/* The number of right-hand classes. */ + HBUINT8 flags; /* Set to zero (reserved for future use). */ + UnsizedArrayOf + kernValueZ; /* The kerning values. + * Length kernValueCount. */ #if 0 - UnsizedArrayOfleftClass; /* The left-hand classes. - * Length glyphCount. */ - UnsizedArrayOfrightClass; /* The right-hand classes. - * Length glyphCount. */ - UnsizedArrayOfkernIndex; /* The indices into the kernValue array. - * Length leftClassCount * rightClassCount */ + UnsizedArrayOf + leftClass; /* The left-hand classes. + * Length glyphCount. */ + UnsizedArrayOf + rightClass; /* The right-hand classes. + * Length glyphCount. */ + UnsizedArrayOfkernIndex; + /* The indices into the kernValue array. + * Length leftClassCount * rightClassCount */ #endif public: DEFINE_SIZE_ARRAY (KernSubTableHeader::static_size + 6, kernValueZ); @@ -246,8 +251,8 @@ struct KernAATSubTableHeader HBUINT8 coverage; /* Coverage bits. */ HBUINT8 format; /* Subtable format. */ HBUINT16 tupleIndex; /* The tuple index (used for variations fonts). - * This value specifies which tuple this subtable covers. - * Note: We don't implement. */ + * This value specifies which tuple this subtable covers. + * Note: We don't implement. */ public: DEFINE_SIZE_STATIC (8); }; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh index fa08140f565..68ad17a2314 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh @@ -60,6 +60,18 @@ #define HB_MAX_LANGSYS 2000 #endif +#ifndef HB_MAX_FEATURES +#define HB_MAX_FEATURES 750 +#endif + +#ifndef HB_MAX_FEATURE_INDICES +#define HB_MAX_FEATURE_INDICES 1500 +#endif + +#ifndef HB_MAX_LOOKUP_INDICES +#define HB_MAX_LOOKUP_INDICES 20000 +#endif + namespace OT { @@ -73,48 +85,130 @@ static inline void Coverage_serialize (hb_serialize_context_t *c, template static inline void ClassDef_serialize (hb_serialize_context_t *c, - Iterator it); + Iterator it); static void ClassDef_remap_and_serialize (hb_serialize_context_t *c, - const hb_set_t &glyphset, - const hb_map_t &gid_klass_map, - hb_sorted_vector_t glyphs, - hb_sorted_vector_t klasses, - hb_map_t *klass_map /*INOUT*/); + const hb_set_t &glyphset, + const hb_map_t &gid_klass_map, + hb_sorted_vector_t &glyphs, + const hb_set_t &klasses, + hb_map_t *klass_map /*INOUT*/); + +struct hb_subset_layout_context_t : + hb_dispatch_context_t +{ + const char *get_name () { return "SUBSET_LAYOUT"; } + static return_t default_return_value () { return hb_empty_t (); } + + bool visitScript () + { + return script_count++ < HB_MAX_SCRIPTS; + } + + bool visitLangSys () + { + return langsys_count++ < HB_MAX_LANGSYS; + } + bool visitFeatureIndex (int count) + { + feature_index_count += count; + return feature_index_count < HB_MAX_FEATURE_INDICES; + } + + bool visitLookupIndex() + { + lookup_index_count++; + return lookup_index_count < HB_MAX_LOOKUP_INDICES; + } + + hb_subset_context_t *subset_context; + const hb_tag_t table_tag; + const hb_map_t *lookup_index_map; + const hb_map_t *feature_index_map; + unsigned debug_depth; + + hb_subset_layout_context_t (hb_subset_context_t *c_, + hb_tag_t tag_, + hb_map_t *lookup_map_, + hb_map_t *feature_map_) : + subset_context (c_), + table_tag (tag_), + lookup_index_map (lookup_map_), + feature_index_map (feature_map_), + debug_depth (0), + script_count (0), + langsys_count (0), + feature_index_count (0), + lookup_index_count (0) + {} + + private: + unsigned script_count; + unsigned langsys_count; + unsigned feature_index_count; + unsigned lookup_index_count; +}; template struct subset_offset_array_t { - subset_offset_array_t - (hb_subset_context_t *subset_context, - OutputArray& out, - const void *src_base, - const void *dest_base) - : _subset_context(subset_context), _out (out), _src_base (src_base), _dest_base (dest_base) {} + subset_offset_array_t (hb_subset_context_t *subset_context_, + OutputArray& out_, + const void *base_) : subset_context (subset_context_), + out (out_), base (base_) {} template - bool - operator () - (T&& offset) + bool operator () (T&& offset) { - auto *o = _out.serialize_append (_subset_context->serializer); + auto *o = out.serialize_append (subset_context->serializer); if (unlikely (!o)) return false; - auto snap = _subset_context->serializer->snapshot (); - bool ret = o->serialize_subset (_subset_context, offset, _src_base, _dest_base); + auto snap = subset_context->serializer->snapshot (); + bool ret = o->serialize_subset (subset_context, offset, base); if (!ret) { - _out.pop (); - _subset_context->serializer->revert (snap); + out.pop (); + subset_context->serializer->revert (snap); } return ret; } private: - hb_subset_context_t *_subset_context; - OutputArray &_out; - const void *_src_base; - const void *_dest_base; + hb_subset_context_t *subset_context; + OutputArray &out; + const void *base; +}; + + +template +struct subset_offset_array_arg_t +{ + subset_offset_array_arg_t (hb_subset_context_t *subset_context_, + OutputArray& out_, + const void *base_, + Arg &&arg_) : subset_context (subset_context_), out (out_), + base (base_), arg (arg_) {} + + template + bool operator () (T&& offset) + { + auto *o = out.serialize_append (subset_context->serializer); + if (unlikely (!o)) return false; + auto snap = subset_context->serializer->snapshot (); + bool ret = o->serialize_subset (subset_context, offset, base, arg); + if (!ret) + { + out.pop (); + subset_context->serializer->revert (snap); + } + return ret; + } + + private: + hb_subset_context_t *subset_context; + OutputArray &out; + const void *base; + Arg &&arg; }; /* @@ -126,16 +220,55 @@ struct { template subset_offset_array_t - operator () - (hb_subset_context_t *subset_context, - OutputArray& out, - const void *src_base, - const void *dest_base) const + operator () (hb_subset_context_t *subset_context, OutputArray& out, + const void *base) const + { return subset_offset_array_t (subset_context, out, base); } + + /* Variant with one extra argument passed to serialize_subset */ + template + subset_offset_array_arg_t + operator () (hb_subset_context_t *subset_context, OutputArray& out, + const void *base, Arg &&arg) const + { return subset_offset_array_arg_t (subset_context, out, base, arg); } +} +HB_FUNCOBJ (subset_offset_array); + +template +struct subset_record_array_t +{ + subset_record_array_t (hb_subset_layout_context_t *c_, OutputArray* out_, + const void *base_) : subset_layout_context (c_), + out (out_), base (base_) {} + + template + void + operator () (T&& record) { - return subset_offset_array_t (subset_context, out, src_base, dest_base); + auto snap = subset_layout_context->subset_context->serializer->snapshot (); + bool ret = record.subset (subset_layout_context, base); + if (!ret) subset_layout_context->subset_context->serializer->revert (snap); + else out->len++; } + + private: + hb_subset_layout_context_t *subset_layout_context; + OutputArray *out; + const void *base; +}; + +/* + * Helper to subset a RecordList/record array. Subsets each Record in the array and + * discards the record if the subset operation returns false. + */ +struct +{ + template + subset_record_array_t + operator () (hb_subset_layout_context_t *c, OutputArray* out, + const void *base) const + { return subset_record_array_t (c, out, base); } } -HB_FUNCOBJ (subset_offset_array); +HB_FUNCOBJ (subset_record_array); /* * @@ -153,31 +286,20 @@ struct Record_sanitize_closure_t { const void *list_base; }; -struct RecordList_subset_context_t { - - RecordList_subset_context_t() : script_count (0), langsys_count (0) - {} - - bool visitScript () - { - return script_count++ < HB_MAX_SCRIPTS; - } - - bool visitLangSys () - { - return langsys_count++ < HB_MAX_LANGSYS; - } - - private: - unsigned int script_count; - unsigned int langsys_count; -}; - template struct Record { int cmp (hb_tag_t a) const { return tag.cmp (a); } + bool subset (hb_subset_layout_context_t *c, const void *base) const + { + TRACE_SUBSET (this); + auto *out = c->subset_context->serializer->embed (this); + if (unlikely (!out)) return_trace (false); + bool ret = out->offset.serialize_subset (c->subset_context, offset, base, c, &tag); + return_trace (ret); + } + bool sanitize (hb_sanitize_context_t *c, const void *base) const { TRACE_SANITIZE (this); @@ -226,29 +348,16 @@ struct RecordListOf : RecordArrayOf const Type& operator [] (unsigned int i) const { return this+this->get_offset (i); } - bool subset (hb_subset_context_t *c) const + bool subset (hb_subset_context_t *c, + hb_subset_layout_context_t *l) const { TRACE_SUBSET (this); auto *out = c->serializer->start_embed (*this); if (unlikely (!c->serializer->extend_min (out))) return_trace (false); - RecordList_subset_context_t record_list_context; - - unsigned int count = this->len; - for (unsigned int i = 0; i < count; i++) - { - auto *record = out->serialize_append (c->serializer); - if (unlikely (!record)) return false; - auto snap = c->serializer->snapshot (); - if (record->offset.serialize_subset (c, this->get_offset (i), this, out, &record_list_context)) - { - record->tag = this->get_tag(i); - continue; - } - out->pop (); - c->serializer->revert (snap); - } - + + this->iter () + | hb_apply (subset_record_array (l, out, this)) + ; return_trace (true); } @@ -259,11 +368,31 @@ struct RecordListOf : RecordArrayOf } }; +struct Feature; + +struct RecordListOfFeature : RecordListOf +{ + bool subset (hb_subset_context_t *c, + hb_subset_layout_context_t *l) const + { + TRACE_SUBSET (this); + auto *out = c->serializer->start_embed (*this); + if (unlikely (!out || !c->serializer->extend_min (out))) return_trace (false); + + unsigned count = this->len; + + hb_zip (*this, hb_range (count)) + | hb_filter (l->feature_index_map, hb_second) + | hb_map (hb_first) + | hb_apply (subset_record_array (l, out, this)) + ; + return_trace (true); + } +}; struct RangeRecord { int cmp (hb_codepoint_t g) const - { return g < start ? -1 : g <= end ? 0 : +1; } + { return g < first ? -1 : g <= last ? 0 : +1; } bool sanitize (hb_sanitize_context_t *c) const { @@ -272,14 +401,14 @@ struct RangeRecord } bool intersects (const hb_set_t *glyphs) const - { return glyphs->intersects (start, end); } + { return glyphs->intersects (first, last); } template - bool add_coverage (set_t *glyphs) const - { return glyphs->add_range (start, end); } + bool collect_coverage (set_t *glyphs) const + { return glyphs->add_range (first, last); } - HBGlyphID start; /* First GlyphID in the range */ - HBGlyphID end; /* Last GlyphID in the range */ + HBGlyphID first; /* First GlyphID in the range */ + HBGlyphID last; /* Last GlyphID in the range */ HBUINT16 value; /* Value */ public: DEFINE_SIZE_STATIC (6); @@ -289,6 +418,29 @@ DECLARE_NULL_NAMESPACE_BYTES (OT, RangeRecord); struct IndexArray : ArrayOf { + bool intersects (const hb_map_t *indexes) const + { return hb_any (*this, indexes); } + + template + void serialize (hb_serialize_context_t *c, + hb_subset_layout_context_t *l, + Iterator it) + { + if (!it) return; + if (unlikely (!c->extend_min ((*this)))) return; + + for (const auto _ : it) + { + if (!l->visitLookupIndex()) break; + + Index i; + i = _; + c->copy (i); + this->len++; + } + } + unsigned int get_indexes (unsigned int start_offset, unsigned int *_count /* IN/OUT */, unsigned int *_indexes /* OUT */) const @@ -309,10 +461,6 @@ struct IndexArray : ArrayOf }; -struct Script; -struct LangSys; -struct Feature; - struct LangSys { unsigned int get_feature_count () const @@ -340,6 +488,42 @@ struct LangSys return_trace (c->embed (*this)); } + bool operator == (const LangSys& o) const + { + if (featureIndex.len != o.featureIndex.len || + reqFeatureIndex != o.reqFeatureIndex) + return false; + + for (const auto _ : + hb_zip (featureIndex, o.featureIndex)) + if (_.first != _.second) return false; + + return true; + } + + bool subset (hb_subset_context_t *c, + hb_subset_layout_context_t *l, + const Tag *tag = nullptr) const + { + TRACE_SUBSET (this); + auto *out = c->serializer->start_embed (*this); + if (unlikely (!out || !c->serializer->extend_min (out))) return_trace (false); + + out->reqFeatureIndex = l->feature_index_map->has (reqFeatureIndex) ? l->feature_index_map->get (reqFeatureIndex) : 0xFFFFu; + + if (!l->visitFeatureIndex (featureIndex.len)) + return_trace (false); + + auto it = + + hb_iter (featureIndex) + | hb_filter (l->feature_index_map) + | hb_map (l->feature_index_map) + ; + + bool ret = bool (it); + out->featureIndex.serialize (c->serializer, l, it); + return_trace (ret); + } + bool sanitize (hb_sanitize_context_t *c, const Record_sanitize_closure_t * = nullptr) const { @@ -379,34 +563,46 @@ struct Script bool has_default_lang_sys () const { return defaultLangSys != 0; } const LangSys& get_default_lang_sys () const { return this+defaultLangSys; } - bool subset (hb_subset_context_t *c, RecordList_subset_context_t *record_list_context) const + bool subset (hb_subset_context_t *c, + hb_subset_layout_context_t *l, + const Tag *tag) const { TRACE_SUBSET (this); - if (!record_list_context->visitScript ()) return_trace (false); + if (!l->visitScript ()) return_trace (false); auto *out = c->serializer->start_embed (*this); - if (unlikely (!c->serializer->extend_min (out))) return_trace (false); + if (unlikely (!out || !c->serializer->extend_min (out))) return_trace (false); - out->defaultLangSys.serialize_copy (c->serializer, defaultLangSys, this, out); - - for (const auto &src: langSys) + bool defaultLang = false; + if (has_default_lang_sys ()) { - if (!record_list_context->visitLangSys ()) { - continue; + c->serializer->push (); + const LangSys& ls = this+defaultLangSys; + bool ret = ls.subset (c, l); + if (!ret && tag && *tag != HB_TAG ('D', 'F', 'L', 'T')) + { + c->serializer->pop_discard (); + out->defaultLangSys = 0; } - - auto snap = c->serializer->snapshot (); - auto *lang_sys = c->serializer->embed (src); - - if (likely(lang_sys) - && lang_sys->offset.serialize_copy (c->serializer, src.offset, this, out)) + else { - out->langSys.len++; - continue; + c->serializer->add_link (out->defaultLangSys, c->serializer->pop_pack ()); + defaultLang = true; } - c->serializer->revert (snap); } - return_trace (true); + + + langSys.iter () + | hb_filter ([=] (const Record& record) {return l->visitLangSys (); }) + | hb_filter ([&] (const Record& record) + { + const LangSys& d = this+defaultLangSys; + const LangSys& l = this+record.offset; + return !(l == d); + }) + | hb_apply (subset_record_array (l, &(out->langSys), this)) + ; + + return_trace (bool (out->langSys.len) || defaultLang || l->table_tag == HB_OT_TAG_GSUB); } bool sanitize (hb_sanitize_context_t *c, @@ -682,13 +878,27 @@ struct Feature const FeatureParams &get_feature_params () const { return this+featureParams; } - bool subset (hb_subset_context_t *c, RecordList_subset_context_t *r) const + bool intersects_lookup_indexes (const hb_map_t *lookup_indexes) const + { return lookupIndex.intersects (lookup_indexes); } + + bool subset (hb_subset_context_t *c, + hb_subset_layout_context_t *l, + const Tag *tag = nullptr) const { TRACE_SUBSET (this); - auto *out = c->serializer->embed (*this); - if (unlikely (!out)) return_trace (false); + auto *out = c->serializer->start_embed (*this); + if (unlikely (!out || !c->serializer->extend_min (out))) return_trace (false); + out->featureParams = 0; /* TODO(subset) FeatureParams. */ - return_trace (true); + + auto it = + + hb_iter (lookupIndex) + | hb_filter (l->lookup_index_map) + | hb_map (l->lookup_index_map) + ; + + out->lookupIndex.serialize (c->serializer, l, it); + return_trace (bool (it) || (tag && *tag == HB_TAG ('p', 'r', 'e', 'f'))); } bool sanitize (hb_sanitize_context_t *c, @@ -775,10 +985,10 @@ struct Lookup template const OffsetArrayOf& get_subtables () const - { return CastR> (subTable); } + { return reinterpret_cast &> (subTable); } template OffsetArrayOf& get_subtables () - { return CastR> (subTable); } + { return reinterpret_cast &> (subTable); } template const TSubTable& get_subtable (unsigned int i) const @@ -848,17 +1058,17 @@ struct Lookup bool subset (hb_subset_context_t *c) const { TRACE_SUBSET (this); - auto *out = c->serializer->embed (*this); - if (unlikely (!out)) return_trace (false); + auto *out = c->serializer->start_embed (*this); + if (unlikely (!out || !c->serializer->extend_min (out))) return_trace (false); + out->lookupType = lookupType; + out->lookupFlag = lookupFlag; - /* Subset the actual subtables. */ - /* TODO Drop empty ones, either by calling intersects() beforehand, - * or just dropping null offsets after. */ - const OffsetArrayOf& subtables = get_subtables (); - OffsetArrayOf& out_subtables = out->get_subtables (); - unsigned int count = subTable.len; - for (unsigned int i = 0; i < count; i++) - out_subtables[i].serialize_subset (c, subtables[i], this, out, get_type ()); + const hb_set_t *glyphset = c->plan->glyphset (); + unsigned int lookup_type = get_type (); + + hb_iter (get_subtables ()) + | hb_filter ([this, glyphset, lookup_type] (const OffsetTo &_) { return (this+_).intersects (glyphset, lookup_type); }) + | hb_apply (subset_offset_array (c, out->get_subtables (), this, lookup_type)) + ; return_trace (true); } @@ -868,6 +1078,10 @@ struct Lookup { TRACE_SANITIZE (this); if (!(c->check_struct (this) && subTable.sanitize (c))) return_trace (false); + + unsigned subtables = get_subtable_count (); + if (unlikely (!c->visit_subtables (subtables))) return_trace (false); + if (lookupFlag & LookupFlag::UseMarkFilteringSet) { const HBUINT16 &markFilteringSet = StructAfter (subTable); @@ -890,8 +1104,7 @@ struct Lookup * https://bugs.chromium.org/p/chromium/issues/detail?id=960331 */ unsigned int type = get_subtable (0).u.extension.get_type (); - unsigned int count = get_subtable_count (); - for (unsigned int i = 1; i < count; i++) + for (unsigned int i = 1; i < subtables; i++) if (get_subtable (i).u.extension.get_type () != type) return_trace (false); } @@ -912,6 +1125,32 @@ struct Lookup typedef OffsetListOf LookupList; +template +struct LookupOffsetList : OffsetListOf +{ + bool subset (hb_subset_context_t *c, + hb_subset_layout_context_t *l) const + { + TRACE_SUBSET (this); + auto *out = c->serializer->start_embed (this); + if (unlikely (!out || !c->serializer->extend_min (out))) return_trace (false); + + unsigned count = this->len; + + hb_zip (*this, hb_range (count)) + | hb_filter (l->lookup_index_map, hb_second) + | hb_map (hb_first) + | hb_apply (subset_offset_array (c, *out, this)) + ; + return_trace (true); + } + + bool sanitize (hb_sanitize_context_t *c) const + { + TRACE_SANITIZE (this); + return_trace (OffsetListOf::sanitize (c, this)); + } +}; + /* * Coverage Table @@ -956,7 +1195,7 @@ struct CoverageFormat1 { return glyphs->has (glyphArray[index]); } template - bool add_coverage (set_t *glyphs) const + bool collect_coverage (set_t *glyphs) const { return glyphs->add_sorted_array (glyphArray.arrayZ, glyphArray.len); } public: @@ -993,8 +1232,8 @@ struct CoverageFormat2 unsigned int get_coverage (hb_codepoint_t glyph_id) const { const RangeRecord &range = rangeRecord.bsearch (glyph_id); - return likely (range.start <= range.end) ? - (unsigned int) range.value + (glyph_id - range.start) : + return likely (range.first <= range.last) ? + (unsigned int) range.value + (glyph_id - range.first) : NOT_COVERED; } @@ -1032,10 +1271,10 @@ struct CoverageFormat2 if (last + 1 != g) { range++; - rangeRecord[range].start = g; + rangeRecord[range].first = g; rangeRecord[range].value = count; } - rangeRecord[range].end = g; + rangeRecord[range].last = g; last = g; count++; } @@ -1065,7 +1304,7 @@ struct CoverageFormat2 for (i = 0; i < count; i++) { const RangeRecord &range = rangeRecord[i]; if (range.value <= index && - index < (unsigned int) range.value + (range.end - range.start) && + index < (unsigned int) range.value + (range.last - range.first) && range.intersects (glyphs)) return true; else if (index < range.value) @@ -1075,11 +1314,11 @@ struct CoverageFormat2 } template - bool add_coverage (set_t *glyphs) const + bool collect_coverage (set_t *glyphs) const { unsigned int count = rangeRecord.len; for (unsigned int i = 0; i < count; i++) - if (unlikely (!rangeRecord[i].add_coverage (glyphs))) + if (unlikely (!rangeRecord[i].collect_coverage (glyphs))) return false; return true; } @@ -1093,8 +1332,8 @@ struct CoverageFormat2 c = &c_; coverage = 0; i = 0; - j = c->rangeRecord.len ? c->rangeRecord[0].start : 0; - if (unlikely (c->rangeRecord[0].start > c->rangeRecord[0].end)) + j = c->rangeRecord.len ? c->rangeRecord[0].first : 0; + if (unlikely (c->rangeRecord[0].first > c->rangeRecord[0].last)) { /* Broken table. Skip. */ i = c->rangeRecord.len; @@ -1104,13 +1343,13 @@ struct CoverageFormat2 bool more () const { return i < c->rangeRecord.len; } void next () { - if (j >= c->rangeRecord[i].end) + if (j >= c->rangeRecord[i].last) { i++; if (more ()) { unsigned int old = coverage; - j = c->rangeRecord[i].start; + j = c->rangeRecord[i].first; coverage = c->rangeRecord[i].value; if (unlikely (coverage != old + 1)) { @@ -1246,12 +1485,12 @@ struct Coverage /* Might return false if array looks unsorted. * Used for faster rejection of corrupt data. */ template - bool add_coverage (set_t *glyphs) const + bool collect_coverage (set_t *glyphs) const { switch (u.format) { - case 1: return u.format1.add_coverage (glyphs); - case 2: return u.format2.add_coverage (glyphs); + case 1: return u.format1.collect_coverage (glyphs); + case 2: return u.format2.collect_coverage (glyphs); default:return false; } } @@ -1259,7 +1498,7 @@ struct Coverage struct iter_t : hb_iter_with_fallback_t { static constexpr bool is_sorted_iterator = true; - iter_t (const Coverage &c_ = Null(Coverage)) + iter_t (const Coverage &c_ = Null (Coverage)) { memset (this, 0, sizeof (*this)); format = c_.u.format; @@ -1333,22 +1572,28 @@ struct Coverage template static inline void Coverage_serialize (hb_serialize_context_t *c, - Iterator it) + Iterator it) { c->start_embed ()->serialize (c, it); } static void ClassDef_remap_and_serialize (hb_serialize_context_t *c, - const hb_set_t &glyphset, - const hb_map_t &gid_klass_map, - hb_sorted_vector_t glyphs, - hb_sorted_vector_t klasses, - hb_map_t *klass_map /*INOUT*/) + const hb_set_t &glyphset, + const hb_map_t &gid_klass_map, + hb_sorted_vector_t &glyphs, + const hb_set_t &klasses, + hb_map_t *klass_map /*INOUT*/) { - bool has_no_match = glyphset.get_population () > gid_klass_map.get_population (); - - hb_map_t m; - if (!klass_map) klass_map = &m; + if (!klass_map) + { + ClassDef_serialize (c, hb_zip (glyphs.iter (), + glyphs.iter () + | hb_map (gid_klass_map))); + return; + } + + /* any glyph not assigned a class value falls into Class zero (0), + * if any glyph assigned to class 0, remapping must start with 0->0*/ + if (glyphset.get_population () > gid_klass_map.get_population ()) + klass_map->set (0, 0); - if (has_no_match) klass_map->set (0, 0); unsigned idx = klass_map->has (0) ? 1 : 0; for (const unsigned k: klasses.iter ()) { @@ -1356,17 +1601,16 @@ static void ClassDef_remap_and_serialize (hb_serialize_context_t *c, klass_map->set (k, idx); idx++; } - + auto it = + glyphs.iter () - | hb_map_retains_sorting ([&] (const HBGlyphID& gid) -> hb_pair_t - { - HBUINT16 new_klass; - new_klass = klass_map->get (gid_klass_map[gid]); - return hb_pair ((hb_codepoint_t)gid, new_klass); - }) + | hb_map_retains_sorting ([&] (const HBGlyphID& gid) -> hb_pair_t + { + unsigned new_klass = klass_map->get (gid_klass_map[gid]); + return hb_pair ((hb_codepoint_t)gid, new_klass); + }) ; - + c->propagate_error (glyphs, klasses); ClassDef_serialize (c, it); } @@ -1388,7 +1632,7 @@ struct ClassDefFormat1 template bool serialize (hb_serialize_context_t *c, - Iterator it) + Iterator it) { TRACE_SERIALIZE (this); if (unlikely (!c->extend_min (*this))) return_trace (false); @@ -1400,21 +1644,31 @@ struct ClassDefFormat1 return_trace (true); } - startGlyph = (*it).first; - classValue.serialize (c, + it - | hb_map (hb_second)); + hb_codepoint_t glyph_min = (*it).first; + hb_codepoint_t glyph_max = + it + | hb_map (hb_first) + | hb_reduce (hb_max, 0u); + unsigned glyph_count = glyph_max - glyph_min + 1; + + startGlyph = glyph_min; + if (unlikely (!classValue.serialize (c, glyph_count))) return_trace (false); + for (const hb_pair_t& gid_klass_pair : + it) + { + unsigned idx = gid_klass_pair.first - glyph_min; + classValue[idx] = gid_klass_pair.second; + } return_trace (true); } bool subset (hb_subset_context_t *c, - hb_map_t *klass_map = nullptr /*OUT*/) const + hb_map_t *klass_map = nullptr /*OUT*/) const { TRACE_SUBSET (this); - const hb_set_t &glyphset = *c->plan->glyphset (); + const hb_set_t &glyphset = *c->plan->_glyphset_gsub; const hb_map_t &glyph_map = *c->plan->glyph_map; - + hb_sorted_vector_t glyphs; - hb_sorted_vector_t orig_klasses; + hb_set_t orig_klasses; hb_map_t gid_org_klass_map; hb_codepoint_t start = startGlyph; @@ -1427,11 +1681,11 @@ struct ClassDefFormat1 glyphs.push (glyph_map[gid]); gid_org_klass_map.set (glyph_map[gid], klass); - orig_klasses.push (klass); + orig_klasses.add (klass); } ClassDef_remap_and_serialize (c->serializer, glyphset, gid_org_klass_map, - glyphs, orig_klasses, klass_map); + glyphs, orig_klasses, klass_map); return_trace ((bool) glyphs); } @@ -1442,7 +1696,7 @@ struct ClassDefFormat1 } template - bool add_coverage (set_t *glyphs) const + bool collect_coverage (set_t *glyphs) const { unsigned int start = 0; unsigned int count = classValue.len; @@ -1465,7 +1719,7 @@ struct ClassDefFormat1 } template - bool add_class (set_t *glyphs, unsigned int klass) const + bool collect_class (set_t *glyphs, unsigned int klass) const { unsigned int count = classValue.len; for (unsigned int i = 0; i < count; i++) @@ -1524,7 +1778,7 @@ struct ClassDefFormat2 template bool serialize (hb_serialize_context_t *c, - Iterator it) + Iterator it) { TRACE_SERIALIZE (this); if (unlikely (!c->extend_min (*this))) return_trace (false); @@ -1540,8 +1794,8 @@ struct ClassDefFormat2 unsigned prev_klass = (*it).second; RangeRecord range_rec; - range_rec.start = prev_gid; - range_rec.end = prev_gid; + range_rec.first = prev_gid; + range_rec.last = prev_gid; range_rec.value = prev_klass; RangeRecord *record = c->copy (range_rec); @@ -1553,37 +1807,37 @@ struct ClassDefFormat2 unsigned cur_klass = gid_klass_pair.second; if (cur_gid != prev_gid + 1 || - cur_klass != prev_klass) + cur_klass != prev_klass) { - if (unlikely (!record)) break; - record->end = prev_gid; - num_ranges++; + if (unlikely (!record)) break; + record->last = prev_gid; + num_ranges++; - range_rec.start = cur_gid; - range_rec.end = cur_gid; - range_rec.value = cur_klass; + range_rec.first = cur_gid; + range_rec.last = cur_gid; + range_rec.value = cur_klass; - record = c->copy (range_rec); + record = c->copy (range_rec); } prev_klass = cur_klass; prev_gid = cur_gid; } - if (likely (record)) record->end = prev_gid; + if (likely (record)) record->last = prev_gid; rangeRecord.len = num_ranges; return_trace (true); } bool subset (hb_subset_context_t *c, - hb_map_t *klass_map = nullptr /*OUT*/) const + hb_map_t *klass_map = nullptr /*OUT*/) const { TRACE_SUBSET (this); - const hb_set_t &glyphset = *c->plan->glyphset (); + const hb_set_t &glyphset = *c->plan->_glyphset_gsub; const hb_map_t &glyph_map = *c->plan->glyph_map; hb_sorted_vector_t glyphs; - hb_sorted_vector_t orig_klasses; + hb_set_t orig_klasses; hb_map_t gid_org_klass_map; unsigned count = rangeRecord.len; @@ -1591,19 +1845,19 @@ struct ClassDefFormat2 { unsigned klass = rangeRecord[i].value; if (!klass) continue; - hb_codepoint_t start = rangeRecord[i].start; - hb_codepoint_t end = rangeRecord[i].end + 1; + hb_codepoint_t start = rangeRecord[i].first; + hb_codepoint_t end = rangeRecord[i].last + 1; for (hb_codepoint_t g = start; g < end; g++) { if (!glyphset.has (g)) continue; glyphs.push (glyph_map[g]); - gid_org_klass_map.set (glyph_map[g], klass); - orig_klasses.push (klass); + gid_org_klass_map.set (glyph_map[g], klass); + orig_klasses.add (klass); } } ClassDef_remap_and_serialize (c->serializer, glyphset, gid_org_klass_map, - glyphs, orig_klasses, klass_map); + glyphs, orig_klasses, klass_map); return_trace ((bool) glyphs); } @@ -1614,24 +1868,24 @@ struct ClassDefFormat2 } template - bool add_coverage (set_t *glyphs) const + bool collect_coverage (set_t *glyphs) const { unsigned int count = rangeRecord.len; for (unsigned int i = 0; i < count; i++) if (rangeRecord[i].value) - if (unlikely (!rangeRecord[i].add_coverage (glyphs))) + if (unlikely (!rangeRecord[i].collect_coverage (glyphs))) return false; return true; } template - bool add_class (set_t *glyphs, unsigned int klass) const + bool collect_class (set_t *glyphs, unsigned int klass) const { unsigned int count = rangeRecord.len; for (unsigned int i = 0; i < count; i++) { if (rangeRecord[i].value == klass) - if (unlikely (!rangeRecord[i].add_coverage (glyphs))) + if (unlikely (!rangeRecord[i].collect_coverage (glyphs))) return false; } return true; @@ -1657,9 +1911,9 @@ struct ClassDefFormat2 { if (!hb_set_next (glyphs, &g)) break; - if (g < rangeRecord[i].start) + if (g < rangeRecord[i].first) return true; - g = rangeRecord[i].end; + g = rangeRecord[i].last; } if (g != HB_SET_VALUE_INVALID && hb_set_next (glyphs, &g)) return true; @@ -1713,7 +1967,7 @@ struct ClassDef hb_codepoint_t glyph_min = (*it).first; hb_codepoint_t glyph_max = + it | hb_map (hb_first) - | hb_reduce (hb_max, 0u); + | hb_reduce (hb_max, 0u); unsigned num_ranges = 1; hb_codepoint_t prev_gid = glyph_min; @@ -1721,17 +1975,18 @@ struct ClassDef for (const auto gid_klass_pair : it) { - hb_codepoint_t cur_gid = gid_klass_pair.first; - unsigned cur_klass = gid_klass_pair.second; - if (cur_gid != prev_gid + 1 || - cur_klass != prev_klass) - num_ranges++; - - prev_gid = cur_gid; - prev_klass = cur_klass; + hb_codepoint_t cur_gid = gid_klass_pair.first; + unsigned cur_klass = gid_klass_pair.second; + if (cur_gid == glyph_min || !cur_klass) continue; + if (cur_gid != prev_gid + 1 || + cur_klass != prev_klass) + num_ranges++; + + prev_gid = cur_gid; + prev_klass = cur_klass; } - if (1 + (glyph_max - glyph_min + 1) < num_ranges * 3) + if (1 + (glyph_max - glyph_min + 1) <= num_ranges * 3) format = 1; } u.format = format; @@ -1745,7 +2000,7 @@ struct ClassDef } bool subset (hb_subset_context_t *c, - hb_map_t *klass_map = nullptr /*OUT*/) const + hb_map_t *klass_map = nullptr /*OUT*/) const { TRACE_SUBSET (this); switch (u.format) { @@ -1769,11 +2024,11 @@ struct ClassDef /* Might return false if array looks unsorted. * Used for faster rejection of corrupt data. */ template - bool add_coverage (set_t *glyphs) const + bool collect_coverage (set_t *glyphs) const { switch (u.format) { - case 1: return u.format1.add_coverage (glyphs); - case 2: return u.format2.add_coverage (glyphs); + case 1: return u.format1.collect_coverage (glyphs); + case 2: return u.format2.collect_coverage (glyphs); default:return false; } } @@ -1781,11 +2036,11 @@ struct ClassDef /* Might return false if array looks unsorted. * Used for faster rejection of corrupt data. */ template - bool add_class (set_t *glyphs, unsigned int klass) const + bool collect_class (set_t *glyphs, unsigned int klass) const { switch (u.format) { - case 1: return u.format1.add_class (glyphs, klass); - case 2: return u.format2.add_class (glyphs, klass); + case 1: return u.format1.collect_class (glyphs, klass); + case 2: return u.format2.collect_class (glyphs, klass); default:return false; } } @@ -1819,7 +2074,7 @@ struct ClassDef template static inline void ClassDef_serialize (hb_serialize_context_t *c, - Iterator it) + Iterator it) { c->start_embed ()->serialize (c, it); } @@ -1906,8 +2161,13 @@ struct VarRegionList axisCount = src->axisCount; regionCount = region_map.get_population (); if (unlikely (!c->allocate_size (get_size () - min_size))) return_trace (false); + unsigned int region_count = src->get_region_count (); for (unsigned int r = 0; r < regionCount; r++) - memcpy (&axesZ[axisCount * r], &src->axesZ[axisCount * region_map.backward (r)], VarRegionAxis::static_size * axisCount); + { + unsigned int backward = region_map.backward (r); + if (backward >= region_count) return_trace (false); + memcpy (&axesZ[axisCount * r], &src->axesZ[axisCount * backward], VarRegionAxis::static_size * axisCount); + } return_trace (true); } @@ -1967,7 +2227,7 @@ struct VarData return delta; } - void get_scalars (int *coords, unsigned int coord_count, + void get_scalars (const int *coords, unsigned int coord_count, const VarRegionList ®ions, float *scalars /*OUT */, unsigned int num_scalars) const @@ -2031,8 +2291,8 @@ struct VarData for (r = 0; r < ri_count; r++) if (delta_sz[r]) { - ri_map[r] = (delta_sz[r] == kShort)? short_index++ : byte_index++; - new_ri_count++; + ri_map[r] = (delta_sz[r] == kShort)? short_index++ : byte_index++; + new_ri_count++; } shortCount = new_short_count; @@ -2145,7 +2405,7 @@ struct VariationStore bool serialize (hb_serialize_context_t *c, const VariationStore *src, - const hb_array_t &inner_maps) + const hb_array_t &inner_maps) { TRACE_SERIALIZE (this); unsigned int set_count = 0; @@ -2184,7 +2444,7 @@ struct VariationStore { return (this+dataSets[ivs]).get_region_index_count (); } void get_scalars (unsigned int ivs, - int *coords, unsigned int coord_count, + const int *coords, unsigned int coord_count, float *scalars /*OUT*/, unsigned int num_scalars) const { @@ -2216,6 +2476,14 @@ struct ConditionFormat1 { friend struct Condition; + bool subset (hb_subset_context_t *c) const + { + TRACE_SUBSET (this); + auto *out = c->serializer->embed (this); + if (unlikely (!out)) return_trace (false); + return_trace (true); + } + private: bool evaluate (const int *coords, unsigned int coord_len) const { @@ -2248,6 +2516,17 @@ struct Condition } } + template + typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const + { + TRACE_DISPATCH (this, u.format); + if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ()); + switch (u.format) { + case 1: return_trace (c->dispatch (u.format1, hb_forward (ds)...)); + default:return_trace (c->default_return_value ()); + } + } + bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); @@ -2278,6 +2557,18 @@ struct ConditionSet return true; } + bool subset (hb_subset_context_t *c) const + { + TRACE_SUBSET (this); + auto *out = c->serializer->start_embed (this); + if (unlikely (!out || !c->serializer->extend_min (out))) return_trace (false); + + + conditions.iter () + | hb_apply (subset_offset_array (c, out->conditions, this)) + ; + return_trace (true); + } + bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); @@ -2294,6 +2585,30 @@ struct FeatureTableSubstitutionRecord { friend struct FeatureTableSubstitution; + void collect_lookups (const void *base, hb_set_t *lookup_indexes /* OUT */) const + { + return (base+feature).add_lookup_indexes_to (lookup_indexes); + } + + void closure_features (const void *base, + const hb_map_t *lookup_indexes, + hb_set_t *feature_indexes /* OUT */) const + { + if ((base+feature).intersects_lookup_indexes (lookup_indexes)) + feature_indexes->add (featureIndex); + } + + bool subset (hb_subset_layout_context_t *c, const void *base) const + { + TRACE_SUBSET (this); + auto *out = c->subset_context->serializer->embed (this); + if (unlikely (!out)) return_trace (false); + + out->featureIndex = c->feature_index_map->get (featureIndex); + bool ret = out->feature.serialize_subset (c->subset_context, feature, base, c); + return_trace (ret); + } + bool sanitize (hb_sanitize_context_t *c, const void *base) const { TRACE_SANITIZE (this); @@ -2321,6 +2636,39 @@ struct FeatureTableSubstitution return nullptr; } + void collect_lookups (const hb_set_t *feature_indexes, + hb_set_t *lookup_indexes /* OUT */) const + { + + hb_iter (substitutions) + | hb_filter (feature_indexes, &FeatureTableSubstitutionRecord::featureIndex) + | hb_apply ([this, lookup_indexes] (const FeatureTableSubstitutionRecord& r) + { r.collect_lookups (this, lookup_indexes); }) + ; + } + + void closure_features (const hb_map_t *lookup_indexes, + hb_set_t *feature_indexes /* OUT */) const + { + for (const FeatureTableSubstitutionRecord& record : substitutions) + record.closure_features (this, lookup_indexes, feature_indexes); + } + + bool subset (hb_subset_context_t *c, + hb_subset_layout_context_t *l) const + { + TRACE_SUBSET (this); + auto *out = c->serializer->start_embed (*this); + if (unlikely (!out || !c->serializer->extend_min (out))) return_trace (false); + + out->version.major = version.major; + out->version.minor = version.minor; + + + substitutions.iter () + | hb_apply (subset_record_array (l, &(out->substitutions), this)) + ; + return_trace (true); + } + bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); @@ -2341,6 +2689,32 @@ struct FeatureVariationRecord { friend struct FeatureVariations; + void collect_lookups (const void *base, + const hb_set_t *feature_indexes, + hb_set_t *lookup_indexes /* OUT */) const + { + return (base+substitutions).collect_lookups (feature_indexes, lookup_indexes); + } + + void closure_features (const void *base, + const hb_map_t *lookup_indexes, + hb_set_t *feature_indexes /* OUT */) const + { + (base+substitutions).closure_features (lookup_indexes, feature_indexes); + } + + bool subset (hb_subset_layout_context_t *c, const void *base) const + { + TRACE_SUBSET (this); + auto *out = c->subset_context->serializer->embed (this); + if (unlikely (!out)) return_trace (false); + + out->conditions.serialize_subset (c->subset_context, conditions, base); + out->substitutions.serialize_subset (c->subset_context, substitutions, base, c); + + return_trace (true); + } + bool sanitize (hb_sanitize_context_t *c, const void *base) const { TRACE_SANITIZE (this); @@ -2391,6 +2765,36 @@ struct FeatureVariations return_trace (c->embed (*this)); } + void collect_lookups (const hb_set_t *feature_indexes, + hb_set_t *lookup_indexes /* OUT */) const + { + for (const FeatureVariationRecord& r : varRecords) + r.collect_lookups (this, feature_indexes, lookup_indexes); + } + + void closure_features (const hb_map_t *lookup_indexes, + hb_set_t *feature_indexes /* OUT */) const + { + for (const FeatureVariationRecord& record : varRecords) + record.closure_features (this, lookup_indexes, feature_indexes); + } + + bool subset (hb_subset_context_t *c, + hb_subset_layout_context_t *l) const + { + TRACE_SUBSET (this); + auto *out = c->serializer->start_embed (*this); + if (unlikely (!out || !c->serializer->extend_min (out))) return_trace (false); + + out->version.major = version.major; + out->version.minor = version.minor; + + + varRecords.iter () + | hb_apply (subset_record_array (l, &(out->varRecords), this)) + ; + return_trace (bool (out->varRecords)); + } + bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gdef-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gdef-table.hh index dc751d88ea9..7873f94faaa 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gdef-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gdef-table.hh @@ -96,6 +96,13 @@ struct AttachList struct CaretValueFormat1 { friend struct CaretValue; + bool subset (hb_subset_context_t *c) const + { + TRACE_SUBSET (this); + auto *out = c->serializer->embed (this); + if (unlikely (!out)) return_trace (false); + return_trace (true); + } private: hb_position_t get_caret_value (hb_font_t *font, hb_direction_t direction) const @@ -119,6 +126,13 @@ struct CaretValueFormat1 struct CaretValueFormat2 { friend struct CaretValue; + bool subset (hb_subset_context_t *c) const + { + TRACE_SUBSET (this); + auto *out = c->serializer->embed (this); + if (unlikely (!out)) return_trace (false); + return_trace (true); + } private: hb_position_t get_caret_value (hb_font_t *font, hb_direction_t direction, hb_codepoint_t glyph_id) const @@ -153,6 +167,15 @@ struct CaretValueFormat3 font->em_scale_y (coordinate) + (this+deviceTable).get_y_delta (font, var_store); } + bool subset (hb_subset_context_t *c) const + { + TRACE_SUBSET (this); + auto *out = c->serializer->embed (this); + if (unlikely (!out)) return_trace (false); + + return_trace (out->deviceTable.serialize_copy (c->serializer, deviceTable, this)); + } + bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); @@ -185,6 +208,19 @@ struct CaretValue } } + template + typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const + { + TRACE_DISPATCH (this, u.format); + if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ()); + switch (u.format) { + case 1: return_trace (c->dispatch (u.format1, hb_forward (ds)...)); + case 2: return_trace (c->dispatch (u.format2, hb_forward (ds)...)); + case 3: return_trace (c->dispatch (u.format3, hb_forward (ds)...)); + default:return_trace (c->default_return_value ()); + } + } + bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); @@ -229,6 +265,19 @@ struct LigGlyph return carets.len; } + bool subset (hb_subset_context_t *c) const + { + TRACE_SUBSET (this); + auto *out = c->serializer->start_embed (*this); + if (unlikely (!c->serializer->extend_min (out))) return_trace (false); + + + hb_iter (carets) + | hb_apply (subset_offset_array (c, out->carets, this)) + ; + + return_trace (bool (out->carets)); + } + bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); @@ -265,6 +314,28 @@ struct LigCaretList return lig_glyph.get_lig_carets (font, direction, glyph_id, var_store, start_offset, caret_count, caret_array); } + bool subset (hb_subset_context_t *c) const + { + TRACE_SUBSET (this); + const hb_set_t &glyphset = *c->plan->glyphset (); + const hb_map_t &glyph_map = *c->plan->glyph_map; + + auto *out = c->serializer->start_embed (*this); + if (unlikely (!c->serializer->extend_min (out))) return_trace (false); + + hb_sorted_vector_t new_coverage; + + hb_zip (this+coverage, ligGlyph) + | hb_filter (glyphset, hb_first) + | hb_filter (subset_offset_array (c, out->ligGlyph, this), hb_second) + | hb_map (hb_first) + | hb_map (glyph_map) + | hb_sink (new_coverage) + ; + out->coverage.serialize (c->serializer, out) + .serialize (c->serializer, new_coverage.iter ()); + return_trace (bool (new_coverage)); + } + bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); @@ -288,6 +359,34 @@ struct MarkGlyphSetsFormat1 bool covers (unsigned int set_index, hb_codepoint_t glyph_id) const { return (this+coverage[set_index]).get_coverage (glyph_id) != NOT_COVERED; } + bool subset (hb_subset_context_t *c) const + { + TRACE_SUBSET (this); + auto *out = c->serializer->start_embed (*this); + if (unlikely (!c->serializer->extend_min (out))) return_trace (false); + out->format = format; + + bool ret = true; + for (const LOffsetTo& offset : coverage.iter ()) + { + auto *o = out->coverage.serialize_append (c->serializer); + if (unlikely (!o)) + { + ret = false; + break; + } + + //not using o->serialize_subset (c, offset, this, out) here because + //OTS doesn't allow null offset. + //See issue: https://github.com/khaledhosny/ots/issues/172 + c->serializer->push (); + c->dispatch (this+offset); + c->serializer->add_link (*o, c->serializer->pop_pack ()); + } + + return_trace (ret && out->coverage.len); + } + bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); @@ -313,6 +412,15 @@ struct MarkGlyphSets } } + bool subset (hb_subset_context_t *c) const + { + TRACE_SUBSET (this); + switch (u.format) { + case 1: return_trace (u.format1.subset (c)); + default:return_trace (false); + } + } + bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); @@ -356,7 +464,7 @@ struct GDEF unsigned int get_glyph_class (hb_codepoint_t glyph) const { return (this+glyphClassDef).get_class (glyph); } void get_glyphs_in_class (unsigned int klass, hb_set_t *glyphs) const - { (this+glyphClassDef).add_class (glyphs, klass); } + { (this+glyphClassDef).collect_class (glyphs, klass); } bool has_mark_attachment_types () const { return markAttachClassDef != 0; } unsigned int get_mark_attachment_type (hb_codepoint_t glyph) const @@ -386,7 +494,7 @@ struct GDEF bool has_var_store () const { return version.to_int () >= 0x00010003u && varStore != 0; } const VariationStore &get_var_store () const - { return version.to_int () >= 0x00010003u ? this+varStore : Null(VariationStore); } + { return version.to_int () >= 0x00010003u ? this+varStore : Null (VariationStore); } /* glyph_props is a 16-bit integer where the lower 8-bit have bits representing * glyph class and other bits, and high 8-bit the mark attachment type (if any). @@ -416,7 +524,7 @@ struct GDEF { void init (hb_face_t *face) { - this->table = hb_sanitize_context_t().reference_table (face); + this->table = hb_sanitize_context_t ().reference_table (face); if (unlikely (this->table->is_blacklisted (this->table.get_blob (), face))) { hb_blob_destroy (this->table.get_blob ()); @@ -442,16 +550,20 @@ struct GDEF auto *out = c->serializer->embed (*this); if (unlikely (!out)) return_trace (false); - out->glyphClassDef.serialize_subset (c, glyphClassDef, this, out); - out->attachList = 0;//TODO(subset) serialize_subset (c, attachList, this, out); - out->ligCaretList = 0;//TODO(subset) serialize_subset (c, ligCaretList, this, out); - out->markAttachClassDef.serialize_subset (c, markAttachClassDef, this, out); + out->glyphClassDef.serialize_subset (c, glyphClassDef, this); + out->attachList = 0;//TODO(subset) serialize_subset (c, attachList, this); + out->ligCaretList.serialize_subset (c, ligCaretList, this); + out->markAttachClassDef.serialize_subset (c, markAttachClassDef, this); if (version.to_int () >= 0x00010002u) - out->markGlyphSetsDef = 0;// TODO(subset) serialize_subset (c, markGlyphSetsDef, this, out); + { + if (!out->markGlyphSetsDef.serialize_subset (c, markGlyphSetsDef, this) && + version.to_int () == 0x00010002u) + out->version.minor = 0; + } if (version.to_int () >= 0x00010003u) - out->varStore = 0;// TODO(subset) serialize_subset (c, varStore, this, out); + out->varStore = 0;// TODO(subset) serialize_subset (c, varStore, this); return_trace (true); } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gpos-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gpos-table.hh index 024312d610c..d55d6ece8e5 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gpos-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gpos-table.hh @@ -34,6 +34,11 @@ namespace OT { +struct MarkArray; +static void Markclass_closure_and_remap_indexes (const Coverage &mark_coverage, + const MarkArray &mark_array, + const hb_set_t &glyphset, + hb_map_t* klass_mapping /* INOUT */); /* buffer **position** var allocations */ #define attach_chain() var.i16[0] /* glyph to which this attaches to, relative to current glyphs; negative for going back, positive for forward. */ @@ -155,6 +160,22 @@ struct ValueFormat : HBUINT16 return ret; } + void serialize_copy (hb_serialize_context_t *c, const void *base, const Value *values) const + { + unsigned int format = *this; + if (!format) return; + + if (format & xPlacement) c->copy (*values++); + if (format & yPlacement) c->copy (*values++); + if (format & xAdvance) c->copy (*values++); + if (format & yAdvance) c->copy (*values++); + + if (format & xPlaDevice) copy_device (c, base, values++); + if (format & yPlaDevice) copy_device (c, base, values++); + if (format & xAdvDevice) copy_device (c, base, values++); + if (format & yAdvDevice) copy_device (c, base, values++); + } + private: bool sanitize_value_devices (hb_sanitize_context_t *c, const void *base, const Value *values) const { @@ -173,18 +194,41 @@ struct ValueFormat : HBUINT16 return true; } - HB_INTERNAL static OffsetTo& get_device (Value* value) - { return *CastP> (value); } - HB_INTERNAL static const OffsetTo& get_device (const Value* value, bool *worked=nullptr) + bool copy_device (hb_serialize_context_t *c, const void *base, const Value *src_value) const + { + Value *dst_value = c->copy (*src_value); + + if (!dst_value) return false; + if (*dst_value == 0) return true; + + *dst_value = 0; + c->push (); + if ((base + get_device (src_value)).copy (c)) + { + c->add_link (*dst_value, c->pop_pack ()); + return true; + } + else + { + c->pop_discard (); + return false; + } + } + + static inline OffsetTo& get_device (Value* value) + { + return *static_cast *> (value); + } + static inline const OffsetTo& get_device (const Value* value, bool *worked=nullptr) { if (worked) *worked |= bool (*value); - return *CastP> (value); + return *static_cast *> (value); } - HB_INTERNAL static const HBINT16& get_short (const Value* value, bool *worked=nullptr) + static inline const HBINT16& get_short (const Value* value, bool *worked=nullptr) { if (worked) *worked |= bool (*value); - return *CastP (value); + return *reinterpret_cast (value); } public: @@ -237,9 +281,10 @@ struct ValueFormat : HBUINT16 }; template -static inline void SinglePos_serialize (hb_serialize_context_t *c, - Iterator it, - ValueFormat valFormat); +static void SinglePos_serialize (hb_serialize_context_t *c, + const void *src, + Iterator it, + ValueFormat valFormat); struct AnchorFormat1 @@ -344,8 +389,8 @@ struct AnchorFormat3 auto *out = c->embed (this); if (unlikely (!out)) return_trace (nullptr); - out->xDeviceTable.serialize_copy (c, xDeviceTable, this, out); - out->yDeviceTable.serialize_copy (c, yDeviceTable, this, out); + out->xDeviceTable.serialize_copy (c, xDeviceTable, this); + out->yDeviceTable.serialize_copy (c, yDeviceTable, this); return_trace (out); } @@ -420,11 +465,33 @@ struct AnchorMatrix unsigned int cols, bool *found) const { *found = false; - if (unlikely (row >= rows || col >= cols)) return Null(Anchor); + if (unlikely (row >= rows || col >= cols)) return Null (Anchor); *found = !matrixZ[row * cols + col].is_null (); return this+matrixZ[row * cols + col]; } + template + bool serialize (hb_serialize_context_t *c, + unsigned num_rows, + AnchorMatrix const *offset_matrix, + Iterator index_iter) + { + TRACE_SERIALIZE (this); + if (!index_iter.len ()) return_trace (false); + if (unlikely (!c->extend_min ((*this)))) return_trace (false); + + this->rows = num_rows; + for (const unsigned i : index_iter) + { + auto *offset = c->embed (offset_matrix->matrixZ[i]); + if (!offset) return_trace (false); + offset->serialize_copy (c, offset_matrix->matrixZ[i], offset_matrix, c->to_bias (this)); + } + + return_trace (true); + } + bool sanitize (hb_sanitize_context_t *c, unsigned int cols) const { TRACE_SANITIZE (this); @@ -438,7 +505,6 @@ struct AnchorMatrix } HBUINT16 rows; /* Number of rows */ - protected: UnsizedArrayOf> matrixZ; /* Matrix of offsets to Anchor tables-- * from beginning of AnchorMatrix table */ @@ -451,12 +517,25 @@ struct MarkRecord { friend struct MarkArray; + unsigned get_class () const { return (unsigned) klass; } bool sanitize (hb_sanitize_context_t *c, const void *base) const { TRACE_SANITIZE (this); return_trace (c->check_struct (this) && markAnchor.sanitize (c, base)); } + MarkRecord *copy (hb_serialize_context_t *c, const void *base, + unsigned dst_bias, const hb_map_t *klass_mapping) const + { + TRACE_SERIALIZE (this); + auto *out = c->embed (this); + if (unlikely (!out)) return_trace (nullptr); + + out->klass = klass_mapping->get (klass); + out->markAnchor.serialize_copy (c, markAnchor, base, dst_bias); + return_trace (out); + } + protected: HBUINT16 klass; /* Class defined for this mark */ OffsetTo @@ -502,6 +581,20 @@ struct MarkArray : ArrayOf /* Array of MarkRecords--in Coverage orde return_trace (true); } + template + bool serialize (hb_serialize_context_t *c, + const hb_map_t *klass_mapping, + const void *base, + Iterator it) + { + TRACE_SERIALIZE (this); + if (unlikely (!c->extend_min (*this))) return_trace (false); + if (unlikely (!c->check_assign (len, it.len ()))) return_trace (false); + c->copy_all (it, base, c->to_bias (this), klass_mapping); + return_trace (true); + } + bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); @@ -517,8 +610,10 @@ struct SinglePosFormat1 bool intersects (const hb_set_t *glyphs) const { return (this+coverage).intersects (glyphs); } + void closure_lookups (hb_closure_lookups_context_t *c) const {} + void collect_glyphs (hb_collect_glyphs_context_t *c) const - { if (unlikely (!(this+coverage).add_coverage (c->input))) return; } + { if (unlikely (!(this+coverage).collect_coverage (c->input))) return; } const Coverage &get_coverage () const { return this+coverage; } @@ -538,14 +633,19 @@ struct SinglePosFormat1 template void serialize (hb_serialize_context_t *c, + const void *src, Iterator it, ValueFormat valFormat) { - if (unlikely (!c->extend_min (*this))) return; + auto out = c->extend_min (*this); + if (unlikely (!out)) return; if (unlikely (!c->check_assign (valueFormat, valFormat))) return; - for (const auto &_ : hb_second (*it)) - c->copy (_); + + it + | hb_map (hb_second) + | hb_apply ([&] (hb_array_t _) + { valFormat.serialize_copy (c, src, &_); }) + ; auto glyphs = + it @@ -569,7 +669,7 @@ struct SinglePosFormat1 ; bool ret = bool (it); - SinglePos_serialize (c->serializer, it, valueFormat); + SinglePos_serialize (c->serializer, this, it, valueFormat); return_trace (ret); } @@ -600,8 +700,10 @@ struct SinglePosFormat2 bool intersects (const hb_set_t *glyphs) const { return (this+coverage).intersects (glyphs); } + void closure_lookups (hb_closure_lookups_context_t *c) const {} + void collect_glyphs (hb_collect_glyphs_context_t *c) const - { if (unlikely (!(this+coverage).add_coverage (c->input))) return; } + { if (unlikely (!(this+coverage).collect_coverage (c->input))) return; } const Coverage &get_coverage () const { return this+coverage; } @@ -625,16 +727,20 @@ struct SinglePosFormat2 template void serialize (hb_serialize_context_t *c, + const void *src, Iterator it, ValueFormat valFormat) { - if (unlikely (!c->extend_min (*this))) return; + auto out = c->extend_min (*this); + if (unlikely (!out)) return; if (unlikely (!c->check_assign (valueFormat, valFormat))) return; if (unlikely (!c->check_assign (valueCount, it.len ()))) return; - for (const auto iter : it) - for (const auto &_ : iter.second) - c->copy (_); + + it + | hb_map (hb_second) + | hb_apply ([&] (hb_array_t _) + { valFormat.serialize_copy (c, src, &_); }) + ; auto glyphs = + it @@ -665,7 +771,7 @@ struct SinglePosFormat2 ; bool ret = bool (it); - SinglePos_serialize (c->serializer, it, valueFormat); + SinglePos_serialize (c->serializer, this, it, valueFormat); return_trace (ret); } @@ -711,6 +817,7 @@ struct SinglePos template void serialize (hb_serialize_context_t *c, + const void *src, Iterator glyph_val_iter_pairs, ValueFormat valFormat) { @@ -721,9 +828,9 @@ struct SinglePos u.format = format; switch (u.format) { - case 1: u.format1.serialize (c, glyph_val_iter_pairs, valFormat); + case 1: u.format1.serialize (c, src, glyph_val_iter_pairs, valFormat); return; - case 2: u.format2.serialize (c, glyph_val_iter_pairs, valFormat); + case 2: u.format2.serialize (c, src, glyph_val_iter_pairs, valFormat); return; default:return; } @@ -750,27 +857,42 @@ struct SinglePos }; template -static inline void +static void SinglePos_serialize (hb_serialize_context_t *c, + const void *src, Iterator it, ValueFormat valFormat) -{ c->start_embed ()->serialize (c, it, valFormat); } +{ c->start_embed ()->serialize (c, src, it, valFormat); } struct PairValueRecord { friend struct PairSet; + int cmp (hb_codepoint_t k) const + { return secondGlyph.cmp (k); } + + struct serialize_closure_t + { + const void *base; + const ValueFormat *valueFormats; + unsigned len1; /* valueFormats[0].get_len() */ + const hb_map_t *glyph_map; + }; + bool serialize (hb_serialize_context_t *c, - unsigned length, - const hb_map_t &glyph_map) const + serialize_closure_t *closure) const { TRACE_SERIALIZE (this); auto *out = c->start_embed (*this); if (unlikely (!c->extend_min (out))) return_trace (false); - - out->secondGlyph = glyph_map[secondGlyph]; - return_trace (c->copy (values, length)); + + out->secondGlyph = (*closure->glyph_map)[secondGlyph]; + + closure->valueFormats[0].serialize_copy (c, closure->base, &values[0]); + closure->valueFormats[1].serialize_copy (c, closure->base, &values[closure->len1]); + + return_trace (true); } protected: @@ -817,8 +939,8 @@ struct PairSet } bool apply (hb_ot_apply_context_t *c, - const ValueFormat *valueFormats, - unsigned int pos) const + const ValueFormat *valueFormats, + unsigned int pos) const { TRACE_APPLY (this); hb_buffer_t *buffer = c->buffer; @@ -826,40 +948,26 @@ struct PairSet unsigned int len2 = valueFormats[1].get_len (); unsigned int record_size = HBUINT16::static_size * (1 + len1 + len2); - unsigned int count = len; - - /* Hand-coded bsearch. */ - if (unlikely (!count)) - return_trace (false); - hb_codepoint_t x = buffer->info[pos].codepoint; - int min = 0, max = (int) count - 1; - while (min <= max) + const PairValueRecord *record = hb_bsearch (buffer->info[pos].codepoint, + &firstPairValueRecord, + len, + record_size); + if (record) { - int mid = ((unsigned int) min + (unsigned int) max) / 2; - const PairValueRecord *record = &StructAtOffset (&firstPairValueRecord, record_size * mid); - hb_codepoint_t mid_x = record->secondGlyph; - if (x < mid_x) - max = mid - 1; - else if (x > mid_x) - min = mid + 1; - else - { - /* Note the intentional use of "|" instead of short-circuit "||". */ - if (valueFormats[0].apply_value (c, this, &record->values[0], buffer->cur_pos()) | - valueFormats[1].apply_value (c, this, &record->values[len1], buffer->pos[pos])) - buffer->unsafe_to_break (buffer->idx, pos + 1); - if (len2) - pos++; - buffer->idx = pos; - return_trace (true); - } + /* Note the intentional use of "|" instead of short-circuit "||". */ + if (valueFormats[0].apply_value (c, this, &record->values[0], buffer->cur_pos()) | + valueFormats[1].apply_value (c, this, &record->values[len1], buffer->pos[pos])) + buffer->unsafe_to_break (buffer->idx, pos + 1); + if (len2) + pos++; + buffer->idx = pos; + return_trace (true); } - return_trace (false); } bool subset (hb_subset_context_t *c, - const ValueFormat valueFormats[2]) const + const ValueFormat valueFormats[2]) const { TRACE_SUBSET (this); auto snap = c->serializer->snapshot (); @@ -875,12 +983,20 @@ struct PairSet unsigned len2 = valueFormats[1].get_len (); unsigned record_size = HBUINT16::static_size + Value::static_size * (len1 + len2); + PairValueRecord::serialize_closure_t closure = + { + this, + valueFormats, + len1, + &glyph_map + }; + const PairValueRecord *record = &firstPairValueRecord; unsigned count = len, num = 0; for (unsigned i = 0; i < count; i++) { - if (!glyphset.has (record->secondGlyph)) continue; - if (record->serialize (c->serializer, len1 + len2, glyph_map)) num++; + if (glyphset.has (record->secondGlyph) + && record->serialize (c->serializer, &closure)) num++; record = &StructAtOffset (record, record_size); } @@ -891,7 +1007,6 @@ struct PairSet struct sanitize_closure_t { - const void *base; const ValueFormat *valueFormats; unsigned int len1; /* valueFormats[0].get_len() */ unsigned int stride; /* 1 + len1 + len2 */ @@ -908,8 +1023,8 @@ struct PairSet unsigned int count = len; const PairValueRecord *record = &firstPairValueRecord; - return_trace (closure->valueFormats[0].sanitize_values_stride_unsafe (c, closure->base, &record->values[0], count, closure->stride) && - closure->valueFormats[1].sanitize_values_stride_unsafe (c, closure->base, &record->values[closure->len1], count, closure->stride)); + return_trace (closure->valueFormats[0].sanitize_values_stride_unsafe (c, this, &record->values[0], count, closure->stride) && + closure->valueFormats[1].sanitize_values_stride_unsafe (c, this, &record->values[closure->len1], count, closure->stride)); } protected: @@ -935,9 +1050,11 @@ struct PairPosFormat1 ; } + void closure_lookups (hb_closure_lookups_context_t *c) const {} + void collect_glyphs (hb_collect_glyphs_context_t *c) const { - if (unlikely (!(this+coverage).add_coverage (c->input))) return; + if (unlikely (!(this+coverage).collect_coverage (c->input))) return; unsigned int count = pairSet.len; for (unsigned int i = 0; i < count; i++) (this+pairSet[i]).collect_glyphs (c, valueFormat); @@ -981,7 +1098,7 @@ struct PairPosFormat1 auto *o = out->pairSet.serialize_append (c->serializer); if (unlikely (!o)) return false; auto snap = c->serializer->snapshot (); - bool ret = o->serialize_subset (c, _, this, out, valueFormat); + bool ret = o->serialize_subset (c, _, this, valueFormat); if (!ret) { out->pairSet.pop (); @@ -1011,7 +1128,6 @@ struct PairPosFormat1 unsigned int len2 = valueFormat[1].get_len (); PairSet::sanitize_closure_t closure = { - this, valueFormat, len1, 1 + len1 + len2 @@ -1046,10 +1162,12 @@ struct PairPosFormat2 (this+classDef2).intersects (glyphs); } + void closure_lookups (hb_closure_lookups_context_t *c) const {} + void collect_glyphs (hb_collect_glyphs_context_t *c) const { - if (unlikely (!(this+coverage).add_coverage (c->input))) return; - if (unlikely (!(this+classDef2).add_coverage (c->input))) return; + if (unlikely (!(this+coverage).collect_coverage (c->input))) return; + if (unlikely (!(this+classDef2).collect_coverage (c->input))) return; } const Coverage &get_coverage () const { return this+coverage; } @@ -1096,32 +1214,33 @@ struct PairPosFormat2 out->valueFormat2 = valueFormat2; hb_map_t klass1_map; - out->classDef1.serialize_subset (c, classDef1, this, out, &klass1_map); + out->classDef1.serialize_subset (c, classDef1, this, &klass1_map); out->class1Count = klass1_map.get_population (); hb_map_t klass2_map; - out->classDef2.serialize_subset (c, classDef2, this, out, &klass2_map); + out->classDef2.serialize_subset (c, classDef2, this, &klass2_map); out->class2Count = klass2_map.get_population (); - unsigned record_len = valueFormat1.get_len () + valueFormat2.get_len (); + unsigned len1 = valueFormat1.get_len (); + unsigned len2 = valueFormat2.get_len (); + hb_range ((unsigned) class1Count) | hb_filter (klass1_map) | hb_apply ([&] (const unsigned class1_idx) - { - + hb_range ((unsigned) class2Count) - | hb_filter (klass2_map) - | hb_apply ([&] (const unsigned class2_idx) - { - unsigned idx = (class1_idx * (unsigned) class2Count + class2_idx) * record_len; - for (unsigned i = 0; i < record_len; i++) - c->serializer->copy (values[idx+i]); - }) - ; - }) + { + + hb_range ((unsigned) class2Count) + | hb_filter (klass2_map) + | hb_apply ([&] (const unsigned class2_idx) + { + unsigned idx = (class1_idx * (unsigned) class2Count + class2_idx) * (len1 + len2); + valueFormat1.serialize_copy (c->serializer, this, &values[idx]); + valueFormat2.serialize_copy (c->serializer, this, &values[idx + len1]); + }) + ; + }) ; - const hb_set_t &glyphset = *c->plan->glyphset (); + const hb_set_t &glyphset = *c->plan->_glyphset_gsub; const hb_map_t &glyph_map = *c->plan->glyph_map; auto it = @@ -1217,16 +1336,14 @@ struct EntryExitRecord return_trace (entryAnchor.sanitize (c, base) && exitAnchor.sanitize (c, base)); } - EntryExitRecord* copy (hb_serialize_context_t *c, - const void *src_base, - const void *dst_base) const + EntryExitRecord* copy (hb_serialize_context_t *c, const void *base) const { TRACE_SERIALIZE (this); auto *out = c->embed (this); if (unlikely (!out)) return_trace (nullptr); - out->entryAnchor.serialize_copy (c, entryAnchor, src_base, dst_base); - out->exitAnchor.serialize_copy (c, exitAnchor, src_base, dst_base); + out->entryAnchor.serialize_copy (c, entryAnchor, base); + out->exitAnchor.serialize_copy (c, exitAnchor, base); return_trace (out); } @@ -1251,8 +1368,10 @@ struct CursivePosFormat1 bool intersects (const hb_set_t *glyphs) const { return (this+coverage).intersects (glyphs); } + void closure_lookups (hb_closure_lookups_context_t *c) const {} + void collect_glyphs (hb_collect_glyphs_context_t *c) const - { if (unlikely (!(this+coverage).add_coverage (c->input))) return; } + { if (unlikely (!(this+coverage).collect_coverage (c->input))) return; } const Coverage &get_coverage () const { return this+coverage; } @@ -1359,9 +1478,7 @@ struct CursivePosFormat1 template - void serialize (hb_serialize_context_t *c, - Iterator it, - const void *src_base) + void serialize (hb_serialize_context_t *c, Iterator it, const void *base) { if (unlikely (!c->extend_min ((*this)))) return; this->format = 1; @@ -1369,7 +1486,7 @@ struct CursivePosFormat1 for (const EntryExitRecord& entry_record : + it | hb_map (hb_second)) - c->copy (entry_record, src_base, this); + c->copy (entry_record, base); auto glyphs = + it @@ -1444,16 +1561,41 @@ typedef AnchorMatrix BaseArray; /* base-major-- * mark-minor-- * ordered by class--zero-based. */ +static void Markclass_closure_and_remap_indexes (const Coverage &mark_coverage, + const MarkArray &mark_array, + const hb_set_t &glyphset, + hb_map_t* klass_mapping /* INOUT */) +{ + hb_set_t orig_classes; + + + hb_zip (mark_coverage, mark_array) + | hb_filter (glyphset, hb_first) + | hb_map (hb_second) + | hb_map (&MarkRecord::get_class) + | hb_sink (orig_classes) + ; + + unsigned idx = 0; + for (auto klass : orig_classes.iter ()) + { + if (klass_mapping->has (klass)) continue; + klass_mapping->set (klass, idx); + idx++; + } +} + struct MarkBasePosFormat1 { bool intersects (const hb_set_t *glyphs) const { return (this+markCoverage).intersects (glyphs) && (this+baseCoverage).intersects (glyphs); } + void closure_lookups (hb_closure_lookups_context_t *c) const {} + void collect_glyphs (hb_collect_glyphs_context_t *c) const { - if (unlikely (!(this+markCoverage).add_coverage (c->input))) return; - if (unlikely (!(this+baseCoverage).add_coverage (c->input))) return; + if (unlikely (!(this+markCoverage).collect_coverage (c->input))) return; + if (unlikely (!(this+baseCoverage).collect_coverage (c->input))) return; } const Coverage &get_coverage () const { return this+markCoverage; } @@ -1501,8 +1643,70 @@ struct MarkBasePosFormat1 bool subset (hb_subset_context_t *c) const { TRACE_SUBSET (this); - // TODO(subset) - return_trace (false); + const hb_set_t &glyphset = *c->plan->glyphset (); + const hb_map_t &glyph_map = *c->plan->glyph_map; + + auto *out = c->serializer->start_embed (*this); + if (unlikely (!c->serializer->extend_min (out))) return_trace (false); + out->format = format; + + hb_map_t klass_mapping; + Markclass_closure_and_remap_indexes (this+markCoverage, this+markArray, glyphset, &klass_mapping); + + if (!klass_mapping.get_population ()) return_trace (false); + out->classCount = klass_mapping.get_population (); + + auto mark_iter = + + hb_zip (this+markCoverage, this+markArray) + | hb_filter (glyphset, hb_first) + ; + + hb_sorted_vector_t new_coverage; + + mark_iter + | hb_map (hb_first) + | hb_map (glyph_map) + | hb_sink (new_coverage) + ; + + if (!out->markCoverage.serialize (c->serializer, out) + .serialize (c->serializer, new_coverage.iter ())) + return_trace (false); + + out->markArray.serialize (c->serializer, out) + .serialize (c->serializer, &klass_mapping, &(this+markArray), + mark_iter + | hb_map (hb_second)); + + unsigned basecount = (this+baseArray).rows; + auto base_iter = + + hb_zip (this+baseCoverage, hb_range (basecount)) + | hb_filter (glyphset, hb_first) + ; + + new_coverage.reset (); + + base_iter + | hb_map (hb_first) + | hb_map (glyph_map) + | hb_sink (new_coverage) + ; + + if (!out->baseCoverage.serialize (c->serializer, out) + .serialize (c->serializer, new_coverage.iter ())) + return_trace (false); + + hb_sorted_vector_t base_indexes; + for (const unsigned row : + base_iter + | hb_map (hb_second)) + { + + hb_range ((unsigned) classCount) + | hb_filter (klass_mapping) + | hb_map ([&] (const unsigned col) { return row * (unsigned) classCount + col; }) + | hb_sink (base_indexes) + ; + } + out->baseArray.serialize (c->serializer, out) + .serialize (c->serializer, base_iter.len (), &(this+baseArray), base_indexes.iter ()); + + return_trace (true); } bool sanitize (hb_sanitize_context_t *c) const @@ -1571,10 +1775,12 @@ struct MarkLigPosFormat1 { return (this+markCoverage).intersects (glyphs) && (this+ligatureCoverage).intersects (glyphs); } + void closure_lookups (hb_closure_lookups_context_t *c) const {} + void collect_glyphs (hb_collect_glyphs_context_t *c) const { - if (unlikely (!(this+markCoverage).add_coverage (c->input))) return; - if (unlikely (!(this+ligatureCoverage).add_coverage (c->input))) return; + if (unlikely (!(this+markCoverage).collect_coverage (c->input))) return; + if (unlikely (!(this+ligatureCoverage).collect_coverage (c->input))) return; } const Coverage &get_coverage () const { return this+markCoverage; } @@ -1691,10 +1897,12 @@ struct MarkMarkPosFormat1 { return (this+mark1Coverage).intersects (glyphs) && (this+mark2Coverage).intersects (glyphs); } + void closure_lookups (hb_closure_lookups_context_t *c) const {} + void collect_glyphs (hb_collect_glyphs_context_t *c) const { - if (unlikely (!(this+mark1Coverage).add_coverage (c->input))) return; - if (unlikely (!(this+mark2Coverage).add_coverage (c->input))) return; + if (unlikely (!(this+mark1Coverage).collect_coverage (c->input))) return; + if (unlikely (!(this+mark2Coverage).collect_coverage (c->input))) return; } const Coverage &get_coverage () const { return this+mark1Coverage; } @@ -1746,8 +1954,70 @@ struct MarkMarkPosFormat1 bool subset (hb_subset_context_t *c) const { TRACE_SUBSET (this); - // TODO(subset) - return_trace (false); + const hb_set_t &glyphset = *c->plan->glyphset (); + const hb_map_t &glyph_map = *c->plan->glyph_map; + + auto *out = c->serializer->start_embed (*this); + if (unlikely (!c->serializer->extend_min (out))) return_trace (false); + out->format = format; + + hb_map_t klass_mapping; + Markclass_closure_and_remap_indexes (this+mark1Coverage, this+mark1Array, glyphset, &klass_mapping); + + if (!klass_mapping.get_population ()) return_trace (false); + out->classCount = klass_mapping.get_population (); + + auto mark1_iter = + + hb_zip (this+mark1Coverage, this+mark1Array) + | hb_filter (glyphset, hb_first) + ; + + hb_sorted_vector_t new_coverage; + + mark1_iter + | hb_map (hb_first) + | hb_map (glyph_map) + | hb_sink (new_coverage) + ; + + if (!out->mark1Coverage.serialize (c->serializer, out) + .serialize (c->serializer, new_coverage.iter ())) + return_trace (false); + + out->mark1Array.serialize (c->serializer, out) + .serialize (c->serializer, &klass_mapping, &(this+mark1Array), + mark1_iter + | hb_map (hb_second)); +////// + unsigned mark2count = (this+mark2Array).rows; + auto mark2_iter = + + hb_zip (this+mark2Coverage, hb_range (mark2count)) + | hb_filter (glyphset, hb_first) + ; + + new_coverage.reset (); + + mark2_iter + | hb_map (hb_first) + | hb_map (glyph_map) + | hb_sink (new_coverage) + ; + + if (!out->mark2Coverage.serialize (c->serializer, out) + .serialize (c->serializer, new_coverage.iter ())) + return_trace (false); + + hb_sorted_vector_t mark2_indexes; + for (const unsigned row : + mark2_iter + | hb_map (hb_second)) + { + + hb_range ((unsigned) classCount) + | hb_filter (klass_mapping) + | hb_map ([&] (const unsigned col) { return row * (unsigned) classCount + col; }) + | hb_sink (mark2_indexes) + ; + } + out->mark2Array.serialize (c->serializer, out) + .serialize (c->serializer, mark2_iter.len (), &(this+mark2Array), mark2_indexes.iter ()); + + return_trace (true); } bool sanitize (hb_sanitize_context_t *c) const @@ -1853,6 +2123,12 @@ struct PosLookupSubTable } } + bool intersects (const hb_set_t *glyphs, unsigned int lookup_type) const + { + hb_intersects_context_t c (glyphs); + return dispatch (&c, lookup_type); + } + protected: union { SinglePos single; @@ -1897,18 +2173,37 @@ struct PosLookup : Lookup hb_collect_glyphs_context_t::return_t collect_glyphs (hb_collect_glyphs_context_t *c) const { return dispatch (c); } + hb_closure_lookups_context_t::return_t closure_lookups (hb_closure_lookups_context_t *c, unsigned this_index) const + { + if (c->is_lookup_visited (this_index)) + return hb_closure_lookups_context_t::default_return_value (); + + c->set_lookup_visited (this_index); + if (!intersects (c->glyphs)) + { + c->set_lookup_inactive (this_index); + return hb_closure_lookups_context_t::default_return_value (); + } + c->set_recurse_func (dispatch_closure_lookups_recurse_func); + + hb_closure_lookups_context_t::return_t ret = dispatch (c); + return ret; + } + template - void add_coverage (set_t *glyphs) const + void collect_coverage (set_t *glyphs) const { - hb_add_coverage_context_t c (glyphs); + hb_collect_coverage_context_t c (glyphs); dispatch (&c); } - HB_INTERNAL static bool apply_recurse_func (hb_ot_apply_context_t *c, unsigned int lookup_index); + static inline bool apply_recurse_func (hb_ot_apply_context_t *c, unsigned int lookup_index); template static typename context_t::return_t dispatch_recurse_func (context_t *c, unsigned int lookup_index); + HB_INTERNAL static hb_closure_lookups_context_t::return_t dispatch_closure_lookups_recurse_func (hb_closure_lookups_context_t *c, unsigned this_index); + template typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const { return Lookup::dispatch (c, hb_forward (ds)...); } @@ -1930,14 +2225,17 @@ struct GPOS : GSUBGPOS static constexpr hb_tag_t tableTag = HB_OT_TAG_GPOS; const PosLookup& get_lookup (unsigned int i) const - { return CastR (GSUBGPOS::get_lookup (i)); } + { return static_cast (GSUBGPOS::get_lookup (i)); } static inline void position_start (hb_font_t *font, hb_buffer_t *buffer); static inline void position_finish_advances (hb_font_t *font, hb_buffer_t *buffer); static inline void position_finish_offsets (hb_font_t *font, hb_buffer_t *buffer); bool subset (hb_subset_context_t *c) const - { return GSUBGPOS::subset (c); } + { + hb_subset_layout_context_t l (c, tableTag, c->plan->gpos_lookups, c->plan->gpos_features); + return GSUBGPOS::subset (&l); + } bool sanitize (hb_sanitize_context_t *c) const { return GSUBGPOS::sanitize (c); } @@ -2060,12 +2358,19 @@ struct GPOS_accelerator_t : GPOS::accelerator_t {}; #ifndef HB_NO_OT_LAYOUT template -/*static*/ inline typename context_t::return_t PosLookup::dispatch_recurse_func (context_t *c, unsigned int lookup_index) +/*static*/ typename context_t::return_t PosLookup::dispatch_recurse_func (context_t *c, unsigned int lookup_index) { const PosLookup &l = c->face->table.GPOS.get_relaxed ()->table->get_lookup (lookup_index); return l.dispatch (c); } -/*static*/ inline bool PosLookup::apply_recurse_func (hb_ot_apply_context_t *c, unsigned int lookup_index) + +/*static*/ inline hb_closure_lookups_context_t::return_t PosLookup::dispatch_closure_lookups_recurse_func (hb_closure_lookups_context_t *c, unsigned this_index) +{ + const PosLookup &l = c->face->table.GPOS.get_relaxed ()->table->get_lookup (this_index); + return l.closure_lookups (c, this_index); +} + +/*static*/ bool PosLookup::apply_recurse_func (hb_ot_apply_context_t *c, unsigned int lookup_index) { const PosLookup &l = c->face->table.GPOS.get_relaxed ()->table->get_lookup (lookup_index); unsigned int saved_lookup_props = c->lookup_props; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsub-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsub-table.hh index fc21cb056e8..01a5af125e4 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsub-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsub-table.hh @@ -37,8 +37,8 @@ namespace OT { typedef hb_pair_t hb_codepoint_pair_t; template -static inline void SingleSubst_serialize (hb_serialize_context_t *c, - Iterator it); +static void SingleSubst_serialize (hb_serialize_context_t *c, + Iterator it); struct SingleSubstFormat1 @@ -56,9 +56,11 @@ struct SingleSubstFormat1 ; } + void closure_lookups (hb_closure_lookups_context_t *c) const {} + void collect_glyphs (hb_collect_glyphs_context_t *c) const { - if (unlikely (!(this+coverage).add_coverage (c->input))) return; + if (unlikely (!(this+coverage).collect_coverage (c->input))) return; unsigned d = deltaGlyphID; + hb_iter (this+coverage) | hb_map ([d] (hb_codepoint_t g) { return (g + d) & 0xFFFFu; }) @@ -154,9 +156,11 @@ struct SingleSubstFormat2 ; } + void closure_lookups (hb_closure_lookups_context_t *c) const {} + void collect_glyphs (hb_collect_glyphs_context_t *c) const { - if (unlikely (!(this+coverage).add_coverage (c->input))) return; + if (unlikely (!(this+coverage).collect_coverage (c->input))) return; + hb_zip (this+coverage, substitute) | hb_map (hb_second) | hb_sink (c->output) @@ -255,9 +259,8 @@ struct SingleSubst if (glyphs) { format = 1; - auto get_delta = [=] (hb_codepoint_pair_t _) { - return (unsigned) (_.second - _.first) & 0xFFFF; - }; + auto get_delta = [=] (hb_codepoint_pair_t _) + { return (unsigned) (_.second - _.first) & 0xFFFF; }; delta = get_delta (*glyphs); if (!hb_all (++(+glyphs), delta, get_delta)) format = 2; } @@ -293,7 +296,7 @@ struct SingleSubst }; template -static inline void +static void SingleSubst_serialize (hb_serialize_context_t *c, Iterator it) { c->start_embed ()->serialize (c, it); } @@ -359,9 +362,9 @@ struct Sequence if (!intersects (&glyphset)) return_trace (false); auto it = - + hb_iter (substitute) - | hb_map (glyph_map) - ; + + hb_iter (substitute) + | hb_map (glyph_map) + ; auto *out = c->serializer->start_embed (*this); return_trace (out->serialize (c->serializer, it)); @@ -395,9 +398,11 @@ struct MultipleSubstFormat1 ; } + void closure_lookups (hb_closure_lookups_context_t *c) const {} + void collect_glyphs (hb_collect_glyphs_context_t *c) const { - if (unlikely (!(this+coverage).add_coverage (c->input))) return; + if (unlikely (!(this+coverage).collect_coverage (c->input))) return; + hb_zip (this+coverage, sequence) | hb_map (hb_second) | hb_map (hb_add (this)) @@ -452,7 +457,7 @@ struct MultipleSubstFormat1 hb_sorted_vector_t new_coverage; + hb_zip (this+coverage, sequence) | hb_filter (glyphset, hb_first) - | hb_filter (subset_offset_array (c, out->sequence, this, out), hb_second) + | hb_filter (subset_offset_array (c, out->sequence, this), hb_second) | hb_map (hb_first) | hb_map (glyph_map) | hb_sink (new_coverage) @@ -599,15 +604,18 @@ struct AlternateSubstFormat1 void closure (hb_closure_context_t *c) const { + hb_zip (this+coverage, alternateSet) + | hb_filter (c->glyphs, hb_first) | hb_map (hb_second) | hb_map (hb_add (this)) | hb_apply ([c] (const AlternateSet &_) { _.closure (c); }) ; } + void closure_lookups (hb_closure_lookups_context_t *c) const {} + void collect_glyphs (hb_collect_glyphs_context_t *c) const { - if (unlikely (!(this+coverage).add_coverage (c->input))) return; + if (unlikely (!(this+coverage).collect_coverage (c->input))) return; + hb_zip (this+coverage, alternateSet) | hb_map (hb_second) | hb_map (hb_add (this)) @@ -662,7 +670,7 @@ struct AlternateSubstFormat1 hb_sorted_vector_t new_coverage; + hb_zip (this+coverage, alternateSet) | hb_filter (glyphset, hb_first) - | hb_filter (subset_offset_array (c, out->alternateSet, this, out), hb_second) + | hb_filter (subset_offset_array (c, out->alternateSet, this), hb_second) | hb_map (hb_first) | hb_map (glyph_map) | hb_sink (new_coverage) @@ -922,7 +930,7 @@ struct LigatureSet if (unlikely (!c->serializer->extend_min (out))) return_trace (false); + hb_iter (ligature) - | hb_filter (subset_offset_array (c, out->ligature, this, out)) + | hb_filter (subset_offset_array (c, out->ligature, this)) | hb_drain ; return_trace (bool (out->ligature)); @@ -966,9 +974,11 @@ struct LigatureSubstFormat1 ; } + void closure_lookups (hb_closure_lookups_context_t *c) const {} + void collect_glyphs (hb_collect_glyphs_context_t *c) const { - if (unlikely (!(this+coverage).add_coverage (c->input))) return; + if (unlikely (!(this+coverage).collect_coverage (c->input))) return; + hb_zip (this+coverage, ligatureSet) | hb_map (hb_second) @@ -992,7 +1002,7 @@ struct LigatureSubstFormat1 { TRACE_APPLY (this); - unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint); + unsigned int index = (this+coverage).get_coverage (c->buffer->cur ().codepoint); if (likely (index == NOT_COVERED)) return_trace (false); const LigatureSet &lig_set = this+ligatureSet[index]; @@ -1036,7 +1046,7 @@ struct LigatureSubstFormat1 hb_sorted_vector_t new_coverage; + hb_zip (this+coverage, ligatureSet) | hb_filter (glyphset, hb_first) - | hb_filter (subset_offset_array (c, out->ligatureSet, this, out), hb_second) + | hb_filter (subset_offset_array (c, out->ligatureSet, this), hb_second) | hb_map (hb_first) | hb_map (glyph_map) | hb_sink (new_coverage) @@ -1114,7 +1124,6 @@ struct ChainContextSubst : ChainContext {}; struct ExtensionSubst : Extension { typedef struct SubstLookupSubTable SubTable; - bool is_reverse () const; }; @@ -1157,20 +1166,22 @@ struct ReverseChainSingleSubstFormat1 ; } + void closure_lookups (hb_closure_lookups_context_t *c) const {} + void collect_glyphs (hb_collect_glyphs_context_t *c) const { - if (unlikely (!(this+coverage).add_coverage (c->input))) return; + if (unlikely (!(this+coverage).collect_coverage (c->input))) return; unsigned int count; count = backtrack.len; for (unsigned int i = 0; i < count; i++) - if (unlikely (!(this+backtrack[i]).add_coverage (c->before))) return; + if (unlikely (!(this+backtrack[i]).collect_coverage (c->before))) return; const OffsetArrayOf &lookahead = StructAfter> (backtrack); count = lookahead.len; for (unsigned int i = 0; i < count; i++) - if (unlikely (!(this+lookahead[i]).add_coverage (c->after))) return; + if (unlikely (!(this+lookahead[i]).collect_coverage (c->after))) return; const ArrayOf &substitute = StructAfter> (lookahead); count = substitute.len; @@ -1188,7 +1199,7 @@ struct ReverseChainSingleSubstFormat1 if (unlikely (c->nesting_level_left != HB_MAX_NESTING_LEVEL)) return_trace (false); /* No chaining to this type */ - unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint); + unsigned int index = (this+coverage).get_coverage (c->buffer->cur ().codepoint); if (likely (index == NOT_COVERED)) return_trace (false); const OffsetArrayOf &lookahead = StructAfter> (backtrack); @@ -1313,6 +1324,12 @@ struct SubstLookupSubTable } } + bool intersects (const hb_set_t *glyphs, unsigned int lookup_type) const + { + hb_intersects_context_t c (glyphs); + return dispatch (&c, lookup_type); + } + protected: union { SingleSubst single; @@ -1336,14 +1353,14 @@ struct SubstLookup : Lookup const SubTable& get_subtable (unsigned int i) const { return Lookup::get_subtable (i); } - HB_INTERNAL static bool lookup_type_is_reverse (unsigned int lookup_type) + static inline bool lookup_type_is_reverse (unsigned int lookup_type) { return lookup_type == SubTable::ReverseChainSingle; } bool is_reverse () const { unsigned int type = get_type (); if (unlikely (type == SubTable::Extension)) - return CastR (get_subtable(0)).is_reverse (); + return reinterpret_cast (get_subtable (0)).is_reverse (); return lookup_type_is_reverse (type); } @@ -1373,6 +1390,24 @@ struct SubstLookup : Lookup return ret; } + hb_closure_lookups_context_t::return_t closure_lookups (hb_closure_lookups_context_t *c, unsigned this_index) const + { + if (c->is_lookup_visited (this_index)) + return hb_closure_lookups_context_t::default_return_value (); + + c->set_lookup_visited (this_index); + if (!intersects (c->glyphs)) + { + c->set_lookup_inactive (this_index); + return hb_closure_lookups_context_t::default_return_value (); + } + + c->set_recurse_func (dispatch_closure_lookups_recurse_func); + + hb_closure_lookups_context_t::return_t ret = dispatch (c); + return ret; + } + hb_collect_glyphs_context_t::return_t collect_glyphs (hb_collect_glyphs_context_t *c) const { c->set_recurse_func (dispatch_recurse_func); @@ -1380,9 +1415,9 @@ struct SubstLookup : Lookup } template - void add_coverage (set_t *glyphs) const + void collect_coverage (set_t *glyphs) const { - hb_add_coverage_context_t c (glyphs); + hb_collect_coverage_context_t c (glyphs); dispatch (&c); } @@ -1394,7 +1429,7 @@ struct SubstLookup : Lookup return dispatch (c); } - HB_INTERNAL static bool apply_recurse_func (hb_ot_apply_context_t *c, unsigned int lookup_index); + static inline bool apply_recurse_func (hb_ot_apply_context_t *c, unsigned int lookup_index); SubTable& serialize_subtable (hb_serialize_context_t *c, unsigned int i) @@ -1461,9 +1496,9 @@ struct SubstLookup : Lookup } template - HB_INTERNAL static typename context_t::return_t dispatch_recurse_func (context_t *c, unsigned int lookup_index); + static inline typename context_t::return_t dispatch_recurse_func (context_t *c, unsigned int lookup_index); - HB_INTERNAL static hb_closure_context_t::return_t dispatch_closure_recurse_func (hb_closure_context_t *c, unsigned int lookup_index) + static inline hb_closure_context_t::return_t dispatch_closure_recurse_func (hb_closure_context_t *c, unsigned int lookup_index) { if (!c->should_visit_lookup (lookup_index)) return hb_empty_t (); @@ -1478,6 +1513,8 @@ struct SubstLookup : Lookup return ret; } + HB_INTERNAL static hb_closure_lookups_context_t::return_t dispatch_closure_lookups_recurse_func (hb_closure_lookups_context_t *c, unsigned lookup_index); + template typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const { return Lookup::dispatch (c, hb_forward (ds)...); } @@ -1499,10 +1536,13 @@ struct GSUB : GSUBGPOS static constexpr hb_tag_t tableTag = HB_OT_TAG_GSUB; const SubstLookup& get_lookup (unsigned int i) const - { return CastR (GSUBGPOS::get_lookup (i)); } + { return static_cast (GSUBGPOS::get_lookup (i)); } bool subset (hb_subset_context_t *c) const - { return GSUBGPOS::subset (c); } + { + hb_subset_layout_context_t l (c, tableTag, c->plan->gsub_lookups, c->plan->gsub_features); + return GSUBGPOS::subset (&l); + } bool sanitize (hb_sanitize_context_t *c) const { return GSUBGPOS::sanitize (c); } @@ -1522,18 +1562,22 @@ struct GSUB_accelerator_t : GSUB::accelerator_t {}; #ifndef HB_NO_OT_LAYOUT /*static*/ inline bool ExtensionSubst::is_reverse () const { - unsigned int type = get_type (); - if (unlikely (type == SubTable::Extension)) - return CastR (get_subtable()).is_reverse (); - return SubstLookup::lookup_type_is_reverse (type); + return SubstLookup::lookup_type_is_reverse (get_type ()); } template -/*static*/ inline typename context_t::return_t SubstLookup::dispatch_recurse_func (context_t *c, unsigned int lookup_index) +/*static*/ typename context_t::return_t SubstLookup::dispatch_recurse_func (context_t *c, unsigned int lookup_index) { const SubstLookup &l = c->face->table.GSUB.get_relaxed ()->table->get_lookup (lookup_index); return l.dispatch (c); } -/*static*/ inline bool SubstLookup::apply_recurse_func (hb_ot_apply_context_t *c, unsigned int lookup_index) + +/*static*/ inline hb_closure_lookups_context_t::return_t SubstLookup::dispatch_closure_lookups_recurse_func (hb_closure_lookups_context_t *c, unsigned this_index) +{ + const SubstLookup &l = c->face->table.GSUB.get_relaxed ()->table->get_lookup (this_index); + return l.closure_lookups (c, this_index); +} + +/*static*/ bool SubstLookup::apply_recurse_func (hb_ot_apply_context_t *c, unsigned int lookup_index) { const SubstLookup &l = c->face->table.GSUB.get_relaxed ()->table->get_lookup (lookup_index); unsigned int saved_lookup_props = c->lookup_props; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh index 579d17871b8..c5c63edc544 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh @@ -76,10 +76,17 @@ struct hb_closure_context_t : nesting_level_left++; } + bool lookup_limit_exceeded () + { return lookup_count > HB_MAX_LOOKUP_INDICES; } + bool should_visit_lookup (unsigned int lookup_index) { + if (lookup_count++ > HB_MAX_LOOKUP_INDICES) + return false; + if (is_lookup_done (lookup_index)) return false; + done_lookups->set (lookup_index, glyphs->get_population ()); return true; } @@ -106,7 +113,9 @@ struct hb_closure_context_t : recurse_func (nullptr), nesting_level_left (nesting_level_left_), debug_depth (0), - done_lookups (done_lookups_) {} + done_lookups (done_lookups_), + lookup_count (0) + {} ~hb_closure_context_t () { flush (); } @@ -114,14 +123,83 @@ struct hb_closure_context_t : void flush () { + hb_set_del_range (output, face->get_num_glyphs (), hb_set_get_max (output)); /* Remove invalid glyphs. */ hb_set_union (glyphs, output); hb_set_clear (output); } private: hb_map_t *done_lookups; + unsigned int lookup_count; }; +struct hb_closure_lookups_context_t : + hb_dispatch_context_t +{ + const char *get_name () { return "CLOSURE_LOOKUPS"; } + typedef return_t (*recurse_func_t) (hb_closure_lookups_context_t *c, unsigned lookup_index); + template + return_t dispatch (const T &obj) { obj.closure_lookups (this); return hb_empty_t (); } + static return_t default_return_value () { return hb_empty_t (); } + void recurse (unsigned lookup_index) + { + if (unlikely (nesting_level_left == 0 || !recurse_func)) + return; + + /* Return if new lookup was recursed to before. */ + if (is_lookup_visited (lookup_index)) + return; + + set_lookup_visited (lookup_index); + nesting_level_left--; + recurse_func (this, lookup_index); + nesting_level_left++; + } + + void set_lookup_visited (unsigned lookup_index) + { visited_lookups->add (lookup_index); } + + void set_lookup_inactive (unsigned lookup_index) + { inactive_lookups->add (lookup_index); } + + bool lookup_limit_exceeded () + { return lookup_count > HB_MAX_LOOKUP_INDICES; } + + bool is_lookup_visited (unsigned lookup_index) + { + if (lookup_count++ > HB_MAX_LOOKUP_INDICES) + return true; + + return visited_lookups->has (lookup_index); + } + + hb_face_t *face; + const hb_set_t *glyphs; + recurse_func_t recurse_func; + unsigned int nesting_level_left; + unsigned int debug_depth; + + hb_closure_lookups_context_t (hb_face_t *face_, + const hb_set_t *glyphs_, + hb_set_t *visited_lookups_, + hb_set_t *inactive_lookups_, + unsigned nesting_level_left_ = HB_MAX_NESTING_LEVEL) : + face (face_), + glyphs (glyphs_), + recurse_func (nullptr), + nesting_level_left (nesting_level_left_), + debug_depth (0), + visited_lookups (visited_lookups_), + inactive_lookups (inactive_lookups_), + lookup_count (0) {} + + void set_recurse_func (recurse_func_t func) { recurse_func = func; } + + private: + hb_set_t *visited_lookups; + hb_set_t *inactive_lookups; + unsigned int lookup_count; +}; struct hb_would_apply_context_t : hb_dispatch_context_t @@ -229,23 +307,23 @@ struct hb_collect_glyphs_context_t : template -struct hb_add_coverage_context_t : - hb_dispatch_context_t, const Coverage &, HB_DEBUG_GET_COVERAGE> +struct hb_collect_coverage_context_t : + hb_dispatch_context_t, const Coverage &, HB_DEBUG_GET_COVERAGE> { const char *get_name () { return "GET_COVERAGE"; } typedef const Coverage &return_t; template return_t dispatch (const T &obj) { return obj.get_coverage (); } - static return_t default_return_value () { return Null(Coverage); } + static return_t default_return_value () { return Null (Coverage); } bool stop_sublookup_iteration (return_t r) const { - r.add_coverage (set); + r.collect_coverage (set); return false; } - hb_add_coverage_context_t (set_t *set_) : - set (set_), - debug_depth (0) {} + hb_collect_coverage_context_t (set_t *set_) : + set (set_), + debug_depth (0) {} set_t *set; unsigned int debug_depth; @@ -355,7 +433,7 @@ struct hb_ot_apply_context_t : } void reset (unsigned int start_index_, - unsigned int num_items_) + unsigned int num_items_) { idx = start_index_; num_items = num_items_; @@ -363,7 +441,11 @@ struct hb_ot_apply_context_t : matcher.set_syllable (start_index_ == c->buffer->idx ? c->buffer->cur().syllable () : 0); } - void reject () { num_items++; match_glyph_data--; } + void reject () + { + num_items++; + if (match_glyph_data) match_glyph_data--; + } matcher_t::may_skip_t may_skip (const hb_glyph_info_t &info) const @@ -487,7 +569,7 @@ struct hb_ot_apply_context_t : #ifndef HB_NO_OT_LAYOUT *face->table.GDEF->table #else - Null(GDEF) + Null (GDEF) #endif ), var_store (gdef.get_var_store ()), @@ -563,53 +645,56 @@ struct hb_ot_apply_context_t : return true; } - void _set_glyph_props (hb_codepoint_t glyph_index, - unsigned int class_guess = 0, - bool ligature = false, - bool component = false) const + void _set_glyph_class (hb_codepoint_t glyph_index, + unsigned int class_guess = 0, + bool ligature = false, + bool component = false) const { - unsigned int add_in = _hb_glyph_info_get_glyph_props (&buffer->cur()) & - HB_OT_LAYOUT_GLYPH_PROPS_PRESERVE; - add_in |= HB_OT_LAYOUT_GLYPH_PROPS_SUBSTITUTED; + unsigned int props = _hb_glyph_info_get_glyph_props (&buffer->cur()); + + props |= HB_OT_LAYOUT_GLYPH_PROPS_SUBSTITUTED; if (ligature) { - add_in |= HB_OT_LAYOUT_GLYPH_PROPS_LIGATED; + props |= HB_OT_LAYOUT_GLYPH_PROPS_LIGATED; /* In the only place that the MULTIPLIED bit is used, Uniscribe * seems to only care about the "last" transformation between * Ligature and Multiple substitutions. Ie. if you ligate, expand, * and ligate again, it forgives the multiplication and acts as * if only ligation happened. As such, clear MULTIPLIED bit. */ - add_in &= ~HB_OT_LAYOUT_GLYPH_PROPS_MULTIPLIED; + props &= ~HB_OT_LAYOUT_GLYPH_PROPS_MULTIPLIED; } if (component) - add_in |= HB_OT_LAYOUT_GLYPH_PROPS_MULTIPLIED; + props |= HB_OT_LAYOUT_GLYPH_PROPS_MULTIPLIED; + if (likely (has_glyph_classes)) - _hb_glyph_info_set_glyph_props (&buffer->cur(), add_in | gdef.get_glyph_props (glyph_index)); + props = (props & ~HB_OT_LAYOUT_GLYPH_PROPS_CLASS_MASK) | gdef.get_glyph_props (glyph_index); else if (class_guess) - _hb_glyph_info_set_glyph_props (&buffer->cur(), add_in | class_guess); + props = (props & ~HB_OT_LAYOUT_GLYPH_PROPS_CLASS_MASK) | class_guess; + + _hb_glyph_info_set_glyph_props (&buffer->cur(), props); } void replace_glyph (hb_codepoint_t glyph_index) const { - _set_glyph_props (glyph_index); + _set_glyph_class (glyph_index); buffer->replace_glyph (glyph_index); } void replace_glyph_inplace (hb_codepoint_t glyph_index) const { - _set_glyph_props (glyph_index); + _set_glyph_class (glyph_index); buffer->cur().codepoint = glyph_index; } void replace_glyph_with_ligature (hb_codepoint_t glyph_index, - unsigned int class_guess) const + unsigned int class_guess) const { - _set_glyph_props (glyph_index, class_guess, true); + _set_glyph_class (glyph_index, class_guess, true); buffer->replace_glyph (glyph_index); } void output_glyph_for_component (hb_codepoint_t glyph_index, - unsigned int class_guess) const + unsigned int class_guess) const { - _set_glyph_props (glyph_index, class_guess, false, true); + _set_glyph_class (glyph_index, class_guess, false, true); buffer->output_glyph (glyph_index); } }; @@ -619,7 +704,7 @@ struct hb_get_subtables_context_t : hb_dispatch_context_t { template - HB_INTERNAL static bool apply_to (const void *obj, OT::hb_ot_apply_context_t *c) + static inline bool apply_to (const void *obj, OT::hb_ot_apply_context_t *c) { const Type *typed_obj = (const Type *) obj; return typed_obj->apply (c); @@ -635,7 +720,7 @@ struct hb_get_subtables_context_t : obj = &obj_; apply_func = apply_func_; digest.init (); - obj_.get_coverage ().add_coverage (&digest); + obj_.get_coverage ().collect_coverage (&digest); } bool apply (OT::hb_ot_apply_context_t *c) const @@ -725,12 +810,12 @@ static inline void collect_glyph (hb_set_t *glyphs, const HBUINT16 &value, const static inline void collect_class (hb_set_t *glyphs, const HBUINT16 &value, const void *data) { const ClassDef &class_def = *reinterpret_cast(data); - class_def.add_class (glyphs, value); + class_def.collect_class (glyphs, value); } static inline void collect_coverage (hb_set_t *glyphs, const HBUINT16 &value, const void *data) { const OffsetTo &coverage = (const OffsetTo&)value; - (data+coverage).add_coverage (glyphs); + (data+coverage).collect_coverage (glyphs); } static inline void collect_array (hb_collect_glyphs_context_t *c HB_UNUSED, hb_set_t *glyphs, @@ -991,18 +1076,19 @@ static inline bool ligate_input (hb_ot_apply_context_t *c, buffer->idx++; } - if (!is_mark_ligature && last_lig_id) { + if (!is_mark_ligature && last_lig_id) + { /* Re-adjust components for any marks following. */ - for (unsigned int i = buffer->idx; i < buffer->len; i++) { - if (last_lig_id == _hb_glyph_info_get_lig_id (&buffer->info[i])) { - unsigned int this_comp = _hb_glyph_info_get_lig_comp (&buffer->info[i]); - if (!this_comp) - break; - unsigned int new_lig_comp = components_so_far - last_num_components + - hb_min (this_comp, last_num_components); - _hb_glyph_info_set_lig_props_for_mark (&buffer->info[i], lig_id, new_lig_comp); - } else - break; + for (unsigned i = buffer->idx; i < buffer->len; ++i) + { + if (last_lig_id != _hb_glyph_info_get_lig_id (&buffer->info[i])) break; + + unsigned this_comp = _hb_glyph_info_get_lig_comp (&buffer->info[i]); + if (!this_comp) break; + + unsigned new_lig_comp = components_so_far - last_num_components + + hb_min (this_comp, last_num_components); + _hb_glyph_info_set_lig_props_for_mark (&buffer->info[i], lig_id, new_lig_comp); } } return_trace (true); @@ -1057,6 +1143,17 @@ static inline bool match_lookahead (hb_ot_apply_context_t *c, struct LookupRecord { + LookupRecord* copy (hb_serialize_context_t *c, + const hb_map_t *lookup_map) + { + TRACE_SERIALIZE (this); + auto *out = c->embed (*this); + if (unlikely (!out)) return_trace (nullptr); + + out->lookupListIndex = hb_map_get (lookup_map, lookupListIndex); + return_trace (out); + } + bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); @@ -1303,6 +1400,8 @@ struct Rule void closure (hb_closure_context_t *c, ContextClosureLookupContext &lookup_context) const { + if (unlikely (c->lookup_limit_exceeded ())) return; + const UnsizedArrayOf &lookupRecord = StructAfter> (inputZ.as_array ((inputCount ? inputCount - 1 : 0))); context_closure_lookup (c, @@ -1311,6 +1410,15 @@ struct Rule lookup_context); } + void closure_lookups (hb_closure_lookups_context_t *c) const + { + if (unlikely (c->lookup_limit_exceeded ())) return; + + const UnsizedArrayOf &lookupRecord = StructAfter> + (inputZ.as_array (inputCount ? inputCount - 1 : 0)); + recurse_lookups (c, lookupCount, lookupRecord.arrayZ); + } + void collect_glyphs (hb_collect_glyphs_context_t *c, ContextCollectGlyphsLookupContext &lookup_context) const { @@ -1359,7 +1467,7 @@ struct Rule * glyph */ HBUINT16 lookupCount; /* Number of LookupRecords */ UnsizedArrayOf - inputZ; /* Array of match inputs--start with + inputZ; /* Array of match inputs--start with * second glyph */ /*UnsizedArrayOf lookupRecordX;*/ /* Array of LookupRecords--in @@ -1384,6 +1492,8 @@ struct RuleSet void closure (hb_closure_context_t *c, ContextClosureLookupContext &lookup_context) const { + if (unlikely (c->lookup_limit_exceeded ())) return; + return + hb_iter (rule) | hb_map (hb_add (this)) @@ -1391,6 +1501,17 @@ struct RuleSet ; } + void closure_lookups (hb_closure_lookups_context_t *c) const + { + if (unlikely (c->lookup_limit_exceeded ())) return; + + return + + hb_iter (rule) + | hb_map (hb_add (this)) + | hb_apply ([&] (const Rule &_) { _.closure_lookups (c); }) + ; + } + void collect_glyphs (hb_collect_glyphs_context_t *c, ContextCollectGlyphsLookupContext &lookup_context) const { @@ -1474,9 +1595,17 @@ struct ContextFormat1 ; } + void closure_lookups (hb_closure_lookups_context_t *c) const + { + + hb_iter (ruleSet) + | hb_map (hb_add (this)) + | hb_apply ([&] (const RuleSet &_) { _.closure_lookups (c); }) + ; + } + void collect_glyphs (hb_collect_glyphs_context_t *c) const { - (this+coverage).add_coverage (c->input); + (this+coverage).collect_coverage (c->input); struct ContextCollectGlyphsLookupContext lookup_context = { {collect_glyph}, @@ -1588,9 +1717,17 @@ struct ContextFormat2 ; } + void closure_lookups (hb_closure_lookups_context_t *c) const + { + + hb_iter (ruleSet) + | hb_map (hb_add (this)) + | hb_apply ([&] (const RuleSet &_) { _.closure_lookups (c); }) + ; + } + void collect_glyphs (hb_collect_glyphs_context_t *c) const { - (this+coverage).add_coverage (c->input); + (this+coverage).collect_coverage (c->input); const ClassDef &class_def = this+classDef; struct ContextCollectGlyphsLookupContext lookup_context = { @@ -1695,9 +1832,15 @@ struct ContextFormat3 lookup_context); } + void closure_lookups (hb_closure_lookups_context_t *c) const + { + const LookupRecord *lookupRecord = &StructAfter (coverageZ.as_array (glyphCount)); + recurse_lookups (c, lookupCount, lookupRecord); + } + void collect_glyphs (hb_collect_glyphs_context_t *c) const { - (this+coverageZ[0]).add_coverage (c->input); + (this+coverageZ[0]).collect_coverage (c->input); const LookupRecord *lookupRecord = &StructAfter (coverageZ.as_array (glyphCount)); struct ContextCollectGlyphsLookupContext lookup_context = { @@ -1949,6 +2092,8 @@ struct ChainRule void closure (hb_closure_context_t *c, ChainContextClosureLookupContext &lookup_context) const { + if (unlikely (c->lookup_limit_exceeded ())) return; + const HeadlessArrayOf &input = StructAfter> (backtrack); const ArrayOf &lookahead = StructAfter> (input); const ArrayOf &lookup = StructAfter> (lookahead); @@ -1960,6 +2105,16 @@ struct ChainRule lookup_context); } + void closure_lookups (hb_closure_lookups_context_t *c) const + { + if (unlikely (c->lookup_limit_exceeded ())) return; + + const HeadlessArrayOf &input = StructAfter> (backtrack); + const ArrayOf &lookahead = StructAfter> (input); + const ArrayOf &lookup = StructAfter> (lookahead); + recurse_lookups (c, lookup.len, lookup.arrayZ); + } + void collect_glyphs (hb_collect_glyphs_context_t *c, ChainContextCollectGlyphsLookupContext &lookup_context) const { @@ -2003,8 +2158,8 @@ struct ChainRule template void serialize_array (hb_serialize_context_t *c, - HBUINT16 len, - Iterator it) const + HBUINT16 len, + Iterator it) const { c->copy (len); for (const auto g : it) @@ -2045,9 +2200,9 @@ struct ChainRule } bool subset (hb_subset_context_t *c, - const hb_map_t *backtrack_map = nullptr, - const hb_map_t *input_map = nullptr, - const hb_map_t *lookahead_map = nullptr) const + const hb_map_t *backtrack_map = nullptr, + const hb_map_t *input_map = nullptr, + const hb_map_t *lookahead_map = nullptr) const { TRACE_SUBSET (this); @@ -2058,18 +2213,18 @@ struct ChainRule { const hb_set_t &glyphset = *c->plan->glyphset (); if (!hb_all (backtrack, glyphset) || - !hb_all (input, glyphset) || - !hb_all (lookahead, glyphset)) - return_trace (false); + !hb_all (input, glyphset) || + !hb_all (lookahead, glyphset)) + return_trace (false); copy (c->serializer, c->plan->glyph_map); } else { if (!hb_all (backtrack, backtrack_map) || - !hb_all (input, input_map) || - !hb_all (lookahead, lookahead_map)) - return_trace (false); + !hb_all (input, input_map) || + !hb_all (lookahead, lookahead_map)) + return_trace (false); copy (c->serializer, backtrack_map, input_map, lookahead_map); } @@ -2120,6 +2275,8 @@ struct ChainRuleSet } void closure (hb_closure_context_t *c, ChainContextClosureLookupContext &lookup_context) const { + if (unlikely (c->lookup_limit_exceeded ())) return; + return + hb_iter (rule) | hb_map (hb_add (this)) @@ -2127,6 +2284,17 @@ struct ChainRuleSet ; } + void closure_lookups (hb_closure_lookups_context_t *c) const + { + if (unlikely (c->lookup_limit_exceeded ())) return; + + return + + hb_iter (rule) + | hb_map (hb_add (this)) + | hb_apply ([&] (const ChainRule &_) { _.closure_lookups (c); }) + ; + } + void collect_glyphs (hb_collect_glyphs_context_t *c, ChainContextCollectGlyphsLookupContext &lookup_context) const { return @@ -2159,9 +2327,9 @@ struct ChainRuleSet } bool subset (hb_subset_context_t *c, - const hb_map_t *backtrack_klass_map = nullptr, - const hb_map_t *input_klass_map = nullptr, - const hb_map_t *lookahead_klass_map = nullptr) const + const hb_map_t *backtrack_klass_map = nullptr, + const hb_map_t *input_klass_map = nullptr, + const hb_map_t *lookahead_klass_map = nullptr) const { TRACE_SUBSET (this); @@ -2176,13 +2344,13 @@ struct ChainRuleSet if (unlikely (!o)) continue; auto o_snap = c->serializer->snapshot (); - if (!o->serialize_subset (c, _, this, out, - backtrack_klass_map, - input_klass_map, - lookahead_klass_map)) + if (!o->serialize_subset (c, _, this, + backtrack_klass_map, + input_klass_map, + lookahead_klass_map)) { - out->rule.pop (); - c->serializer->revert (o_snap); + out->rule.pop (); + c->serializer->revert (o_snap); } } @@ -2240,9 +2408,17 @@ struct ChainContextFormat1 ; } + void closure_lookups (hb_closure_lookups_context_t *c) const + { + + hb_iter (ruleSet) + | hb_map (hb_add (this)) + | hb_apply ([&] (const ChainRuleSet &_) { _.closure_lookups (c); }) + ; + } + void collect_glyphs (hb_collect_glyphs_context_t *c) const { - (this+coverage).add_coverage (c->input); + (this+coverage).collect_coverage (c->input); struct ChainContextCollectGlyphsLookupContext lookup_context = { {collect_glyph}, @@ -2294,7 +2470,7 @@ struct ChainContextFormat1 hb_sorted_vector_t new_coverage; + hb_zip (this+coverage, ruleSet) | hb_filter (glyphset, hb_first) - | hb_filter (subset_offset_array (c, out->ruleSet, this, out), hb_second) + | hb_filter (subset_offset_array (c, out->ruleSet, this), hb_second) | hb_map (hb_first) | hb_map (glyph_map) | hb_sink (new_coverage) @@ -2376,9 +2552,17 @@ struct ChainContextFormat2 ; } + void closure_lookups (hb_closure_lookups_context_t *c) const + { + + hb_iter (ruleSet) + | hb_map (hb_add (this)) + | hb_apply ([&] (const ChainRuleSet &_) { _.closure_lookups (c); }) + ; + } + void collect_glyphs (hb_collect_glyphs_context_t *c) const { - (this+coverage).add_coverage (c->input); + (this+coverage).collect_coverage (c->input); const ClassDef &backtrack_class_def = this+backtrackClassDef; const ClassDef &input_class_def = this+inputClassDef; @@ -2443,17 +2627,17 @@ struct ChainContextFormat2 auto *out = c->serializer->start_embed (*this); if (unlikely (!c->serializer->extend_min (out))) return_trace (false); out->format = format; - out->coverage.serialize_subset (c, coverage, this, out); + out->coverage.serialize_subset (c, coverage, this); hb_map_t backtrack_klass_map; - out->backtrackClassDef.serialize_subset (c, backtrackClassDef, this, out, &backtrack_klass_map); + out->backtrackClassDef.serialize_subset (c, backtrackClassDef, this, &backtrack_klass_map); // subset inputClassDef based on glyphs survived in Coverage subsetting hb_map_t input_klass_map; - out->inputClassDef.serialize_subset (c, inputClassDef, this, out, &input_klass_map); + out->inputClassDef.serialize_subset (c, inputClassDef, this, &input_klass_map); hb_map_t lookahead_klass_map; - out->lookaheadClassDef.serialize_subset (c, lookaheadClassDef, this, out, &lookahead_klass_map); + out->lookaheadClassDef.serialize_subset (c, lookaheadClassDef, this, &lookahead_klass_map); hb_vector_t rulesets; bool ret = true; @@ -2464,15 +2648,15 @@ struct ChainContextFormat2 auto *o = out->ruleSet.serialize_append (c->serializer); if (unlikely (!o)) { - ret = false; - break; + ret = false; + break; } - if (!o->serialize_subset (c, _, this, out, - &backtrack_klass_map, - &input_klass_map, - &lookahead_klass_map)) + if (!o->serialize_subset (c, _, this, + &backtrack_klass_map, + &input_klass_map, + &lookahead_klass_map)) { - rulesets.push (0); + rulesets.push (0); } else rulesets.push (1); } @@ -2566,11 +2750,19 @@ struct ChainContextFormat3 lookup_context); } + void closure_lookups (hb_closure_lookups_context_t *c) const + { + const OffsetArrayOf &input = StructAfter> (backtrack); + const OffsetArrayOf &lookahead = StructAfter> (input); + const ArrayOf &lookup = StructAfter> (lookahead); + recurse_lookups (c, lookup.len, lookup.arrayZ); + } + void collect_glyphs (hb_collect_glyphs_context_t *c) const { const OffsetArrayOf &input = StructAfter> (backtrack); - (this+input[0]).add_coverage (c->input); + (this+input[0]).collect_coverage (c->input); const OffsetArrayOf &lookahead = StructAfter> (input); const ArrayOf &lookup = StructAfter> (lookahead); @@ -2631,10 +2823,7 @@ struct ChainContextFormat3 template - bool serialize_coverage_offsets (hb_subset_context_t *c, - Iterator it, - const void* src_base, - const void* dst_base) const + bool serialize_coverage_offsets (hb_subset_context_t *c, Iterator it, const void* base) const { TRACE_SERIALIZE (this); auto *out = c->serializer->start_embed> (); @@ -2642,7 +2831,7 @@ struct ChainContextFormat3 if (unlikely (!c->serializer->allocate_size (HBUINT16::static_size))) return_trace (false); + it - | hb_apply (subset_offset_array (c, *out, src_base, dst_base)) + | hb_apply (subset_offset_array (c, *out, base)) ; return_trace (out->len); @@ -2656,15 +2845,15 @@ struct ChainContextFormat3 if (unlikely (!out)) return_trace (false); if (unlikely (!c->serializer->embed (this->format))) return_trace (false); - if (!serialize_coverage_offsets (c, backtrack.iter (), this, out)) + if (!serialize_coverage_offsets (c, backtrack.iter (), this)) return_trace (false); const OffsetArrayOf &input = StructAfter> (backtrack); - if (!serialize_coverage_offsets (c, input.iter (), this, out)) + if (!serialize_coverage_offsets (c, input.iter (), this)) return_trace (false); const OffsetArrayOf &lookahead = StructAfter> (input); - if (!serialize_coverage_offsets (c, lookahead.iter (), this, out)) + if (!serialize_coverage_offsets (c, lookahead.iter (), this)) return_trace (false); const ArrayOf &lookup = StructAfter> (lookahead); @@ -2737,7 +2926,7 @@ struct ExtensionFormat1 template const X& get_subtable () const - { return this + CastR> (extensionOffset); } + { return this + reinterpret_cast &> (extensionOffset); } template typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const @@ -2781,7 +2970,7 @@ struct Extension { switch (u.format) { case 1: return u.format1.template get_subtable (); - default:return Null(typename T::SubTable); + default:return Null (typename T::SubTable); } } @@ -2814,7 +3003,7 @@ struct hb_ot_layout_lookup_accelerator_t void init (const TLookup &lookup) { digest.init (); - lookup.add_coverage (&digest); + lookup.collect_coverage (&digest); subtables.init (); OT::hb_get_subtables_context_t c_get_subtables (subtables); @@ -2875,10 +3064,11 @@ struct GSUBGPOS bool find_variations_index (const int *coords, unsigned int num_coords, unsigned int *index) const { -#ifdef HB_NOVAR +#ifdef HB_NO_VAR + *index = FeatureVariations::NOT_FOUND_INDEX; return false; #endif - return (version.to_int () >= 0x00010001u ? this+featureVars : Null(FeatureVariations)) + return (version.to_int () >= 0x00010001u ? this+featureVars : Null (FeatureVariations)) .find_index (coords, num_coords, index); } const Feature& get_feature_variation (unsigned int feature_index, @@ -2897,32 +3087,70 @@ struct GSUBGPOS return get_feature (feature_index); } + void feature_variation_collect_lookups (const hb_set_t *feature_indexes, + hb_set_t *lookup_indexes /* OUT */) const + { +#ifndef HB_NO_VAR + if (version.to_int () >= 0x00010001u) + (this+featureVars).collect_lookups (feature_indexes, lookup_indexes); +#endif + } + template - bool subset (hb_subset_context_t *c) const + bool subset (hb_subset_layout_context_t *c) const { TRACE_SUBSET (this); - auto *out = c->serializer->embed (*this); + auto *out = c->subset_context->serializer->embed (*this); if (unlikely (!out)) return_trace (false); - out->scriptList.serialize_subset (c, scriptList, this, out); - out->featureList.serialize_subset (c, featureList, this, out); + typedef LookupOffsetList TLookupList; + reinterpret_cast &> (out->lookupList) + .serialize_subset (c->subset_context, + reinterpret_cast &> (lookupList), + this, + c); - typedef OffsetListOf TLookupList; - /* TODO Use intersects() to count how many subtables survive? */ - CastR> (out->lookupList) - .serialize_subset (c, - CastR> (lookupList), - this, - out); + reinterpret_cast &> (out->featureList) + .serialize_subset (c->subset_context, + reinterpret_cast &> (featureList), + this, + c); + + out->scriptList.serialize_subset (c->subset_context, + scriptList, + this, + c); #ifndef HB_NO_VAR if (version.to_int () >= 0x00010001u) - out->featureVars.serialize_copy (c->serializer, featureVars, this, out); + { + bool ret = out->featureVars.serialize_subset (c->subset_context, featureVars, this, c); + if (!ret) + { + out->version.major = 1; + out->version.minor = 0; + } + } #endif return_trace (true); } + void closure_features (const hb_map_t *lookup_indexes, /* IN */ + hb_set_t *feature_indexes /* OUT */) const + { + unsigned int feature_count = hb_min (get_feature_count (), (unsigned) HB_MAX_FEATURES); + for (unsigned i = 0; i < feature_count; i++) + { + if (get_feature (i).intersects_lookup_indexes (lookup_indexes)) + feature_indexes->add (i); + } +#ifndef HB_NO_VAR + if (version.to_int () >= 0x00010001u) + (this+featureVars).closure_features (lookup_indexes, feature_indexes); +#endif + } + unsigned int get_size () const { return min_size + @@ -2938,7 +3166,7 @@ struct GSUBGPOS likely (version.major == 1) && scriptList.sanitize (c, this) && featureList.sanitize (c, this) && - CastR> (lookupList).sanitize (c, this)))) + reinterpret_cast &> (lookupList).sanitize (c, this)))) return_trace (false); #ifndef HB_NO_VAR @@ -2954,7 +3182,7 @@ struct GSUBGPOS { void init (hb_face_t *face) { - this->table = hb_sanitize_context_t().reference_table (face); + this->table = hb_sanitize_context_t ().reference_table (face); if (unlikely (this->table->is_blacklisted (this->table.get_blob (), face))) { hb_blob_destroy (this->table.get_blob ()); @@ -2988,11 +3216,11 @@ struct GSUBGPOS FixedVersion<>version; /* Version of the GSUB/GPOS table--initially set * to 0x00010000u */ OffsetTo - scriptList; /* ScriptList table */ + scriptList; /* ScriptList table */ OffsetTo - featureList; /* FeatureList table */ + featureList; /* FeatureList table */ OffsetTo - lookupList; /* LookupList table */ + lookupList; /* LookupList table */ LOffsetTo featureVars; /* Offset to Feature Variations table--from beginning of table diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-jstf-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-jstf-table.hh index 53eb623cf5c..ffd2bf45745 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-jstf-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-jstf-table.hh @@ -222,7 +222,7 @@ struct JSTF FixedVersion<>version; /* Version of the JSTF table--initially set * to 0x00010000u */ RecordArrayOf - scriptList; /* Array of JstfScripts--listed + scriptList; /* Array of JstfScripts--listed * alphabetically by ScriptTag */ public: DEFINE_SIZE_ARRAY (6, scriptList); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc index fba3ad1916a..5b1d9764edb 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc @@ -399,27 +399,6 @@ OT::GSUB::is_blacklisted (hb_blob_t *blob HB_UNUSED, #ifdef HB_NO_OT_LAYOUT_BLACKLIST return false; #endif - -#ifndef HB_NO_AAT_SHAPE - /* Mac OS X prefers morx over GSUB. It also ships with various Indic fonts, - * all by 'MUTF' foundry (Tamil MN, Tamil Sangam MN, etc.), that have broken - * GSUB/GPOS tables. Some have GSUB with zero scripts, those are ignored by - * our morx/GSUB preference code. But if GSUB has non-zero scripts, we tend - * to prefer it over morx because we want to be consistent with other OpenType - * shapers. - * - * To work around broken Indic Mac system fonts, we ignore GSUB table if - * OS/2 VendorId is 'MUTF' and font has morx table as well. - * - * https://github.com/harfbuzz/harfbuzz/issues/1410 - * https://github.com/harfbuzz/harfbuzz/issues/1348 - * https://github.com/harfbuzz/harfbuzz/issues/1391 - */ - if (unlikely (face->table.OS2->achVendID == HB_TAG ('M','U','T','F') && - face->table.morx->has_data ())) - return true; -#endif - return false; } @@ -440,7 +419,7 @@ get_gsubgpos_table (hb_face_t *face, switch (table_tag) { case HB_OT_TAG_GSUB: return *face->table.GSUB->table; case HB_OT_TAG_GPOS: return *face->table.GPOS->table; - default: return Null(OT::GSUBGPOS); + default: return Null (OT::GSUBGPOS); } } @@ -785,7 +764,7 @@ hb_ot_layout_language_get_required_feature_index (hb_face_t *face, hb_tag_t table_tag, unsigned int script_index, unsigned int language_index, - unsigned int *feature_index) + unsigned int *feature_index /* OUT */) { return hb_ot_layout_language_get_required_feature (face, table_tag, @@ -802,7 +781,7 @@ hb_ot_layout_language_get_required_feature_index (hb_face_t *face, * @table_tag: HB_OT_TAG_GSUB or HB_OT_TAG_GPOS * @script_index: The index of the requested script tag * @language_index: The index of the requested language tag - * @feature_index: The index of the requested feature + * @feature_index: (out): The index of the requested feature * @feature_tag: (out): The #hb_tag_t of the requested feature * * Fetches the tag of a requested feature index in the given face's GSUB or GPOS table, @@ -817,8 +796,8 @@ hb_ot_layout_language_get_required_feature (hb_face_t *face, hb_tag_t table_tag, unsigned int script_index, unsigned int language_index, - unsigned int *feature_index, - hb_tag_t *feature_tag) + unsigned int *feature_index /* OUT */, + hb_tag_t *feature_tag /* OUT */) { const OT::GSUBGPOS &g = get_gsubgpos_table (face, table_tag); const OT::LangSys &l = g.get_script (script_index).get_lang_sys (language_index); @@ -1004,7 +983,7 @@ struct hb_collect_features_context_t hb_set_t *feature_indexes_) : g (get_gsubgpos_table (face, table_tag)), feature_indexes (feature_indexes_), - script_count(0),langsys_count(0) {} + script_count (0),langsys_count (0), feature_index_count (0) {} bool visited (const OT::Script &s) { @@ -1033,6 +1012,12 @@ struct hb_collect_features_context_t return visited (l, visited_langsys); } + bool visited_feature_indices (unsigned count) + { + feature_index_count += count; + return feature_index_count > HB_MAX_FEATURE_INDICES; + } + private: template bool visited (const T &p, hb_set_t &visited_set) @@ -1054,6 +1039,7 @@ struct hb_collect_features_context_t hb_set_t visited_langsys; unsigned int script_count; unsigned int langsys_count; + unsigned int feature_index_count; }; static void @@ -1066,10 +1052,11 @@ langsys_collect_features (hb_collect_features_context_t *c, if (!features) { /* All features. */ - if (l.has_required_feature ()) + if (l.has_required_feature () && !c->visited_feature_indices (1)) c->feature_indexes->add (l.get_required_feature_index ()); - l.add_feature_indexes_to (c->feature_indexes); + if (!c->visited_feature_indices (l.featureIndex.len)) + l.add_feature_indexes_to (c->feature_indexes); } else { @@ -1212,7 +1199,75 @@ hb_ot_layout_collect_lookups (hb_face_t *face, for (hb_codepoint_t feature_index = HB_SET_VALUE_INVALID; hb_set_next (&feature_indexes, &feature_index);) g.get_feature (feature_index).add_lookup_indexes_to (lookup_indexes); + + g.feature_variation_collect_lookups (&feature_indexes, lookup_indexes); +} + +#ifdef HB_EXPERIMENTAL_API +/** + * hb_ot_layout_closure_lookups: + * @face: #hb_face_t to work upon + * @table_tag: HB_OT_TAG_GSUB or HB_OT_TAG_GPOS + * @lookup_indexes: (inout): lookup_indices collected from feature + * list + * + * Returns all inactive lookups reachable from lookup_indices + * + * Since: EXPERIMENTAL + **/ +void +hb_ot_layout_closure_lookups (hb_face_t *face, + hb_tag_t table_tag, + const hb_set_t *glyphs, + hb_set_t *lookup_indexes /* IN/OUT */) +{ + hb_set_t visited_lookups, inactive_lookups; + OT::hb_closure_lookups_context_t c (face, glyphs, &visited_lookups, &inactive_lookups); + + for (unsigned lookup_index : + hb_iter (lookup_indexes)) + { + switch (table_tag) + { + case HB_OT_TAG_GSUB: + { + const OT::SubstLookup& l = face->table.GSUB->table->get_lookup (lookup_index); + l.closure_lookups (&c, lookup_index); + break; + } + case HB_OT_TAG_GPOS: + { + const OT::PosLookup& l = face->table.GPOS->table->get_lookup (lookup_index); + l.closure_lookups (&c, lookup_index); + break; + } + } + } + + hb_set_union (lookup_indexes, &visited_lookups); + hb_set_subtract (lookup_indexes, &inactive_lookups); +} + +/** + * hb_ot_layout_closure_features: + * @face: #hb_face_t to work upon + * @table_tag: HB_OT_TAG_GSUB or HB_OT_TAG_GPOS + * @lookup_indexes: (in): collected active lookup_indices + * @feature_indexes: (out): all active feature indexes collected + * + * Returns all active feature indexes + * + * Since: EXPERIMENTAL + **/ +void +hb_ot_layout_closure_features (hb_face_t *face, + hb_tag_t table_tag, + const hb_map_t *lookup_indexes, /* IN */ + hb_set_t *feature_indexes /* OUT */) +{ + const OT::GSUBGPOS &g = get_gsubgpos_table (face, table_tag); + g.closure_features (lookup_indexes, feature_indexes); } +#endif #ifndef HB_NO_LAYOUT_COLLECT_GLYPHS @@ -1223,7 +1278,7 @@ hb_ot_layout_collect_lookups (hb_face_t *face, * @lookup_index: The index of the feature lookup to query * @glyphs_before: (out): Array of glyphs preceding the substitution range * @glyphs_input: (out): Array of input glyphs that would be substituted by the lookup - * @glyphs_after: (out): Array of glyphs following the substition range + * @glyphs_after: (out): Array of glyphs following the substitution range * @glyphs_output: (out): Array of glyphs that would be the substitued output of the lookup * * Fetches a list of all glyphs affected by the specified lookup in the @@ -1458,8 +1513,8 @@ hb_ot_layout_delete_glyphs_inplace (hb_buffer_t *buffer, **/ void hb_ot_layout_lookup_substitute_closure (hb_face_t *face, - unsigned int lookup_index, - hb_set_t *glyphs /* OUT */) + unsigned int lookup_index, + hb_set_t *glyphs /* OUT */) { hb_map_t done_lookups; OT::hb_closure_context_t c (face, glyphs, &done_lookups); @@ -1494,7 +1549,7 @@ hb_ot_layout_lookups_substitute_closure (hb_face_t *face, do { glyphs_length = glyphs->get_population (); - if (lookups != nullptr) + if (lookups) { for (hb_codepoint_t lookup_index = HB_SET_VALUE_INVALID; hb_set_next (lookups, &lookup_index);) gsub.get_lookup (lookup_index).closure (&c, lookup_index); @@ -1587,8 +1642,8 @@ hb_ot_layout_position_finish_offsets (hb_font_t *font, hb_buffer_t *buffer) * specifically in their respective size ranges; other ways to differentiate fonts within * a subfamily are not covered by the `size` feature. * - * For more information on this distinction, see the `size` documentation at - * https://docs.microsoft.com/en-us/typography/opentype/spec/features_pt#tag-39size39 + * For more information on this distinction, see the [`size` feature documentation]( + * https://docs.microsoft.com/en-us/typography/opentype/spec/features_pt#tag-size). * * Return value: true if data found, false otherwise * @@ -1957,7 +2012,7 @@ hb_ot_layout_substitute_lookup (OT::hb_ot_apply_context_t *c, * * Fetches a baseline value from the face. * - * Return value: if found baseline value in the the font. + * Return value: if found baseline value in the font. * * Since: 2.6.0 **/ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.h index 7e8a897cff5..0bd66166a35 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.h +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.h @@ -161,7 +161,7 @@ HB_EXTERN hb_bool_t hb_ot_layout_table_find_script (hb_face_t *face, hb_tag_t table_tag, hb_tag_t script_tag, - unsigned int *script_index); + unsigned int *script_index /* OUT */); HB_EXTERN hb_bool_t hb_ot_layout_table_select_script (hb_face_t *face, @@ -199,15 +199,15 @@ hb_ot_layout_language_get_required_feature_index (hb_face_t *face, hb_tag_t table_tag, unsigned int script_index, unsigned int language_index, - unsigned int *feature_index); + unsigned int *feature_index /* OUT */); HB_EXTERN hb_bool_t hb_ot_layout_language_get_required_feature (hb_face_t *face, hb_tag_t table_tag, unsigned int script_index, unsigned int language_index, - unsigned int *feature_index, - hb_tag_t *feature_tag); + unsigned int *feature_index /* OUT */, + hb_tag_t *feature_tag /* OUT */); HB_EXTERN unsigned int hb_ot_layout_language_get_feature_indexes (hb_face_t *face, @@ -233,7 +233,7 @@ hb_ot_layout_language_find_feature (hb_face_t *face, unsigned int script_index, unsigned int language_index, hb_tag_t feature_tag, - unsigned int *feature_index); + unsigned int *feature_index /* OUT */); HB_EXTERN unsigned int hb_ot_layout_feature_get_lookups (hb_face_t *face, @@ -263,6 +263,20 @@ hb_ot_layout_collect_lookups (hb_face_t *face, const hb_tag_t *features, hb_set_t *lookup_indexes /* OUT */); +#ifdef HB_EXPERIMENTAL_API +HB_EXTERN void +hb_ot_layout_closure_lookups (hb_face_t *face, + hb_tag_t table_tag, + const hb_set_t *glyphs, + hb_set_t *lookup_indexes /* IN/OUT */); + +HB_EXTERN void +hb_ot_layout_closure_features (hb_face_t *face, + hb_tag_t table_tag, + const hb_map_t *lookup_indexes, /* IN */ + hb_set_t *feature_indexes /* OUT */); +#endif + HB_EXTERN void hb_ot_layout_lookup_collect_glyphs (hb_face_t *face, hb_tag_t table_tag, diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.hh index f3bb15581a1..4e052b0c263 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.hh @@ -80,14 +80,14 @@ enum hb_ot_layout_glyph_props_flags_t HB_OT_LAYOUT_GLYPH_PROPS_LIGATURE = 0x04u, HB_OT_LAYOUT_GLYPH_PROPS_MARK = 0x08u, + HB_OT_LAYOUT_GLYPH_PROPS_CLASS_MASK = HB_OT_LAYOUT_GLYPH_PROPS_BASE_GLYPH | + HB_OT_LAYOUT_GLYPH_PROPS_LIGATURE | + HB_OT_LAYOUT_GLYPH_PROPS_MARK, + /* The following are used internally; not derived from GDEF. */ HB_OT_LAYOUT_GLYPH_PROPS_SUBSTITUTED = 0x10u, HB_OT_LAYOUT_GLYPH_PROPS_LIGATED = 0x20u, HB_OT_LAYOUT_GLYPH_PROPS_MULTIPLIED = 0x40u, - - HB_OT_LAYOUT_GLYPH_PROPS_PRESERVE = HB_OT_LAYOUT_GLYPH_PROPS_SUBSTITUTED | - HB_OT_LAYOUT_GLYPH_PROPS_LIGATED | - HB_OT_LAYOUT_GLYPH_PROPS_MULTIPLIED }; HB_MARK_AS_FLAG_T (hb_ot_layout_glyph_props_flags_t); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-map.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-map.hh index 0a4827d745a..b4f2fb904bf 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-map.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-map.hh @@ -134,13 +134,13 @@ struct hb_ot_map_t unsigned int get_feature_stage (unsigned int table_index, hb_tag_t feature_tag) const { const feature_map_t *map = features.bsearch (feature_tag); - return map ? map->stage[table_index] : (unsigned int) -1; + return map ? map->stage[table_index] : UINT_MAX; } void get_stage_lookups (unsigned int table_index, unsigned int stage, const struct lookup_map_t **plookups, unsigned int *lookup_count) const { - if (unlikely (stage == (unsigned int) -1)) { + if (unlikely (stage == UINT_MAX)) { *plookups = nullptr; *lookup_count = 0; return; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math-table.hh index 7529e0c0800..0033f4cc6e7 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math-table.hh @@ -48,7 +48,7 @@ struct MathValueRecord } protected: - HBINT16 value; /* The X or Y value in design units */ + HBINT16 value; /* The X or Y value in design units */ OffsetTo deviceTable; /* Offset to the device table - from the * beginning of parent table. May be NULL. * Suggested format for device table is 1. */ @@ -279,14 +279,15 @@ struct MathKern protected: HBUINT16 heightCount; UnsizedArrayOf - mathValueRecordsZ; /* Array of correction heights at - * which the kern value changes. - * Sorted by the height value in - * design units (heightCount entries), - * Followed by: - * Array of kern values corresponding - * to heights. (heightCount+1 entries). - */ + mathValueRecordsZ; + /* Array of correction heights at + * which the kern value changes. + * Sorted by the height value in + * design units (heightCount entries), + * Followed by: + * Array of kern values corresponding + * to heights. (heightCount+1 entries). + */ public: DEFINE_SIZE_ARRAY (2, mathValueRecordsZ); @@ -345,15 +346,18 @@ struct MathKernInfo } protected: - OffsetTo mathKernCoverage; /* Offset to Coverage table - - * from the beginning of the - * MathKernInfo table. */ - ArrayOf mathKernInfoRecords; /* Array of - * MathKernInfoRecords, - * per-glyph information for - * mathematical positioning - * of subscripts and - * superscripts. */ + OffsetTo + mathKernCoverage; + /* Offset to Coverage table - + * from the beginning of the + * MathKernInfo table. */ + ArrayOf + mathKernInfoRecords; + /* Array of MathKernInfoRecords, + * per-glyph information for + * mathematical positioning + * of subscripts and + * superscripts. */ public: DEFINE_SIZE_ARRAY (4, mathKernInfoRecords); @@ -471,19 +475,21 @@ struct MathGlyphPartRecord } protected: - HBGlyphID glyph; /* Glyph ID for the part. */ - HBUINT16 startConnectorLength; /* Advance width/ height of the straight bar - * connector material, in design units, is at - * the beginning of the glyph, in the - * direction of the extension. */ - HBUINT16 endConnectorLength; /* Advance width/ height of the straight bar - * connector material, in design units, is at - * the end of the glyph, in the direction of - * the extension. */ - HBUINT16 fullAdvance; /* Full advance width/height for this part, - * in the direction of the extension. - * In design units. */ - PartFlags partFlags; /* Part qualifiers. */ + HBGlyphID glyph; /* Glyph ID for the part. */ + HBUINT16 startConnectorLength; + /* Advance width/ height of the straight bar + * connector material, in design units, is at + * the beginning of the glyph, in the + * direction of the extension. */ + HBUINT16 endConnectorLength; + /* Advance width/ height of the straight bar + * connector material, in design units, is at + * the end of the glyph, in the direction of + * the extension. */ + HBUINT16 fullAdvance; /* Full advance width/height for this part, + * in the direction of the extension. + * In design units. */ + PartFlags partFlags; /* Part qualifiers. */ public: DEFINE_SIZE_STATIC (10); @@ -522,12 +528,15 @@ struct MathGlyphAssembly } protected: - MathValueRecord italicsCorrection; /* Italics correction of this - * MathGlyphAssembly. Should not - * depend on the assembly size. */ - ArrayOf partRecords; /* Array of part records, from - * left to right and bottom to - * top. */ + MathValueRecord + italicsCorrection; + /* Italics correction of this + * MathGlyphAssembly. Should not + * depend on the assembly size. */ + ArrayOf + partRecords; /* Array of part records, from + * left to right and bottom to + * top. */ public: DEFINE_SIZE_ARRAY (6, partRecords); @@ -645,27 +654,30 @@ struct MathVariants } protected: - HBUINT16 minConnectorOverlap; /* Minimum overlap of connecting - * glyphs during glyph construction, - * in design units. */ - OffsetTo vertGlyphCoverage; /* Offset to Coverage table - - * from the beginning of MathVariants - * table. */ - OffsetTo horizGlyphCoverage; /* Offset to Coverage table - - * from the beginning of MathVariants - * table. */ - HBUINT16 vertGlyphCount; /* Number of glyphs for which - * information is provided for - * vertically growing variants. */ - HBUINT16 horizGlyphCount; /* Number of glyphs for which - * information is provided for - * horizontally growing variants. */ + HBUINT16 minConnectorOverlap; + /* Minimum overlap of connecting + * glyphs during glyph construction, + * in design units. */ + OffsetTo vertGlyphCoverage; + /* Offset to Coverage table - + * from the beginning of MathVariants + * table. */ + OffsetTo horizGlyphCoverage; + /* Offset to Coverage table - + * from the beginning of MathVariants + * table. */ + HBUINT16 vertGlyphCount; /* Number of glyphs for which + * information is provided for + * vertically growing variants. */ + HBUINT16 horizGlyphCount;/* Number of glyphs for which + * information is provided for + * horizontally growing variants. */ /* Array of offsets to MathGlyphConstruction tables - from the beginning of the MathVariants table, for shapes growing in vertical/horizontal direction. */ UnsizedArrayOf> - glyphConstruction; + glyphConstruction; public: DEFINE_SIZE_ARRAY (10, glyphConstruction); @@ -702,11 +714,14 @@ struct MATH const MathVariants &get_variants () const { return this+mathVariants; } protected: - FixedVersion<>version; /* Version of the MATH table - * initially set to 0x00010000u */ - OffsetTo mathConstants;/* MathConstants table */ - OffsetTo mathGlyphInfo;/* MathGlyphInfo table */ - OffsetTo mathVariants; /* MathVariants table */ + FixedVersion<>version; /* Version of the MATH table + * initially set to 0x00010000u */ + OffsetTo + mathConstants; /* MathConstants table */ + OffsetTo + mathGlyphInfo; /* MathGlyphInfo table */ + OffsetTo + mathVariants; /* MathVariants table */ public: DEFINE_SIZE_STATIC (10); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-maxp-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-maxp-table.hh index 1c25eda16b5..929956d12bf 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-maxp-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-maxp-table.hh @@ -126,9 +126,10 @@ struct maxp } protected: - FixedVersion<>version; /* Version of the maxp table (0.5 or 1.0), - * 0x00005000u or 0x00010000u. */ - HBUINT16 numGlyphs; /* The number of glyphs in the font. */ + FixedVersion<>version;/* Version of the maxp table (0.5 or 1.0), + * 0x00005000u or 0x00010000u. */ + HBUINT16 numGlyphs; + /* The number of glyphs in the font. */ /*maxpV1Tail v1Tail[HB_VAR_ARRAY]; */ public: DEFINE_SIZE_STATIC (6); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-meta-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-meta-table.hh index 43a02d6cec3..1225e26ce1e 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-meta-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-meta-table.hh @@ -56,7 +56,7 @@ struct DataMap protected: Tag tag; /* A tag indicating the type of metadata. */ - LOffsetTo> + LNNOffsetTo> dataZ; /* Offset in bytes from the beginning of the * metadata table to the data for this tag. */ HBUINT32 dataLength; /* Length of the data. The data is not required to @@ -108,12 +108,13 @@ struct meta protected: HBUINT32 version; /* Version number of the metadata table — set to 1. */ HBUINT32 flags; /* Flags — currently unused; set to 0. */ - HBUINT32 dataOffset; /* Per Apple specification: + HBUINT32 dataOffset; + /* Per Apple specification: * Offset from the beginning of the table to the data. * Per OT specification: * Reserved. Not used; should be set to 0. */ LArrayOf - dataMaps; /* Array of data map records. */ + dataMaps;/* Array of data map records. */ public: DEFINE_SIZE_ARRAY (16, dataMaps); }; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-name-language-static.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-name-language-static.hh index 580e7637b90..c496dc2981a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-name-language-static.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-name-language-static.hh @@ -37,12 +37,8 @@ struct hb_ot_language_map_t { - static int cmp (const void *key, const void *item) - { - unsigned int a = * (unsigned int *) key; - unsigned int b = ((const hb_ot_language_map_t *) item)->code; - return a < b ? -1 : a > b ? +1 : 0; - } + int cmp (unsigned int key) const + { return key < code ? -1 : key > code ? +1 : 0; } uint16_t code; char lang[6]; @@ -433,12 +429,7 @@ _hb_ot_name_language_for (unsigned int code, #ifdef HB_NO_OT_NAME_LANGUAGE return HB_LANGUAGE_INVALID; #endif - const hb_ot_language_map_t *entry = (const hb_ot_language_map_t *) - hb_bsearch (&code, - array, - len, - sizeof (array[0]), - hb_ot_language_map_t::cmp); + auto *entry = hb_bsearch (code, array, len); if (entry) return hb_language_from_string (entry->lang, -1); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-name-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-name-table.hh index 84be04c8bfd..b46976d46b3 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-name-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-name-table.hh @@ -97,17 +97,47 @@ struct NameRecord return UNSUPPORTED; } - NameRecord* copy (hb_serialize_context_t *c, - const void *src_base, - const void *dst_base) const + NameRecord* copy (hb_serialize_context_t *c, const void *base) const { TRACE_SERIALIZE (this); auto *out = c->embed (this); if (unlikely (!out)) return_trace (nullptr); - out->offset.serialize_copy (c, offset, src_base, dst_base, length); + out->offset.serialize_copy (c, offset, base, 0, hb_serialize_context_t::Tail, length); return_trace (out); } + bool isUnicode () const + { + unsigned int p = platformID; + unsigned int e = encodingID; + + return (p == 0 || + (p == 3 && (e == 0 || e == 1 || e == 10))); + } + + static int cmp (const void *pa, const void *pb) + { + const NameRecord *a = (const NameRecord *)pa; + const NameRecord *b = (const NameRecord *)pb; + + if (a->platformID != b->platformID) + return a->platformID - b->platformID; + + if (a->encodingID != b->encodingID) + return a->encodingID - b->encodingID; + + if (a->languageID != b->languageID) + return a->languageID - b->languageID; + + if (a->nameID != b->nameID) + return a->nameID - b->nameID; + + if (a->length != b->length) + return a->length - b->length; + + return 0; + } + bool sanitize (hb_sanitize_context_t *c, const void *base) const { TRACE_SANITIZE (this); @@ -134,7 +164,7 @@ _hb_ot_name_entry_cmp_key (const void *pa, const void *pb) /* Compare by name_id, then language. */ if (a->name_id != b->name_id) - return a->name_id < b->name_id ? -1 : +1; + return a->name_id - b->name_id; if (a->language == b->language) return 0; if (!a->language) return -1; @@ -156,10 +186,10 @@ _hb_ot_name_entry_cmp (const void *pa, const void *pb) const hb_ot_name_entry_t *b = (const hb_ot_name_entry_t *) pb; if (a->entry_score != b->entry_score) - return a->entry_score < b->entry_score ? -1 : +1; + return a->entry_score - b->entry_score; if (a->entry_index != b->entry_index) - return a->entry_index < b->entry_index ? -1 : +1; + return a->entry_index - b->entry_index; return 0; } @@ -184,18 +214,23 @@ struct name this->format = 0; this->count = it.len (); - auto snap = c->snapshot (); - this->nameRecordZ.serialize (c, this->count); - if (unlikely (!c->check_assign (this->stringOffset, c->length ()))) return_trace (false); - c->revert (snap); + NameRecord *name_records = (NameRecord *) calloc (it.len (), NameRecord::static_size); + hb_array_t records (name_records, it.len ()); + + for (const NameRecord& record : it) + { + memcpy (name_records, &record, NameRecord::static_size); + name_records++; + } - const void *dst_string_pool = &(this + this->stringOffset); + records.qsort (); - for (const auto &_ : it) c->copy (_, src_string_pool, dst_string_pool); + c->copy_all (records, src_string_pool); + free (records.arrayZ); if (unlikely (c->ran_out_of_room)) return_trace (false); - assert (this->stringOffset == c->length ()); + this->stringOffset = c->length (); return_trace (true); } @@ -210,6 +245,8 @@ struct name auto it = + nameRecordZ.as_array (count) | hb_filter (c->plan->name_ids, &NameRecord::nameID) + | hb_filter (c->plan->name_languages, &NameRecord::languageID) + | hb_filter ([&] (const NameRecord& namerecord) { return c->plan->name_legacy || namerecord.isUnicode (); }) ; name_prime->serialize (c->serializer, it, hb_addressof (this + stringOffset)); @@ -237,7 +274,7 @@ struct name { void init (hb_face_t *face) { - this->table = hb_sanitize_context_t().reference_table (face); + this->table = hb_sanitize_context_t ().reference_table (face); assert (this->table.get_length () >= this->table->stringOffset); this->pool = (const char *) (const void *) (this->table+this->table->stringOffset); this->pool_len = this->table.get_length () - this->table->stringOffset; @@ -281,16 +318,14 @@ struct name this->table.destroy (); } - int get_index (hb_ot_name_id_t name_id, - hb_language_t language, - unsigned int *width=nullptr) const + int get_index (hb_ot_name_id_t name_id, + hb_language_t language, + unsigned int *width=nullptr) const { const hb_ot_name_entry_t key = {name_id, {0}, language}; - const hb_ot_name_entry_t *entry = (const hb_ot_name_entry_t *) - hb_bsearch (&key, - (const hb_ot_name_entry_t *) this->names, + const hb_ot_name_entry_t *entry = hb_bsearch (key, (const hb_ot_name_entry_t *) this->names, this->names.length, - sizeof (key), + sizeof (hb_ot_name_entry_t), _hb_ot_name_entry_cmp_key); if (!entry) return -1; @@ -318,12 +353,12 @@ struct name }; /* We only implement format 0 for now. */ - HBUINT16 format; /* Format selector (=0/1). */ - HBUINT16 count; /* Number of name records. */ + HBUINT16 format; /* Format selector (=0/1). */ + HBUINT16 count; /* Number of name records. */ NNOffsetTo> - stringOffset; /* Offset to start of string storage (from start of table). */ + stringOffset; /* Offset to start of string storage (from start of table). */ UnsizedArrayOf - nameRecordZ; /* The name records where count is the number of records. */ + nameRecordZ; /* The name records where count is the number of records. */ public: DEFINE_SIZE_ARRAY (6, nameRecordZ); }; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-os2-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-os2-table.hh index f6b150323b6..bcbc3315926 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-os2-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-os2-table.hh @@ -216,19 +216,20 @@ struct OS2 uint16_t *min_cp, /* OUT */ uint16_t *max_cp /* OUT */) { - *min_cp = codepoints->get_min (); - *max_cp = codepoints->get_max (); + *min_cp = hb_min (0xFFFFu, codepoints->get_min ()); + *max_cp = hb_min (0xFFFFu, codepoints->get_max ()); } /* https://github.com/Microsoft/Font-Validator/blob/520aaae/OTFontFileVal/val_OS2.cs#L644-L681 */ - enum font_page_t { - HEBREW_FONT_PAGE = 0xB100, // Hebrew Windows 3.1 font page - SIMP_ARABIC_FONT_PAGE = 0xB200, // Simplified Arabic Windows 3.1 font page - TRAD_ARABIC_FONT_PAGE = 0xB300, // Traditional Arabic Windows 3.1 font page - OEM_ARABIC_FONT_PAGE = 0xB400, // OEM Arabic Windows 3.1 font page - SIMP_FARSI_FONT_PAGE = 0xBA00, // Simplified Farsi Windows 3.1 font page - TRAD_FARSI_FONT_PAGE = 0xBB00, // Traditional Farsi Windows 3.1 font page - THAI_FONT_PAGE = 0xDE00 // Thai Windows 3.1 font page + enum font_page_t + { + FONT_PAGE_HEBREW = 0xB100, /* Hebrew Windows 3.1 font page */ + FONT_PAGE_SIMP_ARABIC = 0xB200, /* Simplified Arabic Windows 3.1 font page */ + FONT_PAGE_TRAD_ARABIC = 0xB300, /* Traditional Arabic Windows 3.1 font page */ + FONT_PAGE_OEM_ARABIC = 0xB400, /* OEM Arabic Windows 3.1 font page */ + FONT_PAGE_SIMP_FARSI = 0xBA00, /* Simplified Farsi Windows 3.1 font page */ + FONT_PAGE_TRAD_FARSI = 0xBB00, /* Traditional Farsi Windows 3.1 font page */ + FONT_PAGE_THAI = 0xDE00 /* Thai Windows 3.1 font page */ }; font_page_t get_font_page () const { return (font_page_t) (version == 0 ? fsSelection & 0xFF00 : 0); } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-os2-unicode-ranges.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-os2-unicode-ranges.hh index b0ccd00d7b6..9613d2d186d 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-os2-unicode-ranges.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-os2-unicode-ranges.hh @@ -33,19 +33,8 @@ namespace OT { struct OS2Range { - static int - cmp (const void *_key, const void *_item) - { - hb_codepoint_t cp = *((hb_codepoint_t *) _key); - const OS2Range *range = (OS2Range *) _item; - - if (cp < range->start) - return -1; - else if (cp <= range->end) - return 0; - else - return +1; - } + int cmp (hb_codepoint_t key) const + { return (key < start) ? -1 : key <= end ? 0 : +1; } hb_codepoint_t start; hb_codepoint_t end; @@ -233,13 +222,8 @@ static const OS2Range _hb_os2_unicode_ranges[] = static unsigned int _hb_ot_os2_get_unicode_range_bit (hb_codepoint_t cp) { - OS2Range *range = (OS2Range*) hb_bsearch (&cp, _hb_os2_unicode_ranges, - ARRAY_LENGTH (_hb_os2_unicode_ranges), - sizeof (OS2Range), - OS2Range::cmp); - if (range != nullptr) - return range->bit; - return -1; + auto *range = hb_sorted_array (_hb_os2_unicode_ranges).bsearch (cp); + return range ? range->bit : -1; } } /* namespace OT */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-post-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-post-table.hh index 38302f5518e..8586331cd45 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-post-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-post-table.hh @@ -35,8 +35,6 @@ #undef HB_STRING_ARRAY_LIST #undef HB_STRING_ARRAY_NAME -#define NUM_FORMAT1_NAMES 258 - /* * post -- PostScript * https://docs.microsoft.com/en-us/typography/opentype/spec/post @@ -167,8 +165,7 @@ struct post } hb_bytes_t st (name, len); - const uint16_t *gid = (const uint16_t *) hb_bsearch (hb_addressof (st), gids, count, - sizeof (gids[0]), cmp_key, (void *) this); + auto* gid = hb_bsearch (st, gids, count, sizeof (gids[0]), cmp_key, (void *) this); if (gid) { *glyph = *gid; @@ -185,7 +182,7 @@ struct post unsigned int get_glyph_count () const { if (version == 0x00010000) - return NUM_FORMAT1_NAMES; + return format1_names_length; if (version == 0x00020000) return glyphNameIndex->len; @@ -213,7 +210,7 @@ struct post { if (version == 0x00010000) { - if (glyph >= NUM_FORMAT1_NAMES) + if (glyph >= format1_names_length) return hb_bytes_t (); return format1_names (glyph); @@ -223,9 +220,9 @@ struct post return hb_bytes_t (); unsigned int index = glyphNameIndex->arrayZ[glyph]; - if (index < NUM_FORMAT1_NAMES) + if (index < format1_names_length) return format1_names (index); - index -= NUM_FORMAT1_NAMES; + index -= format1_names_length; if (index >= index_to_offset.length) return hb_bytes_t (); @@ -262,7 +259,7 @@ struct post * 0x00020000 for version 2.0 * 0x00025000 for version 2.5 (deprecated) * 0x00030000 for version 3.0 */ - HBFixed italicAngle; /* Italic angle in counter-clockwise degrees + HBFixed italicAngle; /* Italic angle in counter-clockwise degrees * from the vertical. Zero for upright text, * negative for text that leans to the right * (forward). */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-arabic-fallback.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-arabic-fallback.hh index 2a7a8ebbc02..262ab8a1fab 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-arabic-fallback.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-arabic-fallback.hh @@ -292,7 +292,7 @@ arabic_fallback_plan_create (const hb_ot_shape_plan_t *plan, { arabic_fallback_plan_t *fallback_plan = (arabic_fallback_plan_t *) calloc (1, sizeof (arabic_fallback_plan_t)); if (unlikely (!fallback_plan)) - return const_cast (&Null(arabic_fallback_plan_t)); + return const_cast (&Null (arabic_fallback_plan_t)); fallback_plan->num_lookups = 0; fallback_plan->free_lookups = false; @@ -309,7 +309,7 @@ arabic_fallback_plan_create (const hb_ot_shape_plan_t *plan, assert (fallback_plan->num_lookups == 0); free (fallback_plan); - return const_cast (&Null(arabic_fallback_plan_t)); + return const_cast (&Null (arabic_fallback_plan_t)); } static void diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-arabic.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-arabic.cc index f92e6378a1f..0c1863bc51b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-arabic.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-arabic.cc @@ -271,7 +271,7 @@ data_create_arabic (const hb_ot_shape_plan_t *plan) arabic_plan->mask_array[i] = plan->map.get_1_mask (arabic_features[i]); arabic_plan->do_fallback = arabic_plan->do_fallback && (FEATURE_IS_SYRIAC (arabic_features[i]) || - plan->map.needs_fallback (arabic_features[i])); + plan->map.needs_fallback (arabic_features[i])); } return arabic_plan; @@ -292,7 +292,7 @@ arabic_joining (hb_buffer_t *buffer) { unsigned int count = buffer->len; hb_glyph_info_t *info = buffer->info; - unsigned int prev = (unsigned int) -1, state = 0; + unsigned int prev = UINT_MAX, state = 0; /* Check pre-context */ for (unsigned int i = 0; i < buffer->context_len[0]; i++) @@ -318,7 +318,7 @@ arabic_joining (hb_buffer_t *buffer) const arabic_state_table_entry *entry = &arabic_state_table[state][this_type]; - if (entry->prev_action != NONE && prev != (unsigned int) -1) + if (entry->prev_action != NONE && prev != UINT_MAX) { info[prev].arabic_shaping_action() = entry->prev_action; buffer->unsafe_to_break (prev, i + 1); @@ -338,7 +338,7 @@ arabic_joining (hb_buffer_t *buffer) continue; const arabic_state_table_entry *entry = &arabic_state_table[state][this_type]; - if (entry->prev_action != NONE && prev != (unsigned int) -1) + if (entry->prev_action != NONE && prev != UINT_MAX) info[prev].arabic_shaping_action() = entry->prev_action; break; } @@ -604,7 +604,7 @@ postprocess_glyphs_arabic (const hb_ot_shape_plan_t *plan, HB_BUFFER_DEALLOCATE_VAR (buffer, arabic_shaping_action); } -/* http://www.unicode.org/reports/tr53/ */ +/* https://www.unicode.org/reports/tr53/ */ static hb_codepoint_t modifier_combining_marks[] = diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-default.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-default.cc index a921f16fada..a755aea098b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-default.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-default.cc @@ -49,5 +49,25 @@ const hb_ot_complex_shaper_t _hb_ot_complex_shaper_default = true, /* fallback_position */ }; +/* Same as default but no mark advance zeroing / fallback positioning. + * Dumbest shaper ever, basically. */ +const hb_ot_complex_shaper_t _hb_ot_complex_shaper_dumber = +{ + nullptr, /* collect_features */ + nullptr, /* override_features */ + nullptr, /* data_create */ + nullptr, /* data_destroy */ + nullptr, /* preprocess_text */ + nullptr, /* postprocess_glyphs */ + HB_OT_SHAPE_NORMALIZATION_MODE_DEFAULT, + nullptr, /* decompose */ + nullptr, /* compose */ + nullptr, /* setup_masks */ + HB_TAG_NONE, /* gpos_tag */ + nullptr, /* reorder_marks */ + HB_OT_SHAPE_ZERO_WIDTH_MARKS_NONE, + false, /* fallback_position */ +}; + #endif diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic-machine.rl b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic-machine.rl index 5f819bd2964..1613548a5da 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic-machine.rl +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic-machine.rl @@ -76,7 +76,7 @@ complex_syllable_tail = (halant_group.cn)* medial_group halant_or_matra_group sy consonant_syllable = (Repha|CS)? cn complex_syllable_tail; vowel_syllable = reph? V.n? (ZWJ | complex_syllable_tail); standalone_cluster = ((Repha|CS)? PLACEHOLDER | reph? DOTTEDCIRCLE).n? complex_syllable_tail; -symbol_cluster = symbol syllable_tail; +symbol_cluster = symbol syllable_tail; broken_cluster = reph? n? complex_syllable_tail; other = any; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic.cc index 26dc60ddc98..3dab3aa11c9 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic.cc @@ -248,6 +248,7 @@ struct indic_shape_plan_t hb_indic_would_substitute_feature_t pref; hb_indic_would_substitute_feature_t blwf; hb_indic_would_substitute_feature_t pstf; + hb_indic_would_substitute_feature_t vatu; hb_mask_t mask_array[INDIC_NUM_FEATURES]; }; @@ -286,6 +287,7 @@ data_create_indic (const hb_ot_shape_plan_t *plan) indic_plan->pref.init (&plan->map, HB_TAG('p','r','e','f'), zero_context); indic_plan->blwf.init (&plan->map, HB_TAG('b','l','w','f'), zero_context); indic_plan->pstf.init (&plan->map, HB_TAG('p','s','t','f'), zero_context); + indic_plan->vatu.init (&plan->map, HB_TAG('v','a','t','u'), zero_context); for (unsigned int i = 0; i < ARRAY_LENGTH (indic_plan->mask_array); i++) indic_plan->mask_array[i] = (indic_features[i].flags & F_GLOBAL) ? @@ -315,10 +317,16 @@ consonant_position_from_face (const indic_shape_plan_t *indic_plan, * base at 0. The font however, only has lookups matching * 930,94D in 'blwf', not the expected 94D,930 (with new-spec * table). As such, we simply match both sequences. Seems - * to work. */ + * to work. + * + * Vatu is done as well, for: + * https://github.com/harfbuzz/harfbuzz/issues/1587 + */ hb_codepoint_t glyphs[3] = {virama, consonant, virama}; if (indic_plan->blwf.would_substitute (glyphs , 2, face) || - indic_plan->blwf.would_substitute (glyphs+1, 2, face)) + indic_plan->blwf.would_substitute (glyphs+1, 2, face) || + indic_plan->vatu.would_substitute (glyphs , 2, face) || + indic_plan->vatu.would_substitute (glyphs+1, 2, face)) return POS_BELOW_C; if (indic_plan->pstf.would_substitute (glyphs , 2, face) || indic_plan->pstf.would_substitute (glyphs+1, 2, face)) diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-myanmar-machine.rl b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-myanmar-machine.rl index 67133cd7346..098a63e53ac 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-myanmar-machine.rl +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-myanmar-machine.rl @@ -78,7 +78,7 @@ complex_syllable_tail = As* medial_group main_vowel_group post_vowel_group* pwo_ syllable_tail = (H (c|IV).VS?)* (H | complex_syllable_tail); consonant_syllable = (k|CS)? (c|IV|D|GB).VS? syllable_tail; -punctuation_cluster = P V; +punctuation_cluster = P V; broken_cluster = k? VS? syllable_tail; other = any; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-vowel-constraints.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-vowel-constraints.cc index 2f8041323ab..fc09eccda33 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-vowel-constraints.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-vowel-constraints.cc @@ -2,15 +2,16 @@ /* * The following functions are generated by running: * - * ./gen-vowel-constraints.py use Scripts.txt + * ./gen-vowel-constraints.py ms-use/IndicShapingInvalidCluster.txt Scripts.txt * * on files with these headers: * - * # Copied from https://docs.microsoft.com/en-us/typography/script-development/use - * # On October 23, 2018; with documentd dated 02/07/2018. + * # IndicShapingInvalidCluster.txt + * # Date: 2015-03-12, 21:17:00 GMT [AG] + * # Date: 2019-11-08, 23:22:00 GMT [AG] * - * # Scripts-12.0.0.txt - * # Date: 2019-01-28, 22:16:47 GMT + * # Scripts-12.1.0.txt + * # Date: 2019-04-01, 09:10:42 GMT */ #include "hb.hh" @@ -211,6 +212,22 @@ _hb_preprocess_text_vowel_constraints (const hb_ot_shape_plan_t *plan HB_UNUSED, processed = true; break; + case HB_SCRIPT_TAMIL: + for (buffer->idx = 0; buffer->idx + 1 < count && buffer->successful;) + { + bool matched = false; + if (0x0B85u == buffer->cur ().codepoint && + 0x0BC2u == buffer->cur (1).codepoint) + { + buffer->next_glyph (); + _output_dotted_circle (buffer); + } + buffer->next_glyph (); + if (matched) _output_with_dotted_circle (buffer); + } + processed = true; + break; + case HB_SCRIPT_TELUGU: for (buffer->idx = 0; buffer->idx + 1 < count && buffer->successful;) { diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex.hh index 2691622135a..a9f5834425a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex.hh @@ -50,8 +50,9 @@ enum hb_ot_shape_zero_width_marks_type_t { /* Master OT shaper list */ #define HB_COMPLEX_SHAPERS_IMPLEMENT_SHAPERS \ - HB_COMPLEX_SHAPER_IMPLEMENT (default) /* should be first */ \ HB_COMPLEX_SHAPER_IMPLEMENT (arabic) \ + HB_COMPLEX_SHAPER_IMPLEMENT (default) \ + HB_COMPLEX_SHAPER_IMPLEMENT (dumber) \ HB_COMPLEX_SHAPER_IMPLEMENT (hangul) \ HB_COMPLEX_SHAPER_IMPLEMENT (hebrew) \ HB_COMPLEX_SHAPER_IMPLEMENT (indic) \ @@ -60,7 +61,7 @@ enum hb_ot_shape_zero_width_marks_type_t { HB_COMPLEX_SHAPER_IMPLEMENT (myanmar_zawgyi) \ HB_COMPLEX_SHAPER_IMPLEMENT (thai) \ HB_COMPLEX_SHAPER_IMPLEMENT (use) \ - /* ^--- Add new shapers here */ + /* ^--- Add new shapers here; keep sorted. */ struct hb_ot_complex_shaper_t diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-fallback.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-fallback.cc index 024bcfe04fd..42bf524d164 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-fallback.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-fallback.cc @@ -422,12 +422,12 @@ position_cluster (const hb_ot_shape_plan_t *plan, /* Find the base glyph */ hb_glyph_info_t *info = buffer->info; for (unsigned int i = start; i < end; i++) - if (!HB_UNICODE_GENERAL_CATEGORY_IS_MARK (_hb_glyph_info_get_general_category (&info[i]))) + if (!_hb_glyph_info_is_unicode_mark (&info[i])) { /* Find mark glyphs */ unsigned int j; for (j = i + 1; j < end; j++) - if (!HB_UNICODE_GENERAL_CATEGORY_IS_MARK (_hb_glyph_info_get_general_category (&info[j]))) + if (!_hb_glyph_info_is_unicode_mark (&info[j])) break; position_around_base (plan, font, buffer, i, j, adjust_offsets_when_zeroing); @@ -452,7 +452,7 @@ _hb_ot_shape_fallback_mark_position (const hb_ot_shape_plan_t *plan, unsigned int count = buffer->len; hb_glyph_info_t *info = buffer->info; for (unsigned int i = 1; i < count; i++) - if (likely (!HB_UNICODE_GENERAL_CATEGORY_IS_MARK (_hb_glyph_info_get_general_category (&info[i])))) { + if (likely (!_hb_glyph_info_is_unicode_mark (&info[i]))) { position_cluster (plan, font, buffer, start, i, adjust_offsets_when_zeroing); start = i; } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-normalize.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-normalize.cc index 553d5325749..50b5829c4aa 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-normalize.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-normalize.cc @@ -334,7 +334,7 @@ _hb_ot_shape_normalize (const hb_ot_shape_plan_t *plan, { unsigned int end; for (end = buffer->idx + 1; end < count; end++) - if (unlikely (HB_UNICODE_GENERAL_CATEGORY_IS_MARK (_hb_glyph_info_get_general_category (&buffer->info[end])))) + if (unlikely (_hb_glyph_info_is_unicode_mark (&buffer->info[end]))) break; if (end < count) @@ -360,7 +360,7 @@ _hb_ot_shape_normalize (const hb_ot_shape_plan_t *plan, /* Find all the marks now. */ for (end = buffer->idx + 1; end < count; end++) - if (!HB_UNICODE_GENERAL_CATEGORY_IS_MARK (_hb_glyph_info_get_general_category (&buffer->info[end]))) + if (!_hb_glyph_info_is_unicode_mark(&buffer->info[end])) break; /* idx to end is one non-simple cluster. */ @@ -435,7 +435,7 @@ _hb_ot_shape_normalize (const hb_ot_shape_plan_t *plan, * This is both an optimization to avoid trying to compose every two neighboring * glyphs in most scripts AND a desired feature for Hangul. Apparently Hangul * fonts are not designed to mix-and-match pre-composed syllables and Jamo. */ - HB_UNICODE_GENERAL_CATEGORY_IS_MARK (_hb_glyph_info_get_general_category (&buffer->cur()))) + _hb_glyph_info_is_unicode_mark(&buffer->cur())) { if (/* If there's anything between the starter and this char, they should have CCC * smaller than this character's. */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.cc index 5d9a70cda2e..00ecdfab373 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.cc @@ -48,6 +48,16 @@ #include "hb-aat-layout.hh" +#ifndef HB_NO_AAT_SHAPE +static inline bool +_hb_apply_morx (hb_face_t *face, const hb_segment_properties_t *props) +{ + /* https://github.com/harfbuzz/harfbuzz/issues/2124 */ + return hb_aat_layout_has_substitution (face) && + (HB_DIRECTION_IS_HORIZONTAL (props->direction) || !hb_ot_layout_has_substitution (face)); +} +#endif + /** * SECTION:hb-ot-shape * @title: hb-ot-shape @@ -63,23 +73,6 @@ hb_ot_shape_collect_features (hb_ot_shape_planner_t *planner, const hb_feature_t *user_features, unsigned int num_user_features); -#ifndef HB_NO_AAT_SHAPE -static inline bool -_hb_apply_morx (hb_face_t *face) -{ - if (hb_options ().aat && - hb_aat_layout_has_substitution (face)) - return true; - - /* Ignore empty GSUB tables. */ - return (!hb_ot_layout_has_substitution (face) || - !hb_ot_layout_table_get_script_tags (face, - HB_OT_TAG_GSUB, - 0, nullptr, nullptr)) && - hb_aat_layout_has_substitution (face); -} -#endif - hb_ot_shape_planner_t::hb_ot_shape_planner_t (hb_face_t *face, const hb_segment_properties_t *props) : face (face), @@ -87,7 +80,7 @@ hb_ot_shape_planner_t::hb_ot_shape_planner_t (hb_face_t *fac map (face, props), aat_map (face, props) #ifndef HB_NO_AAT_SHAPE - , apply_morx (_hb_apply_morx (face)) + , apply_morx (_hb_apply_morx (face, props)) #endif { shaper = hb_ot_shape_complex_categorize (this); @@ -95,8 +88,9 @@ hb_ot_shape_planner_t::hb_ot_shape_planner_t (hb_face_t *fac script_zero_marks = shaper->zero_width_marks != HB_OT_SHAPE_ZERO_WIDTH_MARKS_NONE; script_fallback_mark_positioning = shaper->fallback_position; - if (apply_morx) - shaper = &_hb_ot_complex_shaper_default; + /* https://github.com/harfbuzz/harfbuzz/issues/1528 */ + if (apply_morx && shaper != &_hb_ot_complex_shaper_default) + shaper = &_hb_ot_complex_shaper_dumber; } void @@ -119,6 +113,8 @@ hb_ot_shape_planner_t::compile (hb_ot_shape_plan_t &plan, #endif plan.rtlm_mask = plan.map.get_1_mask (HB_TAG ('r','t','l','m')); + plan.has_vert = !!plan.map.get_1_mask (HB_TAG ('v','e','r','t')); + hb_tag_t kern_tag = HB_DIRECTION_IS_HORIZONTAL (props.direction) ? HB_TAG ('k','e','r','n') : HB_TAG ('v','k','r','n'); #ifndef HB_NO_OT_KERN @@ -156,17 +152,13 @@ hb_ot_shape_planner_t::compile (hb_ot_shape_plan_t &plan, if (0) ; #ifndef HB_NO_AAT_SHAPE - else if (hb_options ().aat && hb_aat_layout_has_positioning (face)) + else if (hb_aat_layout_has_positioning (face)) plan.apply_kerx = true; #endif else if (!apply_morx && !disable_gpos && hb_ot_layout_has_positioning (face)) plan.apply_gpos = true; -#ifndef HB_NO_AAT_SHAPE - else if (hb_aat_layout_has_positioning (face)) - plan.apply_kerx = true; -#endif - if (!plan.apply_kerx && !has_gpos_kern) + if (!plan.apply_kerx && (!has_gpos_kern || !plan.apply_gpos)) { /* Apparently Apple applies kerx if GPOS kern was not applied. */ #ifndef HB_NO_AAT_SHAPE @@ -594,24 +586,85 @@ hb_ensure_native_direction (hb_buffer_t *buffer) * Substitute */ -static inline void -hb_ot_mirror_chars (const hb_ot_shape_context_t *c) +static hb_codepoint_t +hb_vert_char_for (hb_codepoint_t u) { - if (HB_DIRECTION_IS_FORWARD (c->target_direction)) - return; + switch (u >> 8) + { + case 0x20: switch (u) { + case 0x2013u: return 0xfe32u; // EN DASH + case 0x2014u: return 0xfe31u; // EM DASH + case 0x2025u: return 0xfe30u; // TWO DOT LEADER + case 0x2026u: return 0xfe19u; // HORIZONTAL ELLIPSIS + } break; + case 0x30: switch (u) { + case 0x3001u: return 0xfe11u; // IDEOGRAPHIC COMMA + case 0x3002u: return 0xfe12u; // IDEOGRAPHIC FULL STOP + case 0x3008u: return 0xfe3fu; // LEFT ANGLE BRACKET + case 0x3009u: return 0xfe40u; // RIGHT ANGLE BRACKET + case 0x300au: return 0xfe3du; // LEFT DOUBLE ANGLE BRACKET + case 0x300bu: return 0xfe3eu; // RIGHT DOUBLE ANGLE BRACKET + case 0x300cu: return 0xfe41u; // LEFT CORNER BRACKET + case 0x300du: return 0xfe42u; // RIGHT CORNER BRACKET + case 0x300eu: return 0xfe43u; // LEFT WHITE CORNER BRACKET + case 0x300fu: return 0xfe44u; // RIGHT WHITE CORNER BRACKET + case 0x3010u: return 0xfe3bu; // LEFT BLACK LENTICULAR BRACKET + case 0x3011u: return 0xfe3cu; // RIGHT BLACK LENTICULAR BRACKET + case 0x3014u: return 0xfe39u; // LEFT TORTOISE SHELL BRACKET + case 0x3015u: return 0xfe3au; // RIGHT TORTOISE SHELL BRACKET + case 0x3016u: return 0xfe17u; // LEFT WHITE LENTICULAR BRACKET + case 0x3017u: return 0xfe18u; // RIGHT WHITE LENTICULAR BRACKET + } break; + case 0xfe: switch (u) { + case 0xfe4fu: return 0xfe34u; // WAVY LOW LINE + } break; + case 0xff: switch (u) { + case 0xff01u: return 0xfe15u; // FULLWIDTH EXCLAMATION MARK + case 0xff08u: return 0xfe35u; // FULLWIDTH LEFT PARENTHESIS + case 0xff09u: return 0xfe36u; // FULLWIDTH RIGHT PARENTHESIS + case 0xff0cu: return 0xfe10u; // FULLWIDTH COMMA + case 0xff1au: return 0xfe13u; // FULLWIDTH COLON + case 0xff1bu: return 0xfe14u; // FULLWIDTH SEMICOLON + case 0xff1fu: return 0xfe16u; // FULLWIDTH QUESTION MARK + case 0xff3bu: return 0xfe47u; // FULLWIDTH LEFT SQUARE BRACKET + case 0xff3du: return 0xfe48u; // FULLWIDTH RIGHT SQUARE BRACKET + case 0xff3fu: return 0xfe33u; // FULLWIDTH LOW LINE + case 0xff5bu: return 0xfe37u; // FULLWIDTH LEFT CURLY BRACKET + case 0xff5du: return 0xfe38u; // FULLWIDTH RIGHT CURLY BRACKET + } break; + } - hb_buffer_t *buffer = c->buffer; - hb_unicode_funcs_t *unicode = buffer->unicode; - hb_mask_t rtlm_mask = c->plan->rtlm_mask; + return u; +} +static inline void +hb_ot_rotate_chars (const hb_ot_shape_context_t *c) +{ + hb_buffer_t *buffer = c->buffer; unsigned int count = buffer->len; hb_glyph_info_t *info = buffer->info; - for (unsigned int i = 0; i < count; i++) { - hb_codepoint_t codepoint = unicode->mirroring (info[i].codepoint); - if (likely (codepoint == info[i].codepoint || !c->font->has_glyph (codepoint))) - info[i].mask |= rtlm_mask; - else - info[i].codepoint = codepoint; + + if (HB_DIRECTION_IS_BACKWARD (c->target_direction)) + { + hb_unicode_funcs_t *unicode = buffer->unicode; + hb_mask_t rtlm_mask = c->plan->rtlm_mask; + + for (unsigned int i = 0; i < count; i++) { + hb_codepoint_t codepoint = unicode->mirroring (info[i].codepoint); + if (unlikely (codepoint != info[i].codepoint && c->font->has_glyph (codepoint))) + info[i].codepoint = codepoint; + else + info[i].mask |= rtlm_mask; + } + } + + if (HB_DIRECTION_IS_VERTICAL (c->target_direction) && !c->plan->has_vert) + { + for (unsigned int i = 0; i < count; i++) { + hb_codepoint_t codepoint = hb_vert_char_for (info[i].codepoint); + if (unlikely (codepoint != info[i].codepoint && c->font->has_glyph (codepoint))) + info[i].codepoint = codepoint; + } } } @@ -693,7 +746,7 @@ hb_ot_shape_setup_masks (const hb_ot_shape_context_t *c) for (unsigned int i = 0; i < c->num_user_features; i++) { const hb_feature_t *feature = &c->user_features[i]; - if (!(feature->start == 0 && feature->end == (unsigned int)-1)) { + if (!(feature->start == HB_FEATURE_GLOBAL_START && feature->end == HB_FEATURE_GLOBAL_END)) { unsigned int shift; hb_mask_t mask = map->get_mask (feature->tag, &shift); buffer->set_masks (feature->value << shift, mask, feature->start, feature->end); @@ -788,7 +841,7 @@ hb_ot_substitute_default (const hb_ot_shape_context_t *c) { hb_buffer_t *buffer = c->buffer; - hb_ot_mirror_chars (c); + hb_ot_rotate_chars (c); HB_BUFFER_ALLOCATE_VAR (buffer, glyph_index); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.hh index 2cde73d854c..acc98772a95 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.hh @@ -37,9 +37,9 @@ struct hb_ot_shape_plan_key_t { unsigned int variations_index[2]; - void init (hb_face_t *face, - const int *coords, - unsigned int num_coords) + void init (hb_face_t *face, + const int *coords, + unsigned num_coords) { for (unsigned int table_index = 0; table_index < 2; table_index++) hb_ot_layout_table_find_feature_variations (face, @@ -99,6 +99,7 @@ struct hb_ot_shape_plan_t #else static constexpr bool has_frac = false; #endif + bool has_vert : 1; bool has_gpos_mark : 1; bool zero_marks : 1; bool fallback_glyph_classes : 1; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-stat-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-stat-table.hh index 2cdd3a488b3..88135234db5 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-stat-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-stat-table.hh @@ -77,7 +77,7 @@ struct AxisValueFormat1 NameID valueNameID; /* The name ID for entries in the 'name' table * that provide a display string for this * attribute value. */ - HBFixed value; /* A numeric value for this attribute value. */ + HBFixed value; /* A numeric value for this attribute value. */ public: DEFINE_SIZE_STATIC (12); }; @@ -102,10 +102,10 @@ struct AxisValueFormat2 NameID valueNameID; /* The name ID for entries in the 'name' table * that provide a display string for this * attribute value. */ - HBFixed nominalValue; /* A numeric value for this attribute value. */ - HBFixed rangeMinValue; /* The minimum value for a range associated + HBFixed nominalValue; /* A numeric value for this attribute value. */ + HBFixed rangeMinValue; /* The minimum value for a range associated * with the specified name ID. */ - HBFixed rangeMaxValue; /* The maximum value for a range associated + HBFixed rangeMaxValue; /* The maximum value for a range associated * with the specified name ID. */ public: DEFINE_SIZE_STATIC (20); @@ -131,8 +131,8 @@ struct AxisValueFormat3 NameID valueNameID; /* The name ID for entries in the 'name' table * that provide a display string for this * attribute value. */ - HBFixed value; /* A numeric value for this attribute value. */ - HBFixed linkedValue; /* The numeric value for a style-linked mapping + HBFixed value; /* A numeric value for this attribute value. */ + HBFixed linkedValue; /* The numeric value for a style-linked mapping * from this value. */ public: DEFINE_SIZE_STATIC (16); @@ -150,7 +150,7 @@ struct AxisValueRecord HBUINT16 axisIndex; /* Zero-base index into the axis record array * identifying the axis to which this value * applies. Must be less than designAxisCount. */ - HBFixed value; /* A numeric value for this attribute value. */ + HBFixed value; /* A numeric value for this attribute value. */ public: DEFINE_SIZE_STATIC (6); }; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-avar-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-avar-table.hh index ef8ba3f5a21..29219adb0a1 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-avar-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-avar-table.hh @@ -51,7 +51,7 @@ struct AxisValueMap public: F2DOT14 coords[2]; // F2DOT14 fromCoord; /* A normalized coordinate value obtained using -// * default normalization. */ +// * default normalization. */ // F2DOT14 toCoord; /* The modified, normalized coordinate value. */ public: @@ -79,7 +79,7 @@ struct SegmentMaps : ArrayOf return value - arrayZ[0].fromCoord + arrayZ[0].toCoord; unsigned int i; - unsigned int count = len; + unsigned int count = len - 1; for (i = 1; i < count && value > arrayZ[i].fromCoord; i++) ; @@ -90,9 +90,8 @@ struct SegmentMaps : ArrayOf return arrayZ[i-1].toCoord; int denom = arrayZ[i].fromCoord - arrayZ[i-1].fromCoord; - return arrayZ[i-1].toCoord + - ((arrayZ[i].toCoord - arrayZ[i-1].toCoord) * - (value - arrayZ[i-1].fromCoord) + denom/2) / denom; + return roundf (arrayZ[i-1].toCoord + ((float) (arrayZ[i].toCoord - arrayZ[i-1].toCoord) * + (value - arrayZ[i-1].fromCoord)) / denom); #undef toCoord #undef fromCoord } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-fvar-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-fvar-table.hh index 7ce3123819d..af22f706e54 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-fvar-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-fvar-table.hh @@ -83,9 +83,9 @@ struct AxisRecord public: Tag axisTag; /* Tag identifying the design variation for the axis. */ - HBFixed minValue; /* The minimum coordinate value for the axis. */ - HBFixed defaultValue; /* The default coordinate value for the axis. */ - HBFixed maxValue; /* The maximum coordinate value for the axis. */ + HBFixed minValue; /* The minimum coordinate value for the axis. */ + HBFixed defaultValue; /* The default coordinate value for the axis. */ + HBFixed maxValue; /* The maximum coordinate value for the axis. */ HBUINT16 flags; /* Axis flags. */ NameID axisNameID; /* The name ID for entries in the 'name' table that * provide a display name for this axis. */ @@ -150,17 +150,8 @@ struct fvar { if (axes_count) { - /* TODO Rewrite as hb_array_t<>::sub-array() */ - unsigned int count = axisCount; - start_offset = hb_min (start_offset, count); - - count -= start_offset; - axes_array += start_offset; - - count = hb_min (count, *axes_count); - *axes_count = count; - - for (unsigned int i = 0; i < count; i++) + hb_array_t arr = hb_array (&(this+firstAxis), axisCount).sub_array (start_offset, axes_count); + for (unsigned i = 0; i < arr.length; ++i) get_axis_deprecated (start_offset + i, axes_array + i); } return axisCount; @@ -173,17 +164,8 @@ struct fvar { if (axes_count) { - /* TODO Rewrite as hb_array_t<>::sub-array() */ - unsigned int count = axisCount; - start_offset = hb_min (start_offset, count); - - count -= start_offset; - axes_array += start_offset; - - count = hb_min (count, *axes_count); - *axes_count = count; - - for (unsigned int i = 0; i < count; i++) + hb_array_t arr = hb_array (&(this+firstAxis), axisCount).sub_array (start_offset, axes_count); + for (unsigned i = 0; i < arr.length; ++i) get_axis_info (start_offset + i, axes_array + i); } return axisCount; @@ -229,7 +211,7 @@ struct fvar hb_ot_var_axis_info_t axis; get_axis_info (axis_index, &axis); - v = hb_max (hb_min (v, axis.max_value), axis.min_value); /* Clamp. */ + v = hb_clamp (v, axis.min_value, axis.max_value); if (v == axis.default_value) return 0; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-gvar-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-gvar-table.hh index a76121d8605..db944f6dc51 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-gvar-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-gvar-table.hh @@ -29,8 +29,6 @@ #define HB_OT_VAR_GVAR_TABLE_HH #include "hb-open-type.hh" -#include "hb-ot-glyf-table.hh" -#include "hb-ot-var-fvar-table.hh" /* * gvar -- Glyph Variation Table @@ -42,12 +40,14 @@ namespace OT { struct contour_point_t { - void init (float x_=0.f, float y_=0.f) { flag = 0; x = x_; y = y_; } + void init (float x_ = 0.f, float y_ = 0.f, bool is_end_point_ = false) + { flag = 0; x = x_; y = y_; is_end_point = is_end_point_; } void translate (const contour_point_t &p) { x += p.x; y += p.y; } uint8_t flag; float x, y; + bool is_end_point; }; struct contour_point_vector_t : hb_vector_t @@ -78,50 +78,34 @@ struct contour_point_vector_t : hb_vector_t } }; -struct Tuple : UnsizedArrayOf {}; - -struct TuppleIndex : HBUINT16 +/* https://docs.microsoft.com/en-us/typography/opentype/spec/otvarcommonformats#tuplevariationheader */ +struct TupleVariationHeader { - enum Flags { - EmbeddedPeakTuple = 0x8000u, - IntermediateRegion = 0x4000u, - PrivatePointNumbers = 0x2000u, - TupleIndexMask = 0x0FFFu - }; - - DEFINE_SIZE_STATIC (2); -}; + unsigned get_size (unsigned axis_count) const + { return min_size + get_all_tuples (axis_count).get_size (); } -struct TupleVarHeader -{ - unsigned int get_size (unsigned int axis_count) const - { - return min_size + - (has_peak () ? get_peak_tuple ().get_size (axis_count) : 0) + - (has_intermediate () ? (get_start_tuple (axis_count).get_size (axis_count) + - get_end_tuple (axis_count).get_size (axis_count)) : 0); - } + unsigned get_data_size () const { return varDataSize; } - const TupleVarHeader &get_next (unsigned int axis_count) const - { return StructAtOffset (this, get_size (axis_count)); } + const TupleVariationHeader &get_next (unsigned axis_count) const + { return StructAtOffset (this, get_size (axis_count)); } float calculate_scalar (const int *coords, unsigned int coord_count, - const hb_array_t shared_tuples) const + const hb_array_t shared_tuples) const { - const F2DOT14 *peak_tuple; + hb_array_t peak_tuple; if (has_peak ()) - peak_tuple = &(get_peak_tuple ()[0]); + peak_tuple = get_peak_tuple (coord_count); else { unsigned int index = get_index (); if (unlikely (index * coord_count >= shared_tuples.length)) return 0.f; - peak_tuple = &shared_tuples[coord_count * index]; + peak_tuple = shared_tuples.sub_array (coord_count * index, coord_count); } - const F2DOT14 *start_tuple = nullptr; - const F2DOT14 *end_tuple = nullptr; + hb_array_t start_tuple; + hb_array_t end_tuple; if (has_intermediate ()) { start_tuple = get_start_tuple (coord_count); @@ -154,58 +138,64 @@ struct TupleVarHeader return scalar; } - unsigned int get_data_size () const { return varDataSize; } - bool has_peak () const { return (tupleIndex & TuppleIndex::EmbeddedPeakTuple); } bool has_intermediate () const { return (tupleIndex & TuppleIndex::IntermediateRegion); } bool has_private_points () const { return (tupleIndex & TuppleIndex::PrivatePointNumbers); } unsigned int get_index () const { return (tupleIndex & TuppleIndex::TupleIndexMask); } protected: - const Tuple &get_peak_tuple () const - { return StructAfter (tupleIndex); } - const Tuple &get_start_tuple (unsigned int axis_count) const - { return *(const Tuple *) &get_peak_tuple ()[has_peak () ? axis_count : 0]; } - const Tuple &get_end_tuple (unsigned int axis_count) const - { return *(const Tuple *) &get_peak_tuple ()[has_peak () ? (axis_count * 2) : axis_count]; } - - HBUINT16 varDataSize; - TuppleIndex tupleIndex; + struct TuppleIndex : HBUINT16 + { + enum Flags { + EmbeddedPeakTuple = 0x8000u, + IntermediateRegion = 0x4000u, + PrivatePointNumbers = 0x2000u, + TupleIndexMask = 0x0FFFu + }; + + DEFINE_SIZE_STATIC (2); + }; + + hb_array_t get_all_tuples (unsigned axis_count) const + { return StructAfter> (tupleIndex).as_array ((has_peak () + has_intermediate () * 2) * axis_count); } + hb_array_t get_peak_tuple (unsigned axis_count) const + { return get_all_tuples (axis_count).sub_array (0, axis_count); } + hb_array_t get_start_tuple (unsigned axis_count) const + { return get_all_tuples (axis_count).sub_array (has_peak () * axis_count, axis_count); } + hb_array_t get_end_tuple (unsigned axis_count) const + { return get_all_tuples (axis_count).sub_array (has_peak () * axis_count + axis_count, axis_count); } + + HBUINT16 varDataSize; /* The size in bytes of the serialized + * data for this tuple variation table. */ + TuppleIndex tupleIndex; /* A packed field. The high 4 bits are flags (see below). + The low 12 bits are an index into a shared tuple + records array. */ /* UnsizedArrayOf peakTuple - optional */ + /* Peak tuple record for this tuple variation table — optional, + * determined by flags in the tupleIndex value. + * + * Note that this must always be included in the 'cvar' table. */ /* UnsizedArrayOf intermediateStartTuple - optional */ + /* Intermediate start tuple record for this tuple variation table — optional, + determined by flags in the tupleIndex value. */ /* UnsizedArrayOf intermediateEndTuple - optional */ - + /* Intermediate end tuple record for this tuple variation table — optional, + * determined by flags in the tupleIndex value. */ public: DEFINE_SIZE_MIN (4); }; -struct TupleVarCount : HBUINT16 -{ - bool has_shared_point_numbers () const { return ((*this) & SharedPointNumbers); } - unsigned int get_count () const { return (*this) & CountMask; } - - protected: - enum Flags - { - SharedPointNumbers = 0x8000u, - CountMask = 0x0FFFu - }; - - public: - DEFINE_SIZE_STATIC (2); -}; - -struct GlyphVarData +struct GlyphVariationData { - const TupleVarHeader &get_tuple_var_header (void) const - { return StructAfter (data); } + const TupleVariationHeader &get_tuple_var_header (void) const + { return StructAfter (data); } struct tuple_iterator_t { - void init (const GlyphVarData *var_data_, unsigned int length_, unsigned int axis_count_) + void init (hb_bytes_t var_data_bytes_, unsigned int axis_count_) { - var_data = var_data_; - length = length_; + var_data_bytes = var_data_bytes_; + var_data = var_data_bytes_.as (); index = 0; axis_count = axis_count_; current_tuple = &var_data->get_tuple_var_header (); @@ -216,10 +206,9 @@ struct GlyphVarData { if (var_data->has_shared_point_numbers ()) { - hb_bytes_t bytes ((const char *) var_data, length); const HBUINT8 *base = &(var_data+var_data->data); const HBUINT8 *p = base; - if (!unpack_points (p, shared_indices, bytes)) return false; + if (!unpack_points (p, shared_indices, var_data_bytes)) return false; data_offset = p - base; } return true; @@ -228,7 +217,8 @@ struct GlyphVarData bool is_valid () const { return (index < var_data->tupleVarCount.get_count ()) && - in_range (current_tuple) && + var_data_bytes.check_range (current_tuple, TupleVariationHeader::min_size) && + var_data_bytes.check_range (current_tuple, hb_max (current_tuple->get_data_size (), current_tuple->get_size (axis_count))) && current_tuple->get_size (axis_count); } @@ -240,32 +230,25 @@ struct GlyphVarData return is_valid (); } - bool in_range (const void *p, unsigned int l) const - { return (const char*) p >= (const char*) var_data && (const char*) p+l <= (const char*) var_data + length; } - - template bool in_range (const T *p) const { return in_range (p, sizeof (*p)); } - const HBUINT8 *get_serialized_data () const { return &(var_data+var_data->data) + data_offset; } private: - const GlyphVarData *var_data; - unsigned int length; + const GlyphVariationData *var_data; unsigned int index; unsigned int axis_count; unsigned int data_offset; public: - const TupleVarHeader *current_tuple; + hb_bytes_t var_data_bytes; + const TupleVariationHeader *current_tuple; }; - static bool get_tuple_iterator (const GlyphVarData *var_data, - unsigned int length, - unsigned int axis_count, - hb_vector_t &shared_indices /* OUT */, - tuple_iterator_t *iterator /* OUT */) + static bool get_tuple_iterator (hb_bytes_t var_data_bytes, unsigned axis_count, + hb_vector_t &shared_indices /* OUT */, + tuple_iterator_t *iterator /* OUT */) { - iterator->init (var_data, length, axis_count); + iterator->init (var_data_bytes, axis_count); if (!iterator->get_shared_indices (shared_indices)) return false; return iterator->is_valid (); @@ -283,12 +266,12 @@ struct GlyphVarData POINT_RUN_COUNT_MASK = 0x7F }; - if (unlikely (!bytes.in_range (p))) return false; + if (unlikely (!bytes.check_range (p))) return false; uint16_t count = *p++; if (count & POINTS_ARE_WORDS) { - if (unlikely (!bytes.in_range (p))) return false; + if (unlikely (!bytes.check_range (p))) return false; count = ((count & POINT_RUN_COUNT_MASK) << 8) | *p++; } points.resize (count); @@ -297,7 +280,7 @@ struct GlyphVarData uint16_t i = 0; while (i < count) { - if (unlikely (!bytes.in_range (p))) return false; + if (unlikely (!bytes.check_range (p))) return false; uint16_t j; uint8_t control = *p++; uint16_t run_count = (control & POINT_RUN_COUNT_MASK) + 1; @@ -305,7 +288,7 @@ struct GlyphVarData { for (j = 0; j < run_count && i < count; j++, i++) { - if (unlikely (!bytes.in_range ((const HBUINT16 *) p))) + if (unlikely (!bytes.check_range ((const HBUINT16 *) p))) return false; n += *(const HBUINT16 *)p; points[i] = n; @@ -316,7 +299,7 @@ struct GlyphVarData { for (j = 0; j < run_count && i < count; j++, i++) { - if (unlikely (!bytes.in_range (p))) return false; + if (unlikely (!bytes.check_range (p))) return false; n += *p++; points[i] = n; } @@ -341,7 +324,7 @@ struct GlyphVarData unsigned int count = deltas.length; while (i < count) { - if (unlikely (!bytes.in_range (p))) return false; + if (unlikely (!bytes.check_range (p))) return false; uint8_t control = *p++; unsigned int run_count = (control & DELTA_RUN_COUNT_MASK) + 1; unsigned int j; @@ -351,7 +334,7 @@ struct GlyphVarData else if (control & DELTAS_ARE_WORDS) for (j = 0; j < run_count && i < count; j++, i++) { - if (unlikely (!bytes.in_range ((const HBUINT16 *) p))) + if (unlikely (!bytes.check_range ((const HBUINT16 *) p))) return false; deltas[i] = *(const HBINT16 *) p; p += HBUINT16::static_size; @@ -359,7 +342,7 @@ struct GlyphVarData else for (j = 0; j < run_count && i < count; j++, i++) { - if (unlikely (!bytes.in_range (p))) + if (unlikely (!bytes.check_range (p))) return false; deltas[i] = *(const HBINT8 *) p++; } @@ -369,10 +352,32 @@ struct GlyphVarData return true; } + bool has_data () const { return tupleVarCount; } + protected: - TupleVarCount tupleVarCount; - OffsetTo data; - /* TupleVarHeader tupleVarHeaders[] */ + struct TupleVarCount : HBUINT16 + { + bool has_shared_point_numbers () const { return ((*this) & SharedPointNumbers); } + unsigned int get_count () const { return (*this) & CountMask; } + + protected: + enum Flags + { + SharedPointNumbers= 0x8000u, + CountMask = 0x0FFFu + }; + public: + DEFINE_SIZE_STATIC (2); + }; + + TupleVarCount tupleVarCount; /* A packed field. The high 4 bits are flags, and the + * low 12 bits are the number of tuple variation tables + * for this glyph. The number of tuple variation tables + * can be any number between 1 and 4095. */ + OffsetTo + data; /* Offset from the start of the GlyphVariationData table + * to the serialized data. */ + /* TupleVariationHeader tupleVariationHeaders[] *//* Array of tuple variation headers. */ public: DEFINE_SIZE_MIN (4); }; @@ -386,7 +391,7 @@ struct gvar TRACE_SANITIZE (this); return_trace (c->check_struct (this) && (version.major == 1) && (glyphCount == c->get_num_glyphs ()) && - c->check_array (&(this+sharedTuples), axisCount * sharedTupleCount) && + sharedTuples.sanitize (c, this, axisCount * sharedTupleCount) && (is_long_offset () ? c->check_array (get_long_offset_array (), glyphCount+1) : c->check_array (get_short_offset_array (), glyphCount+1)) && @@ -394,7 +399,7 @@ struct gvar get_offset (glyphCount) - get_offset (0))); } - /* GlyphVarData not sanitized here; must be checked while accessing each glyph varation data */ + /* GlyphVariationData not sanitized here; must be checked while accessing each glyph varation data */ bool sanitize (hb_sanitize_context_t *c) const { return sanitize_shallow (c); } @@ -418,7 +423,7 @@ struct gvar { hb_codepoint_t old_gid; if (!c->plan->old_gid_for_new_gid (gid, &old_gid)) continue; - subset_data_size += get_glyph_var_data_length (old_gid); + subset_data_size += get_glyph_var_data_bytes (c->source_blob, old_gid).length; } bool long_offset = subset_data_size & ~0xFFFFu; @@ -436,27 +441,30 @@ struct gvar F2DOT14 *tuples = c->serializer->allocate_size (shared_tuple_size); if (!tuples) return_trace (false); out->sharedTuples = (char *) tuples - (char *) out; - memcpy (tuples, &(this+sharedTuples), shared_tuple_size); + memcpy (tuples, this+sharedTuples, shared_tuple_size); } char *subset_data = c->serializer->allocate_size (subset_data_size); if (!subset_data) return_trace (false); - out->dataZ = subset_data - (char *)out; + out->dataZ = subset_data - (char *) out; unsigned int glyph_offset = 0; for (hb_codepoint_t gid = 0; gid < num_glyphs; gid++) { hb_codepoint_t old_gid; - unsigned int length = c->plan->old_gid_for_new_gid (gid, &old_gid) ? get_glyph_var_data_length (old_gid) : 0; + hb_bytes_t var_data_bytes = c->plan->old_gid_for_new_gid (gid, &old_gid) + ? get_glyph_var_data_bytes (c->source_blob, old_gid) + : hb_bytes_t (); if (long_offset) ((HBUINT32 *) subset_offsets)[gid] = glyph_offset; else ((HBUINT16 *) subset_offsets)[gid] = glyph_offset / 2; - if (length > 0) memcpy (subset_data, get_glyph_var_data (old_gid), length); - subset_data += length; - glyph_offset += length; + if (var_data_bytes.length > 0) + memcpy (subset_data, var_data_bytes.arrayZ, var_data_bytes.length); + subset_data += var_data_bytes.length; + glyph_offset += var_data_bytes.length; } if (long_offset) ((HBUINT32 *) subset_offsets)[num_glyphs] = glyph_offset; @@ -467,16 +475,12 @@ struct gvar } protected: - const GlyphVarData *get_glyph_var_data (hb_codepoint_t glyph) const + const hb_bytes_t get_glyph_var_data_bytes (hb_blob_t *blob, hb_codepoint_t glyph) const { - unsigned int start_offset = get_offset (glyph); - unsigned int end_offset = get_offset (glyph+1); - - if ((start_offset == end_offset) || - unlikely ((start_offset > get_offset (glyphCount)) || - (start_offset + GlyphVarData::min_size > end_offset))) - return &Null (GlyphVarData); - return &(((unsigned char *) this + start_offset) + dataZ); + unsigned start_offset = get_offset (glyph); + unsigned length = get_offset (glyph+1) - start_offset; + hb_bytes_t var_data = blob->as_bytes ().sub_array (((unsigned) dataZ) + start_offset, length); + return likely (var_data.length >= GlyphVariationData::min_size) ? var_data : hb_bytes_t (); } bool is_long_offset () const { return (flags & 1) != 0; } @@ -489,15 +493,6 @@ struct gvar return get_short_offset_array ()[i] * 2; } - unsigned int get_glyph_var_data_length (unsigned int glyph) const - { - unsigned int end_offset = get_offset (glyph + 1); - unsigned int start_offset = get_offset (glyph); - if (unlikely (start_offset > end_offset || end_offset > get_offset (glyphCount))) - return 0; - return end_offset - start_offset; - } - const HBUINT32 * get_long_offset_array () const { return (const HBUINT32 *) &offsetZ; } const HBUINT16 *get_short_offset_array () const { return (const HBUINT16 *) &offsetZ; } @@ -505,27 +500,8 @@ struct gvar struct accelerator_t { void init (hb_face_t *face) - { - gvar_table = hb_sanitize_context_t ().reference_table (face); - hb_blob_ptr_t fvar_table = hb_sanitize_context_t ().reference_table (face); - unsigned int axis_count = fvar_table->get_axis_count (); - fvar_table.destroy (); - - if (unlikely ((gvar_table->glyphCount != face->get_num_glyphs ()) || - (gvar_table->axisCount != axis_count))) - fini (); - - unsigned int num_shared_coord = gvar_table->sharedTupleCount * gvar_table->axisCount; - shared_tuples.resize (num_shared_coord); - for (unsigned int i = 0; i < num_shared_coord; i++) - shared_tuples[i] = (&(gvar_table + gvar_table->sharedTuples))[i]; - } - - void fini () - { - gvar_table.destroy (); - shared_tuples.fini (); - } + { table = hb_sanitize_context_t ().reference_table (face); } + void fini () { table.destroy (); } private: struct x_getter { static float get (const contour_point_t &p) { return p.x; } }; @@ -543,11 +519,11 @@ struct gvar float next_delta = T::get (deltas[next]); if (prev_val == next_val) - return (prev_delta == next_delta) ? prev_delta : 0.f; + return (prev_delta == next_delta) ? prev_delta : 0.f; else if (target_val <= hb_min (prev_val, next_val)) - return (prev_val < next_val) ? prev_delta : next_delta; + return (prev_val < next_val) ? prev_delta : next_delta; else if (target_val >= hb_max (prev_val, next_val)) - return (prev_val > next_val) ? prev_delta : next_delta; + return (prev_val > next_val) ? prev_delta : next_delta; /* linear interpolation */ float r = (target_val - prev_val) / (next_val - prev_val); @@ -558,23 +534,19 @@ struct gvar { return (i >= end) ? start : (i + 1); } public: - bool apply_deltas_to_points (hb_codepoint_t glyph, - const int *coords, unsigned int coord_count, - const hb_array_t points, - const hb_array_t end_points) const + bool apply_deltas_to_points (hb_codepoint_t glyph, hb_font_t *font, + const hb_array_t points) const { - if (unlikely (coord_count != gvar_table->axisCount)) return false; + /* num_coords should exactly match gvar's axisCount due to how GlyphVariationData tuples are aligned */ + if (!font->num_coords || font->num_coords != table->axisCount) return true; - const GlyphVarData *var_data = gvar_table->get_glyph_var_data (glyph); - if (var_data == &Null (GlyphVarData)) return true; + hb_bytes_t var_data_bytes = table->get_glyph_var_data_bytes (table.get_blob (), glyph); + if (!var_data_bytes.as ()->has_data ()) return true; hb_vector_t shared_indices; - GlyphVarData::tuple_iterator_t iterator; - if (!GlyphVarData::get_tuple_iterator (var_data, - gvar_table->get_glyph_var_data_length (glyph), - gvar_table->axisCount, - shared_indices, - &iterator)) - return false; + GlyphVariationData::tuple_iterator_t iterator; + if (!GlyphVariationData::get_tuple_iterator (var_data_bytes, table->axisCount, + shared_indices, &iterator)) + return true; /* so isn't applied at all */ /* Save original points for inferred delta calculation */ contour_point_vector_t orig_points; @@ -585,19 +557,27 @@ struct gvar contour_point_vector_t deltas; /* flag is used to indicate referenced point */ deltas.resize (points.length); + hb_vector_t end_points; + for (unsigned i = 0; i < points.length; ++i) + if (points[i].is_end_point) + end_points.push (i); + + int *coords = font->coords; + unsigned num_coords = font->num_coords; + hb_array_t shared_tuples = (table+table->sharedTuples).as_array (table->sharedTupleCount * table->axisCount); do { - float scalar = iterator.current_tuple->calculate_scalar (coords, coord_count, shared_tuples.as_array ()); + float scalar = iterator.current_tuple->calculate_scalar (coords, num_coords, shared_tuples); if (scalar == 0.f) continue; const HBUINT8 *p = iterator.get_serialized_data (); unsigned int length = iterator.current_tuple->get_data_size (); - if (unlikely (!iterator.in_range (p, length))) + if (unlikely (!iterator.var_data_bytes.check_range (p, length))) return false; hb_bytes_t bytes ((const char *) p, length); hb_vector_t private_indices; if (iterator.current_tuple->has_private_points () && - !GlyphVarData::unpack_points (p, private_indices, bytes)) + !GlyphVariationData::unpack_points (p, private_indices, bytes)) return false; const hb_array_t &indices = private_indices.length ? private_indices : shared_indices; @@ -605,11 +585,11 @@ struct gvar unsigned int num_deltas = apply_to_all ? points.length : indices.length; hb_vector_t x_deltas; x_deltas.resize (num_deltas); - if (!GlyphVarData::unpack_deltas (p, x_deltas, bytes)) + if (!GlyphVariationData::unpack_deltas (p, x_deltas, bytes)) return false; hb_vector_t y_deltas; y_deltas.resize (num_deltas); - if (!GlyphVarData::unpack_deltas (p, y_deltas, bytes)) + if (!GlyphVariationData::unpack_deltas (p, y_deltas, bytes)) return false; for (unsigned int i = 0; i < deltas.length; i++) @@ -623,26 +603,26 @@ struct gvar } /* infer deltas for unreferenced points */ - unsigned int start_point = 0; - for (unsigned int c = 0; c < end_points.length; c++) + unsigned start_point = 0; + for (unsigned c = 0; c < end_points.length; c++) { - unsigned int end_point = end_points[c]; - unsigned int i, j; + unsigned end_point = end_points[c]; /* Check the number of unreferenced points in a contour. If no unref points or no ref points, nothing to do. */ - unsigned int unref_count = 0; - for (i = start_point; i <= end_point; i++) + unsigned unref_count = 0; + for (unsigned i = start_point; i <= end_point; i++) if (!deltas[i].flag) unref_count++; + + unsigned j = start_point; if (unref_count == 0 || unref_count > end_point - start_point) goto no_more_gaps; - j = start_point; for (;;) { /* Locate the next gap of unreferenced points between two referenced points prev and next. * Note that a gap may wrap around at left (start_point) and/or at right (end_point). */ - unsigned int prev, next; + unsigned int prev, next, i; for (;;) { i = j; @@ -683,29 +663,36 @@ no_more_gaps: return true; } - unsigned int get_axis_count () const { return gvar_table->axisCount; } - - protected: - const GlyphVarData *get_glyph_var_data (hb_codepoint_t glyph) const - { return gvar_table->get_glyph_var_data (glyph); } + unsigned int get_axis_count () const { return table->axisCount; } private: - hb_blob_ptr_t gvar_table; - hb_vector_t shared_tuples; + hb_blob_ptr_t table; }; protected: - FixedVersion<>version; /* Version of gvar table. Set to 0x00010000u. */ - HBUINT16 axisCount; + FixedVersion<>version; /* Version number of the glyph variations table + * Set to 0x00010000u. */ + HBUINT16 axisCount; /* The number of variation axes for this font. This must be + * the same number as axisCount in the 'fvar' table. */ HBUINT16 sharedTupleCount; - LOffsetTo - sharedTuples; /* LOffsetTo> */ - HBUINT16 glyphCount; - HBUINT16 flags; - LOffsetTo - dataZ; /* Array of GlyphVarData */ + /* The number of shared tuple records. Shared tuple records + * can be referenced within glyph variation data tables for + * multiple glyphs, as opposed to other tuple records stored + * directly within a glyph variation data table. */ + LNNOffsetTo> + sharedTuples; /* Offset from the start of this table to the shared tuple records. + * Array of tuple records shared across all glyph variation data tables. */ + HBUINT16 glyphCount; /* The number of glyphs in this font. This must match the number of + * glyphs stored elsewhere in the font. */ + HBUINT16 flags; /* Bit-field that gives the format of the offset array that follows. + * If bit 0 is clear, the offsets are uint16; if bit 0 is set, the + * offsets are uint32. */ + LOffsetTo + dataZ; /* Offset from the start of this table to the array of + * GlyphVariationData tables. */ UnsizedArrayOf - offsetZ; /* Array of 16-bit or 32-bit (glyphCount+1) offsets */ + offsetZ; /* Offsets from the start of the GlyphVariationData array + * to each GlyphVariationData table. */ public: DEFINE_SIZE_MIN (20); }; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-hvar-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-hvar-table.hh index 223430fb829..fdcc88d6748 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-hvar-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-hvar-table.hh @@ -44,6 +44,38 @@ struct DeltaSetIndexMap get_width ())); } + template + bool serialize (hb_serialize_context_t *c, const T &plan) + { + unsigned int width = plan.get_width (); + unsigned int inner_bit_count = plan.get_inner_bit_count (); + const hb_array_t output_map = plan.get_output_map (); + + TRACE_SERIALIZE (this); + if (unlikely (output_map.length && ((((inner_bit_count-1)&~0xF)!=0) || (((width-1)&~0x3)!=0)))) + return_trace (false); + if (unlikely (!c->extend_min (*this))) return_trace (false); + + format = ((width-1)<<4)|(inner_bit_count-1); + mapCount = output_map.length; + HBUINT8 *p = c->allocate_size (width * output_map.length); + if (unlikely (!p)) return_trace (false); + for (unsigned int i = 0; i < output_map.length; i++) + { + unsigned int v = output_map[i]; + unsigned int outer = v >> 16; + unsigned int inner = v & 0xFFFF; + unsigned int u = (outer << inner_bit_count) | inner; + for (unsigned int w = width; w > 0;) + { + p[--w] = u; + u >>= 8; + } + p += width; + } + return_trace (true); + } + unsigned int map (unsigned int v) const /* Returns 16.16 outer.inner. */ { /* If count is zero, pass value unchanged. This takes @@ -63,7 +95,7 @@ struct DeltaSetIndexMap } { /* Repack it. */ - unsigned int n = get_inner_bitcount (); + unsigned int n = get_inner_bit_count (); unsigned int outer = u >> n; unsigned int inner = u & ((1 << n) - 1); u = (outer<<16) | inner; @@ -72,22 +104,230 @@ struct DeltaSetIndexMap return u; } - protected: - unsigned int get_width () const { return ((format >> 4) & 3) + 1; } - - unsigned int get_inner_bitcount () const { return (format & 0xF) + 1; } + unsigned int get_map_count () const { return mapCount; } + unsigned int get_width () const { return ((format >> 4) & 3) + 1; } + unsigned int get_inner_bit_count () const { return (format & 0xF) + 1; } protected: HBUINT16 format; /* A packed field that describes the compressed * representation of delta-set indices. */ HBUINT16 mapCount; /* The number of mapping entries. */ UnsizedArrayOf - mapDataZ; /* The delta-set index mapping data. */ + mapDataZ; /* The delta-set index mapping data. */ public: DEFINE_SIZE_ARRAY (4, mapDataZ); }; +struct index_map_subset_plan_t +{ + enum index_map_index_t { + ADV_INDEX, + LSB_INDEX, /* dual as TSB */ + RSB_INDEX, /* dual as BSB */ + VORG_INDEX + }; + + void init (const DeltaSetIndexMap &index_map, + hb_inc_bimap_t &outer_map, + hb_vector_t &inner_sets, + const hb_subset_plan_t *plan) + { + map_count = 0; + outer_bit_count = 0; + inner_bit_count = 1; + max_inners.init (); + output_map.init (); + + if (&index_map == &Null (DeltaSetIndexMap)) return; + + unsigned int last_val = (unsigned int)-1; + hb_codepoint_t last_gid = (hb_codepoint_t)-1; + hb_codepoint_t gid = (hb_codepoint_t) hb_min (index_map.get_map_count (), plan->num_output_glyphs ()); + + outer_bit_count = (index_map.get_width () * 8) - index_map.get_inner_bit_count (); + max_inners.resize (inner_sets.length); + for (unsigned i = 0; i < inner_sets.length; i++) max_inners[i] = 0; + + /* Search backwards for a map value different from the last map value */ + for (; gid > 0; gid--) + { + hb_codepoint_t old_gid; + if (!plan->old_gid_for_new_gid (gid - 1, &old_gid)) + { + if (last_gid == (hb_codepoint_t) -1) + continue; + else + break; + } + + unsigned int v = index_map.map (old_gid); + if (last_gid == (hb_codepoint_t) -1) + { + last_val = v; + last_gid = gid; + continue; + } + if (v != last_val) break; + + last_gid = gid; + } + + if (unlikely (last_gid == (hb_codepoint_t)-1)) return; + map_count = last_gid; + for (gid = 0; gid < map_count; gid++) + { + hb_codepoint_t old_gid; + if (plan->old_gid_for_new_gid (gid, &old_gid)) + { + unsigned int v = index_map.map (old_gid); + unsigned int outer = v >> 16; + unsigned int inner = v & 0xFFFF; + outer_map.add (outer); + if (inner > max_inners[outer]) max_inners[outer] = inner; + if (outer >= inner_sets.length) return; + inner_sets[outer]->add (inner); + } + } + } + + void fini () + { + max_inners.fini (); + output_map.fini (); + } + + void remap (const DeltaSetIndexMap *input_map, + const hb_inc_bimap_t &outer_map, + const hb_vector_t &inner_maps, + const hb_subset_plan_t *plan) + { + if (input_map == &Null (DeltaSetIndexMap)) return; + + for (unsigned int i = 0; i < max_inners.length; i++) + { + if (inner_maps[i].get_population () == 0) continue; + unsigned int bit_count = (max_inners[i]==0)? 1: hb_bit_storage (inner_maps[i][max_inners[i]]); + if (bit_count > inner_bit_count) inner_bit_count = bit_count; + } + + output_map.resize (map_count); + for (hb_codepoint_t gid = 0; gid < output_map.length; gid++) + { + hb_codepoint_t old_gid; + if (plan->old_gid_for_new_gid (gid, &old_gid)) + { + unsigned int v = input_map->map (old_gid); + unsigned int outer = v >> 16; + output_map[gid] = (outer_map[outer] << 16) | (inner_maps[outer][v & 0xFFFF]); + } + else + output_map[gid] = 0; /* Map unused glyph to outer/inner=0/0 */ + } + } + + unsigned int get_inner_bit_count () const { return inner_bit_count; } + unsigned int get_width () const { return ((outer_bit_count + inner_bit_count + 7) / 8); } + unsigned int get_map_count () const { return map_count; } + + unsigned int get_size () const + { return (map_count? (DeltaSetIndexMap::min_size + get_width () * map_count): 0); } + + bool is_identity () const { return get_output_map ().length == 0; } + hb_array_t get_output_map () const { return output_map.as_array (); } + + protected: + unsigned int map_count; + hb_vector_t max_inners; + unsigned int outer_bit_count; + unsigned int inner_bit_count; + hb_vector_t output_map; +}; + +struct hvarvvar_subset_plan_t +{ + hvarvvar_subset_plan_t() : inner_maps (), index_map_plans () {} + ~hvarvvar_subset_plan_t() { fini (); } + + void init (const hb_array_t &index_maps, + const VariationStore &_var_store, + const hb_subset_plan_t *plan) + { + index_map_plans.resize (index_maps.length); + + var_store = &_var_store; + inner_sets.resize (var_store->get_sub_table_count ()); + for (unsigned int i = 0; i < inner_sets.length; i++) + inner_sets[i] = hb_set_create (); + adv_set = hb_set_create (); + + inner_maps.resize (var_store->get_sub_table_count ()); + + for (unsigned int i = 0; i < inner_maps.length; i++) + inner_maps[i].init (); + + if (unlikely (!index_map_plans.length || !inner_sets.length || !inner_maps.length)) return; + + bool retain_adv_map = false; + index_map_plans[0].init (*index_maps[0], outer_map, inner_sets, plan); + if (index_maps[0] == &Null (DeltaSetIndexMap)) + { + retain_adv_map = plan->retain_gids; + outer_map.add (0); + for (hb_codepoint_t gid = 0; gid < plan->num_output_glyphs (); gid++) + { + hb_codepoint_t old_gid; + if (plan->old_gid_for_new_gid (gid, &old_gid)) + inner_sets[0]->add (old_gid); + } + hb_set_union (adv_set, inner_sets[0]); + } + + for (unsigned int i = 1; i < index_maps.length; i++) + index_map_plans[i].init (*index_maps[i], outer_map, inner_sets, plan); + + outer_map.sort (); + + if (retain_adv_map) + { + for (hb_codepoint_t gid = 0; gid < plan->num_output_glyphs (); gid++) + if (inner_sets[0]->has (gid)) + inner_maps[0].add (gid); + else + inner_maps[0].skip (); + } + else + { + inner_maps[0].add_set (adv_set); + hb_set_subtract (inner_sets[0], adv_set); + inner_maps[0].add_set (inner_sets[0]); + } + + for (unsigned int i = 1; i < inner_maps.length; i++) + inner_maps[i].add_set (inner_sets[i]); + + for (unsigned int i = 0; i < index_maps.length; i++) + index_map_plans[i].remap (index_maps[i], outer_map, inner_maps, plan); + } + + void fini () + { + for (unsigned int i = 0; i < inner_sets.length; i++) + hb_set_destroy (inner_sets[i]); + hb_set_destroy (adv_set); + inner_maps.fini_deep (); + index_map_plans.fini_deep (); + } + + hb_inc_bimap_t outer_map; + hb_vector_t inner_maps; + hb_vector_t index_map_plans; + const VariationStore *var_store; + + protected: + hb_vector_t inner_sets; + hb_set_t *adv_set; +}; /* * HVAR -- Horizontal Metrics Variations @@ -114,7 +354,59 @@ struct HVARVVAR rsbMap.sanitize (c, this)); } - float get_advance_var (hb_font_t *font, hb_codepoint_t glyph) const + void listup_index_maps (hb_vector_t &index_maps) const + { + index_maps.push (&(this+advMap)); + index_maps.push (&(this+lsbMap)); + index_maps.push (&(this+rsbMap)); + } + + bool serialize_index_maps (hb_serialize_context_t *c, + const hb_array_t &im_plans) + { + TRACE_SERIALIZE (this); + if (im_plans[index_map_subset_plan_t::ADV_INDEX].is_identity ()) + advMap = 0; + else if (unlikely (!advMap.serialize (c, this).serialize (c, im_plans[index_map_subset_plan_t::ADV_INDEX]))) + return_trace (false); + if (im_plans[index_map_subset_plan_t::LSB_INDEX].is_identity ()) + lsbMap = 0; + else if (unlikely (!lsbMap.serialize (c, this).serialize (c, im_plans[index_map_subset_plan_t::LSB_INDEX]))) + return_trace (false); + if (im_plans[index_map_subset_plan_t::RSB_INDEX].is_identity ()) + rsbMap = 0; + else if (unlikely (!rsbMap.serialize (c, this).serialize (c, im_plans[index_map_subset_plan_t::RSB_INDEX]))) + return_trace (false); + + return_trace (true); + } + + template + bool _subset (hb_subset_context_t *c) const + { + TRACE_SUBSET (this); + hvarvvar_subset_plan_t hvar_plan; + hb_vector_t + index_maps; + + ((T*)this)->listup_index_maps (index_maps); + hvar_plan.init (index_maps.as_array (), this+varStore, c->plan); + + T *out = c->serializer->allocate_min (); + if (unlikely (!out)) return_trace (false); + + out->version.major = 1; + out->version.minor = 0; + + if (unlikely (!out->varStore.serialize (c->serializer, out) + .serialize (c->serializer, hvar_plan.var_store, hvar_plan.inner_maps.as_array ()))) + return_trace (false); + + return_trace (out->T::serialize_index_maps (c->serializer, + hvar_plan.index_map_plans.as_array ())); + } + + float get_advance_var (hb_codepoint_t glyph, hb_font_t *font) const { unsigned int varidx = (this+advMap).map (glyph); return (this+varStore).get_delta (varidx, font->coords, font->num_coords); @@ -148,6 +440,7 @@ struct HVARVVAR struct HVAR : HVARVVAR { static constexpr hb_tag_t tableTag = HB_OT_TAG_HVAR; + bool subset (hb_subset_context_t *c) const { return HVARVVAR::_subset (c); } }; struct VVAR : HVARVVAR { static constexpr hb_tag_t tableTag = HB_OT_TAG_VVAR; @@ -159,6 +452,28 @@ struct VVAR : HVARVVAR { vorgMap.sanitize (c, this)); } + void listup_index_maps (hb_vector_t &index_maps) const + { + HVARVVAR::listup_index_maps (index_maps); + index_maps.push (&(this+vorgMap)); + } + + bool serialize_index_maps (hb_serialize_context_t *c, + const hb_array_t &im_plans) + { + TRACE_SERIALIZE (this); + if (unlikely (!HVARVVAR::serialize_index_maps (c, im_plans))) + return_trace (false); + if (!im_plans[index_map_subset_plan_t::VORG_INDEX].get_map_count ()) + vorgMap = 0; + else if (unlikely (!vorgMap.serialize (c, this).serialize (c, im_plans[index_map_subset_plan_t::VORG_INDEX]))) + return_trace (false); + + return_trace (true); + } + + bool subset (hb_subset_context_t *c) const { return HVARVVAR::_subset (c); } + protected: LOffsetTo vorgMap; /* Offset to vertical-origin var-idx mapping. */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-mvar-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-mvar-table.hh index 5a9d2afb7c6..1b7fad9cec4 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-mvar-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-mvar-table.hh @@ -77,7 +77,9 @@ struct MVAR const int *coords, unsigned int coord_count) const { const VariationValueRecord *record; - record = (VariationValueRecord *) hb_bsearch (&tag, valuesZ.arrayZ, + record = (VariationValueRecord *) hb_bsearch (tag, + (const VariationValueRecord *) + (const HBUINT8 *) valuesZ, valueRecordCount, valueRecordSize, tag_compare); if (!record) diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-vorg-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-vorg-table.hh index a4d6b0622b3..c6803200f98 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-vorg-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-vorg-table.hh @@ -84,7 +84,7 @@ struct VORG this->defaultVertOriginY = defaultVertOriginY; this->vertYOrigins.len = it.len (); - for (const auto _ : it) c->copy (_); + c->copy_all (it); } bool subset (hb_subset_context_t *c) const @@ -122,10 +122,11 @@ struct VORG } protected: - FixedVersion<> version; /* Version of VORG table. Set to 0x00010000u. */ - FWORD defaultVertOriginY; /* The default vertical origin. */ + FixedVersion<>version; /* Version of VORG table. Set to 0x00010000u. */ + FWORD defaultVertOriginY; + /* The default vertical origin. */ SortedArrayOf - vertYOrigins; /* The array of vertical origins. */ + vertYOrigins; /* The array of vertical origins. */ public: DEFINE_SIZE_ARRAY(8, vertYOrigins); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-pool.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-pool.hh index 83875dbe13d..dcf0faf2a93 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-pool.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-pool.hh @@ -41,9 +41,7 @@ struct hb_pool_t { next = nullptr; - + hb_iter (chunks) - | hb_apply ([] (chunk_t *_) { ::free (_); }) - ; + for (chunk_t *_ : chunks) ::free (_); chunks.fini (); } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-sanitize.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-sanitize.hh index 7859c6a2c6b..091b3010f0a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-sanitize.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-sanitize.hh @@ -113,6 +113,9 @@ #ifndef HB_SANITIZE_MAX_OPS_MAX #define HB_SANITIZE_MAX_OPS_MAX 0x3FFFFFFF #endif +#ifndef HB_SANITIZE_MAX_SUTABLES +#define HB_SANITIZE_MAX_SUTABLES 0x4000 +#endif struct hb_sanitize_context_t : hb_dispatch_context_t @@ -120,7 +123,7 @@ struct hb_sanitize_context_t : hb_sanitize_context_t () : debug_depth (0), start (nullptr), end (nullptr), - max_ops (0), + max_ops (0), max_subtables (0), writable (false), edit_count (0), blob (nullptr), num_glyphs (65536), @@ -134,6 +137,12 @@ struct hb_sanitize_context_t : static return_t no_dispatch_return_value () { return false; } bool stop_sublookup_iteration (const return_t r) const { return !r; } + bool visit_subtables (unsigned count) + { + max_subtables += count; + return max_subtables < HB_SANITIZE_MAX_SUTABLES; + } + private: template auto _dispatch (const T &obj, hb_priority<1>, Ts&&... ds) HB_AUTO_RETURN @@ -189,8 +198,12 @@ struct hb_sanitize_context_t : void start_processing () { reset_object (); - this->max_ops = hb_max ((unsigned int) (this->end - this->start) * HB_SANITIZE_MAX_OPS_FACTOR, - (unsigned) HB_SANITIZE_MAX_OPS_MIN); + if (unlikely (hb_unsigned_mul_overflows (this->end - this->start, HB_SANITIZE_MAX_OPS_FACTOR))) + this->max_ops = HB_SANITIZE_MAX_OPS_MAX; + else + this->max_ops = hb_clamp ((unsigned) (this->end - this->start) * HB_SANITIZE_MAX_OPS_FACTOR, + (unsigned) HB_SANITIZE_MAX_OPS_MIN, + (unsigned) HB_SANITIZE_MAX_OPS_MAX); this->edit_count = 0; this->debug_depth = 0; @@ -376,7 +389,7 @@ struct hb_sanitize_context_t : mutable unsigned int debug_depth; const char *start, *end; - mutable int max_ops; + mutable int max_ops, max_subtables; private: bool writable; unsigned int edit_count; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-serialize.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-serialize.hh index 4c674b1b1a4..4fb4f4ef40a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-serialize.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-serialize.hh @@ -45,12 +45,13 @@ struct hb_serialize_context_t { typedef unsigned objidx_t; - struct range_t - { - char *head, *tail; - }; + enum whence_t { + Head, /* Relative to the current object head (default). */ + Tail, /* Relative to the current object tail after packed. */ + Absolute /* Absolute: from the start of the serialize buffer. */ + }; - struct object_t : range_t + struct object_t { void fini () { links.fini (); } @@ -70,17 +71,29 @@ struct hb_serialize_context_t struct link_t { bool is_wide: 1; - unsigned position : 31; + bool is_signed: 1; + unsigned whence: 2; + unsigned position: 28; unsigned bias; objidx_t objidx; }; + char *head; + char *tail; hb_vector_t links; object_t *next; }; - range_t snapshot () { range_t s = {head, tail} ; return s; } + struct snapshot_t + { + char *head; + char *tail; + object_t *current; // Just for sanity check + unsigned num_links; + }; + snapshot_t snapshot () + { return snapshot_t { head, tail, current, current->links.length }; } hb_serialize_context_t (void *start_, unsigned int size) : start ((char *) start_), @@ -123,7 +136,7 @@ struct hb_serialize_context_t template bool check_equal (T1 &&v1, T2 &&v2) - { return check_success (v1 == v2); } + { return check_success ((long long) v1 == (long long) v2); } template bool check_assign (T1 &v1, T2 &&v2) @@ -166,7 +179,7 @@ struct hb_serialize_context_t if (packed.length <= 1) return; - pop_pack (); + pop_pack (false); resolve_links (); } @@ -191,11 +204,16 @@ struct hb_serialize_context_t object_t *obj = current; if (unlikely (!obj)) return; current = current->next; - revert (*obj); + revert (obj->head, obj->tail); obj->fini (); object_pool.free (obj); } - objidx_t pop_pack () + + /* Set share to false when an object is unlikely sharable with others + * so not worth an attempt, or a contiguous table is serialized as + * multiple consecutive objects in the reverse order so can't be shared. + */ + objidx_t pop_pack (bool share=true) { object_t *obj = current; if (unlikely (!obj)) return 0; @@ -211,11 +229,15 @@ struct hb_serialize_context_t return 0; } - objidx_t objidx = packed_map.get (obj); - if (objidx) + objidx_t objidx; + if (share) { - obj->fini (); - return objidx; + objidx = packed_map.get (obj); + if (objidx) + { + obj->fini (); + return objidx; + } } tail -= len; @@ -231,17 +253,24 @@ struct hb_serialize_context_t objidx = packed.length - 1; - packed_map.set (obj, objidx); + if (share) packed_map.set (obj, objidx); return objidx; } - void revert (range_t snap) + void revert (snapshot_t snap) + { + assert (snap.current == current); + current->links.shrink (snap.num_links); + revert (snap.head, snap.tail); + } + void revert (char *snap_head, + char *snap_tail) { - assert (snap.head <= head); - assert (tail <= snap.tail); - head = snap.head; - tail = snap.tail; + assert (snap_head <= head); + assert (tail <= snap_tail); + head = snap_head; + tail = snap_tail; discard_stale_objects (); } @@ -260,7 +289,9 @@ struct hb_serialize_context_t } template - void add_link (T &ofs, objidx_t objidx, const void *base = nullptr) + void add_link (T &ofs, objidx_t objidx, + whence_t whence = Head, + unsigned bias = 0) { static_assert (sizeof (T) == 2 || sizeof (T) == 4, ""); @@ -270,18 +301,24 @@ struct hb_serialize_context_t assert (current); assert (current->head <= (const char *) &ofs); - if (!base) - base = current->head; - else - assert (current->head <= (const char *) base); - auto& link = *current->links.push (); + link.is_wide = sizeof (T) == 4; + link.is_signed = hb_is_signed (hb_unwrap_type (T)); + link.whence = (unsigned) whence; link.position = (const char *) &ofs - current->head; - link.bias = (const char *) base - current->head; + link.bias = bias; link.objidx = objidx; } + unsigned to_bias (const void *base) const + { + if (!base) return 0; + assert (current); + assert (current->head <= (const char *) base); + return (const char *) base - current->head; + } + void resolve_links () { if (unlikely (in_error ())) return; @@ -293,20 +330,29 @@ struct hb_serialize_context_t for (const object_t::link_t &link : parent->links) { const object_t* child = packed[link.objidx]; - assert (link.bias <= (size_t) (parent->tail - parent->head)); - unsigned offset = (child->head - parent->head) - link.bias; + if (unlikely (!child)) { err_other_error(); return; } + unsigned offset = 0; + switch ((whence_t) link.whence) { + case Head: offset = child->head - parent->head; break; + case Tail: offset = child->head - parent->tail; break; + case Absolute: offset = (head - start) + (child->head - tail); break; + } - if (link.is_wide) + assert (offset >= link.bias); + offset -= link.bias; + if (link.is_signed) { - auto &off = * ((BEInt *) (parent->head + link.position)); - assert (0 == off); - check_assign (off, offset); + if (link.is_wide) + assign_offset (parent, link, offset); + else + assign_offset (parent, link, offset); } else { - auto &off = * ((BEInt *) (parent->head + link.position)); - assert (0 == off); - check_assign (off, offset); + if (link.is_wide) + assign_offset (parent, link, offset); + else + assign_offset (parent, link, offset); } } } @@ -387,6 +433,12 @@ struct hb_serialize_context_t Type *copy (const Type *src, Ts&&... ds) { return copy (*src, hb_forward (ds)...); } + template + void copy_all (Iterator it, Ts&&... ds) + { for (decltype (*it) _ : it) copy (_, hb_forward (ds)...); } + template hb_serialize_context_t& operator << (const Type &obj) & { embed (obj); return *this; } @@ -441,6 +493,15 @@ struct hb_serialize_context_t (char *) b.arrayZ, free); } + private: + template + void assign_offset (const object_t* parent, const object_t::link_t &link, unsigned offset) + { + auto &off = * ((BEInt *) (parent->head + link.position)); + assert (0 == off); + check_assign (off, offset); + } + public: /* TODO Make private. */ char *start, *head, *tail, *end; unsigned int debug_depth; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-set.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-set.cc index 10638a7e6d5..0551ed80f25 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-set.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-set.cc @@ -69,7 +69,7 @@ hb_set_create () hb_set_t * hb_set_get_empty () { - return const_cast (&Null(hb_set_t)); + return const_cast (&Null (hb_set_t)); } /** @@ -145,9 +145,9 @@ hb_set_get_user_data (hb_set_t *set, * hb_set_allocation_successful: * @set: a set. * - * * - * Return value: + * + * Return value: * * Since: 0.9.2 **/ @@ -161,7 +161,7 @@ hb_set_allocation_successful (const hb_set_t *set) * hb_set_clear: * @set: a set. * - * + * * * Since: 0.9.2 **/ @@ -175,9 +175,9 @@ hb_set_clear (hb_set_t *set) * hb_set_is_empty: * @set: a set. * - * * - * Return value: + * + * Return value: * * Since: 0.9.7 **/ @@ -190,11 +190,11 @@ hb_set_is_empty (const hb_set_t *set) /** * hb_set_has: * @set: a set. - * @codepoint: + * @codepoint: * - * * - * Return value: + * + * Return value: * * Since: 0.9.2 **/ @@ -208,9 +208,9 @@ hb_set_has (const hb_set_t *set, /** * hb_set_add: * @set: a set. - * @codepoint: + * @codepoint: + * * - * * * Since: 0.9.2 **/ @@ -224,10 +224,10 @@ hb_set_add (hb_set_t *set, /** * hb_set_add_range: * @set: a set. - * @first: - * @last: + * @first: + * @last: + * * - * * * Since: 0.9.7 **/ @@ -242,9 +242,9 @@ hb_set_add_range (hb_set_t *set, /** * hb_set_del: * @set: a set. - * @codepoint: + * @codepoint: + * * - * * * Since: 0.9.2 **/ @@ -258,10 +258,10 @@ hb_set_del (hb_set_t *set, /** * hb_set_del_range: * @set: a set. - * @first: - * @last: + * @first: + * @last: + * * - * * * Since: 0.9.7 **/ @@ -278,7 +278,7 @@ hb_set_del_range (hb_set_t *set, * @set: a set. * @other: other set. * - * + * * * Return value: %TRUE if the two sets are equal, %FALSE otherwise. * @@ -312,9 +312,9 @@ hb_set_is_subset (const hb_set_t *set, /** * hb_set_set: * @set: a set. - * @other: + * @other: + * * - * * * Since: 0.9.2 **/ @@ -328,9 +328,9 @@ hb_set_set (hb_set_t *set, /** * hb_set_union: * @set: a set. - * @other: + * @other: + * * - * * * Since: 0.9.2 **/ @@ -344,9 +344,9 @@ hb_set_union (hb_set_t *set, /** * hb_set_intersect: * @set: a set. - * @other: + * @other: + * * - * * * Since: 0.9.2 **/ @@ -360,9 +360,9 @@ hb_set_intersect (hb_set_t *set, /** * hb_set_subtract: * @set: a set. - * @other: + * @other: + * * - * * * Since: 0.9.2 **/ @@ -376,9 +376,9 @@ hb_set_subtract (hb_set_t *set, /** * hb_set_symmetric_difference: * @set: a set. - * @other: + * @other: + * * - * * * Since: 0.9.2 **/ @@ -394,7 +394,7 @@ hb_set_symmetric_difference (hb_set_t *set, * hb_set_invert: * @set: a set. * - * + * * * Since: 0.9.10 * diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-set.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-set.hh index 36d11c0319f..b6e2086a2e3 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-set.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-set.hh @@ -89,6 +89,23 @@ struct hb_set_t } } + void del_range (hb_codepoint_t a, hb_codepoint_t b) + { + elt_t *la = &elt (a); + elt_t *lb = &elt (b); + if (la == lb) + *la &= ~((mask (b) << 1) - mask(a)); + else + { + *la &= mask (a) - 1; + la++; + + memset (la, 0, (char *) lb - (char *) la); + + *lb &= ~((mask (b) << 1) - 1); + } + } + bool is_equal (const page_t *other) const { return 0 == hb_memcmp (&v, &other->v, sizeof (v)); @@ -135,7 +152,11 @@ struct hb_set_t unsigned int i = m / ELT_BITS; unsigned int j = m & ELT_MASK; - const elt_t vv = v[i] & ((elt_t (1) << (j + 1)) - 1); + /* Fancy mask to avoid shifting by elt_t bitsize, which is undefined. */ + const elt_t mask = j < 8 * sizeof (elt_t) - 1 ? + ((elt_t (1) << (j + 1)) - 1) : + (elt_t) -1; + const elt_t vv = v[i] & mask; const elt_t *p = &vv; while (true) { @@ -258,7 +279,7 @@ struct hb_set_t return true; } - void dirty () { population = (unsigned int) -1; } + void dirty () { population = UINT_MAX; } void add (hb_codepoint_t g) { @@ -362,14 +383,56 @@ struct hb_set_t dirty (); page->del (g); } + + private: + void del_pages (int ds, int de) + { + if (ds <= de) + { + unsigned int write_index = 0; + for (unsigned int i = 0; i < page_map.length; i++) + { + int m = (int) page_map[i].major; + if (m < ds || de < m) + page_map[write_index++] = page_map[i]; + } + compact (write_index); + resize (write_index); + } + } + + public: void del_range (hb_codepoint_t a, hb_codepoint_t b) { /* TODO perform op even if !successful. */ - /* TODO Optimize, like add_range(). */ if (unlikely (!successful)) return; - for (unsigned int i = a; i < b + 1; i++) - del (i); + if (unlikely (a > b || a == INVALID || b == INVALID)) return; + dirty (); + unsigned int ma = get_major (a); + unsigned int mb = get_major (b); + /* Delete pages from ds through de if ds <= de. */ + int ds = (a == major_start (ma))? (int) ma: (int) (ma + 1); + int de = (b + 1 == major_start (mb + 1))? (int) mb: ((int) mb - 1); + if (ds > de || (int) ma < ds) + { + page_t *page = page_for (a); + if (page) + { + if (ma == mb) + page->del_range (a, b); + else + page->del_range (a, major_start (ma + 1) - 1); + } + } + if (de < (int) mb && ma != mb) + { + page_t *page = page_for (b); + if (page) + page->del_range (major_start (mb), b); + } + del_pages (ds, de); } + bool get (hb_codepoint_t g) const { const page_t *page = page_for (g); @@ -387,7 +450,10 @@ struct hb_set_t bool operator () (hb_codepoint_t k) const { return has (k); } /* Sink interface. */ - hb_set_t& operator << (hb_codepoint_t v) { add (v); return *this; } + hb_set_t& operator << (hb_codepoint_t v) + { add (v); return *this; } + hb_set_t& operator << (const hb_pair_t& range) + { add_range (range.first, range.second); return *this; } bool intersects (hb_codepoint_t first, hb_codepoint_t last) const { @@ -446,6 +512,34 @@ struct hb_set_t return true; } + void compact (unsigned int length) + { + hb_vector_t old_index_to_page_map_index; + old_index_to_page_map_index.resize(pages.length); + for (uint32_t i = 0; i < old_index_to_page_map_index.length; i++) + old_index_to_page_map_index[i] = 0xFFFFFFFF; + + for (uint32_t i = 0; i < length; i++) + old_index_to_page_map_index[page_map[i].index] = i; + + compact_pages (old_index_to_page_map_index); + } + + void compact_pages (const hb_vector_t& old_index_to_page_map_index) + { + unsigned int write_index = 0; + for (unsigned int i = 0; i < pages.length; i++) + { + if (old_index_to_page_map_index[i] == 0xFFFFFFFF) continue; + + if (write_index < i) + pages[write_index] = pages[i]; + + page_map[old_index_to_page_map_index[i]].index = write_index; + write_index++; + } + } + template void process (const Op& op, const hb_set_t *other) { @@ -459,10 +553,22 @@ struct hb_set_t unsigned int count = 0, newCount = 0; unsigned int a = 0, b = 0; + unsigned int write_index = 0; for (; a < na && b < nb; ) { if (page_map[a].major == other->page_map[b].major) { + if (!Op::passthru_left) + { + // Move page_map entries that we're keeping from the left side set + // to the front of the page_map vector. This isn't necessary if + // passthru_left is set since no left side pages will be removed + // in that case. + if (write_index < a) + page_map[write_index] = page_map[a]; + write_index++; + } + count++; a++; b++; @@ -485,9 +591,16 @@ struct hb_set_t if (Op::passthru_right) count += nb - b; - if (count > pages.length) - if (!resize (count)) - return; + if (!Op::passthru_left) + { + na = write_index; + next_page = write_index; + compact (write_index); + } + + if (!resize (count)) + return; + newCount = count; /* Process in-place backward. */ @@ -662,7 +775,7 @@ struct hb_set_t unsigned int get_population () const { - if (population != (unsigned int) -1) + if (population != UINT_MAX) return population; unsigned int pop = 0; @@ -698,8 +811,15 @@ struct hb_set_t struct iter_t : hb_iter_with_fallback_t { static constexpr bool is_sorted_iterator = true; - iter_t (const hb_set_t &s_ = Null(hb_set_t)) : - s (&s_), v (INVALID), l (s->get_population () + 1) { __next__ (); } + iter_t (const hb_set_t &s_ = Null (hb_set_t), + bool init = true) : s (&s_), v (INVALID), l(0) + { + if (init) + { + l = s->get_population () + 1; + __next__ (); + } + } typedef hb_codepoint_t __item_t__; hb_codepoint_t __item__ () const { return v; } @@ -707,7 +827,7 @@ struct hb_set_t void __next__ () { s->next (&v); if (l) l--; } void __prev__ () { s->previous (&v); } unsigned __len__ () const { return l; } - iter_t end () const { return iter_t (*s); } + iter_t end () const { return iter_t (*s, false); } bool operator != (const iter_t& o) const { return s != o.s || v != o.v; } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shape-plan.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shape-plan.cc index ffd723d0836..666470b4f16 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shape-plan.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shape-plan.cc @@ -257,7 +257,7 @@ bail: hb_shape_plan_t * hb_shape_plan_get_empty () { - return const_cast (&Null(hb_shape_plan_t)); + return const_cast (&Null (hb_shape_plan_t)); } /** diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shaper.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shaper.hh index 79dc5d07e09..b4138a324ff 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shaper.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shaper.hh @@ -102,7 +102,7 @@ template struct hb_shaper_object static void destroy (Type *p) { HB_SHAPER_DATA_DESTROY_FUNC (shaper, object) (p); } \ }; \ \ - static_assert (true, "") /* Require semicolon. */ + static_assert (true, "") /* Require semicolon after. */ template diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-static.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-static.cc index 08a2f21363e..f5b7fa50a04 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-static.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-static.cc @@ -51,6 +51,9 @@ DEFINE_NULL_NAMESPACE_BYTES (AAT, SettingName) = {0xFF,0xFF, 0xFF,0xFF}; const unsigned char _hb_Null_AAT_Lookup[2] = {0xFF, 0xFF}; + +/* hb_face_t */ + unsigned int hb_face_t::load_num_glyphs () const { @@ -73,4 +76,37 @@ hb_face_t::load_upem () const return ret; } + +/* hb_user_data_array_t */ + +bool +hb_user_data_array_t::set (hb_user_data_key_t *key, + void * data, + hb_destroy_func_t destroy, + hb_bool_t replace) +{ + if (!key) + return false; + + if (replace) { + if (!data && !destroy) { + items.remove (key, lock); + return true; + } + } + hb_user_data_item_t item = {key, data, destroy}; + bool ret = !!items.replace_or_insert (item, lock, (bool) replace); + + return ret; +} + +void * +hb_user_data_array_t::get (hb_user_data_key_t *key) +{ + hb_user_data_item_t item = {nullptr, nullptr, nullptr}; + + return items.find (key, &item, lock) ? item.data : nullptr; +} + + #endif diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-string-array.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-string-array.hh index 1c67ab4d7c5..e7ac1192324 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-string-array.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-string-array.hh @@ -37,6 +37,7 @@ #define HB_STRING_ARRAY_TYPE_NAME HB_PASTE(HB_STRING_ARRAY_NAME, _msgstr_t) #define HB_STRING_ARRAY_POOL_NAME HB_PASTE(HB_STRING_ARRAY_NAME, _msgstr) #define HB_STRING_ARRAY_OFFS_NAME HB_PASTE(HB_STRING_ARRAY_NAME, _msgidx) +#define HB_STRING_ARRAY_LENG_NAME HB_PASTE(HB_STRING_ARRAY_NAME, _length) static const union HB_STRING_ARRAY_TYPE_NAME { struct { @@ -66,6 +67,8 @@ static const unsigned int HB_STRING_ARRAY_OFFS_NAME[] = sizeof (HB_STRING_ARRAY_TYPE_NAME) }; +static const unsigned int HB_STRING_ARRAY_LENG_NAME = ARRAY_LENGTH_CONST (HB_STRING_ARRAY_OFFS_NAME) - 1; + static inline hb_bytes_t HB_STRING_ARRAY_NAME (unsigned int i) { @@ -77,5 +80,6 @@ HB_STRING_ARRAY_NAME (unsigned int i) #undef HB_STRING_ARRAY_TYPE_NAME #undef HB_STRING_ARRAY_POOL_NAME #undef HB_STRING_ARRAY_OFFS_NAME +#undef HB_STRING_ARRAY_LENG_NAME #endif /* HB_STRING_ARRAY_HH */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff-common.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff-common.cc index c9a880ad500..04e1db24ace 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff-common.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff-common.cc @@ -108,7 +108,7 @@ hb_plan_subset_cff_fdselect (const hb_subset_plan_t *plan, fdmap.add (fd); hb_set_destroy (set); if (unlikely (fdmap.get_population () != subset_fd_count)) - return false; + return false; } /* update each font dict index stored as "code" in fdselect_ranges */ @@ -158,7 +158,7 @@ serialize_fdselect_3_4 (hb_serialize_context_t *c, { TRACE_SERIALIZE (this); FDSELECT3_4 *p = c->allocate_size (size); - if (unlikely (p == nullptr)) return_trace (false); + if (unlikely (!p)) return_trace (false); p->nRanges () = fdselect_ranges.length; for (unsigned int i = 0; i < fdselect_ranges.length; i++) { @@ -184,7 +184,7 @@ hb_serialize_cff_fdselect (hb_serialize_context_t *c, { TRACE_SERIALIZE (this); FDSelect *p = c->allocate_min (); - if (unlikely (p == nullptr)) return_trace (false); + if (unlikely (!p)) return_trace (false); p->format = fdselect_format; size -= FDSelect::min_size; @@ -194,7 +194,7 @@ hb_serialize_cff_fdselect (hb_serialize_context_t *c, case 0: { FDSelect0 *p = c->allocate_size (size); - if (unlikely (p == nullptr)) return_trace (false); + if (unlikely (!p)) return_trace (false); unsigned int range_index = 0; unsigned int fd = fdselect_ranges[range_index++].code; for (unsigned int i = 0; i < num_glyphs; i++) diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff-common.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff-common.hh index 3c66119603f..3400892830c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff-common.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff-common.hh @@ -44,7 +44,7 @@ struct str_encoder_t void encode_byte (unsigned char b) { - if (unlikely (buff.push (b) == &Crap(unsigned char))) + if (unlikely (buff.push (b) == &Crap (unsigned char))) set_error (); } @@ -128,26 +128,17 @@ struct str_encoder_t bool error; }; -struct cff_sub_table_offsets_t { - cff_sub_table_offsets_t () : privateDictsOffset (0) +struct cff_sub_table_info_t { + cff_sub_table_info_t () + : fd_array_link (0), + char_strings_link (0) { - topDictInfo.init (); - FDSelectInfo.init (); - FDArrayInfo.init (); - charStringsInfo.init (); - globalSubrsInfo.init (); - localSubrsInfos.init (); + fd_select.init (); } - ~cff_sub_table_offsets_t () { localSubrsInfos.fini (); } - - table_info_t topDictInfo; - table_info_t FDSelectInfo; - table_info_t FDArrayInfo; - table_info_t charStringsInfo; - unsigned int privateDictsOffset; - table_info_t globalSubrsInfo; - hb_vector_t localSubrsInfos; + table_info_t fd_select; + objidx_t fd_array_link; + objidx_t char_strings_link; }; template @@ -155,40 +146,26 @@ struct cff_top_dict_op_serializer_t : op_serializer_t { bool serialize (hb_serialize_context_t *c, const OPSTR &opstr, - const cff_sub_table_offsets_t &offsets) const + const cff_sub_table_info_t &info) const { TRACE_SERIALIZE (this); switch (opstr.op) { case OpCode_CharStrings: - return_trace (FontDict::serialize_offset4_op(c, opstr.op, offsets.charStringsInfo.offset)); + return_trace (FontDict::serialize_link4_op(c, opstr.op, info.char_strings_link, whence_t::Absolute)); case OpCode_FDArray: - return_trace (FontDict::serialize_offset4_op(c, opstr.op, offsets.FDArrayInfo.offset)); + return_trace (FontDict::serialize_link4_op(c, opstr.op, info.fd_array_link, whence_t::Absolute)); case OpCode_FDSelect: - return_trace (FontDict::serialize_offset4_op(c, opstr.op, offsets.FDSelectInfo.offset)); + return_trace (FontDict::serialize_link4_op(c, opstr.op, info.fd_select.link, whence_t::Absolute)); default: return_trace (copy_opstr (c, opstr)); } return_trace (true); } - - unsigned int calculate_serialized_size (const OPSTR &opstr) const - { - switch (opstr.op) - { - case OpCode_CharStrings: - case OpCode_FDArray: - case OpCode_FDSelect: - return OpCode_Size (OpCode_longintdict) + 4 + OpCode_Size (opstr.op); - - default: - return opstr.str.length; - } - } }; struct cff_font_dict_op_serializer_t : op_serializer_t @@ -202,33 +179,17 @@ struct cff_font_dict_op_serializer_t : op_serializer_t if (opstr.op == OpCode_Private) { /* serialize the private dict size & offset as 2-byte & 4-byte integers */ - if (unlikely (!UnsizedByteStr::serialize_int2 (c, privateDictInfo.size) || - !UnsizedByteStr::serialize_int4 (c, privateDictInfo.offset))) - return_trace (false); - - /* serialize the opcode */ - HBUINT8 *p = c->allocate_size (1); - if (unlikely (p == nullptr)) return_trace (false); - *p = OpCode_Private; - - return_trace (true); + return_trace (UnsizedByteStr::serialize_int2 (c, privateDictInfo.size) && + Dict::serialize_link4_op (c, opstr.op, privateDictInfo.link, whence_t::Absolute)); } else { HBUINT8 *d = c->allocate_size (opstr.str.length); - if (unlikely (d == nullptr)) return_trace (false); + if (unlikely (!d)) return_trace (false); memcpy (d, &opstr.str[0], opstr.str.length); } return_trace (true); } - - unsigned int calculate_serialized_size (const op_str_t &opstr) const - { - if (opstr.op == OpCode_Private) - return OpCode_Size (OpCode_longintdict) + 4 + OpCode_Size (OpCode_shortint) + 2 + OpCode_Size (OpCode_Private); - else - return opstr.str.length; - } }; struct cff_private_dict_op_serializer_t : op_serializer_t @@ -238,7 +199,7 @@ struct cff_private_dict_op_serializer_t : op_serializer_t bool serialize (hb_serialize_context_t *c, const op_str_t &opstr, - const unsigned int subrsOffset) const + objidx_t subrs_link) const { TRACE_SERIALIZE (this); @@ -246,31 +207,15 @@ struct cff_private_dict_op_serializer_t : op_serializer_t return true; if (opstr.op == OpCode_Subrs) { - if (desubroutinize || (subrsOffset == 0)) + if (desubroutinize || !subrs_link) return_trace (true); else - return_trace (FontDict::serialize_offset2_op (c, opstr.op, subrsOffset)); + return_trace (FontDict::serialize_link2_op (c, opstr.op, subrs_link)); } else return_trace (copy_opstr (c, opstr)); } - unsigned int calculate_serialized_size (const op_str_t &opstr, - bool has_localsubr=true) const - { - if (drop_hints && dict_opset_t::is_hint_op (opstr.op)) - return 0; - if (opstr.op == OpCode_Subrs) - { - if (desubroutinize || !has_localsubr) - return 0; - else - return OpCode_Size (OpCode_shortint) + 2 + OpCode_Size (opstr.op); - } - else - return opstr.str.length; - } - protected: const bool desubroutinize; const bool drop_hints; @@ -300,14 +245,14 @@ struct subr_flattener_t hb_codepoint_t glyph; if (!plan->old_gid_for_new_gid (i, &glyph)) { - /* add an endchar only charstring for a missing glyph if CFF1 */ - if (endchar_op != OpCode_Invalid) flat_charstrings[i].push (endchar_op); - continue; + /* add an endchar only charstring for a missing glyph if CFF1 */ + if (endchar_op != OpCode_Invalid) flat_charstrings[i].push (endchar_op); + continue; } const byte_str_t str = (*acc.charStrings)[glyph]; unsigned int fd = acc.fdSelect->get_fd (glyph); if (unlikely (fd >= acc.fdCount)) - return false; + return false; cs_interpreter_t interp; interp.env.init (str, acc, fd); flatten_param_t param = { flat_charstrings[i], plan->drop_hints }; @@ -456,7 +401,7 @@ struct parsed_cs_str_t : parsed_values_t bool vsindex_dropped; bool has_prefix_; op_code_t prefix_op_; - number_t prefix_num_; + number_t prefix_num_; private: typedef parsed_values_t SUPER; @@ -516,19 +461,19 @@ struct subr_subset_param_t template void set_current_str (ENV &env, bool calling) { - parsed_cs_str_t *parsed_str = get_parsed_str_for_context (env.context); - if (likely (parsed_str != nullptr)) + parsed_cs_str_t *parsed_str = get_parsed_str_for_context (env.context); + if (unlikely (!parsed_str)) { - /* If the called subroutine is parsed partially but not completely yet, - * it must be because we are calling it recursively. - * Handle it as an error. */ - if (unlikely (calling && !parsed_str->is_parsed () && (parsed_str->values.length > 0))) - env.set_error (); - else - current_parsed_str = parsed_str; + env.set_error (); + return; } - else + /* If the called subroutine is parsed partially but not completely yet, + * it must be because we are calling it recursively. + * Handle it as an error. */ + if (unlikely (calling && !parsed_str->is_parsed () && (parsed_str->values.length > 0))) env.set_error (); + else + current_parsed_str = parsed_str; } parsed_cs_str_t *current_parsed_str; @@ -659,11 +604,11 @@ struct subr_subsetter_t { hb_codepoint_t glyph; if (!plan->old_gid_for_new_gid (i, &glyph)) - continue; + continue; const byte_str_t str = (*acc.charStrings)[glyph]; unsigned int fd = acc.fdSelect->get_fd (glyph); if (unlikely (fd >= acc.fdCount)) - return false; + return false; cs_interpreter_t interp; interp.env.init (str, acc, fd); @@ -677,8 +622,8 @@ struct subr_subsetter_t if (unlikely (!interp.interpret (param))) return false; - /* finalize parsed string esp. copy CFF1 width or CFF2 vsindex to the parsed charstring for encoding */ - SUBSETTER::finalize_parsed_str (interp.env, param, parsed_charstrings[i]); + /* complete parsed string esp. copy CFF1 width or CFF2 vsindex to the parsed charstring for encoding */ + SUBSETTER::complete_parsed_str (interp.env, param, parsed_charstrings[i]); } if (plan->drop_hints) @@ -740,13 +685,13 @@ struct subr_subsetter_t hb_codepoint_t glyph; if (!plan->old_gid_for_new_gid (i, &glyph)) { - /* add an endchar only charstring for a missing glyph if CFF1 */ - if (endchar_op != OpCode_Invalid) buffArray[i].push (endchar_op); - continue; + /* add an endchar only charstring for a missing glyph if CFF1 */ + if (endchar_op != OpCode_Invalid) buffArray[i].push (endchar_op); + continue; } unsigned int fd = acc.fdSelect->get_fd (glyph); if (unlikely (fd >= acc.fdCount)) - return false; + return false; if (unlikely (!encode_str (parsed_charstrings[i], fd, buffArray[i]))) return false; } @@ -900,11 +845,11 @@ struct subr_subsetter_t { parsed_cs_op_t &csop = str.values[pos]; if (csop.op == OpCode_return) - break; + break; if (!csop.for_drop ()) { - drop.all_dropped = false; - break; + drop.all_dropped = false; + break; } } @@ -986,7 +931,7 @@ struct subr_subsetter_t } protected: - const ACC &acc; + const ACC &acc; const hb_subset_plan_t *plan; subr_closures_t closures; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff1.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff1.cc index e9e075749e7..f3ed518f7e1 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff1.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff1.cc @@ -64,29 +64,25 @@ struct remap_sid_t : hb_inc_bimap_t static unsigned int unoffset_sid (unsigned int sid) { return sid - num_std_strings; } }; -struct cff1_sub_table_offsets_t : cff_sub_table_offsets_t +struct cff1_sub_table_info_t : cff_sub_table_info_t { - cff1_sub_table_offsets_t () - : cff_sub_table_offsets_t (), - nameIndexOffset (0), - encodingOffset (0) - { - stringIndexInfo.init (); - charsetInfo.init (); + cff1_sub_table_info_t () + : cff_sub_table_info_t (), + encoding_link (0), + charset_link (0) + { privateDictInfo.init (); } - unsigned int nameIndexOffset; - table_info_t stringIndexInfo; - unsigned int encodingOffset; - table_info_t charsetInfo; + objidx_t encoding_link; + objidx_t charset_link; table_info_t privateDictInfo; }; /* a copy of a parsed out cff1_top_dict_values_t augmented with additional operators */ struct cff1_top_dict_values_mod_t : cff1_top_dict_values_t { - void init (const cff1_top_dict_values_t *base_= &Null(cff1_top_dict_values_t)) + void init (const cff1_top_dict_values_t *base_= &Null (cff1_top_dict_values_t)) { SUPER::init (); base = base_; @@ -117,13 +113,13 @@ struct cff1_top_dict_values_mod_t : cff1_top_dict_values_t struct top_dict_modifiers_t { - top_dict_modifiers_t (const cff1_sub_table_offsets_t &offsets_, + top_dict_modifiers_t (const cff1_sub_table_info_t &info_, const unsigned int (&nameSIDs_)[name_dict_values_t::ValCount]) - : offsets (offsets_), + : info (info_), nameSIDs (nameSIDs_) {} - const cff1_sub_table_offsets_t &offsets; + const cff1_sub_table_info_t &info; const unsigned int (&nameSIDs)[name_dict_values_t::ValCount]; }; @@ -139,22 +135,20 @@ struct cff1_top_dict_op_serializer_t : cff_top_dict_op_serializer_tallocate_size (1); - if (unlikely (p == nullptr)) return_trace (false); - *p = OpCode_Private; - } - break; + return_trace (UnsizedByteStr::serialize_int2 (c, mod.info.privateDictInfo.size) && + Dict::serialize_link4_op (c, op, mod.info.privateDictInfo.link, whence_t::Absolute)); case OpCode_version: case OpCode_Notice: @@ -165,7 +159,7 @@ struct cff1_top_dict_op_serializer_t : cff_top_dict_op_serializer_t::serialize (c, opstr, mod.offsets)); + return_trace (cff_top_dict_op_serializer_t::serialize (c, opstr, mod.info)); } return_trace (true); } - unsigned int calculate_serialized_size (const cff1_top_dict_val_t &opstr) const - { - op_code_t op = opstr.op; - switch (op) - { - case OpCode_charset: - case OpCode_Encoding: - return OpCode_Size (OpCode_longintdict) + 4 + OpCode_Size (op); - - case OpCode_Private: - return OpCode_Size (OpCode_longintdict) + 4 + OpCode_Size (OpCode_shortint) + 2 + OpCode_Size (OpCode_Private); - - case OpCode_version: - case OpCode_Notice: - case OpCode_Copyright: - case OpCode_FullName: - case OpCode_FamilyName: - case OpCode_Weight: - case OpCode_PostScript: - case OpCode_BaseFontName: - case OpCode_FontName: - return OpCode_Size (OpCode_shortint) + 2 + OpCode_Size (op); - - case OpCode_ROS: - return ((OpCode_Size (OpCode_shortint) + 2) * 2) + (opstr.str.length - opstr.last_arg_offset)/* supplement + op */; - - default: - return cff_top_dict_op_serializer_t::calculate_serialized_size (opstr); - } - } -}; - -struct font_dict_values_mod_t -{ - void init (const cff1_font_dict_values_t *base_, - unsigned int fontName_, - const table_info_t &privateDictInfo_) - { - base = base_; - fontName = fontName_; - privateDictInfo = privateDictInfo_; - } - - unsigned get_count () const { return base->get_count (); } - - const op_str_t &operator [] (unsigned int i) const { return (*base)[i]; } - - const cff1_font_dict_values_t *base; - table_info_t privateDictInfo; - unsigned int fontName; }; struct cff1_font_dict_op_serializer_t : cff_font_dict_op_serializer_t { bool serialize (hb_serialize_context_t *c, const op_str_t &opstr, - const font_dict_values_mod_t &mod) const + const cff1_font_dict_values_mod_t &mod) const { TRACE_SERIALIZE (this); if (opstr.op == OpCode_FontName) - return_trace (FontDict::serialize_uint2_op (c, opstr.op, mod.fontName)); + return_trace (FontDict::serialize_int2_op (c, opstr.op, mod.fontName)); else return_trace (SUPER::serialize (c, opstr, mod.privateDictInfo)); } - unsigned int calculate_serialized_size (const op_str_t &opstr) const - { - if (opstr.op == OpCode_FontName) - return OpCode_Size (OpCode_shortint) + 2 + OpCode_Size (OpCode_FontName); - else - return SUPER::calculate_serialized_size (opstr); - } - private: typedef cff_font_dict_op_serializer_t SUPER; }; @@ -331,7 +268,7 @@ struct cff1_cs_opset_flatten_t : cff1_cs_opset_t { /* replace the first glyph ID in the "glyph" field each range with a nLeft value */ - bool finalize (unsigned int last_glyph) + bool complete (unsigned int last_glyph) { bool two_byte = false; for (unsigned int i = (*this).length; i > 0; i--) @@ -402,7 +339,7 @@ struct cff1_subr_subsetter_t : subr_subsetter_tset_parsed (); for (unsigned int i = 0; i < env.callStack.get_count (); i++) { - parsed_cs_str_t *parsed_str = param.get_parsed_str_for_context (env.callStack[i]); - if (likely (parsed_str != nullptr)) + parsed_cs_str_t *parsed_str = param.get_parsed_str_for_context (env.callStack[i]); + if (likely (parsed_str)) parsed_str->set_parsed (); else env.set_error (); @@ -425,16 +362,13 @@ struct cff1_subr_subsetter_t : subr_subsetter_told_gid_for_new_gid (glyph, &old_glyph)) { - /* Retain the code for the old missing glyph ID */ + /* Retain the code for the old missing glyph ID */ old_glyph = glyph; } code = acc.glyph_to_code (old_glyph); @@ -501,7 +434,7 @@ struct cff_subset_plan { } last_code = code; - if (encoding != &Null(Encoding)) + if (encoding != &Null (Encoding)) { hb_codepoint_t sid = acc.glyph_to_sid (old_glyph); encoding->get_supplement_codes (sid, supp_codes); @@ -515,7 +448,7 @@ struct cff_subset_plan { } supp_codes.fini (); - subset_enc_code_ranges.finalize (glyph); + subset_enc_code_ranges.complete (glyph); assert (subset_enc_num_codes <= 0xFF); size0 = Encoding0::min_size + HBUINT8::static_size * subset_enc_num_codes; @@ -525,14 +458,9 @@ struct cff_subset_plan { subset_enc_format = 0; else subset_enc_format = 1; - - return Encoding::calculate_serialized_size ( - subset_enc_format, - subset_enc_format? subset_enc_code_ranges.length: subset_enc_num_codes, - subset_enc_supp_codes.length); } - unsigned int plan_subset_charset (const OT::cff1::accelerator_subset_t &acc, hb_subset_plan_t *plan) + void plan_subset_charset (const OT::cff1::accelerator_subset_t &acc, hb_subset_plan_t *plan) { unsigned int size0, size_ranges; hb_codepoint_t sid, last_sid = CFF_UNDEF_CODE; @@ -544,7 +472,7 @@ struct cff_subset_plan { hb_codepoint_t old_glyph; if (!plan->old_gid_for_new_gid (glyph, &old_glyph)) { - /* Retain the SID for the old missing glyph ID */ + /* Retain the SID for the old missing glyph ID */ old_glyph = glyph; } sid = acc.glyph_to_sid (old_glyph); @@ -560,7 +488,7 @@ struct cff_subset_plan { last_sid = sid; } - bool two_byte = subset_charset_ranges.finalize (glyph); + bool two_byte = subset_charset_ranges.complete (glyph); size0 = Charset0::min_size + HBUINT16::static_size * (plan->num_output_glyphs () - 1); if (!two_byte) @@ -574,10 +502,6 @@ struct cff_subset_plan { subset_charset_format = 1; else subset_charset_format = 2; - - return Charset::calculate_serialized_size ( - subset_charset_format, - subset_charset_format? subset_charset_ranges.length: plan->num_output_glyphs ()); } bool collect_sids_in_dicts (const OT::cff1::accelerator_subset_t &acc) @@ -594,7 +518,7 @@ struct cff_subset_plan { } } - if (acc.fdArray != &Null(CFF1FDArray)) + if (acc.fdArray != &Null (CFF1FDArray)) for (unsigned int i = 0; i < orig_fdcount; i++) if (fdmap.has (i)) (void)sidmap.add (acc.fontDicts[i].fontName); @@ -609,7 +533,6 @@ struct cff_subset_plan { hb_codepoint_t old_glyph; if (!plan->old_gid_for_new_gid (0, &old_glyph) || (old_glyph != 0)) return false; - final_size = 0; num_glyphs = plan->num_output_glyphs (); orig_fdcount = acc.fdCount; drop_hints = plan->drop_hints; @@ -620,7 +543,7 @@ struct cff_subset_plan { for (hb_codepoint_t new_glyph = 0; new_glyph < plan->num_output_glyphs (); new_glyph++) { if (!plan->old_gid_for_new_gid(new_glyph, &old_glyph)) - continue; + continue; if (new_glyph != old_glyph) { gid_renum = true; break; @@ -630,13 +553,6 @@ struct cff_subset_plan { subset_charset = gid_renum || !acc.is_predef_charset (); subset_encoding = !acc.is_CID() && !acc.is_predef_encoding (); - /* CFF header */ - final_size += OT::cff1::static_size; - - /* Name INDEX */ - offsets.nameIndexOffset = final_size; - final_size += acc.nameIndex->get_size (); - /* top dict INDEX */ { /* Add encoding/charset to a (copy of) top dict as necessary */ @@ -650,25 +566,16 @@ struct cff_subset_plan { if (need_to_add_set) topdict_mod.add_op (OpCode_charset); } - offsets.topDictInfo.offset = final_size; - cff1_top_dict_op_serializer_t topSzr; - unsigned int topDictSize = TopDict::calculate_serialized_size (topdict_mod, topSzr); - offsets.topDictInfo.offSize = calcOffSize(topDictSize); - if (unlikely (offsets.topDictInfo.offSize > 4)) - return false; - final_size += CFF1IndexOf::calculate_serialized_size - (offsets.topDictInfo.offSize, - &topdict_mod, 1, topdict_sizes, topSzr); } /* Determine re-mapping of font index as fdmap among other info */ - if (acc.fdSelect != &Null(CFF1FDSelect)) + if (acc.fdSelect != &Null (CFF1FDSelect)) { if (unlikely (!hb_plan_subset_cff_fdselect (plan, orig_fdcount, *acc.fdSelect, subset_fdcount, - offsets.FDSelectInfo.size, + info.fd_select.size, subset_fdselect_format, subset_fdselect_ranges, fdmap))) @@ -683,18 +590,11 @@ struct cff_subset_plan { if (unlikely (!collect_sids_in_dicts (acc))) return false; if (unlikely (sidmap.get_population () > 0x8000)) /* assumption: a dict won't reference that many strings */ - return false; - if (subset_charset) - offsets.charsetInfo.size = plan_subset_charset (acc, plan); + return false; - topdict_mod.reassignSIDs (sidmap); - } + if (subset_charset) plan_subset_charset (acc, plan); - /* String INDEX */ - { - offsets.stringIndexInfo.offset = final_size; - offsets.stringIndexInfo.size = acc.stringIndex->calculate_serialized_size (offsets.stringIndexInfo.offSize, sidmap); - final_size += offsets.stringIndexInfo.size; + topdict_mod.reassignSIDs (sidmap); } if (desubroutinize) @@ -704,9 +604,6 @@ struct cff_subset_plan { flattener(acc, plan); if (!flattener.flatten (subset_charstrings)) return false; - - /* no global/local subroutines */ - offsets.globalSubrsInfo.size = CFF1Subrs::calculate_serialized_size (1, 0, 0); } else { @@ -723,131 +620,48 @@ struct cff_subset_plan { if (!subr_subsetter.encode_globalsubrs (subset_globalsubrs)) return false; - /* global subrs */ - unsigned int dataSize = subset_globalsubrs.total_size (); - offsets.globalSubrsInfo.offSize = calcOffSize (dataSize); - if (unlikely (offsets.globalSubrsInfo.offSize > 4)) - return false; - offsets.globalSubrsInfo.size = CFF1Subrs::calculate_serialized_size (offsets.globalSubrsInfo.offSize, subset_globalsubrs.length, dataSize); - /* local subrs */ - if (!offsets.localSubrsInfos.resize (orig_fdcount)) - return false; if (!subset_localsubrs.resize (orig_fdcount)) return false; for (unsigned int fd = 0; fd < orig_fdcount; fd++) { subset_localsubrs[fd].init (); - offsets.localSubrsInfos[fd].init (); if (fdmap.has (fd)) { if (!subr_subsetter.encode_localsubrs (fd, subset_localsubrs[fd])) return false; - - unsigned int dataSize = subset_localsubrs[fd].total_size (); - if (dataSize > 0) - { - offsets.localSubrsInfos[fd].offset = final_size; - offsets.localSubrsInfos[fd].offSize = calcOffSize (dataSize); - if (unlikely (offsets.localSubrsInfos[fd].offSize > 4)) - return false; - offsets.localSubrsInfos[fd].size = CFF1Subrs::calculate_serialized_size (offsets.localSubrsInfos[fd].offSize, subset_localsubrs[fd].length, dataSize); - } } } } - /* global subrs */ - offsets.globalSubrsInfo.offset = final_size; - final_size += offsets.globalSubrsInfo.size; - /* Encoding */ - if (!subset_encoding) - offsets.encodingOffset = acc.topDict.EncodingOffset; - else - { - offsets.encodingOffset = final_size; - final_size += plan_subset_encoding (acc, plan); - } - - /* Charset */ - if (!subset_charset && acc.is_predef_charset ()) - offsets.charsetInfo.offset = acc.topDict.CharsetOffset; - else - offsets.charsetInfo.offset = final_size; - final_size += offsets.charsetInfo.size; - - /* FDSelect */ - if (acc.fdSelect != &Null(CFF1FDSelect)) - { - offsets.FDSelectInfo.offset = final_size; - final_size += offsets.FDSelectInfo.size; - } - - /* FDArray (FDIndex) */ - if (acc.fdArray != &Null(CFF1FDArray)) { - offsets.FDArrayInfo.offset = final_size; - cff1_font_dict_op_serializer_t fontSzr; - unsigned int dictsSize = 0; - for (unsigned int i = 0; i < acc.fontDicts.length; i++) - if (fdmap.has (i)) - dictsSize += FontDict::calculate_serialized_size (acc.fontDicts[i], fontSzr); - - offsets.FDArrayInfo.offSize = calcOffSize (dictsSize); - if (unlikely (offsets.FDArrayInfo.offSize > 4)) - return false; - final_size += CFF1Index::calculate_serialized_size (offsets.FDArrayInfo.offSize, subset_fdcount, dictsSize); - } - - /* CharStrings */ - { - offsets.charStringsInfo.offset = final_size; - unsigned int dataSize = subset_charstrings.total_size (); - offsets.charStringsInfo.offSize = calcOffSize (dataSize); - if (unlikely (offsets.charStringsInfo.offSize > 4)) - return false; - final_size += CFF1CharStrings::calculate_serialized_size (offsets.charStringsInfo.offSize, plan->num_output_glyphs (), dataSize); - } + if (subset_encoding) + plan_subset_encoding (acc, plan); /* private dicts & local subrs */ - offsets.privateDictInfo.offset = final_size; - for (unsigned int i = 0; i < orig_fdcount; i++) + if (!acc.is_CID ()) + fontdicts_mod.push (cff1_font_dict_values_mod_t ()); + else { - if (fdmap.has (i)) - { - bool has_localsubrs = offsets.localSubrsInfos[i].size > 0; - cff_private_dict_op_serializer_t privSzr (desubroutinize, plan->drop_hints); - unsigned int priv_size = PrivateDict::calculate_serialized_size (acc.privateDicts[i], privSzr, has_localsubrs); - table_info_t privInfo = { final_size, priv_size, 0 }; - font_dict_values_mod_t fontdict_mod; - if (!acc.is_CID ()) - fontdict_mod.init ( &Null(cff1_font_dict_values_t), CFF_UNDEF_SID, privInfo ); - else - fontdict_mod.init ( &acc.fontDicts[i], sidmap[acc.fontDicts[i].fontName], privInfo ); - fontdicts_mod.push (fontdict_mod); - final_size += privInfo.size; - - if (!plan->desubroutinize && has_localsubrs) + + hb_iter (acc.fontDicts) + | hb_filter ([&] (const cff1_font_dict_values_t &_) + { return fdmap.has (&_ - &acc.fontDicts[0]); } ) + | hb_map ([&] (const cff1_font_dict_values_t &_) { - offsets.localSubrsInfos[i].offset = final_size; - final_size += offsets.localSubrsInfos[i].size; - } - } + cff1_font_dict_values_mod_t mod; + mod.init (&_, sidmap[_.fontName]); + return mod; + }) + | hb_sink (fontdicts_mod) + ; } - if (!acc.is_CID ()) - offsets.privateDictInfo = fontdicts_mod[0].privateDictInfo; - return ((subset_charstrings.length == plan->num_output_glyphs ()) && (fontdicts_mod.length == subset_fdcount)); } - unsigned int get_final_size () const { return final_size; } - - unsigned int final_size; - hb_vector_t topdict_sizes; cff1_top_dict_values_mod_t topdict_mod; - cff1_sub_table_offsets_t offsets; + cff1_sub_table_info_t info; unsigned int num_glyphs; unsigned int orig_fdcount; @@ -862,7 +676,7 @@ struct cff_subset_plan { str_buff_vec_t subset_charstrings; str_buff_vec_t subset_globalsubrs; hb_vector_t subset_localsubrs; - hb_vector_t fontdicts_mod; + hb_vector_t fontdicts_mod; bool drop_hints; @@ -883,91 +697,95 @@ struct cff_subset_plan { bool desubroutinize; }; -static inline bool _write_cff1 (const cff_subset_plan &plan, - const OT::cff1::accelerator_subset_t &acc, - unsigned int num_glyphs, - unsigned int dest_sz, - void *dest) +static bool _serialize_cff1 (hb_serialize_context_t *c, + cff_subset_plan &plan, + const OT::cff1::accelerator_subset_t &acc, + unsigned int num_glyphs) { - hb_serialize_context_t c (dest, dest_sz); - - OT::cff1 *cff = c.start_serialize (); - if (unlikely (!c.extend_min (*cff))) - return false; - - /* header */ - cff->version.major = 0x01; - cff->version.minor = 0x00; - cff->nameIndex = cff->min_size; - cff->offSize = 4; /* unused? */ - - /* name INDEX */ + /* private dicts & local subrs */ + for (int i = (int)acc.privateDicts.length; --i >= 0 ;) { - assert (cff->nameIndex == (unsigned) (c.head - c.start)); - CFF1NameIndex *dest = c.start_embed (); - if (unlikely (dest == nullptr)) return false; - if (unlikely (!dest->serialize (&c, *acc.nameIndex))) + if (plan.fdmap.has (i)) { - DEBUG_MSG (SUBSET, nullptr, "failed to serialize CFF name INDEX"); - return false; - } - } + objidx_t subrs_link = 0; + if (plan.subset_localsubrs[i].length > 0) + { + CFF1Subrs *dest = c->start_embed (); + if (unlikely (!dest)) return false; + c->push (); + if (likely (dest && dest->serialize (c, plan.subset_localsubrs[i]))) + subrs_link = c->pop_pack (); + else + { + c->pop_discard (); + return false; + } + } - /* top dict INDEX */ - { - assert (plan.offsets.topDictInfo.offset == (unsigned) (c.head - c.start)); - CFF1IndexOf *dest = c.start_embed< CFF1IndexOf> (); - if (dest == nullptr) return false; - cff1_top_dict_op_serializer_t topSzr; - top_dict_modifiers_t modifier (plan.offsets, plan.topDictModSIDs); - if (unlikely (!dest->serialize (&c, plan.offsets.topDictInfo.offSize, - &plan.topdict_mod, 1, - plan.topdict_sizes, topSzr, modifier))) - { - DEBUG_MSG (SUBSET, nullptr, "failed to serialize CFF top dict"); - return false; + PrivateDict *pd = c->start_embed (); + if (unlikely (!pd)) return false; + c->push (); + cff_private_dict_op_serializer_t privSzr (plan.desubroutinize, plan.drop_hints); + /* N.B. local subrs immediately follows its corresponding private dict. i.e., subr offset == private dict size */ + if (likely (pd->serialize (c, acc.privateDicts[i], privSzr, subrs_link))) + { + unsigned fd = plan.fdmap[i]; + plan.fontdicts_mod[fd].privateDictInfo.size = c->length (); + plan.fontdicts_mod[fd].privateDictInfo.link = c->pop_pack (); + } + else + { + c->pop_discard (); + return false; + } } } - /* String INDEX */ + if (!acc.is_CID ()) + plan.info.privateDictInfo = plan.fontdicts_mod[0].privateDictInfo; + + /* CharStrings */ { - assert (plan.offsets.stringIndexInfo.offset == (unsigned) (c.head - c.start)); - CFF1StringIndex *dest = c.start_embed (); - if (unlikely (dest == nullptr)) return false; - if (unlikely (!dest->serialize (&c, *acc.stringIndex, plan.offsets.stringIndexInfo.offSize, plan.sidmap))) + CFF1CharStrings *cs = c->start_embed (); + if (unlikely (!cs)) return false; + c->push (); + if (likely (cs->serialize (c, plan.subset_charstrings))) + plan.info.char_strings_link = c->pop_pack (); + else { - DEBUG_MSG (SUBSET, nullptr, "failed to serialize CFF string INDEX"); + c->pop_discard (); return false; } } - /* global subrs */ + /* FDArray (FD Index) */ + if (acc.fdArray != &Null (CFF1FDArray)) { - assert (plan.offsets.globalSubrsInfo.offset != 0); - assert (plan.offsets.globalSubrsInfo.offset == (unsigned) (c.head - c.start)); - - CFF1Subrs *dest = c.start_embed (); - if (unlikely (dest == nullptr)) return false; - if (unlikely (!dest->serialize (&c, plan.offsets.globalSubrsInfo.offSize, plan.subset_globalsubrs))) + CFF1FDArray *fda = c->start_embed (); + if (unlikely (!fda)) return false; + c->push (); + cff1_font_dict_op_serializer_t fontSzr; + auto it = + hb_zip (+ hb_iter (plan.fontdicts_mod), + hb_iter (plan.fontdicts_mod)); + if (likely (fda->serialize (c, it, fontSzr))) + plan.info.fd_array_link = c->pop_pack (false); + else { - DEBUG_MSG (SUBSET, nullptr, "failed to serialize global subroutines"); + c->pop_discard (); return false; } } - /* Encoding */ - if (plan.subset_encoding) + /* FDSelect */ + if (acc.fdSelect != &Null (CFF1FDSelect)) { - assert (plan.offsets.encodingOffset == (unsigned) (c.head - c.start)); - Encoding *dest = c.start_embed (); - if (unlikely (dest == nullptr)) return false; - if (unlikely (!dest->serialize (&c, - plan.subset_enc_format, - plan.subset_enc_num_codes, - plan.subset_enc_code_ranges, - plan.subset_enc_supp_codes))) + c->push (); + if (likely (hb_serialize_cff_fdselect (c, num_glyphs, *acc.fdSelect, acc.fdCount, + plan.subset_fdselect_format, plan.info.fd_select.size, + plan.subset_fdselect_ranges))) + plan.info.fd_select.link = c->pop_pack (); + else { - DEBUG_MSG (SUBSET, nullptr, "failed to serialize Encoding"); + c->pop_discard (); return false; } } @@ -975,129 +793,120 @@ static inline bool _write_cff1 (const cff_subset_plan &plan, /* Charset */ if (plan.subset_charset) { - assert (plan.offsets.charsetInfo.offset == (unsigned) (c.head - c.start)); - Charset *dest = c.start_embed (); - if (unlikely (dest == nullptr)) return false; - if (unlikely (!dest->serialize (&c, - plan.subset_charset_format, - plan.num_glyphs, - plan.subset_charset_ranges))) + Charset *dest = c->start_embed (); + if (unlikely (!dest)) return false; + c->push (); + if (likely (dest->serialize (c, + plan.subset_charset_format, + plan.num_glyphs, + plan.subset_charset_ranges))) + plan.info.charset_link = c->pop_pack (); + else { - DEBUG_MSG (SUBSET, nullptr, "failed to serialize Charset"); + c->pop_discard (); return false; } } - /* FDSelect */ - if (acc.fdSelect != &Null(CFF1FDSelect)) + /* Encoding */ + if (plan.subset_encoding) { - assert (plan.offsets.FDSelectInfo.offset == (unsigned) (c.head - c.start)); - - if (unlikely (!hb_serialize_cff_fdselect (&c, num_glyphs, *acc.fdSelect, acc.fdCount, - plan.subset_fdselect_format, plan.offsets.FDSelectInfo.size, - plan.subset_fdselect_ranges))) + Encoding *dest = c->start_embed (); + if (unlikely (!dest)) return false; + c->push (); + if (likely (dest->serialize (c, + plan.subset_enc_format, + plan.subset_enc_num_codes, + plan.subset_enc_code_ranges, + plan.subset_enc_supp_codes))) + plan.info.encoding_link = c->pop_pack (); + else { - DEBUG_MSG (SUBSET, nullptr, "failed to serialize CFF subset FDSelect"); + c->pop_discard (); return false; } } - /* FDArray (FD Index) */ - if (acc.fdArray != &Null(CFF1FDArray)) + /* global subrs */ { - assert (plan.offsets.FDArrayInfo.offset == (unsigned) (c.head - c.start)); - CFF1FDArray *fda = c.start_embed (); - if (unlikely (fda == nullptr)) return false; - cff1_font_dict_op_serializer_t fontSzr; - if (unlikely (!fda->serialize (&c, plan.offsets.FDArrayInfo.offSize, - plan.fontdicts_mod, - fontSzr))) + c->push (); + CFF1Subrs *dest = c->start_embed (); + if (unlikely (!dest)) return false; + if (likely (dest->serialize (c, plan.subset_globalsubrs))) + c->pop_pack (); + else { - DEBUG_MSG (SUBSET, nullptr, "failed to serialize CFF FDArray"); + c->pop_discard (); return false; } } - /* CharStrings */ + /* String INDEX */ { - assert (plan.offsets.charStringsInfo.offset == (unsigned) (c.head - c.start)); - CFF1CharStrings *cs = c.start_embed (); - if (unlikely (cs == nullptr)) return false; - if (unlikely (!cs->serialize (&c, plan.offsets.charStringsInfo.offSize, plan.subset_charstrings))) + CFF1StringIndex *dest = c->start_embed (); + if (unlikely (!dest)) return false; + c->push (); + if (likely (dest->serialize (c, *acc.stringIndex, plan.sidmap))) + c->pop_pack (); + else { - DEBUG_MSG (SUBSET, nullptr, "failed to serialize CFF CharStrings"); + c->pop_discard (); return false; } } - /* private dicts & local subrs */ - assert (plan.offsets.privateDictInfo.offset == (unsigned) (c.head - c.start)); - for (unsigned int i = 0; i < acc.privateDicts.length; i++) + OT::cff1 *cff = c->allocate_min (); + if (unlikely (!cff)) + return false; + + /* header */ + cff->version.major = 0x01; + cff->version.minor = 0x00; + cff->nameIndex = cff->min_size; + cff->offSize = 4; /* unused? */ + + /* name INDEX */ + if (unlikely (!(*acc.nameIndex).copy (c))) return false; + + /* top dict INDEX */ { - if (plan.fdmap.has (i)) + /* serialize singleton TopDict */ + TopDict *top = c->start_embed (); + if (!top) return false; + c->push (); + cff1_top_dict_op_serializer_t topSzr; + unsigned top_size = 0; + top_dict_modifiers_t modifier (plan.info, plan.topDictModSIDs); + if (likely (top->serialize (c, plan.topdict_mod, topSzr, modifier))) { - PrivateDict *pd = c.start_embed (); - if (unlikely (pd == nullptr)) return false; - unsigned int priv_size = plan.fontdicts_mod[plan.fdmap[i]].privateDictInfo.size; - bool result; - cff_private_dict_op_serializer_t privSzr (plan.desubroutinize, plan.drop_hints); - /* N.B. local subrs immediately follows its corresponding private dict. i.e., subr offset == private dict size */ - unsigned int subroffset = (plan.offsets.localSubrsInfos[i].size > 0) ? priv_size : 0; - result = pd->serialize (&c, acc.privateDicts[i], privSzr, subroffset); - if (unlikely (!result)) - { - DEBUG_MSG (SUBSET, nullptr, "failed to serialize CFF Private Dict[%d]", i); - return false; - } - if (plan.offsets.localSubrsInfos[i].size > 0) - { - CFF1Subrs *dest = c.start_embed (); - if (unlikely (dest == nullptr)) return false; - if (unlikely (!dest->serialize (&c, plan.offsets.localSubrsInfos[i].offSize, plan.subset_localsubrs[i]))) - { - DEBUG_MSG (SUBSET, nullptr, "failed to serialize local subroutines"); - return false; - } - } + top_size = c->length (); + c->pop_pack (false); } + else + { + c->pop_discard (); + return false; + } + /* serialize INDEX header for above */ + CFF1Index *dest = c->start_embed (); + if (!dest) return false; + return dest->serialize_header (c, hb_iter (hb_array_t (&top_size, 1))); } - - assert (c.head == c.end); - c.end_serialize (); - - return true; } -static inline bool +static bool _hb_subset_cff1 (const OT::cff1::accelerator_subset_t &acc, - const char *data, - hb_subset_plan_t *plan, - hb_blob_t **prime /* OUT */) + hb_subset_context_t *c) { cff_subset_plan cff_plan; - if (unlikely (!cff_plan.create (acc, plan))) + if (unlikely (!cff_plan.create (acc, c->plan))) { DEBUG_MSG(SUBSET, nullptr, "Failed to generate a cff subsetting plan."); return false; } - unsigned int cff_prime_size = cff_plan.get_final_size (); - char *cff_prime_data = (char *) calloc (1, cff_prime_size); - - if (unlikely (!_write_cff1 (cff_plan, acc, plan->num_output_glyphs (), - cff_prime_size, cff_prime_data))) { - DEBUG_MSG(SUBSET, nullptr, "Failed to write a subset cff."); - free (cff_prime_data); - return false; - } - - *prime = hb_blob_create (cff_prime_data, - cff_prime_size, - HB_MEMORY_MODE_READONLY, - cff_prime_data, - free); - return true; + return _serialize_cff1 (c->serializer, cff_plan, acc, c->plan->num_output_glyphs ()); } /** @@ -1107,17 +916,11 @@ _hb_subset_cff1 (const OT::cff1::accelerator_subset_t &acc, * Return value: subsetted cff table. **/ bool -hb_subset_cff1 (hb_subset_plan_t *plan, - hb_blob_t **prime /* OUT */) +hb_subset_cff1 (hb_subset_context_t *c) { - hb_blob_t *cff_blob = hb_sanitize_context_t().reference_table (plan->source); - const char *data = hb_blob_get_data(cff_blob, nullptr); - OT::cff1::accelerator_subset_t acc; - acc.init(plan->source); - bool result = likely (acc.is_valid ()) && - _hb_subset_cff1 (acc, data, plan, prime); - hb_blob_destroy (cff_blob); + acc.init (c->plan->source); + bool result = likely (acc.is_valid ()) && _hb_subset_cff1 (acc, c); acc.fini (); return result; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff1.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff1.hh index 1ec8678845a..aaf5def1ed5 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff1.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff1.hh @@ -32,7 +32,6 @@ #include "hb-subset-plan.hh" HB_INTERNAL bool -hb_subset_cff1 (hb_subset_plan_t *plan, - hb_blob_t **cff_prime /* OUT */); +hb_subset_cff1 (hb_subset_context_t *c); #endif /* HB_SUBSET_CFF1_HH */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff2.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff2.cc index 7edc3f51535..637f38fbf82 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff2.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff2.cc @@ -38,43 +38,31 @@ using namespace CFF; -struct cff2_sub_table_offsets_t : cff_sub_table_offsets_t +struct cff2_sub_table_info_t : cff_sub_table_info_t { - cff2_sub_table_offsets_t () - : cff_sub_table_offsets_t (), - varStoreOffset (0) + cff2_sub_table_info_t () + : cff_sub_table_info_t (), + var_store_link (0) {} - unsigned int varStoreOffset; + objidx_t var_store_link; }; struct cff2_top_dict_op_serializer_t : cff_top_dict_op_serializer_t<> { bool serialize (hb_serialize_context_t *c, const op_str_t &opstr, - const cff2_sub_table_offsets_t &offsets) const + const cff2_sub_table_info_t &info) const { TRACE_SERIALIZE (this); switch (opstr.op) { case OpCode_vstore: - return_trace (FontDict::serialize_offset4_op(c, opstr.op, offsets.varStoreOffset)); + return_trace (FontDict::serialize_link4_op(c, opstr.op, info.var_store_link)); default: - return_trace (cff_top_dict_op_serializer_t<>::serialize (c, opstr, offsets)); - } - } - - unsigned int calculate_serialized_size (const op_str_t &opstr) const - { - switch (opstr.op) - { - case OpCode_vstore: - return OpCode_Size (OpCode_longintdict) + 4 + OpCode_Size (opstr.op); - - default: - return cff_top_dict_op_serializer_t<>::calculate_serialized_size (opstr); + return_trace (cff_top_dict_op_serializer_t<>::serialize (c, opstr, info)); } } }; @@ -116,8 +104,8 @@ struct cff2_cs_opset_flatten_t : cff2_cs_opset_t 0) && (env.argStack.get_count () >= arg.numValues)))) - { + if (unlikely (!((arg.numValues > 0) && (env.argStack.get_count () >= arg.numValues)))) + { env.set_error (); return; } @@ -144,8 +132,8 @@ struct cff2_cs_opset_flatten_t : cff2_cs_opset_tcount; drop_hints = plan->drop_hints; desubroutinize = plan->desubroutinize; - /* CFF2 header */ - final_size += OT::cff2::static_size; - - /* top dict */ - { - cff2_top_dict_op_serializer_t topSzr; - offsets.topDictInfo.size = TopDict::calculate_serialized_size (acc.topDict, topSzr); - final_size += offsets.topDictInfo.size; - } - if (desubroutinize) { /* Flatten global & local subrs */ @@ -297,9 +272,6 @@ struct cff2_subset_plan { flattener(acc, plan); if (!flattener.flatten (subset_charstrings)) return false; - - /* no global/local subroutines */ - offsets.globalSubrsInfo.size = CFF2Subrs::calculate_serialized_size (1, 0, 0); } else { @@ -316,115 +288,41 @@ struct cff2_subset_plan { if (!subr_subsetter.encode_globalsubrs (subset_globalsubrs)) return false; - /* global subrs */ - unsigned int dataSize = subset_globalsubrs.total_size (); - offsets.globalSubrsInfo.offSize = calcOffSize (dataSize); - offsets.globalSubrsInfo.size = CFF2Subrs::calculate_serialized_size (offsets.globalSubrsInfo.offSize, subset_globalsubrs.length, dataSize); - /* local subrs */ - if (!offsets.localSubrsInfos.resize (orig_fdcount)) - return false; if (!subset_localsubrs.resize (orig_fdcount)) return false; for (unsigned int fd = 0; fd < orig_fdcount; fd++) { subset_localsubrs[fd].init (); - offsets.localSubrsInfos[fd].init (); if (!subr_subsetter.encode_localsubrs (fd, subset_localsubrs[fd])) return false; - - unsigned int dataSize = subset_localsubrs[fd].total_size (); - if (dataSize > 0) - { - offsets.localSubrsInfos[fd].offset = final_size; - offsets.localSubrsInfos[fd].offSize = calcOffSize (dataSize); - offsets.localSubrsInfos[fd].size = CFF2Subrs::calculate_serialized_size (offsets.localSubrsInfos[fd].offSize, subset_localsubrs[fd].length, dataSize); - } } } - /* global subrs */ - offsets.globalSubrsInfo.offset = final_size; - final_size += offsets.globalSubrsInfo.size; - - /* variation store */ - if (acc.varStore != &Null(CFF2VariationStore)) - { - offsets.varStoreOffset = final_size; - final_size += acc.varStore->get_size (); - } - /* FDSelect */ - if (acc.fdSelect != &Null(CFF2FDSelect)) + if (acc.fdSelect != &Null (CFF2FDSelect)) { - offsets.FDSelectInfo.offset = final_size; if (unlikely (!hb_plan_subset_cff_fdselect (plan, orig_fdcount, *(const FDSelect *)acc.fdSelect, subset_fdcount, - offsets.FDSelectInfo.size, + subset_fdselect_size, subset_fdselect_format, subset_fdselect_ranges, fdmap))) return false; - - final_size += offsets.FDSelectInfo.size; } else fdmap.identity (1); - /* FDArray (FDIndex) */ - { - offsets.FDArrayInfo.offset = final_size; - cff_font_dict_op_serializer_t fontSzr; - unsigned int dictsSize = 0; - for (unsigned int i = 0; i < acc.fontDicts.length; i++) - if (fdmap.has (i)) - dictsSize += FontDict::calculate_serialized_size (acc.fontDicts[i], fontSzr); - - offsets.FDArrayInfo.offSize = calcOffSize (dictsSize); - final_size += CFF2Index::calculate_serialized_size (offsets.FDArrayInfo.offSize, subset_fdcount, dictsSize); - } - - /* CharStrings */ - { - offsets.charStringsInfo.offset = final_size; - unsigned int dataSize = subset_charstrings.total_size (); - offsets.charStringsInfo.offSize = calcOffSize (dataSize); - final_size += CFF2CharStrings::calculate_serialized_size (offsets.charStringsInfo.offSize, plan->num_output_glyphs (), dataSize); - } - - /* private dicts & local subrs */ - offsets.privateDictsOffset = final_size; - for (unsigned int i = 0; i < orig_fdcount; i++) - { - if (fdmap.has (i)) - { - bool has_localsubrs = offsets.localSubrsInfos[i].size > 0; - cff_private_dict_op_serializer_t privSzr (desubroutinize, drop_hints); - unsigned int priv_size = PrivateDict::calculate_serialized_size (acc.privateDicts[i], privSzr, has_localsubrs); - table_info_t privInfo = { final_size, priv_size, 0 }; - privateDictInfos.push (privInfo); - final_size += privInfo.size; - - if (!plan->desubroutinize && has_localsubrs) - { - offsets.localSubrsInfos[i].offset = final_size; - final_size += offsets.localSubrsInfos[i].size; - } - } - } - return true; } - unsigned int get_final_size () const { return final_size; } - - unsigned int final_size; - cff2_sub_table_offsets_t offsets; + cff2_sub_table_info_t info; unsigned int orig_fdcount; unsigned int subset_fdcount; + unsigned int subset_fdselect_size; unsigned int subset_fdselect_format; hb_vector_t subset_fdselect_ranges; @@ -433,200 +331,158 @@ struct cff2_subset_plan { str_buff_vec_t subset_charstrings; str_buff_vec_t subset_globalsubrs; hb_vector_t subset_localsubrs; - hb_vector_t privateDictInfos; bool drop_hints; bool desubroutinize; }; -static inline bool _write_cff2 (const cff2_subset_plan &plan, - const OT::cff2::accelerator_subset_t &acc, - unsigned int num_glyphs, - unsigned int dest_sz, - void *dest) +static bool _serialize_cff2 (hb_serialize_context_t *c, + cff2_subset_plan &plan, + const OT::cff2::accelerator_subset_t &acc, + unsigned int num_glyphs) { - hb_serialize_context_t c (dest, dest_sz); - - OT::cff2 *cff2 = c.start_serialize (); - if (unlikely (!c.extend_min (*cff2))) - return false; - - /* header */ - cff2->version.major = 0x02; - cff2->version.minor = 0x00; - cff2->topDict = OT::cff2::static_size; + /* private dicts & local subrs */ + hb_vector_t private_dict_infos; + if (unlikely (!private_dict_infos.resize (plan.subset_fdcount))) return false; - /* top dict */ + for (int i = (int)acc.privateDicts.length; --i >= 0 ;) { - assert (cff2->topDict == (unsigned) (c.head - c.start)); - cff2->topDictSize = plan.offsets.topDictInfo.size; - TopDict &dict = cff2 + cff2->topDict; - cff2_top_dict_op_serializer_t topSzr; - if (unlikely (!dict.serialize (&c, acc.topDict, topSzr, plan.offsets))) + if (plan.fdmap.has (i)) { - DEBUG_MSG (SUBSET, nullptr, "failed to serialize CFF2 top dict"); - return false; - } - } + objidx_t subrs_link = 0; - /* global subrs */ - { - assert (cff2->topDict + plan.offsets.topDictInfo.size == (unsigned) (c.head - c.start)); - CFF2Subrs *dest = c.start_embed (); - if (unlikely (dest == nullptr)) return false; - if (unlikely (!dest->serialize (&c, plan.offsets.globalSubrsInfo.offSize, plan.subset_globalsubrs))) - { - DEBUG_MSG (SUBSET, nullptr, "failed to serialize global subroutines"); - return false; + if (plan.subset_localsubrs[i].length > 0) + { + CFF2Subrs *dest = c->start_embed (); + if (unlikely (!dest)) return false; + c->push (); + if (likely (dest->serialize (c, plan.subset_localsubrs[i]))) + subrs_link = c->pop_pack (); + else + { + c->pop_discard (); + return false; + } + } + PrivateDict *pd = c->start_embed (); + if (unlikely (!pd)) return false; + c->push (); + cff_private_dict_op_serializer_t privSzr (plan.desubroutinize, plan.drop_hints); + if (likely (pd->serialize (c, acc.privateDicts[i], privSzr, subrs_link))) + { + unsigned fd = plan.fdmap[i]; + private_dict_infos[fd].size = c->length (); + private_dict_infos[fd].link = c->pop_pack (); + } + else + { + c->pop_discard (); + return false; + } } } - /* variation store */ - if (acc.varStore != &Null(CFF2VariationStore)) + /* CharStrings */ { - assert (plan.offsets.varStoreOffset == (unsigned) (c.head - c.start)); - CFF2VariationStore *dest = c.start_embed (); - if (unlikely (!dest->serialize (&c, acc.varStore))) + CFF2CharStrings *cs = c->start_embed (); + if (unlikely (!cs)) return false; + c->push (); + if (likely (cs->serialize (c, plan.subset_charstrings))) + plan.info.char_strings_link = c->pop_pack (); + else { - DEBUG_MSG (SUBSET, nullptr, "failed to serialize CFF2 Variation Store"); + c->pop_discard (); return false; } } /* FDSelect */ - if (acc.fdSelect != &Null(CFF2FDSelect)) + if (acc.fdSelect != &Null (CFF2FDSelect)) { - assert (plan.offsets.FDSelectInfo.offset == (unsigned) (c.head - c.start)); - - if (unlikely (!hb_serialize_cff_fdselect (&c, num_glyphs, *(const FDSelect *)acc.fdSelect, acc.fdArray->count, - plan.subset_fdselect_format, plan.offsets.FDSelectInfo.size, - plan.subset_fdselect_ranges))) + c->push (); + if (likely (hb_serialize_cff_fdselect (c, num_glyphs, *(const FDSelect *)acc.fdSelect, plan.orig_fdcount, + plan.subset_fdselect_format, plan.subset_fdselect_size, + plan.subset_fdselect_ranges))) + plan.info.fd_select.link = c->pop_pack (); + else { - DEBUG_MSG (SUBSET, nullptr, "failed to serialize CFF2 subset FDSelect"); + c->pop_discard (); return false; } } /* FDArray (FD Index) */ { - assert (plan.offsets.FDArrayInfo.offset == (unsigned) (c.head - c.start)); - CFF2FDArray *fda = c.start_embed (); - if (unlikely (fda == nullptr)) return false; - cff_font_dict_op_serializer_t fontSzr; - if (unlikely (!fda->serialize (&c, plan.offsets.FDArrayInfo.offSize, - acc.fontDicts, plan.subset_fdcount, plan.fdmap, - fontSzr, plan.privateDictInfos))) - { - DEBUG_MSG (SUBSET, nullptr, "failed to serialize CFF2 FDArray"); - return false; - } + c->push (); + CFF2FDArray *fda = c->start_embed (); + if (unlikely (!fda)) return false; + cff_font_dict_op_serializer_t fontSzr; + auto it = + + hb_zip (+ hb_iter (acc.fontDicts) + | hb_filter ([&] (const cff2_font_dict_values_t &_) + { return plan.fdmap.has (&_ - &acc.fontDicts[0]); }), + hb_iter (private_dict_infos)) + ; + if (unlikely (!fda->serialize (c, it, fontSzr))) return false; + plan.info.fd_array_link = c->pop_pack (); } - /* CharStrings */ + /* variation store */ + if (acc.varStore != &Null (CFF2VariationStore)) { - assert (plan.offsets.charStringsInfo.offset == (unsigned) (c.head - c.start)); - CFF2CharStrings *cs = c.start_embed (); - if (unlikely (cs == nullptr)) return false; - if (unlikely (!cs->serialize (&c, plan.offsets.charStringsInfo.offSize, plan.subset_charstrings))) - { - DEBUG_MSG (SUBSET, nullptr, "failed to serialize CFF2 CharStrings"); - return false; - } + c->push (); + CFF2VariationStore *dest = c->start_embed (); + if (unlikely (!dest || !dest->serialize (c, acc.varStore))) return false; + plan.info.var_store_link = c->pop_pack (); } - /* private dicts & local subrs */ - assert (plan.offsets.privateDictsOffset == (unsigned) (c.head - c.start)); - for (unsigned int i = 0; i < acc.privateDicts.length; i++) + OT::cff2 *cff2 = c->allocate_min (); + if (unlikely (!cff2)) return false; + + /* header */ + cff2->version.major = 0x02; + cff2->version.minor = 0x00; + cff2->topDict = OT::cff2::static_size; + + /* top dict */ { - if (plan.fdmap.has (i)) - { - PrivateDict *pd = c.start_embed (); - if (unlikely (pd == nullptr)) return false; - unsigned int priv_size = plan.privateDictInfos[plan.fdmap[i]].size; - bool result; - cff_private_dict_op_serializer_t privSzr (plan.desubroutinize, plan.drop_hints); - /* N.B. local subrs immediately follows its corresponding private dict. i.e., subr offset == private dict size */ - unsigned int subroffset = (plan.offsets.localSubrsInfos[i].size > 0) ? priv_size : 0; - result = pd->serialize (&c, acc.privateDicts[i], privSzr, subroffset); - if (unlikely (!result)) - { - DEBUG_MSG (SUBSET, nullptr, "failed to serialize CFF Private Dict[%d]", i); - return false; - } - if (plan.offsets.localSubrsInfos[i].size > 0) - { - CFF2Subrs *dest = c.start_embed (); - if (unlikely (dest == nullptr)) return false; - if (unlikely (!dest->serialize (&c, plan.offsets.localSubrsInfos[i].offSize, plan.subset_localsubrs[i]))) - { - DEBUG_MSG (SUBSET, nullptr, "failed to serialize local subroutines"); - return false; - } - } - } + TopDict &dict = cff2 + cff2->topDict; + cff2_top_dict_op_serializer_t topSzr; + if (unlikely (!dict.serialize (c, acc.topDict, topSzr, plan.info))) return false; + cff2->topDictSize = c->head - (const char *)&dict; } - assert (c.head == c.end); - c.end_serialize (); - - return true; + /* global subrs */ + { + CFF2Subrs *dest = c->start_embed (); + if (unlikely (!dest)) return false; + return dest->serialize (c, plan.subset_globalsubrs); + } } -static inline bool +static bool _hb_subset_cff2 (const OT::cff2::accelerator_subset_t &acc, - const char *data, - hb_subset_plan_t *plan, - hb_blob_t **prime /* OUT */) + hb_subset_context_t *c) { cff2_subset_plan cff2_plan; - if (unlikely (!cff2_plan.create (acc, plan))) - { - DEBUG_MSG(SUBSET, nullptr, "Failed to generate a cff2 subsetting plan."); - return false; - } - - unsigned int cff2_prime_size = cff2_plan.get_final_size (); - char *cff2_prime_data = (char *) calloc (1, cff2_prime_size); - - if (unlikely (!_write_cff2 (cff2_plan, acc, plan->num_output_glyphs (), - cff2_prime_size, cff2_prime_data))) { - DEBUG_MSG(SUBSET, nullptr, "Failed to write a subset cff2."); - free (cff2_prime_data); - return false; - } - - *prime = hb_blob_create (cff2_prime_data, - cff2_prime_size, - HB_MEMORY_MODE_READONLY, - cff2_prime_data, - free); - return true; + if (unlikely (!cff2_plan.create (acc, c->plan))) return false; + return _serialize_cff2 (c->serializer, cff2_plan, acc, c->plan->num_output_glyphs ()); } /** * hb_subset_cff2: - * Subsets the CFF2 table according to a provided plan. - * - * Return value: subsetted cff2 table. + * Subsets the CFF2 table according to a provided subset context. **/ bool -hb_subset_cff2 (hb_subset_plan_t *plan, - hb_blob_t **prime /* OUT */) +hb_subset_cff2 (hb_subset_context_t *c) { - hb_blob_t *cff2_blob = hb_sanitize_context_t().reference_table (plan->source); - const char *data = hb_blob_get_data(cff2_blob, nullptr); - OT::cff2::accelerator_subset_t acc; - acc.init(plan->source); - bool result = likely (acc.is_valid ()) && - _hb_subset_cff2 (acc, data, plan, prime); - - hb_blob_destroy (cff2_blob); + acc.init (c->plan->source); + bool result = likely (acc.is_valid ()) && _hb_subset_cff2 (acc, c); acc.fini (); return result; } - #endif diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff2.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff2.hh index a07dc290e5c..f10556ddd74 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff2.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff2.hh @@ -32,7 +32,6 @@ #include "hb-subset-plan.hh" HB_INTERNAL bool -hb_subset_cff2 (hb_subset_plan_t *plan, - hb_blob_t **cff2_prime /* OUT */); +hb_subset_cff2 (hb_subset_context_t *c); #endif /* HB_SUBSET_CFF2_HH */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-input.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-input.cc index d92f33ffed0..fe9be3ce020 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-input.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-input.cc @@ -46,10 +46,13 @@ hb_subset_input_create_or_fail () input->glyphs = hb_set_create (); input->name_ids = hb_set_create (); hb_set_add_range (input->name_ids, 0, 6); + input->name_languages = hb_set_create (); + hb_set_add (input->name_languages, 0x0409); input->drop_tables = hb_set_create (); input->drop_hints = false; input->desubroutinize = false; input->retain_gids = false; + input->name_legacy = false; hb_tag_t default_drop_tables[] = { // Layout disabled by default @@ -77,8 +80,6 @@ hb_subset_input_create_or_fail () HB_TAG ('G', 'l', 'o', 'c'), HB_TAG ('S', 'i', 'l', 'f'), HB_TAG ('S', 'i', 'l', 'l'), - // Colour - HB_TAG ('s', 'b', 'i', 'x') }; input->drop_tables->add_array (default_drop_tables, ARRAY_LENGTH (default_drop_tables)); @@ -116,6 +117,7 @@ hb_subset_input_destroy (hb_subset_input_t *subset_input) hb_set_destroy (subset_input->unicodes); hb_set_destroy (subset_input->glyphs); hb_set_destroy (subset_input->name_ids); + hb_set_destroy (subset_input->name_languages); hb_set_destroy (subset_input->drop_tables); free (subset_input); @@ -151,6 +153,12 @@ hb_subset_input_nameid_set (hb_subset_input_t *subset_input) return subset_input->name_ids; } +HB_EXTERN hb_set_t * +hb_subset_input_namelangid_set (hb_subset_input_t *subset_input) +{ + return subset_input->name_languages; +} + HB_EXTERN hb_set_t * hb_subset_input_drop_tables_set (hb_subset_input_t *subset_input) { @@ -206,3 +214,16 @@ hb_subset_input_get_retain_gids (hb_subset_input_t *subset_input) { return subset_input->retain_gids; } + +HB_EXTERN void +hb_subset_input_set_name_legacy (hb_subset_input_t *subset_input, + hb_bool_t name_legacy) +{ + subset_input->name_legacy = name_legacy; +} + +HB_EXTERN hb_bool_t +hb_subset_input_get_name_legacy (hb_subset_input_t *subset_input) +{ + return subset_input->name_legacy; +} diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-input.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-input.hh index f6dd4ac3197..0aeb96695b7 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-input.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-input.hh @@ -41,11 +41,13 @@ struct hb_subset_input_t hb_set_t *unicodes; hb_set_t *glyphs; hb_set_t *name_ids; + hb_set_t *name_languages; hb_set_t *drop_tables; bool drop_hints; bool desubroutinize; bool retain_gids; + bool name_legacy; /* TODO * * features diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-plan.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-plan.cc index f4912f86bad..9e59be25941 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-plan.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-plan.cc @@ -31,6 +31,7 @@ #include "hb-ot-cmap-table.hh" #include "hb-ot-glyf-table.hh" #include "hb-ot-cff1-table.hh" +#include "hb-ot-color-colr-table.hh" #include "hb-ot-var-fvar-table.hh" #include "hb-ot-stat-table.hh" @@ -50,8 +51,24 @@ _add_cff_seac_components (const OT::cff1::accelerator_t &cff, #endif #ifndef HB_NO_SUBSET_LAYOUT +#ifdef HB_EXPERIMENTAL_API +static void +_remap_indexes (const hb_set_t *indexes, + hb_map_t *mapping /* OUT */) +{ + unsigned count = indexes->get_population (); + + for (auto _ : + hb_zip (indexes->iter (), hb_range (count))) + mapping->set (_.first, _.second); + +} +#endif + static inline void -_gsub_closure (hb_face_t *face, hb_set_t *gids_to_retain) +_gsub_closure_glyphs_lookups_features (hb_face_t *face, + hb_set_t *gids_to_retain, + hb_map_t *gsub_lookups, + hb_map_t *gsub_features) { hb_set_t lookup_indices; hb_ot_layout_collect_lookups (face, @@ -63,6 +80,51 @@ _gsub_closure (hb_face_t *face, hb_set_t *gids_to_retain) hb_ot_layout_lookups_substitute_closure (face, &lookup_indices, gids_to_retain); +#ifdef HB_EXPERIMENTAL_API + hb_ot_layout_closure_lookups (face, + HB_OT_TAG_GSUB, + gids_to_retain, + &lookup_indices); + _remap_indexes (&lookup_indices, gsub_lookups); + + //closure features + hb_set_t feature_indices; + hb_ot_layout_closure_features (face, + HB_OT_TAG_GSUB, + gsub_lookups, + &feature_indices); + _remap_indexes (&feature_indices, gsub_features); +#endif +} + +static inline void +_gpos_closure_lookups_features (hb_face_t *face, + const hb_set_t *gids_to_retain, + hb_map_t *gpos_lookups, + hb_map_t *gpos_features) +{ + hb_set_t lookup_indices; + hb_ot_layout_collect_lookups (face, + HB_OT_TAG_GPOS, + nullptr, + nullptr, + nullptr, + &lookup_indices); +#ifdef HB_EXPERIMENTAL_API + hb_ot_layout_closure_lookups (face, + HB_OT_TAG_GPOS, + gids_to_retain, + &lookup_indices); + _remap_indexes (&lookup_indices, gpos_lookups); + + //closure features + hb_set_t feature_indices; + hb_ot_layout_closure_features (face, + HB_OT_TAG_GPOS, + gpos_lookups, + &feature_indices); + _remap_indexes (&feature_indices, gpos_features); +#endif } #endif @@ -93,14 +155,21 @@ static void _populate_gids_to_retain (hb_subset_plan_t* plan, const hb_set_t *unicodes, const hb_set_t *input_glyphs_to_retain, - bool close_over_gsub) + bool close_over_gsub, + bool close_over_gpos) { OT::cmap::accelerator_t cmap; OT::glyf::accelerator_t glyf; +#ifndef HB_NO_SUBSET_CFF OT::cff1::accelerator_t cff; +#endif + OT::COLR::accelerator_t colr; cmap.init (plan->source); glyf.init (plan->source); +#ifndef HB_NO_SUBSET_CFF cff.init (plan->source); +#endif + colr.init (plan->source); plan->_glyphset_gsub->add (0); // Not-def hb_set_union (plan->_glyphset_gsub, input_glyphs_to_retain); @@ -123,8 +192,11 @@ _populate_gids_to_retain (hb_subset_plan_t* plan, #ifndef HB_NO_SUBSET_LAYOUT if (close_over_gsub) - // Add all glyphs needed for GSUB substitutions. - _gsub_closure (plan->source, plan->_glyphset_gsub); + // closure all glyphs/lookups/features needed for GSUB substitutions. + _gsub_closure_glyphs_lookups_features (plan->source, plan->_glyphset_gsub, plan->gsub_lookups, plan->gsub_features); + + if (close_over_gpos) + _gpos_closure_lookups_features (plan->source, plan->_glyphset_gsub, plan->gpos_lookups, plan->gpos_features); #endif _remove_invalid_gids (plan->_glyphset_gsub, plan->source->get_num_glyphs ()); @@ -138,11 +210,15 @@ _populate_gids_to_retain (hb_subset_plan_t* plan, if (cff.is_valid ()) _add_cff_seac_components (cff, gid, plan->_glyphset); #endif + if (colr.is_valid ()) + colr.closure_glyphs (gid, plan->_glyphset); } _remove_invalid_gids (plan->_glyphset, plan->source->get_num_glyphs ()); +#ifndef HB_NO_SUBSET_CFF cff.fini (); +#endif glyf.fini (); cmap.fini (); } @@ -213,9 +289,11 @@ hb_subset_plan_create (hb_face_t *face, plan->drop_hints = input->drop_hints; plan->desubroutinize = input->desubroutinize; plan->retain_gids = input->retain_gids; + plan->name_legacy = input->name_legacy; plan->unicodes = hb_set_create (); plan->name_ids = hb_set_reference (input->name_ids); _nameid_closure (face, plan->name_ids); + plan->name_languages = hb_set_reference (input->name_languages); plan->drop_tables = hb_set_reference (input->drop_tables); plan->source = hb_face_reference (face); plan->dest = hb_face_builder_create (); @@ -225,11 +303,16 @@ hb_subset_plan_create (hb_face_t *face, plan->codepoint_to_glyph = hb_map_create (); plan->glyph_map = hb_map_create (); plan->reverse_glyph_map = hb_map_create (); + plan->gsub_lookups = hb_map_create (); + plan->gpos_lookups = hb_map_create (); + plan->gsub_features = hb_map_create (); + plan->gpos_features = hb_map_create (); _populate_gids_to_retain (plan, input->unicodes, input->glyphs, - !input->drop_tables->has (HB_OT_TAG_GSUB)); + !input->drop_tables->has (HB_OT_TAG_GSUB), + !input->drop_tables->has (HB_OT_TAG_GPOS)); _create_old_gid_to_new_gid_map (face, input->retain_gids, @@ -253,6 +336,7 @@ hb_subset_plan_destroy (hb_subset_plan_t *plan) hb_set_destroy (plan->unicodes); hb_set_destroy (plan->name_ids); + hb_set_destroy (plan->name_languages); hb_set_destroy (plan->drop_tables); hb_face_destroy (plan->source); hb_face_destroy (plan->dest); @@ -261,6 +345,11 @@ hb_subset_plan_destroy (hb_subset_plan_t *plan) hb_map_destroy (plan->reverse_glyph_map); hb_set_destroy (plan->_glyphset); hb_set_destroy (plan->_glyphset_gsub); + hb_map_destroy (plan->gsub_lookups); + hb_map_destroy (plan->gpos_lookups); + hb_map_destroy (plan->gsub_features); + hb_map_destroy (plan->gpos_features); + free (plan); } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-plan.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-plan.hh index af2337e4948..1e247968336 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-plan.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-plan.hh @@ -42,6 +42,7 @@ struct hb_subset_plan_t bool drop_hints : 1; bool desubroutinize : 1; bool retain_gids : 1; + bool name_legacy : 1; // For each cp that we'd like to retain maps to the corresponding gid. hb_set_t *unicodes; @@ -49,6 +50,9 @@ struct hb_subset_plan_t // name_ids we would like to retain hb_set_t *name_ids; + // name_languages we would like to retain + hb_set_t *name_languages; + // Tables which should be dropped. hb_set_t *drop_tables; @@ -67,6 +71,14 @@ struct hb_subset_plan_t hb_set_t *_glyphset; hb_set_t *_glyphset_gsub; + //active lookups we'd like to retain + hb_map_t *gsub_lookups; + hb_map_t *gpos_lookups; + + //active features we'd like to retain + hb_map_t *gsub_features; + hb_map_t *gpos_features; + public: /* diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.cc index ec2f8892fde..a03b41f140c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.cc @@ -37,35 +37,36 @@ #include "hb-ot-hhea-table.hh" #include "hb-ot-hmtx-table.hh" #include "hb-ot-maxp-table.hh" +#include "hb-ot-color-sbix-table.hh" +#include "hb-ot-color-colr-table.hh" #include "hb-ot-os2-table.hh" #include "hb-ot-post-table.hh" #include "hb-ot-cff1-table.hh" #include "hb-ot-cff2-table.hh" #include "hb-ot-vorg-table.hh" #include "hb-ot-name-table.hh" +#include "hb-ot-color-cbdt-table.hh" #include "hb-ot-layout-gsub-table.hh" #include "hb-ot-layout-gpos-table.hh" +#include "hb-ot-var-gvar-table.hh" +#include "hb-ot-var-hvar-table.hh" -HB_UNUSED static inline unsigned int -_plan_estimate_subset_table_size (hb_subset_plan_t *plan, - unsigned int table_len); -static inline unsigned int -_plan_estimate_subset_table_size (hb_subset_plan_t *plan, - unsigned int table_len) +static unsigned +_plan_estimate_subset_table_size (hb_subset_plan_t *plan, unsigned table_len) { - unsigned int src_glyphs = plan->source->get_num_glyphs (); - unsigned int dst_glyphs = plan->glyphset ()->get_population (); + unsigned src_glyphs = plan->source->get_num_glyphs (); + unsigned dst_glyphs = plan->glyphset ()->get_population (); if (unlikely (!src_glyphs)) return 512 + table_len; - return 512 + (unsigned int) (table_len * sqrt ((double) dst_glyphs / src_glyphs)); + return 512 + (unsigned) (table_len * sqrt ((double) dst_glyphs / src_glyphs)); } template static bool -_subset2 (hb_subset_plan_t *plan) +_subset (hb_subset_plan_t *plan) { bool result = false; hb_blob_t *source_blob = hb_sanitize_context_t ().reference_table (plan->source); @@ -77,26 +78,26 @@ _subset2 (hb_subset_plan_t *plan) hb_vector_t buf; /* TODO Not all tables are glyph-related. 'name' table size for example should not be * affected by number of glyphs. Accommodate that. */ - unsigned int buf_size = _plan_estimate_subset_table_size (plan, source_blob->length); - DEBUG_MSG(SUBSET, nullptr, "OT::%c%c%c%c initial estimated table size: %u bytes.", HB_UNTAG (tag), buf_size); + unsigned buf_size = _plan_estimate_subset_table_size (plan, source_blob->length); + DEBUG_MSG (SUBSET, nullptr, "OT::%c%c%c%c initial estimated table size: %u bytes.", HB_UNTAG (tag), buf_size); if (unlikely (!buf.alloc (buf_size))) { - DEBUG_MSG(SUBSET, nullptr, "OT::%c%c%c%c failed to allocate %u bytes.", HB_UNTAG (tag), buf_size); + DEBUG_MSG (SUBSET, nullptr, "OT::%c%c%c%c failed to allocate %u bytes.", HB_UNTAG (tag), buf_size); hb_blob_destroy (source_blob); return false; } retry: hb_serialize_context_t serializer ((void *) buf, buf_size); serializer.start_serialize (); - hb_subset_context_t c (plan, &serializer); + hb_subset_context_t c (source_blob, plan, &serializer); bool needed = table->subset (&c); if (serializer.ran_out_of_room) { buf_size += (buf_size >> 1) + 32; - DEBUG_MSG(SUBSET, nullptr, "OT::%c%c%c%c ran out of room; reallocating to %u bytes.", HB_UNTAG (tag), buf_size); + DEBUG_MSG (SUBSET, nullptr, "OT::%c%c%c%c ran out of room; reallocating to %u bytes.", HB_UNTAG (tag), buf_size); if (unlikely (!buf.alloc (buf_size))) { - DEBUG_MSG(SUBSET, nullptr, "OT::%c%c%c%c failed to reallocate %u bytes.", HB_UNTAG (tag), buf_size); + DEBUG_MSG (SUBSET, nullptr, "OT::%c%c%c%c failed to reallocate %u bytes.", HB_UNTAG (tag), buf_size); hb_blob_destroy (source_blob); return false; } @@ -111,159 +112,119 @@ _subset2 (hb_subset_plan_t *plan) if (needed) { hb_blob_t *dest_blob = serializer.copy_blob (); - DEBUG_MSG(SUBSET, nullptr, "OT::%c%c%c%c final subset table size: %u bytes.", HB_UNTAG (tag), dest_blob->length); + DEBUG_MSG (SUBSET, nullptr, "OT::%c%c%c%c final subset table size: %u bytes.", HB_UNTAG (tag), dest_blob->length); result = c.plan->add_table (tag, dest_blob); hb_blob_destroy (dest_blob); } else { - DEBUG_MSG(SUBSET, nullptr, "OT::%c%c%c%c::subset table subsetted to empty.", HB_UNTAG (tag)); + DEBUG_MSG (SUBSET, nullptr, "OT::%c%c%c%c::subset table subsetted to empty.", HB_UNTAG (tag)); } } } else - DEBUG_MSG(SUBSET, nullptr, "OT::%c%c%c%c::subset sanitize failed on source table.", HB_UNTAG (tag)); + DEBUG_MSG (SUBSET, nullptr, "OT::%c%c%c%c::subset sanitize failed on source table.", HB_UNTAG (tag)); hb_blob_destroy (source_blob); - DEBUG_MSG(SUBSET, nullptr, "OT::%c%c%c%c::subset %s", HB_UNTAG (tag), result ? "success" : "FAILED!"); + DEBUG_MSG (SUBSET, nullptr, "OT::%c%c%c%c::subset %s", HB_UNTAG (tag), result ? "success" : "FAILED!"); return result; } -template static bool -_subset (hb_subset_plan_t *plan) +_is_table_present (hb_face_t *source, hb_tag_t tag) { - hb_blob_t *source_blob = hb_sanitize_context_t ().reference_table (plan->source); - const TableType *table = source_blob->as (); - - hb_tag_t tag = TableType::tableTag; - hb_bool_t result = false; - if (source_blob->data) - result = table->subset (plan); - else - DEBUG_MSG(SUBSET, nullptr, "OT::%c%c%c%c::subset sanitize failed on source table.", HB_UNTAG (tag)); - - hb_blob_destroy (source_blob); - DEBUG_MSG(SUBSET, nullptr, "OT::%c%c%c%c::subset %s", HB_UNTAG (tag), result ? "success" : "FAILED!"); - return result; + hb_tag_t table_tags[32]; + unsigned offset = 0, num_tables = ARRAY_LENGTH (table_tags); + while ((hb_face_get_table_tags (source, offset, &num_tables, table_tags), num_tables)) + { + for (unsigned i = 0; i < num_tables; ++i) + if (table_tags[i] == tag) + return true; + offset += num_tables; + } + return false; } - static bool -_subset_table (hb_subset_plan_t *plan, - hb_tag_t tag) +_should_drop_table (hb_subset_plan_t *plan, hb_tag_t tag) { - DEBUG_MSG(SUBSET, nullptr, "begin subset %c%c%c%c", HB_UNTAG (tag)); - bool result = true; - switch (tag) { - case HB_OT_TAG_glyf: - result = _subset2 (plan); - break; - case HB_OT_TAG_hdmx: - result = _subset2 (plan); - break; - case HB_OT_TAG_name: - result = _subset2 (plan); - break; - case HB_OT_TAG_head: - // TODO that won't work well if there is no glyf - DEBUG_MSG(SUBSET, nullptr, "skip head, handled by glyf"); - result = true; - break; - case HB_OT_TAG_hhea: - DEBUG_MSG(SUBSET, nullptr, "skip hhea handled by hmtx"); - return true; - case HB_OT_TAG_hmtx: - result = _subset2 (plan); - break; - case HB_OT_TAG_vhea: - DEBUG_MSG(SUBSET, nullptr, "skip vhea handled by vmtx"); - return true; - case HB_OT_TAG_vmtx: - result = _subset2 (plan); - break; - case HB_OT_TAG_maxp: - result = _subset2 (plan); - break; - case HB_OT_TAG_loca: - DEBUG_MSG(SUBSET, nullptr, "skip loca handled by glyf"); - return true; - case HB_OT_TAG_cmap: - result = _subset2 (plan); - break; - case HB_OT_TAG_OS2: - result = _subset2 (plan); - break; - case HB_OT_TAG_post: - result = _subset2 (plan); - break; + if (plan->drop_tables->has (tag)) + return true; -#ifndef HB_NO_SUBSET_CFF - case HB_OT_TAG_cff1: - result = _subset (plan); - break; - case HB_OT_TAG_cff2: - result = _subset (plan); - break; - case HB_OT_TAG_VORG: - result = _subset2 (plan); - break; -#endif + switch (tag) + { + case HB_TAG ('c','v','a','r'): /* hint table, fallthrough */ + case HB_TAG ('c','v','t',' '): /* hint table, fallthrough */ + case HB_TAG ('f','p','g','m'): /* hint table, fallthrough */ + case HB_TAG ('p','r','e','p'): /* hint table, fallthrough */ + case HB_TAG ('h','d','m','x'): /* hint table, fallthrough */ + case HB_TAG ('V','D','M','X'): /* hint table, fallthrough */ + return plan->drop_hints; -#ifndef HB_NO_SUBSET_LAYOUT - case HB_OT_TAG_GDEF: - result = _subset2 (plan); - break; - case HB_OT_TAG_GSUB: - result = _subset2 (plan); - break; - case HB_OT_TAG_GPOS: - result = _subset2 (plan); - break; +#ifdef HB_NO_SUBSET_LAYOUT + // Drop Layout Tables if requested. + case HB_OT_TAG_GDEF: + case HB_OT_TAG_GPOS: + case HB_OT_TAG_GSUB: + case HB_TAG ('m','o','r','x'): + case HB_TAG ('m','o','r','t'): + case HB_TAG ('k','e','r','x'): + case HB_TAG ('k','e','r','n'): + return true; #endif - default: - hb_blob_t *source_table = hb_face_reference_table (plan->source, tag); - if (likely (source_table)) - result = plan->add_table (tag, source_table); - else - result = false; - hb_blob_destroy (source_table); - break; + default: + return false; } - DEBUG_MSG(SUBSET, nullptr, "subset %c%c%c%c %s", HB_UNTAG (tag), result ? "ok" : "FAILED"); - return result; } static bool -_should_drop_table (hb_subset_plan_t *plan, hb_tag_t tag) +_subset_table (hb_subset_plan_t *plan, hb_tag_t tag) { - if (plan->drop_tables->has (tag)) - return true; + DEBUG_MSG (SUBSET, nullptr, "subset %c%c%c%c", HB_UNTAG (tag)); + switch (tag) + { + case HB_OT_TAG_glyf: return _subset (plan); + case HB_OT_TAG_hdmx: return _subset (plan); + case HB_OT_TAG_name: return _subset (plan); + case HB_OT_TAG_head: + if (_is_table_present (plan->source, HB_OT_TAG_glyf) && !_should_drop_table (plan, HB_OT_TAG_glyf)) + return true; /* skip head, handled by glyf */ + return _subset (plan); + case HB_OT_TAG_hhea: return true; /* skip hhea, handled by hmtx */ + case HB_OT_TAG_hmtx: return _subset (plan); + case HB_OT_TAG_vhea: return true; /* skip vhea, handled by vmtx */ + case HB_OT_TAG_vmtx: return _subset (plan); + case HB_OT_TAG_maxp: return _subset (plan); + case HB_OT_TAG_sbix: return _subset (plan); + case HB_OT_TAG_loca: return true; /* skip loca, handled by glyf */ + case HB_OT_TAG_cmap: return _subset (plan); + case HB_OT_TAG_OS2 : return _subset (plan); + case HB_OT_TAG_post: return _subset (plan); + case HB_OT_TAG_COLR: return _subset (plan); + case HB_OT_TAG_CBLC: return _subset (plan); + case HB_OT_TAG_CBDT: return true; /* skip CBDT, handled by CBLC */ - switch (tag) { - case HB_TAG ('c', 'v', 'a', 'r'): /* hint table, fallthrough */ - case HB_TAG ('c', 'v', 't', ' '): /* hint table, fallthrough */ - case HB_TAG ('f', 'p', 'g', 'm'): /* hint table, fallthrough */ - case HB_TAG ('p', 'r', 'e', 'p'): /* hint table, fallthrough */ - case HB_TAG ('h', 'd', 'm', 'x'): /* hint table, fallthrough */ - case HB_TAG ('V', 'D', 'M', 'X'): /* hint table, fallthrough */ - return plan->drop_hints; +#ifndef HB_NO_SUBSET_CFF + case HB_OT_TAG_cff1: return _subset (plan); + case HB_OT_TAG_cff2: return _subset (plan); + case HB_OT_TAG_VORG: return _subset (plan); +#endif -#ifdef HB_NO_SUBSET_LAYOUT - // Drop Layout Tables if requested. - case HB_OT_TAG_GDEF: - case HB_OT_TAG_GPOS: - case HB_OT_TAG_GSUB: - case HB_TAG ('m', 'o', 'r', 'x'): - case HB_TAG ('m', 'o', 'r', 't'): - case HB_TAG ('k', 'e', 'r', 'x'): - case HB_TAG ('k', 'e', 'r', 'n'): - return true; +#ifndef HB_NO_SUBSET_LAYOUT + case HB_OT_TAG_GDEF: return _subset (plan); + case HB_OT_TAG_GSUB: return _subset (plan); + case HB_OT_TAG_GPOS: return _subset (plan); + case HB_OT_TAG_gvar: return _subset (plan); + case HB_OT_TAG_HVAR: return _subset (plan); + case HB_OT_TAG_VVAR: return _subset (plan); #endif - default: - return false; + default: + hb_blob_t *source_table = hb_face_reference_table (plan->source, tag); + bool result = plan->add_table (tag, source_table); + hb_blob_destroy (source_table); + return result; } } @@ -275,33 +236,29 @@ _should_drop_table (hb_subset_plan_t *plan, hb_tag_t tag) * Subsets a font according to provided input. **/ hb_face_t * -hb_subset (hb_face_t *source, - hb_subset_input_t *input) +hb_subset (hb_face_t *source, hb_subset_input_t *input) { if (unlikely (!input || !source)) return hb_face_get_empty (); hb_subset_plan_t *plan = hb_subset_plan_create (source, input); - hb_tag_t table_tags[32]; - unsigned int offset = 0, count; - bool success = true; hb_set_t tags_set; - do { - count = ARRAY_LENGTH (table_tags); - hb_face_get_table_tags (source, offset, &count, table_tags); - for (unsigned int i = 0; i < count; i++) + bool success = true; + hb_tag_t table_tags[32]; + unsigned offset = 0, num_tables = ARRAY_LENGTH (table_tags); + while ((hb_face_get_table_tags (source, offset, &num_tables, table_tags), num_tables)) + { + for (unsigned i = 0; i < num_tables; ++i) { hb_tag_t tag = table_tags[i]; - if (_should_drop_table (plan, tag) && !tags_set.has (tag)) - { - DEBUG_MSG(SUBSET, nullptr, "drop %c%c%c%c", HB_UNTAG (tag)); - continue; - } + if (_should_drop_table (plan, tag) && !tags_set.has (tag)) continue; tags_set.add (tag); - success = success && _subset_table (plan, tag); + success = _subset_table (plan, tag); + if (unlikely (!success)) goto end; } - offset += count; - } while (success && count == ARRAY_LENGTH (table_tags)); + offset += num_tables; + } +end: hb_face_t *result = success ? hb_face_reference (plan->dest) : hb_face_get_empty (); hb_subset_plan_destroy (plan); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.h index 960afefa5bd..ddf4409734e 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.h +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.h @@ -57,6 +57,9 @@ hb_subset_input_glyph_set (hb_subset_input_t *subset_input); HB_EXTERN hb_set_t * hb_subset_input_nameid_set (hb_subset_input_t *subset_input); +HB_EXTERN hb_set_t * +hb_subset_input_namelangid_set (hb_subset_input_t *subset_input); + HB_EXTERN hb_set_t * hb_subset_input_drop_tables_set (hb_subset_input_t *subset_input); @@ -78,6 +81,12 @@ hb_subset_input_set_retain_gids (hb_subset_input_t *subset_input, HB_EXTERN hb_bool_t hb_subset_input_get_retain_gids (hb_subset_input_t *subset_input); +HB_EXTERN void +hb_subset_input_set_name_legacy (hb_subset_input_t *subset_input, + hb_bool_t name_legacy); +HB_EXTERN hb_bool_t +hb_subset_input_get_name_legacy (hb_subset_input_t *subset_input); + /* hb_subset () */ HB_EXTERN hb_face_t * hb_subset (hb_face_t *source, hb_subset_input_t *input); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.hh index b8dd07ab288..a3dfd3b87fe 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.hh @@ -54,12 +54,15 @@ struct hb_subset_context_t : dispatch (const T &obj, Ts&&... ds) HB_AUTO_RETURN ( _dispatch (obj, hb_prioritize, hb_forward (ds)...) ) + hb_blob_t *source_blob; hb_subset_plan_t *plan; hb_serialize_context_t *serializer; unsigned int debug_depth; - hb_subset_context_t (hb_subset_plan_t *plan_, + hb_subset_context_t (hb_blob_t *source_blob_, + hb_subset_plan_t *plan_, hb_serialize_context_t *serializer_) : + source_blob (source_blob_), plan (plan_), serializer (serializer_), debug_depth (0) {} diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ucd.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ucd.cc index b29f2a9c7d1..ad72a26c04c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ucd.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ucd.cc @@ -136,20 +136,22 @@ hb_ucd_compose (hb_unicode_funcs_t *ufuncs HB_UNUSED, if ((a & 0xFFFFF800u) == 0x0000u && (b & 0xFFFFFF80) == 0x0300u) { uint32_t k = HB_CODEPOINT_ENCODE3_11_7_14 (a, b, 0); - uint32_t *v = (uint32_t*) hb_bsearch (&k, _hb_ucd_dm2_u32_map, - ARRAY_LENGTH (_hb_ucd_dm2_u32_map), - sizeof (*_hb_ucd_dm2_u32_map), - _cmp_pair_11_7_14); + const uint32_t *v = hb_bsearch (k, + _hb_ucd_dm2_u32_map, + ARRAY_LENGTH (_hb_ucd_dm2_u32_map), + sizeof (*_hb_ucd_dm2_u32_map), + _cmp_pair_11_7_14); if (likely (!v)) return false; u = HB_CODEPOINT_DECODE3_11_7_14_3 (*v); } else { uint64_t k = HB_CODEPOINT_ENCODE3 (a, b, 0); - uint64_t *v = (uint64_t*) hb_bsearch (&k, _hb_ucd_dm2_u64_map, - ARRAY_LENGTH (_hb_ucd_dm2_u64_map), - sizeof (*_hb_ucd_dm2_u64_map), - _cmp_pair); + const uint64_t *v = hb_bsearch (k, + _hb_ucd_dm2_u64_map, + ARRAY_LENGTH (_hb_ucd_dm2_u64_map), + sizeof (*_hb_ucd_dm2_u64_map), + _cmp_pair); if (likely (!v)) return false; u = HB_CODEPOINT_DECODE3_3 (*v); } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode-emoji-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode-emoji-table.hh index 1ff79c97785..c56a4f3339f 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode-emoji-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode-emoji-table.hh @@ -10,12 +10,12 @@ * # Date: 2019-01-15, 12:10:05 GMT * # © 2019 Unicode®, Inc. * # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. - * # For terms of use, see http://www.unicode.org/terms_of_use.html + * # For terms of use, see https://www.unicode.org/terms_of_use.html * # * # Emoji Data for UTS #51 * # Version: 12.0 * # - * # For documentation and usage, see http://www.unicode.org/reports/tr51 + * # For documentation and usage, see https://www.unicode.org/reports/tr51 */ #ifndef HB_UNICODE_EMOJI_TABLE_HH diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.cc index 08a4054cd0c..36070a7f182 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.cc @@ -212,7 +212,7 @@ DEFINE_NULL_INSTANCE (hb_unicode_funcs_t) = hb_unicode_funcs_t * hb_unicode_funcs_get_empty () { - return const_cast (&Null(hb_unicode_funcs_t)); + return const_cast (&Null (hb_unicode_funcs_t)); } /** diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.hh index 0c355f1113b..34d66d7aa3c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.hh @@ -324,10 +324,10 @@ DECLARE_NULL_INSTANCE (hb_unicode_funcs_t); * Modify Telugu length marks (ccc=84, ccc=91). * These are the only matras in the main Indic scripts range that have * a non-zero ccc. That makes them reorder with the Halant (ccc=9). - * Assign 5 and 6, which are otherwise unassigned. + * Assign 4 and 5, which are otherwise unassigned. */ -#define HB_MODIFIED_COMBINING_CLASS_CCC84 5 /* length mark */ -#define HB_MODIFIED_COMBINING_CLASS_CCC91 6 /* ai length mark */ +#define HB_MODIFIED_COMBINING_CLASS_CCC84 4 /* length mark */ +#define HB_MODIFIED_COMBINING_CLASS_CCC91 5 /* ai length mark */ /* Thai * diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-uniscribe.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-uniscribe.cc index e93cf7f419a..48a5dc50adf 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-uniscribe.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-uniscribe.cc @@ -55,7 +55,7 @@ * @short_description: Windows integration * @include: hb-uniscribe.h * - * Functions for using HarfBuzz with the Windows fonts. + * Functions for using HarfBuzz with Windows fonts. **/ typedef HRESULT (WINAPI *SIOT) /*ScriptItemizeOpenType*/( @@ -453,7 +453,7 @@ _hb_rename_font (hb_blob_t *blob, wchar_t *new_name) hb_blob_destroy (blob); return hb_blob_create ((const char *) new_sfnt_data, new_length, - HB_MEMORY_MODE_WRITABLE, nullptr, free); + HB_MEMORY_MODE_WRITABLE, new_sfnt_data, free); } hb_uniscribe_face_data_t * @@ -583,6 +583,16 @@ _hb_uniscribe_shaper_font_data_destroy (hb_uniscribe_font_data_t *data) free (data); } +/** + * hb_uniscribe_font_get_logfontw: + * @font: The #hb_font_t to work upon + * + * Fetches the LOGFONTW structure that corresponds to the + * specified #hb_font_t font. + * + * Return value: a pointer to the LOGFONTW retrieved + * + **/ LOGFONTW * hb_uniscribe_font_get_logfontw (hb_font_t *font) { @@ -590,6 +600,16 @@ hb_uniscribe_font_get_logfontw (hb_font_t *font) return data ? &data->log_font : nullptr; } +/** + * hb_uniscribe_font_get_hfont: + * @font: The #hb_font_t to work upon + * + * Fetches the HFONT handle that corresponds to the + * specified #hb_font_t font. + * + * Return value: the HFONT retreieved + * + **/ HFONT hb_uniscribe_font_get_hfont (hb_font_t *font) { diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-vector.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-vector.hh index 7b150fba054..d979169de30 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-vector.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-vector.hh @@ -117,7 +117,7 @@ struct hb_vector_t { unsigned int i = (unsigned int) i_; if (unlikely (i >= length)) - return Null(Type); + return Null (Type); return arrayZ[i]; } @@ -165,7 +165,7 @@ struct hb_vector_t Type *push () { if (unlikely (!resize (length + 1))) - return &Crap(Type); + return &Crap (Type); return &arrayZ[length - 1]; } template @@ -228,7 +228,7 @@ struct hb_vector_t Type pop () { - if (!length) return Null(Type); + if (!length) return Null (Type); return hb_move (arrayZ[--length]); /* Does this move actually work? */ } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb.h index c5e7072fbac..b0cc06c9ef9 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb.h +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb.h @@ -32,6 +32,7 @@ #include "hb-buffer.h" #include "hb-common.h" #include "hb-deprecated.h" +#include "hb-draw.h" #include "hb-face.h" #include "hb-font.h" #include "hb-map.h" diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb.hh index fcbd330588e..3adca88ff4d 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb.hh @@ -176,6 +176,7 @@ #include #include +#include #include #include #include @@ -317,6 +318,18 @@ extern "C" void hb_free_impl(void *ptr); # define HB_FALLTHROUGH /* FALLTHROUGH */ #endif +/* A tag to enforce use of return value for a function */ +#if __cplusplus >= 201703L +# define HB_NODISCARD [[nodiscard]] +#elif defined(__GNUC__) || defined(__clang__) +# define HB_NODISCARD __attribute__((warn_unused_result)) +#elif defined(_MSC_VER) +# define HB_NODISCARD _Check_return_ +#else +# define HB_NODISCARD +#endif +#define hb_success_t HB_NODISCARD bool + /* https://github.com/harfbuzz/harfbuzz/issues/1852 */ #if defined(__clang__) && !(defined(_AIX) && (defined(__IBMCPP__) || defined(__ibmxl__))) /* Disable certain sanitizer errors. */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/main.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/main.cc index 983cb557db7..e898e6e4b60 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/main.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/main.cc @@ -1,5 +1,7 @@ /* * Copyright © 2007,2008,2009 Red Hat, Inc. + * Copyright © 2018,2019,2020 Ebrahim Byagowi + * Copyright © 2018 Khaled Hosny * * This is part of HarfBuzz, a text shaping library. * @@ -24,48 +26,335 @@ * Red Hat Author(s): Behdad Esfahbod */ -#include "hb-static.cc" -#include "hb-open-file.hh" -#include "hb-ot-layout-gdef-table.hh" -#include "hb-ot-layout-gsubgpos.hh" - -#ifdef HAVE_GLIB -#include +#ifdef HAVE_CONFIG_H +#include "config.h" #endif -#include -#include +#include "hb.h" +#include "hb-ot.h" -using namespace OT; +#include +#include +#include #ifdef HB_NO_OPEN #define hb_blob_create_from_file(x) hb_blob_get_empty () #endif -int -main (int argc, char **argv) +#if !defined(HB_NO_COLOR) && !defined(HB_NO_DRAW) && defined(HB_EXPERIMENTAL_API) +static void +svg_dump (hb_face_t *face, unsigned face_index) { - if (argc != 2) + unsigned glyph_count = hb_face_get_glyph_count (face); + + for (unsigned glyph_id = 0; glyph_id < glyph_count; ++glyph_id) { - fprintf (stderr, "usage: %s font-file.ttf\n", argv[0]); - exit (1); + hb_blob_t *blob = hb_ot_color_glyph_reference_svg (face, glyph_id); + + if (hb_blob_get_length (blob) == 0) continue; + + unsigned length; + const char *data = hb_blob_get_data (blob, &length); + + char output_path[255]; + sprintf (output_path, "out/svg-%u-%u.svg%s", + glyph_id, + face_index, + // append "z" if the content is gzipped, https://stackoverflow.com/a/6059405 + (length > 2 && (data[0] == '\x1F') && (data[1] == '\x8B')) ? "z" : ""); + + FILE *f = fopen (output_path, "wb"); + fwrite (data, 1, length, f); + fclose (f); + + hb_blob_destroy (blob); } +} - hb_blob_t *blob = hb_blob_create_from_file (argv[1]); - unsigned int len; - const char *font_data = hb_blob_get_data (blob, &len); - printf ("Opened font file %s: %d bytes long\n", argv[1], len); +/* _png API is so easy to use unlike the below code, don't get confused */ +static void +png_dump (hb_face_t *face, unsigned face_index) +{ + unsigned glyph_count = hb_face_get_glyph_count (face); + hb_font_t *font = hb_font_create (face); + + /* scans the font for strikes */ + unsigned sample_glyph_id; + /* we don't care about different strikes for different glyphs at this point */ + for (sample_glyph_id = 0; sample_glyph_id < glyph_count; ++sample_glyph_id) + { + hb_blob_t *blob = hb_ot_color_glyph_reference_png (font, sample_glyph_id); + unsigned blob_length = hb_blob_get_length (blob); + hb_blob_destroy (blob); + if (blob_length != 0) + break; + } + + unsigned upem = hb_face_get_upem (face); + unsigned blob_length = 0; + unsigned strike = 0; + for (unsigned ppem = 1; ppem < upem; ++ppem) + { + hb_font_set_ppem (font, ppem, ppem); + hb_blob_t *blob = hb_ot_color_glyph_reference_png (font, sample_glyph_id); + unsigned new_blob_length = hb_blob_get_length (blob); + hb_blob_destroy (blob); + if (new_blob_length != blob_length) + { + for (unsigned glyph_id = 0; glyph_id < glyph_count; ++glyph_id) + { + hb_blob_t *blob = hb_ot_color_glyph_reference_png (font, glyph_id); + + if (hb_blob_get_length (blob) == 0) continue; + + unsigned length; + const char *data = hb_blob_get_data (blob, &length); + + char output_path[255]; + sprintf (output_path, "out/png-%u-%u-%u.png", glyph_id, strike, face_index); + + FILE *f = fopen (output_path, "wb"); + fwrite (data, 1, length, f); + fclose (f); + + hb_blob_destroy (blob); + } + + strike++; + blob_length = new_blob_length; + } + } + + hb_font_destroy (font); +} + +struct user_data_t +{ + FILE *f; + hb_position_t ascender; +}; + +static void +move_to (hb_position_t to_x, hb_position_t to_y, user_data_t &user_data) +{ + fprintf (user_data.f, "M%d,%d", to_x, user_data.ascender - to_y); +} + +static void +line_to (hb_position_t to_x, hb_position_t to_y, user_data_t &user_data) +{ + fprintf (user_data.f, "L%d,%d", to_x, user_data.ascender - to_y); +} + +static void +quadratic_to (hb_position_t control_x, hb_position_t control_y, + hb_position_t to_x, hb_position_t to_y, + user_data_t &user_data) +{ + fprintf (user_data.f, "Q%d,%d %d,%d", control_x, user_data.ascender - control_y, + to_x, user_data.ascender - to_y); +} + +static void +cubic_to (hb_position_t control1_x, hb_position_t control1_y, + hb_position_t control2_x, hb_position_t control2_y, + hb_position_t to_x, hb_position_t to_y, + user_data_t &user_data) +{ + fprintf (user_data.f, "C%d,%d %d,%d %d,%d", control1_x, user_data.ascender - control1_y, + control2_x, user_data.ascender - control2_y, + to_x, user_data.ascender - to_y); +} + +static void +close_path (user_data_t &user_data) +{ + fprintf (user_data.f, "Z"); +} + +static void +layered_glyph_dump (hb_font_t *font, hb_draw_funcs_t *funcs, unsigned face_index) +{ + hb_face_t *face = hb_font_get_face (font); + unsigned palette_count = hb_ot_color_palette_get_count (face); + for (unsigned palette = 0; palette < palette_count; ++palette) + { + unsigned num_colors = hb_ot_color_palette_get_colors (face, palette, 0, nullptr, nullptr); + if (!num_colors) continue; + + hb_color_t *colors = (hb_color_t*) calloc (num_colors, sizeof (hb_color_t)); + hb_ot_color_palette_get_colors (face, palette, 0, &num_colors, colors); + if (!num_colors) + { + free (colors); + continue; + } + + unsigned num_glyphs = hb_face_get_glyph_count (face); + for (hb_codepoint_t gid = 0; gid < num_glyphs; ++gid) + { + unsigned num_layers = hb_ot_color_glyph_get_layers (face, gid, 0, nullptr, nullptr); + if (!num_layers) continue; - hb_blob_t *font_blob = hb_sanitize_context_t().sanitize_blob (blob); + hb_ot_color_layer_t *layers = (hb_ot_color_layer_t*) malloc (num_layers * sizeof (hb_ot_color_layer_t)); + + hb_ot_color_glyph_get_layers (face, gid, 0, &num_layers, layers); + if (num_layers) + { + hb_font_extents_t font_extents; + hb_font_get_extents_for_direction (font, HB_DIRECTION_LTR, &font_extents); + hb_glyph_extents_t extents = {0}; + if (!hb_font_get_glyph_extents (font, gid, &extents)) + { + printf ("Skip gid: %d\n", gid); + continue; + } + + char output_path[255]; + sprintf (output_path, "out/colr-%u-%u-%u.svg", gid, palette, face_index); + FILE *f = fopen (output_path, "wb"); + fprintf (f, "\n", + extents.x_bearing, 0, + extents.x_bearing + extents.width, -extents.height); + user_data_t user_data; + user_data.ascender = extents.y_bearing; + user_data.f = f; + + for (unsigned layer = 0; layer < num_layers; ++layer) + { + hb_color_t color = 0x000000FF; + if (layers[layer].color_index != 0xFFFF) + color = colors[layers[layer].color_index]; + fprintf (f, "\n"); + } + + fprintf (f, ""); + fclose (f); + } + free (layers); + } + + free (colors); + } +} + +static void +dump_glyphs (hb_font_t *font, hb_draw_funcs_t *funcs, unsigned face_index) +{ + unsigned num_glyphs = hb_face_get_glyph_count (hb_font_get_face (font)); + for (unsigned gid = 0; gid < num_glyphs; ++gid) + { + hb_font_extents_t font_extents; + hb_font_get_extents_for_direction (font, HB_DIRECTION_LTR, &font_extents); + hb_glyph_extents_t extents = {0}; + if (!hb_font_get_glyph_extents (font, gid, &extents)) + { + printf ("Skip gid: %d\n", gid); + continue; + } + + char output_path[255]; + sprintf (output_path, "out/%u-%u.svg", face_index, gid); + FILE *f = fopen (output_path, "wb"); + fprintf (f, ""); + fclose (f); + } +} + +static void +dump_glyphs (hb_blob_t *blob, const char *font_name) +{ + FILE *font_name_file = fopen ("out/.dumped_font_name", "r"); + if (font_name_file) + { + fprintf (stderr, "Purge or rename ./out folder if you like to run a glyph dump,\n" + "run it like `rm -rf out && mkdir out && src/main font-file.ttf`\n"); + return; + } + + font_name_file = fopen ("out/.dumped_font_name", "w"); + if (!font_name_file) + { + fprintf (stderr, "./out is not accessible as a folder, create it please\n"); + return; + } + fwrite (font_name, 1, strlen (font_name), font_name_file); + fclose (font_name_file); + + hb_draw_funcs_t *funcs = hb_draw_funcs_create (); + hb_draw_funcs_set_move_to_func (funcs, (hb_draw_move_to_func_t) move_to); + hb_draw_funcs_set_line_to_func (funcs, (hb_draw_line_to_func_t) line_to); + hb_draw_funcs_set_quadratic_to_func (funcs, (hb_draw_quadratic_to_func_t) quadratic_to); + hb_draw_funcs_set_cubic_to_func (funcs, (hb_draw_cubic_to_func_t) cubic_to); + hb_draw_funcs_set_close_path_func (funcs, (hb_draw_close_path_func_t) close_path); + + unsigned num_faces = hb_face_count (blob); + for (unsigned face_index = 0; face_index < num_faces; ++face_index) + { + hb_face_t *face = hb_face_create (blob, face_index); + hb_font_t *font = hb_font_create (face); + + if (hb_ot_color_has_png (face)) + printf ("Dumping png (CBDT/sbix)...\n"); + png_dump (face, face_index); + + if (hb_ot_color_has_svg (face)) + printf ("Dumping svg (SVG )...\n"); + svg_dump (face, face_index); + + if (hb_ot_color_has_layers (face) && hb_ot_color_has_palettes (face)) + printf ("Dumping layered color glyphs (COLR/CPAL)...\n"); + layered_glyph_dump (font, funcs, face_index); + + dump_glyphs (font, funcs, face_index); + + hb_font_destroy (font); + hb_face_destroy (face); + } + + hb_draw_funcs_destroy (funcs); +} +#endif + +#ifndef MAIN_CC_NO_PRIVATE_API +/* Only this part of this mini app uses private API */ +#include "hb-static.cc" +#include "hb-open-file.hh" +#include "hb-ot-layout-gdef-table.hh" +#include "hb-ot-layout-gsubgpos.hh" + +using namespace OT; + +static void +print_layout_info_using_private_api (hb_blob_t *blob) +{ + const char *font_data = hb_blob_get_data (blob, nullptr); + hb_blob_t *font_blob = hb_sanitize_context_t ().sanitize_blob (blob); const OpenTypeFontFile* sanitized = font_blob->as (); if (!font_blob->data) { printf ("Sanitization of the file wasn't successful. Exit"); - return 1; + exit (1); } const OpenTypeFontFile& ot = *sanitized; - switch (ot.get_tag ()) { case OpenTypeFontFile::TrueTypeTag: @@ -91,22 +380,22 @@ main (int argc, char **argv) break; } - int num_fonts = ot.get_face_count (); - printf ("%d font(s) found in file\n", num_fonts); - for (int n_font = 0; n_font < num_fonts; n_font++) + unsigned num_faces = hb_face_count (blob); + printf ("%d font(s) found in file\n", num_faces); + for (unsigned n_font = 0; n_font < num_faces; ++n_font) { const OpenTypeFontFace &font = ot.get_face (n_font); - printf ("Font %d of %d:\n", n_font, num_fonts); + printf ("Font %d of %d:\n", n_font, num_faces); - int num_tables = font.get_table_count (); + unsigned num_tables = font.get_table_count (); printf (" %d table(s) found in font\n", num_tables); - for (int n_table = 0; n_table < num_tables; n_table++) + for (unsigned n_table = 0; n_table < num_tables; ++n_table) { const OpenTypeTable &table = font.get_table (n_table); printf (" Table %2d of %2d: %.4s (0x%08x+0x%08x)\n", n_table, num_tables, (const char *) table.tag, - (unsigned int) table.offset, - (unsigned int) table.length); + (unsigned) table.offset, + (unsigned) table.length); switch (table.tag) { @@ -115,21 +404,22 @@ main (int argc, char **argv) case HB_OT_TAG_GPOS: { - const GSUBGPOS &g = *CastP (font_data + table.offset); + const GSUBGPOS &g = *reinterpret_cast (font_data + table.offset); - int num_scripts = g.get_script_count (); + unsigned num_scripts = g.get_script_count (); printf (" %d script(s) found in table\n", num_scripts); - for (int n_script = 0; n_script < num_scripts; n_script++) + for (unsigned n_script = 0; n_script < num_scripts; ++n_script) { const Script &script = g.get_script (n_script); printf (" Script %2d of %2d: %.4s\n", n_script, num_scripts, - (const char *)g.get_script_tag(n_script)); + (const char *) g.get_script_tag (n_script)); - if (!script.has_default_lang_sys()) + if (!script.has_default_lang_sys ()) printf (" No default language system\n"); int num_langsys = script.get_lang_sys_count (); printf (" %d language system(s) found in script\n", num_langsys); - for (int n_langsys = script.has_default_lang_sys() ? -1 : 0; n_langsys < num_langsys; n_langsys++) { + for (int n_langsys = script.has_default_lang_sys () ? -1 : 0; n_langsys < num_langsys; ++n_langsys) + { const LangSys &langsys = n_langsys == -1 ? script.get_default_lang_sys () : script.get_lang_sys (n_langsys); @@ -137,16 +427,16 @@ main (int argc, char **argv) printf (" Default Language System\n"); else printf (" Language System %2d of %2d: %.4s\n", n_langsys, num_langsys, - (const char *)script.get_lang_sys_tag (n_langsys)); + (const char *) script.get_lang_sys_tag (n_langsys)); if (!langsys.has_required_feature ()) printf (" No required feature\n"); else printf (" Required feature index: %d\n", langsys.get_required_feature_index ()); - int num_features = langsys.get_feature_count (); + unsigned num_features = langsys.get_feature_count (); printf (" %d feature(s) found in language system\n", num_features); - for (int n_feature = 0; n_feature < num_features; n_feature++) + for (unsigned n_feature = 0; n_feature < num_features; ++n_feature) { printf (" Feature index %2d of %2d: %d\n", n_feature, num_features, langsys.get_feature_index (n_feature)); @@ -154,29 +444,29 @@ main (int argc, char **argv) } } - int num_features = g.get_feature_count (); + unsigned num_features = g.get_feature_count (); printf (" %d feature(s) found in table\n", num_features); - for (int n_feature = 0; n_feature < num_features; n_feature++) + for (unsigned n_feature = 0; n_feature < num_features; ++n_feature) { const Feature &feature = g.get_feature (n_feature); - int num_lookups = feature.get_lookup_count (); + unsigned num_lookups = feature.get_lookup_count (); printf (" Feature %2d of %2d: %c%c%c%c\n", n_feature, num_features, - HB_UNTAG(g.get_feature_tag(n_feature))); + HB_UNTAG (g.get_feature_tag (n_feature))); printf (" %d lookup(s) found in feature\n", num_lookups); - for (int n_lookup = 0; n_lookup < num_lookups; n_lookup++) { + for (unsigned n_lookup = 0; n_lookup < num_lookups; ++n_lookup) { printf (" Lookup index %2d of %2d: %d\n", n_lookup, num_lookups, feature.get_lookup_index (n_lookup)); } } - int num_lookups = g.get_lookup_count (); + unsigned num_lookups = g.get_lookup_count (); printf (" %d lookup(s) found in table\n", num_lookups); - for (int n_lookup = 0; n_lookup < num_lookups; n_lookup++) + for (unsigned n_lookup = 0; n_lookup < num_lookups; ++n_lookup) { const Lookup &lookup = g.get_lookup (n_lookup); printf (" Lookup %2d of %2d: type %d, props 0x%04X\n", n_lookup, num_lookups, - lookup.get_type(), lookup.get_props()); + lookup.get_type (), lookup.get_props ()); } } @@ -185,7 +475,7 @@ main (int argc, char **argv) case GDEF::tableTag: { - const GDEF &gdef = *CastP (font_data + table.offset); + const GDEF &gdef = *reinterpret_cast (font_data + table.offset); printf (" Has %sglyph classes\n", gdef.has_glyph_classes () ? "" : "no "); @@ -202,6 +492,28 @@ main (int argc, char **argv) } } } +} +/* end of private API use */ +#endif + +int +main (int argc, char **argv) +{ + if (argc != 2) + { + fprintf (stderr, "usage: %s font-file.ttf\n", argv[0]); + exit (1); + } + + hb_blob_t *blob = hb_blob_create_from_file (argv[1]); + printf ("Opened font file %s: %d bytes long\n", argv[1], hb_blob_get_length (blob)); +#ifndef MAIN_CC_NO_PRIVATE_API + print_layout_info_using_private_api (blob); +#endif +#if !defined(HB_NO_COLOR) && !defined(HB_NO_DRAW) && defined(HB_EXPERIMENTAL_API) + dump_glyphs (blob, argv[1]); +#endif + hb_blob_destroy (blob); return 0; } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/meson.build b/Build/source/libs/harfbuzz/harfbuzz-src/src/meson.build new file mode 100644 index 00000000000..5193269b67f --- /dev/null +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/meson.build @@ -0,0 +1,669 @@ +# Base and default-included sources and headers +hb_base_sources = [ + 'hb-aat-fdsc-table.hh', + 'hb-aat-layout-ankr-table.hh', + 'hb-aat-layout-bsln-table.hh', + 'hb-aat-layout-common.hh', + 'hb-aat-layout-feat-table.hh', + 'hb-aat-layout-just-table.hh', + 'hb-aat-layout-kerx-table.hh', + 'hb-aat-layout-lcar-table.hh', + 'hb-aat-layout-morx-table.hh', + 'hb-aat-layout-opbd-table.hh', + 'hb-aat-layout-trak-table.hh', + 'hb-aat-layout.cc', + 'hb-aat-layout.hh', + 'hb-aat-ltag-table.hh', + 'hb-aat-map.cc', + 'hb-aat-map.hh', + 'hb-algs.hh', + 'hb-array.hh', + 'hb-atomic.hh', + 'hb-blob.cc', + 'hb-blob.hh', + 'hb-buffer-serialize.cc', + 'hb-buffer.cc', + 'hb-buffer.hh', + 'hb-cache.hh', + 'hb-cff-interp-common.hh', + 'hb-cff-interp-cs-common.hh', + 'hb-cff-interp-dict-common.hh', + 'hb-cff1-interp-cs.hh', + 'hb-cff2-interp-cs.hh', + 'hb-common.cc', + 'hb-config.hh', + 'hb-debug.hh', + 'hb-dispatch.hh', + 'hb-draw.cc', + 'hb-draw.hh', + 'hb-face.cc', + 'hb-face.hh', + 'hb-fallback-shape.cc', + 'hb-font.cc', + 'hb-font.hh', + 'hb-iter.hh', + 'hb-kern.hh', + 'hb-machinery.hh', + 'hb-map.cc', + 'hb-map.hh', + 'hb-bimap.hh', + 'hb-meta.hh', + 'hb-mutex.hh', + 'hb-null.hh', + 'hb-number.cc', + 'hb-number.hh', + 'hb-object.hh', + 'hb-open-file.hh', + 'hb-open-type.hh', + 'hb-ot-cff-common.hh', + 'hb-ot-cff1-table.cc', + 'hb-ot-cff1-table.hh', + 'hb-ot-cff1-std-str.hh', + 'hb-ot-cff2-table.cc', + 'hb-ot-cff2-table.hh', + 'hb-ot-cmap-table.hh', + 'hb-ot-color-cbdt-table.hh', + 'hb-ot-color-colr-table.hh', + 'hb-ot-color-cpal-table.hh', + 'hb-ot-color-sbix-table.hh', + 'hb-ot-color-svg-table.hh', + 'hb-ot-color.cc', + 'hb-ot-face.cc', + 'hb-ot-face.hh', + 'hb-ot-face-table-list.hh', + 'hb-ot-font.cc', + 'hb-ot-gasp-table.hh', + 'hb-ot-glyf-table.hh', + 'hb-ot-hdmx-table.hh', + 'hb-ot-head-table.hh', + 'hb-ot-hhea-table.hh', + 'hb-ot-hmtx-table.hh', + 'hb-ot-kern-table.hh', + 'hb-ot-layout-base-table.hh', + 'hb-ot-layout-common.hh', + 'hb-ot-layout-gdef-table.hh', + 'hb-ot-layout-gpos-table.hh', + 'hb-ot-layout-gsub-table.hh', + 'hb-ot-layout-gsubgpos.hh', + 'hb-ot-layout-jstf-table.hh', + 'hb-ot-layout.cc', + 'hb-ot-layout.hh', + 'hb-ot-map.cc', + 'hb-ot-map.hh', + 'hb-ot-math-table.hh', + 'hb-ot-math.cc', + 'hb-ot-maxp-table.hh', + 'hb-ot-meta-table.hh', + 'hb-ot-meta.cc', + 'hb-ot-metrics.cc', + 'hb-ot-metrics.hh', + 'hb-ot-name-language-static.hh', + 'hb-ot-name-language.hh', + 'hb-ot-name-table.hh', + 'hb-ot-name.cc', + 'hb-ot-os2-table.hh', + 'hb-ot-os2-unicode-ranges.hh', + 'hb-ot-post-macroman.hh', + 'hb-ot-post-table.hh', + 'hb-ot-shape-complex-arabic-fallback.hh', + 'hb-ot-shape-complex-arabic-table.hh', + 'hb-ot-shape-complex-arabic-win1256.hh', + 'hb-ot-shape-complex-arabic.cc', + 'hb-ot-shape-complex-arabic.hh', + 'hb-ot-shape-complex-default.cc', + 'hb-ot-shape-complex-hangul.cc', + 'hb-ot-shape-complex-hebrew.cc', + 'hb-ot-shape-complex-indic-table.cc', + 'hb-ot-shape-complex-indic.cc', + 'hb-ot-shape-complex-indic.hh', + 'hb-ot-shape-complex-khmer.cc', + 'hb-ot-shape-complex-khmer.hh', + 'hb-ot-shape-complex-myanmar.cc', + 'hb-ot-shape-complex-myanmar.hh', + 'hb-ot-shape-complex-thai.cc', + 'hb-ot-shape-complex-use-table.cc', + 'hb-ot-shape-complex-use.cc', + 'hb-ot-shape-complex-use.hh', + 'hb-ot-shape-complex-vowel-constraints.cc', + 'hb-ot-shape-complex-vowel-constraints.hh', + 'hb-ot-shape-complex.hh', + 'hb-ot-shape-fallback.cc', + 'hb-ot-shape-fallback.hh', + 'hb-ot-shape-normalize.cc', + 'hb-ot-shape-normalize.hh', + 'hb-ot-shape.cc', + 'hb-ot-shape.hh', + 'hb-ot-stat-table.hh', + 'hb-ot-tag-table.hh', + 'hb-ot-tag.cc', + 'hb-ot-var-avar-table.hh', + 'hb-ot-var-fvar-table.hh', + 'hb-ot-var-gvar-table.hh', + 'hb-ot-var-hvar-table.hh', + 'hb-ot-var-mvar-table.hh', + 'hb-ot-var.cc', + 'hb-ot-vorg-table.hh', + 'hb-pool.hh', + 'hb-sanitize.hh', + 'hb-serialize.hh', + 'hb-set-digest.hh', + 'hb-set.cc', + 'hb-set.hh', + 'hb-shape-plan.cc', + 'hb-shape-plan.hh', + 'hb-shape.cc', + 'hb-shaper-impl.hh', + 'hb-shaper-list.hh', + 'hb-shaper.cc', + 'hb-shaper.hh', + 'hb-static.cc', + 'hb-string-array.hh', + 'hb-ucd-table.hh', + 'hb-ucd.cc', + 'hb-unicode-emoji-table.hh', + 'hb-unicode.cc', + 'hb-unicode.hh', + 'hb-utf.hh', + 'hb-vector.hh', + 'hb.hh', +] + +hb_base_ragel_generated_sources = [ + 'hb-buffer-deserialize-json.hh', + 'hb-buffer-deserialize-text.hh', + 'hb-number-parser.hh', + 'hb-ot-shape-complex-indic-machine.hh', + 'hb-ot-shape-complex-khmer-machine.hh', + 'hb-ot-shape-complex-myanmar-machine.hh', + 'hb-ot-shape-complex-use-machine.hh', +] +hb_base_ragel_sources = [ + 'hb-buffer-deserialize-json.rl', + 'hb-buffer-deserialize-text.rl', + 'hb-number-parser.rl', + 'hb-ot-shape-complex-indic-machine.rl', + 'hb-ot-shape-complex-khmer-machine.rl', + 'hb-ot-shape-complex-myanmar-machine.rl', + 'hb-ot-shape-complex-use-machine.rl', +] + +hb_base_headers = [ + 'hb-aat-layout.h', + 'hb-aat.h', + 'hb-blob.h', + 'hb-buffer.h', + 'hb-common.h', + 'hb-deprecated.h', + 'hb-draw.h', + 'hb-face.h', + 'hb-font.h', + 'hb-map.h', + 'hb-ot-color.h', + 'hb-ot-deprecated.h', + 'hb-ot-font.h', + 'hb-ot-layout.h', + 'hb-ot-math.h', + 'hb-ot-meta.h', + 'hb-ot-metrics.h', + 'hb-ot-name.h', + 'hb-ot-shape.h', + 'hb-ot-var.h', + 'hb-ot.h', + 'hb-set.h', + 'hb-shape-plan.h', + 'hb-shape.h', + 'hb-unicode.h', + 'hb-version.h', + 'hb.h', +] + +# Optional Sources and Headers with external deps + +hb_ft_sources = ['hb-ft.cc'] +hb_ft_headers = ['hb-ft.h'] + +hb_glib_sources = ['hb-glib.cc'] +hb_glib_headers = ['hb-glib.h'] + +hb_graphite2_sources = ['hb-graphite2.cc'] +hb_graphite2_headers = ['hb-graphite2.h'] + +# System-dependent sources and headers + +hb_coretext_sources = ['hb-coretext.cc'] +hb_coretext_headers = ['hb-coretext.h'] + +hb_directwrite_sources = ['hb-directwrite.cc'] +hb_directwrite_headers = ['hb-directwrite.h'] + +hb_gdi_sources = ['hb-gdi.cc'] +hb_gdi_headers = ['hb-gdi.h'] + +hb_uniscribe_sources = ['hb-uniscribe.cc'] +hb_uniscribe_headers = ['hb-uniscribe.h'] + +# Sources for libharfbuzz-gobject and libharfbuzz-icu +hb_icu_sources = ['hb-icu.cc'] +hb_icu_headers = ['hb-icu.h'] + +# Sources for libharfbuzz-subset +hb_subset_sources = [ + 'hb-number.cc', + 'hb-number.hh', + 'hb-ot-cff1-table.cc', + 'hb-ot-cff2-table.cc', + 'hb-static.cc', + 'hb-subset-cff-common.cc', + 'hb-subset-cff-common.hh', + 'hb-subset-cff1.cc', + 'hb-subset-cff1.hh', + 'hb-subset-cff2.cc', + 'hb-subset-cff2.hh', + 'hb-subset-input.cc', + 'hb-subset-input.hh', + 'hb-subset-plan.cc', + 'hb-subset-plan.hh', + 'hb-subset-plan.hh', + 'hb-subset.cc', + 'hb-subset.hh', + 'hb-subset.hh', +] + +hb_subset_headers = ['hb-subset.h'] + +hb_gobject_sources = [ + 'hb-gobject-structs.cc' +] + +hb_gobject_headers = [ + 'hb-gobject.h', + 'hb-gobject-structs.h', +] + +incsrc = include_directories('.') + +hb_sources = hb_base_sources + hb_base_ragel_generated_sources +hb_headers = hb_base_headers + +if conf.get('HAVE_FREETYPE', 0) == 1 + hb_sources += hb_ft_sources + hb_headers += hb_ft_headers +endif + +if conf.get('HAVE_GDI', 0) == 1 + hb_sources += hb_gdi_sources + hb_headers += hb_gdi_headers +endif + +if conf.get('HAVE_GRAPHITE2', 0) == 1 + hb_sources += hb_graphite2_sources + hb_headers += hb_graphite2_headers +endif + +if conf.get('HAVE_GLIB', 0) == 1 + hb_sources += hb_glib_sources + hb_headers += hb_glib_headers +endif + +if conf.get('HAVE_UNISCRIBE', 0) == 1 + hb_sources += hb_uniscribe_sources + hb_headers += hb_uniscribe_headers +endif + +if conf.get('HAVE_DIRECTWRITE', 0) == 1 + hb_sources += hb_directwrite_sources + hb_headers += hb_directwrite_headers +endif + +if conf.get('HAVE_CORETEXT', 0) == 1 + hb_sources += hb_coretext_sources + hb_headers += hb_coretext_headers +endif + +if get_option('amalgam') + # replace the array if is amalgam build + hb_sources = ['harfbuzz.cc'] +endif + +have_icu = conf.get('HAVE_ICU', 0) == 1 +have_icu_builtin = conf.get('HAVE_ICU_BUILTIN', 0) == 1 + +if have_icu and have_icu_builtin + hb_sources += hb_icu_sources + hb_headers += hb_icu_headers + deps += [icu_dep] +endif + +if host_machine.system() == 'windows' or get_option('with-libstdcxx') + chosen_linker = 'cpp' +else + # our autotools port was limiting this to HAVE_GCC as https://github.com/harfbuzz/harfbuzz/commit/e784632 + # let's see if that is needed anymore + + # Use a C linker, not C++; Don't link to libstdc++ + chosen_linker = 'c' +endif + +# harfbuzz +gen_def = find_program('gen-def.py') + +harfbuzz_def_command_args = [gen_def, '@OUTPUT@', '@INPUT@'] +if get_option('experimental-api') + harfbuzz_def_command_args += '--experimental-api' +endif + +harfbuzz_def = custom_target('harfbuzz.def', + command: harfbuzz_def_command_args, + input: hb_headers, + output: 'harfbuzz.def') +defs_list = [harfbuzz_def] + +version = '0.' + '0'.join(meson.project_version().split('.')) + '.0' + +extra_hb_cpp_args = [] +if cpp.get_id() == 'msvc' + if get_option('default_library') == 'shared' + extra_hb_cpp_args += '-DHB_DLL_EXPORT' + endif + hb_so_version = '' +else + hb_so_version = '0' +endif + +libharfbuzz = library('harfbuzz', hb_sources, + include_directories: incconfig, + dependencies: deps, + cpp_args: cpp_args + extra_hb_cpp_args, + soversion: hb_so_version, + version: version, + install: true, + link_language: chosen_linker, +) + +libharfbuzz_dep = declare_dependency( + link_with: libharfbuzz, + include_directories: incsrc, + dependencies: deps) + +# harfbuzz-subset +harfbuzz_subset_def = custom_target('harfbuzz-subset.def', + command: [gen_def, '@OUTPUT@', '@INPUT@'], + input: hb_subset_headers, + output: 'harfbuzz-subset.def') +defs_list += [harfbuzz_subset_def] + +libharfbuzz_subset = library('harfbuzz-subset', hb_subset_sources, + include_directories: incconfig, + dependencies: deps, + link_with: [libharfbuzz], + cpp_args: cpp_args + extra_hb_cpp_args, + soversion: hb_so_version, + version: version, + install: true, + link_language: chosen_linker, +) + +libharfbuzz_subset_dep = declare_dependency( + link_with: libharfbuzz_subset, + include_directories: incsrc, + dependencies: deps) + +if get_option('tests').enabled() + # TODO: MSVC gives the following, + # error LNK2019: unresolved external symbol "unsigned __int64 const * const _hb_NullPool" + if cpp.get_id() != 'msvc' + noinst_programs = { + 'main': 'main.cc', + 'test-basics': 'test.cc', + 'test-buffer-serialize': 'test-buffer-serialize.cc', + 'test-ot-meta': 'test-ot-meta.cc', + 'test-ot-name': 'test-ot-name.cc', + 'test-ot-glyphname': 'test-ot-glyphname.cc', + 'test-ot-gpos-size-params': 'test-gpos-size-params.cc', + 'test-ot-gsub-would-substitute': 'test-gsub-would-substitute.cc', + } + foreach name, source : noinst_programs + executable(name, source, + include_directories: incconfig, + cpp_args: cpp_args, + dependencies: libharfbuzz_dep, + install: false, + ) + endforeach + endif + + check_programs = { + 'dump-indic-data': ['dump-indic-data.cc', 'hb-ot-shape-complex-indic-table.cc'], + 'dump-khmer-data': ['dump-khmer-data.cc', 'hb-ot-shape-complex-indic-table.cc'], + 'dump-myanmar-data': ['dump-myanmar-data.cc', 'hb-ot-shape-complex-indic-table.cc'], + 'dump-use-data': ['dump-use-data.cc', 'hb-ot-shape-complex-use-table.cc'], + } + foreach name, source : check_programs + executable(name, source, + include_directories: incconfig, + cpp_args: cpp_args, + dependencies: libharfbuzz_dep, + install: false, + ) + endforeach + + compiled_tests = { + 'test-array': 'test-array.cc', + 'test-number': ['test-number.cc', 'hb-number.cc'], + 'test-ot-tag': 'hb-ot-tag.cc', + 'test-unicode-ranges': 'test-unicode-ranges.cc', + } + if cpp.get_id() != 'msvc' + # TODO: MSVC doesn't like these, fix them + compiled_tests += { + 'test-algs': ['test-algs.cc', 'hb-static.cc'], + 'test-bimap': ['test-bimap.cc', 'hb-static.cc'], + 'test-iter': ['test-iter.cc', 'hb-static.cc'], + 'test-meta': ['test-meta.cc', 'hb-static.cc'], + } + endif + foreach name, source : compiled_tests + test(name, executable(name, source, + include_directories: incconfig, + cpp_args: cpp_args + ['-DMAIN', '-UNDEBUG'], + dependencies: libharfbuzz_dep, + install: false, + )) + endforeach + + if host_machine.system() != 'windows' and not meson.is_cross_build() + # Some of them should be ported to python + dist_check_script = [ + 'check-c-linkage-decls.sh', + 'check-externs.sh', + 'check-header-guards.sh', + 'check-static-inits.sh', + ] + if not get_option('amalgam') + dist_check_script += 'check-includes.sh' + endif + if false and not get_option('with-libstdcxx') + # enable this once https://github.com/mesonbuild/meson/pull/6838 hits a release + # and make that version (i.e. 0.55) our minimum build requirement + dist_check_script += 'check-libstdc++.sh' # See https://github.com/harfbuzz/harfbuzz/issues/2276 + endif + + env = environment() + env.set('srcdir', meson.current_source_dir()) + env.set('builddir', meson.current_build_dir()) + env.set('libs', meson.current_build_dir()) # TODO: Merge this with builddir after autotools removal + env.set('HBSOURCES', ' '.join(hb_sources)) + env.set('HBHEADERS', ' '.join(hb_headers)) + + foreach name : dist_check_script + test(name, find_program(name), env: env) + endforeach + endif +endif + +pkgmod.generate(libharfbuzz, + description: 'HarfBuzz text shaping library', + subdirs: [meson.project_name()], + version: meson.project_version(), +) + +pkgmod.generate(libharfbuzz_subset, + description: 'HarfBuzz font subsetter', + subdirs: [meson.project_name()], + version: meson.project_version(), +) + +if have_icu and not have_icu_builtin + harfbuzz_icu_def = custom_target('harfbuzz-icu.def', + command: [gen_def, '@OUTPUT@', '@INPUT@'], + input: [hb_icu_headers], + output: 'harfbuzz-icu.def') + defs_list += [harfbuzz_icu_def] + + libharfbuzz_icu = library('harfbuzz-icu', [hb_icu_sources, hb_icu_headers], + include_directories: incconfig, + dependencies: icu_dep, + link_with: [libharfbuzz], + cpp_args: cpp_args + extra_hb_cpp_args, + soversion: hb_so_version, + version: version, + install: true, + # ICU links to stdc++ anyway so the default linker is good + # link_language: chosen_linker, + ) + + libharfbuzz_icu_dep = declare_dependency( + link_with: libharfbuzz_icu, + include_directories: incsrc, + dependencies: deps) + + pkgmod.generate(libharfbuzz_icu, + description: 'HarfBuzz text shaping library ICU integration', + subdirs: [meson.project_name()], + version: meson.project_version(), + ) + + install_headers(hb_icu_headers, subdir: meson.project_name()) +else + libharfbuzz_icu_dep = dependency('', required: false) +endif + +have_gobject = conf.get('HAVE_GOBJECT', 0) == 1 + +cmake_config = configuration_data() +cmake_config.set('libdir', '${prefix}/@0@'.format(get_option('libdir'))) +cmake_config.set('includedir', '${prefix}/@0@'.format(get_option('includedir'))) +cmake_config.set('HB_LIBTOOL_VERSION_INFO', hb_libtool_version_info) +cmake_config.set('have_gobject', have_gobject ? 'true' : 'false') +configure_file(input: 'harfbuzz-config.cmake.in', + output: 'harfbuzz-config.cmake', + configuration: cmake_config, + install_dir: join_paths(get_option('libdir'), 'cmake', 'harfbuzz')) + +if have_gobject + gnome = import('gnome') + + h_templ = configure_file( + input: 'hb-gobject-enums.h.tmpl', + output: 'hb-gobject-enums-tmp.h.tmpl', + configuration: configuration_data(), + format: 'cmake') + + cc_templ = configure_file( + input: 'hb-gobject-enums.cc.tmpl', + output: 'hb-gobject-enums-tmp.cc.tmpl', + configuration: configuration_data(), + format: 'cmake') + + enums = gnome.mkenums('hb-gobject', + sources: hb_headers, + h_template: h_templ, + c_template: cc_templ, + identifier_prefix: 'hb_', + symbol_prefix: 'hb_gobject', + ) + + enum_c = custom_target('hb-gobject-enums.cc', + input: enums[0], + output: 'hb-gobject-enums.cc', + command: [python3, files('fix_get_types.py')[0], '@INPUT@', '@OUTPUT@'] + ) + + enum_h = custom_target('hb-gobject-enums.h', + input: enums[1], + output: 'hb-gobject-enums.h', + command: [python3, files('fix_get_types.py')[0], '@INPUT@', '@OUTPUT@'], + install: true, + install_dir: join_paths(get_option('prefix'), get_option('includedir'), meson.project_name()), + ) + + hb_gobject_sources += [enum_c] + + harfbuzz_gobject_def = custom_target('harfbuzz-gobject.def', + command: [gen_def, '@OUTPUT@', '@INPUT@'], + input: [hb_gobject_headers, enum_h], + output: 'harfbuzz-gobject.def') + defs_list += [harfbuzz_gobject_def] + + libharfbuzz_gobject = library('harfbuzz-gobject', [hb_gobject_sources, enum_c, enum_h], + include_directories: incconfig, + dependencies: deps, + link_with: [libharfbuzz], + cpp_args: cpp_args + extra_hb_cpp_args, + soversion: hb_so_version, + version: version, + install: true, + link_language: chosen_linker, + ) + + gir = find_program('g-ir-scanner', required: get_option('introspection')) + build_gir = gir.found() and not meson.is_cross_build() + + if build_gir + hb_gen_files_gir = gnome.generate_gir(libharfbuzz, libharfbuzz_gobject, + sources: [hb_headers, hb_sources, hb_gobject_headers, hb_gobject_sources, enum_h], + namespace: 'HarfBuzz', + nsversion: '0.0', + identifier_prefix: 'hb_', + symbol_prefix: ['hb', 'hb_gobject'], + includes: ['GObject-2.0'], + export_packages: ['harfbuzz-gobject'], + header: 'hb-gobject.h', + install: true, + extra_args: ['--cflags-begin', + '-DHB_H', + '-DHB_H_IN', + '-DHB_OT_H', + '-DHB_OT_H_IN', + '-DHB_AAT_H', + '-DHB_AAT_H_IN', + '-DHB_GOBJECT_H', + '-DHB_GOBJECT_H_IN', + '-DHB_EXTERN=', + '--cflags-end']) + endif + + libharfbuzz_gobject_dep = declare_dependency( + link_with: libharfbuzz_gobject, + include_directories: incsrc, + sources: build_gir ? hb_gen_files_gir : hb_gobject_sources, + dependencies: deps) + + pkgmod.generate(libharfbuzz_gobject, + description: 'HarfBuzz text shaping library GObject integration', + subdirs: [meson.project_name()], + version: meson.project_version(), + ) + + install_headers(hb_gobject_headers, subdir: meson.project_name()) +else + libharfbuzz_gobject_dep = dependency('', required: false) +endif + +if get_option('tests').enabled() and host_machine.system() != 'windows' and not meson.is_cross_build() + test('check-symbols.sh', find_program('check-symbols.sh'), + depends: defs_list, + env: env) +endif + +install_headers(hb_headers + hb_subset_headers, subdir: meson.project_name()) diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/test-array.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/test-array.cc new file mode 100644 index 00000000000..6c888138e74 --- /dev/null +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/test-array.cc @@ -0,0 +1,76 @@ +/* + * Copyright © 2020 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): Garret Rieger + */ + +#include "hb.hh" +#include "hb-array.hh" + +static void +test_reverse () +{ + int values[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; + hb_array_t a (values, 9); + a.reverse(); + + int expected_values[] = {9, 8, 7, 6, 5, 4, 3, 2, 1}; + hb_array_t expected (expected_values, 9); + assert (a == expected); +} + +static void +test_reverse_range () +{ + int values[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; + hb_array_t a (values, 9); + a.reverse(2, 6); + + int expected_values[] = {1, 2, 6, 5, 4, 3, 7, 8, 9}; + hb_array_t expected (expected_values, 9); + assert (a == expected); +} + +static void +test_reverse_invalid () +{ + int values[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; + hb_array_t a (values, 9); + + a.reverse(4, 3); + a.reverse(2, 3); + a.reverse(5, 5); + a.reverse(12, 15); + + int expected_values[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; + hb_array_t expected (expected_values, 9); + assert (a == expected); +} + +int +main (int argc, char **argv) +{ + test_reverse (); + test_reverse_range (); + test_reverse_invalid (); +} diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/test-buffer-serialize.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/test-buffer-serialize.cc index 6393f0b7f68..0e78099ce9f 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/test-buffer-serialize.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/test-buffer-serialize.cc @@ -68,7 +68,7 @@ main (int argc, char **argv) buf = hb_buffer_create (); char line[BUFSIZ], out[BUFSIZ]; - while (fgets (line, sizeof(line), stdin) != nullptr) + while (fgets (line, sizeof(line), stdin)) { hb_buffer_clear_contents (buf); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/test-iter.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/test-iter.cc index 9c83171889f..fd201c85e88 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/test-iter.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/test-iter.cc @@ -105,7 +105,7 @@ test_iterator (Iter it) template static void -test_iterable (const Iterable &lst = Null(Iterable)) +test_iterable (const Iterable &lst = Null (Iterable)) { for (auto _ : lst) (void) _; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/test-meta.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/test-meta.cc index 0b6e02c269c..9436b9038e0 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/test-meta.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/test-meta.cc @@ -29,6 +29,8 @@ #include +template struct U { typedef T type; }; + int main (int argc, char **argv) { @@ -122,6 +124,9 @@ main (int argc, char **argv) static_assert (hb_is_trivial (X), ""); static_assert (hb_is_trivial (Y), ""); + static_assert (hb_is_signed (hb_unwrap_type (U>>)), ""); + static_assert (hb_is_unsigned (hb_unwrap_type (U>>>)), ""); + /* TODO Add more meaningful tests. */ return 0; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/test-number.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/test-number.cc index 3591b13f278..57835288c42 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/test-number.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/test-number.cc @@ -25,7 +25,6 @@ #include "hb.hh" #include "hb-number.hh" -#include "hb-number-parser.hh" int @@ -146,11 +145,6 @@ main (int argc, char **argv) assert ((int) roundf (pv * 1000.) == 123); assert (pp - str == 4); assert (end - pp == 1); - - /* Test strtod_rl even if libc's strtod_l is used */ - char *pend; - assert ((int) roundf (strtod_rl (str, &pend) * 1000.) == 123); - assert (pend - str == 4); } { @@ -163,10 +157,6 @@ main (int argc, char **argv) assert ((int) roundf (pv * 1000.) == 123); assert (pp - str == 5); assert (end - pp == 0); - - char *pend; - assert ((int) roundf (strtod_rl (str, &pend) * 1000.) == 123); - assert (pend - str == 5); } { @@ -179,10 +169,6 @@ main (int argc, char **argv) assert ((int) roundf (pv * 1000.) == 123); assert (pp - str == 7); assert (end - pp == 0); - - char *pend; - assert ((int) roundf (strtod_rl (str, &pend) * 1000.) == 123); - assert (pend - str == 7); } { @@ -195,10 +181,6 @@ main (int argc, char **argv) assert ((int) roundf (pv * 1000.) == 123); assert (pp - str == 6); assert (end - pp == 0); - - char *pend; - assert ((int) roundf (strtod_rl (str, &pend) * 1000.) == 123); - assert (pend - str == 6); } { @@ -211,10 +193,6 @@ main (int argc, char **argv) assert ((int) roundf (pv * 1000.) == 123); assert (pp - str == 10); assert (end - pp == 0); - - char *pend; - assert ((int) roundf (strtod_rl (str, &pend) * 1000.) == 123); - assert (pend - str == 10); } { @@ -228,9 +206,6 @@ main (int argc, char **argv) assert (pp - str == 13); assert (end - pp == 0); - char *pend; - assert ((int) roundf (strtod_rl (str, &pend) * 1000.) == -123); - assert (pend - str == 13); } { @@ -243,10 +218,6 @@ main (int argc, char **argv) assert ((int) roundf (pv * 1000.) == -123); assert (pp - str == 8); assert (end - pp == 0); - - char *pend; - assert ((int) roundf (strtod_rl (str, &pend) * 1000.) == -123); - assert (pend - str == 8); } return 0; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/test-ot-color.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/test-ot-color.cc deleted file mode 100644 index 88924b44734..00000000000 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/test-ot-color.cc +++ /dev/null @@ -1,348 +0,0 @@ -/* - * Copyright © 2018 Ebrahim Byagowi - * Copyright © 2018 Khaled Hosny - * - * 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. - */ - -#include "hb.hh" - -#include - -#ifdef HB_NO_OPEN -#define hb_blob_create_from_file(x) hb_blob_get_empty () -#endif - -#if !defined(HB_NO_COLOR) && defined(CAIRO_HAS_SVG_SURFACE) - -#include "hb-ot.h" - -#include "hb-ft.h" - -#include -#include FT_FREETYPE_H -#include FT_GLYPH_H - -#include -#include - -#include -#include - -static void -svg_dump (hb_face_t *face, unsigned int face_index) -{ - unsigned glyph_count = hb_face_get_glyph_count (face); - - for (unsigned int glyph_id = 0; glyph_id < glyph_count; glyph_id++) - { - hb_blob_t *blob = hb_ot_color_glyph_reference_svg (face, glyph_id); - - if (hb_blob_get_length (blob) == 0) continue; - - unsigned int length; - const char *data = hb_blob_get_data (blob, &length); - - char output_path[255]; - sprintf (output_path, "out/svg-%u-%u.svg%s", - glyph_id, - face_index, - // append "z" if the content is gzipped, https://stackoverflow.com/a/6059405 - (length > 2 && (data[0] == '\x1F') && (data[1] == '\x8B')) ? "z" : ""); - - FILE *f = fopen (output_path, "wb"); - fwrite (data, 1, length, f); - fclose (f); - - hb_blob_destroy (blob); - } -} - -/* _png API is so easy to use unlike the below code, don't get confused */ -static void -png_dump (hb_face_t *face, unsigned int face_index) -{ - unsigned glyph_count = hb_face_get_glyph_count (face); - hb_font_t *font = hb_font_create (face); - - /* scans the font for strikes */ - unsigned int sample_glyph_id; - /* we don't care about different strikes for different glyphs at this point */ - for (sample_glyph_id = 0; sample_glyph_id < glyph_count; sample_glyph_id++) - { - hb_blob_t *blob = hb_ot_color_glyph_reference_png (font, sample_glyph_id); - unsigned int blob_length = hb_blob_get_length (blob); - hb_blob_destroy (blob); - if (blob_length != 0) - break; - } - - unsigned int upem = hb_face_get_upem (face); - unsigned int blob_length = 0; - unsigned int strike = 0; - for (unsigned int ppem = 1; ppem < upem; ppem++) - { - hb_font_set_ppem (font, ppem, ppem); - hb_blob_t *blob = hb_ot_color_glyph_reference_png (font, sample_glyph_id); - unsigned int new_blob_length = hb_blob_get_length (blob); - hb_blob_destroy (blob); - if (new_blob_length != blob_length) - { - for (unsigned int glyph_id = 0; glyph_id < glyph_count; glyph_id++) - { - hb_blob_t *blob = hb_ot_color_glyph_reference_png (font, glyph_id); - - if (hb_blob_get_length (blob) == 0) continue; - - unsigned int length; - const char *data = hb_blob_get_data (blob, &length); - - char output_path[255]; - sprintf (output_path, "out/png-%u-%u-%u.png", glyph_id, strike, face_index); - - FILE *f = fopen (output_path, "wb"); - fwrite (data, 1, length, f); - fclose (f); - - hb_blob_destroy (blob); - } - - strike++; - blob_length = new_blob_length; - } - } - - hb_font_destroy (font); -} - -static void -layered_glyph_dump (hb_face_t *face, cairo_font_face_t *cairo_face, unsigned int face_index) -{ - unsigned int upem = hb_face_get_upem (face); - - unsigned glyph_count = hb_face_get_glyph_count (face); - for (hb_codepoint_t gid = 0; gid < glyph_count; ++gid) - { - unsigned int num_layers = hb_ot_color_glyph_get_layers (face, gid, 0, nullptr, nullptr); - if (!num_layers) - continue; - - hb_ot_color_layer_t *layers = (hb_ot_color_layer_t*) malloc (num_layers * sizeof (hb_ot_color_layer_t)); - - hb_ot_color_glyph_get_layers (face, gid, 0, &num_layers, layers); - if (num_layers) - { - // Measure - cairo_text_extents_t extents; - { - cairo_surface_t *surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 1, 1); - cairo_t *cr = cairo_create (surface); - cairo_set_font_face (cr, cairo_face); - cairo_set_font_size (cr, upem); - - cairo_glyph_t *glyphs = (cairo_glyph_t *) calloc (num_layers, sizeof (cairo_glyph_t)); - for (unsigned int j = 0; j < num_layers; ++j) - glyphs[j].index = layers[j].glyph; - cairo_glyph_extents (cr, glyphs, num_layers, &extents); - free (glyphs); - cairo_surface_destroy (surface); - cairo_destroy (cr); - } - - // Add a slight margin - extents.width += extents.width / 10; - extents.height += extents.height / 10; - extents.x_bearing -= extents.width / 20; - extents.y_bearing -= extents.height / 20; - - // Render - unsigned int palette_count = hb_ot_color_palette_get_count (face); - for (unsigned int palette = 0; palette < palette_count; palette++) - { - unsigned int num_colors = hb_ot_color_palette_get_colors (face, palette, 0, nullptr, nullptr); - if (!num_colors) - continue; - - hb_color_t *colors = (hb_color_t*) calloc (num_colors, sizeof (hb_color_t)); - hb_ot_color_palette_get_colors (face, palette, 0, &num_colors, colors); - if (num_colors) - { - char output_path[255]; - sprintf (output_path, "out/colr-%u-%u-%u.svg", gid, palette, face_index); - - cairo_surface_t *surface = cairo_svg_surface_create (output_path, extents.width, extents.height); - cairo_t *cr = cairo_create (surface); - cairo_set_font_face (cr, cairo_face); - cairo_set_font_size (cr, upem); - - for (unsigned int layer = 0; layer < num_layers; ++layer) - { - hb_color_t color = 0x000000FF; - if (layers[layer].color_index != 0xFFFF) - color = colors[layers[layer].color_index]; - cairo_set_source_rgba (cr, - hb_color_get_red (color) / 255., - hb_color_get_green (color) / 255., - hb_color_get_blue (color) / 255., - hb_color_get_alpha (color) / 255.); - - cairo_glyph_t glyph; - glyph.index = layers[layer].glyph; - glyph.x = -extents.x_bearing; - glyph.y = -extents.y_bearing; - cairo_show_glyphs (cr, &glyph, 1); - } - - cairo_surface_destroy (surface); - cairo_destroy (cr); - } - free (colors); - } - } - - free (layers); - } -} - -static void -dump_glyphs (cairo_font_face_t *cairo_face, unsigned int upem, - unsigned int num_glyphs, unsigned int face_index) -{ - for (unsigned int i = 0; i < num_glyphs; ++i) - { - cairo_text_extents_t extents; - cairo_glyph_t glyph = {0}; - glyph.index = i; - - // Measure - { - cairo_surface_t *surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 1, 1); - cairo_t *cr = cairo_create (surface); - cairo_set_font_face (cr, cairo_face); - cairo_set_font_size (cr, upem); - - cairo_glyph_extents (cr, &glyph, 1, &extents); - cairo_surface_destroy (surface); - cairo_destroy (cr); - } - - // Add a slight margin - extents.width += extents.width / 10; - extents.height += extents.height / 10; - extents.x_bearing -= extents.width / 20; - extents.y_bearing -= extents.height / 20; - - // Render - { - char output_path[255]; - sprintf (output_path, "out/%u-%u.svg", face_index, i); - cairo_surface_t *surface = cairo_svg_surface_create (output_path, extents.width, extents.height); - cairo_t *cr = cairo_create (surface); - cairo_set_font_face (cr, cairo_face); - cairo_set_font_size (cr, upem); - glyph.x = -extents.x_bearing; - glyph.y = -extents.y_bearing; - cairo_show_glyphs (cr, &glyph, 1); - cairo_surface_destroy (surface); - cairo_destroy (cr); - } - } -} - -int -main (int argc, char **argv) -{ - if (argc != 2) { - fprintf (stderr, "usage: %s font-file.ttf\n" - "run it like `rm -rf out && mkdir out && %s font-file.ttf`\n", - argv[0], argv[0]); - exit (1); - } - - - FILE *font_name_file = fopen ("out/.dumped_font_name", "r"); - if (font_name_file != nullptr) - { - fprintf (stderr, "Purge or move ./out folder in order to run a new dump\n"); - exit (1); - } - - font_name_file = fopen ("out/.dumped_font_name", "w"); - if (font_name_file == nullptr) - { - fprintf (stderr, "./out is not accessible as a folder, create it please\n"); - exit (1); - } - fwrite (argv[1], 1, strlen (argv[1]), font_name_file); - fclose (font_name_file); - - hb_blob_t *blob = hb_blob_create_from_file (argv[1]); - unsigned int num_faces = hb_face_count (blob); - if (num_faces == 0) - { - fprintf (stderr, "error: The file (%s) was corrupted, empty or not found", argv[1]); - exit (1); - } - - for (unsigned int face_index = 0; face_index < hb_face_count (blob); face_index++) - { - hb_face_t *face = hb_face_create (blob, face_index); - hb_font_t *font = hb_font_create (face); - - if (hb_ot_color_has_png (face)) printf ("Dumping png (cbdt/sbix)...\n"); - png_dump (face, face_index); - - if (hb_ot_color_has_svg (face)) printf ("Dumping svg...\n"); - svg_dump (face, face_index); - - cairo_font_face_t *cairo_face; - { - FT_Library library; - FT_Init_FreeType (&library); - FT_Face ft_face; - FT_New_Face (library, argv[1], 0, &ft_face); - cairo_face = cairo_ft_font_face_create_for_ft_face (ft_face, 0); - } - if (hb_ot_color_has_layers (face) && hb_ot_color_has_palettes (face)) - printf ("Dumping layered color glyphs...\n"); - layered_glyph_dump (face, cairo_face, face_index); - - unsigned int num_glyphs = hb_face_get_glyph_count (face); - unsigned int upem = hb_face_get_upem (face); - - // disabled when color font as cairo rendering of NotoColorEmoji is soooo slow - if (!hb_ot_color_has_layers (face) && - !hb_ot_color_has_png (face) && - !hb_ot_color_has_svg (face)) - dump_glyphs (cairo_face, upem, num_glyphs, face_index); - - hb_font_destroy (font); - hb_face_destroy (face); - } - - hb_blob_destroy (blob); - - return 0; -} - -#else -int main (int argc, char **argv) { return 0; } -#endif diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/test-ot-glyphname.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/test-ot-glyphname.cc new file mode 100644 index 00000000000..dffc62b4b1c --- /dev/null +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/test-ot-glyphname.cc @@ -0,0 +1,91 @@ +/* + * Copyright © 2019 Adobe, 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. + * + * Adobe Author(s): Michiharu Ariza + */ + +#include "hb.hh" +#include "hb-ot.h" + +#include +#include + +#ifdef HB_NO_OPEN +#define hb_blob_create_from_file(x) hb_blob_get_empty () +#endif + +int +main (int argc, char **argv) +{ + if (argc != 2) { + fprintf (stderr, "usage: %s font-file\n", argv[0]); + exit (1); + } + + hb_blob_t *blob = hb_blob_create_from_file (argv[1]); + hb_face_t *face = hb_face_create (blob, 0 /* first face */); + hb_font_t *font = hb_font_create (face); + hb_blob_destroy (blob); + blob = nullptr; + + + const unsigned int num_glyphs = hb_face_get_glyph_count (face); + int result = 1; + + for (hb_codepoint_t gid = 0; gid < num_glyphs; gid++) + { + char buf[64]; + unsigned int buf_size = sizeof (buf); + if (hb_font_get_glyph_name (font, gid, buf, buf_size)) + { + hb_codepoint_t gid_inv; + if (hb_font_get_glyph_from_name(font, buf, strlen (buf), &gid_inv)) + { + if (gid == gid_inv) + { + printf ("%u <-> %s\n", gid, buf); + } + else + { + printf ("%u -> %s -> %u\n", gid, buf, gid_inv); + result = 0; + } + } + else + { + printf ("%u -> %s -> ?\n", gid, buf); + result = 0; + } + } + else + { + printf ("%u -> ?\n", gid); + result = 0; + } + } + + hb_font_destroy (font); + hb_face_destroy (face); + + return result; +} diff --git a/Build/source/libs/harfbuzz/include/Makefile.am b/Build/source/libs/harfbuzz/include/Makefile.am index 782a0e5a8d7..d9f2d71511a 100644 --- a/Build/source/libs/harfbuzz/include/Makefile.am +++ b/Build/source/libs/harfbuzz/include/Makefile.am @@ -20,6 +20,7 @@ hdr_links = \ $(HARFBUZZ_SRC)/hb-buffer.h \ $(HARFBUZZ_SRC)/hb-common.h \ $(HARFBUZZ_SRC)/hb-deprecated.h \ + $(HARFBUZZ_SRC)/hb-draw.h \ $(HARFBUZZ_SRC)/hb-face.h \ $(HARFBUZZ_SRC)/hb-font.h \ $(HARFBUZZ_SRC)/hb-map.h \ diff --git a/Build/source/libs/harfbuzz/include/Makefile.in b/Build/source/libs/harfbuzz/include/Makefile.in index 0923b860fdb..10f64864f92 100644 --- a/Build/source/libs/harfbuzz/include/Makefile.in +++ b/Build/source/libs/harfbuzz/include/Makefile.in @@ -248,17 +248,17 @@ HARFBUZZ_BLD = $(top_builddir) hdr_links = $(HARFBUZZ_SRC)/hb.h $(HARFBUZZ_SRC)/hb-aat-layout.h \ $(HARFBUZZ_SRC)/hb-aat.h $(HARFBUZZ_SRC)/hb-blob.h \ $(HARFBUZZ_SRC)/hb-buffer.h $(HARFBUZZ_SRC)/hb-common.h \ - $(HARFBUZZ_SRC)/hb-deprecated.h $(HARFBUZZ_SRC)/hb-face.h \ - $(HARFBUZZ_SRC)/hb-font.h $(HARFBUZZ_SRC)/hb-map.h \ - $(HARFBUZZ_SRC)/hb-ot-deprecated.h $(HARFBUZZ_SRC)/hb-set.h \ - $(HARFBUZZ_SRC)/hb-shape.h $(HARFBUZZ_SRC)/hb-shape-plan.h \ - $(HARFBUZZ_SRC)/hb-unicode.h $(HARFBUZZ_BLD)/hb-version.h \ - $(HARFBUZZ_SRC)/hb-ot.h $(HARFBUZZ_SRC)/hb-ot-color.h \ - $(HARFBUZZ_SRC)/hb-ot-font.h $(HARFBUZZ_SRC)/hb-ot-layout.h \ - $(HARFBUZZ_SRC)/hb-ot-math.h $(HARFBUZZ_SRC)/hb-ot-meta.h \ - $(HARFBUZZ_SRC)/hb-ot-metrics.h $(HARFBUZZ_SRC)/hb-ot-name.h \ - $(HARFBUZZ_SRC)/hb-ot-shape.h $(HARFBUZZ_SRC)/hb-ot-var.h \ - $(HARFBUZZ_SRC)/hb-graphite2.h + $(HARFBUZZ_SRC)/hb-deprecated.h $(HARFBUZZ_SRC)/hb-draw.h \ + $(HARFBUZZ_SRC)/hb-face.h $(HARFBUZZ_SRC)/hb-font.h \ + $(HARFBUZZ_SRC)/hb-map.h $(HARFBUZZ_SRC)/hb-ot-deprecated.h \ + $(HARFBUZZ_SRC)/hb-set.h $(HARFBUZZ_SRC)/hb-shape.h \ + $(HARFBUZZ_SRC)/hb-shape-plan.h $(HARFBUZZ_SRC)/hb-unicode.h \ + $(HARFBUZZ_BLD)/hb-version.h $(HARFBUZZ_SRC)/hb-ot.h \ + $(HARFBUZZ_SRC)/hb-ot-color.h $(HARFBUZZ_SRC)/hb-ot-font.h \ + $(HARFBUZZ_SRC)/hb-ot-layout.h $(HARFBUZZ_SRC)/hb-ot-math.h \ + $(HARFBUZZ_SRC)/hb-ot-meta.h $(HARFBUZZ_SRC)/hb-ot-metrics.h \ + $(HARFBUZZ_SRC)/hb-ot-name.h $(HARFBUZZ_SRC)/hb-ot-shape.h \ + $(HARFBUZZ_SRC)/hb-ot-var.h $(HARFBUZZ_SRC)/hb-graphite2.h all: all-am .SUFFIXES: diff --git a/Build/source/libs/harfbuzz/version.ac b/Build/source/libs/harfbuzz/version.ac index 67d67cb2d80..5fe6a9224fc 100644 --- a/Build/source/libs/harfbuzz/version.ac +++ b/Build/source/libs/harfbuzz/version.ac @@ -8,4 +8,4 @@ dnl dnl -------------------------------------------------------- dnl dnl m4-include this file to define the current harfbuzz version -m4_define([harfbuzz_version], [2.6.4]) +m4_define([harfbuzz_version], [2.6.6]) -- cgit v1.2.3