我想制作自己的字体转换器/子设置器。例如只从字体中选择特定字母并生成一个新字母。
问题?
要求:
提前致谢
答案 0 :(得分:1)
对于Type1字体,从头开始这将是一项相对复杂的任务。你需要对Type1格式有一个很好的处理。该规范可从Adobe免费获得。但粗略阅读文档会告诉你,这不适合胆小的人,需要熟悉PostScript。
但是这项任务已经在名为GhostScript的开源项目中完成。您可以自动生成一个简单的单行PostScript程序来打印您需要的字母集,然后在打开fontsubsetting的情况下将PS渲染为PDF。生成的PDF将包含子集化的Type1字体,然后您可以提取该字体。 GhostScript从命令行运行,整个过程可以用非常少的编程编写脚本;当然,虽然不是没有相当多的工作;)
答案 1 :(得分:0)
另一次搜索运行并找到了这个
How do you generate a font subset in PHP?
来自回答的链接:http://www.4real.gr/technical-documents-ttf-subset.html
对于ttf,它的Php基础可以很容易地根据我的需要进行修改。
答案 2 :(得分:0)
这些是您可以对字体进行分组的一些方法。
1)使用支持字体子集的库来编写自己的程序
在https://github.com/PhenX/php-font-lib找到的php-font-lib支持字体子集化。
$fontfile = "example.ttf";
$subset = "abcdefghijklmnopqrstuvwxyz";
$font = Font::load($fontfile);
if ($font instanceof Font_TrueType_Collection) {
$font = $font->getFont(0);
}
$font->parse();
$font->setSubset($subset);
$font->reduce();
$tmp = tempnam(sys_get_temp_dir(), "fnt");
$font->open($tmp, Font_Binary_Stream::modeWrite);
$font->encode(array("OS/2"));
$font->close();
2)使用基于网络的字体子集工具
我找到的最好的是http://everythingfonts.com/subsetter。这项服务已经对字形块进行了分类,因此我不需要手动输入它们,节省了大量时间。此外,它支持各种格式,而不仅仅是woff或ttf。 http://www.subsetter.com/也是一个不错的选择,但仅限于webfonts。
3)使用支持子集的字体应用程序
我知道fontforge允许子集化,我过去曾使用它。
4)使用API
使用字体子集API,就像http://everythingfonts.com/api/subset中提供的那样。 Google webfonts api也支持子集,但仅支持谷歌字体。