一次让字体看起来更像手写体的尝试
创始人
2024-03-02 05:42:09
0

其实我对这个实验的结果并不是特别满意,但我还是想分享一下,因为摆弄字体是件非常简单和有趣的事情。而且有人问我怎么做,我告诉她我会写一篇博文来介绍一下 :smiley:

背景:原本的手写体

先交代一些背景信息:我有一个我自己的手写字体,我已经在我的电子杂志中使用了好几年了。我用一个叫 iFontMaker 的令人愉快的应用程序制作了它。他们在网站上自诩为“你可以在 5 分钟内只用手指就能制作出你的手工字体”。根据我的经验,“5 分钟”的部分比较准确 —— 我可能花了更多的时间,比如 15 分钟。我对“只用手指”的说法持怀疑态度 —— 我用的是 Apple Pencil,它的精确度要好得多。但是,使用该应用程序制作你的笔迹的 TTF 字体是非常容易的,如果你碰巧已经有了 Apple Pencil 和 iPad,我认为这是一个有趣的方式,我只花了 7.99 美元。

下面是我的字体的样子。左边的“CONNECT”文字是我的实际笔迹,右边的段落是字体。其实有 2 种字体 —— 有一种是普通字体,一种是手写的“等宽”字体。(其实实际并不是等宽,我还没有想好如何在 iFontMaker 中制作一个实际的等宽字体)

目标:在字体上做更多的字符变化

在上面的截图中,很明显可以看出这是一种字体,而不是实际的笔迹。当你有两个相同的字母相邻时,就最容易看出来,比如“HTTP”。

所以我想,使用一些 OpenType 的功能,以某种方式为这个字体引入更多的变化,比如也许两个 “T” 可以是不同的。不过我不知道该怎么做!

来自 Tristan Hume 的主意:使用 OpenType!

然后我在 5 月份的 !!Con 2020 上(所有的演讲录音都在这里!)看到了 Tristan Hume 的这个演讲:关于使用 OpenType 通过特殊的字体将逗号插入到大的数字中。他的演讲和博文都很棒,所以这里有一堆链接 —— 下面现场演示也许是最快看到他的成果的方式。

基本思路:OpenType 允许你根据上下文替换字符

我一开始对 OpenType 到底是什么非常困惑。目前我仍然不甚了然,但我知道到你可以编写极其简单的 OpenType 规则来改变字体的外观,而且你甚至不需要真正了解字体。

下面是一个规则示例:

sub a' b by other_a;

这里 sub a' b by other_a; 的意思是:如果一个 a 字形是在一个 b 之前,那么替换 a 为字形 other_a

所以这意味着我可以让 abac 在字体中出现不同的字形。这并不像手写体那样随机,但它确实引入了一点变化。

OpenType 参考文档:真棒

我找到的最好的 OpenType 文档是这个 OpenType™ 特性文件规范 资料。里面有很多你可以做的很酷的事情的例子,比如用一个连字替换 “ffi”。

如何应用这些规则:fonttools

为字体添加新的 OpenType 规则是超容易的。有一个 Python 库叫 fonttools,这 5 行代码会把放在 rules.fea 中的 OpenType 规则列表应用到字体文件 input.ttf 中。

from fontTools.ttLib import TTFont
from fontTools.feaLib.builder import addOpenTypeFeatures

ft_font = TTFont('input.ttf')
addOpenTypeFeatures(ft_font, 'rules.fea', tables=['GSUB'])
ft_font.save('output.ttf')

fontTools 还提供了几个名为 ttxfonttools 的命令行工具。ttx 可以将 TTF 字体转换为 XML 文件,这对我很有用,因为我想重新命名我的字体中的一些字形,但我对字体一无所知。所以我只是将我的字体转换为 XML 文件,使用 sed 重命名字形,然后再次使用 ttx 将 XML 文件转换回 ttf

fonttools merge 可以让我把我的 3 个手写字体合并成 1 个,这样我就在 1 个文件中得到了我需要的所有字形。

代码

我把我的极潦草的代码放在一个叫 font-mixer 的存储库里。它大概有 33 行代码,我认为它不言自明。(都在 run.shcombine.py 中)

结果

下面是旧字体和新字体的小样。我不认为新字体的“感觉”更像手写体 —— 有更多的变化,但还是比不上实际的手写体文字(在下面)。

我觉得稍微有点不可思议,它明明还是一种字体,但它却要假装成不是字体:

而这是实际手写的同样的文字的样本:

如果我在制作另外 2 种手写字体的时候,把原来的字体混合在一起,再仔细一点,可能效果会更好。

添加 OpenType 规则这么容易,真酷!

这里最让我欣喜的是,添加 OpenType 规则来改变字体的工作方式是如此的容易,比如你可以很容易地做出一个“the”单词总是被“teh”代替的字体(让错别字一直留着!)。

不过我还是不知道如何做出更逼真的手写字体:)。我现在还在用旧的那个字体(没有额外的变化),我对它很满意。


via: https://jvns.ca/blog/2020/08/08/handwritten-font/

作者:Julia Evans 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

瑞幸的“假”字乌龙,让大伙...
文 | 超聚焦 没想到有天我被一杯咖啡检查学历了。 故事要从2月...
2026-02-12 10:19:34
树莓派发布基于Debian...
2025-10-02 18:20:12 作者:狼叫兽 10月2...
2025-10-04 13:15:45
【AI贵阳】贵阳人的“咖啡...
当咖啡控遇上毛笔狂, 贵阳街头“啡”常涂鸦! 墨汁混着咖啡香, 喝...
2025-06-30 12:42:35
[oeasy]python...
屏幕点阵字库 回忆上次内容 上次回顾了 字符字型 的 进化过程 从...
2025-05-30 01:09:15
捕捉元素样式 - 字体大小
要捕捉元素的字体大小样式,可以使用JavaScript来获取元素的...
2025-01-12 18:01:08
不影响填充的情况下增加输入...
要在不影响填充的情况下增加输入字体大小,可以使用CSS中的tran...
2025-01-11 07:30:53

热门资讯

PHP最佳实践(译) 简介PHP是一门复杂的语言,经过多年折腾,使其不同版本之间高度不一致,有时还有些bug。 每个版本都...
值得收藏的 27 个机器学习的... 机器学习 ( Machine Learning ) 有很多方面,当我开始研究学习它时,我发现了各种各...
8 个提升你的隐私防护的开源密... 使用一些顶级开源密码管理器,确保你的登录凭证安全无虞。密码管理器是一项非常有用的实用程序。在你想寻找...
为什么计量 IT 的生产力如此... 在某些行业里,人们可以根据一些测量标准判定一个人的生产力。比如,如果你是一个零件制造商,可以通过一个...
8个有趣的Linux提示与技巧... 我们时不时给你带来关于Linux的提示与技巧。和这个系列保持一致,这里有8个我们从读者收到最有趣的提...
硬核观察 #885 苹果 AR... 苹果 AR 眼镜被无限期推迟据报道,由于技术上的挑战,苹果公司已经无限期推迟了其轻型增强现实(AR)...
Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
2020 年的 GitHub ... 距离 2020 年结束只剩下区区 24 天,我们即将结束魔幻的 2020 ,迎来新的一年,新的一年或...
开源新闻速递:openSUSE... 今日关注openSUSE 项目组的 Dominique Leuenberger 在他的周报中说:“这...
KDE4.11 Beta1 正...   KDE 项目工作组刚刚发布了 KDE Software Compilation 4.11 Bet...