dm-script 在保存图像时丢失字体系列

dm-script looses font family when saving images

当我在不显示图像的情况下向图像添加文本注释时,字体系列始终是 monospace。我该如何解决这个问题?

编辑: 经过更多测试后,问题出现在 showImage()showImage() 两种情况下。打开保存的图像时,字体系列丢失。


我想打开一个目录中的所有图像文件,并在不向用户显示文件的情况下为每个文件添加注释。除了字体系列始终为 monospace 外,一切正常。

下图显示了在左侧没有调用 showImage() 的情况下添加的文本。右侧是完全相同的代码,但调用了一次 showImage()。可以看出,字体系列是错误的。代码如下所示。

编辑: 如上所说,关闭右图再打开时,右图等于左图。

String path = "/temporary/path/for/saving/test-img.dm4";

// create dummy image and save it
image img := RealImage("The Image", 4, 512, 512);
img = itheta
img.saveImage(path);

// - - -
// open the image and process it

img := openImage(path);
// img.showImage(); // <- This makes the difference between left and right image 
                    //    *Edit*: Both images loose their font family if they are
                    //    closed and opened again

ImageDisplay disp;
if(img.ImageCountImageDisplays() == 0){
    disp = ImageCreateImageDisplay(img, -2);
}
else{
    disp = img.ImageGetImageDisplay(0);
}

Component text = NewTextAnnotation(100, 300, "Some text", 20);
text.ComponentSetForegroundColor(0, 0, 140);
text.ComponentSetFontFaceName("sans-serif");
disp.ComponentAddChildAtEnd(text);

// save so the image can be opened if it is not shown anyway
img.saveImage(path);

所有功劳归于@BmyGuest。正如他在评论中建议的那样,应该 仅使用已安装的字体 。 "sans-serif" 之类的字体不存在。要找出安装了哪些字体,请在右键单击注释时使用(如@BmyGuest 所说)菜单。

如果您想直接安装字体,您可以使用 选择所有可用的字体。