如何在iOS中从字体集合(TTC)中提取TrueType字体(TTF)?

3
我希望能够从一个TTC文件中提取所有包含的TTF文件,并将它们保存到我的应用程序的文档目录中。请问有没有什么方法可以做到这一点?是否有任何库可以帮助实现?
我已经找到了像fondu或Font Forge这样的OS X解决方案,但是在iOS下却无法运行。

你想让你的应用程序加载.ttc文件并从中提取.ttf文件吗?我怀疑你的应用程序是否能够访问.ttc文件...你试过了吗? - trojanfoe
实际上,你可以将它们加载到应用的文档目录中,然后从那里访问它们。我们假设它们已经在那里了,我想从中提取TTF文件。 - sunseeker
1个回答

0
这可以通过使用pyftsubset来完成,可以通过pip3 install fonttools进行安装。
#!/usr/bin/env bash

## Install required python dependencies with
# pip3 install fonttools

font="${1}"

for n in {0..10} ; do
    pyftsubset --font-number=${n} \
            --output-file="${font%.*}_${n}.ttf" \
            --verbose
done

pyftsubset 还可以让您选择特定的 Unicode 范围,并跳过您不想包括的字形。这适用于 TTC 和 TTF 文件,因此您可以通过从诸如 Arial Unicode 等字体中删除不需要的内容来缩小字体大小。 例如,下面的脚本只会包括中文、拉丁文和注音符号的 Unicode 范围:

#!/usr/bin/env bash

## Install required python dependencies with
# pip3 install fonttools

font="${1}"

for n in {0..10} ; do
    echo $n  #             CHINESE               BASIC LATIN               BOPOMOFO
    pyftsubset "${font}" --unicodes=U+4E00-9FFF --unicodes=U+0000-007F --unicodes=U+3100-312F \
            --font-number=${n} \
            --output-file="${font%.*}_chinese_only_${n}.ttf" \
            --verbose
done

注意:脚本将从0到10迭代字体索引 - 大多数ttc集合的文件少于10个,因此脚本将显示最后几个不存在的索引的错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接