
其实我以前做了个工具用字体,这1个字体包含111,4112个名义上的统一码字符,对,111万余字——不过本文不谈这个。

最近出于制作上述字体的需要,翻译了 unicode.org,Blocks-13.0.0.txt 里305个统一码区段名,发布在这里:[MY1L/Unicode](https://github.com/MY1L/Unicode),用于发布各种工具字体。
翻译中我时常感觉到,区段名常用词 Compatibility(兼容),还不如译为“妥协”。这种感觉,就像在输入「what’ s」时以为自己在撇号后多打了空格一般,最后了解到不是字体的错,而是统一码把中文全角右单弯引号“妥协”给西文引号 U+2019,导致中文字体只能把西文引号做成全角。
过去知乎有人提议分配4个编码给全角弯引号,被统一码有关的梁海(?)拒绝。这事我忘了链接不过古战场应该还在知乎,有兴趣可以去找找。
妥协倒不是针对中文,西文也是。统一码收录了许多种横杠,其中:
U+2212 MINUS减号“−”,与加号“+”等号“=”等宽且与数字居中对齐,例:1+2−3=0
U+2010 HYPHEN连字号“‐”,与西文居中对齐,例:α‐ω
显然这一高一矮两种居中对齐不可兼得,但键盘按 -⃣ 出现的默认字符既不是减号也不是连字号,而是 U+002D HYPHEN-MINUS“-”奇妙的“连及减”号,让字体设计师不知跟谁对齐只能当混血连字号设计,直到 OpenType 等技术出现。

-⃣ 是箭头所指的按键。例图改自 jimmac 开源的 gnome-theme 快捷键图标,以示大多数中文输入法的破折号快捷键。
我想这应该是打字机时代的历史遗留问题,
为了环保打字机合并了很多按键,比如数字“0 1”被合并到英文,删除是退个格再打个英文“x”,许多按键遗留到 ASCII 编码,当然也被统一码继承,包括退格键也是个字符:U+0008[BS]BACKSPACE
说到破折号,中文排版规定是这样:两汉字宽,与汉字字框居中对齐,左右不顶格,中间不断开,统一码不存在。
截止统一码13.0,已用码点28,3506个(咦),但就是没有破折号。
因为统一码把破折号“妥协”给2个 EM宽连接号 U+2014 EM DASH“—”啦。这个号实际用途从名称就能看出来,与汉字居中对齐还能勉强,左右不顶格且中间不断开这哪能做得到。
2015年,思源字体设计师琢磨出一个办法:统一码的标点补充区段,有个西文标点 两倍EM宽连接号 U+2E3A TWO-EM DASH“⸺”(通称 omission dash) 能借来用用。使用 OpenType 特性`ccmp`字形分合 在遇到连续两 U+2014“—”时替换成 U+2E3A“⸺”,然后判断系统地域是不是设定在中日韩,若是,用特性`locl`区域字形 改成与汉字居中对齐的字形,算是在排版上解决了。
因此可以用思源系列字体(及我的字体)展现符合排版的破折号。当然如果软件不支持 OpenType 特性那就免谈了,好在目前较新浏览器至少默认开启`ccmp`。
省略号也有同样问题,被妥协到两个 U+2026“…”,因此也有拿数学居中省略号 U+22EF“⋯”代替的情况⋯⋯

统一码里有个区段 U+E000‒U+F8FF Private Use Area 私用区,缩写 PUA,跟那个词缩写一样。
去年苹果有个宣传动画,很多果粉兴奋地给这个视频刷弹幕 U+F8FF“”
……希望热爱设计的果粉发弹幕前能先想一下,即便苹果是个伟大的公司也伟大不过破折号,统一码也不至于会把它的标志收为编码罢。
这个 U+F8FF 位于统一码私用区末端,什么字都不是,字体想让它显示什么就是什么。苹果自家字体在这放个自己的标志无可厚非,但b站不是苹果独占,有其它平台的人在看,非苹果用户只会看到奇怪的缺字符之类的字在刷屏。
其实如上面所说,苹果自家字体完全可以用`ccmp`设定遇到`AppleLogo`这个词组替换成🍎/🍏,这样即使非苹果用户看不见果标,也知道果粉是在发“Apple Logo”。我先前也提过,苹果字体其实已经用类似方案在苹果表上解决冒号与数字对齐的问题了,这又不难。

拖太久,今天先把 Monu11α 发布了,以后再谈。
[字体预览](https://my1l.github.io/wwwoff)
当然,Monu 的`ccmp`特性早就支持自动破折号排版,也支持显示字符 U+F8FF,可以在上列页面里测试。用的浏览器别太旧就行。
这次还包含了同画风的彩色字体“Monu Zsye”,不过只有视窗系统可安装使用。有关制作彩色字体的事复杂到得单独写一篇。
`Zsye`在 ISO 15924 四字代码中表示符号(symbol)的彩色绘文字(emoji)变体。
下载:[MY1L/QuQi/Release 第11版☘](https://github.com/MY1L/QuQi/releases)
而我做的不明体对破折号的处理用到了三倍EM宽连接号 U+2E3B THREE-EM DASH“⸻”,想做动画来演示,可惜没时间,就做个 GIF 罢。支持的软件可以将「⸻⸺—」连字展现为无限延伸,下图为浏览器渲染效果。

——如同手写一般变化笔触。理论上可连无限长……
下载:[MY1L/unMing: 不明体](https://github.com/MY1L/unMing)

本来想聊聊杀蝗炸弹,也与统一码实现有关,不过我不清楚实现细节就不乱说了。
显然不是什么用户名长达几十 GB 这种玩笑,而是某大牌浏览器排版引擎按统一码规则渲染特定字符构成的用户名导致内存消耗特大。无论如何,浏览器决不能一家独大。
类似这个,苹果也出过好几次因收一组特定字符而卡死的事,但听说这次果家的狩猎浏览器没事。