当前位置:新励学网 > 秒知问答 > 如何更改字体文件的信息

如何更改字体文件的信息

发表时间:2024-08-18 12:37:58 来源:网友投稿

中文字体上市时附带在字体文件中的信息不是很方便管理。

比如方正的雅宋系列,磅值从粗到细分为:特雅、大雅、粗雅、中粗雅、中雅、标雅、准雅、细雅、纤雅。另外还有三个不同的字型:风雅、博雅、博雅方刊。但这些字体装入电脑后,通常是按照拼音首字母的顺序来排列的,所以使用查找时,很不方便无法一次浏览本字族下所有磅值的字体。所以想问有没有什么方式是可以重新编辑字体信息的。比如我想改为方正雅宋-准、方正雅宋-特......类似 Helvetica Litgt, Helvetica Regular 这样。安全的做法之一是用命令行工具 ttx(建议从 AFDKO 获得)修改 name 表的相关的 name ID(影响字体与家族的名称和关系——如果只关心在 InDesign 之类非微软环境下的字体名称显示,那么正确填写 name ID 16 和 17 就够了,不用去管编号较小的几个字体名 ID 的历史遗留烂摊子)以及 OS/2.usWeightClass(影响字重排序)。目前的典型情况是在 TrueType 与 OpenType 字体中用 `cmap` 表记录 glyph 与 Unicode 字符的对应关系。也有内部用各种遗留(legacy)编码的,字体内部会标明自己的 `cmap` 存的是什么编码。对,字符是一个抽象概念,你的理解很正确(如果我没理解错你的意思的话),所以以 Unicode 字体为例,`cmap` 里可以理解为是用16位整数记录字形所对应的 Unicode 字符,所以你可以把它理解为 UCS-2 或 UTF-16,而且是 big-endian 的(因为 TrueType/OpenType 文件是 big-endian 的)。其他内部编码的字体就用8位或16位或32位整数记录其他字符集的编码。但是注意但是,尽管 `cmap` 表的目的就是存储字形与字符的映射,但它不是那么平白地存储一条一条的「字形ID:字符」数据,而是为了性能与存储优化而有特殊的结构。比如如果基本对应范围确定的字符集,就按字符集里的字符顺序挨个排列字形ID,或者如果字形分布很零散,就一段一段地排列字形ID,并记录每一段之间的差值。

免责声明:本站发布的教育资讯(图片、视频和文字)以本站原创、转载和分享为主,文章观点不代表本网站立场。

如果本文侵犯了您的权益,请联系底部站长邮箱进行举报反馈,一经查实,我们将在第一时间处理,感谢您对本站的关注!