uharfbuzz 0.51.4__tar.gz → 0.51.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of uharfbuzz might be problematic. Click here for more details.
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/PKG-INFO +1 -1
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Color/COLR/COLR.hh +1 -1
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/GPOS.hh +31 -11
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/ValueFormat.hh +6 -1
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/glyf/SimpleGlyph.hh +1 -1
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/graph/graph.hh +68 -89
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/graph/gsubgpos-graph.hh +9 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/graph/serialize.hh +26 -15
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout-common.hh +9 -1
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout-kerx-table.hh +6 -8
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout-morx-table.hh +4 -8
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-algs.hh +19 -0
- uharfbuzz-0.51.6/harfbuzz/src/hb-alloc-pool.hh +105 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-atomic.hh +80 -20
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-bimap.hh +1 -1
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-bit-page.hh +31 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-bit-set-invertible.hh +1 -1
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-bit-set.hh +7 -6
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-buffer.cc +20 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-buffer.hh +17 -16
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-common.cc +3 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-config.hh +0 -1
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-debug.hh +1 -1
- uharfbuzz-0.51.4/harfbuzz/src/hb-pool.hh → uharfbuzz-0.51.6/harfbuzz/src/hb-free-pool.hh +7 -7
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-kbts.cc +2 -2
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-map.hh +27 -17
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-open-type.hh +29 -32
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-cff1-table.hh +2 -2
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-layout-common.hh +130 -101
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-layout-gsubgpos.hh +5 -6
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-layout.cc +17 -12
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-layout.hh +3 -3
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shape.cc +51 -25
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-arabic-joining-list.hh +4 -4
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-arabic-table.hh +11 -11
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-indic-table.cc +6 -6
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-thai.cc +1 -1
- uharfbuzz-0.51.6/harfbuzz/src/hb-ot-shaper-use-table.hh +717 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-vowel-constraints.cc +2 -2
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper.hh +6 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-tag-table.hh +3 -3
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-var-common.hh +318 -267
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-var-cvar-table.hh +4 -3
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-var-gvar-table.hh +36 -51
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-var-hvar-table.hh +49 -31
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-priority-queue.hh +11 -1
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-repacker.hh +11 -5
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-script-list.h +12 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-serialize.hh +2 -2
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-set-digest.hh +3 -3
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-instancer-iup.cc +75 -46
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-instancer-iup.hh +15 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-instancer-solver.cc +18 -20
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-instancer-solver.hh +11 -11
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-plan-layout.cc +40 -2
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-plan-member-list.hh +4 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-plan.cc +11 -2
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset.h +5 -0
- uharfbuzz-0.51.6/harfbuzz/src/hb-ucd-table.hh +5628 -0
- uharfbuzz-0.51.6/harfbuzz/src/hb-unicode-emoji-table.hh +87 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-vector.hh +91 -26
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-version.h +4 -4
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb.hh +1 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-repacker.cc +68 -51
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-subset-instancer-solver.cc +64 -32
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-tuple-varstore.cc +2 -1
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/src/uharfbuzz/_harfbuzz.cpp +16 -5
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/src/uharfbuzz/_harfbuzz_test.cpp +3 -3
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/src/uharfbuzz/_version.py +3 -3
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/src/uharfbuzz.egg-info/PKG-INFO +1 -1
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/src/uharfbuzz.egg-info/SOURCES.txt +2 -1
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/test_uharfbuzz.py +0 -17
- uharfbuzz-0.51.4/harfbuzz/src/hb-ot-shaper-use-table.hh +0 -718
- uharfbuzz-0.51.4/harfbuzz/src/hb-ucd-table.hh +0 -5696
- uharfbuzz-0.51.4/harfbuzz/src/hb-unicode-emoji-table.hh +0 -77
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/.coveragerc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/.github/workflows/ci.yml +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/.gitignore +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/.gitmodules +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/.readthedocs.yml +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/LICENSE +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/MANIFEST.in +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/README.md +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/docs/.gitignore +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/docs/requirements.in +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/docs/requirements.txt +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/docs/source/conf.py +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/docs/source/index.rst +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/docs/source/reference.rst +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Color/CBDT/CBDT.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Color/COLR/colrv1-closure.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Color/CPAL/CPAL.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Color/sbix/sbix.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Color/svg/svg.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/Common/Coverage.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/Common/CoverageFormat1.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/Common/CoverageFormat2.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/Common/RangeRecord.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GDEF/GDEF.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/Anchor.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/AnchorFormat1.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/AnchorFormat2.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/AnchorFormat3.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/AnchorMatrix.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/ChainContextPos.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/Common.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/ContextPos.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/CursivePos.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/CursivePosFormat1.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/ExtensionPos.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/LigatureArray.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/MarkArray.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/MarkBasePos.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/MarkBasePosFormat1.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/MarkLigPos.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/MarkLigPosFormat1.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/MarkMarkPos.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/MarkMarkPosFormat1.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/MarkRecord.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/PairPos.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/PairPosFormat1.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/PairPosFormat2.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/PairSet.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/PairValueRecord.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/PosLookup.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/PosLookupSubTable.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/SinglePos.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/SinglePosFormat1.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/SinglePosFormat2.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/AlternateSet.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/AlternateSubst.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/AlternateSubstFormat1.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/ChainContextSubst.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/Common.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/ContextSubst.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/ExtensionSubst.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/GSUB.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/Ligature.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/LigatureSet.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/LigatureSubst.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/LigatureSubstFormat1.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/MultipleSubst.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/MultipleSubstFormat1.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/ReverseChainSingleSubst.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/ReverseChainSingleSubstFormat1.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/Sequence.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/SingleSubst.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/SingleSubstFormat1.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/SingleSubstFormat2.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/SubstLookup.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/SubstLookupSubTable.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/types.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Var/VARC/VARC.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Var/VARC/VARC.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Var/VARC/coord-setter.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/glyf/CompositeGlyph.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/glyf/Glyph.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/glyf/GlyphHeader.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/glyf/SubsetGlyph.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/glyf/composite-iter.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/glyf/glyf-helpers.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/glyf/glyf.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/glyf/loca.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/glyf/path-builder.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/name/name.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/graph/classdef-graph.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/graph/coverage-graph.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/graph/gsubgpos-context.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/graph/gsubgpos-context.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/graph/ligature-graph.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/graph/markbasepos-graph.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/graph/pairpos-graph.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/graph/split-helpers.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/graph/test-classdef-graph.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/harfbuzz-subset.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/harfbuzz.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout-ankr-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout-bsln-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout-feat-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout-just-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout-opbd-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout-trak-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-ltag-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-map.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-map.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-array.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-bit-vector.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-blob.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-blob.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-blob.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-buffer-deserialize-json.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-buffer-deserialize-text-glyphs.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-buffer-deserialize-text-unicode.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-buffer-serialize.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-buffer-verify.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-buffer.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cache.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cairo-utils.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cairo-utils.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cairo.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cairo.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cff-interp-common.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cff-interp-cs-common.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cff-interp-dict-common.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cff1-interp-cs.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cff2-interp-cs.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-common.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-coretext-font.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-coretext-shape.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-coretext.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-coretext.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-coretext.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cplusplus.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-decycler.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-deprecated.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-directwrite-font.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-directwrite-shape.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-directwrite.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-directwrite.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-directwrite.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-dispatch.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-draw.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-draw.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-draw.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-face-builder.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-face.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-face.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-face.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-fallback-shape.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-font.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-font.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-font.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-fontations.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ft-colr.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ft.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ft.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-gdi.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-gdi.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-geometry.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-glib.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-glib.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-gobject-structs.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-gobject-structs.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-gobject.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-graphite2.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-graphite2.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-harfrust.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-icu.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-icu.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-iter.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-kern.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-limits.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-machinery.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-map.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-map.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-meta.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ms-feature-ranges.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-multimap.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-mutex.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-null.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-number-parser.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-number.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-number.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-object.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-open-file.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-cff-common.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-cff1-std-str.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-cff1-table.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-cff2-table.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-cff2-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-cmap-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-color.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-color.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-deprecated.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-face-table-list.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-face.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-face.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-font.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-font.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-gasp-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-glyf-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-hdmx-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-head-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-hhea-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-hmtx-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-kern-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-layout-base-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-layout-gdef-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-layout-gpos-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-layout-gsub-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-layout-jstf-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-layout.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-map.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-map.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-math-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-math.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-math.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-maxp-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-meta-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-meta.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-meta.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-metrics.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-metrics.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-metrics.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-name-language-static.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-name-language.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-name-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-name.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-name.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-os2-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-os2-unicode-ranges.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-post-macroman.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-post-table-v2subset.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-post-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shape-fallback.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shape-fallback.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shape-normalize.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shape-normalize.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shape.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shape.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-arabic-fallback.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-arabic-pua.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-arabic-win1256.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-arabic.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-arabic.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-default.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-hangul.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-hebrew.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-indic-machine.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-indic.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-indic.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-khmer-machine.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-khmer.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-myanmar-machine.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-myanmar.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-syllabic.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-syllabic.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-use-machine.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-use.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-vowel-constraints.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-stat-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-tag.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-var-avar-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-var-fvar-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-var-mvar-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-var-varc-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-var.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-var.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-vorg-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-outline.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-outline.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-paint-bounded.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-paint-bounded.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-paint-extents.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-paint-extents.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-paint.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-paint.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-paint.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-sanitize.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-set.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-set.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-set.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-shape-plan.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-shape-plan.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-shape-plan.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-shape.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-shape.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-shaper-impl.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-shaper-list.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-shaper.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-shaper.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-static.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-string-array.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-style.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-style.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-accelerator.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-cff-common.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-cff-common.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-cff1.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-cff2.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-input.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-input.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-plan-var.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-plan.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-serialize.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-serialize.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-table-cff.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-table-color.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-table-layout.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-table-other.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-table-var.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-table.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ucd.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-unicode.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-unicode.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-unicode.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-uniscribe.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-uniscribe.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-utf.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-api-blob.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-api-buffer.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-api-common.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-api-face.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-api-font.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-api-list.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-api-shape.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-api.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-api.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-api.hh +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-shape.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb.h +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/main.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-algs.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-array.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-bimap.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-buffer-serialize.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-cff.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-decycler.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-gpos-size-params.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-gsub-get-alternates.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-gsub-would-substitute.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-item-varstore.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-iter.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-machinery.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-map.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-multimap.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-number.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-ot-glyphname.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-ot-meta.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-ot-name.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-priority-queue.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-serialize.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-set.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-unicode-ranges.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-use-table.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-vector.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/wasm/graphite/shape.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/wasm/sample/c/shape-fallback.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/wasm/sample/c/shape-ot.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/pyproject.toml +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/requirements-dev.txt +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/setup.cfg +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/setup.py +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/src/uharfbuzz/__init__.py +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/src/uharfbuzz/_draw_test_funcs.cc +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/src/uharfbuzz/_harfbuzz.pyx +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/src/uharfbuzz/_harfbuzz_test.pyx +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/src/uharfbuzz/charfbuzz.pxd +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/src/uharfbuzz.egg-info/dependency_links.txt +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/src/uharfbuzz.egg-info/not-zip-safe +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/src/uharfbuzz.egg-info/top_level.txt +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/AUTHORS_StixTwoMath.txt +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/AdobeBlank.fea +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/AdobeBlank.subset.ttf +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/LICENSE_AdobeBlank.txt +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/LICENSE_ChromaCheck_colr.txt +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/LICENSE_MutatorSans.txt +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/LICENSE_OpenSans.txt +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/LICENSE_STIXTwoMath.txt +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/MutatorSans-VF.subset.ttf +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/OpenSans.subset.ttf +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/STIXTwoMath-Regular.ttf +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/SparseFont.ttf +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/chromacheck-colr.ttf +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/expected/hand-10 +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/expected/test-10 +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/expected/test-106 +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/expected/test-116 +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/expected/test-123 +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/expected/test-154 +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/expected/test-165 +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/expected/test-175 +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/expected/test-6 +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/expected/test-92 +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/noto_handwriting-cff2_colr_1.otf +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/test_glyphs-glyf_colr_1.ttf +0 -0
- {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tox.ini +0 -0
|
@@ -2060,7 +2060,7 @@ struct delta_set_index_map_subset_plan_t
|
|
|
2060
2060
|
outer_bit_count = 1;
|
|
2061
2061
|
inner_bit_count = 1;
|
|
2062
2062
|
|
|
2063
|
-
if (unlikely (!output_map.
|
|
2063
|
+
if (unlikely (!output_map.resize_dirty (map_count))) return false;
|
|
2064
2064
|
|
|
2065
2065
|
for (unsigned idx = 0; idx < map_count; idx++)
|
|
2066
2066
|
{
|
|
@@ -110,17 +110,37 @@ propagate_attachment_offsets (hb_glyph_position_t *pos,
|
|
|
110
110
|
pos[i].x_offset += pos[j].x_offset;
|
|
111
111
|
pos[i].y_offset += pos[j].y_offset;
|
|
112
112
|
|
|
113
|
-
|
|
114
|
-
if (
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
113
|
+
// i is the position of the mark; j is the base.
|
|
114
|
+
if (j < i)
|
|
115
|
+
{
|
|
116
|
+
/* This is the common case: mark follows base.
|
|
117
|
+
* And currently the only way in OpenType. */
|
|
118
|
+
if (HB_DIRECTION_IS_FORWARD (direction))
|
|
119
|
+
for (unsigned int k = j; k < i; k++) {
|
|
120
|
+
pos[i].x_offset -= pos[k].x_advance;
|
|
121
|
+
pos[i].y_offset -= pos[k].y_advance;
|
|
122
|
+
}
|
|
123
|
+
else
|
|
124
|
+
for (unsigned int k = j + 1; k < i + 1; k++) {
|
|
125
|
+
pos[i].x_offset += pos[k].x_advance;
|
|
126
|
+
pos[i].y_offset += pos[k].y_advance;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
else // j > i
|
|
130
|
+
{
|
|
131
|
+
/* This can happen with `kerx`: a mark attaching
|
|
132
|
+
* to a base after it in the logical order. */
|
|
133
|
+
if (HB_DIRECTION_IS_FORWARD (direction))
|
|
134
|
+
for (unsigned int k = i; k < j; k++) {
|
|
135
|
+
pos[i].x_offset += pos[k].x_advance;
|
|
136
|
+
pos[i].y_offset += pos[k].y_advance;
|
|
137
|
+
}
|
|
138
|
+
else
|
|
139
|
+
for (unsigned int k = i + 1; k < j + 1; k++) {
|
|
140
|
+
pos[i].x_offset -= pos[k].x_advance;
|
|
141
|
+
pos[i].y_offset -= pos[k].y_advance;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
124
144
|
}
|
|
125
145
|
}
|
|
126
146
|
|
|
@@ -58,7 +58,12 @@ struct ValueFormat : HBUINT16
|
|
|
58
58
|
|
|
59
59
|
NumType& operator = (uint16_t i) { v = i; return *this; }
|
|
60
60
|
|
|
61
|
-
|
|
61
|
+
// Note: spec says skip 2 bytes per bit in the valueformat. But reports
|
|
62
|
+
// from Microsoft developers indicate that only the fields that are
|
|
63
|
+
// currently defined are counted. We don't expect any new fields to
|
|
64
|
+
// be added to ValueFormat. As such, we use the faster hb_popcount8
|
|
65
|
+
// that only processes the lowest 8 bits.
|
|
66
|
+
unsigned int get_len () const { return hb_popcount8 ((uint8_t) *this); }
|
|
62
67
|
unsigned int get_size () const { return get_len () * Value::static_size; }
|
|
63
68
|
|
|
64
69
|
hb_vector_t<unsigned> get_device_table_indices () const {
|
|
@@ -189,7 +189,7 @@ struct SimpleGlyph
|
|
|
189
189
|
|
|
190
190
|
unsigned old_length = points.length;
|
|
191
191
|
points.alloc (points.length + num_points + 4); // Allocate for phantom points, to avoid a possible copy
|
|
192
|
-
if (unlikely (!points.
|
|
192
|
+
if (unlikely (!points.resize_dirty (points.length + num_points))) return false;
|
|
193
193
|
auto points_ = points.as_array ().sub_array (old_length);
|
|
194
194
|
if (!phantom_only)
|
|
195
195
|
hb_memset (points_.arrayZ, 0, sizeof (contour_point_t) * num_points);
|
|
@@ -470,8 +470,12 @@ struct graph_t
|
|
|
470
470
|
num_roots_for_space_.push (1);
|
|
471
471
|
bool removed_nil = false;
|
|
472
472
|
vertices_.alloc (objects.length);
|
|
473
|
-
|
|
473
|
+
ordering_.resize (objects.length);
|
|
474
|
+
ordering_scratch_.alloc (objects.length);
|
|
475
|
+
|
|
474
476
|
unsigned count = objects.length;
|
|
477
|
+
unsigned order = objects.length;
|
|
478
|
+
unsigned skip = 0;
|
|
475
479
|
for (unsigned i = 0; i < count; i++)
|
|
476
480
|
{
|
|
477
481
|
// If this graph came from a serialization buffer object 0 is the
|
|
@@ -479,6 +483,9 @@ struct graph_t
|
|
|
479
483
|
if (i == 0 && !objects.arrayZ[i])
|
|
480
484
|
{
|
|
481
485
|
removed_nil = true;
|
|
486
|
+
order--;
|
|
487
|
+
ordering_.resize(objects.length - 1);
|
|
488
|
+
skip++;
|
|
482
489
|
continue;
|
|
483
490
|
}
|
|
484
491
|
|
|
@@ -488,6 +495,12 @@ struct graph_t
|
|
|
488
495
|
|
|
489
496
|
check_success (v->link_positions_valid (count, removed_nil));
|
|
490
497
|
|
|
498
|
+
// To start we set the ordering to match the provided objects
|
|
499
|
+
// list. Note: objects are provided to us in reverse order (ie.
|
|
500
|
+
// the last object is the root).
|
|
501
|
+
unsigned obj_idx = i - skip;
|
|
502
|
+
ordering_[--order] = obj_idx;
|
|
503
|
+
|
|
491
504
|
if (!removed_nil) continue;
|
|
492
505
|
// Fix indices to account for removed nil object.
|
|
493
506
|
for (auto& l : v->obj.all_links_writer ()) {
|
|
@@ -508,10 +521,10 @@ struct graph_t
|
|
|
508
521
|
}
|
|
509
522
|
|
|
510
523
|
void print () const {
|
|
511
|
-
for (
|
|
524
|
+
for (unsigned id : ordering_)
|
|
512
525
|
{
|
|
513
|
-
const auto& v = vertices_[
|
|
514
|
-
printf("%
|
|
526
|
+
const auto& v = vertices_[id];
|
|
527
|
+
printf("%u: %u [", id, (unsigned int)v.table_size());
|
|
515
528
|
for (const auto &l : v.obj.real_links) {
|
|
516
529
|
printf("%u, ", l.objidx);
|
|
517
530
|
}
|
|
@@ -533,6 +546,7 @@ struct graph_t
|
|
|
533
546
|
{
|
|
534
547
|
return !successful ||
|
|
535
548
|
vertices_.in_error () ||
|
|
549
|
+
ordering_.in_error() ||
|
|
536
550
|
num_roots_for_space_.in_error ();
|
|
537
551
|
}
|
|
538
552
|
|
|
@@ -543,10 +557,10 @@ struct graph_t
|
|
|
543
557
|
|
|
544
558
|
unsigned root_idx () const
|
|
545
559
|
{
|
|
546
|
-
//
|
|
547
|
-
//
|
|
560
|
+
// First element of ordering_ is the root.
|
|
561
|
+
// Since the graph is topologically sorted it's safe to
|
|
548
562
|
// assume the first object has no incoming edges.
|
|
549
|
-
return
|
|
563
|
+
return ordering_[0];
|
|
550
564
|
}
|
|
551
565
|
|
|
552
566
|
const hb_serialize_context_t::object_t& object (unsigned i) const
|
|
@@ -604,55 +618,51 @@ struct graph_t
|
|
|
604
618
|
|
|
605
619
|
hb_priority_queue_t<int64_t> queue;
|
|
606
620
|
queue.alloc (vertices_.length);
|
|
607
|
-
hb_vector_t<
|
|
608
|
-
if (unlikely (!check_success (
|
|
609
|
-
hb_vector_t<unsigned> id_map;
|
|
610
|
-
if (unlikely (!check_success (id_map.resize (vertices_.length)))) return;
|
|
621
|
+
hb_vector_t<unsigned> &new_ordering = ordering_scratch_;
|
|
622
|
+
if (unlikely (!check_success (new_ordering.resize (vertices_.length)))) return;
|
|
611
623
|
|
|
612
624
|
hb_vector_t<unsigned> removed_edges;
|
|
613
625
|
if (unlikely (!check_success (removed_edges.resize (vertices_.length)))) return;
|
|
614
626
|
update_parents ();
|
|
615
627
|
|
|
616
628
|
queue.insert (root ().modified_distance (0), root_idx ());
|
|
617
|
-
int new_id = root_idx ();
|
|
618
629
|
unsigned order = 1;
|
|
630
|
+
unsigned pos = 0;
|
|
619
631
|
while (!queue.in_error () && !queue.is_empty ())
|
|
620
632
|
{
|
|
621
633
|
unsigned next_id = queue.pop_minimum().second;
|
|
622
634
|
|
|
623
|
-
|
|
624
|
-
const vertex_t& next = sorted_graph[new_id];
|
|
625
|
-
|
|
626
|
-
if (unlikely (!check_success(new_id >= 0))) {
|
|
635
|
+
if (unlikely (!check_success(pos < new_ordering.length))) {
|
|
627
636
|
// We are out of ids. Which means we've visited a node more than once.
|
|
628
637
|
// This graph contains a cycle which is not allowed.
|
|
629
638
|
DEBUG_MSG (SUBSET_REPACK, nullptr, "Invalid graph. Contains cycle.");
|
|
630
639
|
return;
|
|
631
640
|
}
|
|
632
|
-
|
|
633
|
-
|
|
641
|
+
new_ordering[pos++] = next_id;
|
|
642
|
+
const vertex_t& next = vertices_[next_id];
|
|
634
643
|
|
|
635
644
|
for (const auto& link : next.obj.all_links ()) {
|
|
636
645
|
removed_edges[link.objidx]++;
|
|
637
|
-
|
|
646
|
+
const auto& v = vertices_[link.objidx];
|
|
647
|
+
if (!(v.incoming_edges () - removed_edges[link.objidx]))
|
|
638
648
|
// Add the order that the links were encountered to the priority.
|
|
639
649
|
// This ensures that ties between priorities objects are broken in a consistent
|
|
640
650
|
// way. More specifically this is set up so that if a set of objects have the same
|
|
641
651
|
// distance they'll be added to the topological order in the order that they are
|
|
642
652
|
// referenced from the parent object.
|
|
643
|
-
queue.insert (
|
|
653
|
+
queue.insert (v.modified_distance (order++),
|
|
644
654
|
link.objidx);
|
|
645
655
|
}
|
|
646
656
|
}
|
|
647
657
|
|
|
648
658
|
check_success (!queue.in_error ());
|
|
649
|
-
check_success (!
|
|
659
|
+
check_success (!new_ordering.in_error ());
|
|
650
660
|
|
|
651
|
-
|
|
652
|
-
vertices_ = std::move (sorted_graph);
|
|
661
|
+
hb_swap (ordering_, new_ordering);
|
|
653
662
|
|
|
654
|
-
if (!check_success (
|
|
663
|
+
if (!check_success (pos == vertices_.length)) {
|
|
655
664
|
print_orphaned_nodes ();
|
|
665
|
+
}
|
|
656
666
|
}
|
|
657
667
|
|
|
658
668
|
/*
|
|
@@ -662,8 +672,8 @@ struct graph_t
|
|
|
662
672
|
*/
|
|
663
673
|
void find_space_roots (hb_set_t& visited, hb_set_t& roots)
|
|
664
674
|
{
|
|
665
|
-
|
|
666
|
-
for (
|
|
675
|
+
unsigned root_index = root_idx ();
|
|
676
|
+
for (unsigned i : ordering_)
|
|
667
677
|
{
|
|
668
678
|
if (visited.has (i)) continue;
|
|
669
679
|
|
|
@@ -846,7 +856,6 @@ struct graph_t
|
|
|
846
856
|
if (subgraph.in_error ())
|
|
847
857
|
return false;
|
|
848
858
|
|
|
849
|
-
unsigned original_root_idx = root_idx ();
|
|
850
859
|
hb_map_t index_map;
|
|
851
860
|
bool made_changes = false;
|
|
852
861
|
for (auto entry : subgraph.iter ())
|
|
@@ -869,14 +878,6 @@ struct graph_t
|
|
|
869
878
|
if (!made_changes)
|
|
870
879
|
return false;
|
|
871
880
|
|
|
872
|
-
if (original_root_idx != root_idx ()
|
|
873
|
-
&& parents.has (original_root_idx))
|
|
874
|
-
{
|
|
875
|
-
// If the root idx has changed since parents was determined, update root idx in parents
|
|
876
|
-
parents.add (root_idx ());
|
|
877
|
-
parents.del (original_root_idx);
|
|
878
|
-
}
|
|
879
|
-
|
|
880
881
|
auto new_subgraph =
|
|
881
882
|
+ subgraph.keys ()
|
|
882
883
|
| hb_map([&] (uint32_t node_idx) {
|
|
@@ -1065,8 +1066,11 @@ struct graph_t
|
|
|
1065
1066
|
distance_invalid = true;
|
|
1066
1067
|
|
|
1067
1068
|
auto* clone = vertices_.push ();
|
|
1069
|
+
unsigned clone_idx = vertices_.length - 1;
|
|
1070
|
+
ordering_.push(clone_idx);
|
|
1071
|
+
|
|
1068
1072
|
auto& child = vertices_[node_idx];
|
|
1069
|
-
if (vertices_.in_error ()) {
|
|
1073
|
+
if (vertices_.in_error () || ordering_.in_error()) {
|
|
1070
1074
|
return -1;
|
|
1071
1075
|
}
|
|
1072
1076
|
|
|
@@ -1076,7 +1080,6 @@ struct graph_t
|
|
|
1076
1080
|
clone->space = child.space;
|
|
1077
1081
|
clone->reset_parents ();
|
|
1078
1082
|
|
|
1079
|
-
unsigned clone_idx = vertices_.length - 2;
|
|
1080
1083
|
for (const auto& l : child.obj.real_links)
|
|
1081
1084
|
{
|
|
1082
1085
|
clone->obj.real_links.push (l);
|
|
@@ -1091,15 +1094,6 @@ struct graph_t
|
|
|
1091
1094
|
check_success (!clone->obj.real_links.in_error ());
|
|
1092
1095
|
check_success (!clone->obj.virtual_links.in_error ());
|
|
1093
1096
|
|
|
1094
|
-
// The last object is the root of the graph, so swap back the root to the end.
|
|
1095
|
-
// The root's obj idx does change, however since it's root nothing else refers to it.
|
|
1096
|
-
// all other obj idx's will be unaffected.
|
|
1097
|
-
hb_swap (vertices_[vertices_.length - 2], *clone);
|
|
1098
|
-
|
|
1099
|
-
// Since the root moved, update the parents arrays of all children on the root.
|
|
1100
|
-
for (const auto& l : root ().obj.all_links ())
|
|
1101
|
-
vertices_[l.objidx].remap_parent (root_idx () - 1, root_idx ());
|
|
1102
|
-
|
|
1103
1097
|
return clone_idx;
|
|
1104
1098
|
}
|
|
1105
1099
|
|
|
@@ -1249,7 +1243,10 @@ struct graph_t
|
|
|
1249
1243
|
distance_invalid = true;
|
|
1250
1244
|
|
|
1251
1245
|
auto* clone = vertices_.push ();
|
|
1252
|
-
|
|
1246
|
+
unsigned clone_idx = vertices_.length - 1;
|
|
1247
|
+
ordering_.push(clone_idx);
|
|
1248
|
+
|
|
1249
|
+
if (vertices_.in_error () || ordering_.in_error()) {
|
|
1253
1250
|
return -1;
|
|
1254
1251
|
}
|
|
1255
1252
|
|
|
@@ -1258,17 +1255,6 @@ struct graph_t
|
|
|
1258
1255
|
clone->distance = 0;
|
|
1259
1256
|
clone->space = 0;
|
|
1260
1257
|
|
|
1261
|
-
unsigned clone_idx = vertices_.length - 2;
|
|
1262
|
-
|
|
1263
|
-
// The last object is the root of the graph, so swap back the root to the end.
|
|
1264
|
-
// The root's obj idx does change, however since it's root nothing else refers to it.
|
|
1265
|
-
// all other obj idx's will be unaffected.
|
|
1266
|
-
hb_swap (vertices_[vertices_.length - 2], *clone);
|
|
1267
|
-
|
|
1268
|
-
// Since the root moved, update the parents arrays of all children on the root.
|
|
1269
|
-
for (const auto& l : root ().obj.all_links ())
|
|
1270
|
-
vertices_[l.objidx].remap_parent (root_idx () - 1, root_idx ());
|
|
1271
|
-
|
|
1272
1258
|
return clone_idx;
|
|
1273
1259
|
}
|
|
1274
1260
|
|
|
@@ -1430,7 +1416,8 @@ struct graph_t
|
|
|
1430
1416
|
size_t total_size = 0;
|
|
1431
1417
|
unsigned count = vertices_.length;
|
|
1432
1418
|
for (unsigned i = 0; i < count; i++) {
|
|
1433
|
-
|
|
1419
|
+
const auto& obj = vertices_.arrayZ[i].obj;
|
|
1420
|
+
size_t size = obj.tail - obj.head;
|
|
1434
1421
|
total_size += size;
|
|
1435
1422
|
}
|
|
1436
1423
|
return total_size;
|
|
@@ -1503,7 +1490,7 @@ struct graph_t
|
|
|
1503
1490
|
if (!positions_invalid) return;
|
|
1504
1491
|
|
|
1505
1492
|
unsigned current_pos = 0;
|
|
1506
|
-
for (
|
|
1493
|
+
for (unsigned i : ordering_)
|
|
1507
1494
|
{
|
|
1508
1495
|
auto& v = vertices_[i];
|
|
1509
1496
|
v.start = current_pos;
|
|
@@ -1535,11 +1522,11 @@ struct graph_t
|
|
|
1535
1522
|
unsigned count = vertices_.length;
|
|
1536
1523
|
for (unsigned i = 0; i < count; i++)
|
|
1537
1524
|
vertices_.arrayZ[i].distance = hb_int_max (int64_t);
|
|
1538
|
-
vertices_
|
|
1525
|
+
vertices_[root_idx ()].distance = 0;
|
|
1539
1526
|
|
|
1540
1527
|
hb_priority_queue_t<int64_t> queue;
|
|
1541
1528
|
queue.alloc (count);
|
|
1542
|
-
queue.insert (0,
|
|
1529
|
+
queue.insert (0, root_idx ());
|
|
1543
1530
|
|
|
1544
1531
|
hb_vector_t<bool> visited;
|
|
1545
1532
|
visited.resize (vertices_.length);
|
|
@@ -1549,22 +1536,23 @@ struct graph_t
|
|
|
1549
1536
|
unsigned next_idx = queue.pop_minimum ().second;
|
|
1550
1537
|
if (visited[next_idx]) continue;
|
|
1551
1538
|
const auto& next = vertices_[next_idx];
|
|
1552
|
-
int64_t next_distance =
|
|
1539
|
+
int64_t next_distance = next.distance;
|
|
1553
1540
|
visited[next_idx] = true;
|
|
1554
1541
|
|
|
1555
1542
|
for (const auto& link : next.obj.all_links ())
|
|
1556
1543
|
{
|
|
1557
1544
|
if (visited[link.objidx]) continue;
|
|
1558
1545
|
|
|
1559
|
-
|
|
1546
|
+
auto& child_v = vertices_.arrayZ[link.objidx];
|
|
1547
|
+
const auto& child = child_v.obj;
|
|
1560
1548
|
unsigned link_width = link.width ? link.width : 4; // treat virtual offsets as 32 bits wide
|
|
1561
1549
|
int64_t child_weight = (child.tail - child.head) +
|
|
1562
|
-
((int64_t) 1 << (link_width * 8)) * (
|
|
1550
|
+
((int64_t) 1 << (link_width * 8)) * (child_v.space + 1);
|
|
1563
1551
|
int64_t child_distance = next_distance + child_weight;
|
|
1564
1552
|
|
|
1565
|
-
if (child_distance <
|
|
1553
|
+
if (child_distance < child_v.distance)
|
|
1566
1554
|
{
|
|
1567
|
-
|
|
1555
|
+
child_v.distance = child_distance;
|
|
1568
1556
|
queue.insert (child_distance, link.objidx);
|
|
1569
1557
|
}
|
|
1570
1558
|
}
|
|
@@ -1607,9 +1595,10 @@ struct graph_t
|
|
|
1607
1595
|
if (!id_map) return;
|
|
1608
1596
|
for (unsigned i : subgraph)
|
|
1609
1597
|
{
|
|
1610
|
-
|
|
1598
|
+
auto& obj = vertices_[i].obj;
|
|
1599
|
+
unsigned num_real = obj.real_links.length;
|
|
1611
1600
|
unsigned count = 0;
|
|
1612
|
-
for (auto& link :
|
|
1601
|
+
for (auto& link : obj.all_links_writer ())
|
|
1613
1602
|
{
|
|
1614
1603
|
count++;
|
|
1615
1604
|
const uint32_t *v;
|
|
@@ -1621,25 +1610,6 @@ struct graph_t
|
|
|
1621
1610
|
}
|
|
1622
1611
|
}
|
|
1623
1612
|
|
|
1624
|
-
/*
|
|
1625
|
-
* Updates all objidx's in all links using the provided mapping.
|
|
1626
|
-
*/
|
|
1627
|
-
bool remap_all_obj_indices (const hb_vector_t<unsigned>& id_map,
|
|
1628
|
-
hb_vector_t<vertex_t>* sorted_graph) const
|
|
1629
|
-
{
|
|
1630
|
-
unsigned count = sorted_graph->length;
|
|
1631
|
-
for (unsigned i = 0; i < count; i++)
|
|
1632
|
-
{
|
|
1633
|
-
if (!(*sorted_graph)[i].remap_parents (id_map))
|
|
1634
|
-
return false;
|
|
1635
|
-
for (auto& link : sorted_graph->arrayZ[i].obj.all_links_writer ())
|
|
1636
|
-
{
|
|
1637
|
-
link.objidx = id_map[link.objidx];
|
|
1638
|
-
}
|
|
1639
|
-
}
|
|
1640
|
-
return true;
|
|
1641
|
-
}
|
|
1642
|
-
|
|
1643
1613
|
/*
|
|
1644
1614
|
* Finds all nodes in targets that are reachable from start_idx, nodes in visited will be skipped.
|
|
1645
1615
|
* For this search the graph is treated as being undirected.
|
|
@@ -1675,7 +1645,16 @@ struct graph_t
|
|
|
1675
1645
|
public:
|
|
1676
1646
|
// TODO(garretrieger): make private, will need to move most of offset overflow code into graph.
|
|
1677
1647
|
hb_vector_t<vertex_t> vertices_;
|
|
1678
|
-
|
|
1648
|
+
|
|
1649
|
+
// Specifies the current topological ordering of this graph
|
|
1650
|
+
//
|
|
1651
|
+
// ordering_[pos] = obj index
|
|
1652
|
+
//
|
|
1653
|
+
// specifies that the 'pos'th spot is filled by the object
|
|
1654
|
+
// given by obj index.
|
|
1655
|
+
hb_vector_t<unsigned> ordering_;
|
|
1656
|
+
hb_vector_t<unsigned> ordering_scratch_;
|
|
1657
|
+
|
|
1679
1658
|
private:
|
|
1680
1659
|
bool parents_invalid;
|
|
1681
1660
|
bool distance_invalid;
|
|
@@ -87,6 +87,12 @@ struct Lookup : public OT::Lookup
|
|
|
87
87
|
return lookupType == extension_type (table_tag);
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
+
bool use_mark_filtering_set () const
|
|
91
|
+
{
|
|
92
|
+
unsigned flag = lookupFlag;
|
|
93
|
+
return flag & 0x0010u;
|
|
94
|
+
}
|
|
95
|
+
|
|
90
96
|
bool make_extension (gsubgpos_graph_context_t& c,
|
|
91
97
|
unsigned this_index)
|
|
92
98
|
{
|
|
@@ -220,6 +226,9 @@ struct Lookup : public OT::Lookup
|
|
|
220
226
|
}
|
|
221
227
|
hb_memcpy (buffer, v->obj.head, v->table_size());
|
|
222
228
|
|
|
229
|
+
if (use_mark_filtering_set ())
|
|
230
|
+
hb_memcpy (buffer + new_size - 2, v->obj.tail - 2, 2);
|
|
231
|
+
|
|
223
232
|
v->obj.head = buffer;
|
|
224
233
|
v->obj.tail = buffer + new_size;
|
|
225
234
|
|
|
@@ -113,7 +113,7 @@ will_overflow (graph_t& graph,
|
|
|
113
113
|
|
|
114
114
|
hb_hashmap_t<overflow_record_t*, bool> record_set;
|
|
115
115
|
const auto& vertices = graph.vertices_;
|
|
116
|
-
for (
|
|
116
|
+
for (unsigned parent_idx : graph.ordering_)
|
|
117
117
|
{
|
|
118
118
|
// Don't need to check virtual links for overflow
|
|
119
119
|
for (const auto& link : vertices.arrayZ[parent_idx].obj.real_links)
|
|
@@ -173,6 +173,7 @@ template <typename O> inline void
|
|
|
173
173
|
serialize_link_of_type (const hb_serialize_context_t::object_t::link_t& link,
|
|
174
174
|
char* head,
|
|
175
175
|
unsigned size,
|
|
176
|
+
const hb_vector_t<unsigned>& id_map,
|
|
176
177
|
hb_serialize_context_t* c)
|
|
177
178
|
{
|
|
178
179
|
assert(link.position + link.width <= size);
|
|
@@ -180,9 +181,7 @@ serialize_link_of_type (const hb_serialize_context_t::object_t::link_t& link,
|
|
|
180
181
|
OT::Offset<O>* offset = reinterpret_cast<OT::Offset<O>*> (head + link.position);
|
|
181
182
|
*offset = 0;
|
|
182
183
|
c->add_link (*offset,
|
|
183
|
-
|
|
184
|
-
// object array. So all id's are +1 of what our id's are.
|
|
185
|
-
link.objidx + 1,
|
|
184
|
+
id_map[link.objidx],
|
|
186
185
|
(hb_serialize_context_t::whence_t) link.whence,
|
|
187
186
|
link.bias);
|
|
188
187
|
}
|
|
@@ -191,6 +190,7 @@ inline
|
|
|
191
190
|
void serialize_link (const hb_serialize_context_t::object_t::link_t& link,
|
|
192
191
|
char* head,
|
|
193
192
|
unsigned size,
|
|
193
|
+
const hb_vector_t<unsigned>& id_map,
|
|
194
194
|
hb_serialize_context_t* c)
|
|
195
195
|
{
|
|
196
196
|
switch (link.width)
|
|
@@ -201,21 +201,21 @@ void serialize_link (const hb_serialize_context_t::object_t::link_t& link,
|
|
|
201
201
|
case 4:
|
|
202
202
|
if (link.is_signed)
|
|
203
203
|
{
|
|
204
|
-
serialize_link_of_type<OT::HBINT32> (link, head, size, c);
|
|
204
|
+
serialize_link_of_type<OT::HBINT32> (link, head, size, id_map, c);
|
|
205
205
|
} else {
|
|
206
|
-
serialize_link_of_type<OT::HBUINT32> (link, head, size, c);
|
|
206
|
+
serialize_link_of_type<OT::HBUINT32> (link, head, size, id_map, c);
|
|
207
207
|
}
|
|
208
208
|
return;
|
|
209
209
|
case 2:
|
|
210
210
|
if (link.is_signed)
|
|
211
211
|
{
|
|
212
|
-
serialize_link_of_type<OT::HBINT16> (link, head, size, c);
|
|
212
|
+
serialize_link_of_type<OT::HBINT16> (link, head, size, id_map, c);
|
|
213
213
|
} else {
|
|
214
|
-
serialize_link_of_type<OT::HBUINT16> (link, head, size, c);
|
|
214
|
+
serialize_link_of_type<OT::HBUINT16> (link, head, size, id_map, c);
|
|
215
215
|
}
|
|
216
216
|
return;
|
|
217
217
|
case 3:
|
|
218
|
-
serialize_link_of_type<OT::HBUINT24> (link, head, size, c);
|
|
218
|
+
serialize_link_of_type<OT::HBUINT24> (link, head, size, id_map, c);
|
|
219
219
|
return;
|
|
220
220
|
default:
|
|
221
221
|
// Unexpected link width.
|
|
@@ -241,25 +241,36 @@ inline hb_blob_t* serialize (const graph_t& graph)
|
|
|
241
241
|
|
|
242
242
|
c.start_serialize<void> ();
|
|
243
243
|
const auto& vertices = graph.vertices_;
|
|
244
|
-
|
|
244
|
+
|
|
245
|
+
// Objects are placed in the serializer in reverse order since children need
|
|
246
|
+
// to be inserted before their parents.
|
|
247
|
+
|
|
248
|
+
// Maps from our obj id's to the id's used during this serialization.
|
|
249
|
+
hb_vector_t<unsigned> id_map;
|
|
250
|
+
id_map.resize(graph.ordering_.length);
|
|
251
|
+
for (int pos = graph.ordering_.length - 1; pos >= 0; pos--) {
|
|
252
|
+
unsigned i = graph.ordering_[pos];
|
|
245
253
|
c.push ();
|
|
246
254
|
|
|
247
|
-
|
|
255
|
+
auto& v = vertices[i];
|
|
256
|
+
|
|
257
|
+
size_t size = v.obj.tail - v.obj.head;
|
|
258
|
+
|
|
248
259
|
char* start = c.allocate_size <char> (size);
|
|
249
260
|
if (!start) {
|
|
250
261
|
DEBUG_MSG (SUBSET_REPACK, nullptr, "Buffer out of space.");
|
|
251
262
|
return nullptr;
|
|
252
263
|
}
|
|
253
264
|
|
|
254
|
-
hb_memcpy (start,
|
|
265
|
+
hb_memcpy (start, v.obj.head, size);
|
|
255
266
|
|
|
256
267
|
// Only real links needs to be serialized.
|
|
257
|
-
for (const auto& link :
|
|
258
|
-
serialize_link (link, start, size, &c);
|
|
268
|
+
for (const auto& link : v.obj.real_links)
|
|
269
|
+
serialize_link (link, start, size, id_map, &c);
|
|
259
270
|
|
|
260
271
|
// All duplications are already encoded in the graph, so don't
|
|
261
272
|
// enable sharing during packing.
|
|
262
|
-
c.pop_pack (false);
|
|
273
|
+
id_map[i] = c.pop_pack (false);
|
|
263
274
|
}
|
|
264
275
|
c.end_serialize ();
|
|
265
276
|
|
|
@@ -126,12 +126,14 @@ struct hb_aat_apply_context_t :
|
|
|
126
126
|
const OT::GDEF &gdef;
|
|
127
127
|
bool has_glyph_classes;
|
|
128
128
|
const hb_sorted_vector_t<hb_aat_map_t::range_flags_t> *range_flags = nullptr;
|
|
129
|
+
hb_mask_t subtable_flags = 0;
|
|
130
|
+
bool buffer_is_reversed = false;
|
|
131
|
+
// Caches
|
|
129
132
|
bool using_buffer_glyph_set = false;
|
|
130
133
|
hb_bit_set_t *buffer_glyph_set = nullptr;
|
|
131
134
|
const hb_bit_set_t *first_set = nullptr;
|
|
132
135
|
const hb_bit_set_t *second_set = nullptr;
|
|
133
136
|
hb_aat_class_cache_t *machine_class_cache = nullptr;
|
|
134
|
-
hb_mask_t subtable_flags = 0;
|
|
135
137
|
|
|
136
138
|
/* Unused. For debug tracing only. */
|
|
137
139
|
unsigned int lookup_index;
|
|
@@ -147,6 +149,12 @@ struct hb_aat_apply_context_t :
|
|
|
147
149
|
|
|
148
150
|
void set_lookup_index (unsigned int i) { lookup_index = i; }
|
|
149
151
|
|
|
152
|
+
void reverse_buffer ()
|
|
153
|
+
{
|
|
154
|
+
buffer->reverse ();
|
|
155
|
+
buffer_is_reversed = !buffer_is_reversed;
|
|
156
|
+
}
|
|
157
|
+
|
|
150
158
|
void setup_buffer_glyph_set ()
|
|
151
159
|
{
|
|
152
160
|
using_buffer_glyph_set = buffer->len >= 4 && buffer_glyph_set;
|
|
@@ -629,6 +629,8 @@ struct KerxSubTableFormat4
|
|
|
629
629
|
}
|
|
630
630
|
o.attach_type() = OT::Layout::GPOS_impl::ATTACH_TYPE_MARK;
|
|
631
631
|
o.attach_chain() = (int) mark - (int) buffer->idx;
|
|
632
|
+
if (c->buffer_is_reversed)
|
|
633
|
+
o.attach_chain() = -o.attach_chain();
|
|
632
634
|
buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_GPOS_ATTACHMENT;
|
|
633
635
|
}
|
|
634
636
|
|
|
@@ -1000,7 +1002,6 @@ struct KerxTable
|
|
|
1000
1002
|
|
|
1001
1003
|
typedef typename T::SubTable SubTable;
|
|
1002
1004
|
|
|
1003
|
-
bool buffer_is_reversed = false;
|
|
1004
1005
|
bool ret = false;
|
|
1005
1006
|
bool seenCrossStream = false;
|
|
1006
1007
|
c->set_lookup_index (0);
|
|
@@ -1051,11 +1052,8 @@ struct KerxTable
|
|
|
1051
1052
|
}
|
|
1052
1053
|
}
|
|
1053
1054
|
|
|
1054
|
-
if (reverse != buffer_is_reversed)
|
|
1055
|
-
|
|
1056
|
-
c->buffer->reverse ();
|
|
1057
|
-
buffer_is_reversed = reverse;
|
|
1058
|
-
}
|
|
1055
|
+
if (reverse != c->buffer_is_reversed)
|
|
1056
|
+
c->reverse_buffer ();
|
|
1059
1057
|
|
|
1060
1058
|
{
|
|
1061
1059
|
/* See comment in sanitize() for conditional here. */
|
|
@@ -1069,8 +1067,8 @@ struct KerxTable
|
|
|
1069
1067
|
st = &StructAfter<SubTable> (*st);
|
|
1070
1068
|
c->set_lookup_index (c->lookup_index + 1);
|
|
1071
1069
|
}
|
|
1072
|
-
if (buffer_is_reversed)
|
|
1073
|
-
c->
|
|
1070
|
+
if (c->buffer_is_reversed)
|
|
1071
|
+
c->reverse_buffer ();
|
|
1074
1072
|
|
|
1075
1073
|
return ret;
|
|
1076
1074
|
}
|
|
@@ -1156,7 +1156,6 @@ struct Chain
|
|
|
1156
1156
|
void apply (hb_aat_apply_context_t *c,
|
|
1157
1157
|
const hb_aat_layout_chain_accelerator_t *accel) const
|
|
1158
1158
|
{
|
|
1159
|
-
bool buffer_is_reversed = false;
|
|
1160
1159
|
const ChainSubtable<Types> *subtable = &StructAfter<ChainSubtable<Types>> (featureZ.as_array (featureCount));
|
|
1161
1160
|
unsigned int count = subtableCount;
|
|
1162
1161
|
for (unsigned int i = 0; i < count; i++)
|
|
@@ -1220,11 +1219,8 @@ struct Chain
|
|
|
1220
1219
|
if (!c->buffer->message (c->font, "start chainsubtable %u", c->lookup_index))
|
|
1221
1220
|
goto skip;
|
|
1222
1221
|
|
|
1223
|
-
if (reverse != buffer_is_reversed)
|
|
1224
|
-
|
|
1225
|
-
c->buffer->reverse ();
|
|
1226
|
-
buffer_is_reversed = reverse;
|
|
1227
|
-
}
|
|
1222
|
+
if (reverse != c->buffer_is_reversed)
|
|
1223
|
+
c->reverse_buffer ();
|
|
1228
1224
|
|
|
1229
1225
|
subtable->apply (c);
|
|
1230
1226
|
|
|
@@ -1236,8 +1232,8 @@ struct Chain
|
|
|
1236
1232
|
subtable = &StructAfter<ChainSubtable<Types>> (*subtable);
|
|
1237
1233
|
c->set_lookup_index (c->lookup_index + 1);
|
|
1238
1234
|
}
|
|
1239
|
-
if (buffer_is_reversed)
|
|
1240
|
-
c->
|
|
1235
|
+
if (c->buffer_is_reversed)
|
|
1236
|
+
c->reverse_buffer ();
|
|
1241
1237
|
}
|
|
1242
1238
|
|
|
1243
1239
|
unsigned int get_size () const { return length; }
|