harfbuzz/test/shaping
Behdad Esfahbod 30e6e29f0f [indic/use] Move Javanese from Indic shaper to USE
Fixes https://github.com/behdad/harfbuzz/issues/243

With javatext.ttf, the reodering medial Ra gets its advance width
zero'ed in Uniscribe implementation, and the font adds the advance
back.  Our Indic shaper does not do that, but USE does.  So, route
Javanese through USE.  That's what Microsoft does anyway.  Test:

  U+A9A5,U+A9BA

This also seems to fix the following sequence, and variations thereof:

  U+A99F,U+A9C0,U+A9A2,U+A9BF
2016-05-06 15:52:27 +01:00
..
fonts/sha1sum [hb-ot-font] Make 'glyf' table loading lazy 2016-05-02 10:24:00 +02:00
tests [tests] Fix test 2016-05-02 10:28:24 +02:00
texts/in-tree [indic/use] Move Javanese from Indic shaper to USE 2016-05-06 15:52:27 +01:00
Makefile.am [tests] Fix test 2016-05-02 10:28:24 +02:00
README.md Add note re only adding tests with Free Software fonts 2016-02-23 15:19:27 +09:00
hb-diff [test] Use /usr/bin/env python instead of /usr/bin/python 2015-04-06 14:51:31 -07:00
hb-diff-colorize [test] Use /usr/bin/env python instead of /usr/bin/python 2015-04-06 14:51:31 -07:00
hb-diff-filter-failures [test] Use /usr/bin/env python instead of /usr/bin/python 2015-04-06 14:51:31 -07:00
hb-diff-ngrams [test] Use /usr/bin/env python instead of /usr/bin/python 2015-04-06 14:51:31 -07:00
hb-diff-stat [test] Use /usr/bin/env python instead of /usr/bin/python 2015-04-06 14:51:31 -07:00
hb-manifest-read [test] Use /usr/bin/env python instead of /usr/bin/python 2015-04-06 14:51:31 -07:00
hb-manifest-update [test] Use /usr/bin/env python instead of /usr/bin/python 2015-04-06 14:51:31 -07:00
hb-unicode-decode [test] Use /usr/bin/env python instead of /usr/bin/python 2015-04-06 14:51:31 -07:00
hb-unicode-encode [test] Use /usr/bin/env python instead of /usr/bin/python 2015-04-06 14:51:31 -07:00
hb-unicode-prettyname [test] Use /usr/bin/env python instead of /usr/bin/python 2015-04-06 14:51:31 -07:00
hb_test_tools.py Minor 2016-02-10 14:11:43 +07:00
record-test.sh [test] Drop hintings when subsetting fonts to record 2015-11-04 17:37:30 -08:00
run-tests.sh [tests] Fix for multiple options in test runner scripts 2016-02-24 16:06:23 +09:00

README.md

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-it.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 fonts/sha1sum and name it after its hash, and prints out the test case input, which you can then redirect to an existing or new test file in tests, eg.:
$ ./hb-unicode-encode 41 42 43 627 | ./record-it.sh ../../util/hb-shape font.ttf >> tests/test-name.test

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

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