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

  1. Download or write your custom Python script (e.g., my_custom_tool.py).
  2. Move the .py file into the python folder identified in Step 1.
  3. 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):

  1. Compile the plugin source against FontForge's header files (fontforge/plugins.h).
  2. 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\).
  3. Relaunch FontForge to load the shared library.

Step 4: Verify the Installation

  1. Launch FontForge.
  2. Open an existing font or create a new font project.
  3. Look for your custom entries under the Tools menu or the specific menu defined in the script's registerMenuItem function.
  4. 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.