fons
clone your own copy | download snapshot

Snapshots | iceberg

Inside this repository

mergeSpacing.py
text/x-python

Download raw (1.2 KB)

#! /usr/bin/python

"""
Merges the spacing information from one base font to your font and produces a new font (keeping the original fonts intact).
It can take any font format that Fontforge can open: .ufo, .otf, .sfd...

Usage:
    python mergeSpacing.py MyFont.ufo BaseFont.ufo SpacedFont.ufo
"""


import fontforge
import sys


font = fontforge.open(sys.argv[1])
original = fontforge.open(sys.argv[2])


# MERGE SPACINGS
for g in font.glyphs():
    char = g.glyphname
    # Gets original font bearings
    left = original[char].left_side_bearing
    right = original[char].right_side_bearing

    # Sets current bearings to 0
    font[char].left_side_bearing = 0
    font[char].right_side_bearing = 0

    # Gets drawing width
    width = font[char].width

    # Resize the width with original bearings
    font[char].width = left + width + right
    font[char].left_side_bearing = left
    font[char].right_side_bearing = right


# EXPORT ORIGINAL FONT AS PFA/AFM TO GET OPENTYPE FEATURES FROM AN AFM FILE
afm = original.generate("%s.pfa" % sys.argv[2])

# MERGE OPENTYPE FEATURES (including kernings)
font.mergeFeature("%s.afm" % sys.argv[2])
#font.mergeLookups(original)
#font.mergeLookupSubtables(original)

 
font.generate(sys.argv[3])