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 所说)菜单。
如果您想直接安装字体,您可以使用 选择所有可用的字体。
当我在不显示图像的情况下向图像添加文本注释时,字体系列始终是 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 所说)菜单。
如果您想直接安装字体,您可以使用