动态生成字体的单独字形大小操作

Individual glyph size manipulation for dynamically generated font

有没有简单的方法来控制字体中的单个字形大小?换句话说,我想根据指定的公式为字体中的各个字形动态生成具有不同大小(或大小外观)的字体。

例如,'A' 可能看起来是其原始大小的 150%,而 'B' 可能是其原始大小的 50%。

生成的字体将在网页上使用。这将允许我影响字符大小,即使对于相同的字体大小,也不需要额外的 CSS 单个字母的样式。 (CSS 设置单个字母的样式对于包含大量文本的网页来说 performance/parser 有点矫枉过正。)

我不确定这种字形大小转换是否可以通过一些简单的方式实现,或者是否需要为每个受影响的字形编写单独的字形轮廓转换公式。

为每个字形编写轮廓转换公式(基于单个字形轮廓)可能与字体相关,在我的用例中不值得。

字体可以 generated/manipulated 一次(JS/Java/Python 库或方法首选)然后字体应该可以在网页上使用。

请问你有什么想法吗?提前谢谢你。

我不明白你为什么要这样做,这听起来很难看,但是你开始吧:

FontForge(免费工具)允许您缩放单个字形。您将打开文件,select 您想要缩放的字形,按 Ctrl-反斜杠(或从菜单中选择元素>转换>转换)。来源应该是"Glyph Origin";选择 "Scale" 并设置比例;将其他两个下拉菜单留给 "Do Nothing"。 并检查 "Transform Width Too",如果可以的话。

似乎有一个错误,这意味着 "Transform Width Too" 选项有时会被禁用。如果是这样,您需要在完成转换后手动调整 Advance 宽度(Metrics>Set Width>Scale Width By,并输入相同的百分比值)。

如果您是 运行 linux 上的 FontForge,您甚至可以编写 python 脚本,如果您想以编程方式执行此操作。因为你说这是一个一次性的过程,所以像我描述的那样手动完成可能要容易得多。

从设计者的角度来看,偶尔会有将不同大小的文本混合在一起的原因,但在这些情况下,需要考虑让笔划宽度也一起工作。大文本应该是lighter/thinner,小文本应该更粗。这与人们对 using true small caps rather than just reducing the text size 的争论相同。查看 FontForge 功能元素>样式>更改粗细。