From: Thai on Cloud9 Date: Mon, 6 May 2019 05:42:00 +0000 (+0000) Subject: monospacify, adjusted metrics, update readme, added comic-shanns-dtinth X-Git-Url: https://software.frrobert.com/proportionaltomonofont/commitdiff_plain/54a992f8991f91ee317924649db588edc4383f70 monospacify, adjusted metrics, update readme, added comic-shanns-dtinth --- diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..35dedad --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +vendor +*.pyc \ No newline at end of file diff --git a/README.md b/README.md index 81d4a93..58bd4fe 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,11 @@ # What it is A classy font. +## Changes in dtinth’s fork +1. All glyphs have been adjusted to have exactly the same width (using code based on [monospacifier](https://github.com/cpitclaudel/monospacifier)) +2. The glyph metrics have been adjusted to make it display better alongside system font. +3. The name is changed to `Comic Shanns dtinth`. + ## Usage You can download it and install it like any other font. diff --git a/comic-shanns-dtinth.otf b/comic-shanns-dtinth.otf new file mode 100644 index 0000000..3c0ae3b Binary files /dev/null and b/comic-shanns-dtinth.otf differ diff --git a/dtinth.py b/dtinth.py new file mode 100644 index 0000000..0aee998 --- /dev/null +++ b/dtinth.py @@ -0,0 +1,57 @@ +#!/usr/bin/env python2 +# -*- coding: utf-8 -*- + +"""Update the glyph metrics so that they all really have the same size.""" + +# 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): + 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(0.9)) + +font = fontforge.open('comic-shanns.otf') +ref = fontforge.open('vendor/Menlo.ttc') +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 + +adjust_height(font, ref) +font.sfnt_names = [] # Get rid of 'Prefered Name' etc. +font.fontname = 'Comic Shanns dtinth' +font.familyname = 'Comic Shanns dtinth' +font.fullname = 'Comic Shanns dtinth' +font.generate('comic-shanns-dtinth.otf') \ No newline at end of file