Міні-HOWTO Налаштування шрифтів TrueType Fonts у Debian

Будь-яка інсталяція Linux зазвичай містить кілька незалежних наборів шрифтів або їх метрики. Якщо кинути швидкий погляд на шрифти в Linux, то він пройде наступними каталогами:

XFree86 зберігає свої шрифти в /usr/X11R6/lib/X11/fonts/

Ghostscript містить свої шрифти в /usr/lib/ghostscript/fonts/

Шрифти TeX знаходяться в /usr/lib/texmf/fonts/

Пакет kbd дистрибутива Debian містить шрифти в /usr/share/consolefonts/

Groff містить метрики шрифтів у /usr/share/font/devps/

Enscript (конвертер з ASCII у PostScript) містить метрики в /usr/share/enscript/*.afm

Не слід говорити, що шрифти не скоординовані між собою.

Шрифти TrueType існують для того, щоб виключити цю проблему, використовуючи ті самі шрифти для виведення на екран і друк. У цьому документі ми спробуємо показати, як використовувати шрифти TrueType для виведення на екран, принтер та для підготовки документів у дистрибутиві Debian GNU/Linux.

Тому веселіться, але з побоюванням, і частіше робіть резервні копії.

Автор цього документа – Bear Giles,

Нижче наведено посилання на документи, які не описують безпосередньо систему Debian або її пакети, але які можуть бути цікавими для читачів цього документа.

Використання TrueType шрифтів у RedHat Linux (http://www.kegel.com/linux/tt.html)

Утиліти для роботи зі шрифтами в X (http://www.hex.net/

Поліпшення зовнішнього вигляду шрифтів у GNU/Linux у різних додатках (наприклад StarOffice) (http://king.ccrc.wustl.edu/

Як використовувати True Type c шрифти в StarOffice в Linux (http://www.mindspring.net/

FreeType - це безкоштовна бібліотека обробки та виведення шрифтів TrueType, що адаптується на різні системи. Її код являє собоюповністю незалежну реалізацію "з чистого аркуша", абсолютно незалежну від варіантів Apple та Microsoft. (Але порушувалося питання про можливе використання патенту Apple.) FreeType - це лише бібліотека, а не сервер шрифтів або повнорозмірна бібліотека роботи з обробкою або виведенням тексту.

Перед тим, як ми заглибимося в налаштування шрифтів 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 рядків на дюйм відповідно).

Як приклад можна навести екран з діагоналлю 13 дюймів (видима область зображення 11.1 дюйма), виводить зображення розміром 640x480 пікселів з роздільною здатністю 72.0 dpi. Це не збіг. Насправді багато веб-сторінок (і додатків фірми Microsoft) розраховані на стандартні дисплеї з роздільною здатністю саме 72 dpi. Стандартна конфігурація XFree86 передбачає наявність дисплея зроздільною здатністю 75 dpi.

Якщо я запустю стандартну конфігурацію X, то всі мої шрифти дорівнюватимуть приблизно 2/3 нормального розміру. Не буде перебільшенням сказати, що всі шрифти буде зменшено на порядок - великі шрифти (12 пунктів) стануть середніми (9). Середні шрифти (9) стануть невеликими (6).

Існує три речі, які треба зробити, щоб виправити цю невідповідність. По-перше, ми повинні вказати X-серверу справжню роздільну здатність екрану:

#:0 local /usr/X11R6/bin/X -bpp 16 :0 local /usr/X11R6/bin/X -bpp 16 -dpi 120

По-друге, ми повинні за замовчуванням використовувати спочатку растрові шрифти з роздільною здатністю 100 dpi, і тільки після них шрифти 75 dpi.

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

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

Але вам, у будь-якому випадку, доведеться виправляти установки fontpath у файлі XF86Config, оскільки сервер не може вгадати вимоги вашої конкретної конфігурації.

Щоразу, коли ми вносимо зміни до файлів конфігурації X11, непогано забороняти запуск XDM, вказавши команду exit 0 десь на початку цього файлу. Якщо ви цього не зробите, і X не запуститься з якихось причин, то XDM зациклиться таким чином, що перевантажитьсистему, і це досить важко виправити. Я вас попередив.

Строго кажучи, абсолютно не обов'язково налаштовувати сервери шрифтів для використання шрифтів TrueType з X-серверами. Якщо ви хочете використовувати статичні файли замість сервера шрифтів, дивіться інструкції з налаштування використання шрифтів TrueType в ghostscript .

З цього моменту, я припускаю, що у вас є працюючий файл /etc/X11/XF86Config, що завантажує шрифти з чітко визначених у розділі FontPath каталогів. Ми виправимо його таким чином, щоб він використовував сервер шрифтів xfs .

Якщо ви ще не зробили цього, встановіть пакет main/binary-*/x11/xfs_*.deb .

Відкрийте файл /etc/X11/xfs/config та змініть опцію catalogue так, щоб вона відповідала секції FontList із файлу /etc/X11/XF86Config. Вам також, можливо, потрібно буде змінити значення опції default-resolutions.

# paths to search for fonts catalogue = /usr/X11R6/lib/X11/fonts/100dpi/:unscaled, /usr/X11R6/lib/X11/fonts/75dpi/:unscaled, /usr/X11R6/lib/X11/fonts /misc/, /usr/X11R6/lib/X11/fonts/Speedo/, /usr/X11R6/lib/X11/fonts/Type1/, /usr/X11R6/lib/X11/fonts/100dpi/, /usr/X11R6 /lib/X11/fonts/75dpi/ # x1, y1, x2, y2. default-resolutions = 100,100,75,75

Перезапуск XFS звичайним для Debian чином:

Перевірка роботи XFS

Перед тим, як ми почнемо виправляти файл XF86Config, необхідно перевірити працездатність сервера xfs. Для цього ми виведемо на екран список доступних через нього шрифтів:

$ fslsfonts -server unix/:7100 -adobe-courier-bold-i-normal--0-0-0-0-m-0-iso8859-1 -adobe-courier-bold-o-normal--0-0 -100-100-m-0-iso8859-1 -adobe-courier-bold-o-normal--0-0-75-75-m-0-iso8859-1 .

Тепер ми готові вказати X-серверу використовувати сервер шрифтів xfs. Залишимо шлях доодному каталогу зі шрифтами на той випадок, якщо у нас виникнуть проблеми з xfs. (Залишаємо каталог "misc". тому що в ньому міститься шрифт fixed , який використовується в X за замовчуванням.)

Section "Files" FontPath "unix/:7100" FontPath "/usr/X11R6/lib/X11/fonts/misc/" EndSection

Перезапустіть X командою startx , якщо ви не любите гострі відчуття. Якщо любите тричі назвіть ім'я компанії, яка вас застрахувала на велику суму, і потім, схрестивши пальці, перезапустіть xdm .

Перевірка працездатності шрифтів XFS

Як тільки у нас завантажився сеанс роботи X, ми можемо перевірити, чи бачить наш сервер шрифти xfs, вивівши список шрифтів екран командою:

$ xlsfonts -adobe-courier-bold-i-normal--0-0-0-0-m-0-iso8859-1 -adobe-courier-bold-o-normal--0-0-100-100-m -0-iso8859-1 -adobe-courier-bold-o-normal--0-0-75-75-m-0-iso8859-1 .

До цього моменту я припускаю, що ви маєте працюючий сервер шрифтів xfs і хочете встановити підтримку шрифтів TrueType за допомогою xfstt .

Встановіть main/binary-*/x11/xfstt_*.deb , якщо ви цього ще не зробили.

Встановлення шрифтів TrueType

Скопіюйте шрифти TrueType у каталог /usr/share/fonts/truetype . Ці файли зазвичай мають розширення .ttf і мають бути встановлені права з маскою 0444 .

Перезапуск сервера шрифтів XFSTT

Перезапустіть сервер xfstt із опцією force-reload flag

Перевірка роботи XFSTT

Перед тим, як ми змінимо файл XF86Config, необхідно перевірити, чи взагалі працює сервер xfstt .

Важливо: сервер xfstt у дистрибутиві Debian використовує порт 7101, замість 7100. Права на його використання встановлені за замовчуванням так, що цей запит доступний лише root.

$ fslsfonts -server unix/:7101_FSTransSocketUNIXConnect: Can't connect: errno = 111 fslsfonts: невисокий доступ до Open Server "unix/:7101" # fslsfonts -server unix/:7101 -ttf-arial black-medium-r-normal-regular-0-0-0- 0-p-0-iso8859-1 -ttf-arial mt black-medium-r-normal-regular-0-0-0-0-p-0-iso8859-1 -ttf-arial narrow-bold-i-normal -bold italic-0-0-0-0-p-0-iso8859-1

Включення /etc/X11/XF86Config використання xfstt

Тепер ми готові вказати X-серверу використовувати сервер шрифтів xfstt . Ми хочемо, щоб шрифти TrueType мали найбільший пріоритет.

Section "Files" FontPath "unix/:7101" FontPath "unix/:7100" FontPath "/usr/X11R6/lib/X11/fonts/misc/" EndSection

Перевірка роботи шрифтів сервера XFSTT

Як тільки ми завантажили сеанс роботи X, ми можемо перевірити, чи бачить наш сервер шрифти TrueType, вивівши їх список на екран командою:

$ xlsfonts grep ttf -ttf-arial black-medium-r-normal-regular-0-0-0-0-0-p-0-iso8859-1 -ttf-arial mt black-medium-r-normal-regular-0- 0-0-0-p-0-iso8859-1 -ttf-arial narrow-bold-і-normal-bold italic-0-0-0-0-p-0-iso8859-1 .

З цього моменту у вас з'явилася можливість використовувати шрифти TrueType у різних програмах, наприклад, GIMP, Netscape або StarOffice. Так як у шрифтів TrueType ширина нефіксована, то вам напевно не варто використовувати їх у xterm - ці програми виділяють під символи фіксований простір, що дорівнює розміру найбільшого символу.

Встановити нові шрифти TrueType дуже просто, якщо ви використовуєте сервер шрифтів xfstt :

Скопіюйте нові шрифти до каталогу /usr/share/fonts/truetype/

Перезапустіть xfs командою /etc/init.d/xfs restart

xfstt має можливість генерувати різні кодові сторінки шрифтів у тому випадку, якщо у шрифті TrueType містяться відповідніобрази символи. Щоб дозволити використання кодових сторінок, відмінних від iso8859-1/unicode-1, ви повинні вручну виправити скрипт /etc/init.d/xfstt :

- start-stop-daemon --start --quiet --exec $XFSTT -- \ --port $portno --daemon + start-stop-daemon --start --quiet --exec $XFSTT -- \ -- port $portno --encoding iso8859-1,koi8-r,windows-1252,symbol-0 \ --daemon

У Debian 2.1 розпізнаються такі кодові таблиці:

iso8859-1 (Latin 1 - Західна Європа)

iso8859-2 (Latin 2 - Центральна та Східна Європа)

iso8859-3 (Latin 3 - Есперанто та Мальтійський)

iso8859-4 (Latin 4 - замінена Latin 6)

iso8859-9 (Latin 5 - Latin 1 з турецьким замість Ісландського)

iso8859-10 (Latin 6 - Північні мови, замінюють Latin 4)