uharfbuzz 0.51.5__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.5 → uharfbuzz-0.51.6}/PKG-INFO +1 -1
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Color/COLR/COLR.hh +1 -1
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/ValueFormat.hh +6 -1
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/glyf/SimpleGlyph.hh +1 -1
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/graph/graph.hh +68 -89
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/graph/gsubgpos-graph.hh +9 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/graph/serialize.hh +26 -15
- {uharfbuzz-0.51.5 → 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.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-atomic.hh +80 -20
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-bimap.hh +1 -1
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-bit-page.hh +31 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-bit-set-invertible.hh +1 -1
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-bit-set.hh +7 -6
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-buffer.hh +13 -16
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-config.hh +0 -1
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-debug.hh +1 -1
- uharfbuzz-0.51.5/harfbuzz/src/hb-pool.hh → uharfbuzz-0.51.6/harfbuzz/src/hb-free-pool.hh +7 -7
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-kbts.cc +2 -2
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-map.hh +27 -17
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-open-type.hh +29 -32
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-cff1-table.hh +2 -2
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-layout-common.hh +77 -83
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-layout-gsubgpos.hh +5 -6
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-layout.cc +17 -12
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-layout.hh +3 -3
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shape.cc +48 -25
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-thai.cc +1 -1
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-var-common.hh +242 -217
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-var-cvar-table.hh +4 -3
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-var-gvar-table.hh +36 -51
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-repacker.hh +11 -5
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-serialize.hh +2 -2
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-set-digest.hh +3 -3
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-instancer-iup.cc +75 -46
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-instancer-iup.hh +15 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-plan-layout.cc +40 -2
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-plan-member-list.hh +4 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-plan.cc +11 -2
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset.h +5 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-vector.hh +65 -24
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-version.h +3 -3
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb.hh +1 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/test-repacker.cc +68 -51
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/test-tuple-varstore.cc +2 -1
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/src/uharfbuzz/_version.py +3 -3
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/src/uharfbuzz.egg-info/PKG-INFO +1 -1
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/src/uharfbuzz.egg-info/SOURCES.txt +2 -1
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/tests/test_uharfbuzz.py +0 -17
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/.coveragerc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/.github/workflows/ci.yml +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/.gitignore +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/.gitmodules +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/.readthedocs.yml +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/LICENSE +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/MANIFEST.in +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/README.md +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/docs/.gitignore +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/docs/requirements.in +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/docs/requirements.txt +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/docs/source/conf.py +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/docs/source/index.rst +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/docs/source/reference.rst +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Color/CBDT/CBDT.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Color/COLR/colrv1-closure.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Color/CPAL/CPAL.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Color/sbix/sbix.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Color/svg/svg.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/Common/Coverage.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/Common/CoverageFormat1.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/Common/CoverageFormat2.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/Common/RangeRecord.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GDEF/GDEF.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/Anchor.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/AnchorFormat1.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/AnchorFormat2.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/AnchorFormat3.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/AnchorMatrix.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/ChainContextPos.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/Common.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/ContextPos.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/CursivePos.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/CursivePosFormat1.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/ExtensionPos.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/GPOS.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/LigatureArray.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/MarkArray.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/MarkBasePos.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/MarkBasePosFormat1.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/MarkLigPos.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/MarkLigPosFormat1.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/MarkMarkPos.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/MarkMarkPosFormat1.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/MarkRecord.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/PairPos.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/PairPosFormat1.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/PairPosFormat2.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/PairSet.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/PairValueRecord.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/PosLookup.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/PosLookupSubTable.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/SinglePos.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/SinglePosFormat1.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/SinglePosFormat2.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/AlternateSet.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/AlternateSubst.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/AlternateSubstFormat1.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/ChainContextSubst.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/Common.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/ContextSubst.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/ExtensionSubst.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/GSUB.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/Ligature.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/LigatureSet.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/LigatureSubst.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/LigatureSubstFormat1.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/MultipleSubst.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/MultipleSubstFormat1.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/ReverseChainSingleSubst.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/ReverseChainSingleSubstFormat1.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/Sequence.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/SingleSubst.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/SingleSubstFormat1.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/SingleSubstFormat2.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/SubstLookup.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/SubstLookupSubTable.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/types.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Var/VARC/VARC.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Var/VARC/VARC.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Var/VARC/coord-setter.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/glyf/CompositeGlyph.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/glyf/Glyph.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/glyf/GlyphHeader.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/glyf/SubsetGlyph.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/glyf/composite-iter.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/glyf/glyf-helpers.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/glyf/glyf.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/glyf/loca.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/glyf/path-builder.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/OT/name/name.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/graph/classdef-graph.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/graph/coverage-graph.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/graph/gsubgpos-context.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/graph/gsubgpos-context.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/graph/ligature-graph.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/graph/markbasepos-graph.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/graph/pairpos-graph.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/graph/split-helpers.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/graph/test-classdef-graph.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/harfbuzz-subset.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/harfbuzz.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout-ankr-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout-bsln-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout-common.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout-feat-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout-just-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout-kerx-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout-morx-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout-opbd-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout-trak-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-ltag-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-map.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-map.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-array.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-bit-vector.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-blob.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-blob.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-blob.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-buffer-deserialize-json.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-buffer-deserialize-text-glyphs.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-buffer-deserialize-text-unicode.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-buffer-serialize.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-buffer-verify.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-buffer.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-buffer.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cache.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cairo-utils.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cairo-utils.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cairo.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cairo.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cff-interp-common.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cff-interp-cs-common.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cff-interp-dict-common.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cff1-interp-cs.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cff2-interp-cs.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-common.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-common.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-coretext-font.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-coretext-shape.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-coretext.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-coretext.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-coretext.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cplusplus.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-decycler.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-deprecated.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-directwrite-font.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-directwrite-shape.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-directwrite.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-directwrite.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-directwrite.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-dispatch.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-draw.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-draw.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-draw.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-face-builder.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-face.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-face.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-face.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-fallback-shape.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-font.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-font.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-font.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-fontations.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ft-colr.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ft.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ft.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-gdi.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-gdi.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-geometry.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-glib.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-glib.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-gobject-structs.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-gobject-structs.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-gobject.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-graphite2.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-graphite2.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-harfrust.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-icu.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-icu.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-iter.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-kern.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-limits.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-machinery.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-map.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-map.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-meta.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ms-feature-ranges.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-multimap.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-mutex.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-null.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-number-parser.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-number.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-number.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-object.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-open-file.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-cff-common.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-cff1-std-str.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-cff1-table.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-cff2-table.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-cff2-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-cmap-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-color.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-color.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-deprecated.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-face-table-list.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-face.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-face.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-font.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-font.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-gasp-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-glyf-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-hdmx-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-head-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-hhea-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-hmtx-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-kern-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-layout-base-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-layout-gdef-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-layout-gpos-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-layout-gsub-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-layout-jstf-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-layout.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-map.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-map.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-math-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-math.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-math.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-maxp-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-meta-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-meta.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-meta.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-metrics.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-metrics.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-metrics.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-name-language-static.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-name-language.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-name-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-name.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-name.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-os2-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-os2-unicode-ranges.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-post-macroman.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-post-table-v2subset.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-post-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shape-fallback.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shape-fallback.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shape-normalize.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shape-normalize.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shape.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shape.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-arabic-fallback.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-arabic-joining-list.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-arabic-pua.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-arabic-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-arabic-win1256.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-arabic.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-arabic.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-default.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-hangul.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-hebrew.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-indic-machine.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-indic-table.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-indic.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-indic.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-khmer-machine.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-khmer.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-myanmar-machine.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-myanmar.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-syllabic.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-syllabic.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-use-machine.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-use-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-use.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-vowel-constraints.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-vowel-constraints.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-stat-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-tag-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-tag.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-var-avar-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-var-fvar-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-var-hvar-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-var-mvar-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-var-varc-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-var.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-var.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-vorg-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-outline.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-outline.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-paint-bounded.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-paint-bounded.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-paint-extents.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-paint-extents.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-paint.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-paint.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-paint.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-priority-queue.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-sanitize.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-script-list.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-set.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-set.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-set.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-shape-plan.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-shape-plan.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-shape-plan.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-shape.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-shape.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-shaper-impl.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-shaper-list.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-shaper.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-shaper.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-static.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-string-array.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-style.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-style.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-accelerator.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-cff-common.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-cff-common.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-cff1.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-cff2.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-input.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-input.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-instancer-solver.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-instancer-solver.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-plan-var.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-plan.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-serialize.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-serialize.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-table-cff.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-table-color.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-table-layout.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-table-other.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-table-var.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ucd-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ucd.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-unicode-emoji-table.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-unicode.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-unicode.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-unicode.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-uniscribe.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-uniscribe.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-utf.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-api-blob.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-api-buffer.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-api-common.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-api-face.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-api-font.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-api-list.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-api-shape.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-api.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-api.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-api.hh +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-shape.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/hb.h +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/main.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/test-algs.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/test-array.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/test-bimap.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/test-buffer-serialize.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/test-cff.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/test-decycler.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/test-gpos-size-params.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/test-gsub-get-alternates.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/test-gsub-would-substitute.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/test-item-varstore.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/test-iter.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/test-machinery.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/test-map.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/test-multimap.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/test-number.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/test-ot-glyphname.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/test-ot-meta.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/test-ot-name.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/test-priority-queue.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/test-serialize.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/test-set.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/test-subset-instancer-solver.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/test-unicode-ranges.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/test-use-table.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/test-vector.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/test.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/wasm/graphite/shape.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/wasm/sample/c/shape-fallback.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/harfbuzz/src/wasm/sample/c/shape-ot.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/pyproject.toml +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/requirements-dev.txt +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/setup.cfg +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/setup.py +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/src/uharfbuzz/__init__.py +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/src/uharfbuzz/_draw_test_funcs.cc +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/src/uharfbuzz/_harfbuzz.cpp +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/src/uharfbuzz/_harfbuzz.pyx +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/src/uharfbuzz/_harfbuzz_test.cpp +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/src/uharfbuzz/_harfbuzz_test.pyx +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/src/uharfbuzz/charfbuzz.pxd +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/src/uharfbuzz.egg-info/dependency_links.txt +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/src/uharfbuzz.egg-info/not-zip-safe +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/src/uharfbuzz.egg-info/top_level.txt +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/tests/data/AUTHORS_StixTwoMath.txt +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/tests/data/AdobeBlank.fea +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/tests/data/AdobeBlank.subset.ttf +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/tests/data/LICENSE_AdobeBlank.txt +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/tests/data/LICENSE_ChromaCheck_colr.txt +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/tests/data/LICENSE_MutatorSans.txt +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/tests/data/LICENSE_OpenSans.txt +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/tests/data/LICENSE_STIXTwoMath.txt +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/tests/data/MutatorSans-VF.subset.ttf +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/tests/data/OpenSans.subset.ttf +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/tests/data/STIXTwoMath-Regular.ttf +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/tests/data/SparseFont.ttf +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/tests/data/chromacheck-colr.ttf +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/tests/data/expected/hand-10 +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/tests/data/expected/test-10 +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/tests/data/expected/test-106 +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/tests/data/expected/test-116 +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/tests/data/expected/test-123 +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/tests/data/expected/test-154 +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/tests/data/expected/test-165 +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/tests/data/expected/test-175 +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/tests/data/expected/test-6 +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/tests/data/expected/test-92 +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/tests/data/noto_handwriting-cff2_colr_1.otf +0 -0
- {uharfbuzz-0.51.5 → uharfbuzz-0.51.6}/tests/data/test_glyphs-glyf_colr_1.ttf +0 -0
- {uharfbuzz-0.51.5 → 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
|
{
|
|
@@ -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
|
|
|
@@ -92,6 +92,7 @@ template <typename Type>
|
|
|
92
92
|
struct __attribute__((packed)) hb_packed_t { Type v; };
|
|
93
93
|
|
|
94
94
|
#ifndef HB_FAST_NUM_ACCESS
|
|
95
|
+
|
|
95
96
|
#if defined(__OPTIMIZE__) && \
|
|
96
97
|
defined(__BYTE_ORDER) && \
|
|
97
98
|
(__BYTE_ORDER == __BIG_ENDIAN || \
|
|
@@ -102,6 +103,13 @@ struct __attribute__((packed)) hb_packed_t { Type v; };
|
|
|
102
103
|
#else
|
|
103
104
|
#define HB_FAST_NUM_ACCESS 0
|
|
104
105
|
#endif
|
|
106
|
+
|
|
107
|
+
// https://github.com/harfbuzz/harfbuzz/issues/5456
|
|
108
|
+
#if defined(__GNUC__) && !defined(__clang__) && (__GNUC__ <= 12)
|
|
109
|
+
#undef HB_FAST_NUM_ACCESS
|
|
110
|
+
#define HB_FAST_NUM_ACCESS 0
|
|
111
|
+
#endif
|
|
112
|
+
|
|
105
113
|
#endif
|
|
106
114
|
|
|
107
115
|
template <bool BE, typename Type, int Bytes = sizeof (Type)>
|
|
@@ -846,6 +854,17 @@ HB_FUNCOBJ (hb_clamp);
|
|
|
846
854
|
* Bithacks.
|
|
847
855
|
*/
|
|
848
856
|
|
|
857
|
+
/* Return the number of 1 bits in a uint8_t; faster than hb_popcount() */
|
|
858
|
+
static inline unsigned
|
|
859
|
+
hb_popcount8 (uint8_t v)
|
|
860
|
+
{
|
|
861
|
+
static const uint8_t popcount4[16] = {
|
|
862
|
+
0, 1, 1, 2, 1, 2, 2, 3,
|
|
863
|
+
1, 2, 2, 3, 2, 3, 3, 4
|
|
864
|
+
};
|
|
865
|
+
return popcount4[v & 0xF] + popcount4[v >> 4];
|
|
866
|
+
}
|
|
867
|
+
|
|
849
868
|
/* Return the number of 1 bits in v. */
|
|
850
869
|
template <typename T>
|
|
851
870
|
static inline unsigned int
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This is part of HarfBuzz, a text shaping library.
|
|
3
|
+
*
|
|
4
|
+
* Permission is hereby granted, without written agreement and without
|
|
5
|
+
* license or royalty fees, to use, copy, modify, and distribute this
|
|
6
|
+
* software and its documentation for any purpose, provided that the
|
|
7
|
+
* above copyright notice and the following two paragraphs appear in
|
|
8
|
+
* all copies of this software.
|
|
9
|
+
*
|
|
10
|
+
* IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
|
|
11
|
+
* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
|
|
12
|
+
* ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
|
|
13
|
+
* IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
|
14
|
+
* DAMAGE.
|
|
15
|
+
*
|
|
16
|
+
* THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
|
|
17
|
+
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
18
|
+
* FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
|
|
19
|
+
* ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
|
|
20
|
+
* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
|
21
|
+
*
|
|
22
|
+
* Author(s): Behdad Esfahbod
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
#ifndef HB_ALLOC_POOL_HH
|
|
26
|
+
#define HB_ALLOC_POOL_HH
|
|
27
|
+
|
|
28
|
+
#include "hb-vector.hh"
|
|
29
|
+
|
|
30
|
+
/* Memory pool for persistent small- to medium-sized allocations.
|
|
31
|
+
*
|
|
32
|
+
* Some AI musings on this, not necessarily true:
|
|
33
|
+
*
|
|
34
|
+
* This is a very simple implementation, but it's good enough for our
|
|
35
|
+
* purposes. It's not thread-safe. It's not very fast. It's not
|
|
36
|
+
* very memory efficient. It's not very cache efficient. It's not
|
|
37
|
+
* very anything efficient. But it's simple and it works. And it's
|
|
38
|
+
* good enough for our purposes. If you need something more
|
|
39
|
+
* sophisticated, use a real allocator. Or use a real language. */
|
|
40
|
+
|
|
41
|
+
struct hb_alloc_pool_t
|
|
42
|
+
{
|
|
43
|
+
unsigned ChunkSize = 65536 - 2 * sizeof (void *);
|
|
44
|
+
|
|
45
|
+
void *alloc (size_t size, unsigned alignment = 2 * sizeof (void *))
|
|
46
|
+
{
|
|
47
|
+
if (unlikely (chunks.in_error ())) return nullptr;
|
|
48
|
+
|
|
49
|
+
assert (alignment > 0);
|
|
50
|
+
assert (alignment <= 2 * sizeof (void *));
|
|
51
|
+
assert ((alignment & (alignment - 1)) == 0); /* power of two */
|
|
52
|
+
|
|
53
|
+
if (size > (ChunkSize) / 4)
|
|
54
|
+
{
|
|
55
|
+
/* Big chunk, allocate separately. */
|
|
56
|
+
hb_vector_t<char> chunk;
|
|
57
|
+
if (unlikely (!chunk.resize (size))) return nullptr;
|
|
58
|
+
void *ret = chunk.arrayZ;
|
|
59
|
+
chunks.push (std::move (chunk));
|
|
60
|
+
if (chunks.in_error ()) return nullptr;
|
|
61
|
+
if (chunks.length > 1)
|
|
62
|
+
{
|
|
63
|
+
// Bring back the previous last chunk to the end, so that
|
|
64
|
+
// we can continue to allocate from it.
|
|
65
|
+
hb_swap (chunks.arrayZ[chunks.length - 1], chunks.arrayZ[chunks.length - 2]);
|
|
66
|
+
}
|
|
67
|
+
return ret;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
unsigned pad = current_chunk.length & (alignment - 1);
|
|
71
|
+
if (pad) pad = alignment - pad;
|
|
72
|
+
|
|
73
|
+
// Small chunk, allocate from the last chunk.
|
|
74
|
+
if (current_chunk.length < pad + size)
|
|
75
|
+
{
|
|
76
|
+
chunks.push ();
|
|
77
|
+
if (unlikely (chunks.in_error ())) return nullptr;
|
|
78
|
+
hb_vector_t<char> &chunk = chunks.arrayZ[chunks.length - 1];
|
|
79
|
+
if (unlikely (!chunk.resize (ChunkSize))) return nullptr;
|
|
80
|
+
current_chunk = chunk;
|
|
81
|
+
}
|
|
82
|
+
else
|
|
83
|
+
current_chunk += pad;
|
|
84
|
+
|
|
85
|
+
assert (current_chunk.length >= size);
|
|
86
|
+
void *ret = current_chunk.arrayZ;
|
|
87
|
+
current_chunk += size;
|
|
88
|
+
return ret;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
void discard (void *p_, size_t size)
|
|
92
|
+
{
|
|
93
|
+
// Reclaim memory if we can.
|
|
94
|
+
char *p = (char *) p_;
|
|
95
|
+
if (current_chunk.arrayZ == p + size && current_chunk.backwards_length >= size)
|
|
96
|
+
current_chunk -= size;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
private:
|
|
100
|
+
hb_vector_t<hb_vector_t<char>> chunks;
|
|
101
|
+
hb_array_t<char> current_chunk;
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
#endif /* HB_ALLOC_POOL_HH */
|