8157f39c62
This commit migrates the font tests away from the bots. Not only are the font tests broken on the Windows bot since some time, they also run on Python 2 (end of life since January 2020) and `ttx` 3.19.0 (released in November 2017). The latter is installed via a submodule, which requires more complicated logic for finding and running `ttx`. We solve the issues by implementing a modern workflow that installs the most recent stable Python and `ttx` (`fonttools` package) versions. This simplifies the `ttx` driver code as well because it can now assume `ttx` is available on the path (just like we do for e.g. `node` invocations). GitHub Actions takes care of creating a virtual environment with `fonttools` in it so that the `ttx` entrypoint is available. Locally the font tests can be run in a similar way by creating and sourcing a virtual environment with `fonttools` in it before running the font tests, and a README file is included with instructions for doing so.
37 lines
1.5 KiB
Markdown
37 lines
1.5 KiB
Markdown
# Font tests
|
|
|
|
The font tests check if PDF.js can read font data correctly. For validation
|
|
the `ttx` tool (from the Python `fonttools` library) is used that can convert
|
|
font data to an XML format that we can easily use for assertions in the tests.
|
|
In the font tests we let PDF.js read font data and pass the PDF.js-interpreted
|
|
font data through `ttx` to check its correctness. The font tests are successful
|
|
if PDF.js can successfully read the font data and `ttx` can successfully read
|
|
the PDF.js-interpreted font data back, proving that PDF.js does not apply any
|
|
transformations that break the font data.
|
|
|
|
## Running the font tests
|
|
|
|
The font tests are run on GitHub Actions using the workflow defined in
|
|
`.github/workflows/font_tests.yml`, but it is also possible to run the font
|
|
tests locally. The current stable versions of the following dependencies are
|
|
required to be installed on the system:
|
|
|
|
- Python 3
|
|
- `fonttools` (see https://pypi.org/project/fonttools and https://github.com/fonttools/fonttools)
|
|
|
|
The recommended way of installing `fonttools` is using `pip` in a virtual
|
|
environment because it avoids having to do a system-wide installation and
|
|
therefore improves isolation, but any other way of installing `fonttools`
|
|
that makes `ttx` available in the `PATH` environment variable also works.
|
|
|
|
Using the virtual environment approach the font tests can be run locally by
|
|
creating and sourcing a virtual environment with `fonttools` installed in
|
|
it before running the font tests:
|
|
|
|
```
|
|
python3 -m venv venv
|
|
source venv/bin/activate
|
|
pip install fonttools
|
|
gulp fonttest
|
|
```
|