# 39. Kerning Panic · 字谈字串（一）

内核恐慌 · 2016-05-16

<https://lib.pan.icu/1fd3b636-47b8-449e-8a9b-541d4598a589>

本期《字谈字串》由《内核恐慌》与《字谈字畅》联合推出，主题是从用户敲击键盘到屏幕上显示文字的完整流程。节目详细介绍了三大主流键盘布局（ANSI、ISO、JIS）的差异，以及日语键盘中假名输入和编码的历史遗留问题，如日元符号替代反斜杠。随后深入字符编码层面，从ASCII扩展到各国家和地区标准（GB、Big5、JIS等），最后统一到Unicode，并解释了CJK统一汉字的认同原则带来的异体字问题。字体技术方面，讨论了点阵与矢量字体的区别、Hinting（渲染提示）在Windows和macOS上的不同哲学——Windows追求清晰而牺牲字形，macOS保留设计原形，以及ClearType和Anti-aliasing的实现。节目还涉及输入法词频调整、emoji与颜文字的区别、TrueType与OpenType的贝塞尔曲线差异，以及全角/半角概念的历史渊源。最终指出，一个简单的打字动作背后是层层历史债务和技术妥协。

## Questions this episode answers

### 为什么在日文Windows系统中，文件路径会显示¥符号而不是反斜杠？

吴涛解释早期的JIS编码将ASCII中反斜杠的码位替换成了日元符号，因为反斜杠在日本日常生活中极少使用，而日元符号更常见。这导致日文版Windows的文件路径分隔符显示为¥，看起来像“好多钱”。Rio补充上海地铁的指示牌也曾大量使用反斜杠，让日本人觉得很意外。

[19:26](https://lib.pan.icu/1fd3b636-47b8-449e-8a9b-541d4598a589?t=1166000)

### Windows和macOS在字体渲染上有什么根本性的哲学区别？

吴涛和Rio指出，Windows为了让字体在低分辨率屏幕上清晰显示，不惜通过hinting（渲染提示）改变字形笔画位置，牺牲了设计的忠实度；而macOS则优先保留字体设计师的原始造型，哪怕在低分辨率下看起来有些模糊。随着屏幕分辨率提高，macOS的方式逐渐被更多人认为更美观，因为能更好地反映字体设计意图。

[1:24:35](https://lib.pan.icu/1fd3b636-47b8-449e-8a9b-541d4598a589?t=5075000)

### 为什么同一个汉字在切换中文字体和日文字体时形状会不一样？

以“强”字为例，Rio和吴涛谈到，该字在中国和日本的标准字形不同（中国写“口”，日本写“厶”），但两者在Unicode中分别有独立的码位。如果字体厂商在映射时弄错了码位，或者输入法优先推荐了不符合当前语言的变体，就会导致显示时字形错乱。这个问题反映了Unicode CJK统一汉字时，为了向后兼容而留下的历史复杂性。

[1:00:24](https://lib.pan.icu/1fd3b636-47b8-449e-8a9b-541d4598a589?t=3624000)

## Key moments

- **[0:00] 开场介绍**
  - [1:23] 《字谈字畅》与《内核恐慌》推出联合系列‘Kerning Panic’，中文名‘字谈字串’。
  - [4:26] 吴涛自告奋勇给Type is Beautiful站长Rex寄简历，成为网站技术支持。
  - [10:10] 本期节目主题：从用户敲击键盘到屏幕显示文字的完整技术过程。
- **[13:04] 键盘布局**
  - [13:04] 世界上的键盘实体布局远不止QWERTY一种，各国标准不同。
  - [14:58] 主流键盘布局分为北美ANSI（扁回车）、国际ISO（倒L回车）和日本JIS（键最多）三种。
  - [16:14] 绝大多数日本人使用罗马字拼音输入，而非直接按假名键。
  - [18:21] 法语键盘默认按键输出声调符号，需按Shift才能打出数字。
  - [19:26] 早期JIS将反斜杠码位替换为日元符号，导致日文Windows路径显示一串‘¥’。
  - [23:14] 韩文键盘将辅音全部分配在左手，元音全部分配在右手，实现自然交替输入。
- **[34:36] 扫描码**
  - [37:12] 在注册表中交换扫描码可将Caps Lock键变为Control键。
  - [39:26] 文字编码将字符映射为数字，与键盘扫描码完全独立。
- **[40:14] 字符编码**
  - [41:03] ASCII码表的设计使二进制第5位翻转即可完成大小写转换。
  - [46:07] 日文为何不能废除汉字？Rio指出同音词太多，纯假名会引发大量歧义。
  - [48:33] 艺人泽尻英龙华原只有假名名，为进中国市场专门起了‘英龙华’的汉字名。
  - [51:11] Mac与Windows交换文本文件常因默认编码不同而乱码。
  - [52:36] Unicode基于‘认同原则’将中日韩汉字统一为CJK表意符号区以节省码位。
  - [54:56] Unicode认同原则导致一体字需保留多个码位，但规则不明，该统不统，该分不分。
- **[1:03:06] 输入法**
  - [1:06:20] 现代输入法如苹果拼音通过联网‘云词库’动态更新流行词汇。
  - [1:07:01] 输入法不切换状态下打‘LZSB’会输出‘兰舟烧饼’，成为网络梗。
  - [1:08:00] 日文‘emoji’是绘文字（画），属图形；‘kaomoji’是颜文字，用字符拼成表情。
  - [1:10:13] 苹果的Apple Color Emoji字体内置位图，非矢量，放大有像素感。
  - [1:12:31] 字体数据可包括黑点阵、白矢量轮廓或彩色位图三种形式。
- **[1:12:47] 字体文件**
  - [1:13:58] 历史上点阵字体如Fixedsys和中易宋体，内置11-16像素的位图用于小字号显示。
  - [1:16:00] Windows Vista起中文界面字体从点阵中易宋转向微软雅黑。
- **[1:19:03] 渲染提示**
  - [1:22:27] 微软与苹果渲染哲学之争：微软通过Hinting牺牲字形保真换取清晰，苹果追求忠实设计。
  - [1:26:26] 高分辨率屏幕的普及使苹果式渲染的优势显现，字形更接近设计师原意。
  - [1:28:03] 汉字‘喇叭口’设计源自活字印刷时代，为补偿油墨扩散导致的圆角。
  - [1:29:36] Windows对汉字Hinting不佳，因开发团队对汉字结构和审美不够熟悉。
  - [1:33:53] Rio预测未来VR/AR眼镜屏幕分辨率将超越纸张印刷精度。
  - [1:36:42] Mac OS X的图形界面渲染引擎基于PDF技术，以印刷方式显示屏幕。
- **[2:00:33] 打印输出**
  - [2:02:23] 日本印刷时，若输出方缺少字体，排版会错乱，常需将文字转为曲线。
  - [2:03:21] PDF通过‘字体子集内嵌’技术只嵌入文档用到的字符，避免文件过大。
  - [2:04:27] TrueType的出现实现了操作系统动态下载字体曲线到打印机，终结了打印机内置字库时代。
- **[2:05:58] 结尾**
  - [2:09:02] 本期口号‘less’，源自高德纳看到自己书稿排版后说‘Bless’。

## Speakers

- **Rio** (host)
- **吴涛** (host)

## Topics

字体, 字符编码, 输入法

## Mentioned

ATM (product), ClearType (product), Mac (product), OpenType (product), PostScript (product), TrueType (product), Windows (product)

## Transcript

### 开场介绍

**吴涛** [0:09]
IPN 领导人 " 不鸟万如一 " 最高指示 ： 串台是很好的事 ， 串得越凌乱越好 。

**Rio** [0:18]
我靠 ， 哈哈哈

， 你这样侮辱我们的伟大领袖好吗 ？ 还是这真的是他说的 ？

**吴涛** [0:27]
对啊 ， 就是这个 ， 这就是他说的 。

**Rio** [0:29]
这为什么念出来就有点奇怪 ？

**吴涛** [0:31]
没错 。

**Rio** [0:32]
没有 ， 就是 ， 你想 ， 一本就是当时一本书的话 ， 第一页就是应该是要写那个最高指示嘛 ， 所以呢在开场的时候 ， 那串台的开场的时候 ， 首先要念一下最高指示嘛 。

**吴涛** [0:43]
这次节目是不是要被打上什么分级标签了 ？

**Rio** [0:46]
啊 ？ 还没有 ， 我们没有说脏字 。

**吴涛** [0:49]
没关系 ，不过大家还是要说一下哈 。 嗯 ， 如果不想提收听体验被阉割的话 ， 还是推荐大家使用泛用型播客客户端收听我们的节目 。

**Rio** [1:00]
对 ， 对 。

**吴涛** [1:01]
好了 ， 我们终于开始录了 。

大家好 ， 今天是 2016 年 5 月 17 日，《 字谈字畅 》 的第 21 期 。

**Rio** [1:30]
同时也是 《 内核恐慌 》 的第 39 期 。 我好秃啊 ， 哈哈 。

**吴涛** [1:35]
《 字谈字畅 》 是全球首家用华语制作的字体排印主题播客节目 ， 我是主播 ， 文川西班东营区 Eric。

**Rio** [1:42]
我是主播 ， 黄埔江边清真宇钱真宇 。 内核恐慌是 IPN

**吴涛** [1:47]
Podcast 网络旗下的 IT 技术主题娱乐节目 ， 我们号称 "Hardcore"，但是并没有干货 。 想听人听 ，不想听人就别听 。 我是吴涛 。

**Rio** [1:55]
我是 Rio。 哎呀 ， 惨了 ， 我们在气势上已经输了 。他们的开头好 ， 好华丽啊 。

**吴涛** [2:01]
对啊 ，他们 ，他们还有开头配乐呢 。

**Rio** [2:04]
不是不是 ，他们 ，他们有那个 ，他们有那个那个 ，他们有自己的封号 ， 你知道吗 ？

**吴涛** [2:10]
哦 ， 对对对 。

**Rio** [2:11]
那你们也可以来起一个呀 。

**吴涛** [2:12]
哎哟 ， 哈哈哈 。

**Rio** [2:13]
怎么办呢 ？

**吴涛** [2:14]
而且我们俩个封号还是对账加押韵的 。

**Rio** [2:17]
对啊 ， 这个 ， 这个 ， 气势已经输了怎么办 ？

**吴涛** [2:21]
没错没错 。 咱俩赶紧想一个 。 我是莱茵河畔 ， 呃 ， 法兰克福 。

**Rio** [2:29]
哈哈哈 。

**吴涛** [2:31]
你看他们俩一个西一个江 ， 咱俩肯定要一个河一个海吧 ？ 或者一个河一个湖 。

**Rio** [2:37]
什么大西洋岸 ， 什么太平洋边 ， 哈哈哈 。

**吴涛** [2:41]
对 ， 哈哈哈 。

**Rio** [2:43]
算了算了 ， 咱还是不要去存那个能的 。

**吴涛** [2:46]
咱们俩是 ， 咱们俩还是 keep humble 吧 。

**Rio** [2:49]
对对对 。 今天是一期挺特别的节目哈 ，是我们这个 《 字谈字畅 》 和 《 内核恐慌 》 第一次合作 。

**吴涛** [2:57]
估计我们要做一系列吧 。

**Rio** [2:59]
所以我们今天的那个 ， 这个 ， 这个系列 ， 特别系列 ， 我们给它起了个单独的名字 ， 叫做 "Kerning Panic"。

**吴涛** [3:08]
对 ， 你没有听错 ，Kerning Panic。

**Rio** [3:10]
而且中文名字叫 " 字谈字串 "，不是 " 字谈字唱 "，是 " 字谈字串 "。

**吴涛** [3:16]
对 ，因为首先我们是 ， 呃 ， 首先我们是串联了一下， 然后这个 ， 呃 ， 这个字串也是 string 的一个翻译 。其实 Kerning Panic 我已经想到了一种症状 ， 就是你在街上看到这个一个一个用用西文排拉丁字母排出来的招牌 ， 然后它的 kerning 非常的史 。

**Rio** [3:38]
奇怪是吧 ？

**吴涛** [3:39]
你就会产生 ， 对 ， 你就会产生这个 Kerning Panic 这种心理 。

**Rio** [3:43]
欢迎你来到中国任何一个大城市的商场 ， 都可以看到 Kerning Panic 的状况 。 不 ， 都可以引发你产生 Kerning Panic。

**吴涛** [3:50]
我们在中国坐地铁 ， 天天都 。

**Rio** [3:52]
所以我们每天都是恐慌的状态是吗 ？

**吴涛** [3:54]
惶惶不可终日 。

**Rio** [3:56]
我 ， 我并没有 ， 我觉得还好 。

**吴涛** [4:01]
这是 Type is Beautiful 和 IPN 之间的合作 ， 从更深的这个主办方的角度来说 。

**Rio** [4:10]
好吧 。

**吴涛** [4:11]
好吧 ， 那不是 3 比 1 吗 ？

**Rio** [4:13]
TIB 虽然和 IPN 是有台合作关系 ，但是吴涛还是我们的啊 ，不是你们的 。

**吴涛** [4:20]
哦 ， 好吧 。

**Rio** [4:21]
吴涛你怎么还在这里 ？

**吴涛** [4:23]
这个 ， 这个很重要吗 ？

**Rio** [4:26]
这当然重要了 。 上次我跟那个博物志串台的时候 ， 婉荏就特别强调这点 ， 到底吴涛是你们的还是我们的问题 。

但是归根到底肯定还是我们的呀 ， 吴涛是我们 TIB 的 CEO 啊 。

**吴涛** [4:37]
哈哈哈 。 归根结底还是你们的 。

**Rio** [4:43]
那 ， 那 ， 所以 ， 所以为什么那个吴涛没有出现在 Type Chat 里面 ？

**吴涛** [4:48]
因为怎么说呢 ， 就是这个 CTO 实际上是一个 ， 呃 ， 玩笑的头衔吧 。 因为我在 TIB， 我 ， 我最开始接触到 Type is Beautiful 的时候 ， 呃 ，Type is Beautiful 基本上是 ， 基本上是一个两个人运作的 blog。

然后当时， 呃 ，也是现在我们伟大的站长 Rex， 呃 ，在找一个 ，在找一个程序员 ， 就是用到那种 ， 呃 ， 我有一个伟大的构想 ， 现在就缺一个程序员的那种感觉 。

然后我自 ， 自告奋勇的 ， 自告奋勇的寄了简历给他 ， 正儿八经的寄了简历哦 ， 寄了简历给他 ， 然后他审了一下说 ， 嗯 ，不错 ， 你来做我们的程序 ， 你来做我们的技术支持吧 。

然后我就帮 Type is Beautiful 改了一部分东西 ， 主要是 ， 呃 ， 布局啊 ， 然后一些新功能啊之类的 。 呃 ，其实一直到 ， 我相信一直到现在 ， 我在网站上的那个抬头都是技术支持 ， 所以 ， 呃 ， 我完全就是一个有能 ， 呃 ， 打杂的那种感觉 ，并不是一个 CTO。

然后， 呃 ， 我也只是在 Type is Beautiful 上写过一些 ， 主要是翻译了一些作品 ， 像是比如说那个 ， 呃 ， 好吧 ，也有自己原创的 ，但是主要还是翻译 ， 翻译过那个 DIN 字体的原体的发明过程什么的 。

所以本质上我不是一个内容输出的这么一个角色 。 所以参加 Type Chat 其实是有点 ， 肯定会进入那种无话可说的状态 ，因为很多东西我只是可能对技术上有所了解 ，但是不管是审美还是什么历史渊源上就完全没有概念 。

所以我 ， 我 ， 我参加 Type Chat 肯定会冷场的 ， 我觉得 。

**Rio** [6:44]
别谦虚啊 。

**吴涛** [6:45]
没事没事 。

**Rio** [6:45]
但 ，但当然我要表个态 ， 我的确是 Type is Beautiful 的人，yeah。

**吴涛** [6:49]
哈哈哈 。

**Rio** [6:51]
关键时刻还是站队了哈 。

**吴涛** [6:54]
那是 ， 现在是一个站队的时代 。

**Rio** [6:59]
其实 ， 呃 ， 吴涛在 Type is Beautiful 里面的好多文章其实我也很受启发的 。 因为在德国嘛 ， 德国的印刷排印的历史也是非常悠久的嘛 。

像我那时候读那个什么关于长 S 啊那些文章啊 ， 还有什么关于字体定的那些文章 ， 都是非常受启发的 。

而且 ， 呃 ， 咱们俩还翻译过很多东西吧 ， 对吧 ？ 那个金 ， 呃 ， 辛喜堂的那个活字字体讲座 ， 当时就是咱们俩分工翻译的嘛 。

**吴涛** [7:27]
对 。

**Rio** [7:27]
你翻译的汉字那一部分吧 。

**吴涛** [7:29]
对 ， 这也是一个漫长的过程 。 就以我这个日语的水平 ， 我 ， 我日语只是哑巴日语用的 。 我有些假名我到现在都是不会念的 ，但是我现在用这种日语的水平翻译了两篇文章 ， 我自己都觉得非常神奇 。

**Rio** [7:44]
我们多才多艺的吴涛同学啊 ， 咱们俩还翻过一本书不是 ？ 对啊 ， 那个 《 字体故事 》。

**吴涛** [7:50]
是 。 我们 ， 我居然翻译过一本书 ， 这是什么样的黑历史啊 。 我的 ， 差点没有坚持下来的一本书 。

**Rio** [7:57]
没有 ， 当年其实我觉得那 ， 那是放在那个东西文库里面的嘛 。 然后我就觉得那个特别好 ，因为你是在德国 ， 我在日本 ，但是咱们俩都不在国内嘛 。

然后就翻了一个 ， 放到东西文库里面去也算是名副其实了呀 。

**吴涛** [8:11]
哈哈哈 ， 没错 ， 这是一个非常 。

**Rio** [8:13]
哦哦 ， 一东一西 。

**吴涛** [8:14]
对 ， 一个非常跨国化的一个一个 project。 而且我们两个 ， 对 ， 我和 ， 我和 Eric 其实从来没有见过面 。 然后那个协同我们编 。

**Rio** [8:24]
你一定要爆这个料吗 ？

**吴涛** [8:25]
哈哈哈 ， 很快 ， 很快 。 然后， 呃 ， 那个协同我们编辑也从来没有见过我们俩 。 你们两个后来见过吗 ？

**Rio** [8:33]
啊 ， 我见过周楠 ， 嗯 。

**吴涛** [8:35]
OK。 总之他们这个编辑部现在也在做一些非常有意思的事情 ，不妨帮他们打个广告 ， 就是他们在做一本叫做 《 离线的杂志 》。

可能我们的听众之间 ， 听众中间已经有很多朋友听说过了 。 呃 ，他们是在一个如今在这样一个数字出版泛滥的时代 ， 坚持做线下杂志的团队 。

然后他们做的杂志也是 ， 呃 ，Geek， 主要是 Geek 主题吧 ， 什么游戏啊 ， 呃 ， 未来啊 ， 科幻啊之类的 。 就感兴趣的朋友可以去看一下 。他们虽然号称离线 ，但现在还是有网站的 。

然后， 嗯 ， 喜欢的朋友可以入会 。

**Rio** [9:12]
你好喜欢这个剧情啊 。 虽然不是什么 ，但是他们号称什么 ， 你好喜欢这个剧情啊 。

**吴涛** [9:18]
我 ， 我 ， 我觉得我可能太久中文说的太少 ， 很容易陷入一种就是使用一个套用一个固定剧情的模式 ， 我自己也发现了 。

**Rio** [9:29]
挺好挺好 。 没事没事 ， 我们 ， 我们这个节目可以锻炼你的中文水平 。

**吴涛** [9:34]
啊 ， 非常感谢 。

**Rio** [9:36]
Rick 回国以后是不是觉得自己中文的母语水平马上又回来了 ？

**吴涛** [9:40]
呃 ， 就 ， 我 ， 我 ， 我比较一个明显的 。

**Rio** [9:42]
你在黑他吗 ？

**吴涛** [9:44]
比较明显的一个感受是这个 ， 就以前节目里面老是念错字嘛 ， 就现在好像出现这种概率的要稍微好一点 。

**Rio** [9:52]
会有帮助吗 ？ 我觉得国内也是老有念的状态 。

**吴涛** [9:57]
出现这种概率要稍微好一点的 ， 这本身就是个病句吧 。

**Rio** [10:01]
哈哈哈 ， 这口语里面无所谓 。

**吴涛** [10:05]
反正我到现在普通话也不好 。

**Rio** [10:07]
好吧好吧 ， 我们应该说一下这次节目主题是什么 。

**吴涛** [10:10]
哦 ， 对对对 ， 我们的新节目 。

**Rio** [10:12]
所以啊 ， 嗯 ， 我们的节目呢 ， 呃 ， 英文名叫 Kerning Panic， 中文名字叫 《 字谈字串 》。 这个串台节目呢 ，是我们 TIB 和 IPN 网络旗下的 《 内核恐慌 》 的合作节目 。

那这次作为第一期 ， 我们就应该讲一下从 ， 应该有个主题哈 ， 从用户敲击键盘开始 ， 到最终的打印输出 ， 这个过程到底发生了什么 。

这是一个好长的一个过程 。

**吴涛** [10:38]
哇 ， 我 ， 我已经在想到那个程序站 。 对 ， 看到这个主题的第一反应是 ， 嗯 ， 这一期讲到了 。 这是为了感谢听众们的不杀之恩 ， 一定要讲 1,000 页的节奏啊 。

**Rio** [10:54]
好吧 ， 我看到这主题第一反应是程序员该怎么找女朋友 。

**吴涛** [10:57]
哈哈哈 。

**Rio** [11:00]
没有 ， 上次就是因为 Rio 不在嘛 ， 然后吴涛自己一个很怨 ， 很怨恨的自己就录了一期叫编码 ， 对吧 ？ 然后就是唯一一期就是 ， 呃 ， 和字比较有关系的一期节目 ，但是就自己一个人录的很不爽 ， 看起来 。

**吴涛** [11:15]
其实我们之前讲过编程字体的 ， 那 ， 那一期算是非常和 Typography 有点关系的主题 。

**Rio** [11:23]
不过那个时候还没有你们呢 。

**吴涛** [11:25]
好好好 。

**Rio** [11:25]
哈哈哈 。 所以嘛 ， 就是还 ， 呃 ， 程序员也要关心字体的 ， 那做字的呢 ，也要知道程序应该怎么运行嘛 。

所以呢 ， 我觉得咱们的串台是非常有意义的呀 。

**吴涛** [11:35]
嗯哼 ， 嗯 ， 的确 。

**Rio** [11:38]
那就串起来喽 。

**吴涛** [11:40]
好 。

**Rio** [11:42]
基本上今天咱们第一次串嘛 ， 那咱们就从头到尾先简略的都把从头一个过程先说完 ， 然后呢 。

**吴涛** [11:50]
留下无数大坑 。

**Rio** [11:51]
坑就挖 。

**吴涛** [11:52]
哈哈哈 。

**Rio** [11:53]
以后慢慢填呗 。

**吴涛** [11:55]
哈哈哈 。

**Rio** [11:55]
好吧 。 免得以后没有主题 。

**吴涛** [11:57]
嗯 。

**Rio** [11:58]
解决了 b，b 节目最大的问题 。

**吴涛** [12:02]
我们现在是选题过深的怎么办 ？

**Rio** [12:05]
我们是选题过深 。

**吴涛** [12:05]
换不寡 ， 换 ，不换寡 ， 换不均嘛 。

**Rio** [12:09]
哈哈哈 。

**吴涛** [12:10]
你们把那个和技术有关的主题给我们圆一半好了 。

**Rio** [12:15]
哈哈哈 。 好 ， 那努 ， 你们的努力多说一点呀 。

**吴涛** [12:19]
呃 ， 或者可以这样吧 ，Rio 给你们 ， 然后把争议给我们 。 我们两个 ， 我们两个可以 。

**Rio** [12:25]
哈哈哈 。

**吴涛** [12:26]
嗯 ？

**Rio** [12:28]
怎么一回事 ？ 为什么会这样 ？

**吴涛** [12:30]
物 ， 物交换是吧 ？

**Rio** [12:32]
换搭档俱乐部有那么 。

**吴涛** [12:34]
人人交换 。

**Rio** [12:36]
贵权争乱 。

**吴涛** [12:37]
对 。

**Rio** [12:37]
Partner exchange。

**吴涛** [12:39]
听起来毫无违和感 。

**Rio** [12:40]
哈哈哈 。

**吴涛** [12:43]
更乱了 。

**Rio** [12:46]
好了 ， 我们这个少一点下三路吧 ， 先 ， 先 。

**吴涛** [12:51]
好像是我一直在下三路 。Anyway， 我们来 ， 来一点 ， 先来一点底层的东西 。

**Rio** [12:56]
因为大家一开始就打开电脑是打字嘛 ， 这个字打到电脑里面去 ，其实是什么样的过程 ， 对吧 ？

### 键盘布局

**吴涛** [13:04]
呃 ， 对 ， 就我们可以从 ， 我觉得可以先讲一下历史渊源 ， 就是世界上为什么有这么多种键盘布局 ， 为什么 ， 就可能在中国待久了 ， 你会觉得 ， 你会有一种 ， 呃 ， 想象 ， 就是可能全世界的键盘长 ， 长得都这个样子 ，但实际上不是这样的 。

嗯 ， 尤其是在日本的朋友们可能会觉得我靠 ， 日文键盘实在是太复杂了 。 我第一次见到日文键盘真的有点为震惊 ， 就是你能讲一下就是日文键盘上有一个键叫做转换 ， 非转换是干嘛的吗 ？

**Rio** [13:40]
对 ， 我 ， 我到现在也不懂 。

**吴涛** [13:42]
What？

**Rio** [13:44]
因为我一般都不去用那个键 ， 那那个 ，而且是那个 Windows 的标准是那样的 ， 然后 Mac 是不用的 。

**吴涛** [13:51]
哦 ，Mac 上没有转换非转换这个键 。

**Rio** [13:54]
对 。

**吴涛** [13:54]
嗯 。

**Rio** [13:55]
而且就是因为他们日文的键盘 ， 它除 ， 它还有那个假名输入的键位 ， 所以它一个键帽上面会有时候 ，有时候会多打四五个字 。

它一个键帽上要印四五个字 ， 所以那个键 ， 日文的键面特别特别花 ， 然后键位又不一样 。 所以 ， 呃 ， 还好在日本买 Mac 的话它是有选择的 ， 然后我在日本买呢 ， 我都会选择选择那个美国的键盘 。

**吴涛** [14:19]
US layout。

**Rio** [14:19]
要不然的话我都疯掉了 。

**吴涛** [14:21]
嗯哼 。

**Rio** [14:21]
对 ， 呃 ，因为我之前在德国也 ，也有提到 ， 我们之前在那个 《 内核恐慌 》 也提到过这一期嘛 ， 就在德国的时候 ， 那个德国的键盘也是挺奇怪的 ，不是那种标准的美国键位 ， 就国内用那种哈 。

然后当时我也是在德国待的时候 ， 为了买那个美国键位的 ， 还专门需要订 ， 就是要 ， 要特殊订一个单 ， 然后等它送过来 。

然后在日本的话 ，因为现在海淘也比较方便嘛 ， 很多人也去日本买这个电脑啊 ， 笔记本啊之类的 ， 好像也有经常我看到有人买到一个那种日文键盘的笔记本回来 ， 就用起来挺不方便的 。

**吴涛** [14:56]
嗯哼 ， 对的 。 嗯 。

**Rio** [14:58]
呃 ，其实我们刚才谈到的这三种布局 ， 就是世界上最主流的三种布局了 。 一种是国内的所谓 ，其实就国内这个键盘布局是以北美为主的 ， 呃 ， 一个布局叫做 ANSI，ANSI 布局 。

然后它最大的特点其实就是那个 Return 键是一个扁平的长条 ， 呃 ， 它只是比别的键宽一点 。 然后在德国 ，Rio 提到这种键盘是所谓 ISO 键盘 ， 就是国际标准化组织 ， 呃 ， 规定的键盘 。

比如说不一定只有德语用 ， 呃 ， 法语 ， 包括英国其实也在用这种 ISO 制式的键盘 。 它好像要比 ANSI 多出一个键来 。

然后它最大的特征是那个回车键是一个倒 L 形 。 然后日本的 ， 日本的这个标准当然就叫做 ， 应该是 JIS 标准吧 ， 就是 Japanese Industrial Standard 标准 。

然后它也是一个 ， 好像也是一个倒 L 的键盘 ，但是它的键还要比 ISO 多出来一个 ， 如果没有记错的话 。

**吴涛** [16:05]
还要多 。

**Rio** [16:05]
对 ， 对 ， 还要多 。

**吴涛** [16:08]
嗯 。

**Rio** [16:08]
所以在日本的话 ， 就是普通的日本人他们是用什么 ， 用那个日文键盘吗应该 ？

**吴涛** [16:14]
呃 ， 就是 ， 呃 ， 键位是差不多的 ， 呃 ， 日文键盘和美国键盘 ，他们 ， 呃 ， 就是也是用这个 QWERTY 嘛 。

**Rio** [16:21]
嗯哼 。

**吴涛** [16:21]
嗯哼 。

**Rio** [16:22]
呃 ， 就是在英文字符的键位是和美国键位是一样的 。 然后呢 ， 就是什么后面那些括弧啊那些那个位 ， 那位置的安排是不一样的 。

然后绝大多数的日本人现在都使用他们罗马字拼音进行输入 。 虽然日本键位也 ，也支持 ， 就是他们直接的那个叫假名输入法 ， 就是摁一个键就可以输入一个假名。

**吴涛** [16:45]
嗯哼 。

**Rio** [16:46]
有这样的输入法 。

**吴涛** [16:47]
嗯 。

**Rio** [16:47]
哎 。

**吴涛** [16:47]
但是我见 ， 我见过的就是活人， 我见过这么多日本人， 只有 ， 尤且只有一个人是用那样的假名直接输入的 。

因为他要去背那个假名放在 ， 放在哪个键位嘛 。

**Rio** [17:00]
哦 ， 所以原来日本人现在已经不用假名输入 。

**吴涛** [17:04]
就跟那个书五笔差不多嘛 。

**Rio** [17:06]
呃 ， 应该说跟注音符号差不多 。 就用假名输入的人跟台湾用注音符号输入的人差不多 。

**吴涛** [17:13]
啊 。

**Rio** [17:14]
但是 。

**吴涛** [17:14]
对 ，他们就是把这每个假名分配到这个键位上面去 。

**Rio** [17:18]
对 。

**吴涛** [17:19]
哎 ， 那不够分吧 ？

**Rio** [17:21]
对啊 。

**吴涛** [17:21]
够的 。

**Rio** [17:21]
他把它输入进去 。

**吴涛** [17:22]
就是会有重复嘛 。

**Rio** [17:23]
都用到 。

**吴涛** [17:24]
嗯 。

**Rio** [17:24]
啊 。

**吴涛** [17:24]
假名应该有多少格 ？

**Rio** [17:25]
然后还有在 。

**吴涛** [17:26]
50。

**Rio** [17:27]
50 音图嘛 。

**吴涛** [17:28]
50 音图有 50 个 ，但是 。

**Rio** [17:30]
实际上常用的不到 50 个 。

**吴涛** [17:31]
嗯 ， 就 40 多个嘛 。

**Rio** [17:32]
那也不够啊 。

**吴涛** [17:33]
然后它还有平假名 ， 还有片假名 ， 它就所以还有什么什么键啊之类的组合 。 对 ， 没错 ，是的 。

**Rio** [17:39]
你键 ， 普通键盘上你加上英文 26 个加 10 个数字也才 36， 再加一堆符号 ，不到 50 啊 。

**吴涛** [17:48]
呃 ， 差不多够 。

**Rio** [17:49]
呃 ，40 多个嘛 。

**吴涛** [17:50]
就它把那个 。

**Rio** [17:50]
它就是有组合 。

**吴涛** [17:51]
它把那个什么 ， 呃 ， 冒号啊 ， 右括号啊 ， 呃 ， 逗号啊 ， 大于号小于号全都占了 。

**Rio** [17:58]
对 。

**吴涛** [17:59]
哦 ， 差不多 ， 这里有 10 个 ， 那刚好 。

**Rio** [18:02]
对 。

**吴涛** [18:02]
所以特别花 。 大家如果去看那个日文的 JIS 键盘标准的话 ， 就它那个键帽上面特别花 ， 写满了字 。

**Rio** [18:09]
然后我记得好像有些还是写在侧面的 ， 就那个如果键是比较那种高的 ，不是那种现在所谓巧克力键盘 。

**吴涛** [18:15]
真的吗 ？ 那谁 ， 谁是 KB 嘛 。

**Rio** [18:16]
没有 ， 那个是法 ， 法语键盘嘛 。 法文键盘就是 ， 嗯 ， 就法文键盘呢 ， 它们数字 ， 数字的话 ， 默认的话它们是打 。

**吴涛** [18:23]
输入符号 。

**Rio** [18:25]
按声调的符号 ， 然后要按 Shift 键才能打出数字嘛 。 然后有的时候还要必须按左 Alt 还是什么 。

**吴涛** [18:32]
右边的 Alt。

**Rio** [18:33]
啊 ， 对对对 。

**吴涛** [18:34]
右边的 Alt。

**Rio** [18:35]
右边叫 Alt Graphic， 就是你要打出一些图像符号的时候要按 。

**吴涛** [18:41]
所以才会扭曲的出现那种二次进制的计数原则嘛 。

**Rio** [18:45]
哈哈哈 。

**吴涛** [18:47]
不要再黑法语的数字了 。

**Rio** [18:50]
哈哈哈 。 好吧 。 那 ， 那所以其实在日本工作的程序员 ，他们用这个日文键盘输入的话会有 ， 就是比如说编程哈 ， 会有障碍吗 ？

**吴涛** [19:01]
会 ，因为就像我到现在为止有时候还会找不到键位 。 而且呢 ， 像在美 ， 就是尤其是那些符号类的 ， 呃 ， 然后像括 ， 括弧的话 ，在美国括弧 ， 美国键盘上面括弧都是左右对称的嘛 。

**Rio** [19:15]
对 ，9 和 0 嘛 。

**吴涛** [19:16]
一对一对的嘛 。 但是在日文键盘的话 ， 它那个中括号它是上下的 ， 就不是左右相邻着的 。

**Rio** [19:22]
OK。

**吴涛** [19:23]
所以有时候就 ， 就摁的会比较麻烦 。 嗯 。

**Rio** [19:26]
哦 。

**吴涛** [19:26]
然后还有一些很坑爹的 ， 就是当年早期 JIS 把 ASCII 转过来的时候 ， 它把那个日元符号和仿 ， 呃 ， 它把反斜杠的那个码位换上了日元符号 。

**Rio** [19:39]
嗯哼 。 天呐 。

**吴涛** [19:41]
这 ， 这是一个啊 。

**Rio** [19:42]
对 。

**吴涛** [19:42]
OK， 明白了 。

**Rio** [19:43]
但你不觉得 Rio 这解决了一个童年的疑惑吗 ？ 就是有时候你有 ， 你小时候玩日文游戏的时候 ， 它的那个路径分隔符是一个印的符号 。

**吴涛** [19:53]
对 ，在 Windows 他们的那个路径默认是用反斜杠嘛 。

**Rio** [19:57]
对 。

**吴涛** [19:57]
所以在当年早期的那个 Windows 的日本版的时候 ，他们路径就是一大堆的日元符号 。 好多钱 。

**Rio** [20:04]
哦 。

**吴涛** [20:05]
哈哈哈 。

**Rio** [20:06]
好吧 。

**吴涛** [20:06]
不过日元也不值钱 。

**Rio** [20:08]
它其实是公用了一个什么编码 ，是这样子 。

**吴涛** [20:11]
对 ， 它用 。

**Rio** [20:11]
就是它当时把 ASCII 拿过来的时候 ， 把 ASCII 的那个反斜杠的那个码位把它给它换成那个日元符号了 。

**吴涛** [20:21]
嗯哼 。

**Rio** [20:21]
那应该是编码没有编正确 。

**吴涛** [20:24]
这不是一个正不正确的问题 ， 就是你那个时候日文只支持假名和 26 英文字母 ， 所以如果你要把 5， 呃 ， 你要把 256 个字符用上的话 ，其实是完全够的 。

就是日语在当时不支持汉字 ，但是支持所有的平假名和片假名 ， 然后可以全都压缩在 256 个字符里面 。 然后 。

**Rio** [20:46]
它也是 8 位喽 ， 它不是 7 位嘛 ， 就是那个 8 bit 的编码 。ASCII 是 7 位 。

**吴涛** [20:52]
啊 ， 对 ，ASCII 是 ， 对 ，ASCII 是 7 位 。 然后它就相当于这是那个日本的西欧扩展嘛 ， 西欧扩展就是在 。

**Rio** [21:00]
对 。

**吴涛** [21:00]
西欧的东西扩展 ， 就是把第八位用上 。 对 ， 然后日语 ， 日本当时决定使用一个最不常见的符号来替换掉 ， 替换成印的符号 ， 就把反斜杠给替换掉 。

因为反斜杠实际上在日常生活中是非常非常少见的 。

**Rio** [21:17]
就除了 Windows 在用吗 ？

**吴涛** [21:19]
呃 ， 就除了编程需要接触到 ， 基本上日常生活里面没有一个地方用到反斜杠 。

**Rio** [21:27]
没有啊 ， 编程在反斜杠里面 ， 就是哪个语言里面你想到用反斜杠的 ？

**吴涛** [21:33]
反斜杠不是转义符吗 ？

**Rio** [21:36]
呃 ， 对啊 ，但这个 。

**吴涛** [21:38]
它不是 ，不算常用吧 ， 就写转义符的时候 。

**Rio** [21:41]
转义符不常用吧 ， 我去还能成 。

**吴涛** [21:44]
OK。

**Rio** [21:45]
然后就是 Windows 的路径了嘛 。

**吴涛** [21:47]
对 ， 那应该是这样 ， 没错没错 。

**Rio** [21:49]
嗯嗯 。 然后我那时候就开玩笑嘛 ， 我在校上海地铁的他们公共标志的时候 ， 比如几号线或者几号线 ，他们用的是反斜杠嘛 。

**吴涛** [21:58]
What？

**Rio** [21:59]
就对 ， 上海的那个地铁 ， 比如说此处转 2 号线或 3 号线 ，2-3 的时候 ， 它用的是反斜杠 。 就整个上海 ， 全上海的地铁线路 ，他们的那个指示系统都是这么用的 。

所以我那时候我就笑嘛 ， 我那时候贴出去的时候 ， 我把这张照片给美国人看 ， 啊 ， 给日本人看 ， 然后我说这是我在现实生 ， 呃 ， 生活中第一次看到反斜杠如此大量的使用 。

然后日本人就笑得不行了 。

**吴涛** [22:23]
哎 ， 真的 ， 这 ， 这好像绝无前有人是这么 。

**Rio** [22:27]
对啊 。

**吴涛** [22:28]
对 。

**Rio** [22:28]
他可能是个左撇子 。

**吴涛** [22:30]
哈哈哈 。

**Rio** [22:35]
但是 。

**吴涛** [22:35]
太奇怪了 。

**Rio** [22:36]
但中国的左撇子好像小时候会很惨 ， 会被逼着用右手写字 。

**吴涛** [22:40]
会被作为另类嘛 。

**Rio** [22:41]
啊 ， 我就是这样 。

**吴涛** [22:41]
强行纠正 。

**Rio** [22:42]
哦 ， 钱正宇是左撇子啊 。

**吴涛** [22:45]
呃 ， 我应该是 ，但是我很小就被很多的调整过了 。

**Rio** [22:50]
OK， 所以你现在是 。

**吴涛** [22:51]
所以我也搞不清楚究竟是左右都行呢 ， 还是纯左 。

**Rio** [22:55]
你现在是双巧手是吧 ？ 就是 。

**吴涛** [22:58]
没有 ， 就右边稍微顺一点 ， 左边还是能干很多比较需要力量的事情 。

**Rio** [23:03]
哦 ， 你居然能训练成右手比左手灵活 ， 这个实在是太天呐 。

**吴涛** [23:10]
这不是压抑人性吗 ？

**Rio** [23:11]
这不是 。

**吴涛** [23:12]
哈哈哈 。

**Rio** [23:12]
好吧 。

**吴涛** [23:14]
还是刚才说到 ， 呃 ， 说到左右的键位的问题的话 ， 像韩文 ， 嗯 ， 韩语他们的键在分配键位的时候 ，他们就是左右搭配的 。他们把 ，他们把辅音全部分配在左手 ， 然后元音全部分配在右手 。

所以在他们在打韩文音节的时候 ，他就辅音元音互相搭配 ， 肯定是左右这样搭配的 。

**Rio** [23:34]
那不效率很高了 ， 这样 。

**吴涛** [23:35]
左右左 ， 左右左 ， 应该差不多 。

**Rio** [23:38]
对 ， 对 。

**吴涛** [23:39]
嗯 ， 所以其实这个键位映射的时候 ，其实分配啊 ， 还是很需要一些技术的 ， 要不然的话到时候打字就很 ， 很 ， 很痛苦 。

**Rio** [23:47]
哎 ， 中文那个五笔分配的时候有什么讲究吗 ？ 好像也忘了 。

**吴涛** [23:52]
没有 ， 中文五笔就是从那个那些字根 ， 从 QWERTY 这么分出来的 。

**Rio** [23:57]
就没有什么讲究左右分布的这种问题 ？

**吴涛** [24:01]
没有 ， 它就直接 。

**Rio** [24:02]
好像还是有 ，有一些的 。

**吴涛** [24:04]
你确定吗 ？

**Rio** [24:05]
我记得好像是中间区域是比较常用的一些偏旁 。

**吴涛** [24:08]
就是还是离 ， 离那个 Hong Kong 最近的是最 ， 最高频的嘛 。

**Rio** [24:13]
嗯 ， 对对对 。

**吴涛** [24:14]
然后还有一个通配符是 Z 是吧 ？

**Rio** [24:16]
对 。

**吴涛** [24:16]
那 Z 什么都没有吗 ？

**Rio** [24:17]
那个是 。

**吴涛** [24:18]
有个通配符吗 ？

**Rio** [24:19]
嗯 ， 没错 。

**吴涛** [24:21]
行 ， 咱们是不是要整理一下呀 ？ 就是说从键盘 ， 然后键位 ， 然后这个键位的映射 ， 这三个不同的东西 ， 大家都应该再先整理清楚才对 。

**Rio** [24:32]
OK， 呃 ， 首先键位 ， 先 ， 先说布局吧 。 就是 ， 呃 ， 键盘 ， 我们接触到键盘有实体布局 ， 就是所谓实体布局 ， 就是你看到的这个键上面印着什么样的字母 ，以及这个键每个键的位置和形状是什么样的 。

这个基本上是 ， 呃 ， 各个国家民族文化传统的一部分 。 就是当他们西方国家出现打字机的时候 ， 每个国家的这个打字机的键位都是不一样的 。

然后这个传统基本上就延续到了电脑时代 。 当然有些国家因此就被坑了 ， 比如说我记得好像是波兰的键盘分为两种 ， 一种是 ， 呃 。

**吴涛** [25:12]
对 。

**Rio** [25:13]
一种是北美传过来的 IBM 兼程机时代的键盘 ， 另一种是他们自己的那个波兰语键盘 。 然后波兰语键盘就非常非常的坑爹 ， 所有的程序员都选择使用 ， 呃 ， 美 ， 这个英语布局的键盘 。

呃 ， 然后

除了实体布局之外， 还有所谓的功能布局 ，functional layout。 然后这个这一层布局是大部分时候 ， 对于大部分人， 对于这个世界上 90%，99% 的人来说 ， 如果你不是程序员 ， 然后你也对英语键盘没有特别的偏爱的话 ， 基本上， 呃 ， 功能布局就是你的实体布局 。

就是你按下那个键帽上写的反斜杠键 ， 可能在你屏幕上就应该出现反斜杠 。 但是 。

**吴涛** [25:55]
就是对等的 。

**Rio** [25:56]
嗯 ， 对 ，但是在其实在几乎每个操作系统里面 ， 呃 ， 它都支持把你的实体布局映射到另外一个别的功能布局 。

也就是你对于中文用户来说 ， 就是你在中文输入法和英文输入法之间切换的时候 ，其实 ， 呃 ， 理论上是切换了一个功能布局的 。

只不过对于拼音输入法来说 ， 除了功能布局之外， 上面还有一层输入法 。 然后但是对于其他语言的人来说 ， 比如说当我在一个德语键盘上编程的时候 ， 呃 ， 如果我觉得这个布局实在是太坑爹了 ， 那我可以选择说 ， 呃 ， 让操作系统把功能布局设定为英文 。

这样当我在按 ， 比如说德语的那个 ö， 就是 o 上的加两点的这个键的时候 ， 它会变成分号 。 呃 ， 这个会省一部分 ，是 ，但是有些键的位置还是不一样的 。

比如说那个反斜杠在英文布局上应该是在 enter 键的上面 ，但是在德语键盘上， 反斜杠还是在左边的 shift 的右边 。

然后就是 ， 就你可以改功能布局 ，但是实体布局还是会限制这个功能布局到底能改成一个什么情况 。

**吴涛** [27:06]
嗯哼 。 因为实体布局和你的物理上面你看到的键 ， 键帽上面印的那个字是一样的嘛 ， 所以那还好一点 。

但是当你改完功能布局的时候 ， 就是你 ， 你实际上摁的那个键和键帽上面那个字是不一样的 ，因为你功能布局改掉了嘛 。

**Rio** [27:21]
所以我突然理解一件事 ， 那个 HTCKB 从日本出来是有道理的 。

**吴涛** [27:28]
哈哈哈 。

**Rio** [27:29]
无坑键盘其实在 HTCKB 之前就有 ，但那个好像也是一个 ， 呃 ， 应该也是个 ANSI 的键盘 。 对 ，但 HTCKB 的确是无坑键盘里面最 ， 最知名的一个应该是 。

**吴涛** [27:45]
嗯哼 。 就你那款是无坑的吧 ， 吴涛 ？

**Rio** [27:48]
那当然了 ， 就我这样我就不用发愁到底是德语还是英语 。

**吴涛** [27:53]
哈哈哈 。

**Rio** [27:55]
对 ， 就是说只要键帽上没有刻字之后嘛 ， 就你就可以随意的去调整你的那个键 ， 那个键位映射 ， 这样你就不 ， 就是你可以忽略掉这个 ， 这什么实体键位和实体那个系统里面键位的这个差异了嘛 。

**吴涛** [28:10]
但换句话说 ， 作为一个强迫症 ， 你会活得稍微舒服一点 。

**Rio** [28:14]
你打个岔一个事 。

**吴涛** [28:15]
那你可以把它的键帽拔下来交换一下位置 。

**Rio** [28:18]
哈哈哈 。

**吴涛** [28:19]
我就是这么干的 。

**Rio** [28:20]
但是它变不出来 。

**吴涛** [28:21]
我在 ， 我在用一款带刻印的 HTCKB， 我把那个 ESC 键和最右边的那个 ， 那个叫什么键 ， 那个一个点 。

**Rio** [28:28]
To， 呃 ，back，back test。

**吴涛** [28:30]
对 ， 就把那两个位置换一下 。

**Rio** [28:32]
哈哈哈 。

**吴涛** [28:34]
天 ， 这纯手工 。

**Rio** [28:36]
嗯 。

**吴涛** [28:36]
哎 ， 那我不知道你们实际上， 呃 ， 实际有没有遇到过就不用这个 QWERTY 布局的 ， 用过那个什么德沃夏克那个布局的那个 。

**Rio** [28:45]
我没有 。

**吴涛** [28:46]
呃 ， 我 ， 我有一个 ， 我的同事在用 ， 或者说我的直属 team leader 在用德沃夏克布局 。

**Rio** [28:52]
嗯嗯 。

**吴涛** [28:55]
呃 。

**Rio** [28:55]
我觉得他们就是特别特别惨 ， 会吗 ？ 就是每次他自己用他自己设备的话 ， 好啊 ， 就是他要用别人设备 ，他每次都得换还是干什么 ，他还是得强迫的去 。

因为这个世界上毕竟 QWERTY 比较多嘛 。

**吴涛** [29:08]
呃 ， 我觉得德沃夏克并没有坏到哪去 ， 说实话 。 但 。

**Rio** [29:12]
我觉得也是啊 ， 这个习惯问题估计是 。

**吴涛** [29:15]
不是 ， 如果说你 ， 你 ， 你 ， 我们认同那个说 ， 呃 ， 高频键要离 hong row 比较近的话 ，其实应该就是德沃夏克他的一个逻辑就是这样 ，他的高频键比较好嘛 ， 就是他分布从 ， 从那个概统计概率上来讲 ， 比较高频率的集中在那个 hong row 附近嘛 。

然后 。

**Rio** [29:35]
但是这个高频键是跟和语言相关的 。

**吴涛** [29:38]
没错 ， 跟语言相关和你的这个打的文本相关的 。 所以理论上应该是用一个无刻印的键盘 ， 然后分析你打过的所有的那个 ， 这个就是击键历史 ， 然后重新统计一下这个频率 ， 然后再来排一个适合你的这个 layout。

**Rio** [29:55]
对 ， 你的 ， 你的专属 layout。

**吴涛** [29:56]
好吧 。

**Rio** [29:57]
从你的专属 ， 从你的专属字体到你的专属输入法 ， 然后现在 。

**吴涛** [30:01]
然后就是每个人都有自己的键位 ， 这个就傻掉了 ， 没法通用 。

**Rio** [30:09]
如果大家对这个键 ， 呃 ， 功能布局是不大熟悉的话 ， 如果 ， 呃 ， 大家可以其实到操作系统上看一下哈 ，在键盘的那个属性上面 ， 它有各各种文字 ， 然后呢 ， 它有各种各样的那个 ， 可能如果不注意这个功能的朋友 ，他们从来就没有见过其他布局 。

所以呢 ， 去看一下那个 ， 那看那个设置一下就可以知道 ， 非常有意思 。

**吴涛** [30:30]
Windows 有吗 ？

**Rio** [30:32]
都有 。

**吴涛** [30:32]
呃 ，也有 ，也有 ，有 ，有 。

**Rio** [30:34]
有的 。

**吴涛** [30:35]
反正是在如果你在 OST 里面那个改变那个输入源的名称的时候 ， 它会给你一个那个这个输入源看起来的键盘的布局大概是什么样子 。

**Rio** [30:46]
对 ， 它直接会把那个那个键盘的显示出来 ， 对吧 ？ 连那个键位都会显示出来 。

**吴涛** [30:51]
它好像 Windows 有吗 ？

**Rio** [30:53]
Windows 在那个输入法里面也可以调 ，但是挺麻烦的 。

**吴涛** [30:57]
但是它会不会显示这个键位 ？

**Rio** [30:59]
好像没有键位预览吧 。

**吴涛** [31:01]
啊 ， 这个 ， 这个没有了 。

**Rio** [31:02]
对 。

**吴涛** [31:02]
嗯 ， 键位预览应该是只限于系统自带的那些输入法 。

**Rio** [31:07]
不是 ， 就是在键位预览 ， 首先你得先和你的那个键盘的那个形状要保持一致嘛 。Windows 那么多奇形怪状的键盘 ， 它可能没法做预览吧 。

**吴涛** [31:18]
OK。

**Rio** [31:18]
啊 ， 好吧 ， 原来坑在这 。

**吴涛** [31:20]
不是 ， 你看那个 OST 里面的那个键位预览 ， 它其实画的是一个标准的这个 ， 就 Mac 蓝牙键盘的那种 ， 那种 ， 那种结构嘛 。

**Rio** [31:29]
嗯哼 。

**吴涛** [31:29]
就以你现在使用的那个 ， 这个我现在是用 MacBook 嘛 。

**Rio** [31:34]
对 。

**吴涛** [31:34]
MacBook Pro 嘛 。 你我现在的这个键位为基础的映射 。

**Rio** [31:38]
哎 ， 吴涛你要可能看一下， 你看一下你 ， 你先 ， 你是买了一块那个叫什么 ， 最新的那个蓝牙 ， 蓝牙键盘是不是 ？

**吴涛** [31:44]
我买的这块键盘是英语布局 。

**Rio** [31:46]
不不 ，但是就是是 ，是最新的 ，不是那个插电池的 ，是自带电池的那个是吧 ？

**吴涛** [31:51]
对 ， 没错 。

**Rio** [31:52]
然后你看一下那个键 ， 键位预览里面它的那个方向键是什么形式 ， 倒 T 字形吗 ？ 还是怎么样 ？

**吴涛** [31:58]
啊 ， 没错 ，是两个被缩小的键 ， 所以它就是使用我当前这个键盘 。

**Rio** [32:03]
的确 。 嗯 。

**吴涛** [32:05]
OK， 然后就 。

**Rio** [32:06]
它只要是自己自己的东西的话都是那样的 。

**吴涛** [32:09]
没错 。

**Rio** [32:09]
嗯 。 哎 ， 等一下， 好像有个不一样 ，在现在最新的那个自带电池的 ， 就内置电池的那个苹果蓝牙键盘的那个方向键的左右是全高的了 ，不是半高的了 。

**吴涛** [32:20]
是全高的 ，是全高的 。 我在这个键盘搜略图上看到的也是全高的 。

**Rio** [32:24]
对 ，但我看到的 ，因为我是那个是上一代的嘛 ， 我看是半高的左右键 。

**吴涛** [32:29]
就是它很 。

**Rio** [32:30]
跟你说啊 ， 当前设备的样子画出来了 。

**吴涛** [32:34]
对啊 。

**Rio** [32:34]
就没有发现那个细节 ， 这个可以给果粉 ， 果粉们去吹一下 。

**吴涛** [32:39]
可以发给那个什么 ， 呃 。

**Rio** [32:40]
你说 。

**吴涛** [32:41]
Tiny little 什么 little detail 什么 ， 那个 ， 那个网站叫什么来着 ？

**Rio** [32:45]
不知道 。

**吴涛** [32:46]
有 ，有个网站专门去去搜集这种设计上这么小心思 。

**Rio** [32:50]
OK。

**吴涛** [32:52]
所以就是苹果它能做预览 ， 就是因为它知道你接入的是哪个设备嘛 ， 然后它知道那个设备的这个键位的实际的布局 ， 然后再给你叠上去 ， 你会觉得没有什么意外嘛 。

**Rio** [33:03]
嗯哼 。

**吴涛** [33:04]
对 。

**Rio** [33:04]
所以这个时候我想起那些 ， 就是现在不是有一些游戏键盘上面它是那个那个键帽 ， 它没有刻字 ， 它是一个 ， 它是一个小的 LED 屏幕嘛 。

**吴涛** [33:14]
哦 ， 之前叫什么 ， 呃 ， 叫一个很高大上的名字 ， 什么 Prime Optimus 之类之类的一个 。

**Rio** [33:20]
反正就这类 ， 就它每每个等于是每个按键的就是一个小屏幕 ， 它可以你可以根据编程的方式改变它上面显示的内容 ， 这样就解决了刻印 ， 呃 ， 没法变换 ，但是没有刻印有时候又看一下不方便的难题嘛 。

**吴涛** [33:34]
对 ，而且那个键盘是彩色的 ， 然后可以 ， 比如说你在用 Photoshop 的时候 ， 直接在那个键上显示这对应于 Photoshop 的哪个功能 。

**Rio** [33:43]
对对对 ， 没错 。 还有或者是一个缩略图之类的 ， 挺帅气的 。

**吴涛** [33:48]
对 ，但后来我记得那个键盘只是量产的 ，其实定 ， 呃 ， 限量版的就大概出了 1,000、2,000 副这样 。

**Rio** [33:55]
太贵了吧 ？ 你每个键盘都要做一个小屏幕 ， 每个键 ， 每个按键都做小屏幕 ，其实挺麻烦的 。

**吴涛** [34:02]
好 ， 我觉得我们有点朝这个键盘恐慌的 。

**Rio** [34:06]
没有 ，但这个是 ， 这个是一个 ， 呃 ， 文字输入的基础哈 。 刚才说了一些我们都是讲的实体的键盘怎么样 ， 那你们有想过在那个现在触屏上那个软键盘是不是就没有这个问题了 ？

**吴涛** [34:17]
对 ，其实对 ， 软键盘其实要比实体键盘简单很多 。 它 ， 它只是一个在 ，在或者说是在实现原理上要简单很多 。

它不需要 。

**Rio** [34:26]
就它不存在那个键盘的什么 ， 那个叫扫描码是不是 ？ 我一直没有理解这个概念到底怎么一回事 。

**吴涛** [34:32]
嗯 ， 没错 。

**Rio** [34:33]
对啊 ， 你们把扫描码这个东西跟大家解释解释 。

### 扫描码

**吴涛** [34:36]
啊 ， 好吧 。其实键盘本身是一个非常复杂的数码转换系统 ， 就是你 ， 呃 ， 把魔术转换系统应该叫 ，其实每一个键盘都是一台非常小的计算机 ，因为每一个键盘在 ， 尤其是 USB 键盘 ，在这个按下键之后把会需要一个芯片把按下的键的电信号转化成计算机能懂的一个码 ， 然后这个码就叫扫描码 。

它为什么叫扫描码 ？ 就是因为 ， 呃 ，在键盘里面的这颗芯片 ， 它所做的事情就是 ， 呃 ， 去扫描一个 ， 呃 ，是 8 乘多少的网格 ， 然后， 呃 ， 所谓扫描 。

**Rio** [35:19]
它的确就是网格吧 ， 横横纵多少列 ， 对吧 ？ 就是那个网格 。

**吴涛** [35:23]
对 ， 我忘了具体的数字 ，但是基本上就是先 ， 呃 ， 先看第一排 ， 然后第一排把每一列扫一遍 ， 然后看第二排再把每一列扫一遍 ， 然后这个扫描速度非常非常快的 ， 像电视一样 ， 呃 ， 你在你以为自己同时按下了两个键 ， 然后计算机上也说好吧 ， 你同时按下两个键 ，但实际上这个过程是 ， 呃 ， 它看先看第一排的第六个第六列 ， 然后被按下了

， 然后它扫描到第二排的第七列 ， 发现也被按下了 ， 然后它会说好 ， 呃 ， 这个用户同时按了两个键 ，但实际上这一切都是顺序发生的 ， 然后这个过程就叫做扫描 ， 然后这个过程扫下来的一个位置会被转化成一个操作系统可以懂 ，不是操作系统可以懂 ， 呃 ， 主板可以懂的电讯号 ， 然后这个电讯号本身就叫做扫描码 。

呃 。

**Rio** [36:14]
而且很关键就是在这个程 ，在这个步骤的时候还不知道是什么字 ， 只是这个位置的那个点阵位置的那个键被按下去 ， 这个信号被传过去了 ， 对吧 ？

**吴涛** [36:25]
对 ， 然后是由计算机操作系统来决定按下去的这个 ， 呃 ， 这个码到底代表什么字符的 。 这是 ， 这是 ， 这已经是一层映射了 ，其实就是就对于绝大 ， 对于绝大多数键盘来说 ， 呃 ， 这是有个标准的 ， 尤其是在 PS/2 时代 ， 就是我们的年龄小的听众可能没有见过 PS/2 是什么样的 ， 呃 ，PS/2 是一个看起来很奇怪的接口 ， 然后这个接口有一 ， 我当时应该是支持

三套不同的扫描码吧 ， 就是根据这个主板和操作系统要求 ， 呃 ， 它可以送三种不同的扫描码来 ，但是基本上后来就归一成一种了 ， 然后在这个扫描码里面我记得 ， 呃 ， 之前不是有什么 Control 改 ， 呃 ，Caps Lock 吗 ？

你要把 Caps Lock 改成 Control 键的话 ， 你要去在操作系统层层面 ， 尤其是在 Windows 里面 ， 你要把两个扫描码对换 ， 比如说 3A 代表 Control，1D， 这都是十六进制数字 ， 代表 ， 呃 ，Caps Lock， 然后你把这两个 ， 呃 ， 扫描码换一下， 你就会发现你按下去的那个 Caps Lock 变成了 Control，其实就是这么来的 。

但是后来到了 USB 时代 ， 嗯 ， 绝大部分的 USB 键盘都支持所谓 Human Interface Device Protocol， 然后在这个 Protocol 里面就规定了说在 USB 上传来一个什么样的信号 ， 呃 ， 对应于一个什么样的按键 ， 或者对应于一个什么样的扫描码 ， 呃 ， 这套扫描码跟 PS/2 时代是不兼容的 ， 呃 ，但是蓝牙键盘则直接就是把 USB 的这一套 HID 的编码 ， 呃 ， 用套用过去了 。

所以在某种程度上， 你的蓝牙键盘其实是一个 ， 是一个 USB 键盘 ， 就是在解码这一块是完全按照一个 USB 的 Human Interface Device 来解码的 。

大概就是扫描码的概念 。

**Rio** [38:21]
所以它的那个 ， 所以它的码位最最后就是传到主板以后， 然后再根据刚才说的那个键盘 ， 呃 ， 就是那个 Mapping， 然后再来让操作系统知道它打下去是什么字 。

**吴涛** [38:35]
对 ，其实操作系统决定说你按了这个键 ， 带对应了一个什么样的字符 。

**Rio** [38:40]
对 ，由操作系统来定 。

**吴涛** [38:42]
对 。

**Rio** [38:45]
好了 ， 我们终于可以把这个信息传到操作系统 。 那操作系统接下来做什么事情 ？

**吴涛** [38:51]
呃 ， 操作系统接下来要做的一件事情实际上是跟键盘扫描码没有太多的关联 ， 我应该这么说吧 。 就 ， 呃 ， 我们刚才介绍了说从键盘传一个字符到操作系统 ， 然后现在操作系统其实面临一个问题 ， 就是操作系统要把那个字符显示出来 ， 呃 ， 或者说要把它存在内存里面 ， 那这又因这又涉及到了另外一套编码的问题 ， 就是你以一个什么样的规则来告

诉一块 ， 呃 ， 内存里面的区域 ， 或者是一个硬盘上的一个 ， 呃 ， 小区域说我要把这个 A 存下来 ， 呃 ， 这个时候其实是涉及到了文字编码 ，但是文字编码跟键盘扫描码其实是完全不相干的 。

**Rio** [39:45]
对 ， 键盘扫描码就专门就是为了键盘嘛 ， 对吧 ？

**吴涛** [39:48]
对 ， 键盘扫描码是为了 ，是为了计算机知道用户按下了什么字符 ，但是接下来讨论这个文件编码则是要让计算机 ， 呃 ， 决定在存储某一个字符的时候 ， 呃 ， 应该把它存成什么样的形式 ， 或者说用用哪个数字来代表这个 ， 用用哪个数字来代表这个字符 。

对 ， 然后在早期也是有很多种字符存在 ， 比如说 ， 呃 ， 我记得 IBM 有一种自己的字符 ， 字 ， 呃 ， 自己的字符编码叫什么来着 ，Q 什么编码 ，但是基本上现在最通用的一个 ， 或者最最基本的一个编码叫做 ASCII 编码 。

### 字符编码

**吴涛** [40:35]
我相信可能很多朋友在学编程的时候都背过这个码表 ， 包括我也背过 ，但是我现在已经忘光了 。

**Rio** [40:42]
97 是什么 ？97 是什么 ？

**吴涛** [40:45]
97 好耳熟啊 ，97 可能是字母 B 吧 。

**Rio** [40:50]
哈哈哈 。 啊 ，是吗 ？ 不是 A 吗 ？

**吴涛** [40:51]
A 吗 ？ 我忘了 。

**Rio** [40:53]
97 是 A 吗 ？

**吴涛** [40:54]
就是当时就也是背了好几个 ， 就是最常见的 。 我只记得 65 是 A，但是 65 加大大小写好像 。

**Rio** [41:03]
大小写嘛 。

**吴涛** [41:04]
对 ，65 是大写的 A，但是 97 减 65 好像不是 。 哦 ， 对对对 ， 大写和小写之间还有一堆特殊符号应该 。

**Rio** [41:13]
有 ， 嗯 ， 所以不一样 。

**吴涛** [41:15]
啊 ，97 减 65 是 32， 所以那应该的确是小写的 A，因为它那个 ASCII 的码 ，ASCII 表其实设计的挺巧妙的 ， 就是你如果你遇到一个键盘 ， 如果你遇到一个码的话 ， 你把这个第五位如果是 0， 你把它变成 1， 呃 ， 就可以让它变成小写字母 。

这在当初的这个 ， 还在很多人还在操作比特时代的时候 ， 这是一个非常重要的 feature。

**Rio** [41:43]
啊 ， 没错没错 。 所以 ， 呃 ， 十进制 97 是那个 ASCII 的小写字母 A， 没错 ， 我查了 。

**吴涛** [41:49]
OK， 非常好 。

**Rio** [41:51]
还好我还好 ， 我说对了 。

**吴涛** [41:53]
哈哈哈 。

**Rio** [41:53]
好紧张 。

**吴涛** [41:55]
好紧张 。

**Rio** [41:56]
你们紧张什么 ？

**吴涛** [41:58]
这已经是 ， 对 ，其实计算机里面有非常多这种 ， 嗯 ， 背下来很屌 ，但是好像平时没有什么用处的知识 。

**Rio** [42:08]
对 ，其实没有什么卵用 。

**吴涛** [42:10]
对 ，有一本书 。

**Rio** [42:10]
还是有点用的 。 你你看那个 ， 呃 ， 你现在做很多这种网络协议的解解析的时候嘛 ， 你看到那个 ， 那个用那个十六进制 HEX 的方式表达的那个 ， 那个数据包的时候 ， 对吧 ？

你看到 ， 嗯 ，97， 马上要出那个 ， 你就知道后面是那个可能是一个 printable character， 就是有东西要写出来 。

**吴涛** [42:32]
97 是十进制 ， 你要你要先把十六进制背下来才行 。

**Rio** [42:37]
对啊对啊对啊对啊 ， 就你把 。

**吴涛** [42:38]
十六进制是 61。

**Rio** [42:41]
哈哈哈 。

**吴涛** [42:43]
好了 。

**Rio** [42:44]
我我们不要这么 hardcore 了吧 。

**吴涛** [42:46]
哈哈哈 。

**Rio** [42:47]
嗯 ， 好 。 但 ASCII 当然也是 。

**吴涛** [42:50]
肉眼解析乱码 。

**Rio** [42:51]
有一个这个八位和七位的问题 ， 就是我们一个 byte 是 256 个 ， 呃 ， 可能性嘛 ， 就八位的 ， 八个位的 bit，但 ASCII 只用了其中的七个位 ， 就顶着它那个高位其实还有点讲究的 。

**吴涛** [43:07]
对 ， 就因为还多出来这一位 ， 然后这一位最开始是为了扩展准备的吧 。

**Rio** [43:13]
对 ， 嗯 ， 然后 。

**吴涛** [43:15]
就很多拉丁文字都可以通过这一位的方法来把它们的一些 ， 呃 ， 就是字字母表的大部分表达出来嘛 ， 比如德文就是这样的方式来实现 ， 对吧 ？

**Rio** [43:26]
对 ，有一个 ，其实西欧所有语言都可以用这种方式来实现 。

**吴涛** [43:30]
就只要它不 。

**Rio** [43:31]
字符集叫做拉丁一扩展 。

**吴涛** [43:33]
对 ， 嗯 ， 只要不超过 。

**Rio** [43:36]
所有语言都 。

**吴涛** [43:39]
它有 ， 所以它的原理就是 ， 就是那一位是控制的吧 ？ 如果那一位控制的就是普通 ， 就落回到就是普通的 ASCII 这个原最原来这个码表嘛 ， 对吧 ？

**Rio** [43:48]
嗯 。

**吴涛** [43:49]
然后那位控控上去以后， 然后就可以扩展成其他各种 ， 那当年是各个国家还不一样嘛 ， 所以各种各样 ， 那刚才也说了嘛 ， 所以日本的话 ， 它就是把这个扩展为它当年的半角片假名。

**Rio** [44:04]
对 ， 片 ， 只有片假名。

**吴涛** [44:07]
而且只有片假名。

**Rio** [44:09]
OK， 半角片假名。

**吴涛** [44:10]
因为它只多出来 128 个位子嘛 ， 你也放不了多少字符进去 。

**Rio** [44:16]
嗯 ， 好吧 ，但是好像五十音图片假名 ， 全假名 ， 呃 ， 片假名 ， 平假名这一套的话 。

**吴涛** [44:24]
都可以加进去 。

**Rio** [44:25]
嗯 。

**吴涛** [44:25]
嗯 。

**Rio** [44:27]
嗯 。

**吴涛** [44:29]
所以那个 。

**Rio** [44:31]
因为平假名应该没有什么半角的需求吧 ， 可能 。 是吧 ？ 在实践中应该经常用这个标准半角显示的 ， 只有片假名会比较多一点 。

**吴涛** [44:42]
嗯 ， 我觉得可能也是因为那个时候只用外来语写的情况也比较多 。

**Rio** [44:50]
就是当年就 。

**吴涛** [44:51]
跟排版方式 。

**Rio** [44:51]
就像像写电报的时候吧 ， 写电报的时候 ， 日本人传统的电报就全是都用片假名的 ， 然后而且比如说它有着音点嘛 ， 咔加个着音点就变成 ga 嘛 。

**吴涛** [45:00]
嗯 。

**Rio** [45:01]
那着音点呢 ， 它就是着音点是另外一个另外一个字符 ， 所以它是两个字就变成 。

**吴涛** [45:07]
OK。

**Rio** [45:09]
所以这里有个问题啊 ， 就是像日日文这种情况比较比较特殊吧 ， 就是它同样一个意思 ， 它可以用几套不同的方式来表达 ， 对吧 ？

**吴涛** [45:18]
嗯 。

**Rio** [45:19]
就是比如说有各种不同的写 ，有用汉字写的 ， 好像也可以用什么什么各种假名的方式来写的 。

**吴涛** [45:25]
天皇诏书不是只用片假名写吗 ？ 听说 。

**Rio** [45:28]
呵呵 ， 那天皇诏书没有 ， 就是当时就是用汉文汉字 ， 呃 ， 就日本汉字加片假名这样写 。

**吴涛** [45:37]
OK。

**Rio** [45:37]
嗯 。

**吴涛** [45:38]
所以最开始那个就是电脑或者说打字机传入日本的时候 ，因为因为汉字那些毕竟表达起来没有那么方便嘛 ，他们就说是不是选择更加 ， 呃 ， 容易表达的这种假名的方式来写啊 。

**Rio** [45:50]
因为假名是那表英文字嘛 。

**吴涛** [45:52]
对 。

**Rio** [45:53]
所以在最早就是有电报的时候还之类的 ， 至少要先把这个声音传过去嘛 ， 就内容要传过去嘛 。

**吴涛** [45:59]
嗯 。

**Rio** [45:59]
嗯 ， 那正确的表记法呢 ， 那是其次的问题嘛 。 所以呢 ， 就是他们就先先把假名给放上去 。

**吴涛** [46:06]
OK。

**Rio** [46:07]
那那有一个问题是这样 ， 就说如果说假设日文所有的日日文汉字都可以用假名的方式来写 ， 那还有什么必要再接着写那些更复杂的方式呢 ？

**吴涛** [46:18]
嗯 。

**Rio** [46:18]
啊 ， 这个好像用拼音写中文 。

**吴涛** [46:20]
啊 ，有歧义这种 。

**Rio** [46:21]
就很难读 。

**吴涛** [46:22]
啊 。

**Rio** [46:22]
就很难读 ，有时候会有歧义 。

**吴涛** [46:24]
OK，OK， 明白明白 。 嗯 。

**Rio** [46:27]
这 ，但是问题主要是 Rio 这个问题是 ， 汉字一开始就是一个外来语言 ， 对于日本人来说 ，他就在没有假名的时代 ， 就或者说假名这个词怎么来的 ， 就是因为日本人用汉字来代表他们固有语言的读音嘛 。

那所以反过来你可以说 ， 如果当初没有中国的话 ， 那日本也可能今天是在用拉丁字母来表现其固有语言的读音 。

**吴涛** [46:51]
或或者像韩语那样 。

**Rio** [46:53]
对 ， 我们来说不是必须的 。

**吴涛** [46:54]
明白明白 。

**Rio** [46:55]
啊 ， 对 。

**吴涛** [46:56]
嗯 。

**Rio** [46:56]
但韩语走的是另外一条路 。 韩语是 。

**吴涛** [46:59]
它自身造了一套 。

**Rio** [47:01]
对 ，是名正音来来来去表表达其固有语言的读音 。 但问题韩语和日语最大的问题就是它们有太多中文借词了 ， 然后这个中文借词有可能是没有固有读音的 ， 就没有训读的 。

你你但你全靠音读的话 ， 就有可能产生没有汉字就一定会产生歧义的问题 。

**吴涛** [47:24]
OK。

**Rio** [47:25]
对 。 啊 ， 这个借是 ， 呃 ， 借东西的借哈 ，不是那个 preposition 那个借词那个借词啊 。

**吴涛** [47:32]
哈哈 。

**Rio** [47:32]
嗯 ，是假借的借 。 嗯 。 而且呢 ， 就日文的它的那个原因太简单了 ， 啊 ， 因为有这五个原因 ， 所以呢 ， 它的音系越简单 ， 它的同音词就越多 。

**吴涛** [47:43]
就比 。

**Rio** [47:43]
所以在日文里面它们它还多 ， 所以它们没有办法废除汉字 。

**吴涛** [47:49]
OK。

**Rio** [47:49]
因为同音字实在是太多了 。 韩文呢 ， 还稍微好一点点 ， 所以呢 ， 现在就是朝鲜和韩国他们就尽量是不写汉字 。

**吴涛** [47:59]
嗯嗯 。

**Rio** [47:59]
虽然他们那个词都是汉字词 ，但是他们可以尽量不写汉字 ， 只有在会发发生歧义的时候 ， 还有写人名地名的时候 ，他们会把那个原来的那个汉字写出来 。

**吴涛** [48:10]
对 。

**Rio** [48:10]
嗯 。

**吴涛** [48:10]
这就是为什么很多韩国人的人名一开始没出名之前和出名之后是不一样的 ， 就因为出名之后韩国人会站出来说 ， 哦 ， 这个这个人的名字其实汉字写作什么什么 。

**Rio** [48:21]
显得很有文化 ， 还考了一下 。

**吴涛** [48:24]
日日语好像也有这样的问题 ， 就是有些人的名字没有汉字 ， 只有假名。 以前有个什么 ， 呃 。

**Rio** [48:32]
对 。

**吴涛** [48:33]
泽尻惠里香 ， 对 ， 我记得这么一个人。

**Rio** [48:36]
啊 ， 对 。

**吴涛** [48:38]
这个 。

**Rio** [48:39]
嗯 ， 对 ， 首先她的姓比较有意思 ，但是她她她的姓其实是汉字 ， 就是日语里面就写了泽尻两个字 ， 然后惠里香是她刚出名的时候中国人给她翻的 ， 后来她专门进入中文市场了 ， 她的那个经纪人才出来证明说 ， 哦 ， 这个人的这个日本人的 ， 呃 ， 汉字应该写作泽尻英龙华 。

**吴涛** [49:02]
嗯 ， 英龙华是她专门为中国市场起的一个汉字名。

**Rio** [49:07]
对 ， 她之前的这个名只有假名。

**吴涛** [49:10]
就只有音没有字嘛 ， 所以要用什么字嘛 。

**Rio** [49:15]
OK。

**吴涛** [49:15]
啊 ， 这个我们越扯越远了 ， 赶快收回来 。

**Rio** [49:17]
好 。

**吴涛** [49:18]
我们刚才说的是编码的问题啊 ， 同学们 。 所以呢 ，ASCII 有一个码 ， 呃 ， 就上面有一个位 ， 它是可以扩展的 。

说到这边 。

**Rio** [49:27]
嗯 ， 对 。

**吴涛** [49:28]
Rio 继续吧 。

**Rio** [49:30]
好呀 。

**吴涛** [49:32]
哈哈哈 。

**Rio** [49:33]
他讲到哪里了 ？

**吴涛** [49:34]
对 。

**Rio** [49:36]
编编码问题 ， 刚才我们讲了那个 ASCII， 然后和它的扩展拉丁一嘛 ， 就解决了一些 ， 呃 ， 拉拉丁语系的国家的常见的编码问题 。

但是遇到像不管是中日韩 ， 还有一些可能其他的 ， 就大字大字符集的这种语言的时候就搞不定了嘛 。

所以在那个 Unicode， 就上次你单独单口的时候讲过那个事情啊 ， 这出现之前 ， 就各个国家和地区还是有自己不同的标准的 ， 比如说 ， 啊 ， 中国所谓的这个 GB 国标系 ， 对吧 ？

还有日本那个 JS 多少号 ， 我忘了 。 啊 ， 还有好像韩语有个什么 core 的什么 KOR 什么什么标准的 。

**吴涛** [50:11]
KS。

**Rio** [50:11]
啊 ，KS 是吧 ？

**吴涛** [50:12]
KS。

**Rio** [50:12]
OK。

**吴涛** [50:13]
就是就这这一套都是解决的 。 同样一个问题就是说把 ， 啊 ， 把一个国家的一些他们就比较标准的一套字符集映射成为一个数字 ， 然后再把这个数字通过某一种方式 ，因为这个数字是抽象的一个数字嘛 ， 就是 123456， 然后再把这个数字编码成计算机能够识别的一个 ， 啊 ，bit pattern， 对吧 ？

二进制的一个一个一个表达 。

**Rio** [50:38]
OK。

**吴涛** [50:39]
呃 。

**Rio** [50:40]
所以这也是一个编码的过程过程 。

**吴涛** [50:42]
没错 。

**Rio** [50:43]
对吧 ？

**吴涛** [50:43]
所以还是从 。

**Rio** [50:44]
而且就是当年， 嗯 ， 当年就是各个国家不一样嘛 ， 所以就编的那个编的号都不一样嘛 。

**吴涛** [50:50]
对啊 ， 就当我们现在 ， 就现在在 Windows 上还是有这个问题 ， 对吧 ？ 现在大家经常说 ， 哎 ， 那个你用 Mac 的话 ，Windows 上面能传给你一个什么文本文件 ， 打开怎么全是乱码 。

就是因为 。

**Rio** [51:01]
或者 ZIP， 就是你用 Mac 内置的那个 ZIP 来解压一些 ， 呃 ， 那个 Windows 上面压出来的 ZIP 的时候 ， 你会发现解出来的都是乱码 。

**吴涛** [51:11]
对 。

**Rio** [51:11]
这就是因为当时他们在原始的时候是可能用的 GB 或者 GBK，GB2312， 还有 GB18030 这几个国标的方法来编 ， 还有就是像港台 ， 台湾吧 ， 台湾是 Big5 嘛 。

**吴涛** [51:25]
香港当初用什么我现在不记得了 ， 像我记得那个时候就是为了看一些繁体字的文本 ， 好像要手动在网页上选取编码的时代 。

**Rio** [51:36]
嗯哼 。

**吴涛** [51:37]
呃 ， 香港和台湾用的那个编码还不一样 。

**Rio** [51:41]
台湾是 Big5 吗 ？

**吴涛** [51:42]
台湾肯定是 ， 台湾肯定用 Big5 嘛 。

**Rio** [51:45]
香港用什么 ？

**吴涛** [51:45]
大五嘛 。

**Rio** [51:46]
真的是 。

**吴涛** [51:46]
大五嘛 。

**Rio** [51:47]
嗯 ， 看看啊 ， 香港在那个 。

**吴涛** [51:49]
然后我我只记得香港有个什么大五的 Hong Kong ASCII 嘛 ， 就是他们自己扩展 。

**Rio** [51:56]
哦 ， 对对对 ， 就叫这个名字 。

**吴涛** [51:58]
没错 。

**Rio** [51:59]
ASCII 是一个字符集 ，但是编码应该还是用的 Big5。

**吴涛** [52:03]
啊 ， 对 ， 没错 ， 就是它在 Big5 的基础上， 然后就加了一些他们就是香港 。

**Rio** [52:09]
一些 。

**吴涛** [52:09]
对 ， 应该港澳台基本都还就是曾经都是用 Big5，但是他们的字符集各自有一套 ， 像其实像那个澳门也有自己的一个 MAC 这样 。

**Rio** [52:20]
哦 。

**吴涛** [52:21]
Macao 那个什么 。

**Rio** [52:22]
OK。

**吴涛** [52:22]
Information System Character Set。

**Rio** [52:25]
就这个是相当混乱的一个状态嘛 ， 然后大陆刚刚也有讲了自己那套国标的体系 。 哎 ， 后来是有一个所谓的 Unicode CJK 统一的一个过程 ， 统一的过程嘛 。

**吴涛** [52:36]
对 。

**Rio** [52:36]
就是 Hi Unification， 对不对 ？

**吴涛** [52:39]
嗯 。

**Rio** [52:40]
这个 。

**吴涛** [52:40]
像比如说在那个 GB， 我们自己就国内是用 GB 嘛 ， 比如 ， 呃 ， 当年我们是分低低低水准和 ， 嗯 ， 叫常用字 ， 低级和第二级嘛 。

**Rio** [52:51]
一级汉字 。

**吴涛** [52:52]
一级汉字 ， 二级汉字 。

**Rio** [52:53]
一级汉字是 3000 多个 。

**吴涛** [52:54]
一级汉字用音 ， 对 ， 用音序排的 ， 二级汉字用那个 。

**Rio** [52:58]
笔画嘛 。

**吴涛** [52:58]
部首排的嘛 。

**Rio** [52:59]
对 。

**吴涛** [53:00]
啊 ， 所以肯定是从阿字开始排嘛 。 像阿姨的阿这个字在 GB 里面 ， 呃呃 ，在 GB 里面就是很前面嘛 ， 就是汉字汉字区位的最前面 。

**Rio** [53:10]
对 。

**吴涛** [53:10]
嗯 。

**Rio** [53:12]
带什么什么 B0A1 还是 A2 嘛 ， 就是从那个区位开始排的 。

**吴涛** [53:16]
哎 ， 所 。

**Rio** [53:17]
但是呢 。

**吴涛** [53:18]
你说 。

**Rio** [53:19]
嗯 ， 所以这个区 ， 就当年就还有区位区位码的输入法嘛 。 区位码 。

**吴涛** [53:25]
就你直接记那个字库里面的那个字号 。

**Rio** [53:28]
对 。

**吴涛** [53:28]
哇 ， 这个这个谁会去记这个呀 。

**Rio** [53:30]
区位码其实 。

**吴涛** [53:31]
我不知道 ， 反正 。

**Rio** [53:32]
区位码其实跟跟什么四角号码输入法之类的有一拼啊 。 就你你要是一个熟练的排字工人的话 ， 那可能常用字的那个数码在你脑子里面是可以建立起一对应的标准的 。

**吴涛** [53:46]
区位码当年发电报的时候不是用的这个方法呀 ？

**Rio** [53:49]
没有没有 ， 电报码是另外一个电报码 。

**吴涛** [53:51]
另外一个 。

**Rio** [53:51]
啊 。

**吴涛** [53:52]
区位码是完全就是按照 GB 的这个区位来算的 ， 那个不去查是肯定肯定没有办法 ，因为本来这个编号编码就是编给计算机用的呀 ，不是给人看的呀 。

**Rio** [54:01]
就有一个 。

**吴涛** [54:01]
电报码是电报码 ， 发电报当时邮局系统用那个电报的是电报码 。

**Rio** [54:05]
OK。

**吴涛** [54:06]
然后四角号码的话是根据那个汉字的 ， 嗯 ， 上下左右那四个角的那个笔画来 ， 所以那个是直观的可以看的 。

**Rio** [54:14]
四角号码多少 make sense， 你可以猜 ，但是区位码是你要没见过你就不知道的 。

**吴涛** [54:20]
就必须要有一个表来查 。

**Rio** [54:22]
就本来就编的号是给给对 ， 给电脑去看的呀 ，不是给人看的呀 ， 这个区位码 。

**吴涛** [54:26]
嗯哼 。

**Rio** [54:27]
然后所以就同样的汉字的话 ，因为这比如说它可能在中国是常用的字 ， 所以它中国给它在这个表里面 ，在 GB 的表里编了这样一个号 。

**吴涛** [54:38]
嗯哼 。

**Rio** [54:38]
但是在日本的话就变变成另外一个号 ， 虽然是同样的汉字 ， 比如说笔画一的一嘛 ， 一横嘛 ， 这个一嘛 。

**吴涛** [54:45]
嗯 。

**Rio** [54:45]
所以后来在做 Unicode 的时候说要全球大统一 ， 大家统都是大家庭嘛 ， 那汉字本来就这么多 ， 那为了节省码位 ， 干干脆呢 ， 就能统一就统一了 。

**吴涛** [54:56]
嗯哼 。

**Rio** [54:56]
所以呢 ，在统一码 Unicode 的时候呢 ， 对于这个他们叫 CJK Ideograph， 对吧 ？

**吴涛** [55:02]
嗯哼 ， 对 。

**Rio** [55:03]
CJK 表意汉字 ， 嗯 ， 表意符号 ， 嗯 ， 这个区的话呢 ， 就尽量的就当年呢 ， 就把 ， 呃 ， 这几这些这几个就是东亚系统的几个汉字的统一起来了 。

但是呢 ， 管这管这个叫包 ， 嗯 ， 这个叫有一个术语叫包容还是叫包摄 ， 就是就是同样的汉字 。

**吴涛** [55:22]
认认同原则吧 ， 应该是 ，是认同原则 。

**Rio** [55:26]
就是如果你国认为你国的这个字和我国的这个字是同一个字呢 ， 这两个字就可以合在一起 。

**吴涛** [55:33]
嗯 。

**Rio** [55:33]
对对对 。

**吴涛** [55:34]
但是呢 ， 问题就是如果就是比如说像一体字东西嘛 ，在你你国的这个是分开来的话 ， 那我收到 Unicode 也必须得分开嘛 ， 要不然就会有一个向后兼容不不行的问题嘛 。

**Rio** [55:45]
对 ，是这样 。

**吴涛** [55:47]
嗯 ， 所以就当年当年好像就在在那个基本 ， 呃 ， 文那个什么基本文平面 ， 基本多语言平面的这个第一级的这个 CJK 统一表意符号里面的这个东西呢 ， 就是基本上差不多统起来了 。

但是问题就是统的那个规则呀 ， 就特别的不明确 ，有的该统的不统 ，有的该分的不分 ， 就是这样子 。

嗯 。

**Rio** [56:10]
嗯 。

**吴涛** [56:11]
哈哈哈 。

**Rio** [56:12]
好吧 。

**吴涛** [56:13]
哎 ， 所以那现在比如说 ， 啊 ， 国内可能还是在用 GB 这套比较多 ， 特别是在 Windows 上面的平台上面哈 。 就在日本和韩国的话 ， 现在用 Unicode 编码的是一个常态吗 ？

还是说还是在沿用自己老的那个什么 JS 那套标准 ？

**Rio** [56:28]
Windows 还是用 JS 呀 。

**吴涛** [56:29]
啊 ， 还是这样子 ， 就只有在 Mac 上面是用的 Unicode。

**Rio** [56:35]
呃 ， 首先 OS10 的话 ， 从最开始 OS10 一开始诞生就是 Unicode 内核 ， 对吧 ？

**吴涛** [56:41]
啊 ， 那这有两码事 ， 第一个就是说 ，因为 Windows 上面其实也是 Unicode 内核的 ， 就它只是说在习惯保存成文件的时候 ， 它有一个编码的过程嘛 ， 这样的话在那个起码在中文的 Windows 版本现在默认的应该还是用的那个国标那套标准 GBK 吧 ， 然后你可以选择手工存成 UTF-8， 然后它会有一个那个 BOM 在前面标识这个东西嘛 。

但是我不知道在日日本的话 ， 就目前大家用的常用的操作系统里面是怎么一个一个做法 。

**Rio** [57:12]
呃 ， 如果我我虽然也不怎么用 Windows，但是嗯 ， 据我印象的话好像也是 ， 就是在他们也是默认 JS。

**吴涛** [57:20]
OK， 就还是保留 Windows。

**Rio** [57:22]
就是在 Unicode 这个 Unification 之前的做法保留下来了嘛 。

**吴涛** [57:26]
对的 。

**Rio** [57:27]
嗯 。

**吴涛** [57:27]
那你 。

**Rio** [57:28]
其实这就是为什么你在 Windows 里面要选择一个所谓 Code page 嘛 ， 就你要在 。

**吴涛** [57:33]
对 。

**Rio** [57:34]
呃 。

**吴涛** [57:34]
码页 。

**Rio** [57:35]
你要在就你要在单单想要玩日文游戏的时候 ， 你可以把 Code page 选成日文 ， 然后这样日文游戏至少出现的时候显示出来是正常的 ， 对 ，但其他操作系统的其他部分就全毁了 。

**吴涛** [57:50]
对 ，其实就是按 Windows 那个比较典型的 ， 它那个记事本的那个软件 。

**Rio** [57:55]
对对 。

**吴涛** [57:56]
就那个成人编辑器 ， 对 。 它那个它有一个编码叫 ANSI 嘛 ， 就是 American 那个什么 National， 就国家标准的 ，但其实它除了 ASCII 之外， 那个应该念怎么念 ，ASCII， 除了 ASCII 之外， 对 ，其他的其实它都是一个根据你这个操作系统语言地区来帮你自动选一个 Code page。

**Rio** [58:16]
没错 。

**吴涛** [58:16]
应该是这样 。

**Rio** [58:16]
没错没错 。

**吴涛** [58:17]
所以那个特别坑嘛 ， 那个特别坑嘛 。

**Rio** [58:19]
对 ， 所以其实 。

**吴涛** [58:20]
啊 ， 对 ，其实 Windows 记事本还挺坑的 。

**Rio** [58:22]
对啊 ， 那就是各种那种大家都说打不开是乱码的一个根源问题嘛 。

**吴涛** [58:27]
对啊 。

**Rio** [58:28]
还有那种换行符的问题嘛 。

**吴涛** [58:30]
啊 ， 对对对 ，也是 。

**Rio** [58:32]
哦 ， 对 。

**吴涛** [58:33]
回回车符和换行符 。

**Rio** [58:35]
Windows 记事本是不能区分这个两个回 ， 呃 ， 单一个 Return 和 Windows 所谓 Cache Return New Line 的 。

**吴涛** [58:44]
对 ， 换行和回车是不一样的嘛 ，Return 和 Enter 嘛 。

**Rio** [58:48]
对 ， 它那个 BOM 也也挺烦的 ，其实 。

**吴涛** [58:55]
呃 ， 到了 ， 嗯 ， 我们说到 Unicode 是吧 ？

**Rio** [58:58]
对 ， 对 ， 我们已经说到 Unicode 了 。

**吴涛** [59:00]
然后当年就是有因为汉字的那个有很多一体字 ， 那当年在做这个 CJK 统一汉字的时候呢 ， 就因为各个国家的这个标准不一样 ， 又为了向后兼容 ， 导致当年在做那个标准的时候呢 ， 这个收和不收统一有没有统起来是非常混乱嘛 。

所以到后面在这个 CJK 统一汉字扩展 ABCDE， 现在已经到 E 区了是吧 ？

**Rio** [59:29]
好像是的 ， 我最近没有怎么去追 Unicode 的这个 Consortium 的新闻 ，但他们一直在搞大家庭 。

**吴涛** [59:35]
台湾他们 ， 对 ， 台湾是翻译成什么甲乙丙丁戊嘛 ， 就是扩展 ， 我我嗯 ， 说法不一样而已 。 对 ， 然后就是后面就一直都在补 ，而且他们要不停在补 ， 要保又要保证像前面的那个兼容性的问题嘛 。

**Rio** [59:51]
嗯哼 。

**吴涛** [59:51]
所以后面就不断的叠加 。 所以在日本在 Unicode 里面现在就搞的这个一体字的处理非常非常的复杂 。

**Rio** [1:00:01]
有没有有没有发生 ， 现在有没有发生一个字在 Unicode 里面有多个码点的状的情况 ？

**吴涛** [1:00:10]
嗯 ， 首先说什么叫一个字 。

**Rio** [1:00:13]
因为同一个字的不同一体 ， 比如说 。

**吴涛** [1:00:16]
呃 ， 对 ， 嗯 ， 呃 ， 像比如就会会发生很多很很乱的事情啊 ， 比如说像那个强调的强 。

**Rio** [1:00:24]
OK。

**吴涛** [1:00:24]
呃 ， 就是右边是虽然的虽右上面是个口嘛 。

**Rio** [1:00:29]
嗯哼 。

**吴涛** [1:00:30]
对吧 ？ 然后日本的这边标准的字形呢 ，是是写成那个吧 ， 撇折点 。

**Rio** [1:00:38]
OK。

**吴涛** [1:00:38]
对 。

**Rio** [1:00:39]
啊 。

**吴涛** [1:00:40]
但是嗯 ， 这两个关系在中国是正体字和一体字的关系 ， 然后我们不用撇折点 ， 我们是写成口 。

**Rio** [1:00:48]
对 ， 方的 。

**吴涛** [1:00:50]
嗯 ，但是日本呢 ， 它是撇折点的那个字形 ， 它是常用汉字的标准字形 。

**Rio** [1:00:57]
然后写成口呢 ， 日本有日本就完全没有写成口这种这种变体吗 ？ 还是 。

**吴涛** [1:01:01]
写成口呢 ，是他们的一体字 。

**Rio** [1:01:03]
OK。

**吴涛** [1:01:05]
嗯 ， 那那然后还好就是 。

**Rio** [1:01:08]
那怎么办呢 ？

**吴涛** [1:01:08]
但是还好的是 ， 那还好 ，因为在 Unicode 里面这两个字分别有码位 。

**Rio** [1:01:13]
对 ， 这其实就是两个两个码位 。

**吴涛** [1:01:15]
所以呢 ， 啊 ， 这这对于这一对字的处理的话是还好 ，是因为有不同的码位 ， 那我是只要给它分成不同的编码 ， 给它编了不同的编码了 ， 所以呢 ， 我只要正确的输入这个码的话 ， 呃 ， 你就会呃显示这样的字 。

这个是我们要说到后面 ， 就是那个字体公司它的它在映射的时候 ， 映射对的时候就会这样 。

**Rio** [1:01:38]
嗯哼 。OK。

**吴涛** [1:01:40]
如果映如果映射不对的话 ， 字体公司它有时候它它映射错了 ， 就中文字体 ，因为中文字体优先是那个口字盘的那个字形嘛 。

**Rio** [1:01:49]
对 。

**吴涛** [1:01:49]
日文字体会优先那个撇撇点 ， 呃 ， 撇点撇折点的那个字形嘛 。 如果他们在这个码位上给弄错了的话 ，在换字换字体的时候也会出问题 。

**Rio** [1:01:59]
啊 ，不过这种概率还蛮小的 ， 比较大的问题主要是出在输入法给你优先推荐的那个字上 。

**吴涛** [1:02:07]
就你看起来是一样 ，但其实它是其实你做那个比较的话 ， 它两个不同的字嘛 ， 不同的呃 Character。

**Rio** [1:02:14]
嗯 ， 所以这所以就刚才说到这又是一个不同的层次了 。 首先我们是要输入法嘛 。

**吴涛** [1:02:19]
嗯 。

**Rio** [1:02:20]
我们从键盘里面打的打进去的那个键位以后， 要经过输入法的转换 ， 换成这个文字的编码 。 这时候换的时候有没有换对 ？

**吴涛** [1:02:28]
嗯 。

**Rio** [1:02:29]
有的时候输入因为输入法特别坑嘛 ，有时候它换就跟根本就给它换错掉了 。

**吴涛** [1:02:33]
嗯哼 。

**Rio** [1:02:35]
然后操作系统收到这个编码以后， 它再去拿那个 Font 文件 ， 拿字体文件去调用来显示那个最后要显示那个图形嘛 ， 那个字形嘛 。

**吴涛** [1:02:46]
对 。

**Rio** [1:02:46]
嗯哼 。 那那个 Font Font 的那个 Mapping 如果又错了的话 ， 它显示又是一个错的东西 。 所以这个有好多层次的 。

**吴涛** [1:02:54]
好多坑啊 ， 果然是 。

**Rio** [1:02:56]
啊 ， 所以哎 ， 我们我们要把从头到尾再说一遍吧 。 所以现在就好不容易是呃 ， 啊 ， 对啊 ， 我们刚才跳过了 ， 那输入法应该说一下呀 。

**吴涛** [1:03:06]
呃 ， 输入法这个层面其实跟

### 输入法

**吴涛** [1:03:11]
编码没有太多的关联 ， 就是输入法本身是一个把你输入的字符按照某种规则转化为汉字的过程 。

就我们假设在讨论的是汉字输入法 ， 当然日语其实也有输入法这个概念 ，但是呃 ， 全都考的话其实是比较复杂的 。

就输入法本身其实是一个呃

， 和编码没有太多的关联的过程 ， 它所做的唯一的事情就是把你输入的 ， 甚至很多时候输入法工作的层面是在已经输入的字符的层面 ，而和那个下面的按键是无关的 。

当然在呃 ，Linux 上面你是可以说这个输入法 ， 呃 ， 就有些输入法是工作在那个扫描码层面上的 ， 就你你可以说这个输入法直接去呃 ， 管理键盘上面呃给过来的扫描码 ，而不是先等待操作系统把呃扫描码已经转化为汉转换为字符 ， 然后去处理字符 。

然后扫码其实就是一个巨大的规则库嘛 ， 就比如说这规则库最常见最常用的就是拼音规则库 ， 然后你输入某些特定的拼音就会得到一个汉字 。

嗯 ， 输入法这个坑要开嘛 ， 就我们可以介绍各种各样的输入法 ， 什么音形码呀 ， 双拼啊 ， 呃 ， 包括刚才说的五笔字形 。

**Rio** [1:04:40]
不过其实我觉得从广义上来说 ， 输入法也可以视作一条语言系统 ，但是它跟我们所谓这个计算机字符编码 ， 这个狭义的编码是不是一回事 。

**吴涛** [1:04:53]
字符编码又不一样 。

**Rio** [1:04:54]
对 ， 输入法其实目前最大的问题就是拼音输入法很有可能是一个动态的编码系统 ， 就你每次按键的次完全一样的按键次序 ， 输输得出来的这个字可能是不一样的 。

**吴涛** [1:05:07]
嗯嗯 ， 或者说它是一套检索系统 ， 它能帮你更快的找到你想要的那个字 。

**Rio** [1:05:14]
没错 ， 它是一个 。

**吴涛** [1:05:15]
增量搜索嘛 。

**Rio** [1:05:16]
编码和检对 ， 当然有些人就因此特别喜欢什么 ， 我就 Windows 有一个智能 ABC 输入法 ， 就是你不管打多少次 ， 它没有高频先进这个功能 ， 就是你你打什么知道的知你可能 。

**吴涛** [1:05:31]
哈哈 ， 我以前就是 。

**Rio** [1:05:32]
在第二页 ， 它永远它永远在那个位置 ， 你每次输入一模一样的 。

**吴涛** [1:05:37]
OK， 对 ， 就这个是一个叫词频调整嘛 ， 就是会根据你输入的 。

**Rio** [1:05:42]
词频调整可以关掉吧 ？

**吴涛** [1:05:43]
对吧 ， 现在好像可以关掉的 。

**Rio** [1:05:45]
可以关掉吧 ？ 其实嗯 ， 所以它永远都在那个位置上 ，其实挺好的 。 像像有些同学他的名字因为是很复杂嘛 ， 然后就经常在后面告诉你 ，他就经常说啊 。

**吴涛** [1:05:56]
第二排第五个 。

**Rio** [1:05:56]
对 ， 你就要翻 ， 对对对 ， 你按第五按五页的第六个选项就是什么什么什么 。

**吴涛** [1:06:02]
对对对 。

**Rio** [1:06:02]
这样体验也也蛮好其实 。

**吴涛** [1:06:04]
但那个基本上是在就是就是什么呢 ， 联机时代之前出现的这种情况 。 那现在的话 ， 我看市面上的大部分输入法 ， 它除了有这个词频调整这个选项之外， 它有一个所谓的这个这个词汇库的问题 ，而且它不是一个单机的嘛 ， 它是一个联机的 。

比如说像我甚至留意到现在那个苹果自带那个拼音行都有这个都有这个东西 ， 就是你打一下你觉得一些流行词汇 ， 它会自动的会定期更新出来 ， 还有像什么搜狗输入法这种 。

**Rio** [1:06:32]
云词库 。

**吴涛** [1:06:32]
对 ， 这种所谓的云词库 ， 就是它可以甚甚至说实时的告诉你说你本来打这个 ， 比如说呃 ABCD， 你组合出来一个一个拼音的字 ， 别人你之前可能都没有 ， 可能过了一天发现哎 ， 怎么有人说这个东西 ，因为是有大量的人打 ABCD， 然后指向了某一个特定的一个词组 。

**Rio** [1:06:50]
红红火火 ， 惶惶呼呼 。

**吴涛** [1:06:52]
哈哈哈哈 。

**Rio** [1:06:55]
就这个这算是输因为输入法而被创造出来的词汇嘛 。

**吴涛** [1:07:00]
啊 ， 对的 。

**Rio** [1:07:01]
还有兰州烧饼 。

**吴涛** [1:07:02]
对 ， 反过来的 。

**Rio** [1:07:03]
兰州烧饼 。

**吴涛** [1:07:05]
兰州 。

**Rio** [1:07:06]
哈哈哈 。

**吴涛** [1:07:07]
这是什么梗 ？

**Rio** [1:07:07]
这什么梗 ？

**吴涛** [1:07:08]
你不知道这个梗吗 ？

**Rio** [1:07:09]
就是楼主 。

**吴涛** [1:07:10]
不知道 。

**Rio** [1:07:11]
在论坛时代 。

**吴涛** [1:07:15]
对 。

**Rio** [1:07:15]
你打 LZSB， 然后如果你不切换输入法的话 ， 那出来的就是兰州烧饼四个字 ， 然后哈哈哈 。

**吴涛** [1:07:24]
兰州有烧饼吗 ？

**Rio** [1:07:26]
有啊 。

**吴涛** [1:07:27]
哈哈哈 。

**Rio** [1:07:29]
还蛮好吃的 ， 说实话 。

**吴涛** [1:07:31]
哈哈哈 。 啊 ， 对哈 ， 吴涛对兰州很熟哈 。

**Rio** [1:07:36]
嗯 ， 对 ， 我在兰州 ， 我和 Rex 都是兰州人， 我们都是在兰州出生的 。

**吴涛** [1:07:42]
哈哈 ， 好吧 ， 现在兰州除了拉面还有烧饼 。 好的 。 刚讲了那个字符 ， 那又又 Unicode 问题啊 ， 可能这里不得不稍微连带提一下 ，但是算不先不展开讲吧 ， 后面会展开讲 ， 就是那个 emoji 原文字的问题 。

**Rio** [1:08:00]
啊 ， 又是一个大 。

**吴涛** [1:08:01]
很大的潘多拉盒子 。

**Rio** [1:08:03]
嗯哼 。

**吴涛** [1:08:05]
啊 ， 所以我一直想知道这个词在英文世界最通用的念法是怎么念 。

**Rio** [1:08:11]
是那 emoji 吧 ？

**吴涛** [1:08:13]
对 ，但我知道它在英文世界其实应该是 。

**Rio** [1:08:15]
就是日语对吧 ？

**吴涛** [1:08:16]
反正反正日语叫 emoji。

**Rio** [1:08:20]
对啊 。

**吴涛** [1:08:20]
有很多人念成 emoji， 这个我是可以肯定的 。

**Rio** [1:08:24]
哦 ， 天呐 。

**吴涛** [1:08:24]
Emoji 就是绘文字 ， 它写成中文就写成绘文字 ， 绘就是画的意思 。

**Rio** [1:08:31]
现在汉字叫嗯 。

**吴涛** [1:08:32]
绘文字 。OK。

**Rio** [1:08:34]
对 ，moji 就是文字这两个字 。

**吴涛** [1:08:37]
Moji 就是绘 ， 就是画的意思 。

**Rio** [1:08:41]
绘 ， 绘画的绘 。

**吴涛** [1:08:44]
对 。

**Rio** [1:08:44]
画 ， 所以它其实说是一个画 。

**吴涛** [1:08:47]
所以绘文字说半天就是象形文字嘛 。

**Rio** [1:08:50]
不对不对 ，在日语里面有两个词哈 ， 一个叫 emoji， 一个叫かおもじ 。

**吴涛** [1:08:54]
啊哈 。

**Rio** [1:08:55]
かおもじ是原文字 。

**吴涛** [1:08:56]
OK。

**Rio** [1:08:57]
哦 ， 就是用字符来画出一个人的脸 。

**吴涛** [1:09:00]
对对对 。

**Rio** [1:09:00]
之类的 。

**吴涛** [1:09:01]
就是那个什么给人跪了那种 。

**Rio** [1:09:03]
那个应该叫 emoji。

**吴涛** [1:09:04]
啊 ， 对 ， 比如说 ORZ。

**Rio** [1:09:05]
对对对对 。

**吴涛** [1:09:06]
呃 ， 所以有两个嘛 ，在反正在日语里面 emoji 它是一个 a， 它是一个画 。

**Rio** [1:09:11]
OK。

**吴涛** [1:09:11]
啊 ， 绘文字是一个画 ，但是かおもじ它是一个文字 ， 它是用字符组成的一个一个图形嘛 。

**Rio** [1:09:19]
对 ， 它是用文字来表达一个表情 。

**吴涛** [1:09:22]
对 ， 嗯 ，但是这个东西的话 ，其实最早呢是从英文世界过来的嘛 。

**Rio** [1:09:27]
就 ASCII art。

**吴涛** [1:09:29]
对 ，ASCII art， 对 ， 一个冒号 ， 一个冒号 ， 一个右括弧 ， 就是一个横过来的笑脸嘛 ， 对吧 ？ 这个是最早最早的一个 ， 然后这个在日语里是叫かおもじ 。

然后呢 ， 西方的他们那个都是横过来的嘛 ， 那东亚的这个原文字都就是就是正 ， 我们看着就正常位置嘛 。

**Rio** [1:09:47]
嗯 。

**吴涛** [1:09:47]
就比如说打打打两个那个那个 。

**Rio** [1:09:50]
上肩 。

**吴涛** [1:09:51]
那个符号的话 。

**Rio** [1:09:52]
Cap。

**吴涛** [1:09:52]
对 ， 那个那个叫什么呀 ？

**Rio** [1:09:54]
就叫 cap 嘛 ， 对 。

**吴涛** [1:09:56]
上肩 。

**Rio** [1:09:56]
对 ， 两个上肩的话就是两个笑脸嘛 。

**吴涛** [1:09:58]
嗯嗯 。

**Rio** [1:09:59]
好像叫什么 circle flex。

**吴涛** [1:10:02]
嗯 ， 对 ， 那个是原文字 ， 那原文字的话 ，其实它在对于计算机系统来说 ， 它本来就是字符嘛 ， 就是这种 ASCII art 嘛 。

所以这个呢 ， 完就不用编码 ， 它就可以显示出来 。

**Rio** [1:10:12]
对对 。

**吴涛** [1:10:13]
但是 emoji 的话 ， 它是一个画 ， 所以呢 ， 就必须要通过编码去编一下， 然后再让电脑去调出这个东西出来 。

**Rio** [1:10:21]
所以就就 emoji 就有两个问题啊 ， 第一个是说它会在那个就码表里面空出一些特定的东西给这些这些图片嘛 ， 这些小图片 ， 什么救护车啊 ， 火箭啊 ， 西瓜飞机之类的这种 。

它会留一个这个这个一个点位 ， 然后再说这个点位是什么意思 ， 然后你再说对应的这个 。

**吴涛** [1:10:41]
是 。

**Rio** [1:10:41]
哎 ，emoji 是用字实现的吗 ？ 好像不是字体来实现的 。

**吴涛** [1:10:44]
是的呀 。

**Rio** [1:10:46]
哦 ，是 。

**吴涛** [1:10:48]
是的 ， 所以而且就而且这是一个像 Apple color emoji 那个字母 ， 呃 ， 那个字体 。

**Rio** [1:10:54]
哦 。

**吴涛** [1:10:54]
它是彩色的字体 。 当年就是呃 ， 这也是一个字体技术的一个很重要一点 ， 就是因为大家默认的话 ， 那个字体就是黑白的嘛 。

**Rio** [1:11:02]
就是一个它混的是一个轮廓嘛 ，outline。

**吴涛** [1:11:05]
传统上字字体是一套轮廓结果的 。

**Rio** [1:11:08]
对 。

**吴涛** [1:11:09]
嗯 ， 就而且是黑白的 ， 就不不几乎就不带这个颜色信息的 。

**Rio** [1:11:13]
啊哈 。

**吴涛** [1:11:13]
但是呢 ， 这这个 emoji color emoji，Apple color emoji， 它就是第一款就是有带颜色信息的这个字 。

**Rio** [1:11:21]
哎 ， 那它是点阵的还是向量的 ？

**吴涛** [1:11:23]
嗯 ，是位图 ，但它要存很多 。

**Rio** [1:11:25]
哦 。

**吴涛** [1:11:26]
对 。

**Rio** [1:11:26]
对 。

**吴涛** [1:11:27]
不 ， 实现上是位图 ，但是它在实现上是位图 ，但是它理论上是可以支持 。

**Rio** [1:11:33]
啊 ， 你说支持彩色的实现 。

**吴涛** [1:11:37]
我没理解错的话 ， 就是它这套字体 ， 它只是存了一套位图的实现 ，但是它本身是可以使用彩色 SVG 的 。

而且好像微软类似的技术 ， 本身就一上来就直接是彩色的矢量图 。

**Rio** [1:11:52]
啊 ， 那可能是私有技术吧 。

**吴涛** [1:11:55]
OK。

**Rio** [1:11:55]
对 ， 反正 Apple 的 Apple 的这个 color emoji 这套那个 font 的话 ， 它其实里面是位图嘛 ， 然后你所以它你仔细看 ， 它并不是那个 ， 如果你这样放大的话 ， 它并不是无无极放大的 。

**吴涛** [1:12:07]
对 。

**Rio** [1:12:07]
嗯 ， 它不是无极放大的 。

**吴涛** [1:12:09]
明白 。

**Rio** [1:12:09]
嗯 ， 它不是无极的 。 嗯 ， 比如说你 12 point 的 ，14 point 的 ，16 point 的 ，其实是不大一样的 。

**吴涛** [1:12:15]
不 ，其实这里要而且要解释一下那个字体的概念啊 ，因为刚才讲了是一个点位和一个东西的对应 ， 那个东西是什么 ， 就是可能有两种方式 ， 一种是刚才所谓的点阵 ， 就是一个多少几乘几的一个方块里面哪些点是什么颜色 ， 这么一个一个 。

**Rio** [1:12:31]
马赛克嘛 。

**吴涛** [1:12:32]
对 ， 然后另外一个就是所谓的向量的字体 ， 就是它存的是一堆这个呃 ， 这个一些一些 points， 这些 points 就它会通过某种方式组合成一个一个区域 ， 然后绘上颜色之后就变成一个黑白的字哈 。

啊 ， 这个字 。

### 字体文件

**Rio** [1:12:48]
它是一个轮廓 。

**吴涛** [1:12:49]
对 ， 就轮廓 。

**Rio** [1:12:50]
就这个怎么把一个形状表达出来 ， 这个是字字体文件要干的 ， 或者叫字库文件要干的事情 ， 对吧 ？

**吴涛** [1:12:59]
对 ， 这就是我们平时大家在电脑里面看的 font。 嗯 ， 这个 font 文件里面到底是什么东西 ？

**Rio** [1:13:06]
对 ， 关于那个呃 ， 一个 glyph 它本身的这个图像形式 ， 我觉得按照 Rio 刚才说的 ， 我们其实应该可以分成三种 ， 一种是那种黑白的点阵 。

**吴涛** [1:13:16]
嗯哼 。

**Rio** [1:13:17]
然后另一种是更常见的这个矢量字体 ， 它是一个矢量的轮廓 。

**吴涛** [1:13:21]
对 。

**Rio** [1:13:21]
当然这个矢量轮廓可能有很多种描述方式了 ，但它统一上都是一个矢量轮廓 。

**吴涛** [1:13:26]
对 。

**Rio** [1:13:26]
还有一种是那个 emoji 常用的这种 。

**吴涛** [1:13:29]
图片 。

**Rio** [1:13:30]
一个彩色的位图 。 对 ， 它比那种点阵的 ， 我们最早看到那种点阵的那个位图要高端的很多 ， 就是说我们可以大致上这样理解 ， 就是它们不是同一种技术 。

**吴涛** [1:13:41]
对对对 。

**Rio** [1:13:42]
嗯 ， 所以最常见的和最最古老的是那种点阵字库嘛 ， 大家应该还在 ，因为 DOS 时代还挺明确的吧 ， 那个什么 16 乘以 16 个像素的那个叫什么字体来着 ， 就是当时用 WPS DOS 版的时候还有人说 。

**吴涛** [1:13:58]
Fixedsys。

**Rio** [1:13:59]
哇 ，是 Fixedsys。

**吴涛** [1:14:00]
我怕死 。

**Rio** [1:14:01]
这个是英文的嘛 ， 还有中文的嘛 ，有个有个 。

**吴涛** [1:14:04]
他点阵的送体 。

**Rio** [1:14:05]
有点阵字库 。

**吴涛** [1:14:06]
有的 。

**Rio** [1:14:07]
对 。

**吴涛** [1:14:07]
啊 ， 包括后来 。 对啊 ， 点阵送体在 Windows 应该是 7 之前吧 。

**Rio** [1:14:13]
中译中是什么中译中标送体吗 ？

**吴涛** [1:14:16]
啊 ， 好像就是那个 。

**Rio** [1:14:17]
现在包括很多的那个 ， 现在很多 LE 中国的 LED 的那个显示屏上还会还会使用这种字体 。

**吴涛** [1:14:23]
没错 ， 没错 。

**Rio** [1:14:24]
热烈欢迎领导莅临访问之类的那个词就是这个 。

**吴涛** [1:14:29]
哈哈哈 ， 那个红色的 LED 灯屏幕是吧 ？

**Rio** [1:14:33]
大家坐地铁的都地铁上面都是 。

**吴涛** [1:14:35]
地铁上面都是那显示的时候 。

**Rio** [1:14:37]
对对对 。

**吴涛** [1:14:38]
对啊 。 啊 ， 它那个就是那种小型的那个 LED 都是那样的嘛 。

**Rio** [1:14:41]
对 ， 就那个那个中译那个送体应该是有 9 像素到 16 个像素的 ， 就是每一个就 9、10、11、12、13、14。

**吴涛** [1:14:50]
我记得最小是 11 吧 。

**Rio** [1:14:53]
11。

**吴涛** [1:14:53]
9 像素是那个 ，9 像素只有那个

啊 ， 台湾那套字体叫什么 ， 嗯

， 明流体可以支持到 9 像素 ， 就是中译是从 11 像素开始的 。

**Rio** [1:15:06]
11 个像素是吧 ？ 反正 11 到 16 应该是齐的 ， 我记得 。

**吴涛** [1:15:10]
对 。

**Rio** [1:15:11]
然后 。

**吴涛** [1:15:12]
比 11 小的话 ，有些字就卡起来了 ，但是好像就 。

**Rio** [1:15:15]
完全一一团糊了嘛 。

**吴涛** [1:15:17]
对 ，因为最早时候 ， 最最早时候我们在做那个网页的时候 ， 就大家手工指定说这个最小是 11 个 pixel， 应该是 10.5。

**Rio** [1:15:26]
等一下， 我想纠正一个细节 ， 就是那个不叫明流体吧 ，是吧 ？ 那个叫明历 ， 然后有一个 u， 这对 。

**吴涛** [1:15:34]
哈哈哈 。

**Rio** [1:15:35]
明历 u。

**吴涛** [1:15:37]
U。

**Rio** [1:15:37]
对 。

**吴涛** [1:15:37]
对 。

**Rio** [1:15:40]
哈哈哈 。

**吴涛** [1:15:40]
它那个 u 我已经忘记是什么了 ，但是它是一个特殊的 。

**Rio** [1:15:43]
那个 u 代表什么 ？

**吴涛** [1:15:44]
它那个 u 是 ui 的意思吗 ？ 还是什么 ？ 就因为当时 Windows 好像对文件名的长度有个限制 ， 所以它没法完整写完这个字体名称 。

**Rio** [1:15:54]
原来是这样 。

**吴涛** [1:15:55]
哈哈哈 。

**Rio** [1:15:56]
怪不得那个小时候觉得那个又要小 ， 又要大写 ， 觉得很奇怪 。

**吴涛** [1:16:00]
可能是 ui 还是什么问题 。

**Rio** [1:16:01]
u1 后面的就不知道是什么了 。 那后来我记得 Windows 那个中译送应该是到 Windows 7 还是 8 的时候 ， 它它把那个小字号的那个字体也默认用那个雅黑了嘛 ， 就是中文中文的那个字体用雅雅黑来显示了 ， 然后那个中译 。

**吴涛** [1:16:20]
呃 ， 改雅黑是从 Windows Vista 开始的 。

**Rio** [1:16:23]
哦 ， 你不是 Vista 也是用小字号也是用雅黑了吗 ？

**吴涛** [1:16:26]
有雅黑和小字号用雅黑是两个概念 。

**Rio** [1:16:29]
应该说 Vista 的时候 ， 中文的嗯 ， 怎么说 ， 简体中文这边的 ui 字体还是中译送体哈算 ，但是雅黑已经已经随系统搭载了 。

**吴涛** [1:16:40]
对 。

**Rio** [1:16:40]
还是随 Office 搭载 ， 我不太记得清 。

**吴涛** [1:16:43]
有了吗 ？

**Rio** [1:16:44]
呃 ， 雅黑应该是随 Windows 7 还是 Vista 发布的 ， 然后它有一套那个 c 字头的字体 ， 那个 Calibra Consolas， 那套是随那个 ， 对 ， 那个随 Clear， 那个 Windows 7 还 。

**吴涛** [1:16:56]
那是 ClearView， 对 ， 那是随 ClearView 技术 。

**Rio** [1:17:00]
对对对 。

**吴涛** [1:17:01]
所发布的 。

**Rio** [1:17:01]
弄进去的 。 然后但是当然也有一个具体原因呢 ， 就是因为当时就是 Windows 用 Windows 的那些 PC 很多还是那种低分辨率的屏幕嘛 ， 就可能是就不不太适合用那种小字的 ， 哎 ， 这个显示非点阵字库的中文字体了 。

那后来因为现在这个屏幕分辨率也高些了嘛 ，有很多这个这个 Windows 那个笔记本 ， 特别是是那个什么超 ， 就是高分屏 ， 虽然不是 Retina 那么高 ，但是也有很多是了 ， 然后由于这个时候再显示这个雅黑小字号 ， 就问题不是那么大了 。

**吴涛** [1:17:37]
嗯 。

**Rio** [1:17:37]
啊 。

**吴涛** [1:17:38]
所以我一直想和大家澄清一点 ， 就是说虽然我们说啊 ， 字体呃 ， 文件里面有我们有点阵字 ， 我们有矢量 ，有轮廓字嘛 ，但并不是说啊 ， 就是啊 ， 这个 font 肯定就是点阵字 ，有的它是矢量字 ， 就像刚才说的 WinWindows 它默认的 sing song， 就是中译送体嘛 。

**Rio** [1:17:56]
它两套 。

**吴涛** [1:17:57]
它其实那个 font 文件里面它两两种的字体数据都有的 。

**Rio** [1:18:01]
对 。

**吴涛** [1:18:02]
就是然后呢 ，由系统来调用 ，但在小字号的时候呢 ， 它就把那些点阵的数据拿出来显示 。在大字号的话 ， 它把那个轮廓数据拿出来显示 。

**Rio** [1:18:14]
对 。

**吴涛** [1:18:15]
在那个 font 里面呢 ， 它里面既有点阵的数据 ， 又有那个轮廓的数据 。

**Rio** [1:18:21]
或或者说因为因为那个轮廓 ， 就是轮廓数据 ， 它有一个叫做 Hinting 的一个概念嘛 ， 就是说告诉你说这个时候如果你遇到一些疑难的时候 ， 你怎么去弄 ，因为毕竟你把那个轮廓画在一个就是平面的一个矩阵里面 ， 它有些时候那个因为轮廓的那个曲线是一个数学上是无是无限大小的 ， 就没有那个粗细的嘛 。

**吴涛** [1:18:41]
对 。

**Rio** [1:18:41]
但是你画到那个点阵的时候 ， 还是会有一些左右占哪一格的问题 ， 就会有一些叫做 Hinting 的机制 ， 就告诉你说这个时候你应该放到左边还是右边 ， 上面还是下面 。

呃 ， 如果从这个角度讲点阵字库的话 ， 可以说是一个比较极端的 Hinting 的例子吧 。

**吴涛** [1:18:58]
呃 ， 这里说到 Hinting 的话 ， 呃 ， 我们干脆给它翻译成叫渲染提示吧 。

**Rio** [1:19:03]
嗯 。

### 渲染提示

**吴涛** [1:19:03]
这样可能大家会比较清楚一些 。

**Rio** [1:19:05]
对 。

**吴涛** [1:19:05]
呃 ， 呃 ， 就是说我即即便你在那个文呃 ，在 font 里面 ， 你存储的是数学的矢量的轮廓 ，但是你最后显示到这个屏幕上， 屏幕毕竟它是一个栅格化的一个东西 ， 所以呢 。

**Rio** [1:19:23]
那个你们那个念栅格 ， 我一直念栅 。

**吴涛** [1:19:26]
栅栅格 。

**Rio** [1:19:27]
到底是栅格还是栅格 ？

**吴涛** [1:19:28]
我跟甄雨还研究过这个东西 。

**Rio** [1:19:31]
哦 ， 好吧 。

**吴涛** [1:19:31]
结论是什么 ？

**Rio** [1:19:33]
结论是这个字的读音是一个坑 ， 这个字的正音规则是一个坑 。

**吴涛** [1:19:39]
还是念栅格栅 。

**Rio** [1:19:40]
因为我给它翻翻排的话 ， 我还大屎大耳了 。

**吴涛** [1:19:43]
对 ，因为呃 ， 我觉得严格来说 ， 栅才是它的标准音吧 ，但是它在很多地方都被误读成栅 ， 所以渐渐的好像字典的正音规则开始倾向于将一些经常被念成栅的术语也直接标成是栅这个音 。

**Rio** [1:19:58]
栅格 ， 那栅格化是什么 ？

**吴涛** [1:20:00]
就我现在是这么逻辑 ， 就是如果但凡涉及到电脑相关的就是栅 ， 然后但凡涉及到实体的那个那个泥巴栏 。

**Rio** [1:20:08]
栅栏 ， 栅栏 。

**吴涛** [1:20:09]
就是栅栏 。

**Rio** [1:20:09]
啊 ， 好吧 。

**吴涛** [1:20:10]
反正你知道我的意思 。

**Rio** [1:20:11]
翻译一下应用场景 。

**吴涛** [1:20:13]
那叫什么 ？Re-resteration 是吗 ？ 那英文怎么念来着 ？

**Rio** [1:20:16]
Rasterization。

**吴涛** [1:20:18]
Rasterize。

**Rio** [1:20:19]
Rasterize， 对 ， 就是要因为就涉及到从轮廓信息怎么样给它套到那个 。

**吴涛** [1:20:25]
像素矩阵上面嘛 。

**Rio** [1:20:26]
这个网网格上去 ， 矩阵上去嘛 。

**吴涛** [1:20:28]
对 。

**Rio** [1:20:28]
所以它不可能是套的正嗯 ， 正正好的嘛 。

**吴涛** [1:20:31]
嗯 。

**Rio** [1:20:32]
那那刚好就套在那个几格半点 ， 那我是往上挪呢 ， 还是往下挪呢 ？ 这这这有时候呢 ， 就是就是要渲染引擎来做这个事情 。

**吴涛** [1:20:41]
嗯哼 。

**Rio** [1:20:41]
那 Hinting 这个渲染提示呢 ， 就是来来进行这样一个工作 。

**吴涛** [1:20:46]
渲染提示有两种实现方式啊 ， 一种叫做 Auto Hinting， 就是在那个渲染引擎里面 ， 它通它提供了一个叫通用的一个 Hinting 的一个一个算法 ， 然后还有一个就是直接嵌入到字体内部的 ， 就是说告诉你说渲染引擎你虽然得出的是那个结论 ，但是我这个字体设计师 ， 我告诉你 ， 你我此处应该是这样 。

**Rio** [1:21:06]
呃 ， 我觉得那个我来我来再补充一点 ， 跟那个刚才说的这个渲染提示有关的东西啊 ， 就首先我觉得这里有一个问题 ， 就是说呃 ， 一个矢量的轮廓 ， 它经过了这样一个栅格化的过程中， 它肯定不可能是精确的显示 ， 它会有一种失真嘛 。

那么这其实是一个下采样的过程 ， 如果说用计算机的术语来说 ， 所以它这里有一个有一个信号处理的这个术语叫做混叠 ， 就是说当你从一个模拟的信号 ， 或者说一个非常高频的信号 ， 把它采样成一个低频的信号的时候 ， 这个信号就会发生一个混叠 ， 所以我们有一个术语叫反混叠 ，但是这个术语在那个字体的这个处理中经常被翻译成叫什么

抗锯齿的 ， 就是 anti-aliasing。

**吴涛** [1:21:52]
嗯 。

**Rio** [1:21:52]
但其实 anti-aliasing 这个词里面没有锯齿这个字啊 ， 它的标准翻译应该翻译成抗混叠或者说反混叠 ， 比如说 。

**吴涛** [1:22:00]
抗锯齿有点像一个意义 ， 就是 。

**Rio** [1:22:02]
对对对 。

**吴涛** [1:22:03]
就解释了这个东西最终是来干嘛的 。

**Rio** [1:22:05]
对 ，但是所以实际上我们就知道 ， 呃 ， 我觉得翻译成抗锯齿有点误导 ，因为很多时候 anti-aliasing 做的并不是一件抗锯齿的事情 ， 它可能跟锯齿这个事情完全没有关系 。

对 ，有的时候抗锯齿系统会有一套自己固有的方式来绘制这个曲线 ， 比如说是什么呃 ， 灰度层面的抗锯齿之类的 ，但是它并不是完全解决这个抗混叠的这件事情 。

那么微软想出来的这个 Hinting 的技术 ， 它是在这个通用的抗锯齿的这种思路上再加了一层 ， 比如说它将某一些曲线的形状进行了一些变异 ， 这个变异很可能是不规则的变异 ，是需要人工去指导的这个变异 ， 所以它给它加了一个 Hinting 的信息 ， 就是一个引导啊 ， 或者说一个什么提示的信息来告诉这个操作系统怎样去改变这个轮廓的形状 ， 使得它能显示得

更加的完美一点 ， 就大致上是这样的一个过程 。

**吴涛** [1:23:01]
但这也引入了一个哲学的一个问题 ， 就是一个一个设计哲学的问题啊 ， 就是说在 Windows 上， 它因为最开始的时候长期来看是相当长的一段时间 ， 我们在用那种所谓低分辨率的显示设备嘛 ， 就是可能只有我记得我最早的一个图形显示器是一个 640 乘以 480 的一个 CRT。

**Rio** [1:23:20]
哦 。

**吴涛** [1:23:20]
对吧 ？ 然后后来 。

**Rio** [1:23:21]
最早的显示器难道不应该是台电视吗 ？ 就那个 。

**吴涛** [1:23:24]
对啊 ， 就是 CRT 嘛 。

**Rio** [1:23:25]
80 乘 40 的字符 。

**吴涛** [1:23:27]
啊 ， 那个那个太 。

**Rio** [1:23:28]
小霸王其乐无穷啊 。

**吴涛** [1:23:29]
哈哈哈 。

**Rio** [1:23:30]
就说有有有故意的时候 ， 后来是升级成一个什么 800 乘 600 那个像素的一个什么索尼的什么什么什么特富龙还是什么什么什么龙的一个屏幕 ， 什么我我忘了一个名字了 。

然后再后来有了那个 LCD， 我记得当时标配是 1024 乘以 768 的嘛 ， 然后已经是非常晚近了才出现所谓的这个 120、15440 的 ， 当时就已经叫做高分屏的一种一种一种宽屏幕了嘛 。

但其实现在啊 ， 就在那个时候 ，他选择了说我们在这个有限的物理基础上尽量显示清楚嘛 ， 所谓清楚就是说笔画分明啊 ，不要出现模模糊糊那种那种效果 ， 所以导致刚才我们一个是说这个中译送全部是点阵 ， 小字号的时候全部是点阵字库 ， 还有像那个像那个微软做的那个字体什么 Arial 和 Verdana， 当时是在网页排版上用的比较多显示文字的

嘛 ， 还有那个叫做 Georgia，他们都在非就没有开抗锯齿的情况下， 显示的还是一种就是你可以看得出明显它是一一颗一颗小像素构成的这么一个一个字符 。

然后后来但是你对比一下在那个 Mac 上面 ， 它说嗯 ， 这个只是就是分就是显示器分辨率低 ， 这是一个暂时的物理限制 ， 时间长它会解决的嘛 。

那我说我们从长远的角度来看 ， 我们不要去做那么太多的叫做什么来的局部细节优化吧 ， 局部优化就是 local optimization，但是就想用一种通用的方法去显示 ，但虽然看起来就是有点模模糊糊灰的 ，但现在看来这个因为屏幕分辨率上上去了嘛 ， 就反而是我们觉得 Mac 上面显示的那套字的比较漂亮 ，因为它更加忠于反映出那个字体本身的设计师的一个

一个形状嘛 。

**吴涛** [1:25:15]
嗯 ， 这是一个非常重要的一个哲学 ， 呃 ， 设计哲学的呃 ， 不同取向问题吧 。

**Rio** [1:25:22]
对 。

**吴涛** [1:25:22]
一个是在呃 ， 设计字如何保持呃 ， 保持字体的设计和如何保持那个清晰的显示 ， 这样两个两个取向中，Windows 它取向的是尽量让它显示的清晰 ， 所以它不惜牺牲改改去牺牲设计 ， 它把那个字给改掉 ， 它会把这个显显示的像素给挪来挪去 。

**Rio** [1:25:45]
对 。

**吴涛** [1:25:46]
它特别看重 Hinting， 特别看重它的渲染提示 ， 然后用那个渲染 ， 然后去给它挪来挪去 ， 把这个字挪挪着去匹配它的显示的像素 ， 达到像素的呃 ， 字的显示的清晰度 。

**Rio** [1:25:58]
对 。

**吴涛** [1:25:58]
但是牺牲了文字的设计形状 。

**Rio** [1:26:01]
对 。

**吴涛** [1:26:01]
而 Mac 呢 ， 它是为了保证这个字体设原来的形状 ， 它可能嗯 ，有时候牺牲字体的清晰度 ， 虽然暂时对 ，但是呃 ， 比如说在老老的屏幕上， 它可能显示回去比较模糊 ，但是随着硬件的的现在的逐步的发展呢 ， 它依然能保持它的字体设计 ， 它原来的一个造型和形状 。

**Rio** [1:26:26]
对 ， 现在我们用的那些智能手机都是高分屏了嘛 ， 基本上就就没不存在这个问题了 。

**吴涛** [1:26:34]
所以啊 ，Windows 还是工程师做出来的呀 ， 做 Mac 的都是艺术家嘛 ， 就是这一点嘛 。 你要是作为一个字体设计师 ， 就怎么搞的嘛 ， 对吧 ？

你怎么我的字就全部都都改掉 ， 都不是我的字了 ， 就变成 。

**Rio** [1:26:50]
哈哈哈 ， 这没办法 。

**吴涛** [1:26:53]
也也不能完全这么说吧 ，因为其实早期在三四十年代 ， 就是二二十世纪三四十年代的时候 ，不是也有什么呃 ，grid based 呃 typography， 就是它本身就是在是在一个矩阵格上设计的字体 ， 然后微软早期请来了自己的设计师 ，其实也是一上来就明确的知道自己需要设计一套在呃 ， 当时的高分屏 ， 现在的低分屏上面能够清晰显示的字体 ， 所以这其实也是他们自己的选择嘛 ， 就

呃 。

**Rio** [1:27:28]
就是在当时的设计的制约上， 然后尽量去做好的设计版本 。

**吴涛** [1:27:33]
因为其实每个时代都有他们自己的那个字体设计的制约 ，以前在千字时代其实也有 ，其实多少多多少也有些制约的 ， 比如说早期那个喇叭口什么的这种东西 ， 都是在千字时代才出现那种为了对抗那个技术上的缺陷而出现的一些特征嘛 。

**Rio** [1:27:52]
就永末的那个叫什么 ， 就是进到别的地方去的那个问题嘛 。

**吴涛** [1:27:56]
Curly 呢 ， 还有合体字啊 。

**Rio** [1:27:58]
啊 ，也是 。

**吴涛** [1:27:58]
喇叭口一开 ， 汉字的喇叭口一开始是为了抗磨损嘛 。

**Rio** [1:28:03]
啊 ， 应该是在赵牌时代防止那个这个折角的地方过于圆润 。

**吴涛** [1:28:10]
对 。

**Rio** [1:28:10]
用赵牌是将一个小底片进行缩放这样的过程 。

**吴涛** [1:28:15]
OK， 然后拉丁语的拉丁语的衬线 ，其实最开始也是因为在雕刻的时候 ， 你要把那个字母雕的比较比较怎么说 。

**Rio** [1:28:24]
适合那种刀的硬方式 。

**吴涛** [1:28:26]
结构上比较 OK， 然后刻起来又不是太麻烦的话 ， 衬线其实一开始就是刀的那个雕刻刀的走口嘛 。

**Rio** [1:28:35]
就最锋利那一部分嘛 。

**吴涛** [1:28:37]
嗯 ， 对 ， 你看最开始的希腊语的希腊语传统上是没有衬线体的 ， 即便现在希腊语在正式场合也是只有黑体的 ， 你不你不能因此说就是衬线体就是古典 ，因为比它更古典的东西是黑体 。

**Rio** [1:28:52]
嗯 。

**吴涛** [1:28:53]
所以对 ， 我觉得每个时代的技术都对字体有技术都对字体有影响 ， 然后呃 ， 我十年前还是偏爱点阵字体的 ， 就我不觉得 Mac 那一套比较好看 ， 说实话 。

**Rio** [1:29:07]
嗯 。

**吴涛** [1:29:07]
当然可能也跟我是个程序员有关 ， 现在是无所谓了 ，不过 。

**Rio** [1:29:12]
是一个什么 ？

**吴涛** [1:29:14]
实用主义者 。

**Rio** [1:29:15]
我觉得其实 Windows 那一套在西文字体上的表现并不算差吧 ， 就从从最开始直到现在 ， 我觉得而且它那套系统是一直在改进的 ，但是我觉得 Windows 犯的比较致命的错误是在这个汉字的 Hinting 技术上面走了一些歪路吧 。

**吴涛** [1:29:35]
走上了不归路 ， 我觉得 。

**Rio** [1:29:36]
就是一方面汉字的 Hinting 并不像西文的 Hinting 那么容易 ， 另一方面实际上在操作汉字 Hinting 的那一波工程师和设计师团队 ， 可能对汉字并不是那么的熟悉 ， 包括在审美上和一些字形的细节上， 所以导致了他们现在汉字的这个渲染效果就不是那么的理想 。

**吴涛** [1:29:58]
并且相当长一段时间内 ， 就是字体渲染引擎这套东西还是在这个就是拉丁语系的的这个工程师的指导下开发的吧 ， 应该 。

**Rio** [1:30:08]
嗯 ， 感觉上是 。

**吴涛** [1:30:10]
是的 ， 就比较看这有些节就有些选择 ， 看在那个母语的人是看起来挺奇怪 ，但是也没办法 ，因为当时条件有限嘛 ， 你没有那么多人才去弄 ， 那现在情况就不一样了啊 ， 大家别的不说 ， 我看现在各个这个什么手机厂商都在搞自定义字体了 ， 还挺厉害的 。

**Rio** [1:30:29]
哈哈哈 。

**吴涛** [1:30:29]
对 ， 现在已经有很多 。

**Rio** [1:30:30]
哈哈哈 。

**吴涛** [1:30:31]
从老罗开始吧 ， 就是从发布一个新系统的时候 ， 会把字体拿出来说这是我们的一个特征 。

**Rio** [1:30:38]
对 ， 这个也挺挺好 ，但是哎 ， 还是那个问题 ， 就是这不同的哲学还是有不同的结论的 ， 就包括现在刚才吴涛提到一个 ， 就是说在不同的就是为做字体设计的时候 ， 你也有这些不同的应用场景的考虑嘛 ， 过去会说是一个什么显示字体和这个打印字体 ， 这两种情况也不一样 ， 对吧 ？

打印的话你用你用什么方式打印 ，其实我觉得本质上还是说一个分辨率的问题吧 ， 就是说呃 ，因为打印的话 ，不管用当时用这种激光还是喷墨 ， 它的那个就所谓的就是分辨率 DPI， 或者是屏幕上 PPI， 还是有一个就数量级的差异 ， 只是说现在 。

几千的对吧 ？DPI 都几千几千 。

**吴涛** [1:31:19]
呃 ，DPI 一般是最最低的也要三也有 300 嘛 ， 就是有有 300 个 dot，但是它那个算法不太一样 ，因为它是因为比如它喷墨的话 ， 就打黑白的情况下 。

**Rio** [1:31:29]
喷墨的墨点不一样 。

**吴涛** [1:31:30]
对 ， 它喷墨的墨点超小 。

**Rio** [1:31:32]
因为它不它有个这个问题 ， 就是它没有办法调浓度 ， 就是它不可能说这个墨水有有浓度的深浅 ， 它只有一种浓度的墨 ， 它能怎么实现这个所谓的这个灰度呢 ？

就是说靠那个把那个墨小墨点分配的这个在单位那个面积上分打的多点还是少点的问题嘛 。

那么这个时候 DPI 就和 PPI 有一个最本质的区别 ， 就是一个像素点 ， 它其实理论上可以显示 ， 如果只只只考虑这个就灰阶的话 ，也有 256 种灰度嘛 ， 就你从最黑到最白嘛 ，但是你在一个一个同样的小方块面上面打印这个墨点的话 ， 它其实你只能说喷 10 个墨点和 1,000 个墨点这种区别 ， 所以这个时候 DPI 并不能完全和 PPI 的计量方式等同 ，但是单看数字的

话 ， 确实通常是要高一个数量级了 ， 像 1,200 啊 ，1,800 啊 ， 这些都还比较常见的嘛 。

**吴涛** [1:32:28]
嗯 ， 打印机的那个点都都都是几千几千 。

**Rio** [1:32:32]
对啊 ，3,600 那种高级就是专业打印机 3,000 多以上也是很正常的 ， 所以但现在如果我现在看有些这个呃 Retina 的这种屏幕 ， 现在比如说你看那个 iPhone 6 加 ， 就是那个大号那个 ， 它不是说有是是一个三倍的的吗 ？

三倍的话 ， 你再算上它的一个亚像素 ， 就是每个每个像素点 ， 它是红蓝绿三个颜色嘛 ， 对 ， 然后你再把亚亚像素也算进去的话 ， 它的那个实际的呃 PPI 其实是可以在很多程度上和那个 DPI 有在数量级上是可以相提并论的 。

**吴涛** [1:33:04]
接近 in dropping 了 。

**Rio** [1:33:05]
对对对 ， 这个时候就很多人就比如老师说这个那个什么 iPad 那个高级 ， 就是 Retina iPad 出来之后， 大家说哇 ， 这个就是什么 ， 就是就是打呃高精度印刷的那种彩色杂字封面的那种那种显示质量 ， 就是因为这个分辨率达到了一个新的量级之后产生的一个质变嘛 。

**吴涛** [1:33:25]
对 ， 就终于感觉是是印在屏幕上 。

**Rio** [1:33:27]
没错没错没错 ， 所以我觉得可能现在越往后走哈 ，而且而且现在还有一个新的趋势 ， 就是那个我们讲那个 VR AR 那个眼镜嘛 ， 它为了实现嗯那个没有没有网格的那种颗粒感 ， 它也要不断去提高那个像素嘛 ， 就是以后还就是 PPI 还会往上涨 ， 可能一一两个数量级 ， 这个时候我们再看就不存在 ， 可能是说以后的屏幕的质量肯定是要高于这个纸张

了 ，因为纸张它还是不是不够完美嘛 ， 它的那个精度来讲 ，因为你通过墨汁去控制也好 ， 还有那个那个墨水的浸染的一个问题也好 ， 它可能还不如以后那些超高分辨率的屏幕嘛 ， 所以我对未来的那种显示技术还是挺看挺挺看好的 。

**吴涛** [1:34:09]
嗯 ，但是我们追逐了这么多年， 终于赶好不容易才赶上这个纸质的那个 。

**Rio** [1:34:16]
对 ， 就是 。

**吴涛** [1:34:17]
我们现在才赶上， 我想问一下你们最早用的 OS10 最早的版本是 10 点几 ？

**Rio** [1:34:24]
我应该是 10.5 的时候切呃开始用的 ，10.5、10.6 的时候 。

**吴涛** [1:34:29]
你们还你们还记得就是早年就是 OS10 他们在抓屏的时候 ，在 screen capture 的时候 ， 所以默认是现在是默认是 PNG 格式是吧 ？

**Rio** [1:34:40]
呃不 ， 它还是那个 TFF。

**吴涛** [1:34:43]
What？

**Rio** [1:34:43]
PNG 吧 ， 我我是反正我用 Ctrl Shift 4 的时候会出来 PNG。

**吴涛** [1:34:49]
不 ， 那个你你你你存一下， 它保存下来默认是 TF， 你要再你要手工选一下， 它才会转成 PNG 的 。

**Rio** [1:34:56]
不是不是 ， 默认的是 PNG。

**吴涛** [1:34:58]
哦 ，What？

**Rio** [1:34:59]
哪里 ？

**吴涛** [1:35:00]
默认是 PNG。

**Rio** [1:35:01]
呃 ， 你开那个 grab 嘛 ， 你开 grab 你抓屏的时候 ， 它就是 GRAB 那个程序嘛 ， 你拍完之后的话 ， 它保存的时候 ， 我应该默认的时候应该是这个时候是不能选 PNG 的 。

**吴涛** [1:35:13]
那个可以选 ， 呃 ， 那个可以选 。

**Rio** [1:35:14]
不 ，不能选 PNG。

**吴涛** [1:35:15]
但是 。

**Rio** [1:35:17]
你可以试一下， 我我我我比较确定这一个 。

**吴涛** [1:35:23]
呃 ，What？ 哦 ， 你说用 grab 程序的截图的时候是 。

**Rio** [1:35:28]
对 ，但你用那个快捷键就是用的 grab 嘛 。

**吴涛** [1:35:32]
嗯 ， 对 ， 呃 ， 然后它这个时候是 TF 是不能改的 ， 你得存完之后再用那个 preview 打开 ， 然后再另存为 PNG 格式 。

**Rio** [1:35:41]
对对对 。

**吴涛** [1:35:41]
嗯 ，OK， 这个这个是我最最最恼火的一个事情 ， 所以后来我的解决方案就更简单 ， 就绕过这一条了 ，因为 grab 它有两种应用方式 ， 一个是保存成文件 ， 另外一个是保存到内存里面 ， 保存内存里面之后呢 。

**Rio** [1:35:57]
就是 Windows 剪贴板嘛 。

**吴涛** [1:35:59]
啊 ， 对 ， 没错 ， 然后这个时候你你再开一个空白的 preview， 然后再按粘贴的话 ， 它会自动把那个粘成一个到 preview 里面去 ， 那个那个截图 ， 就是说你在这个时候点保存就有 PNG 可以选了 ， 就可以绕过一次先存为 TIFF， 然后再转成 PNG 这么一个尴尬的这个状况 。

**Rio** [1:36:18]
所以你在 Mac 上面截图的方法和 Windows Windows 上面人的截图方法是一样的 。

**吴涛** [1:36:24]
哎 ， 没错 。

**Rio** [1:36:25]
哈哈哈 ， 没错 。

**吴涛** [1:36:28]
我之所为什么问这个 ，是因为就在普通的那个归一里面 ， 就大家是默认它会自动会出 ping 嘛 ， 就是 PNG 文件嘛 ， 然后在早期的那个 OS10 里面 ， 它默认保存是一个 PDF 文件 。

**Rio** [1:36:42]
嗯 ， 对 ，OK。

**吴涛** [1:36:45]
PDF 这个事情也要也要可以讲一下， 如果我没记错的话 。

**Rio** [1:36:48]
对 。

**吴涛** [1:36:48]
因为当时整个那个就是 Mac 的 OS10 的那个 GUI 最开始是基于 PDF 同一套技术来做的 。

**Rio** [1:36:56]
对对 ， 它就等于我是我是想说的这一点 ， 就是说从 OS10 开始做开始 ， 它就等于是想把这个所有的这个 GU 啊 ， 这个 UI 印刷在屏幕上 。

**吴涛** [1:37:09]
没错 ， 它是用一套用于 。

**Rio** [1:37:12]
描述打印机的方式 。

**吴涛** [1:37:13]
来做屏幕显示 。

**Rio** [1:37:16]
来来做屏幕显示的 。

**吴涛** [1:37:17]
对 ， 所以呢 ， 它整个引擎当当年它我们应该说 Mac 的那个文字引擎 ， 它是用什么 Core text text 是吧 ？

**Rio** [1:37:25]
Core text， 对 。

**吴涛** [1:37:28]
Text 对吧 ？

**Rio** [1:37:28]
Core text。

**吴涛** [1:37:29]
但是从 OS10 最早开始 ， 它的这个渲染的这个思想就是要把整个 UI 印刷在屏幕上 。

**Rio** [1:37:37]
对 ， 对 ， 这个这个有个挺好的一个一个一个结果 ， 就是 PDF 这个格式在 OS3 上支持的相当好 。

**吴涛** [1:37:47]
它是原生支持 。

**Rio** [1:37:48]
对对对 ，不像 Windows 大家开个 PDF， 现在好像 Windows10 有终于有那个原生的呃显示那个 PDF 文件的一个支持了 ， 我记得之前的版本都还在在得装一个那个叫什么 Acrobat Reader 嘛 。

**吴涛** [1:38:02]
Acrobat。

**Rio** [1:38:02]
对 ， 或者是大家国内用的那个叫福星 ， 你知道吗 ？Foxit。

**吴涛** [1:38:07]
啊啊 ， 好吧 。

**Rio** [1:38:09]
呃 ， 那个那个那个一个 PDF 阅读器很多人用 ，因为那个比较轻量级嘛 ，Acrobat Reader 非常重嘛 ，但不像在 OS3 上那个 preview 这个程序就看图看 PDF 通 ， 还有那个叫 EPS，EPS 还有 PS， 就这几个都是都是同同源的一个技术嘛 ， 都可以直接显示 ， 对啊 ， 对啊 ， 很方便 。

**吴涛** [1:38:30]
就其实都是都是 PS 啊 ，Post Script 的曲线嘛 。

**Rio** [1:38:34]
对对对 。

**吴涛** [1:38:35]
啊 ， 对 ， 那一套叫做 Display PostScript。

**Rio** [1:38:39]
嗯 ， 然后这但这也就扯到之前那个字库文件的问题了 ， 就字体文件的问题了 。

**吴涛** [1:38:45]
终于扯回来了 ， 我靠 。

**Rio** [1:38:47]
我好不容易把你们再给我拽回来 。

**吴涛** [1:38:50]
对 ，因为就是所谓的这种向量字库的话 ， 它有两种通用的呃比较常用的格式 ， 一种是叫做 TrueType， 还有一种叫做 OpenType， 对吧 ？

**Rio** [1:39:00]
嗯 。

**吴涛** [1:39:01]
然后如果我没记错的话 ，OpenType 是 Adobe 和苹果当时搞的 。

**Rio** [1:39:08]
呃 ，TrueType 是 。

**吴涛** [1:39:11]
苹果 。

**Rio** [1:39:11]
等下 ，是 。

**吴涛** [1:39:12]
微软和苹果搞的 。

**Rio** [1:39:14]
OpenType。

**吴涛** [1:39:15]
Adobe 搞的 。

**Rio** [1:39:16]
微软和 Adobe 搞的 。

**吴涛** [1:39:18]
没错 。

**Rio** [1:39:18]
OpenType 当年就苹果没参与 。

**吴涛** [1:39:20]
OpenType， 对对对 ，OpenType 应该没有苹果 ，是不是 ？

**Rio** [1:39:22]
嗯 ，OK， 对对对 。

**吴涛** [1:39:23]
OpenType 苹果没参加 。

**Rio** [1:39:25]
对 ，其实本质上我觉得大头都是在 Adobe 那一边 。

**吴涛** [1:39:29]
它是出版界的老大嘛 ， 它说什么才是才才能算 。

**Rio** [1:39:32]
没有 ， 最早就是在很久很久以前 ， 就是都是 Adobe 来做嘛 。

**吴涛** [1:39:37]
对 。

**Rio** [1:39:37]
然后为了对抗 Adobe， 苹果和微软这两家居然结合起来 ， 一起做出了一个 TrueType 去对抗 Adobe， 所以这是第一次字体大战 。

**吴涛** [1:39:48]
嗯 ， 那那个 TrueType 和 OpenType 的本质区别是什么 ？ 我一直没太搞明白 。

**Rio** [1:39:53]
OpenType 是 TrueType 的一个扩展啊 ， 没记错的话 ， 就 OpenType 本质上其实就是 TrueType， 只不过有多一些其他的支持 。

**吴涛** [1:40:02]
啊 ， 就是 OpenType 它它我们说 OpenType 有两种意思 ， 就是那个字体的封装格式和它一个封装的东西 ， 还是说它这个轮廓 。

**Rio** [1:40:11]
就里面的内容 。

**吴涛** [1:40:12]
OpenType， 对对 ， 如果说狭义的讲的话 ， 就 TrueType，TrueType 它的曲线是那个 ， 它是二次贝塞尔 。

**Rio** [1:40:20]
贝塞尔曲线 。

**吴涛** [1:40:21]
嗯 ， 二次贝塞尔 ， 然后那个 OpenType 呃就是以前的 PS 曲线嘛 ， 这是三次贝塞尔曲线 。

**Rio** [1:40:27]
嗯 ， 就曲线它本身数学的描述方式是不一样的 。

**吴涛** [1:40:30]
它这两种有什么优劣之分吗 ？ 二次的和三次的贝塞尔曲线 。

**Rio** [1:40:34]
有的 ，因为二次二次的呃曲线的话 ， 它是一一段曲线嘛 ， 它起点和终点嘛 ， 然后中间有个控制点来控制 。

**吴涛** [1:40:44]
嗯 ， 你中间控制完左点或者往右点 ， 那个曲线形状发生变化 。

**Rio** [1:40:47]
对 。

**吴涛** [1:40:48]
这是 TrueType 二次的 。

**Rio** [1:40:50]
嗯 。

**吴涛** [1:40:50]
那 PS 的那个它是三次 ， 它三次就是说除了起点终点以外， 它有两个控制点来手柄来调那个曲线 。

**Rio** [1:41:00]
OK。

**吴涛** [1:41:01]
嗯 ， 所以三次的话 ， 它那个它那个点要更多 。

**Rio** [1:41:04]
但这是有闪现变数 。

**吴涛** [1:41:05]
三次精度不一定更好吗 ？ 三度三次精度应该更好呀 。

**Rio** [1:41:10]
所所以就经常会有 ， 比如说三次曲线转二次曲线和二次曲线转三次曲线的问题嘛 。

**吴涛** [1:41:15]
就会有 。

**Rio** [1:41:16]
三次曲线的点哦 ， 会会嗯 ， 会有会有损 。

**吴涛** [1:41:19]
OK。

**Rio** [1:41:20]
就说三次转二次的时候会有损 ，因为三次它本来它用的点更多嘛 。

**吴涛** [1:41:25]
对对 。

**Rio** [1:41:26]
二次只用三嗯嗯点更少嘛 ， 反过来二次转三次的时候 ， 这个损损失就会更少一点 。

**吴涛** [1:41:32]
应该没有损失 ， 你如果你把中间两个控制点放到同一个位置 ， 就是等于是三次的曲线 ，但是表示二次的曲线的那个方那个啊 ， 同样的同样的一个一个曲线嘛 。

**Rio** [1:41:45]
对 ， 这是单纯从曲线的那个数量来来来说的 ， 当然如果你还有其他的其他的那个参数不一样 ， 它也也也会影响到它这个转的这个压缩的问题 。

**吴涛** [1:41:55]
OK， 好吧 ， 所以现在常用的还是就 TrueType 的比较多一点嘛 ， 就是 TTF 结尾的 。

**Rio** [1:42:01]
Windows 一般都用 ，Windows 一般用 TrueType 比较多 ，而且 Windows 它的 TrueType 字体里面 ， 它会加很多很多大量的那个那个渲染提示 Hinting 信息 。

**吴涛** [1:42:11]
啊 ， 对 。

**Rio** [1:42:11]
而 OpenType 呢 ， 它们只它只是一个比较宽泛的一个这个 Hinting， 大概就是这样子 。 呃 ， 它这非常就是宽泛的一个形式 。

**吴涛** [1:42:21]
那这还是跟应用场景不一样吗 ？ 像 TrueType 的话一般是用于显示的嘛 ， 然后 OpenType 它那个一般用于就 Adobe 一般是做打印的东西的嘛 。

**Rio** [1:42:30]
嗯 ，Windows 它 。

**吴涛** [1:42:32]
至少也没有吧 ， 基基本上在 OpenType 之前 ，Mac 上面的字体几几乎也都是 TrueType， 就你拿来 。

**Rio** [1:42:39]
TrueType 的 。

**吴涛** [1:42:40]
买 ， 你就是你如果你是一个设计平面设计师 ， 你买的字体基本上也都是 。

**Rio** [1:42:45]
不不 ， 我我我我是说就是 Adobe 它出的那字体的那些 OpenType 字体 ， 它没有很多 Hinting 信息 ，是因为它没有必要做嘛 ，因为大家买它那个字体一般是用来专业用打印的嘛 ，不是用来显示在 。

**吴涛** [1:42:57]
啊 ， 这这是有一个有一个历史问题 ， 就是首先是这样子 ，Adobe 最初的那个 PostScript， 这是它的专利技术 ， 然后它在这个专利技术上开发了一种字体格式叫 Type 1。

**Rio** [1:43:10]
嗯 。

**吴涛** [1:43:11]
对 ， 这是这是 Adobe 最经典的 PostScript 技术 ，而且也是沿用到现在的一个最好的 ， 包括像 OpenType 里面用的曲线信息也是这个 Type 1 为基础的 。

那么 。

**Rio** [1:43:24]
大家拉的那个三次的贝塞尔曲线都是 。

**吴涛** [1:43:27]
Type 1 呢 ， 它是 Adobe 的这个私有专利 ， 它是一个收费专利 ， 如果你要用 Type 1 技术 ， 你得给 Adobe 支付非常高昂的这个专利费 ， 所以当时那个无论是微软还是 Apple 都不想支付这笔钱 ， 于是他们合作搞了一个 TrueType， 想来就是以不支付专利的方式 ， 同时使用一个类似于 Adobe 的技术 。

为什么要这么搞呢 ？ 是因为其实当时 Adobe 还发布了应该是 Type 3 吧 ， 我记不太清了 ，是 Type 3 还是 Type 4， 它是一个呃 ， 怎么说呢 ， 它是 Adobe 的专利技术 ， 同时呢 ， 它是一个好像可以免费使用的 ，但是这个东西在屏幕上用来做这个山格化的效果好像就不好 ， 具体原因我不是很清楚 ，而且据说它的那个山格化的效率很低 ， 所以 Apple 和那个 Windows 才没有用这一

套免费的技术啊 ， 去搞了自己的东西 。 那么后来 Windows 上留下了这么多的这个 TrueType 字体 ， 都是因为他们最初使用了这样一套技术 ， 同时呢 ， 又设计了很多为这个 TrueType 优化过的这个字体 。

嗯 ， 这个就要回到最初呃 ， 你们在讨论的那个问题 ， 就是说究竟是二次曲线好还是三次曲线好的问题 。

我个人觉得两种其实是没有差别的 ，因为如果说你给设计师的这个工具就是二次曲线的话 ， 它就是能用这个工具画出一个完美 ，在他看来完美的一条曲线 ，但是如果你给他一个三次曲线的工具 ， 那么他画出来的是三次曲线的完美的曲线 。

但是这两种曲线在互相转换的时候 ， 如果这个转换程序不那么的好的话 ， 就有可能会出一些问题 ，但通常来说这个数学问题并不难解决 。

所以我们市面上看到的一些 TrueType 字体的这个曲线质量不好 ， 多半是由于字体厂商故意将它们转的不太不怎么好的 ，有可能是故意转的不好 ， 比如有人有人就说国内某字体大厂是故意出了一套低质量的 TrueType 字体 ，以便它的那个 OpenType 的字体可以卖出一个比较好的价钱 。

**Rio** [1:45:29]
就可以可以卖专业字体和这种就非专业字体的这个区别定价了吧 。

**吴涛** [1:45:35]
对对对 。

**Rio** [1:45:36]
对 。

**吴涛** [1:45:36]
哇 ， 太鸡贼了这个 。

**Rio** [1:45:41]
然后呢 ，OpenType 我们还说它还有一个封装的格式 。

**吴涛** [1:45:45]
嗯 。

**Rio** [1:45:45]
它其实就是个盒子 ， 那里面呢 ， 它可以把 TrueType 曲线的东西装在这个盒子里面 ， 最后包装出来也是一个 OpenType 字体 。

**吴涛** [1:45:53]
嗯 。

**Rio** [1:45:55]
嗯 ， 这跟和那个视频文件一样的嘛 。

**吴涛** [1:45:57]
对对 ， 就是 MKV 里面可以装各种各样的视频流音频流嘛 。

**Rio** [1:46:01]
对对 ， 所以呢 ， 就是曲线的描述方式和最后那个封装 ， 封装格式是两个层次的东西 ， 都都可能是 OpenType。

哎 ， 所以这点有点复杂 。

**吴涛** [1:46:11]
但是现在好像那些呃 ， 我看哈 ， 就是比如 Adobe 现在也有也有在卖那些所谓的专业字体嘛 ，他们自己卖的好像基本上还是以 OpenType 封装为主 ，因为 OpenType 这些比较高阶的特性 ， 什么什么 Optical 那些乱七八糟的 。

**Rio** [1:46:25]
嗯 。

**吴涛** [1:46:26]
也高级特性 。

**Rio** [1:46:27]
对 ， 它有很多 Feature 啊 ，有很多那个叫什么特征功能嘛 。

**吴涛** [1:46:31]
这个好像 TrueType 好像就暂时好像支持不了吧 。

**Rio** [1:46:35]
对 ，因为 TrueType 的规范里面没有那些数据 ， 就其实它们都是一张张表了 。

**吴涛** [1:46:41]
对 ， 表叫 Table。

**Rio** [1:46:42]
对 。

**吴涛** [1:46:43]
所以现在整个字体格式的嗯 ， 整个字体格式大取向就是大家都是往那个 OpenType 转 。

**Rio** [1:46:49]
嗯 。

**吴涛** [1:46:50]
而且刚才也说了 ，OpenType 它本来就是一个大盒子嘛 。

**Rio** [1:46:52]
对 。

**吴涛** [1:46:53]
那你原来那个轮廓 ， 那个 TrueType 轮廓曲线也可以装进去 ， 那很多现在就是把那个曲线的轮廓先装进来 ， 然后再加上 OpenType 特有的那些 Feature 给封装成一个 OpenType 的一个字字库 ， 很多人是这样做的 。

**Rio** [1:47:07]
但我们必须要再重复说一下， 就是说呃 ， 我们说的这个通常说这个 Hinting 技术 ，也就是专指 Windows 的那一套 Hinting 技术 ， 它是只对 TrueType 有效的 ，而我们说的在这个 PostScript 上做的这个 Hinting， 这个 Hinting 跟 TrueType 的 Hinting 完全不是一回事 。

就虽然它们的名字都叫 Hinting 啊 ，但是对 ，但是这个 PostScript 的这个 Hinting 是一个比那个 TrueTypeHinting 要微弱的多的 ，而且通常可能是在打印设备上才有效的 ， 我不是很清楚 。

**吴涛** [1:47:40]
嗯 。

**Rio** [1:47:40]
总之它们完全不是一个量级的这样一个效果 。

**吴涛** [1:47:44]
嗯哼 ， 嗯哼 。 那这里要可能不得不提一下那个不同的操作系统的那个它怎么去 ， 就是它那个叫做渲染引擎的区别了哈 ， 这个好像很古老很古老以前 ， 我们我们还在那个 AppleFlash 的时候有有尝试过写这么一篇系列 ，但是后来没有没有做成 ，因为实在是太多技术知识要弄了 。

**Rio** [1:48:06]
太坑了 。

**吴涛** [1:48:07]
巨大的坑 。

**Rio** [1:48:10]
我 Windows 和 Mac 不一样 ， 然后各个浏览浏览器不一样 ， 然后同样浏览器在不同的那个系统上面 。

**吴涛** [1:48:17]
对啊 ， 对啊 。

**Rio** [1:48:18]
这个啊 ， 不同版本还不一样 ， 都疯掉了就 。

**吴涛** [1:48:22]
而且这个东西也在不同的就还在变化中， 比如说那个像嗯啊 ， 微软的那套他们叫做 ClearType 的技术 ，也在不断的每一个版本的 Windows 它在不断的优化去发的更新的版本嘛 ， 还有像那个苹果那个什么 Cortex 那套也是在不断的变化 ， 它那个叫什么 AAT 吧 ，Apple Advanced Typography 那那个那个渲染引擎 。

**Rio** [1:48:44]
啊 ， 那个比较 。

**吴涛** [1:48:45]
对 ， 那个就最最开始是 OS 上是搭载的那个嘛 ， 后来像什么 Cortex 啊 ， 又又又开始变了 ， 就是也不是一个静态的东西 ， 就很难去讨论它 。

**Rio** [1:48:55]
嗯 。

**吴涛** [1:48:56]
哎 ， 我不知道那个安卓和 iOS 上面是怎么弄的 ， 就从来没有没见人讲过 。

**Rio** [1:49:03]
但是基本上 iOS 就是就承嗯继承这个 OS。

**吴涛** [1:49:06]
Cortex 那套吧 。

**Rio** [1:49:08]
对 。

**吴涛** [1:49:08]
OK， 那安卓怎么样啊 ？ 我不知道哎 。

**Rio** [1:49:10]
因为安卓它就很奇怪啊 ，因为安卓它不是基于之前的 ， 就不是基于这两个 Windows 和嗯 OS 的嘛 ， 它应该是 Linux 来的一套什么技术改的吧 ， 我不太清楚 。

**吴涛** [1:49:23]
哎 ，其实 Linux 上面的屏幕显示可以调的部分 。

**Rio** [1:49:29]
更多 。

**吴涛** [1:49:29]
在 ClearType 出现之前就有好几种 ， 对 ， 这就最基本的有四种 ， 一种是完全不要 Hint， 一种是呃什么使用简单的 Hint。

**Rio** [1:49:42]
对对对 。

**吴涛** [1:49:42]
轻微重度和全 。

**Rio** [1:49:45]
什么 Full Hint。

**吴涛** [1:49:46]
对 ， 我相信对 ， 这套其实应该也是也是一个比较值得研究一下的话题 ， 只不过我们在做 。

**Rio** [1:49:54]
哎 ，Linux 上面那个常用的那个渲染引擎叫什么来的 ？ 名字我都忘掉了 ，以前用那个 Ubuntu 做桌面的时候还研究过一段时间 。

**吴涛** [1:50:03]
呃 ， 这这个最重要的是它跟那个呃发行版是相关的 ， 就你你要用一些那个呃

Figma 的 。

**Rio** [1:50:14]
嗯 。

**吴涛** [1:50:15]
啊 。

**Rio** [1:50:15]
嗯 。

**吴涛** [1:50:16]
对 ， 就这个这跟 GNOME 有关 ， 就你用 QT 的话 ，QT 自己有一套 ， 然后用 GNOME 的话 ，GNOME 有一套 。

**Rio** [1:50:22]
对 。

**吴涛** [1:50:23]
然后它们全都是就相当于就对那个 Linux 的显示是显示是一个非常巨大的坑 。 首先你可能底层有一个 XWindows， 然后 XWindows 完全不去理会 Hint 或者是什么呃轮廓描述这一套的 ， 然后你在 XWindows 上基础上又很多人做出不同的这个渲染引擎来 ， 然后每个渲染引擎又有自己的策略 。

所以这个是在 Linux 这边是不能以操作系统而论的 ，而是要以发行版和那个呃窗口管理器呃具体情况具体讨论的 。

**Rio** [1:51:00]
哦 ， 天呐 。

**吴涛** [1:51:01]
对对 ， 这是巨大的巨大的坑 。

**Rio** [1:51:04]
果然是一辆好坦克 。

**吴涛** [1:51:07]
好了 ， 现在我们键盘上打了几个字 ， 然后呢 ， 通过我们的键位呃输入法转出来 ， 现在再通过调用我们的字库文件 ， 终于经 。

**Rio** [1:51:20]
然后还有渲染 。

**吴涛** [1:51:20]
渲染跳过 。

**Rio** [1:51:21]
终于显示在屏幕上 。

**吴涛** [1:51:24]
呃 ， 对 ，其实 。

**Rio** [1:51:25]
然后终于显示在屏幕上了 。

**吴涛** [1:51:27]
对 ， 这个过程还是忽略了很多东西 ， 比如说那个呃 ， 比如说那个 E 上加一撇的发育字母 ， 它可能有好几种 。

**Rio** [1:51:38]
组合的问题 。

**吴涛** [1:51:39]
可能有好几种组合的方式 ， 对 。

**Rio** [1:51:42]
没有没有 ， 这还涉及到那个呃 Unicode 的事情 。

**吴涛** [1:51:45]
对 。

**Rio** [1:51:45]
就是那个组合 。

**吴涛** [1:51:46]
对 ， 先不是排版引擎的问题 ，而是一个就是你怎么把 。

**Rio** [1:51:50]
编码 。

**吴涛** [1:51:51]
不同的字符组合在一起的问题 ，而然后还有一个数数的问题 ， 就是啊 。

**Rio** [1:51:56]
对 。

**吴涛** [1:51:57]
你要说 E， 如果这个字符是一个 E 加一撇合成合成的 E 呢 ？ 还是呃 ， 它比如说是拉丁一里面的那个呃高位区的那个独立的一个字符 E， 这两个字符你可能在不同的操作系统里面数出来的结果是不一样的 。

有些人有些操作系统 。

**Rio** [1:52:17]
就是两个字一个字一个字吧 。

**吴涛** [1:52:19]
有些编程语言说哦 ， 这是两个 byte， 然后有些人有些操作系统则会告诉你说哦 ， 这是一个字符 ， 对 ， 这些其实也是 。

**Rio** [1:52:29]
这个日语里面也有吗 ？ 就像刚才在日本讲名那个浊音点嘛 ， 它其实也可以通过那个组合形式来实现的啊 ， 所以那也是那看起来是一个字 ， 那其实它是一个码位的字 ， 就低就是低区位的一个码位的字 ， 还是它是两个组合起来两个字 。

嗯 ，在日语日本里面也是有这个问题的 。

**吴涛** [1:52:49]
啊 ， 所以我我觉得这还是一个排版引擎的问题吧 ，因为这取决于这个排版引擎是否采用了 Unicode 标准下的一些字体技术 。

那如果它用了一些传统的在 Unicode 还没有诞生的那个时代里面 ， 那它也有自己的一些方式来显示这些字符嘛 ， 可以这样理解 。

**Rio** [1:53:10]
哦 ， 这跟排版引呃也不一定 ， 就是其实主要还是一个你在一个什么样的逻辑层面上去区分字符的问题 ， 就是你要把它归类化的话 ， 就是好吧 ， 所有的字符其实归根结底都是 0 和 1 在电脑里 ，在计算机里面 ，但是有些按照某些编程语言或者是操作系统的计算方法 ， 呃 ， 每 8 个 bit 就一定无论如何是一个字 ， 那在这些操作系统或者编程语言里面

， 那可能 E 上面加撇就有可能是 1 或者是 3 个字 ， 然后但是对于某些更高级的或者说就是划分层面抽象层面更高级的语言 ， 比如说 Swift，Swift 里面它一定会把那个字符串里面能够独立成簇的 ， 就是什么什么什么 cluster， 它单独算成一个 。

**吴涛** [1:54:06]
嗯 。

**Rio** [1:54:07]
所以这个实际长度可能跟最终的那个 byte 长度是不一样的 ，而且两个 。

**吴涛** [1:54:12]
不一样的 。

**Rio** [1:54:13]
对 ， 两个 byte 长度不同的 string 在 Swift 里面可能会最终算出来的长度是一样的 。

**吴涛** [1:54:18]
嗯 。

**Rio** [1:54:19]
这个 。

**吴涛** [1:54:20]
啊 。

**Rio** [1:54:21]
对 ， 反正也是一个很大的坑 。

**吴涛** [1:54:23]
呃 ，因为你如果单说是呃排版引擎的话 ， 你事先给排版引擎什么东西 ， 对吧 ？ 你事先给它不同的东西 ， 那到排版引擎它它拿到手头上只有这些零部件 ， 它只能那拿去这样显示啊 ， 就是 。

**Rio** [1:54:39]
嗯 。

**吴涛** [1:54:41]
还有就是我想说的就是在这个年头到现在为止啊 ， 大家还是有很多人说那个半角全角的问题 。

**Rio** [1:54:48]
哦 。

**吴涛** [1:54:48]
就是说什么西文 140 个字的话 ， 对应中文应还是应该是 70 个字 ， 到现在还有人在有有这样的感觉 。

**Rio** [1:54:59]
呃 ， 对 ， 全角和半角这两个字最开始源流原因应该是在排在千字时代吧 。

**吴涛** [1:55:08]
对 。

**Rio** [1:55:09]
就是呃 ，有些千字是只有一占其占另外一些千字的一半的呃宽度 ， 然后这些字符就要被叫做半角字符 。

**吴涛** [1:55:21]
它其实就是一个宽度的问题啊 ， 就全身半身 ， 全角半角或者叫全形半形 ， 那 EM 和 EN。

**Rio** [1:55:29]
嗯 ， 这应该是日本人搞出来的概念吧 。

**吴涛** [1:55:33]
呃 ，但是就是在在原来的西文排版里面就是有 EM 和 EN。

**Rio** [1:55:39]
啊 ， 对 ，但是全角半角这个术语应该是日本人搞出来的 。

**吴涛** [1:55:43]
啊 ， 这个这我们叫成全角半角 ， 对 ，是日本人日本汉字翻译出来的 ， 对 。

**Rio** [1:55:48]
嗯 。

**吴涛** [1:55:49]
而且全角半角最开始的差异应该是在片假名和就是在片假名出现之前 ，不 ，在全角汉字出现之前 ， 日语里面就是 JS 这边只有半角的假名 ， 然后等到 。

**Rio** [1:56:03]
对 。

**吴涛** [1:56:04]
这个全角汉字出来之后， 它们又出现了全角的假名和全角的汉字 ， 所以这个时候就需要区别说这个假名是究竟只占显示的一半呢 ， 还是那个宽的那个版本 。

所以这个时候全形和半形的概念就被从呃印刷时代拓展过来 。

**Rio** [1:56:22]
但是就在编码上， 它其实是单字节和双字节的问题嘛 。

**吴涛** [1:56:26]
对 。

**Rio** [1:56:28]
呃 ， 就很多人把全角半角和单字节 、 双字呃双字节混在一起 ， 就比如说其实到到现在为止 ， 我们大家都已经用 Unicode 了 ， 对吧 ？

无论你是半角的字还是全角的字 ，在 Unicode 上它其实都是一个码位 。

**吴涛** [1:56:43]
对 ， 然后这个码位有可能用 1-4 个字符来显示 ，1-4 个 byte。

**Rio** [1:56:49]
1-4， 对 ， 目前是 1-4， 对 。

**吴涛** [1:56:52]
对 ， 它它是个变长的 。

**Rio** [1:56:53]
目前是 1-4 个 byte。

**吴涛** [1:56:55]
Byte 来来决定 ， 所以半角和全角的差别在这里已经不明显了 。

**Rio** [1:57:01]
呃 ， 现在我们实际看到的半角或全角 ，其实是字体厂商为了保留大家的习惯 ， 它画成半角和画成全角而已 。

你去调用那个码 ，其实就是一个 Unicode 的一个码而已 。

**吴涛** [1:57:13]
对 。

**Rio** [1:57:14]
哎 ， 那个中文字体里面现在的半角和全角的一个字符的应用规则是怎么样子 ？ 我记得好像就是要全部半角 ， 还不全部全角 。

**吴涛** [1:57:24]
就废除这两个概念是最好的方式 。

**Rio** [1:57:28]
对 。

**吴涛** [1:57:29]
嗯 ， 就所以在 GB 里面 ，GB 里面其实它有很多 ， 比如说像什么俄文的西里尔字母那些 ， 它其实在里面画的 ， 当年它放到 GB 里面 ， 它意思是全角字 。

**Rio** [1:57:40]
啊 。

**吴涛** [1:57:40]
全角字 ， 对 。 嗯 ， 当年是那个意思 。 嗯 ， 然后它的确是很画那些 ， 所以呢 ， 国产的那些字体它的确是画成全角字了 ， 然后有人就用那个来排俄文 ， 然后看出来这个惨不忍睹 。

**Rio** [1:57:54]
嗯 。

**吴涛** [1:57:55]
每个字符都间距很大吧 。

**Rio** [1:57:58]
豆瓣上一旦出现俄文书简直是惨不忍睹啊 。

**吴涛** [1:58:02]
嗯 ， 对 ， 这其实都是一些历史历史遗留的产物吧 ， 就是当时因为这个呃编码还没有统一到 ， 我没有完全统一到 Unicode 的那套编码系统上面啊 ， 所以导致了中国以前的中中国国标以前想编码一些西文字符的时候 ， 它会搞一套自己的规则在里面 ， 然后又跟 Unicode 那一套并不是完全重合 。

**Rio** [1:58:27]
对 。

**吴涛** [1:58:27]
嗯 ， 那问题是现在大家已经是 Unicode 了 ，但是还要为了保持那个习惯 ， 所以呢 ， 然后后来再讲那 ，而且的确大家能看出来啊 ， 这个是半角的字 ，但实际上呢 ， 它呢里面的码位已经是一就跟那个双字节 、 单字节已经没有关系了 ， 就就是一个 Unicode 码位了 ， 都已经是 。

**Rio** [1:58:46]
嗯 ， 对 。

**吴涛** [1:58:47]
然后实际上它的宽度呢 ，是通过字体的字体设计师来去定义的 ， 它那个 font 里面的定义 。

**Rio** [1:58:53]
对 ， 它的宽度 ， 它的宽度是排版引擎来决定 ， 排版引擎和字体提供的一些信息来决定 。

**吴涛** [1:59:00]
嗯 ， 所以我一直在想啊 ， 现在我们这个什么计算机也好 ， 手机也好 ， 系统这么复杂 ，也就是我们这些人为弄出来的因素 。

你看光打一个字显示到这个屏幕上， 要经过这么大一堆的问题 ， 然后中间随时可能出现错误 、bug 或者是什么系统崩溃 ， 这个也很正常 。

**Rio** [1:59:22]
动不动就乱码 ， 动不动就崩溃了 。

**吴涛** [1:59:24]
对啊 ， 哎 ， 真的 ， 那个就因因为这个 Unicode 这个事情导致很多安全漏洞嘛 ，也也不出奇啊 。 就之前我记得有一有一有一年， 你们记不记得是有一段那种那种文字叠加在一起 ， 然后 iPhone 一打开就会自动死机吗 ？

那个 。

**Rio** [1:59:40]
啊 ， 哈哈哈 。

**吴涛** [1:59:42]
啊 ， 对 ， 然后那个 Safari 浏览器打开就自动崩溃嘛 ， 就是因为这个坑爹的事情 。

**Rio** [1:59:51]
而且因为像尤其是文字编码这个东西的话 ， 它必须要向后兼容嘛 ， 就它后面的编码的话尽量要跟前面兼容嘛 ， 要不然特别特别麻烦嘛 ， 它字会变掉嘛 ， 就就是 。

**吴涛** [2:00:02]
对 。

**Rio** [2:00:02]
所以它越是要向后兼容 ， 那就它就它的那个负面的那些债务就越来越多 ， 所以它就越容易出 bug。

**吴涛** [2:00:11]
对 ， 现在实际上绝大多数人类的复杂系统 ，其实复杂性都是历史性的 ， 就是复所有复杂程度大部分都是历史原因 。

就如果你从头开始文明毁灭了 ， 啪叽重新设计这个东西 ， 肯定不会设计成当初那个样子 。

**Rio** [2:00:25]
大家都搞一个非常简单 。

**吴涛** [2:00:27]
无经意外嘛 ， 对 。

**Rio** [2:00:28]
对 。

**吴涛** [2:00:28]
对 。

### 打印输出

**Rio** [2:00:33]
我们说了两个小时， 终于把一个字打显示到屏幕上去了 ，但是我们如果要把它打印出来怎么办 ？

**吴涛** [2:00:40]
呃 ， 哈哈哈 ， 要再说两个小时吗 ？

**Rio** [2:00:43]
哈哈哈哈 。

**吴涛** [2:00:45]
啊 ，其实其实也没有这么复杂 ， 就打印出来 。

**Rio** [2:00:49]
啊 ， 对 。

**吴涛** [2:00:50]
你发你把你的文字的内容发给打印机 ， 然后打印机内部其实也有一套呃显示系统 ， 然后这个显示系统只不过它最终形成的那形成的结果是一个实体可见的一张纸 ， 或者是对 ， 包括 3D 打印机都都其实大多多少少都是一套把这个字体编码呃把一套编码和其呃对应的形状联联系起来 ， 然后控制这个控制一个喷头也好 ， 或者是吸骨也好 ， 把这个最

终形状显示出来就 。

**Rio** [2:01:27]
哎 ， 现现在打印机应该不需要再内嵌字体了吧 ？ 它都是通过解析那个 PS 的那个 ， 或者就是一 P 就是 PS 的一个一个一个一个标准来做的吧 ？

因为以前我记得确实出现过那个 。

**吴涛** [2:01:41]
所以 。

**Rio** [2:01:42]
那个叫什么呃真实打印机 。

**吴涛** [2:01:44]
就是打印机内 。

**Rio** [2:01:45]
对 ， 它是需要内嵌一个字库才可以打中文嘛 ， 最早的时候 。

**吴涛** [2:01:49]
但到后面都也是 ，但有很多 PS 打印机它也要安要安装的嘛 ， 所以就是什么我们中老年程序员再继续给教告告这小朋友 ， 当年打印机是要有打印字体的 ， 要不然它打不出字来 。

**Rio** [2:02:03]
就是空白的 。

**吴涛** [2:02:04]
对 ，而且在现在如果你遇到一些比较极端的例子的话 ，有些人还是会选择把那个打呃 PDF 里面的字体转化为曲线 ， 然后最终给打印机当做一幅画来打 ，不然有些字是是是是漂的 。

**Rio** [2:02:23]
对 ，在日本的话经常会出这个问题 ，因为就是我我在我比如说我我做的这个排版排的这个东西 ， 然后到输出方那边它没有同样的字体文件嘛 。

**吴涛** [2:02:34]
嗯 。

**Rio** [2:02:34]
那它可能就会就会字会变掉 ， 没有关系 ， 它有的时候因为设置的问题 ， 整个那个排版就会崩掉嘛 。

**吴涛** [2:02:41]
不光是这个 ， 还有像那个现在 PDF 也有这个问题 ， 就是很多在那个 Windows 上面制作的 PDF， 它没有选择那个就是内嵌那个字体文件 ， 或者说把那个字体轮廓作为一个就 subset 的方式放进去的话 ， 那在非就没有那个字体文件系统上， 比如说 Mac， 比如说那上面它就显示是一个方框嘛 ， 就没有那个字 。

**Rio** [2:03:03]
对啊 。 嗯 ， 所以你看要说的话还是有很多要说的 ， 像什么字体子集内嵌这个事情的话 ，其实还有很多事情要做 ， 这 PDF 在这个技这个技术呃发对这个东亚的这些文本显示的话 ，是发挥了很大的作用的 。

这个 subsetting 嘛 ， 对吧 ？ 要不然的话它没有办法就把要不然 PDF 它的文件要会越越来越大 。

**吴涛** [2:03:27]
每个都是几十兆一个 ， 哪怕只有两页的字 。

**Rio** [2:03:32]
当年的话就是为什么 TrueType 呃微软和苹果联手起来发 TrueType， 就是这一点 ， 它要打败 Adobe。

**吴涛** [2:03:40]
嗯 。

**Rio** [2:03:41]
Adobe 它那时候呢 ， 它就是有一个 ATM，Adobe Type Management， 它就是要来控制呃就是显示字体和打印机的字体 ， 给打印机的是就是很精高精度的 PS PS 软件呃 PS 曲线的字体 。

**吴涛** [2:03:58]
嗯 。

**Rio** [2:03:58]
而那给显示的话 ， 那就是低端的点阵字体 。

**吴涛** [2:04:02]
嗯 。

**Rio** [2:04:02]
所以它需要一个呃它 ATM 这样一个软件呢来进行来调配 ， 然后然后下载以后一起下载 ， 然后交给这个输出端去给打印机 ， 才才能打印出东西来 。

那后来呢 ， 就是微软和 Apple 它就联联合出了这个 TrueType 以后， 它就可以动态的下载这个呃这个字体的曲线信息 ， 然后直接就传给了打印机 。

所以呢 ， 就以后呢就就逐渐的就不用打印端的就输出端的这个打印字体了 。

**吴涛** [2:04:34]
嗯 。

**Rio** [2:04:34]
所以当年的这这样的一个呃工作流程的话 ， 对这个整个就是 DTP 嘛 ， 就桌面排版的流程是一个非常大的一个影响 。

**吴涛** [2:04:43]
嗯 。

**Rio** [2:04:45]
天呐 ， 这个

都都很难想象 。 你现在如果要自己搞一套新的操作系统 ， 你要从头把这些都做一遍的话 ，不知道做到猴年马月去了 。

**吴涛** [2:04:56]
对啊 ， 现在我们随便鼠标点两下就印出来了 。

**Rio** [2:05:00]
所以现在终于知道那么那么那么多 CPU 的那个性能的提升都跑哪里去了 。

**吴涛** [2:05:07]
对啊 ， 这个计算机它都都它在辛苦的演算 ， 它在算什么东西啊 。

**Rio** [2:05:12]
对啊 。

**吴涛** [2:05:13]
对 ， 它就不停的在 。

**Rio** [2:05:15]
这跟生物也有多少点有点巧合吧 ， 就是人类为什么呃眼睛要长在脸上， 听起来很奇怪 ， 就是因为 。

**吴涛** [2:05:26]
哇 ， 你这就是因为眼睛 。

**Rio** [2:05:29]
眼睛要尽量接近 ， 要尽量靠近大脑 ，不然你眼睛 ， 比如说你眼睛长在手指上其实更灵活 ，但是呃 。

**吴涛** [2:05:37]
神经 。

**Rio** [2:05:38]
长在脸上 。

**吴涛** [2:05:39]
什么神经链路就更长了 。

**Rio** [2:05:40]
延迟是吧 ？

**吴涛** [2:05:40]
神经链路短 ， 然后那个带宽比较高 ， 然后大脑里面其实和视觉相关的那一块也是特别特别发达 。

**Rio** [2:05:50]
嗯嗯 ， 为什么我知道这个 。

**吴涛** [2:05:54]
哈哈哈

。

**Rio** [2:05:58]
好吧 ， 既然我们的字终于从打印出来了 ， 我们这一期节目先谈到这里 。

### 结尾

**吴涛** [2:06:03]
好 。

**Rio** [2:06:03]
呃 ， 好吧 ，其实还是 。

**吴涛** [2:06:06]
扯开了 ， 开了个一路开了多少盒子 ，但是都没有都没有给盖上 。

**Rio** [2:06:12]
比如说其实刚才我在想 ， 我们遗漏的最最大的一个点其实是啊 ， 浏览器里面的字 ， 这这字体的选择过程 ， 就比如说有些人会有会有疑惑说为什么啊 ， 我在 Word 里面可以把中文字体设置成那么多种 ， 什么宋体 、 楷体 、 隶书 ， 对吧 ？

但是在浏览器里面就不行 。

**吴涛** [2:06:36]
啊 ， 这我们可以专讲这个 。

**Rio** [2:06:40]
对啊 ，Waveform 啊什么的 。

**吴涛** [2:06:42]
包括那个 。

**Rio** [2:06:43]
沃夫格式是什么东西啊 ？

**吴涛** [2:06:44]
包括 emoji 在那个网页上的显示和它在这个传统的 C 口数据库里面的一些一些坑吧 。

**Rio** [2:06:53]
哎 ， 你们说的你们都得记着哈 ， 自己说的坑自己填啊 。

**吴涛** [2:06:56]
哈哈哈 ，不能只管挖不管埋啊 。

**Rio** [2:07:00]
自弹自创债务表 。

**吴涛** [2:07:02]
哈哈哈 。

**Rio** [2:07:05]
刘克宁表示很高兴 。

**吴涛** [2:07:07]
克宁 ， 刘克宁 。

**Rio** [2:07:11]
好了 ， 那今天的节目就到这里 ， 我们还是欢迎大家继续写邮件给我们反馈 。 呃 ， 自弹自唱的联系邮件地址是 podcast@the type.com，podcast 的拼写是 P-O-D-C-A-S-T，the type 的拼写是 T-H-E-T-Y-P-E。

我们的联系地址是 podcast@the type.com。

**吴涛** [2:07:33]
OK， 呃 ， 那感谢收听 IPN Podcast 网络旗下的 IT 技术与娱乐节目内讧恐慌 。 我们号称 hardcore，但谁没有干货 ， 想听人听 ，不想听人就别听 。

你可以为本节目捐款 ， 捐款地址是 colonelpanic.fm/donate。 呃 ， 捐款金额随意 ， 只要是 8 的正整数倍就可以 ， 捐款不会给你带来什么 ，不见也不会让你失去什么 。

我们的口号是 no hot feelings。 呃 ， 如果你有任何反反馈 ， 可以发邮件到 colonelpanic@ipn.li。 同时也欢迎你收听呃 Rail 主 Rail 主持的风头圈 ，以及 IPN 旗下的其他几档节目 。

未知道太依赖了流行通信 ，Hi Story、 映影像 、 无次元 、 博物志 、 选美 、 陛下官 、 一天事件 。 我们下期节目再会 。

**Rio** [2:08:16]
拜拜 。

**吴涛** [2:08:21]
我操 ， 你这关口越来越顺了 。

**Rio** [2:08:22]
我刚念这个时候好像加了一个加速的 feature 一样 。

**吴涛** [2:08:26]
对 ， 就你看那些那个什么综艺节目 ， 最后要念念那个赞助商名字的时候 ， 哆哆哆哆 ， 使劲报啊 。

**Rio** [2:08:33]
对对对 。

**吴涛** [2:08:34]
这个这也是一项重要的技能 。

**Rio** [2:08:37]
都怪药品广告 ， 播完之后， 无论那个药品广告多么的轻松温馨 ， 最后一定要来一个说的特别快的什么 ， 请尊医嘱之类的 。

**吴涛** [2:08:47]
啊 。

**Rio** [2:08:48]
请咨询您的医师或您的药剂师 。

**吴涛** [2:08:51]
那个是广告法规定的吧 ， 必须要讲的 ， 还有很不想讲的 。

**Rio** [2:08:56]
嗯哼 。 哎 ， 吴涛 ， 你不能偷懒啊 ， 就是以后录我们自弹自串的话 ， 你要每期要有个新口号啊 。

**吴涛** [2:09:02]
哎 ， 说的也是 ， 这一期没有新口号 ，但是我之前其实试图找一个跟字体稍微有点关系的 。 好吧 ， 本期我们的口号是呃 。

**Rio** [2:09:14]
没有口号 。

**吴涛** [2:09:15]
不 ， 本期我们的口号是 less。 哈哈哈 ， 这个点出于 。

**Rio** [2:09:20]
这是什么鬼 ？

**吴涛** [2:09:21]
点出于那个 Knut 高德纳在排印他的第一版呃 TAOCP， 就是 the art and

the the art of computer programming， 呃 ， 就是计算机的编程艺术的这本书的时候 ，他看到了自己的初稿的一个小样 ， 然后他当时说 bless， 所以他写的这这排的是啥呀 ， 然后

然后对 ， 然后他就他就专门他就专门呃搞了一套叫做先是搞了 MetaFonts， 然后用 MetaFonts， 然后再搞了一套呃 LaTeX， 呃搞搞了 TeX， 然后用来排自己的版 。

对 ， 这算是一个比较应景的口号 。 所以本期我们的口号就是 less。

**Rio** [2:10:09]
哈哈哈 ， 好难念 ， 好难念 。

**吴涛** [2:10:13]
我不知道它具体其实叫怎么样 ，因为 Knut 毕竟是个美国人 ，他也许是念的是美 ，但哈哈哈 。

**Rio** [2:10:22]
对 ，其实我我们还可以讲讲 ， 就找机会讲讲 MetaFonts， 它的一些设计哲学还是有一点意思的 。 而且哇 。

**吴涛** [2:10:31]
哎 ，有有机会我还是想讲那个 TeX。

**Rio** [2:10:34]
那个好吧 。

**吴涛** [2:10:35]
哈哈哈 ， 那个那个我完全不懂 。

**Rio** [2:10:38]
呃 ， 啊 ， 的确是 。

**吴涛** [2:10:42]
坑越来越深了 ， 已经挖到地球内面去了 。

**Rio** [2:10:46]
哈哈哈

。

---

本节目库由 PodHood（https://podhood.com）提供支持——播客网站平台。
