Diffenator3
This is a Rust port of diffenator2, a utility for comparing two font files. It comes in two flavours, command line and WASM.
The command line version compares two fonts and describes the differences
between them; it produces reports in text, JSON and HTML format. By default,
it compares variable fonts at their named instances, although you can also
ask for comparisons at specific points in the design space, at the
min/max/default for each axis or subdivisions in between, or at master
locations. See the --help documentation of diffenator3 for more details.
You can customize the look and feel of the HTML report by editing the templates
in the ~/.diffenator3/templates directory after running diffenator3 --html
for the first time. Additionally, you can supply a --templates directory for
per-project templates.
The WASM version compares two font files over the web and displays a HTML
report of the differences. This runs the diffenator3 code directly inside
your web browser - the fonts are not transferred across the Internet.
You can use the WASM version at
https://googlefonts.github.io/diffenator3
diff3proof
As well as diffenator3, there is another utility called diff3proof used
to generate HTML proof files showing the difference between the fonts. This
can be used in two modes: --sample-mode context (the default), which
shows paragraphs of sample text for each language supported by the font, and
--sample-mode cover, which shows a minimal text to cover all the shared
codepoints in the font. These can be helpful for manually checking rendering
differences in different browsers.
Additional utilities
If you build diffenator3 from source, there are three additional workspace
crates which build some utilities which are mainly helpful for working on
diffenator3 itself:
ttjserializes a TTF file to JSON in much the same way thatttxserializes to XML. However, there is no deserialization back to TTF at present.kerndifferis a limited version ofdiffenator3just for checking kerning differences. You can achieve much the same functionality withdiffenator3 --no-tables --no-words --no-glyphs.rendertestis used to test the rendering and bitmap comparison functionality ofdiffenator3. It generates bitmap images of words in both fonts and then overlays them.
Installing
Binary versions can be obtained from the latest GitHub release; development
versions can be obtained via the latest GitHub Action. The diffenator3 and
diff3proof binaries are all you need - they contain all the templates and
wordlists within them - so you can copy them to anywhere in your path.
Alternatively you can install from source with
cargo install --git https://github.com/googlefonts/diffenator3.
License
This software is licensed under the Apache 2.0 License.
Release files for diffenator3 1.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| diffenator3-1.1.4.tar.gz | 104.0 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| diffenator3-1.1.4-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| diffenator3-1.1.4-py3-none-win32.whl | Python 3 | none | Windows x86-32 | Details |
| diffenator3-1.1.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl | Python 3 | none | Linux musl 1.1+ ARM64, Linux glibc 2.17+ ARM64 | Details |
| diffenator3-1.1.4-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl | Python 3 | none | Linux glibc 2.12+ x86-64, Linux musl 1.1+ x86-64 | Details |
| diffenator3-1.1.4-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl | Python 3 | none | macOS 10.12+ x86-64, macOS 11.0+ ARM64, macOS 10.12+ universal2 (ARM64, x86-64) | Details |
Total release size: 95.1 MB
Release files / diffenator3-1.1.4.tar.gz
| Download URL | diffenator3-1.1.4.tar.gz |
|---|---|
| Size | 104.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
099c6fa785c97ca355f4cac9da2c51be3ceb4bf381382afaf32539e4f78eab5f
|
|
BLAKE2b-256 checksum How to use checksums |
036cab88e585a02e3d6c9d4234cab2abe1c0de4137d2f6cefe34129a26cb8a34
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 9, 2026.
Transparency logRelease files / diffenator3-1.1.4-py3-none-win_amd64.whl
| Download URL | diffenator3-1.1.4-py3-none-win_amd64.whl |
|---|---|
| Size | 15.3 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
f8c3facc2bbe5a40d6a0980aef459e0e0a1575ffcdc465e1c25af19d4b9ccae5
|
|
BLAKE2b-256 checksum How to use checksums |
36a08a001d67956ce754a0aeb856e62f9cdca23088c3941152ec39fa29ab7edb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 9, 2026.
Transparency logRelease files / diffenator3-1.1.4-py3-none-win32.whl
| Download URL | diffenator3-1.1.4-py3-none-win32.whl |
|---|---|
| Size | 15.1 MB |
| Tags | Python 3 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
c0b9d62a20478173e0037a6e084b3d4ad5bad0039e8b3f96fa161e0b5881a575
|
|
BLAKE2b-256 checksum How to use checksums |
292ffab6114ea15c8bef5a005edda1252d320fabab5c3aea3656d1042471616e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 9, 2026.
Transparency logRelease files / diffenator3-1.1.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
| Download URL | diffenator3-1.1.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl |
|---|---|
| Size | 16.5 MB |
| Tags | Linux glibc 2.17+ ARM64 Linux musl 1.1+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
e53495ae6d45c8baf467380d082b4edf7b2f3a12b222cfab7851684552d67dc9
|
|
BLAKE2b-256 checksum How to use checksums |
1d1340edd97c567791840b936e102daa338ee24868c34b100fc8430e1832953e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 9, 2026.
Transparency logRelease files / diffenator3-1.1.4-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl
| Download URL | diffenator3-1.1.4-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl |
|---|---|
| Size | 16.4 MB |
| Tags | Linux glibc 2.12+ x86-64 Linux musl 1.1+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
b50a2d6421233f19ff639637acc044fad34a0a6c1753ecfb5df8147d1cbaf732
|
|
BLAKE2b-256 checksum How to use checksums |
b7bdfeb977ca40686294e7673a359d3acaeeba628acd9c05332b2d7c305c56e1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 9, 2026.
Transparency logRelease files / diffenator3-1.1.4-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | diffenator3-1.1.4-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 31.8 MB |
| Tags | Python 3 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
0d3987de550d4fe4d0537920cf1bb40b3f700759880af8b5b7cc1576be8c23bf
|
|
BLAKE2b-256 checksum How to use checksums |
87e062cb6a7e20fc5e3da5ec4e117c54a041b12b6e76005dd71d9cab3444e3d5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 9, 2026.
Transparency log