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.

Files changed (485) hide show
  1. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/PKG-INFO +1 -1
  2. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Color/COLR/COLR.hh +1 -1
  3. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/GPOS.hh +31 -11
  4. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/ValueFormat.hh +6 -1
  5. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/glyf/SimpleGlyph.hh +1 -1
  6. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/graph/graph.hh +68 -89
  7. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/graph/gsubgpos-graph.hh +9 -0
  8. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/graph/serialize.hh +26 -15
  9. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout-common.hh +9 -1
  10. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout-kerx-table.hh +6 -8
  11. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout-morx-table.hh +4 -8
  12. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-algs.hh +19 -0
  13. uharfbuzz-0.51.6/harfbuzz/src/hb-alloc-pool.hh +105 -0
  14. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-atomic.hh +80 -20
  15. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-bimap.hh +1 -1
  16. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-bit-page.hh +31 -0
  17. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-bit-set-invertible.hh +1 -1
  18. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-bit-set.hh +7 -6
  19. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-buffer.cc +20 -0
  20. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-buffer.hh +17 -16
  21. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-common.cc +3 -0
  22. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-config.hh +0 -1
  23. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-debug.hh +1 -1
  24. uharfbuzz-0.51.4/harfbuzz/src/hb-pool.hh → uharfbuzz-0.51.6/harfbuzz/src/hb-free-pool.hh +7 -7
  25. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-kbts.cc +2 -2
  26. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-map.hh +27 -17
  27. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-open-type.hh +29 -32
  28. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-cff1-table.hh +2 -2
  29. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-layout-common.hh +130 -101
  30. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-layout-gsubgpos.hh +5 -6
  31. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-layout.cc +17 -12
  32. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-layout.hh +3 -3
  33. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shape.cc +51 -25
  34. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-arabic-joining-list.hh +4 -4
  35. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-arabic-table.hh +11 -11
  36. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-indic-table.cc +6 -6
  37. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-thai.cc +1 -1
  38. uharfbuzz-0.51.6/harfbuzz/src/hb-ot-shaper-use-table.hh +717 -0
  39. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-vowel-constraints.cc +2 -2
  40. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper.hh +6 -0
  41. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-tag-table.hh +3 -3
  42. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-var-common.hh +318 -267
  43. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-var-cvar-table.hh +4 -3
  44. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-var-gvar-table.hh +36 -51
  45. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-var-hvar-table.hh +49 -31
  46. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-priority-queue.hh +11 -1
  47. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-repacker.hh +11 -5
  48. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-script-list.h +12 -0
  49. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-serialize.hh +2 -2
  50. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-set-digest.hh +3 -3
  51. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-instancer-iup.cc +75 -46
  52. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-instancer-iup.hh +15 -0
  53. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-instancer-solver.cc +18 -20
  54. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-instancer-solver.hh +11 -11
  55. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-plan-layout.cc +40 -2
  56. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-plan-member-list.hh +4 -0
  57. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-plan.cc +11 -2
  58. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset.h +5 -0
  59. uharfbuzz-0.51.6/harfbuzz/src/hb-ucd-table.hh +5628 -0
  60. uharfbuzz-0.51.6/harfbuzz/src/hb-unicode-emoji-table.hh +87 -0
  61. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-vector.hh +91 -26
  62. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-version.h +4 -4
  63. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb.hh +1 -0
  64. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-repacker.cc +68 -51
  65. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-subset-instancer-solver.cc +64 -32
  66. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-tuple-varstore.cc +2 -1
  67. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/src/uharfbuzz/_harfbuzz.cpp +16 -5
  68. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/src/uharfbuzz/_harfbuzz_test.cpp +3 -3
  69. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/src/uharfbuzz/_version.py +3 -3
  70. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/src/uharfbuzz.egg-info/PKG-INFO +1 -1
  71. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/src/uharfbuzz.egg-info/SOURCES.txt +2 -1
  72. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/test_uharfbuzz.py +0 -17
  73. uharfbuzz-0.51.4/harfbuzz/src/hb-ot-shaper-use-table.hh +0 -718
  74. uharfbuzz-0.51.4/harfbuzz/src/hb-ucd-table.hh +0 -5696
  75. uharfbuzz-0.51.4/harfbuzz/src/hb-unicode-emoji-table.hh +0 -77
  76. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/.coveragerc +0 -0
  77. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/.github/workflows/ci.yml +0 -0
  78. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/.gitignore +0 -0
  79. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/.gitmodules +0 -0
  80. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/.readthedocs.yml +0 -0
  81. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/LICENSE +0 -0
  82. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/MANIFEST.in +0 -0
  83. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/README.md +0 -0
  84. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/docs/.gitignore +0 -0
  85. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/docs/requirements.in +0 -0
  86. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/docs/requirements.txt +0 -0
  87. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/docs/source/conf.py +0 -0
  88. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/docs/source/index.rst +0 -0
  89. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/docs/source/reference.rst +0 -0
  90. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Color/CBDT/CBDT.hh +0 -0
  91. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Color/COLR/colrv1-closure.hh +0 -0
  92. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Color/CPAL/CPAL.hh +0 -0
  93. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Color/sbix/sbix.hh +0 -0
  94. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Color/svg/svg.hh +0 -0
  95. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/Common/Coverage.hh +0 -0
  96. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/Common/CoverageFormat1.hh +0 -0
  97. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/Common/CoverageFormat2.hh +0 -0
  98. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/Common/RangeRecord.hh +0 -0
  99. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GDEF/GDEF.hh +0 -0
  100. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/Anchor.hh +0 -0
  101. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/AnchorFormat1.hh +0 -0
  102. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/AnchorFormat2.hh +0 -0
  103. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/AnchorFormat3.hh +0 -0
  104. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/AnchorMatrix.hh +0 -0
  105. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/ChainContextPos.hh +0 -0
  106. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/Common.hh +0 -0
  107. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/ContextPos.hh +0 -0
  108. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/CursivePos.hh +0 -0
  109. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/CursivePosFormat1.hh +0 -0
  110. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/ExtensionPos.hh +0 -0
  111. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/LigatureArray.hh +0 -0
  112. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/MarkArray.hh +0 -0
  113. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/MarkBasePos.hh +0 -0
  114. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/MarkBasePosFormat1.hh +0 -0
  115. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/MarkLigPos.hh +0 -0
  116. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/MarkLigPosFormat1.hh +0 -0
  117. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/MarkMarkPos.hh +0 -0
  118. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/MarkMarkPosFormat1.hh +0 -0
  119. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/MarkRecord.hh +0 -0
  120. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/PairPos.hh +0 -0
  121. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/PairPosFormat1.hh +0 -0
  122. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/PairPosFormat2.hh +0 -0
  123. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/PairSet.hh +0 -0
  124. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/PairValueRecord.hh +0 -0
  125. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/PosLookup.hh +0 -0
  126. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/PosLookupSubTable.hh +0 -0
  127. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/SinglePos.hh +0 -0
  128. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/SinglePosFormat1.hh +0 -0
  129. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GPOS/SinglePosFormat2.hh +0 -0
  130. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/AlternateSet.hh +0 -0
  131. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/AlternateSubst.hh +0 -0
  132. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/AlternateSubstFormat1.hh +0 -0
  133. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/ChainContextSubst.hh +0 -0
  134. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/Common.hh +0 -0
  135. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/ContextSubst.hh +0 -0
  136. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/ExtensionSubst.hh +0 -0
  137. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/GSUB.hh +0 -0
  138. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/Ligature.hh +0 -0
  139. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/LigatureSet.hh +0 -0
  140. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/LigatureSubst.hh +0 -0
  141. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/LigatureSubstFormat1.hh +0 -0
  142. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/MultipleSubst.hh +0 -0
  143. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/MultipleSubstFormat1.hh +0 -0
  144. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/ReverseChainSingleSubst.hh +0 -0
  145. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/ReverseChainSingleSubstFormat1.hh +0 -0
  146. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/Sequence.hh +0 -0
  147. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/SingleSubst.hh +0 -0
  148. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/SingleSubstFormat1.hh +0 -0
  149. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/SingleSubstFormat2.hh +0 -0
  150. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/SubstLookup.hh +0 -0
  151. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/GSUB/SubstLookupSubTable.hh +0 -0
  152. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Layout/types.hh +0 -0
  153. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Var/VARC/VARC.cc +0 -0
  154. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Var/VARC/VARC.hh +0 -0
  155. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/Var/VARC/coord-setter.hh +0 -0
  156. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/glyf/CompositeGlyph.hh +0 -0
  157. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/glyf/Glyph.hh +0 -0
  158. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/glyf/GlyphHeader.hh +0 -0
  159. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/glyf/SubsetGlyph.hh +0 -0
  160. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/glyf/composite-iter.hh +0 -0
  161. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/glyf/glyf-helpers.hh +0 -0
  162. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/glyf/glyf.hh +0 -0
  163. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/glyf/loca.hh +0 -0
  164. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/glyf/path-builder.hh +0 -0
  165. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/OT/name/name.hh +0 -0
  166. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/graph/classdef-graph.hh +0 -0
  167. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/graph/coverage-graph.hh +0 -0
  168. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/graph/gsubgpos-context.cc +0 -0
  169. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/graph/gsubgpos-context.hh +0 -0
  170. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/graph/ligature-graph.hh +0 -0
  171. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/graph/markbasepos-graph.hh +0 -0
  172. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/graph/pairpos-graph.hh +0 -0
  173. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/graph/split-helpers.hh +0 -0
  174. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/graph/test-classdef-graph.cc +0 -0
  175. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/harfbuzz-subset.cc +0 -0
  176. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/harfbuzz.cc +0 -0
  177. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout-ankr-table.hh +0 -0
  178. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout-bsln-table.hh +0 -0
  179. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout-feat-table.hh +0 -0
  180. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout-just-table.hh +0 -0
  181. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout-opbd-table.hh +0 -0
  182. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout-trak-table.hh +0 -0
  183. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout.cc +0 -0
  184. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout.h +0 -0
  185. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-layout.hh +0 -0
  186. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-ltag-table.hh +0 -0
  187. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-map.cc +0 -0
  188. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat-map.hh +0 -0
  189. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-aat.h +0 -0
  190. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-array.hh +0 -0
  191. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-bit-vector.hh +0 -0
  192. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-blob.cc +0 -0
  193. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-blob.h +0 -0
  194. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-blob.hh +0 -0
  195. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-buffer-deserialize-json.hh +0 -0
  196. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-buffer-deserialize-text-glyphs.hh +0 -0
  197. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-buffer-deserialize-text-unicode.hh +0 -0
  198. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-buffer-serialize.cc +0 -0
  199. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-buffer-verify.cc +0 -0
  200. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-buffer.h +0 -0
  201. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cache.hh +0 -0
  202. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cairo-utils.cc +0 -0
  203. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cairo-utils.hh +0 -0
  204. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cairo.cc +0 -0
  205. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cairo.h +0 -0
  206. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cff-interp-common.hh +0 -0
  207. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cff-interp-cs-common.hh +0 -0
  208. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cff-interp-dict-common.hh +0 -0
  209. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cff1-interp-cs.hh +0 -0
  210. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cff2-interp-cs.hh +0 -0
  211. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-common.h +0 -0
  212. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-coretext-font.cc +0 -0
  213. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-coretext-shape.cc +0 -0
  214. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-coretext.cc +0 -0
  215. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-coretext.h +0 -0
  216. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-coretext.hh +0 -0
  217. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-cplusplus.hh +0 -0
  218. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-decycler.hh +0 -0
  219. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-deprecated.h +0 -0
  220. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-directwrite-font.cc +0 -0
  221. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-directwrite-shape.cc +0 -0
  222. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-directwrite.cc +0 -0
  223. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-directwrite.h +0 -0
  224. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-directwrite.hh +0 -0
  225. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-dispatch.hh +0 -0
  226. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-draw.cc +0 -0
  227. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-draw.h +0 -0
  228. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-draw.hh +0 -0
  229. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-face-builder.cc +0 -0
  230. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-face.cc +0 -0
  231. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-face.h +0 -0
  232. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-face.hh +0 -0
  233. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-fallback-shape.cc +0 -0
  234. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-font.cc +0 -0
  235. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-font.h +0 -0
  236. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-font.hh +0 -0
  237. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-fontations.h +0 -0
  238. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ft-colr.hh +0 -0
  239. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ft.cc +0 -0
  240. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ft.h +0 -0
  241. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-gdi.cc +0 -0
  242. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-gdi.h +0 -0
  243. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-geometry.hh +0 -0
  244. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-glib.cc +0 -0
  245. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-glib.h +0 -0
  246. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-gobject-structs.cc +0 -0
  247. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-gobject-structs.h +0 -0
  248. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-gobject.h +0 -0
  249. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-graphite2.cc +0 -0
  250. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-graphite2.h +0 -0
  251. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-harfrust.cc +0 -0
  252. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-icu.cc +0 -0
  253. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-icu.h +0 -0
  254. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-iter.hh +0 -0
  255. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-kern.hh +0 -0
  256. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-limits.hh +0 -0
  257. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-machinery.hh +0 -0
  258. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-map.cc +0 -0
  259. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-map.h +0 -0
  260. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-meta.hh +0 -0
  261. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ms-feature-ranges.hh +0 -0
  262. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-multimap.hh +0 -0
  263. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-mutex.hh +0 -0
  264. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-null.hh +0 -0
  265. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-number-parser.hh +0 -0
  266. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-number.cc +0 -0
  267. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-number.hh +0 -0
  268. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-object.hh +0 -0
  269. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-open-file.hh +0 -0
  270. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-cff-common.hh +0 -0
  271. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-cff1-std-str.hh +0 -0
  272. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-cff1-table.cc +0 -0
  273. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-cff2-table.cc +0 -0
  274. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-cff2-table.hh +0 -0
  275. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-cmap-table.hh +0 -0
  276. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-color.cc +0 -0
  277. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-color.h +0 -0
  278. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-deprecated.h +0 -0
  279. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-face-table-list.hh +0 -0
  280. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-face.cc +0 -0
  281. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-face.hh +0 -0
  282. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-font.cc +0 -0
  283. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-font.h +0 -0
  284. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-gasp-table.hh +0 -0
  285. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-glyf-table.hh +0 -0
  286. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-hdmx-table.hh +0 -0
  287. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-head-table.hh +0 -0
  288. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-hhea-table.hh +0 -0
  289. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-hmtx-table.hh +0 -0
  290. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-kern-table.hh +0 -0
  291. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-layout-base-table.hh +0 -0
  292. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-layout-gdef-table.hh +0 -0
  293. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-layout-gpos-table.hh +0 -0
  294. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-layout-gsub-table.hh +0 -0
  295. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-layout-jstf-table.hh +0 -0
  296. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-layout.h +0 -0
  297. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-map.cc +0 -0
  298. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-map.hh +0 -0
  299. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-math-table.hh +0 -0
  300. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-math.cc +0 -0
  301. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-math.h +0 -0
  302. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-maxp-table.hh +0 -0
  303. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-meta-table.hh +0 -0
  304. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-meta.cc +0 -0
  305. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-meta.h +0 -0
  306. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-metrics.cc +0 -0
  307. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-metrics.h +0 -0
  308. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-metrics.hh +0 -0
  309. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-name-language-static.hh +0 -0
  310. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-name-language.hh +0 -0
  311. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-name-table.hh +0 -0
  312. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-name.cc +0 -0
  313. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-name.h +0 -0
  314. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-os2-table.hh +0 -0
  315. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-os2-unicode-ranges.hh +0 -0
  316. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-post-macroman.hh +0 -0
  317. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-post-table-v2subset.hh +0 -0
  318. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-post-table.hh +0 -0
  319. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shape-fallback.cc +0 -0
  320. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shape-fallback.hh +0 -0
  321. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shape-normalize.cc +0 -0
  322. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shape-normalize.hh +0 -0
  323. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shape.h +0 -0
  324. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shape.hh +0 -0
  325. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-arabic-fallback.hh +0 -0
  326. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-arabic-pua.hh +0 -0
  327. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-arabic-win1256.hh +0 -0
  328. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-arabic.cc +0 -0
  329. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-arabic.hh +0 -0
  330. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-default.cc +0 -0
  331. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-hangul.cc +0 -0
  332. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-hebrew.cc +0 -0
  333. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-indic-machine.hh +0 -0
  334. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-indic.cc +0 -0
  335. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-indic.hh +0 -0
  336. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-khmer-machine.hh +0 -0
  337. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-khmer.cc +0 -0
  338. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-myanmar-machine.hh +0 -0
  339. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-myanmar.cc +0 -0
  340. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-syllabic.cc +0 -0
  341. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-syllabic.hh +0 -0
  342. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-use-machine.hh +0 -0
  343. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-use.cc +0 -0
  344. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-shaper-vowel-constraints.hh +0 -0
  345. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-stat-table.hh +0 -0
  346. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-tag.cc +0 -0
  347. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-var-avar-table.hh +0 -0
  348. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-var-fvar-table.hh +0 -0
  349. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-var-mvar-table.hh +0 -0
  350. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-var-varc-table.hh +0 -0
  351. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-var.cc +0 -0
  352. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-var.h +0 -0
  353. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot-vorg-table.hh +0 -0
  354. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ot.h +0 -0
  355. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-outline.cc +0 -0
  356. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-outline.hh +0 -0
  357. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-paint-bounded.cc +0 -0
  358. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-paint-bounded.hh +0 -0
  359. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-paint-extents.cc +0 -0
  360. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-paint-extents.hh +0 -0
  361. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-paint.cc +0 -0
  362. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-paint.h +0 -0
  363. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-paint.hh +0 -0
  364. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-sanitize.hh +0 -0
  365. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-set.cc +0 -0
  366. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-set.h +0 -0
  367. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-set.hh +0 -0
  368. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-shape-plan.cc +0 -0
  369. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-shape-plan.h +0 -0
  370. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-shape-plan.hh +0 -0
  371. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-shape.cc +0 -0
  372. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-shape.h +0 -0
  373. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-shaper-impl.hh +0 -0
  374. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-shaper-list.hh +0 -0
  375. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-shaper.cc +0 -0
  376. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-shaper.hh +0 -0
  377. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-static.cc +0 -0
  378. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-string-array.hh +0 -0
  379. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-style.cc +0 -0
  380. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-style.h +0 -0
  381. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-accelerator.hh +0 -0
  382. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-cff-common.cc +0 -0
  383. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-cff-common.hh +0 -0
  384. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-cff1.cc +0 -0
  385. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-cff2.cc +0 -0
  386. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-input.cc +0 -0
  387. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-input.hh +0 -0
  388. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-plan-var.cc +0 -0
  389. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-plan.hh +0 -0
  390. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-serialize.cc +0 -0
  391. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-serialize.h +0 -0
  392. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-table-cff.cc +0 -0
  393. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-table-color.cc +0 -0
  394. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-table-layout.cc +0 -0
  395. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-table-other.cc +0 -0
  396. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-table-var.cc +0 -0
  397. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset-table.hh +0 -0
  398. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset.cc +0 -0
  399. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-subset.hh +0 -0
  400. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-ucd.cc +0 -0
  401. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-unicode.cc +0 -0
  402. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-unicode.h +0 -0
  403. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-unicode.hh +0 -0
  404. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-uniscribe.cc +0 -0
  405. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-uniscribe.h +0 -0
  406. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-utf.hh +0 -0
  407. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-api-blob.hh +0 -0
  408. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-api-buffer.hh +0 -0
  409. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-api-common.hh +0 -0
  410. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-api-face.hh +0 -0
  411. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-api-font.hh +0 -0
  412. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-api-list.hh +0 -0
  413. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-api-shape.hh +0 -0
  414. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-api.cc +0 -0
  415. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-api.h +0 -0
  416. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-api.hh +0 -0
  417. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb-wasm-shape.cc +0 -0
  418. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/hb.h +0 -0
  419. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/main.cc +0 -0
  420. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-algs.cc +0 -0
  421. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-array.cc +0 -0
  422. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-bimap.cc +0 -0
  423. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-buffer-serialize.cc +0 -0
  424. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-cff.cc +0 -0
  425. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-decycler.cc +0 -0
  426. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-gpos-size-params.cc +0 -0
  427. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-gsub-get-alternates.cc +0 -0
  428. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-gsub-would-substitute.cc +0 -0
  429. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-item-varstore.cc +0 -0
  430. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-iter.cc +0 -0
  431. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-machinery.cc +0 -0
  432. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-map.cc +0 -0
  433. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-multimap.cc +0 -0
  434. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-number.cc +0 -0
  435. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-ot-glyphname.cc +0 -0
  436. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-ot-meta.cc +0 -0
  437. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-ot-name.cc +0 -0
  438. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-priority-queue.cc +0 -0
  439. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-serialize.cc +0 -0
  440. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-set.cc +0 -0
  441. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-unicode-ranges.cc +0 -0
  442. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-use-table.cc +0 -0
  443. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test-vector.cc +0 -0
  444. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/test.cc +0 -0
  445. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/wasm/graphite/shape.cc +0 -0
  446. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/wasm/sample/c/shape-fallback.cc +0 -0
  447. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/harfbuzz/src/wasm/sample/c/shape-ot.cc +0 -0
  448. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/pyproject.toml +0 -0
  449. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/requirements-dev.txt +0 -0
  450. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/setup.cfg +0 -0
  451. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/setup.py +0 -0
  452. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/src/uharfbuzz/__init__.py +0 -0
  453. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/src/uharfbuzz/_draw_test_funcs.cc +0 -0
  454. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/src/uharfbuzz/_harfbuzz.pyx +0 -0
  455. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/src/uharfbuzz/_harfbuzz_test.pyx +0 -0
  456. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/src/uharfbuzz/charfbuzz.pxd +0 -0
  457. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/src/uharfbuzz.egg-info/dependency_links.txt +0 -0
  458. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/src/uharfbuzz.egg-info/not-zip-safe +0 -0
  459. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/src/uharfbuzz.egg-info/top_level.txt +0 -0
  460. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/AUTHORS_StixTwoMath.txt +0 -0
  461. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/AdobeBlank.fea +0 -0
  462. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/AdobeBlank.subset.ttf +0 -0
  463. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/LICENSE_AdobeBlank.txt +0 -0
  464. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/LICENSE_ChromaCheck_colr.txt +0 -0
  465. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/LICENSE_MutatorSans.txt +0 -0
  466. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/LICENSE_OpenSans.txt +0 -0
  467. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/LICENSE_STIXTwoMath.txt +0 -0
  468. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/MutatorSans-VF.subset.ttf +0 -0
  469. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/OpenSans.subset.ttf +0 -0
  470. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/STIXTwoMath-Regular.ttf +0 -0
  471. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/SparseFont.ttf +0 -0
  472. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/chromacheck-colr.ttf +0 -0
  473. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/expected/hand-10 +0 -0
  474. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/expected/test-10 +0 -0
  475. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/expected/test-106 +0 -0
  476. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/expected/test-116 +0 -0
  477. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/expected/test-123 +0 -0
  478. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/expected/test-154 +0 -0
  479. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/expected/test-165 +0 -0
  480. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/expected/test-175 +0 -0
  481. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/expected/test-6 +0 -0
  482. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/expected/test-92 +0 -0
  483. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/noto_handwriting-cff2_colr_1.otf +0 -0
  484. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tests/data/test_glyphs-glyf_colr_1.ttf +0 -0
  485. {uharfbuzz-0.51.4 → uharfbuzz-0.51.6}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: uharfbuzz
3
- Version: 0.51.4
3
+ Version: 0.51.6
4
4
  Summary: Streamlined Cython bindings for the harfbuzz shaping engine
5
5
  Home-page: https://github.com/trufont/uharfbuzz
6
6
  Author: Adrien Tétar
@@ -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.resize (map_count, false))) return false;
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
- assert (j < i);
114
- if (HB_DIRECTION_IS_FORWARD (direction))
115
- for (unsigned int k = j; k < i; k++) {
116
- pos[i].x_offset -= pos[k].x_advance;
117
- pos[i].y_offset -= pos[k].y_advance;
118
- }
119
- else
120
- for (unsigned int k = j + 1; k < i + 1; k++) {
121
- pos[i].x_offset += pos[k].x_advance;
122
- pos[i].y_offset += pos[k].y_advance;
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
- unsigned int get_len () const { return hb_popcount ((unsigned int) *this); }
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.resize (points.length + num_points, false))) return false;
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
- vertices_scratch_.alloc (objects.length);
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 (int i = vertices_.length - 1; i >= 0; i--)
524
+ for (unsigned id : ordering_)
512
525
  {
513
- const auto& v = vertices_[i];
514
- printf("%d: %u [", i, (unsigned int)v.table_size());
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
- // Object graphs are in reverse order, the first object is at the end
547
- // of the vector. Since the graph is topologically sorted it's safe to
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 vertices_.length - 1;
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<vertex_t> &sorted_graph = vertices_scratch_;
608
- if (unlikely (!check_success (sorted_graph.resize (vertices_.length)))) return;
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
- sorted_graph[new_id] = std::move (vertices_[next_id]);
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
- id_map[next_id] = new_id--;
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
- if (!(vertices_[link.objidx].incoming_edges () - removed_edges[link.objidx]))
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 (vertices_[link.objidx].modified_distance (order++),
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 (!sorted_graph.in_error ());
659
+ check_success (!new_ordering.in_error ());
650
660
 
651
- check_success (remap_all_obj_indices (id_map, &sorted_graph));
652
- vertices_ = std::move (sorted_graph);
661
+ hb_swap (ordering_, new_ordering);
653
662
 
654
- if (!check_success (new_id == -1))
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
- int root_index = (int) root_idx ();
666
- for (int i = root_index; i >= 0; i--)
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
- if (vertices_.in_error ()) {
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
- size_t size = vertices_.arrayZ[i].obj.tail - vertices_.arrayZ[i].obj.head;
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 (int i = root_idx (); i >= 0; i--)
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_.tail ().distance = 0;
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, vertices_.length - 1);
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 = vertices_[next_idx].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
- const auto& child = vertices_.arrayZ[link.objidx].obj;
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)) * (vertices_.arrayZ[link.objidx].space + 1);
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 < vertices_.arrayZ[link.objidx].distance)
1553
+ if (child_distance < child_v.distance)
1566
1554
  {
1567
- vertices_.arrayZ[link.objidx].distance = child_distance;
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
- unsigned num_real = vertices_[i].obj.real_links.length;
1598
+ auto& obj = vertices_[i].obj;
1599
+ unsigned num_real = obj.real_links.length;
1611
1600
  unsigned count = 0;
1612
- for (auto& link : vertices_[i].obj.all_links_writer ())
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
- hb_vector_t<vertex_t> vertices_scratch_;
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 (int parent_idx = vertices.length - 1; parent_idx >= 0; parent_idx--)
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
- // serializer has an extra nil object at the start of the
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
- for (unsigned i = 0; i < vertices.length; i++) {
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
- size_t size = vertices[i].obj.tail - vertices[i].obj.head;
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, vertices[i].obj.head, size);
265
+ hb_memcpy (start, v.obj.head, size);
255
266
 
256
267
  // Only real links needs to be serialized.
257
- for (const auto& link : vertices[i].obj.real_links)
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->buffer->reverse ();
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->buffer->reverse ();
1235
+ if (c->buffer_is_reversed)
1236
+ c->reverse_buffer ();
1241
1237
  }
1242
1238
 
1243
1239
  unsigned int get_size () const { return length; }