如何修复 Kindle 自定义字体名称显示问号的问题

前几天小伙伴预盐留言提到了一个和 Kindle 自定义字体功能相关问题。《如何使用 Kindle 原生自定义字体功能》将字体文件放入 Kindle 目录中的 fonts 文件夹后,在字体选择面板中选择字体时,发现下图所示的一系列问号应显示中文字体名称。

中文字体名称显示问号

▲ 中文字体名称显示问号

这个问题的出现可能是由于字体文件制作不规范造成的们可以参考 OpenType 规范(以下简称规范)并使用适当的工具来修复这个问题。本文提供了一种有效解决 的解决方案OpenType 格式(文件扩展名称 .otf、.otc、.ttf 或 .ttc) 字体名称Kindle 字体选择面板中不能正确显示的问题。

1、解决思路

OpenType 格式字体文件包含一系列以表格形式呈现的数据。这些数据有很多类型,可以查看规范。本文只关注与字体名称(选择字体时看到的字样)相关的元数据信息,即字体的name”表。

字体的“name表可以将各种语言的字符串(文本)与字体相关联,如版权声明、字体名称、字族名称、风格名称等,目的是在不同语言环境的操作系统中显示相应的语言版本。

如果一个字体的名称没有正确显示就意味着字体文件中的“name表有问题。为了解决这个问题,我们可以先用工具提取出来,然后按照规范修正,最后修正name表合并到字体文件中。

2、准备工具

字体文件(即扩展名称).otf、.otc、.ttf 或 .ttc 文件)是一个独立的二进制文件,我们不能直接编辑它。为了修改我们需要的内容,我们必须使用特殊的工具或将其转换为人类可读的文本文件。

本文使用的工具是 fontTools,一款基于 Python 字体处理程序库包含一个名为 的字体处理程序库ttx    命令行工具可它可以将字体文件转换为扩展名称 .ttx 的 XML 文本文件,方便我们修改字体的相关信息。

使用 fontTools 确保您的操作系统安装版本大于或等于 3.6 的 Python。如果你的系统没有安装 Python 或版本低于 3.6,请前往 Python 官网下载安装(macOS 系统可通过 Homebrew    安装)。

Python 环境准备好后,可在终端或命令提示符中输入以下命令安装 fontTools:

pip3 install fonttools

fontTools 安装完成后,可输入以下命令。如果能正常输出版本号,说明安装成功:

ttx --version

3、操作步骤

虽然 ttx 程序可以将整个字体文件转换为 .ttx 文件,也可以 .ttx 文件转换回字体文件,但如果字体文件较大,则转换 .ttx 文件也会很大,这将降低编辑和转换的效率。因此,为了大大提高效率,我们只需要单独提取字体文件name修改表格,然后使用 ttx 的合并功能将修改后的表合并回字体文件。

为了方便显示操作步骤,下面虚构了一个名称显示问题的字体文件 SampleSong.ttf(在实际操作中,将文件名更改为实际字体文件名)。书伴将对步骤中涉及的标准进行必要的解释。

1、从字体文件中提取name”表

字体文件中的name单独提取表格,切换到字体所在的目录,然后操作以下命令:

ttx -t name SampleSong.ttf

* 提示:如果你处理的是字体集(Font Collections)文件(扩展名称 .ttc 或 .otc),单个字体的编号需要在命令中指定,即选项 -t    前添加选项 -y,并在选项后指定编号。ttx -y 0 -t 'name' SampleFonts.ttc

默认情况下,提取name表文件名与字体文件名相同,存储位置与字体文件相同,但扩展名变成 .ttx。本例获得的文件为 SampleSong.ttx,用代码编辑器打开文件时,您会看到类似的内容:

阅读剩余
THE END