harfbuzz/test/shaping
jfkthame 100d40c827
[aat] Fix implementation of AAT kerning for Geeza Pro. (#2388)
* [aat] Fix implementation of AAT kerning for Geeza Pro.

Despite what the comment in the code used to say, it appears that Geeza Pro
does rely on accumulating kerning values from successive subtables. With
this change, the results now match Core Text rendering (and avoid the clear
visual breakage reported in #2358).

Testcase: U+0644,U+064E,U+0645,U+064E,U+0651,U+0627

Fixes #2358.

* [aat] Update test expectations, add new testcase.
2020-05-05 17:48:24 -07:00
..
data [aat] Fix implementation of AAT kerning for Geeza Pro. (#2388) 2020-05-05 17:48:24 -07:00
texts/in-house Typo 2018-10-03 15:31:33 +02:00
hb_test_tools.py [tools] Remove py2 remains 2020-03-18 23:41:20 +03:30
hb-diff [tools] More on py3 compatibility 2020-02-24 00:10:11 +03:30
hb-diff-colorize Remove python2 support from tests/utils scripts 2020-02-19 16:17:45 +03:30
hb-diff-filter-failures Remove python2 support from tests/utils scripts 2020-02-19 16:17:45 +03:30
hb-diff-stat Remove python2 support from tests/utils scripts 2020-02-19 16:17:45 +03:30
hb-unicode-decode Remove python2 support from tests/utils scripts 2020-02-19 16:17:45 +03:30
hb-unicode-encode Remove python2 support from tests/utils scripts 2020-02-19 16:17:45 +03:30
hb-unicode-prettyname Remove python2 support from tests/utils scripts 2020-02-19 16:17:45 +03:30
Makefile.am Remove cmake testing and add meson build bot 2020-03-11 20:15:10 +03:30
meson.build [meson] Minor, replace tabs with spaces 2020-03-24 19:06:09 +00:00
README.md [use] Prohibit visually ambiguous vowel sequences 2018-10-23 02:25:08 -07:00
record-test.sh Remove python2 support from tests/utils scripts 2020-02-19 16:17:45 +03:30
run-tests.py [test] fix misspell 2020-03-14 20:09:00 +03:30

Adding tests

You can test shaping of a unicode sequence against a font like this:

$ ./hb-unicode-encode 41 42 43 627 | ../../util/hb-shape font.ttf

assuming an in-tree build. The 41 42 43 627 here is a sequence of Unicode codepoints: U+0041,0042,0043,0627. When you are happy with the shape results, you can use the record-test.sh script to add this to the test suite. record-test.sh requires pyftsubset to be installed. You can get pyftsubset by installing FontTools from https://github.com/behdad/fonttools.

To use record-test.sh, just put it right before the hb-shape invocation:

$ ./hb-unicode-encode 41 42 43 627 | ./record-test.sh ../../util/hb-shape font.ttf

what this does is:

  • Subset the font for the sequence of Unicode characters requested,
  • Compare the hb-shape output of the original font versus the subset font for the input sequence,
  • If the outputs differ, perhaps it is because the font does not have glyph names; it then compares the output of hb-view for both fonts.
  • If the outputs differ, recording fails. Otherwise, it will move the subset font file into data/in-house/fonts and name it after its hash, and print out the test case input, which you can then redirect to an existing or new test file in data/in-house/tests using -o, e.g.:
$ ./hb-unicode-encode 41 42 43 627 | ./record-test.sh -o data/in-house/tests/test-name.test ../../util/hb-shape font.ttf

If you created a new test file, add it to data/in-house/Makefile.sources so it is run. Check that make check does indeed run it, and that the test passes. When everything looks good, git add the new font as well as the new test file if you created any. You can see what new files are there by running git status data/in-house. And commit!

Note! Please only add tests using Open Source fonts, preferably under OFL or similar license.