在“使用”字体名称时我必须期待哪些字符以及在“生成”字体名称时应该避免哪些字符?不同的操作系统、传统的桌面应用程序、移动或网络应用程序 (->CSS) 以及不同的字体格式(如 OpenType、TrueType、WOFF、PostScript、SVG 等)之间是否存在差异?
2 回答
根据W3。有效字体名称中只能使用 ISO-10646 字符。
根据Adob e 的说法,PostScript 字体不得包含空格,并且只能使用标准 ASCII 字符集中的字符。名称的长度也应不超过 29 个字符。
建议使用连字符分隔字体系列名称和样式定义,并出于优化目的同时使用大写和小写字符,因为某些解析器在能够搜索第一个大写字符后跟一个小写字符时效果最佳。
Macintosh 字体菜单中使用的标准名称来自与 Type 1 轮廓字体关联的 FOND 资源的名称。FOND 资源名称在技术上最多允许 31 个字符,并且可能包含空格,但由于已知错误,超过 30 个字符的任何内容都不起作用。
在 Windows 环境中,字体菜单名称在 Printer Font Metrics (PFM) 文件中指定,且不得超过 31 个字符;存在与 Macintosh 相同的限制为 30 个字符的建议。
Adobe 的命名约定被认为是行业标准。
如果您正在寻求测试,请查看此回归测试: http ://search.cpan.org/~mhosken/Font-TTF-1.05/lib/Font/TTF/Font.pm
您列出的几乎所有格式都是OpenType的版本:
- 现代 TrueType 是指带有TrueType 字形轮廓的 OpenType 字体
- WOFF简单地包装“SFNT”结构化字体,这些天基本上只是 OpenType 字体,允许可选的每表压缩。
- 现代 PostScript 指的是带有CFF 块的 OpenType 字体,它使用带有Type2 字符字符串的嵌入式字体格式描述轮廓(实际上不是 PostScript。只有“Type 1”字体是 PostScript 字体,但是当 OpenType 起飞时,Adobe 退出了 Type 1完全,将他们的整个字体目录移动到带有 CFF 块的 OpenType 上)
- 字体上下文中的 SVG 可以指两种不同的东西:“svg 字体”,这是一种死技术,以及带有 SVG 轮廓的 OpenType 字体的新变体。
所以这实际上是一个“OpenType 允许哪种命名格式”和“在此范围内,哪种格式得到最广泛支持”的问题。值得庆幸的是,OpenType 命名表规范包含大部分信息。
重要的部分是您没有定义“一个”姓氏,而是为不同的受众定义了多次。查看名称表的“名称 ID”部分,您会看到几个字段都用于容纳字体名称,只是针对不同的上下文:
- 字体家族名称,自由字符串形式。这在“普通应用程序”中用于告诉您正在查看的字体。
- 字体亚族名称,例如“斜体”、“斜体”等。
- 此字体的唯一标识符。明智的 id 涉及 id 1 和 2 的某种组合以及一些“此文件何时发布”的信息,但您也可以采用自由形式。
- “完整的字体名称”。通常,只需将 id 命名为 1 和 2,用空格分隔,但如果您愿意,您可以偏离此设置。
- 字体版本字符串,带有关于它应该是什么样子的规则
- 后记名称。这个很特别,你应该阅读它的用途。该名称绝不必须与实际字体名称相匹配。不过,确保它确实是一种很好的形式。
作为一个真实的例子,让我们看一下 Palatino Linotype 的名称字符串:
- “帕拉蒂诺列型”
- “常规的”
- “Palatino Linotype 常规 1998 年 4 月”
- “帕拉蒂诺列型”
- “版本 5.00”
- “PalatinoLinotype-罗马”
就平台差异而言,并非每个平台都需要所有这些字符串才能使字体可安装或可用。点击这个 SO question以获取更多信息。例如,对于 webfonts,名称 ID 1 在技术上就足够了,因为字体所扮演的“角色”完全由@font-face
我们给它的规则决定,但对于桌面应用程序,ID 2 到 5 很重要。当然,对于 postscript 设备,ID 6 是至关重要的,因此操作系统往往不会将没有它的字体识别为“正确”的字体。