How to Install FontForge Plugins and Scripts
FontForge extends its core font-editing functionality primarily through Python scripts and native dynamic libraries rather than a traditional add-on marketplace. This guide details how to locate your FontForge configuration directories, install custom Python extensions to add new menu tools, and configure native plugins across Windows, macOS, and Linux.
Understanding FontForge Extensions
FontForge utilizes Python as its primary scripting and extension
engine. Custom extensions are typically written as .py
files that register new menu items in the graphical user interface (GUI)
or automate font processing tasks. FontForge executes these scripts
automatically at launch if they are placed in the correct system
directory.
Step 1: Locate the FontForge User Directory
To install a custom script so that it runs every time FontForge
opens, place the script inside your personal FontForge configuration
directory. Create the python folder if it does not already
exist.
Linux:
~/.config/fontforge/python/
(Older installations may use~/.FontForge/python/)macOS:
~/Library/Application Support/FontForge/python/
(Or~/.config/fontforge/python/depending on how FontForge was installed, such as via Homebrew)Windows:
C:\Users\<YourUsername>\AppData\Roaming\FontForge\python\
Step 2: Add Your Custom Python Extension
- Download or write your custom Python script (e.g.,
my_custom_tool.py). - Move the
.pyfile into thepythonfolder identified in Step 1. - Ensure the script registers itself to the FontForge UI using the built-in module. A standard extension script includes a hook similar to:
import fontforge
def my_tool_function(data, font):
# Your custom font manipulation logic here
font.generate("output.otf")
# Register the script in the FontForge "Tools" menu
fontforge.registerMenuItem(my_tool_function, None, None, "Font", None, "My Custom Tool")Any valid Python file placed in this folder executes automatically when FontForge boots.
Step 3: Installing Native C Plugins (Advanced)
For high-performance or low-level tasks, FontForge supports compiled
dynamic libraries (.so on Linux, .dylib on
macOS, or .dll on Windows):
- Compile the plugin source against FontForge's header files
(
fontforge/plugins.h). - Copy the compiled library into FontForge's system plugin directory:
- Linux:
/usr/local/lib/fontforge/or/usr/lib/fontforge/ - macOS:
/Applications/FontForge.app/Contents/Resources/opt/local/lib/fontforge/ - Windows: The installation directory alongside the
main executable (e.g.,
C:\Program Files (x86)\FontForgeBuilds\lib\fontforge\).
- Linux:
- Relaunch FontForge to load the shared library.
Step 4: Verify the Installation
- Launch FontForge.
- Open an existing font or create a new font project.
- Look for your custom entries under the Tools menu
or the specific menu defined in the script's
registerMenuItemfunction. - If the tool does not appear, check for syntax errors by launching FontForge from your terminal or command prompt to inspect the standard output for Python error tracebacks.