欢迎光临散文网 会员登陆 & 注册

——若破折号不在统一码中该怎么办・苹果的PUA・Monu11α、不明体

2020-11-08 23:05 作者:綿雲飴里  | 我要投稿

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

最近出于制作上述字体的需要,翻译了 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个U+2014 EM DASH M宽连接号 — 啦。这个号实际用途从名称就能看出来,与汉字居中对齐还能勉强,左右不顶格且中间不断开这哪能做得到。

2015年,思源字体设计师琢磨出一个办法:统一码的标点补充区段,有个西文标点U+2E3A TWO-EM DASH两倍M宽连接号 ⸺(通称 omission dash)能借来用用。使用OpenType特性 'ccmp'(字形组合)在遇到连续两U+2014— 时替换成U+2E3A⸺,然后判断系统地域是不是设定在中日韩,若是,用特性 'locl'(区域指定)改成与汉字居中对齐的字形,算是在排版上解决了。

因此可以用思源系列字体展现符合排版的破折号。当然如果软件不支持OpenType特性那就谈不上了,好在目前较新浏览器至少默认开启 'ccmp'。



统一码里有个区段 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)

而我做的不明体对破折号的处理用到了U+2E3B THREE-EM DASH三倍M宽连接号 ⸻ ,想做动画来演示,可惜没时间,就做个GIF罢。支持的软件可以将⸺—」连字展现为无限延伸,下图为浏览器渲染效果

——如同手写一般变化笔触。理论上可连无限长……


下载:[MY1L/unMing: 不明体](https://github.com/MY1L/unMing)


本来想聊聊杀蝗炸弹,也与统一码实现有关,不过我不清楚实现细节就不乱说了。

显然不是什么用户名长达几十GB这种玩笑,而是某大牌浏览器排版引擎按统一码规则渲染特定字符构成的用户名导致内存消耗特大。无论如何,浏览器决不能一家独大。

类似这个,苹果也出过好几次因收一组特定字符而卡死的事,但听说这次果家的狩猎浏览器没事。

——若破折号不在统一码中该怎么办・苹果的PUA・Monu11α、不明体的评论 (共 条)

分享到微博请遵守国家法律