#1 - 2015-10-22 00:00
Doream (夜海全书)
相信安装过字体的人都接触过两种字体格式:.ttf和.otf。而这两种字体格式跟Truetype与Opentype这两种字体类型的复杂关系,在此稍微梳理一下。
====================
Truetype
1991年苹果开发了Truetype格式的字体,起因是为了对付Adobe的PostScript Type 1(简称Type 1)字体。之后微软加入了开发(苹果为了联合微软对付Adobe)。此时,苹果、微软、linux系列的操作系统都采用Truetype格式的字体,文件扩展名可以是.dfont和.ttf。
1994年,苹果继续开发Truetype并发表了TrueType GX技术(同样是为了对付Adobe)。这里面包括了kerning(可变间距)、连笔等。并最终包括到苹果的AAT(苹果高级排版)技术中。此时微软却没有跟进这些技术,原因后面讲。

Opentype
1994年,微软开发了TrueType Open类型的字体,而且Adobe也加入了开发,同Type 1合并,成为Opentype格式。文件扩展名可以是起源于PostScript Type 1/2的.otf( OpenType PS),和起源于Truetype的.ttf(OpenType TT)。
Opentype也有类似TrueType GX的高级特性。

因此,目前的字体大概是苹果的TrueType、微软的OpenType TT、Adobe的OpenType PS三者并存的局面。

苹果产品下的Opentype
Mac和iOS支持Opentype格式。不过是有限支持,因为苹果的高级排版只能依赖AAT,因此附带复杂特性的Opentype格式字体在苹果下就悲剧了。
好在有良心的厂家会开发支持AAT的Truetype格式的字体。

微软产品下的Truetype
目前Windows附带的字体基本都是Opentype格式的了。
但是迫于微软的“兼容性”,微软只能使用更好兼容性的OpenType TT格式。
而且微软对字体的编码支持需要`cmap`里面包括古老的 cmap_format_4(也就是俗话说的BMP,此编码表仅包含U+0000 - U+FFFF 的编码。目前跑大多数网站的程序也仅支持该编码表,比如Bangumi、知乎等)。而苹果和Adobe等已经直接采用更先进的cmap_format_12了(编码范围为 U+00000000 - U+7FFFFFFF)。
因此,苹果和Adobe的字体在Windows下双击会显示「不是有效的字体文件」。
====================
回顾历史,三家公司在字体问题上的相爱相杀,真是……群魔乱舞,人神共怒啊(bgm38)
#2 - 2015-10-22 06:45
(BGMのTrinitas<=>婊冈妈<=>补冈妈<=>拜冈妈 三位一体 ...)
似乎可以用工具转换 Windows是为了向下兼容,另外对字体也没什么品位。
#3 - 2015-10-22 07:06
(Idle singer of an empty day)
PS早被Adobe抛弃了
#3-1 - 2015-10-22 08:46
Doream
没记错的现在基于Adobe规范的字体都是OpenType PS的
#3-2 - 2015-10-22 09:50
小寒
Doream 说: 没记错的现在基于Adobe规范的字体都是OpenType PS的
学习了
我说的是PS格式,现在的OT是一个PostScript wrapper
AAT现在主要发挥的地方是OS X里面的复杂语种(Complex scripts),特别是advanced positioning,这点OT实现起来还是差一大截

AAT原本的黑科技没有大规模应用主要是因为软件厂商的利益问题。我辛辛苦苦在自己的软件里实现了高级排版,结果你来跟我说你系统级别已经集成了?那我还卖个屁?于是各种设计软件纷纷放着AAT不用跑去支持OT了(bgm38)
#3-3 - 2015-10-22 12:40
Doream
小寒 说: 学习了
我说的是PS格式,现在的OT是一个PostScript wrapper
AAT现在主要发挥的地方是OS X里面的复杂语种(Complex scripts),特别是advanced positi...
苹果的思路是正确的。AAT需要把不同语种的字体分开,由相应的语言开发者分别开发。显示的时候前端根本不用关心用户在用什么字体,因为系统会根据编码范围自动找到相应语言的字体(汉字圈复杂一些),然后AAT进行高级排版既可。而微软方面,追求默秒全,然而又不能指望微软雅黑支持所有的语言,实在找不到的字符就去宋体超大字符集里面找。
win8开始微软有所反思,似乎也开始按语种区分字体了,但显然是积重难返。
#3-4 - 2015-10-22 15:59
小寒
Doream 说: 苹果的思路是正确的。AAT需要把不同语种的字体分开,由相应的语言开发者分别开发。显示的时候前端根本不用关心用户在用什么字体,因为系统会根据编码范围自动找到相应语言的字体(汉字圈复杂一些),然后AAT进...
重点不是在于语种识别,这点是排版引擎的基本。
AAT的强项正如我所说,是advanced positioning这些拉丁和东亚文字根本用不到的奇葩特性。OT对天城文的支持是通过超大量的ligature来决定的,有没有更高效的方法?越南文的几级变音符号要怎么排才能不互相粘连?我都觉得,跟右左书文字比起来,汉字除了字形变换,要攻克的技术难关少太多了。

微软当初为了商业利益上了PS的贼船,这下也只能跟着OT走啦。
#3-5 - 2015-10-22 16:13
Doream
小寒 说: 重点不是在于语种识别,这点是排版引擎的基本。
AAT的强项正如我所说,是advanced positioning这些拉丁和东亚文字根本用不到的奇葩特性。OT对天城文的支持是通过超大量的ligature...
不是微软不给力,奈何当年啊逗比授权费太贵……
谁知truetype开发出来后,postscript就开放了。
#3-6 - 2015-10-23 01:58
小寒
Doream 说: 不是微软不给力,奈何当年啊逗比授权费太贵……
谁知truetype开发出来后,postscript就开放了。
微软当年也有好的考量:与其支持苹果独家开发的AAT,从而把字体业界绑在一家平台上,倒不如跟Adobe一起制定OT这种跨平台的技术,同时跟 Unicode 合作,这样不仅能跟苹果分庭抗礼,对于整个业界的发展、对消费者利益,都是一件好事。Adobe 那时候为了 OT 忍痛割爱了 MM 技术,又花了两年耗费巨资转投 OT,其中也有这样的考虑在。

PostScript 开放这话说得不准。是 Adobe 一开始财迷心窍,不对外开放 Type 1 的技术规格,只想自己卖字体赚钱。两年之后 Type 1 被 BitStream 破解,Adobe 自觉财路已断,这才不得不放出 PS 的全部 Type 规范。
#4 - 2015-10-22 09:12
(NEET 3)
学到了。