На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Применение шрифта для вывода надписей на карту

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: 1 2 След.
RSS
Применение шрифта для вывода надписей на карту
 
Всем доброго дня.

В ходе портирования проекта на Astra Linux Smolensk столкнулся с проблемой применения шрифта к выводимому на карту тексту.
Код
Блок стилей "STYLE"
    IMGTRUETEXT parmText;
    memset(static_cast<void*>(&parmText), 0, sizeof(parmText));
    parmText.Text.Color         = RGB(0, 0, 0);
    parmText.Text.BkgndColor    = IMGC_TRANSPARENT;
    parmText.Text.ShadowColor   = 0xFFFFFFFF;
    parmText.Text.Height        = textHeightMM*1000;
    //parmText.Text.CharSet       = RUSSIAN_CHARSET;


    //parmText.Text.Align         = FA_CENTER;


    QString fontName = "Compact-KOI8";
    memcpy(parmText.FontName, fontName.toLocal8Bit().data(), fontName.toLocal8Bit().size());


    qDebug() << "Сохранённое наименование ШРИФТА"  <<parmText.FontName;


    mapAppendDraw(obj, IMG_TRUETEXT, (const char*) &parmText);
    mapSetObjectScale(obj, 1);      //1 - установить масштабируемость объекта
Текст я вывожу с помощью метода
Код
Блок стилей "STYLE"
mapPutTextUnicode(obj, reinterpret_cast<const WCHAR *>(stringToDisplay.constData()), 0);
В результате всегда выводится шрифт linux по умолчанию, тогда как мне критичен вывод именно шрифта Compact. Я безуспешно пробовал UTF и KOI версию этого шрифта.
Подскажите, в чём я ошибаюсь и как мне правильно применить шрифт к тексту.
 
Здравствуйте!

Не получилось найти шрифт Compact в списке шрифтов, установленных по умолчанию в Astra Linux 1.6 ("Панель управления" -> "Шрифты").
Уточните, пожалуйста, корректно ли Вы установили данный шрифт в операционной системе (отображаются ли его параметры в указанном выше диалоге).
 
Добрый вечер.
Шрифт Compact в Astra Linux мы установили дополнительно (есть в интернете), в Менеджере шрифтов (Панель управления-Шрифты) установленный нами шрифт отображается.
Изменено: Михаил Федосеев - 22.09.2020 19:10:06
 
День добрый, Александр Савелов.

Пытались использовать не только шрифт Compact, установленный нами дополнительно в Astra Linux, но и стандартные шрифты, предустановленные в системе, итог получался один и тот же - никакой реакции на шрифты.
Используемый нами шрифт Compact доступен по ссылке  Compact.ttf

Подскажите, в чем может быть дело?
Изменено: Александр - 25.09.2020 17:51:50
 
Проверили отображение разных шрифтов.
Шрифты с яркими отличиями (Times New Roman, T132 и т.п.) четко определяются.
Некоторые шрифты отображаются похожими символами. Например, визуально сложно отличить Roboto и Tahoma, хотя в Word они заметно отличаются.
Сравнение отображения Word и Libre Office дает несколько разные начертания одинаковых по названию шрифтов.

Какой у Вас критерий оценки того, что шрифт не подключился?
Вы смотрели текст на том же компьютере в Libre Office?

Кроме того, Вы не заполняете корректно все поля и хитро записываете название шрифта. Это тоже может влиять.

Weight - Вес шрифта, толщина контура (FW_THIN, ...)
#define FW_THIN             100
#define FW_EXTRALIGHT       200
#define FW_LIGHT            300
#define FW_NORMAL           400
#define FW_MEDIUM           500
#define FW_SEMIBOLD         600
#define FW_BOLD             700
#define FW_EXTRABOLD        800
#define FW_HEAVY            900
...

Можно просто написать:

Код
strcpy(parmText.FontName, "Compact");
 
Здравствуйте!

Проверили корректность отображения подписей с помощью приведенного ниже примера - шрифты отображаются корректно:
Код
  HMAP mapHandle = mapOpenAnyData(WTEXT("/tmp/Data/Noginsk/Noginsk.sit"));
  assert(mapHandle);

  HOBJ textObjectHandle = mapCreateObject(mapHandle);
  mapRegisterDrawObject(textObjectHandle, 5, LOCAL_TITLE);

  IMGTRUETEXT parmText;
  memset(static_cast<void*>(&parmText), 0, sizeof(parmText));
  parmText.Text.Color = RGB(0, 0, 0);
  parmText.Text.Height = 4000;
  parmText.Text.Weight = FW_THIN;
  parmText.Text.BkgndColor = IMGC_TRANSPARENT;
  parmText.Text.ShadowColor = 0xFFFFFFFF;
  StrCopy(parmText.FontName, "Times New Roman", sizeof(parmText.FontName));

  assert(mapAppendDraw(textObjectHandle, IMG_TRUETEXT, (char *)&parmText));

  IMGLINE parmLine;
  parmLine.Color = 255;
  parmLine.Thick = 255;

  assert(mapAppendDraw(textObjectHandle, IMG_LINE, (char *)&parmLine));

  mapAppendPointPlane(textObjectHandle, 6195000, 7440000);
  mapAppendPointPlane(textObjectHandle, 6195000, 7445000);

  mapPutTextUnicode(textObjectHandle, WTEXT("ФЫВАПРОЛЖЭ"), 0);

  long isCommited = mapCommitObject(textObjectHandle);
  assert(isCommited);

  mapCloseData(mapHandle);
 
Александр Савелов, Oleg Belenkov,

Выполнили Ваш код в Astra Linux, вес шрифта, толщину контура заполнили, а нужный шрифт все-равно не отобразился, результат в виде скриншота доступен по ссылке (применение шрифтов, сверху вниз - Compact, Arial, Times New Roman):
https://www.dropbox.com/s/9d3bfrjizake5sr/Screenshot_20200925_172745.png?dl=0
Побывал на предустановленных в системе шрифтах - безрезультатно.


В Windows 10 - все замечательно, применение шрифта видно:
Compact
https://www.dropbox.com/s/zw23ydyy73j5d29/Compact_win10.PNG?dl=0
Arial
https://www.dropbox.com/s/iix7k3gzm2gd3b2/Arial_win10.PNG?dl=0
Times New Roman
https://www.dropbox.com/s/r21rfqlpif3qptz/Times%20New%20Roman_win10.PNG?dl=0

есть ли еще варианты, в чем может быть дело?
Изменено: Александр - 25.09.2020 18:02:47
 
А что в графических редакторах Astra Linux для этих шрифтов?
 


https://mfd.sk/jbqcRY-1LDaWxxt9hzgIjq9r
 
Здравствуйте, Александр!

Подписи отображаются шрифтами из системы только при использовании принтерного вида.
Код
mapSetViewType(hmap, VT_PRINTRST);
Для примера Вы можете открыть сформированную карту в примере myfirst и выбрать в меню "Вид карты" Принтерный вид.
Так же, обращаю Ваше внимание, что для корректной работы этого функционала необходимо выполнить создание компонента QDMapView. При этом использовать его не обязательно: в конструкторе вызывается назначение функций отображения средствами Qt.

Вот пример отображения тестовой карты в примере myfirst в принтерном виде

http://public.gisinfo.ru/Forum/fonts.png
Страницы: 1 2 След.
Читают тему (гостей: 1)



© КБ Панорама, 1991-2020

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности