Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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
Python 3.x SVG字形到SVG/TTF/OTF字体_Python 3.x_Svg_Fonts - Fatal编程技术网

Python 3.x SVG字形到SVG/TTF/OTF字体

Python 3.x SVG字形到SVG/TTF/OTF字体,python-3.x,svg,fonts,Python 3.x,Svg,Fonts,我的目标是从SVG文件创建字体,我将使用基于GUI的SVG编辑器(关联设计器)创建该字体 我试图了解字体文件(TTF/OTF)是如何工作的,所以如果这是错误的,请纠正我。根据我的快速研究,字体文件似乎只是XML表,其中包含如何“绘制”字体的各个字形的信息 我的问题是,如何创建一个脚本,从SVG字形目录创建这些字体文件类型 我知道如何迭代目录中的文件,但是我可以使用什么来创建这些字体文件类型呢?fontTools的文档似乎有点让我难以理解。我只能用Python编程 我不期望任何人给出完整的过程答案

我的目标是从SVG文件创建字体,我将使用基于GUI的SVG编辑器(关联设计器)创建该字体

我试图了解字体文件(TTF/OTF)是如何工作的,所以如果这是错误的,请纠正我。根据我的快速研究,字体文件似乎只是XML表,其中包含如何“绘制”字体的各个字形的信息

我的问题是,如何创建一个脚本,从SVG字形目录创建这些字体文件类型

我知道如何迭代目录中的文件,但是我可以使用什么来创建这些字体文件类型呢?fontTools的文档似乎有点让我难以理解。我只能用Python编程


我不期望任何人给出完整的过程答案,但如果有人能为我指出正确的资源方向,我将不胜感激

TrueType或OpenType字体文件不是XML;它们是一种二进制文件格式,首先是一个表目录,然后是几个不同的表,其中包含字体工作所需的不同类型的信息。例如,每种字体都必须有一个“水平标题”表,该表提供用于水平文本布局的度量信息,例如上升和下降距离;每个字体都有一个字符到字形索引映射表,该表为每个受支持的Unicode字符指定默认使用的字形

不同类型的数据表都用一个四字节标签标识,并将字节视为ASCII字符。因此,使用上面提到的两个表,水平标题表使用标记“hhea”;字符到字形索引映射表使用标记“cmap”

OpenType字体可以支持单色字形或多色(“彩色”)字形。既然您提到了SVG,我想您应该制作一种彩色字体

OpenType支持使用不同格式的颜色图示符,每种格式都有一个专用的表格式/标记

  • 位图:由于历史原因,实际上有两种不同的表格格式:“sbix”表格,主要由苹果公司使用;还有“CBDT”表,主要由谷歌使用
  • 分层图示符(矢量):“COLR”表将每个颜色图示符定义为一组图示符,每个图示符在分层堆栈中具有单独的颜色
  • “SVG”表使用嵌入式SVG文档定义每个颜色图示符
当然,对于您的情况,“SVG”表似乎最适用。但是,请注意,并非所有平台或应用程序都支持它。Microsoft Windows支持上述所有四种格式;另一方面,Android不支持“SVG”表。在Windows上,旧版本的边缘浏览器支持使用“SVG”表的彩色字体,但较新的基于Chromium的版本不支持。“SVG”表最初是由Adobe和Mozilla提出的,因此Adobe应用程序和Firefox是您可以信赖的上下文

使用“SVG”表创建彩色字体并不像收集一组SVG文档并用“SVG”表将它们编译成OpenType文件那样简单。还有其他必要的表格使其成为功能性字体。您可以使用一些工具将“SVG”表添加到正常工作的字体中;例如,请参阅Microsoft的。还有一些从头开始创建字体的工具,为“SVG”表提供了支持;例如,请参见

您可能希望更熟悉OpenType格式:有关规范的当前版本,请参阅;有关“SVG”表的详细信息,请特别注意SVG中不受支持的部分,或者不建议实现支持的部分(因此未得到广泛支持)

还值得一提的是,正在开发一个新版本的COLR表,该表将向COLR表添加大量SVG功能。(原始版本为0;新版本为1。)相对于“SVG”表,COLR v1表的应用程序的一个主要优点是COLR v1是二进制格式,不需要使用XML和CSS解析器;字体的一个主要优点是COLRV1比“SVG”表更紧凑(字体文件更小)。已发布的OpenType规范还没有这个版本(更新后的规范很快会有一个alpha版本),但是您可以看到完整的建议规范(以ISO标准的建议修订版的形式)