0

我正在使用 Gimp python-fu 插件。正确编写的插件会渲染一个文本块:

(GIMP_UNIT_POINT = 3)
titleBlockLayer = pdb.gimp_text_layer_new(img, title, <font_name>, 40, GIMP_UNIT_POINT)

但仅当在计算机控制台上登录时从 X 窗口管理器(或终端窗口)调用 gimp(Fedora,各种版本,相同的行为;GIMP 的各种版本,相同的行为)。但是,当通过 ssh 登录时(使用 X11 转发在本地显示),相比之下,字体呈现巨大。

我很困惑,因为(据说)相同的登录 .profile 和 .rc 文件已经运行了。

有没有人知道 GIMP 是什么/在哪里/如何确定 POINT 的含义,因为它显然不是编码的,而是依赖于某个资源文件。

4

1 回答 1

0

gimp_text_get_extents_fontname()根据PDB 浏览器中的文档,对于 Gimp,一个点是 1/72 英寸:

如果您需要以磅为单位显示字体,请将大小以磅为单位除以 72.0,然后乘以您考虑的图像的垂直分辨率。

实验上,使用点时gimp_text_layer_new()的大小取决于图像打印定义。此值可能取决于用户设置(默认为 72DPI),但您可以使用 gimp_image_get_resolution(...)和控制/设置它gimp_image_set_resolution(...)。令我困扰的是,至少在我的 Ubuntu 16.04 上似乎gimp_text_layer_new()以英寸而不是以点为单位工作(在 72DPI 下,点和像素应该是等效的),所以我会坚持使用像素和点<->像素转换使用图像分辨率。

顺便说一句,您的各种系统上的 Gimp 以及 Pango 和 Cairo 库的版本是什么?

编辑:可能的解释:似乎在最近的版本中(至少从 2.8 开始),gimp_text_layer_new()接受的不仅仅是像素和点。它还需要毫米、英寸和皮卡。所以它不再0用于像素和1点,您可以使用预定义的UNIT_*值。catch:1不再是点的值,而是英寸的值:

UNIT_PIXEL=0
UNIT_INCH=1 
UNIT_MM=2
UNIT_POINT=3
UNIT_PICA=4
于 2019-09-18T07:34:27.583 回答