[cff2] Change extents/shape stack to be just a number

Do the blending immediately.

Fixes https://github.com/harfbuzz/harfbuzz/issues/3559

Benchmark on AdobeVFPrototype shows 35% speedup. Now we're faster
than FreeType:

Benchmark                                                           Time             CPU      Time Old      Time New       CPU Old       CPU New
------------------------------------------------------------------------------------------------------------------------------------------------
BM_Font/glyph_extents/AdobeVFPrototype.otf/hb                    -0.3792         -0.3792          1584           983          1581           982
BM_Font/glyph_extents/AdobeVFPrototype.otf/ft                    +0.0228         +0.0224          1220          1248          1218          1245
BM_Font/glyph_extents/AdobeVFPrototype.otf/var/hb                -0.3513         -0.3518          1616          1048          1613          1046
BM_Font/glyph_extents/AdobeVFPrototype.otf/var/ft                +0.0172         +0.0169          1232          1254          1230          1251
4 files changed
tree: e0c52f50f8ce7dba888261188b25a54c0d5edb5b
  1. .ci/
  2. .circleci/
  3. .github/
  4. docs/
  5. m4/
  6. perf/
  7. src/
  8. subprojects/
  9. test/
  10. util/
  11. .clang-format
  12. .codecov.yml
  13. .editorconfig
  14. AUTHORS
  15. autogen.sh
  16. BUILD.md
  17. CMakeLists.txt
  18. CONFIG.md
  19. configure.ac
  20. COPYING
  21. git.mk
  22. harfbuzz.doap
  23. Makefile.am
  24. meson.build
  25. meson_options.txt
  26. mingw-configure.sh
  27. NEWS
  28. README
  29. README.md
  30. README.mingw.md
  31. README.python.md
  32. RELEASING.md
  33. replace-enum-strings.cmake
  34. TESTING.md
  35. THANKS
README.md

Linux CI Status CircleCI Build Status OSS-Fuzz Status Coverity Scan Build Status Codacy Badge Codecov Code Coverage Packaging status

This is HarfBuzz, a text shaping library.

For bug reports, mailing list, and other information please visit:

http://harfbuzz.org/

For license information, see COPYING.

For build information, see BUILD.md.

For custom configurations, see CONFIG.md.

For test execution, see TESTING.md.

Documentation: https://harfbuzz.github.io

Packaging status