summaryrefslogtreecommitdiff
path: root/generate.py
diff options
context:
space:
mode:
authorThai on Cloud9 <dtinth@spacet.me>2019-06-07 11:05:30 +0000
committerThai on Cloud9 <dtinth@spacet.me>2019-06-07 11:05:30 +0000
commit95ef988207abadd99ca63f115773ee7fcbe0f420 (patch)
treec8f395e1eb7c6aba222cdcbbb35812365601e569 /generate.py
parentc13e928eefa950c448fdede0f2463221ddffa7ee (diff)
downloadneo-comic-mono-font-95ef988207abadd99ca63f115773ee7fcbe0f420.tar.gz
neo-comic-mono-font-95ef988207abadd99ca63f115773ee7fcbe0f420.tar.bz2
neo-comic-mono-font-95ef988207abadd99ca63f115773ee7fcbe0f420.zip
Rename to Comic Mono
Diffstat (limited to 'generate.py')
-rw-r--r--generate.py74
1 files changed, 74 insertions, 0 deletions
diff --git a/generate.py b/generate.py
new file mode 100644
index 0000000..3b416d6
--- /dev/null
+++ b/generate.py
@@ -0,0 +1,74 @@
+#!/usr/bin/env python2
+# -*- coding: utf-8 -*-
+
+"""
+Generates the Comic Mono font files based on Comic Shanns font.
+
+Required files:
+- vendor/comic-shanns.otf
+- vendor/Cousine-Regular.ttf
+
+Based on:
+- monospacifier: https://github.com/cpitclaudel/monospacifier/blob/master/monospacifier.py
+- YosemiteAndElCapitanSystemFontPatcher: https://github.com/dtinth/YosemiteAndElCapitanSystemFontPatcher/blob/master/bin/patch
+"""
+
+import os
+import re
+import sys
+
+reload(sys)
+sys.setdefaultencoding('UTF8')
+
+import fontforge
+import psMat
+import unicodedata
+
+def height(font):
+ return float(font.capHeight)
+
+def adjust_height(source, template, scale):
+ source.selection.all()
+ source.transform(psMat.scale(height(template) / height(source)))
+ for attr in ['ascent', 'descent',
+ 'hhea_ascent', 'hhea_ascent_add',
+ 'hhea_linegap',
+ 'hhea_descent', 'hhea_descent_add',
+ 'os2_winascent', 'os2_winascent_add',
+ 'os2_windescent', 'os2_windescent_add',
+ 'os2_typoascent', 'os2_typoascent_add',
+ 'os2_typodescent', 'os2_typodescent_add',
+ ]:
+ setattr(source, attr, getattr(template, attr))
+ source.transform(psMat.scale(scale))
+
+font = fontforge.open('vendor/comic-shanns.otf')
+ref = fontforge.open('vendor/Cousine-Regular.ttf')
+for g in font.glyphs():
+ uni = g.unicode
+ category = unicodedata.category(unichr(uni)) if 0 <= uni <= sys.maxunicode else None
+ if g.width > 0 and category not in ['Mn', 'Mc', 'Me']:
+ target_width = 510
+ if g.width != target_width:
+ delta = target_width - g.width
+ g.left_side_bearing += delta / 2
+ g.right_side_bearing += delta - g.left_side_bearing
+ g.width = target_width
+
+font.familyname = 'Comic Mono'
+font.version = '0.1.1'
+font.comment = 'https://github.com/dtinth/comic-mono-font'
+font.copyright = 'https://github.com/dtinth/comic-mono-font/blob/master/LICENSE'
+
+adjust_height(font, ref, 0.875)
+font.sfnt_names = [] # Get rid of 'Prefered Name' etc.
+font.fontname = 'ComicMono'
+font.fullname = 'Comic Mono'
+font.generate('ComicMono.ttf')
+
+font.selection.all()
+font.fontname = 'ComicMono-Bold'
+font.fullname = 'Comic Mono Bold'
+font.weight = 'Bold'
+font.changeWeight(32, "LCG", 0, 0, "squish")
+font.generate('ComicMono-Bold.ttf')
Software created with 💖