Skip to main content

Fontforge font checker plugin

Font checker wrapper for Fontforge

This plugin adds frontend of Fontbakery or Fontspector to Fontforge. Although Fontforge itself has built-in validation feature, these external tools provides more useful checks.

Python 3.9 or later required.

Install

pip3 install fontforge_fontchecker

Make sure Fontforge Python module is usable

In interactive mode of Python, run:

import fontforge

If it raises ModuleNotFoundError exception, install Fontforge first. If installed, make sure the build option set that the Python module gets also installed. If already so, Python interpreter does not recognize the module path where the required module.

export PYTHONPATH=/path/to/fontforge/python/module:$PYTHONPATH

Configuration

This plugin has configuration menu. Select File > Configure Plugins... > Font checker and click Configure to open.

Configuration will be stored in ~/.config/fontforge/plugin/Font checker/config.toml (for Linux.)

Frontend configuration

Backend

Choose from auto (default), Fontbakery, or Fontspector. If auto, Fontspector will be preferred.

Either or both must be installed to your system; make sure you add the backend executables to PATH. It is not this plugin itself which checks fonts.

Check as

Unfortunately the external check tools cannot check SFDs (Fontforge's native file type) directly. Fonts must be exported so that the tools can check.

Choose from TTF (default) or UFO. Between these two, usually TTF is encouraged. Fontbakery's check against UFOs is quite incomplete.

Result for glyphs

This plugin can highlight glyphs with issues in the font view.

Enable or disable for 'color' or 'comment.'

Color for FAIL and WARN

If 'color' option is enabled, set what color shall be used for respective results. Hexadecimal color code such as #ffff00 or just ffff00. Defaults to #ff0000 (red) for FAIL and #ffff00 (lemon) for WARN.

Optionally, color names such as 'crimson' (= #dc143c) or 'goldenrod' (= #daa520) are accepted if webcolors module is available. Color names are case-insensitive.

Common backend configuration

Profile

Profiles are what specifies which set of checks will be executed. Choose from the list. If you want to use custom profile, edit the configuration file.

Default profile is 'Universal' which checks what considered as community best practice.

These 5 profiles are available for both Fontbakery and Fontspector (for the latter as built-in profiles):

  • OpenType (standards compliance only)
  • Univarsal
  • Google Fonts
  • ISO 15008 (in-car accessibility)
  • Fontwerk

Explicit checks

Comma-separated list of check IDs (or part of them) which are to be explicitly executed. If specified, only those checks are executed.

Excluded checks

Comma-separated list of check IDs (or part of them) which are not to be executed. If specified, those checks are skipped.

Vendor ID

Vendor ID check is activated if specified here. Or else it is skipped.

Ideal and acceptable maximum file sizes

The 'file_size' check has options on maximum file size. If ideal maximum file size is exceeded, the test results WARN. If acceptable maximum is exceeded, the test FAILs. Leave them blank for default value (1 MiB and 9 MiB respectively.)

You may add a unit like k, KB, or KiB (case-insensitive.) If no unit is included, it is in bytes. Note that 1 MB = 1,000,000 bytes and 1 MiB = 1,048,576 bytes.

Overrides

Colon-separated list of quadruples:

  • Check ID (Fontbakery only, e.g. mandatory_glyphs, transformed_components)
  • Message code (e.g. empty, transformed-components)
  • Status (case-insensitive, e.g. FAIL, WARN)
  • Reason (any text)

Both between elements and between quadruples separate with colon.

Network check timeout

Fontspector and Fontbakery does some checks which requires network connection. For example, 'fontdata_namecheck' connects to external service. Input positive value to set explicit timeout, or zero to unset.

Skip network check

If this option is set, instructs the backend to skip network-dependent checks.

Fontbakery specific configuration

Custom order

Comma-separated list of custom check order.

Fontspector specific configuration

Plugins

Comma-separated list of Fontspector plugins.

You need to compile Fontspector by yourself to enable plugins.

Explicit and excluded files

Colon-separated list of check IDs and file names specified alternately. Specified checks shall be done only for or excluding specified files.

No wildcards.

Maximum file size of minor issue

If this maximum is exceeded, the test results FATAL. Defaults to 10 MiB for Google Fonts profile, or unset for Universal one.

Usage

This plugin adds following items into "Tools" menu:

  • Check font
    • Check current font
    • Check font family

Check font

For TTF or UFO, check will be done against the file existing on disk. If such file has unsaved changes, asks which you intend: checking the files on disk or checking exported font including changes. For other files, the font will be exported into a temporary directory to check.

"Check current font" checks for a single font file.

"Check font family" checks font family to which current font belongs. Only opened files. Closed fonts are excluded. Fonts with family name different from that of current one are ignored.

If checks are done against TTF files directly (rather than through temporary files,) every font files (including closed ones) in the directory are checked as entire family.

Project-specific configuration file

If there is 'fontbakery.toml' or 'fontspector.toml' (for respective font check tools) in the same directory as the font file or the Git repository root directory in which the font, you will be asked if you intend to use that configuration file.

Highlight and add comment to glyphs with problems

When enabled by the configuration, glyphs with problems are highlighted with red or yellow, and the result on those glyphs are added as comment. Regardless of config, problematic glyphs will be selected.

Not all checks are supported.

View report

Once the check is finished, result summary is reported in warning log window, and you are asked if you would like to view details. It will open the browser to show the detail report.

Symbol Level Explanation (from Fontbakery help text)
💥 ERROR Something wrong with the font checker itself, possibly a bug.
☠ FATAL An extremely severe issue that must be addressed immediately.
🔥 FAIL A problem with the font that must be fixed.
⚠️ WARN Something that you should consider addressing.
ℹ️ INFO Something useful, typically stats.
⏩ SKIP The check does not apply to the given font.
✅ PASS The font looks good for the given checking routine.

These explanation texts are from Fontbakery; also apply to Fontspector. Symbols are the same as in HTML output.

Certain environments show the symbols as emojis.

Metadata

Release files for fontforge-fontchecker 0.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fontforge-fontchecker 0.6.0
File Size Uploaded
fontforge_fontchecker-0.6.0.tar.gz 18.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fontforge-fontchecker 0.6.0
File Interpreter ABI Platform
fontforge_fontchecker-0.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 33.7 kB

Release files / fontforge_fontchecker-0.6.0.tar.gz

Download URL fontforge_fontchecker-0.6.0.tar.gz
Size 18.7 kB
Tags Source
SHA-256 checksum
How to use checksums
45a287317f3e8d779c241099c15e112dc0155c6570d9e5afad505e6a6bf60087
BLAKE2b-256 checksum
How to use checksums
f72f2022829da6c1fb5cf45cef53f57df73b7515018081e9082b371a278d9589
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 27, 2026.

Transparency log

Release files / fontforge_fontchecker-0.6.0-py3-none-any.whl

Download URL fontforge_fontchecker-0.6.0-py3-none-any.whl
Size 15.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c29edbbbaabd9132ed7905e5812911d435ee00bcbfcab105cafd1f67633e70f0
BLAKE2b-256 checksum
How to use checksums
a17b30698bfa01b7554225ee7f780df1488d14a2a162cbeec3805656e7a627d6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 27, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.6.0 This release

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page