fons
clone your own copy | download snapshot

Snapshots | iceberg

Inside this repository

mergeSpacing.py
text/x-python

Download raw (1.3 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():
    try:
        char = g.glyphname
        print(char)
        # 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
    except:
        pass


# 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])