Fontforge OT Fixup
Fontforge_plugin to fix issues to generated OT font
Install
pip3 install fontforge_ot_fixup
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... > OT fixup utility and click Configure to open.
Configuration will be stored in
~/.config/fontforge/plugin/OT fixup utility.toml
(for Linux.)
Fix post.isFixedPitch
Table: [hooks.post.isFixedPitch]
Keys: ttf and ufo
Type: bool
Enable or disable the font generation hook (see below.) Can be configured for each format, TTF (including OTF) and UFO.
Fix 'aalt' feature
Table: [hooks.GSUB.aalt]
Keys: ufo
Type: bool
Enable or disable the font generation hook (see below.) Only applicable for UFO.
Usage
In Fontforge GUI
This plugin adds following items into "Tools" menu:
- Activate smart dropout
Activate smart dropout
This appends the following bytecode into prep table:
B8h PUSHW
01FFh 511
85h SCANCTRL
B0h PUSHB
04h 4
8Dh SCANTYPE
If already appended the menu will be disabled.
Hooks
This plugin installs new/load font hook that installs font generation hook. The latter automatically fixes certain issues in exported font.
Fix post.isFixedPitch
Fontforge may export with post.isFixedPitch = 0 even for monospace fonts.
This is because Fontforge requires all glyph including combining marks
have the same advance width in order to export with post.isFixedPitch = 1.
This is usually inappropriate.
This hook fixes the flag after normal export referring only U+0020 to U+007E.
Works when exporting TTF, OTF, or UFO.
Fix aalt feature
Fontforge can export UFO but lacks special handling for aalt feature.
This may result an invalid feature file (*.ufo/feature.fea); it is that
aalt cannot contain script or language instructions.
This hook fixes aalt feature, or adds it if it does not exist. Existing
lookups in aalt features will be included as aalt-only ones.
Works only when exporting UFO.
In Python script
import fontforge
import fontforge_otfixup
font = fontforge.open('path/to/font.sfd')
sdActive = fontforge_otfixup.isSmartDropoutActive(font)
fontforge_otfixup.activateSmartDropout(font)
Metadata
Release files for fontforge-ot-fixup 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fontforge_ot_fixup-0.4.0.tar.gz | 7.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fontforge_ot_fixup-0.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 15.8 kB
Release files / fontforge_ot_fixup-0.4.0.tar.gz
| Download URL | fontforge_ot_fixup-0.4.0.tar.gz |
|---|---|
| Size | 7.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
66d5afa3f51b542b5eb926813ebdb32c21aeb113c3a94df375fd1e4df9228b5c
|
|
BLAKE2b-256 checksum How to use checksums |
d211f6d8cad6ab05b9bf0d11534e9bc6ba8713c7d948ae7fc988fe561d8e92d4
|
| 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 26, 2026.
Transparency logRelease files / fontforge_ot_fixup-0.4.0-py3-none-any.whl
| Download URL | fontforge_ot_fixup-0.4.0-py3-none-any.whl |
|---|---|
| Size | 8.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c930078618f06a81364bacd5743cd701301822d624ca6d1b7d3bf941ec284c30
|
|
BLAKE2b-256 checksum How to use checksums |
03a9f69446f9471d711af8185df595572fcdcd6debda4bb13c3b062546ed6894
|
| 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 26, 2026.
Transparency log