mirror of
https://github.com/sayyadirfanali/Myna.git
synced 2026-01-11 14:30:26 +01:00
50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
import fontforge
|
|
import math
|
|
import psMat
|
|
|
|
def mkFont(name, weight):
|
|
font = fontforge.open(name + ".sfd")
|
|
font.mergeFeature("features.fea")
|
|
font.generate("./fonts/" + name + ".otf")
|
|
font.generate("./fonts/" + name + ".ttf")
|
|
|
|
font.selection.all()
|
|
angle = 12
|
|
font.transform(psMat.skew(angle * math.pi / 180))
|
|
|
|
font.familyname = "Myna"
|
|
font.weight = weight
|
|
font.italicangle = -angle
|
|
|
|
if weight == "Bold":
|
|
subfamily = "Bold Italic"
|
|
# 0x01 (Italic) + 0x20 (Bold) = 0x21
|
|
font.os2_stylemap = 0x21
|
|
full_name = "Myna Bold Oblique"
|
|
else:
|
|
subfamily = "Italic"
|
|
font.os2_stylemap = 0x01
|
|
full_name = "Myna Regular Oblique"
|
|
|
|
font.fullname = full_name
|
|
font.fontname = full_name.replace(" ", "")
|
|
|
|
# This is the critical part for app recognition:
|
|
font.appendSFNTName("English (US)", "SubFamily", subfamily)
|
|
|
|
# Preferred Style
|
|
# font.appendSFNTName("English (US)", "Preferred Style", weight + " Oblique")
|
|
|
|
# 7th is Letterform where 9 = Oblique and 2 = Italic
|
|
panoseL = list(font.os2_panose)
|
|
panoseL[7] = 9
|
|
font.os2_panose = tuple(panoseL)
|
|
|
|
font.generate("./fonts/" + name + "Oblique.otf")
|
|
font.generate("./fonts/" + name + "Oblique.ttf")
|
|
font.close()
|
|
|
|
|
|
mkFont("Myna-Regular", "Regular")
|
|
mkFont("Myna-Bold", "Bold")
|