Skip to main content

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)

Source distribution for fontforge-ot-fixup 0.4.0
File Size Uploaded
fontforge_ot_fixup-0.4.0.tar.gz 7.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fontforge-ot-fixup 0.4.0
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.4.0 This release

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