Skip to content

Instantly share code, notes, and snippets.

@nataliepo
Created December 16, 2014 16:45
Show Gist options
  • Save nataliepo/086db0f800af405472f3 to your computer and use it in GitHub Desktop.
Save nataliepo/086db0f800af405472f3 to your computer and use it in GitHub Desktop.
font hacks
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
# GraphikRegular
# GraphiAppRegular < 16.0
lineSpacingMultiplier = 1.3
import os
from fontTools.ttLib import TTFont
from Tkinter import Tk
from tkFileDialog import askdirectory
Tk().withdraw() # hide tk root window
#directory = askdirectory(initialdir='~/safe_fonts/line_spacing_x1.0_original')
BASE_DIR = '/Users/nataliepo/Desktop'
#directories = ['otf']
directories = ['smallFontsOnly']
for d in directories:
directory = "%s/%s" % (BASE_DIR, d)
for file in os.listdir(directory):
file_name, extension = os.path.splitext(file)
if extension in ['.otf', '.ttf']:
sys.stderr.write("%s%s:\n" % (file_name, extension))
font = TTFont(os.path.join(directory, file))
sys.stderr.write("Full font obj: %s\n" % font)
sys.stderr.write("\tAvg character width: %s\n" % font['OS/2'].xAvgCharWidth)
sys.stderr.write("\tusWidthClass: %s\n" % font['OS/2'].usWidthClass)
sys.stderr.write("\tminleftSideBearing: %s\n" % font['hhea'].minLeftSideBearing)
sys.stderr.write("\tminRightSideBearing: %s\n" % font['hhea'].minRightSideBearing)
""" Adjust the line spacing """
baseAsc = font['OS/2'].sTypoAscender
baseDesc = font['OS/2'].sTypoDescender
multiplier = float(lineSpacingMultiplier)
font['hhea'].ascent = round(baseAsc * multiplier)
font['hhea'].descent = round(baseDesc * multiplier)
font['OS/2'].usWinAscent = round(baseAsc * multiplier)
font['OS/2'].usWinDescent = round(baseDesc * multiplier)*-1
""" SAVE """
os.remove(os.path.join(directory, file))
file_name = "%s-%s" % (file_name, lineSpacingMultiplier)
font.save(os.path.join(directory, file_name + extension))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment