dm-script теряет семейство шрифтов при сохранении изображений - PullRequest
1 голос
/ 30 апреля 2020

Когда я добавляю текстовые аннотации к изображению без отображения изображения, семейство шрифтов всегда равно моноширинный . Как мне это исправить?

Редактировать: После еще нескольких испытаний проблема появляется как для showImage(), так и без. При открытии сохраненного изображения семейство шрифтов теряется.


Я хочу открыть все файлы изображений в одном каталоге и добавить аннотации к каждому файлу, не показывая файл пользователю. Все работает нормально, за исключением того, что семейство шрифтов всегда monospace .

На следующем рисунке слева показан текст, добавленный без вызова 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);

1 Ответ

1 голос
/ 05 мая 2020

Весь кредит переходит на @BmyGuest. Как он предложил в своем комментарии, следует использовать только те шрифты, которые установлены . Шрифты типа "без засечек" не существуют. Чтобы узнать, какие шрифты установлены, используйте (как сказал @BmyGuest) меню при щелчке правой кнопкой мыши на аннотации.

Если вы хотите установить шрифты напрямую, вы можете использовать этот ответ (от @ BmyGuest, конечно:)) , который выбирает все доступные шрифты.

...