pdf.js/test/font/README.md
Tim van der Meij 8157f39c62
Introduce a GitHub Actions workflow for running the font tests
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.
2023-11-12 17:48:04 +01:00

1.5 KiB

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:

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