Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fonts 需要指导-编写自己的字体转换器/子设置程序_Fonts_Console_Converter_Subset - Fatal编程技术网

Fonts 需要指导-编写自己的字体转换器/子设置程序

Fonts 需要指导-编写自己的字体转换器/子设置程序,fonts,console,converter,subset,Fonts,Console,Converter,Subset,我想做我自己的字体转换器/子设置器。e、 g.只从字体中选择特定的字母并生成一个新字母 问题是什么 列表项 哪种语言最适合这个(有处理字体的库) 有没有教程和资源可以让我阅读更多关于这个主题的内容 有现成的、免费的选择吗 fontsquirell用于转换和辅助设置的是什么 要求: 列表项 它至少需要处理一种字体类型。ttf/otf对哪一个都不重要 如果它是第三方的,它必须能够从控制台/通过api运行 提前感谢再次运行搜索并找到此 来自答案的链接: 它基于Php,用于ttf,可以根据我的需要轻

我想做我自己的字体转换器/子设置器。e、 g.只从字体中选择特定的字母并生成一个新字母

问题是什么

  • 列表项
  • 哪种语言最适合这个(有处理字体的库)
  • 有没有教程和资源可以让我阅读更多关于这个主题的内容
  • 有现成的、免费的选择吗
  • fontsquirell用于转换和辅助设置的是什么
  • 要求:

  • 列表项
  • 它至少需要处理一种字体类型。ttf/otf对哪一个都不重要
  • 如果它是第三方的,它必须能够从控制台/通过api运行

  • 提前感谢

    再次运行搜索并找到此

    • 来自答案的链接:

    • 它基于Php,用于ttf,可以根据我的需要轻松修改

    • 如果还有更多关于这个主题的资料,请分享

    对于Type1字体,从头开始这将是一项相对复杂的任务。您需要对Type1格式有一个良好的处理。该规范可从Adobe免费获得。但粗略阅读一下这份文件,你会发现它不是为胆小的人准备的,需要对后记有一定的了解


    但这项任务已经在名为GhostScript的开源项目中完成了。您可以自动生成一个简单的一行PostScript程序来打印所需的字母集,然后在FontSubseting打开的情况下将PS呈现为PDF。生成的PDF将包含子集Type1字体,然后您可以提取该字体。GhostScript从命令行运行,整个过程只需很少编程即可编写脚本;当然,尽管不是没有大量的工作;)

    以下是可以将字体子集的一些方法

    1) 使用支持字体子集设置的库编写自己的程序

    在中找到的php字体库支持字体子集设置

     $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) 使用基于web的字体子集工具

    我找到的最好的是在。这个服务已经对glyph块进行了分类,这样我就不需要手动输入它们,这大大节省了时间。此外,它支持多种格式,不仅仅是woff或ttf。也是一个不错的选择,但仅适用于webfonts

    3) 使用支持子集设置的字体应用程序

    我知道fontforge允许子集设置,我过去也使用过它

    4) 使用API

    使用字体子集API,就像在上提供的那样。Google webfonts api也支持子集设置,但仅支持Google字体