Skip to main content

Fontforge_plugin to fix issues to generated OT font

Project description

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)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fontforge_ot_fixup-0.3.0.tar.gz (7.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fontforge_ot_fixup-0.3.0-py3-none-any.whl (8.4 kB view details)

Uploaded Python 3

File details

Details for the file fontforge_ot_fixup-0.3.0.tar.gz.

File metadata

  • Download URL: fontforge_ot_fixup-0.3.0.tar.gz
  • Upload date:
  • Size: 7.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for fontforge_ot_fixup-0.3.0.tar.gz
Algorithm Hash digest
SHA256 001c6122fcdb207ae82d3ebf201044487b5a28eeba9844f4c61ca04321c65527
MD5 2d5fdc4720af203199b9a081e53d0c93
BLAKE2b-256 1e18ae1b799612d9f2782c33ead92c302c9e94ff8eff6156884bfafd7ce76f0e

See more details on using hashes here.

Provenance

The following attestation bundles were made for fontforge_ot_fixup-0.3.0.tar.gz:

Publisher: python-publish.yml on MihailJP/fontforge-ot-fixup

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fontforge_ot_fixup-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for fontforge_ot_fixup-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 139b5b09c5f71b1b416647eebd21873575700bc7b1d8b0082c859f8cea20fa14
MD5 ca45aeaa537795c8a965030cb80e21a0
BLAKE2b-256 7f51bd0a60c6057e59831baf07e9707a4b1f01fa10d27df9853803cb851e474a

See more details on using hashes here.

Provenance

The following attestation bundles were made for fontforge_ot_fixup-0.3.0-py3-none-any.whl:

Publisher: python-publish.yml on MihailJP/fontforge-ot-fixup

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page