Перед тем, как мы углубимся в настройку шрифтов TrueType в X, мы должны еще раз объяснить разницу между пунктами (point) и пикселями (pixel)... и почему это важно для нас.
Все выводимые на экран шрифты измеряются в пунктах. Один дюйм равен ровно 72 пунктам. Почему именно 72? Частично из-за ограничений механических печатных машин, частично потому, что это число делится на 2, 3, 4, 6, 8, 9, 12, 18 и 24. Ну и конечно надо упомянуть, что пункт является основной единицей измерения в PostScript.
(Историческая справка: Тут я немного приврал. До введения PostScript дюйм равнялся 72,27 пункта, но этот размер пункта был установлен в эру механических печатающих машин. При помощи дисплеев и лазерных принтеров, любому шрифту легко можно придать любой размер, и число 72 значительно более удобно по причинам, упомянутым выше).
В основном любой текст имеет размер от 7 до 12 пунктов. Все, что меньше 6, называется буквально - "точная печать". Построчные принтеры печатали шрифтами размером 9 или 12 (для того, чтобы было 8 или 6 строк на дюйм соответственно).
В противоположность этому, все видеодрайверы повсеместно измеряют шрифты в пикселях. Для вашего видеодрайвера экран имеет размер 1024x768 пикселей, а не 10 на 8 дюймов (или 720 на 576 пунктов).
Чтобы произвести преобразование из пунктов (в которых мы измеряем размер шрифта) в пиксели (в которых мы измеряем видеопамять) нужно знать разрешение экрана. Обычно оно измеряется в точках на дюйм (dots per inch (dpi)), что на самом деле есть пиксели на дюйм. Эти единицы используются в двух наборах растровых шрифтов, поставляемых вместе с XFree86: fonts-75 используются на недорогих дисплеях с разрешением около 75 dpi, fonts-100 используются на мониторах среднего качества с разрешением примерно 100 dpi. К сожалению, в поставку не входят шрифты для высококачественных дисплеев с разрешением 120 dpi и выше.
В качестве конкретного примера можно привести экран с диагональю 13 дюймов (видимая область изображения 11.1 дюйма), выводит изображение размером 640x480 пикселей с разрешением 72.0 dpi. Это Не Совпадение. На самом деле многие web-страницы (и приложения фирмы Microsoft) рассчитаны на стандартные дисплеи с разрешением именно 72 dpi. Стандартная конфигурация XFree86 предполагает наличие дисплея с разрешением 75 dpi.
Однако в настоящее время никто уже практически не пользуется разрешением 640x480. Никто больше не использует 13-дюймовые мониторы. Так как видеокарты обогнали в своем развитии мониторы, то можно нередко встретить следующую конфигурацию: 19-дюймовый монитор (диагональ изображения больше 17 дюймов), 1600x1200 пикселей, разрешение - 117 точек на дюйм.
Если я запущу стандартную конфигурацию X, то все мои шрифты будут равны примерно 2/3 нормального размера. Не будет преувеличением сказать, что все шрифты будут уменьшены на порядок - большие шрифты (12 пунктов) станут средними (9). Средние шрифты (9) станут маленькими (6).
Существует три вещи, которые надо сделать, чтобы исправить это несоответствие. Во-первых, мы должны указать X-серверу настоящее разрешение экрана:
/etc/X11/xdm/Xservers
#:0 local /usr/X11R6/bin/X -bpp 16 :0 local /usr/X11R6/bin/X -bpp 16 -dpi 120 |
Во-вторых, мы должны использовать по умолчанию сначала растровые шрифты с разрешением 100 dpi, и только после них шрифты 75 dpi.
/etc/X11/XF86Config
Section "Files" RgbPath "/usr/X11R6/lib/X11/rgb" FontPath "/usr/X11R6/lib/X11/fonts/100dpi/" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/" FontPath "/usr/X11R6/lib/X11/fonts/misc/" FontPath "/usr/X11R6/lib/X11/fonts/Type1/" FontPath "/usr/X11R6/lib/X11/fonts/Speedo/" EndSection |
И еще одно. Если ни один из наших растровых шрифтов не совпадает по разрешению с требуемым, то X-сервер попытается "растянуть" похожий шрифт через простое копирование пикселей. Результаты такого "растягивания" всегда оставляют желать лучшего. Предположив, что у нас достаточно быстродействующий компьютер, мы можем указать серверу использовать по умолчанию векторные шрифты, затем подходящие "один-к-одному" растровые шрифты и только затем "растянутые" растровые шрифты.
/etc/X11/XF86Config
Section "Files" RgbPath "/usr/X11R6/lib/X11/rgb" FontPath "/usr/X11R6/lib/X11/fonts/Type1/" FontPath "/usr/X11R6/lib/X11/fonts/Speedo/" FontPath "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/misc/" FontPath "/usr/X11R6/lib/X11/fonts/100dpi/" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/" EndSection |
Мне совсем недавно сказали, что XFree86 версии 4.0 будет поддерживать DDC, если его поддерживают и видеокарта, и монитор. Это позволит X-серверу узнавать его физические размеры, и сервер сможет автоматически рассчитывать разрешение экрана.
Но вам, в любом случае, придется исправлять установки fontpath в файле XF86Config, так как сервер не может угадать требования вашей конкретной конфигурации.
Каждый раз, когда мы вносим изменения в файлы конфигурации X11, неплохо запрещать запуск XDM, указанием команды exit 0 где-нибудь в начале этого файла. Если вы этого не сделаете, и X не запустится по каким-либо причинам, то XDM зациклится таким образом, что перегрузит систему, и это достаточно сложно исправить. Я вас предупредил.