理解问题
我遇到了一个问题。我需要将包含多个自定义字体的 svg 文件转换为 png。svglib
支持此功能。实际上,我能够将其中一种字体转换为svglib
的正确格式,以便正确地将 svg 转换为包含该字体的 png。问题是,我不一定知道哪些字体是“好”字体,哪些字体是“坏”字体(由于某种原因加载的 otf 字体和由于某种原因不加载的 otf 字体),因此理想地,我希望在Python 3.x.x中有一个函数,可以将所有字体转换为相同的可用格式。(截至2013年)。不过,我可以加载任何字体(ttf / otf / woff)到this site中,并使用它来使python抽出 png 文件,仅仅通过使字体与 svg 文件在相同的目录中并且具有与作为字体族的字体文件相同的名称,具有适当的结果,但是我无法使用Python的fonttools
来获得转换后的字体,以处理下面提供的代码:
编号
from reportlab.graphics import renderPM
from svglib.svglib import svg2rlg
from fontTools import ttLib
from io import BytesIO
from PIL import Image
# Here I tried to take the font (which I had initially as a woff) and convert it to a ttf.
#woff2.decompress("./my_font.woff", "./my_font.ttf")
# Here I tried to take the original otf and convert it to a ttf
# font = ttLib.TTFont("my_font.otf")
# font.flavor = None
# font.save("my_font.ttf")
buff = BytesIO()
drawing = svg2rlg("./test.svg")
renderPM.drawToFile(drawing, buff, fmt="PNG")
img = Image.open(buff)
# l, w = image.size
# img = img.resize()
new_buff = BytesIO()
img.save("new_test.png", dpi=(600, 600))
最小可复制示例的字体
我可以上传一个演示工作字体和不适用于给定格式的相同字体,但在此之前,我想确保这是SO社区指南的一部分,以分发可能受版权保护的字体(以及其他具有不同许可证和EULA的此类项目)的作品-也许评论可以证实或否认这一点(我没有最终用户许可协议,所以我可能会找到一个链接到一个字体,将是可复制的).我认为最简单的是我找到一个链接到一个字体在线,我可以重现的问题,所以我会得到寻找和更新后的链接,但我是说...拜托!我不能是唯一一个想解决这个问题的人吗?!
Working font example
一个不工作的字体例子-我可能是错的,但我认为如果你从一个 ttf 转换成一个 woff 回到一个 ttf 使用fonttools,你将能够重现这个问题。我仍然在寻找一个在线的例子。
问题陈述
因此,为了确保问题陈述清晰明确,目标是:获取任何 otf / ttf /或 woff(即使为了简单起见--只是一个 woff)文件,并通过Python将其转换为reportlab
支持的 ttf 文件(这意味着svglib
将支持它)。
1条答案
按热度按时间xwmevbvl1#
不幸的是,我不能提供一种字体来帮助实现“最小的、可复制的示例子句”,因为在线找到一种字体来复制这个子句是非常具有挑战性的(也许我没有在正确的地方搜索)。然而,我可以在fontforge中转换字体,并选择了它。我可以使用fontforge的脚本部分来完成这一点,所以我可以使用它批量转换字体,尽管是GPL,但在从fontforge接触社区后,他们说:
我们不认为使用FontForge创建的字体或在FontForge中运行的脚本是FontForge的衍生作品,这是内容创建工具和脚本解释器的标准做法。因此,FontForge许可证对这些字体和脚本的所有权或所有者使用和分发它们的权利没有任何暗示。FontForge目前严重依赖于大量GPL库,这一点不太可能改变。
所以就我的目的而言,我对这个解决方案很满意。