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

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

当我在不显示图像的情况下向图像添加文本注释时,字体系列总是为 单区. 如何解决这个问题?

编辑 经过一些更多的测试,问题出现在两个,与 showImage() 和没有。当打开保存的图像时,字体系列就会丢失。


我想在一个目录下打开所有的图像文件,并为每个文件添加注释,而不向用户显示文件。一切都很好,除了字体系列总是为 单区.

下图显示的是在没有调用 showImage() 在左边。右边的是完全相同的代码,但只调用了一个 showImage(). 大家可以看到,字库是错的。代码如下图所示。

编辑。 如上所述,当我关闭右边的图像再打开时,右边的图像和左边的图像是一样的。

Text annotations created with showImage() and without 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);
annotations dm-script
1个回答
1
投票

所有的功劳都归于@BmyGuest。正如他在评论中建议的那样,应该 只使用已安装的字体. 像 "sans-serif "这样的字体不存在。要想知道安装了哪些字体,请使用(如@BmyGuest所说)右键点击注释时的菜单。

如果你想直接安装字体,你可以使用 这个答案(当然是来自@BmyGuest:) 它选择了所有可用的字体。

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