Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Zmeishe от Апрель 28, 2008, 09:44



Название: Отображение шрифтов в Linux [РЕШЕНО]
Отправлено: Zmeishe от Апрель 28, 2008, 09:44
По форуму искал, про 75 и 100 dpi знаю - решение никак не найду.

Пробовал на Mandriva 2007 Spring и на CentOS 5.

Вообще интересно для Mandriva 2007 Spring.
KDE 3.5, ярлыки на рабочем столе, Firefox, OpenOffice и другие программы отображают шрифты просто супер.
Тем более, что Mandriva позволяет выставлять нестандартный для Линукса dpi - 96 и 120 и антиальясинг и хинтинг.
Смотрю на всё это и наслаждаюсь. И ЗD кубик крутится вертится.
Никаких Виндовозных шрифтов я туда не ставил.

Запускаю свою Qt4 программу и начинает тошнить - все буковки лесенкой.
Почему программа не может отобразить шрифты также как KDE или приложение должно быть KApplication вместо QApplication или как или что ??

Перепробовал все шрифты, которые видит QDesigner, результата никакого - только лесенка.


Название: Re: Отображение шрифтов в Linux
Отправлено: Zmeishe от Апрель 28, 2008, 11:04
Покопавшись в инете нашёл вот это
http://linux.alexnet.ru/doc_ru/qt-fonts-HOWTO/index.html (http://linux.alexnet.ru/doc_ru/qt-fonts-HOWTO/index.html)
Необходимо собрать Qt с ключиком configure -xft и установить переменную окружения QT_XFT в true. Но это всё для Qt-2.3.0

Посмотрел свой configure --help и обнаружил только ключики
-no-fontconfig...Do not compile FontConfig (anti-aliased font) support
-fontconfig........Compile FontConfig support
                       Requires  fontconfig/fontconfig.h and libfontconfig
                       freetype.h and libfreetype
Это оно ?
Как теперь выглядит переменная окружения для Qt 4 вместо QT_XFT ?
Асистант молчит как партизан.



Название: Re: Отображение шрифтов в Linux
Отправлено: ритт от Апрель 28, 2008, 11:54
давай скриншотик "лесенки"
кутэ4 самосборная или дистровая? все необходимые пакеты установлены? было бы не лишним увидеть кэш конфигуратора


Название: Re: Отображение шрифтов в Linux
Отправлено: Zmeishe от Апрель 29, 2008, 09:49
В линуксе даже иконки у QLable тоже ломаные. А на ярлыки на рабочем столе приятно смотреть. Шрифт в окне и KDE один и тот же. Только моё окно не понимает, что у KDE 120 dpi.
Qt - самосборная
Необходимые пакеты - это какие. По крайней мере при сборке ни разу ни на что не ругнулся.
Кеш конфигуратора это в где?


Название: Re: Отображение шрифтов в Linux
Отправлено: Zmeishe от Апрель 29, 2008, 10:44
Вот тут чего-то похожее. Буду разбираться.
http://prog.org.ru/forum/index.php/topic,6986.msg34270.html#msg34270 (http://prog.org.ru/forum/index.php/topic,6986.msg34270.html#msg34270)


Название: Re: Отображение шрифтов в Linux
Отправлено: ритт от Апрель 29, 2008, 13:14
покажи хотя бы что пишет конфигура в "итого"...как то:
Цитировать
XShape support ...... yes
Xinerama support .... yes


Название: Re: Отображение шрифтов в Linux
Отправлено: Zmeishe от Апрель 29, 2008, 13:50
Вот только-что закончил сборку Qt заново. Всё получилось отлично.
Теперь невозможно отличить где прога крутится в Линуксе или Виндовозе.


Суть действительно в сборке.
Т.е. ключи
-fontconfig
-xrender
-xrandr
-xfixes
-xcursor
-xinerama
-xshape
включаются Qt конфигуратором на основе анализа системы, при наличии соотвествующих библиотек и соответствующих им develop пакетов.

Для того, чтобы у Qt программ в Линуксе не было проблем с отображением шрифтов и масштабированием иконок, после выполнения configure
в файле .qmake.cache должны быть такие записи
QMAKE_LIBS_X11 = -lfreetype -lfontconfig $$QMAKE_LIBS_X11
QMAKE_LIBS_X11 = -lXinerama $$QMAKE_LIBS_X11
QMAKE_LIBS_X11 = -lXcursor $$QMAKE_LIBS_X11
QMAKE_LIBS_X11 = -lXfixes $$QMAKE_LIBS_X11
QMAKE_LIBS_X11 = -lXrandr $$QMAKE_LIBS_X11
QMAKE_LIBS_X11 = -lXrender $$QMAKE_LIBS_X11

Где должны быть вот такие записи
XShape support ...... yes
Xinerama support .... yes
Xcursor support ..... yes
Xfixes support ...... yes
Xrandr support ...... yes
Xrender support ..... yes
FontConfig support .. yes
я у себя не нашёл.

Подозреваю, что в этом решение ещё одной проблемы.
Когда я скомпилил прогу на одном Линуксе, а потом скопировал на другой (FedoraCore) - прога отказалась даже стартовать. Чего мне только не советовали: поставить qt библиотеки из репозитария FedoraCore, пересобрать Qt статически на компьютере источнике. Ничего не помогало, пока на Fedore не собрал Qt из исходников, а затем сами программы.

Сейчас проверил - действительно на одном компе Линукс поставлен весь полностью и Qt там собрана с fontconfig, а на другом Линукс поставлен выборочно и Qt собран без fontconfig.

PS
Тока непонятно как KDE и OpenOffice сглаживали шрифты - они ведь тоже на Qt сделаны ?


Название: Re: Отображение шрифтов в Linux [РЕШЕНО]
Отправлено: lit-uriy от Апрель 29, 2008, 14:37
текущий KDE на QT3 работает, а вот KDE4 еще немногие рискуют совать в дистриб.


Название: Re: Отображение шрифтов в Linux [РЕШЕНО]
Отправлено: ритт от Апрель 29, 2008, 15:45
вот и замечательно! приложи для полноты картины скриншотик того же диалога, что получился в итоге...
не понял только как Xinerama, Xcursor относятся к сглаживанию шрифтов/иконок?

я, конечно, понимаю, что не для всех причина была очевидна (предсказуема как минимум), и такой материал _нужно_ выносить в фак (и где это обещанная вика?).

как насчёт создать доп.раздел, куда выносить (дублировать/перемещать) подобные ветки чтобы в светлом будущем накопипастить в вику? - это в первую очередь одминам и модерам адресовано...


Название: Re: Отображение шрифтов в Linux [РЕШЕНО]
Отправлено: Zmeishe от Апрель 29, 2008, 16:11
Я сам не знаю как Xinerama, Xcursor влияют на шрифты, но поскольку они относятся к X11, то на графику наверняка влияют. Иконки в диалоге тоже были ступеньками, а теперь нет.

>>как насчёт создать доп.раздел, куда выносить (дублировать...

Лучше дублировать.


Название: Re: Отображение шрифтов в Linux [РЕШЕНО]
Отправлено: Пантер от Апрель 29, 2008, 16:17
А вот на счет OpenOffice вы зря.... Писан он с использованием GTK, а совсем не кути. И это плохо.


Название: Re: Отображение шрифтов в Linux [РЕШЕНО]
Отправлено: Zmeishe от Апрель 29, 2008, 16:31
Ага, вот почему у егойного API — ООП такой невменяемый. (я все мозги измучил)
Значит мне насвистели по то, что он на Qt.


Название: Re: Отображение шрифтов в Linux [РЕШЕНО]
Отправлено: Пантер от Апрель 29, 2008, 17:01
На счет OOo+Qt - это желание многих, но оно не осуществимо. :(


Название: Re: Отображение шрифтов в Linux [РЕШЕНО]
Отправлено: lit-uriy от Апрель 29, 2008, 18:09
Zmeishe, я вот так и непонял, насчет решения проблемы, теперь если твою софтину взять скомпиленую тобой, и запустить на любом линухе, все будет путем?
Qt'я на линухе надо с нужными ключами собирать только на той машине где софтину компилишь?


Название: Re: Отображение шрифтов в Linux [РЕШЕНО]
Отправлено: Zmeishe от Апрель 30, 2008, 07:59
Я имею ввиду (предполагаю) следующее:
Если на исходной машине установлены libfontconfig, libfreetype и Qt собрана с ключиками -fontconfig и пр. и на машине адресате тоже установлены libfontconfig, libfreetype, то вполне возможно там Qt собирать нет необходимости - достаточно перенести туда QtCore4, QtGui4 и т.д. и свою прогу пересобирать там из исходников не придёться.

А вот если на машине адресате libfontconfig, libfreetype НЕ установлены, то думаю у QtGui4 будет "срывать башню". У меня софтина там вообще не стартовала. Я даже не помню сообщения об ошибке (если оно вообще было). Даже проверка ldd ничего не показала. Я тогда, так и не понял причины. А когда собрал там Qt и свою прогу увидел лесенку в шрифтах и иконках.

Отсюда и сделал своё предположение т.к. библиотеки Qt из репозитария Fedor`ы наверняка собраны без libfontconfig, libfreetype.
Просто надо проверить это предположение т.к. оно достаточно логично.


Название: Re: Отображение шрифтов в Linux [РЕШЕНО]
Отправлено: BRE от Апрель 30, 2008, 08:59
Отсюда и сделал своё предположение т.к. библиотеки Qt из репозитария Fedor`ы наверняка собраны без libfontconfig, libfreetype.
Просто надо проверить это предположение т.к. оно достаточно логично.
Qt4 cобрана с libfontconfig и libfreetype.
Fedora Core 6:
#ldd libQtGui.so.4.3.2
        linux-gate.so.1 =>  (0x00110000)
        libaudio.so.2 => /usr/lib/libaudio.so.2 (0x003de000)
        libXt.so.6 => /usr/lib/libXt.so.6 (0x06dab000)
        libpng12.so.0 => /usr/lib/libpng12.so.0 (0x07643000)
        libSM.so.6 => /usr/lib/libSM.so.6 (0x0668b000)
        libICE.so.6 => /usr/lib/libICE.so.6 (0x0666f000)
        libQtCore.so.4 => /usr/lib/libQtCore.so.4 (0x003f8000)
        libz.so.1 => /usr/lib/libz.so.1 (0x00dbf000)
        libgthread-2.0.so.0 => /lib/libgthread-2.0.so.0 (0x00d84000)
        librt.so.1 => /lib/librt.so.1 (0x00d79000)
        libglib-2.0.so.0 => /lib/libglib-2.0.so.0 (0x06696000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00de1000)
        libXi.so.6 => /usr/lib/libXi.so.6 (0x0675a000)
        libXrender.so.1 => /usr/lib/libXrender.so.1 (0x06651000)
        libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0x003bb000)
        libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0x0665c000)
        libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0x06663000)
        libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0x00dfa000)
        libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x064ba000)
        libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0x0037c000)
        libXext.so.6 => /usr/lib/libXext.so.6 (0x00347000)
        libX11.so.6 => /usr/lib/libX11.so.6 (0x00243000)
        libdl.so.2 => /lib/libdl.so.2 (0x00db9000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x06564000)
        libm.so.6 => /lib/libm.so.6 (0x00d90000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x003ad000)
        libc.so.6 => /lib/libc.so.6 (0x00dfd000)
        libXau.so.6 => /usr/lib/libXau.so.6 (0x00dd4000)
        /lib/ld-linux.so.2 (0x80000000)
        libexpat.so.0 => /lib/libexpat.so.0 (0x00359000)
        libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00dd9000)


Название: Re: Отображение шрифтов в Linux [РЕШЕНО]
Отправлено: Sergey B. от Апрель 30, 2008, 09:24
И не забыть прописать путь к либам Qt В /etc/ld.so.conf


Название: Re: Отображение шрифтов в Linux [РЕШЕНО]
Отправлено: INGIO от Март 12, 2009, 21:49
Странно, но в при конфигурации Qt 4.5. configure ругается на параметр -fontconfig. Говорит, что в тестировании и включен не может быть... Даст ли должный эффект сборка без -fontconfig?