漫画单声道 Comic Mono

原始链接: https://dtinth.github.io/comic-mono-font/

文本描述了 Comic Shanns 字体的修改版本,称为 Comic Mono,可通过 GitHub 获取。 作者缺乏传统的字体设计技能,使用 Python 脚本开发了该字体。 为了创建 Comic Mono,他们使用了一个名为 Monospacifier 的现有开源工具来确保所有字形具有相等的间距,并调整了度量以与名为 Cousine 的默认系统字体对齐。 与原版 Comic Shanns 相比,它们提高了可读性并减轻了重量。 还添加了更大胆的版本。 该项目利用开源工具对原始 Comic Shanns 字体文件进行了修补,并要求用户在运行脚本之前提供两个字体文件(原始 Comic Shanns 和 Cousine Regular)。 此外,还存在 Comic Shanns 的替代版本,例如 Serious Shanns 或 Comic Shanns Mono,提供更大的修改和新角色。 用户可以通过 JavaScript Deliver Network (CDN) 访问 Comic Mono 或直接从其 npm 包安装。

The text describes a modified version of Comic Shanns font called Comic Mono, made available through GitHub. The author, who lacks traditional font-design skills, developed the font using Python scripts. To create Comic Mono, they used a pre-existing open-source tool called Monospacifier to ensure all glyphs have equal spacing, and adjusted the metrics to align with the default system font known as Cousine. They improved the readability and reduced the weight compared to the original Comic Shanns. A bolder version was also added. This project patches the original Comic Shanns font file, utilising open-source tools, and requires the user to provide two font files (the original Comic Shanns and Cousine Regular) before running the script. Additionally, alternative versions of Comic Shanns exist, such as Serious Shanns or Comic Shanns Mono, offering greater modification and new characters. Users may access Comic Mono via JavaScript Deliver Network (CDN) or install it directly from its npm package.


A legible monospace font… the very typeface you’ve been trained to recognize since childhood. This font is a fork of Shannon Miwa’s Comic Shanns (version 1).

Screenshot

Download

Differences from Comic Shanns

  1. All glyphs have been adjusted to have exactly the same width (using code based on monospacifier).
  2. The glyph metrics have been adjusted to make it display better alongside system font, based on Cousine’s metrics.
  3. The name is changed to Comic Mono.
  4. A bold version of the font is generated using FontForge’s Embolden operation.

I have no font creation skills; I’m just a software developer. This font family is created by patching the original font, Comic Shanns (v1), using a Python script, generate.py.

What does it look like?

Check it out!

#!/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')

Check out these fonts as well

  • The original Comic Shanns by Shannon Miwa has V2 released with support for accented characters and other symbols, such as math symbols.
  • Check out Serious Shanns by Kyle Beechly, which has more modifications to further enhance the legibility, lighter weight, and Nerd Font version.
  • Check out Comic Shanns Mono by Jesus Gonzalez, which is based on Comic Shanns v2 but with metrics adjusted and with more additional characters.

CDN

You can use this font in your web pages by including the stylesheet. CDN is provided by jsDelivr.

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/index.css">

npm Package

The contents of this package is also published to npm, although the font files are not optimized. See fontsource package (below) for a better option.

Packages published by third parties

License

It is licensed under the MIT License.

相关文章
联系我们 contact @ memedata.com