Converting Fonts for the Web
Fixing Font Families
In case they’re all over the place for each style. Run with fontforge -script fix.py
.
import fontforge
import sys
fonts = [
("Eina02-Bold.ttf", "Bold"),
("Eina02-BoldItalic.ttf", "Bold Italic"),
("Eina02-Light.ttf", "Light"),
("Eina02-LightItalic.ttf", "Light Italic"),
("Eina02-Regular.ttf", "Regular"),
("Eina02-RegularItalic.ttf", "Regular Italic"),
("Eina02-SemiBold.ttf", "SemiBold"),
("Eina02-SemiboldItalic.ttf", "SemiBold Italic")
]
for filename, style in fonts:
font = fontforge.open(filename)
# Set family name
font.familyname = "Eina02"
font.fontname = filename.replace(".ttf", "")
font.fullname = f"Eina02 {style}"
# Set TTF names
font.appendSFNTName("English (US)", "Family", "Eina02")
font.appendSFNTName("English (US)", "SubFamily", style)
font.appendSFNTName("English (US)", "Preferred Family", "Eina02")
font.appendSFNTName("English (US)", "Preferred Styles", style)
# Generate the corrected font
font.generate(f"fixed_{filename}")
font.close()
Base64 Encoding
# Encode
function dataurl() {
local MIMETYPE
MIMETYPE=$(file -b --mime-type "$1")
if [[ $MIMETYPE == text/* ]]; then
MIMETYPE="${MIMETYPE};charset=utf-8";
fi
echo "data:${MIMETYPE};base64,$(openssl base64 -in "$1" | tr -d '\n')";
}
WOFF2 → TTF
On macOS,
brew install woff2
# This will create your-font.ttf
woff2_decompress your-font.woff2
The FontForge Swiss-Army Knife 🧀
Install FontForge (on Homebrew) and then save this as a script (convert.pe
) and make it executable. Now you can convert whatever you’d like.
Open($1)
Generate($1:r + ".ttf")
Generate($1:r + ".otf")
Generate($1:r + ".svg")
Run with
fontforge -script name_of_script font.woff
You can also use FontSquirrel’s excellent Online Generator.
Online Utilities
I’ve not had much luck with local conversions and end up using some online tool like ConvertIO or CloudConvert.
Deprecated Stuff
EOT (Don’t use this; use WOFF2)
Install ttf2eot
via Brew and then
ttf2eot Inconsolata.otf > Inconsolata.eot
For a bunch of files,
for f in *.otf; do ttf2eot $f > ${f%".otf"}.eot; done
FontConverter (Unmaintained)
Install this via Homebrew and convert away. It installs this script and a bunch of dependencies.