将阿拉伯语字体移植到 iOS 系统
Porting Arabic font to iOS System
我只是想使用自定义字体让我的 iPad 看起来更漂亮。
iOS8 设备的默认阿拉伯语字体是 GeezaPro。格式为 .ttc。
我正在尝试用我的自定义字体替换它。
我使用DOSBOX将系统字体ttc文件分解成ttf文件来制作它们可编辑。
然后我使用 FontLab Studio 将系统字体字形替换为我的自定义字体字形。
我只是从自定义字体复制字形并将它们粘贴到系统字体中(使用 FontLab 提供的特殊粘贴 选项)。
然后我再次使用DOSBOX将这些ttf文件加入到ttc文件中。
这适用于我使用的自定义英文字体。但是将它与阿拉伯字体一起使用会出现一些问题。
文本字母在 iOS 应用程序和任何地方出现 分隔 。(正如您已经知道的那样,阿拉伯语使用连接字母,有时根据上下文使用分隔字母。如果字母是第一个字母,它将使用特定的字形,如果字母在中间或最后使用不同的字形,则同样如此。而在英语中,无论如何,所有字母始终保持分开。手写脚本除外。)
知道如何解决吗?
一些链接:
tutorial I followed to port my fonts
the arabic font I am trying to accomplish (it's free and legit)
P.S:有些人可能会说使用 Bytafont 字体库,但我想使用这种特定的字体。库中的阿拉伯字体也有限(仅提供 20 种字体)。
字体是在嵌入式硬件解释器和字体引擎上 运行 的复杂程序(与游戏硬件或模拟器中的游戏 ROM 运行 相同),并且不仅仅包含图片每个字母,还有关于如何根据告诉它要处理的输入序列来定位、组合和替换这些字母的所有说明。
对于几乎所有字体,仅复制字形轮廓是不够的,您还需要确保:
- 保留原始字体的字形顺序,
- GPOS table 被复制(决定标记定位、字距调整等),
- GSUB table 被复制(它处理字形替换,没有它你甚至不能写阿拉伯语。例如,你需要 ـب、ـبـ、بـ 或 ب,具体取决于相同的上下文 "letter" bā')
所以您通常希望解压 TTC
(从 OpenType 1.7 can be either truetype or postscript/type2, so that's a thing to remember for the future), then perform the replacements of glyphs (with order-preservation), as well as replacing the GPOS and GSUB tables (using FontForge or TTX 开始),然后将其打包回 TTC
。
我只是想使用自定义字体让我的 iPad 看起来更漂亮。
iOS8 设备的默认阿拉伯语字体是 GeezaPro。格式为 .ttc。
我正在尝试用我的自定义字体替换它。
我使用DOSBOX将系统字体ttc文件分解成ttf文件来制作它们可编辑。
然后我使用 FontLab Studio 将系统字体字形替换为我的自定义字体字形。
我只是从自定义字体复制字形并将它们粘贴到系统字体中(使用 FontLab 提供的特殊粘贴 选项)。
然后我再次使用DOSBOX将这些ttf文件加入到ttc文件中。
这适用于我使用的自定义英文字体。但是将它与阿拉伯字体一起使用会出现一些问题。
文本字母在 iOS 应用程序和任何地方出现 分隔 。(正如您已经知道的那样,阿拉伯语使用连接字母,有时根据上下文使用分隔字母。如果字母是第一个字母,它将使用特定的字形,如果字母在中间或最后使用不同的字形,则同样如此。而在英语中,无论如何,所有字母始终保持分开。手写脚本除外。)
知道如何解决吗?
一些链接:
tutorial I followed to port my fonts
the arabic font I am trying to accomplish (it's free and legit)
P.S:有些人可能会说使用 Bytafont 字体库,但我想使用这种特定的字体。库中的阿拉伯字体也有限(仅提供 20 种字体)。
字体是在嵌入式硬件解释器和字体引擎上 运行 的复杂程序(与游戏硬件或模拟器中的游戏 ROM 运行 相同),并且不仅仅包含图片每个字母,还有关于如何根据告诉它要处理的输入序列来定位、组合和替换这些字母的所有说明。
对于几乎所有字体,仅复制字形轮廓是不够的,您还需要确保:
- 保留原始字体的字形顺序,
- GPOS table 被复制(决定标记定位、字距调整等),
- GSUB table 被复制(它处理字形替换,没有它你甚至不能写阿拉伯语。例如,你需要 ـب、ـبـ、بـ 或 ب,具体取决于相同的上下文 "letter" bā')
所以您通常希望解压 TTC
(从 OpenType 1.7 can be either truetype or postscript/type2, so that's a thing to remember for the future), then perform the replacements of glyphs (with order-preservation), as well as replacing the GPOS and GSUB tables (using FontForge or TTX 开始),然后将其打包回 TTC
。