Russian Qt Forum
Ноябрь 25, 2024, 02:29
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
2D и 3D графика
>
Проблема с шрифтами
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Проблема с шрифтами (Прочитано 15057 раз)
juvf
Программист
Offline
Сообщений: 570
Проблема с шрифтами
«
:
Январь 20, 2009, 16:18 »
Написал программу на Qt4.4.0 под FreeBSD7.0 в KDE. Установил на др. ЭВМ FreeBSD7.0, Xorg и оконный менеджер IceWM. Запустил на этой эвм свою программу - всё работает, только шрифты какие-то другие, размер не тот, быквы как-то по другому отображаются, не так как у меня на компе. Как будьто там другие шрифты используются.
Мою программу предпологается запускать под любой ос и с любым оконным менеджером (kde, gnom, icewm, iwm и тп) в том числе и под виндой. Как сделать так, чтоб не зависимо от ос и wm, и не зависимо от наличия или отсутствия того или иного шрифта в ос шрифты в моей программе оттображались одинакого? Думаю, что нужно в код программы включить нужные шрифты. Как-то это можно сделать?
«
Последнее редактирование: Январь 20, 2009, 16:28 от juvf
»
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: Проблема с шрифтами
«
Ответ #1 :
Январь 20, 2009, 16:52 »
вроде в Qt нельзя конкретный шрифт определить, а только семейство. Хотя могу ошибаться.
Записан
Юра.
BaltikS
Гость
Re: Проблема с шрифтами
«
Ответ #2 :
Январь 20, 2009, 17:37 »
Я б ещё глянул утилитку qtconfig
Записан
Dendy
Гость
Re: Проблема с шрифтами
«
Ответ #3 :
Январь 20, 2009, 17:59 »
Тогда только таскать шрифт вместе с программой (вариант: сделать зависимость от пакета с нужным шрифтом) и при запуске программы добавляеть его с помощью:
int QFontDatabase::addApplicationFont ( const QString & fileName )
int QFontDatabase::addApplicationFontFromData ( const QByteArray & fontData )
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: Проблема с шрифтами
«
Ответ #4 :
Январь 20, 2009, 18:00 »
2 BaltikS, относительно линя ты прав, а вот в виндовозе нет такой.
Записан
Юра.
Rcus
Гость
Re: Проблема с шрифтами
«
Ответ #5 :
Январь 20, 2009, 18:21 »
А я бы вообще ничего не стал менять, ибо Qt делает все чтобы выглядеть нативно. Более чем уверен что некоторые маководы съедят заживо если вместо Lucida Grande приложение будет использовать левый шрифт. В Висте тоже лучше когда приложение использует системный шрифт Segoi UI. А под GNU/Linux Qt даже при запуске в рабочем окружении GNOME использует системные шрифты и палитру.
К чему это я... Не ломайте то, что работает
Записан
Dendy
Гость
Re: Проблема с шрифтами
«
Ответ #6 :
Январь 20, 2009, 18:40 »
Согласен с предыдущим оратором. Стандартные формы должны рисоваться следуя Look'n'Feel целевой системы. Тем не менее есть нестандартное рисование, результаты которого обязаны выглядеть везде одинаково. Для этого, собственно, и предусмотрен QFontDatabase.
Записан
juvf
Программист
Offline
Сообщений: 570
Re: Проблема с шрифтами
«
Ответ #7 :
Январь 21, 2009, 12:28 »
Чтоб прояснить суть проблемы в прикреплении два скриншота.
Один сделан с десктоповой машины, т.е. на которотую установленно KDE, Qt, и всяких прочий софт для комфортной работы, типа браузеры, аськи, ООО и т.п.
Второй сделан с ЭВМ на которой стоит только ос, Xorg и IceWM (оконный менеджер).
То что видно на картинке(темносерый фон) - это QScene и на ней графические элементы. Меня особо не волнует, то что меню "Help" выглядит по разному. Меня волнует, то что "ПАР-10" выглядит по разному. "ПАР-10" это QGraphicsTextItem лежащий на QScene, в котором есть текст, шрифт указан Helevetica жырный. В kde цыфра 10 какая-то маленькая, а в icewm слово ПАР какое-то маленькое и жирное. Я уже даже не цепляюсь к тому, что в ПАР даже буквы разные, например буква "А" написанна по разному. Пусть хотябы толшина и высота букв будет одинакова. А если сравнить слова "ПРИВОД", "Комплект 2", "П200", "Охрана" и т.д..... Неприятно как-то
На обоих ЭВМ установленна FreeBSD7.0. Я подозреваю, что на десктоповой машине возможно шрифт Helevetica - какойто другой. Возможно он был именён KDE или какой-нибудь оперой. Но как это можно выяснить? Где в FreeBSD лежит шрифт Helevetica? Как его можно перенести на др ЭВМ?
Но не хотелось бы тоскать за программой шрифты. Как то можно заставить QGraphicsTextItem используя один и тотже шрифт на разных ЭВМ (и даже в разных ОС) рисовать текст одинакого не смотря ни на какие настройки системы?
«
Последнее редактирование: Январь 21, 2009, 12:35 от juvf
»
Записан
Detonator
Гость
Re: Проблема с шрифтами
«
Ответ #8 :
Январь 21, 2009, 12:47 »
У меня прога под виндовс, но в нужном мне месте чтобы под любыми виндами выглядело одинаково я таскаю фонт в ресурсах и отрисовываю нестандартным растеризатором (я использую комерческий DType). В основе Qt вроде используется FreeType - попробуй через него, важен полный контроль над процессом растеризации. Правда возможны серьезные проблемы если желаешь чтобы на принтере было точно как на экране.
Записан
alex12
Гость
Re: Проблема с шрифтами
«
Ответ #9 :
Январь 21, 2009, 13:41 »
Рисование мнемосхем -- дело серьезное
. Думаю, что без встраивания используемого шрифта в проект, добиться одинакового отображения невозможно. Это единственное решение, которое позволит рисовать пиксель в пиксель. Тем более, что количество поддерживаемых ОС велико.
У меня, например, в одном проекте съехали шрифты при переходе с openSUSE 11.0 на 11.1.
Записан
juvf
Программист
Offline
Сообщений: 570
Re: Проблема с шрифтами
«
Ответ #10 :
Январь 21, 2009, 16:25 »
Цитировать
Рисование мнемосхем -- дело серьезное
базару нет
Ну я вот тоже думаю что нужно как-то шрифт встроить в проект. Но как?
А вот еще какая мысль меня посетила: Вместе с программой (назову её скада) будет поставляться редактор мнемосхем (РМС). У диспетчера будет скада крутиться на компе в режиме киоска, например под FreeBSD. Схемы будут рисовать ИТР на другой ЭВМ. Например инженер работает под Виндой (линуксом) - не беда. Грузи РМС в винде(линуксе) и рисуй схему. Потом закидывай её диспетчеру и наслаждайся жызнью.
1) Если на проблему шрифтов положыть - но скада получится несерьёзная.
2) Если шрифт встроить в программу, то пользователи будут ограниченны в количестве шрифтов встроенных в программу. Т.е. ИТР не сможет нарисовать схему шрифтом из винды(линукса) "АляЗашибатыйШрифт".
3) Еще может как-то сделать так, чтоб все шрифты хранились в файле схемы. Только вот Qt должна прорисовывать его на любой ос одинакого, пиксель к пикселю. Но эта задача по мойму еще сложнее чем задача 2.
Думаю что нужно как-то смотреть в сторону 2. Кто-нибудь может подсказать как можно шрифты воткнуть в проект?
Записан
alex12
Гость
Re: Проблема с шрифтами
«
Ответ #11 :
Январь 21, 2009, 17:57 »
Это же Скада! ИМХО здесь шрифты должны быть максимально читаемы. Много шрифтов не надо. У нас (фирмы) очень большой опыт в разработке и внедрении скад. Мы специально сделали свой собственный шрифт с аккуратно подобранным начертанием символов, именно чтобы они хорошо читались оператором. Поэтому мне кажется, что нужно выбрать наиболее подходящий шрифт и его внедрить. Ну не один, конечно, а несколько разных типов: с засечками, без засечек, моноширинный.
Кроме шрифтов на скриншотах еще полно артефактов, или это особенности сжатия картинок...
«
Последнее редактирование: Январь 21, 2009, 18:08 от alex12
»
Записан
Detonator
Гость
Re: Проблема с шрифтами
«
Ответ #12 :
Январь 21, 2009, 18:35 »
Цитировать
Только вот Qt должна прорисовывать его на любой ос одинакого, пиксель к пикселю.
Не Qt должна а вы сами должны.
Я же выше написал - используйте стороннюю либу. Будет результат пиксель в пиксель на любой системе.
В Qt такого нет.
А шрифт вставляется в любой файл как обычные данные. Или и с этим проблемы?
При необходимости он загружается в память и из него подключается к текущим шрифтам.
Также помните о копирайтах на шрифты, не все шрифты идут с лицензией допускающей встраивание.
«
Последнее редактирование: Январь 21, 2009, 18:38 от Detonator
»
Записан
Dendy
Гость
Re: Проблема с шрифтами
«
Ответ #13 :
Январь 21, 2009, 19:16 »
Уже выше писал про QFontDatabase. Сам не использовал, но теоретически не вижу проблем.
Цитата: Detonator от Январь 21, 2009, 18:35
В Qt такого нет.
Опять же, чем не устраивает QFontDatabase?
Записан
Detonator
Гость
Re: Проблема с шрифтами
«
Ответ #14 :
Январь 21, 2009, 20:00 »
Цитата: Dendy от Январь 21, 2009, 19:16
Опять же, чем не устраивает QFontDatabase?
При использовании кастомного растеризатора фонт нужно грузить его средствами.
А QFontDatabase делает его доступным лишь для самой Qt которая нормального контроля над рендерингом и не дает.
Записан
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...