在 pycairo 中使用自定义字体

问题描述 投票:0回答:1

我正在使用 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 从文件加载字体?

python fonts cairo pycairo
1个回答
0
投票

您可以使用

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")

我希望它有帮助:)

© www.soinside.com 2019 - 2024. All rights reserved.