LINUX.ORG.RU

HOWTO по ttf, AA и оптимизации KDE


1

0

Вторая попытка запостить свои советы. Первая сорвалась. (Не знал про обязательную регистрацию). Итак.

Несколько общих моментов.
1. Я всё собираю из исходников
2. У меня Slackware 8 с GCC 2.95.3
3. У меня Xfree86 4.1 (из исходников), QT 2.3.2 (аналогично), KDE 2.2.2 (аналогично)
4. Железо - p3 733 -> 951, 512 mb RAM, MGA g400 16 mb SH и S3virgeDX 4mb. ASUS TUSL2C.


1. Truetype.

В составе XFree86 поставляется пакет truetype2 довольно старой версии. Нужно взять посвежее,(у меня 2.0.5), изменить в include/freetype/config/ftoption.h строку 314:
#undef TT_CONFIG_OPTION_BYTECODE_INTERPRETER

на

#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER

это позволит нормально масштабировать шрифты.

Собрать пакет и проинсталлировать его в /usr/X11.

Для нормальной подстановки шрифтов (и для использования microsoft ttf по умолчанию) в XftConfig воткнуть

match any family == "serif" edit family += "Times New Roman";
match any family == "sans" edit family += "Verdana";

match any family == "Comic Sans" edit family += "Comic Sans MS";
match any family == "Comic Sans MS" edit family =+ "Comic Sans";
match any family == "Trebuchet" edit family += "Trebuchet MS";
match any family == "Trebuchet MS" edit family =+ "Trebuchet";
match any family == "Monotype" edit family =+ "Monotype.com";
match any family == "Andale Mono" edit family += "Monotype.com";
match any family == "Monotype.com" edit family =+ "Andale Mono";

Для символьных шрифтов

match
any family == "webdings"
edit
antialias = false;
encoding += "glyphs-fontspecific";


match
any family == "symbol"
edit
antialias = false;
encoding += "glyphs-fontspecific";


2. Antialias
Не забудьте выставить переменную QT_XFT=1
Если после этого иксы вылетают, значит
а) Вы криво собрали иксы
б) Вы криво собрали QT
в) Вы криво собрали KDE
г) У вас кривой XftConfig :))))

Чтобы не размазывались все шрифты, а только нужного кегля в XftConfig втыкаем

match
any size > 8
any size < 15
edit
antialias = false;


Чтобы фиксированные шрифты не козявило на весь экран

match any family == "fixed" edit family =+ "mono";
match any family == "console" edit family =+ "mono";

match
any family == "mono"
edit
spacing = mono;

Чтобы в консоли не было antialiasingа
konsole --help :))) А вообще konsole --no-xft (пишу из под другой машины, не могу посмотреть, по моему так)

Чтобы запустить ЛЮБУЮ прогу без antialias создаём скриптик
#!/bin/sh
QT_XFT=0
exec ВАША ПРОГА
exit
И пускем уже его.

3. Оптимизация.
Про objprelink слышали?
Так вот. Если эта прога отсутствует, ключ ---enable-objprelink при конфигурировании KDE не сделает ничего. Сама приблуда берётся отсюда http://www.research.att.com/~leonb/objprelink/objprelink.c.gz ,
но вот беда, в 8 слаке она не собирается :((( Я взял уже собранную на слаке 7.1 с http://lists.kde.org/?l=kde-devel&amp;m=99694357017355&amp;w=2

Как грамотно обработать QT этой прогой.
Вот патч для QT 2.3.1, годится и для 2.3.2. Все написанное в этом патче я предпочёл сделать руками. http://www.research.att.com/~leonb/objprelink/qt-configs.patch

После этого нужно пересобрать QT.

Параметры конфигурации QT
Я использую следующие:
./configure -xft -gif -system-jpeg -system-libpng -no-g++-exceptions -thread (по моему так, точно не помню, вообщем ./configure --help)
Без -thread QT не включает опенгл у меня.
Ключ -kde нужен при уже установленом KDE, добавляет какие то фичи в дизайнер, в общем на скорость не влияет :))).

Перед этим не забудте make clean. :)))

Ключи cofigure KDE.

Основные

./configure --enable-final --disable-debug --enable-objprelink --enable-mt --with-xinerama (две видюхи у меня, если у вас одна, вам не надо).

Остальное - configure --help | less в каждом пакете, пиво и читать, и думать (хотя думать особо много там не надо :))

Ключи компилятора.
Ключи для GCC задаются выставлением переменных типа CFLAGS="" и CXXFLAGS="" для КДЕ, правкой host.def в X и правкой configs/linux-g++-shared в QT.
Если всё сделано как написано, то после configure или make World в X создадутся грамотные makefile.

ПРОПИСЫВАТЬ ИХ В Makefile НАПРЯМУЮ КРИВО!!!

Перед configure не забудте make distclean или make clean

Я пробовал собирать с ключами -O3 -march=i686 -fno-exceptions иксы, QT и KDE.

У меня не срослось. КДЕ вис и глючил.

Пока оставил иксы собранными как написанно выше (они не глючат), а остальное пересобрал с дефолтными параметрами.

Дальше моё IMHO
Заметил, что и QT и KDE при сборке сами выбирают то -O2, то -O3. Наверное лучше по этому не указывать их явно.
--fno-exceptions в КДЕ и так используется. В QT используется если конфигурить с -no-g++-exceptions. Явно указывать соотв. тоже не надо.

В планах.

Понять что такое --enable-strict в configure KDE

Пересобрать QT и KDE с -march=i686, найти источник проблем и вообще понять как в GCC работает оптимизация -O3 -O6 -O7 (в доках на эту тему кот наплакал).

Разобраться почему из OpenGL скринсеиверов работает только morph.

Ну и всё собственно.

Звонить - _gabbagabbahey_@mail.ru ( " _ " НЕ СТИРАТЬ. ЭТО НЕ ЗАЩИТА ОТ СПАМА. ЭТО ТАК НАДО :))))

Пока :)


Спасибо, очень интересно
А просветите, что это за файлик такой XftConfig
Я думал, что если приложению нужен шрифт, то оно берет его с фонт-сервера, а у него свой файл конфигурации, где прописаны пути к шрифтам ...

anonymous
()
Ответ на: комментарий от anonymous

А вот XftConfig и есть файл конфигурации встроенного в иксы фонтсервера. О настройке иксов и всего этого хозяйства куча факов написано, и найти их через яндекс нет проблем. Я только дополнял то, что в них написано. У меня этот конфиг лежит в /etc/X11, но повторяю - я всё собираю из исходников, и не знаю куда его кладёт RedHat, Debian or other shit. Я даже не знаю куда его Слака по умолчанию кладёт :))) Никогда не ставил ничего кроме базовой системы из её пакетов :))))

O_Prime
() автор топика

Пересобрал QT и KDE с CFLAGS и CXXFLAGS="O3 -march=i686", конфигурил КДЕ с --enable-strict. Перед переборкой поставил libSDL, которую КДЕ сильно хотел при конфигурировании и сильно сокрушался её отсутствием (интересно, а она ему зачем?). Всё работает, полёт нормальный.

O_Prime
() автор топика

Все таки непонятно про файл конфигурации фонт - сервера
У меня есть /etc/X11/XftConfig, но есть также и /etc/X11/fs/config, причем он точно влияет на фонт-сервер, т.к. я его крутил и наблюдал изменения
Причем формат у этих файлов разный
man xfs описывает именно файл /etc/X11/fs/config, а про /etc/X11/XftConfig в мане не сказано

anonymous
()

Пардон, не сервера, а рендера. С конфигами действительно непонятки. Приду домой буду ковыряться

O_Prime
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.