我正在使用 Pycairo 用自定义字体绘制带有文本的图像。 只要系统上安装了该字体,此功能就可以正常工作。
但是,我想将我的自定义字体附加为数据文件(ttf 或任何其他类型)来分发我的包,并让我的代码引用该文件,而不是假设该字体已安装在客户端系统上。
本质上这是我的代码:
import cairo
with cairo.ImageSurface(cairo.FORMAT_ARGB32, 200, 200) as surface:
ctx = cairo.Context(surface)
ctx.select_font_face("my-font")
ctx.set_font_size(30)
ctx.move_to(10, 50)
ctx.show_text("Hello World")
surface.write_to_png("hello.png")
现在我想做一些类似
ctx.select_font_face("my-font")
的事情,而不是ctx.select_font_face("./assets/my-font.ttf")
。
我已阅读 Pycairo 关于 Text
的文档,但我找不到任何从文件加载字体的方法 - 似乎只有系统上安装的字体。
有没有办法让 Pycairo 从文件加载字体?
您可以使用
cairo.FontFace.create_for_path()
轻松做到这一点。您修改后的代码将是-
import cairo
font_path = "./assets/my-font.ttf" # Adjust the path to your font file
with cairo.ImageSurface(cairo.FORMAT_ARGB32, 200, 200) as surface:
ctx = cairo.Context(surface)
# Load the font from the file
font_face = cairo.FontFace.create_for_path(font_path)
# Set the font face in the context
ctx.set_font_face(font_face)
ctx.set_font_size(30)
ctx.move_to(10, 50)
ctx.show_text("Hello World")
surface.write_to_png("hello.png")
我希望它有帮助:)