| Adding tests | |
| ============ | |
| You can test shaping of a unicode sequence against a font like this: | |
| ```sh | |
| $ ./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: | |
| ```sh | |
| $ ./hb-unicode-encode 41 42 43 627 | ./record-test.sh ../../util/hb-subset ../../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.: | |
| ```sh | |
| $ ./hb-unicode-encode 41 42 43 627 | ./record-test.sh -o data/in-house/tests/test-name.tests ../../util/hb-subset ../../util/hb-shape font.ttf | |
| ``` | |
| If you created a new test file, add it to `data/in-house/meson.build` | |
| 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. |