Шрифты как в Windows HowTo

Материал из Wiki МИАЦ ВО
Версия от 09:15, 16 апреля 2008; 172.16.130.19 (обсуждение) (Перекомпилировать Freetype2 для задействования интерпретатора байт-кодов)
Перейти к навигации Перейти к поиску

Оригинал статьи находится тут. Я лишь чуть изменил ее с учетом Mandriva 2008.

Что мы хотим

Время от времени я вижу сообщения от пользователей, жалующихся на то, что их шрифты выглядят уродливо и желающих знать, как их можно улучшить. Часто люди ищут шрифты со сглаживанием как в Apple/OSX. Мне тоже не нравилось, что шрифты выглядят расплывчато и хотелось напрячь глаза, чтобы изображение выглядело более четко. Поэтому надо было что-то предпринять, чтобы шрифты выглядели в точности как в Windows.

Любой может подтвердить, что включение сглаживания шрифтов в Linux дает довольно-таки паршивые результаты. Но эта ситуация может быть изменена кардинально, что я и пытался показать [29]здесь. Эти снимки экрана призваны показать несколько вещей:

  • хорошо отрисованные несглаженные шрифты;
  • слаженность KDE- и GTK2-приложений
  • читаемые терминальные шрифты
  • четкие и хорошо отрисованные шрифты во всех браузерах.

Выбор размера монитора.

Обычно размер выбирается в зависимости от монитора/видеокарты и Ваших личных предпочтений. У меня 19-дюймовый ViewSonic, которых хорошо показывает при размере 1280x1024 @ 75hz. 17-дюймовые мониторы обычно имеют размер 1024x768. Отредактируйте Ваш XF86Config или xorg.config для задания желаемого размера и частоты развертки Вашего монитора (если не знаете как - man xorg.conf). Пока не обращайте внимания на слишком мелкие шрифты, над ними мы поработаем позже, при задании dpi.

Что делает Windows?

  1. Использовать хорошее качество отображения шрифтов.
  2. Использовать подходящее dpi (dots per inch - точек на дюйм).
  3. BYTE_CODE_INTERPRETER.

Получение шрифтов TrueType

В Mandriva это можно сделать, если, конечно, есть раздел с Windows, из "Настройка Компьютера" ==> "Система" ==> "Управление, удаление и добавление шрифтов. Импортирование шрифтов Windows"

В статье это описано так:
Некоторые дистрибутивы, такие как SuSE, имеют небольшие скрипты для загрузки пакета Windows Core Font. Если Вы владелец CD с Windows, на нем есть программы позволяющие извлечь файлы шрифтов из архивов .cab. Если Вы используете двойную загрузку как я, примонтируйте раздел с Windows и скопируйте папку со шрифтами в Вашу домашнюю директорию. Это необязательно, но необходимо, если Вы планируете удалить раздел с Windows.

Теперь мы должны добавить шрифты TrueType в Linux. Обычно в Linux шрифты располагаются в /usr/X11R6/lib/X11/fonts. Быстрый взгляд на xorg/XF86Config сообщит Вам следующее:

# FontPath "/usr/X11R6/lib/X11/fonts/local"
# FontPath "/usr/X11R6/lib/X11/fonts/CID"
# FontPath "/usr/X11R6/lib/X11/fonts/Speedo"
FontPath "/usr/X11R6/lib/X11/fonts/misc"
FontPath "/usr/X11R6/lib/X11/fonts/TTF"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi"
FontPath "/opt/kde/share/fonts"
FontPath "/usr/X11R6/lib/X11/fonts/Type1"
FontPath "/usr/X11R6/lib/X11/fonts/cyrillic"
FontPath "/usr/local/share/fonts"
FontPath "/usr/X11R6/lib/X11/fonts"
FontPath "/usr/local/share/fonts/TTF" #<-- строка создана менеджером шрифтов KDE
FontPath "/usr/share/fonts"
FontPath "/usr/share/fonts/default"

В моем случае шрифты TrueType находятся в каталоге TTF. В Вашем они могут находиться в каталоге fonts или создайте сами каталог TTF. Вы можете также добавить каталог ~/fonts, если не хотите, чтобы шрифты распространялись на всю систему, но я обычно устанавливаю их для всей системы. Если Вы не создавали новый каталог для шрифтов, убедитесь, что добавили строку FontPath, чтобы указать, где X могут их найти.

Простейший путь установить новые шрифты - использовать менеджер шрифтов KDE в Центре управления в разделе "Системные установки". Перейдите в администраторский режим (для установки шрифтов для всей системы) и щелкните на директорию TTF в дереве каталогов. Щелкните "Добавить шрифты" в панели инструментов. Укажите на каталог со шрифтами Windows и выберите все шрифты, которые желаете добавить:

Arial, Comic Sans MS, Courier New, Tahoma, Times New Roman и Verdana

как минимум. Конечно, Вы можете добавить, все, которые хотите. Если Вы используете этот путь, шрифты будут установлены в каталог /usr/local/share/fonts/TTF и путь к нему будет создан в xorg.conf как в листинге выше. Мы сделали это в первую очередь, так как перекомпиляция freetype2 может нарушить работу мереджера шрифтов KDE - это все всемя случалось у меня в KDE 3.2.x.

Во время правки xorg.conf убедитесь, что 100dpi-шрифты находятся выше 75dpi-шрифтов.

DPI - точек на дюйм

Window использует по умолчанию 96 dpi. Linux - 75 или 81. Вот почему шрифты в Linux всегда такие маленькие по сравнению с теми же самыми шрифтами в Windows при одинаковом размере экрана и шрифтов. В зависимости от Вашей ситуации мы должны сделать следующие шаги, чтобы заставить Linux работать при 96 dpi.

Если Вы сначала загружаетесь в консоль (runlevel 3) и используете startx для запуска Х-ов, отредактируйте скрипт /usr/X11/bin/startx. В зависимости от дистрибутива, это может быть символьная ссылка.

userclientrc=$HOME/.xinitrc
userserverrc=$HOME/.xserverrc
sysclientrc=/usr/X11R6/lib/X11/xinit/xinitrc
sysserverrc=/usr/X11R6/lib/X11/xinit/xserverrc
defaultclient=/usr/X11R6/bin/xterm
defaultserver=/usr/X11R6/bin/X
defaultclientargs=""
defaultserverargs="-dpi 96" #<--- обратите внимание
clientargs=""
serverargs=""

Просто добавьте "-dpi 96" к строке defaultserverargs= и все. Теперь, каждый раз, как Вы запускаете startx, Вы будете загружаться с разрешением 96x96 dpi, что можно проверить командой в терминале после того, как Х-ы запустятся:

xdpyinfo | grep resolution

Если Вы автоматически стартуете X-Window через KDM или GDM, Вам нужно отредактировать xorg.conf or XF86Config. Это немного посложнее. Мы должны использовать переменную DisplaySize и она будет разная для каждого размера экрана.

Для того чтобы выбрать правильный размер шрифтов, размер дисплея должен быть установлен для предпочитаемого DPI. В секции "Monitor" пропишите размер дисплея в миллиметрах:

Section "Monitor"
   ...
 DisplaySize 336 252 # 96 DPI @ 1280x960
   ...
EndSection

Формула, рассчитывающая значение DisplaySize такова Ширина x 25.4 / DPI и Высота x 25.4 / DPI. Например, если вы запускаете Xorg с разрешением 1024x768 и хотите DPI, равное 96, используйте 1024 x 25.4 / 96 и 768 x 25.4 / 96. Округлённые значения приведены ниже.

# calc: (x|y)pixels * 25.4 / dpi
# DisplaySize 168 126 # 96 DPI @ 640x480
# DisplaySize 210 157 # 96 DPI @ 800x600
# DisplaySize 269 201 # 96 DPI @ 1024x768
# DisplaySize 302 227 # 96 DPI @ 1152x864
# DisplaySize 336 252 # 96 DPI @ 1280x960
# DisplaySize 336 269 # 96 DPI @ 1280x1024 (соотношение сторон не 4:3)
# DisplaySize 420 315 # 96 DPI @ 1600x1200

Для nVidia драйверов вы, возможно, захотите отключить автоматическое определение DPI и поставить его вручную. Существует также более простой способ настройки DPI на этих картах. Любая или обе из следующих строк могут быть вставлены в секцию Device для вашей nVidia карты.

Option   "UseEdidDpi" "false"
Option   "DPI" "96 x 96"

Результат может быть проверен с помощью следующей команды, которая должна вернуть 96x96 точек на дюйм, если вы установили DPI на 96.

xdpyinfo | grep -B1 dot

Перекомпилировать Freetype2 для задействования интерпретатора байт-кодов

Загрузите исходные тексты с http://www.freetype.org/ Загружаем и распаковываем архив (я всегда компилирую в/tmp) и читаем docs/TRUETYPE.

 Это TRUETYPE readme из пакета исходников freetype2:

How to enable the TrueType native hinter if you need it
--------------------------------------------------------
..Бла-бла-бла, тут неинтересно (прим. переводчика)
--------------------------------------------------------
- откройте файл "include/freetype/config/ftoption.h"
- найдите строку:
 /* #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER */
и замените
#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER
Это должно быть сделано до компиляции программы

Лучше и не объяснишь.

Прежде чем компилировать и устанавливать вероятно Вы захотите удалить ранее установленный пакет. Я видел, это советуют в других документах, но я не вижу в этом особой необходимости. Библиотека freetype в Slackware находится в составе пакетов X-Window и не может быть удалена одна.

Вы можете начать компиляцию.

Итак, начнем...

./configure --prefix=/usr

Я использую этот префикс для Slackware, Вам он может не понадобиться. Если libfreetype находится в /usr/lib, то все в порядке. Прочтите ./configure --help чтобы узнать установки по умолчанию.

make
sudo make install
sudo ldconfig

Если Вы в KDE, запустите Панель управления и разделе Внешний вид/Шрифты оставьте сглаживание шрифтов, но исключите диапазон от 0.0pt до 14.0 или 15.0pt. Замените все шрифты на Arial или Verdana размером 9 или 10 pt и перезапустите X-Window. Вы должны увидеть огромную разницу, как шрифты отрисовываются без сглаживания (при этом размере).

Приложения GTK2 (Gimp Tool Kit) в KDE

Приложения типа Mozilla, Gnumeric, Gaim, Abiword, Blufish, Pan являются приложениями GTK2. При использовании их в KDE они не будут следовать установкам шрифтов и размеров, которые Вы установили, пока Вы не создадите скрытый файл в Вашей домашней директории. Создайте текстовый файл, назовите его .gtkrc-2.0 и добавьте в него следующую строку:

gtk-font-name = "Verdana 9"
или другой шрифт, который Вы выбрали в KDE.

Это все. Надеюсь, я ничего не забыл.

Другие ссылки по теме:

- http://mysite.verizon.net/vze8992v
- http://convexhull.com/mandrake_fonts.html
- http://avi.alkalay.net/linux/docs/font-howto/Font.html
- http://distributions.linux.com/howtos/Font-HOWTO/fix.shtml

Дополнение

Если вы используете KDM, то можно задать плотность пикселей и не высчитывая вручную геометрию экрана. Для этого редактируем файл kdmrc (в Gentoo он находится в /usr/kde/3.5/share/config/kdm/, в вашем дистрибутиве смотрите размещение KDE). Находим следующую секцию:

           [X-:*-Core]
           AllowNullPasswd=true
           AllowShutdown=All
           NoPassEnable=false
           NoPassUsers=
           ServerArgsLocal=-nolisten tcp -dpi 96 #<-- обратите внимание.
           ServerCmd=/usr/bin/X -br

Это особенно полезно будет на "живых" CD, если вы собираете свой или "затачиваете под себя" чужой - ведь вы же не знаете, на каком мониторе с каким разрешением вы будете его запускать.

Я не использую XDM, GDM и Entrance, но наверняка и в их конфигах есть подобная строка.