The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Шрифты как в Windows HowTo (font x11 rus truetype)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: font, x11, rus, truetype,  (найти похожие документы)
From: Poor Fred Date: Mon, 11 Jan 2006 14:31:37 +0000 (UTC) Subject: Шрифты как в Windows HowTo Оригинал: http://linuxforum.ru/index.php?showtopic=12690 http://www.linuxquestions.org/questions/showthread.php?threadid=257705 Время от времени я вижу сообщения от пользователей, жалующихся на то, что их шрифты выглядят уродливо и желающих знать, как их можно улучшить. Часто люди ищут шрифты со сглаживанием как в Apple/OSX. Мне тоже не нравилось, что шрифты выглядят расплывчато и хотелось напрячь глаза, чтобы изображение выглядело более четко. Поэтому надо было что-то предпринять, чтобы шрифты выглядели в точности как в Windows. Любой может подтвердить, что включение сглаживания шрифтов в Linux дает довольно-таки паршивые результаты. Но эта ситуация может быть изменена кардинально, что я и пытался показать [29]здесь. Эти снимки экрана призваны показать несколько вещей: * хорошо отрисованные несглаженные шрифты; * слаженность KDE- и GTK2-приложений * читаемые терминальные шрифты * четкие и хорошо отрисованные шрифты во всех браузерах. Итак, мой "Шрифты как в Windows HowTo". Надеюсь, он кому-нибудь поможет. Первым делом несколько предупреждений: 1. Некоторые действия, которые я посоветую, могут вступить в противоречие с законом той местности, где вы живете. Также потребуется установка шрифтов, на которые, я надеюсь, вы имеете права, т.к. заплатили за них, покупая Windows или компьютер с предустановленным Windows. 2. Перекомпиляция freetype2 может повлечь за собой некоторые нежелательные эффекты, как то: 2.1. падение менеджера шрифтов в KDE 3.2.x (не замечено в KDE 3.3.1); 2.2. изменение метода сглаживания шрифтов в Fluxbox. На Blackbox не будет оказано никакого эффекта, т.к. он не использует сглаживание вообще. Вероятно, это легко поправимо, но с тех пор, как я не использую его, мне все равно; 2.3. возможно, изменение сглаживания шрифтов может плохо подействовать на KDE/Gnome. Это довольно-таки маловероятно, но я это упоминаю, так как об этом говорят, например, в ньюсгруппах SuSE; 3. Я не проверял это на всех дистрибутивах. Мои снимки сделаны на Slackware-current, использующем Xorg, KDE 3.3.1, Gnome 2.6, freetype 2.1.9, ядро 2.4.27. Ранее я выполнял это на SuSE 8.2, slackware 9.1, slackware 8.1 и попробую на Debian. Я слышал, что "byte code interpreter" уже активизирован в Debian, так что я не думаю, что будет какая-нибудь разница. Ну ладно, достаточно лирических отступлений. Шаг 1: Выбор размера монитора. Обычно размер выбирается в зависимости от монитора/видеокарты и Ваших личных предпочтений. У меня 19-дюймовый ViewSonic, которых хорошо показывает при размере 1280x1024 @ 75hz. 17-дюймовые мониторы обычно имеют размер 1024x768. Отредактируйте Ваш XF86Config или xorg.config для задания желаемого размера и частоты развертки Вашего монитора (если не знаете как - man xorg.conf). Пока не обращайте внимания на слишком мелкие шрифты, над ними мы поработаем позже, при задании dpi. Шаг 2: Что делает Windows? Windows делает три вещи, которые мы хотим заставить делать Linux: 1. Использовать хорошее качество отображения шрифтов. 2. Использовать подходящее dpi (dots per inch - точек на дюйм). 3. BYTE_CODE_INTERPRETER. 1. Получение шрифтов TrueType Некоторые дистрибутивы, такие как 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-шрифтов. 2. DPI - точек на дюйм Window использует по умолчанию 96 dpi. Linux - 75 или 81. Вот почему шрифты в Linux всегда такие маленькие по сравнению с теми же самыми шрифтами в Windows при одинаковом размере экрана и шрифтов. В зависимости от Вашей ситуации мы должны сделать следующие шаги, чтобы заставить Linux работать при 96 dpi. a) Если Вы сначала загружаетесь в консоль (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 и она будет разная для каждого размера экрана. Я использую 1280x1024: # ********************************************************************** # Monitor section # ********************************************************************** # Any number of monitor sections may be present Section "Monitor" Identifier "My Monitor" # HorizSync is in kHz unless units are specified. # HorizSync may be a comma separated list of discrete values, or a # comma separated list of ranges of values. # NOTE: THE VALUES HERE ARE EXAMPLES ONLY. REFER TO YOUR MONITOR'S # USER MANUAL FOR THE CORRECT NUMBERS. HorizSync 31 - 86 # HorizSync 30-64 # multisync # HorizSync 31.5, 35.2 # multiple fixed sync frequencies # HorizSync 15-25, 30-50 # multiple ranges of sync frequencies # VertRefresh is in Hz unless units are specified. # VertRefresh may be a comma separated list of discrete values, or a # comma separated list of ranges of values. # NOTE: THE VALUES HERE ARE EXAMPLES ONLY. REFER TO YOUR MONITOR'S # USER MANUAL FOR THE CORRECT NUMBERS. VertRefresh 50-180 Option "dpms" DisplaySize 337.5 270.0 #<--- обратите внимание EndSection Опция DisplaySize 337.5 270.0 заставляет X-Window загрузиться с разрешением 96x96 dpi при размере экрана 1280x1024. Переменная задается DisplaySize X Y где X = ширина_экрана_в_пикселях * 25.4 / желаемый_dpi Y = высота_экрана_в_пикселях * 25.4 / желаемый_dpi c) Если Вы используете Gnome, то даже если мы выполнили предыдущие шаги, этого недостаточно. Идем в Gnome/Desktop Prefs/Fonts/Details и изменяем опцию DPI вверху страницы на 96. Если даже Вы не используете Gnome, но применяете демон gnome-setting для переноса оформления из Gnome в KDE, или просто используете приложения из Gnome, такие, как evolution, Вам необходимо выполнить это действие, т.к. они могут привнести настройки dpi в KDE и сделать отображение шрифтов неустойчивым. ОК, мы имеем TrueType шрифты и (или) dpi установлено на 96x96. Теперь нам нужно 3. Перекомпилировать Freetype2 для задействования интерпретатора байт-кодов Загрузите исходные тексты с http://www.freetype.org/ Возможно это не особая проблема, но я всегда стараюсь устанавливать версию ту же, что стоит в системе. Например, до недавнего времени в Слаке стояла версия 2.1.8 и хотя уже вышла 2.1.9 я тем не менее перекомпилировал именно 2.1.8. Мне кажется, чем меньше переменных, тем меньше проблем. Загружаем и распаковываем архив (я всегда компилирую в /tmp) и читаем README. Это TRUETYPE readme из пакета исходников freetype2: How to enable the TrueType native hinter if you need it -------------------------------------------------------- ..Бла-бла-бла, тут неинтересно (прим. переводчика) -------------------------------------------------------- - откройте файл "include/freetype/config/ftoption.h" - найдите строку: #undef TT_CONFIG_OPTION_BYTECODE_INTERPRETER - замените на: #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER Лучше и не объяснишь. Прежде чем компилировать и устанавливать вероятно Вы захотите удалить ранее установленный пакет. Я видел, это советуют в других документах, но я не вижу в этом особой необходимости. Библиотека freetype в Slackware находится в составе пакетов X-Window и не может быть удалена одна. Еще одна вещь, которую нам надо сделать перед установкой - проверить символические ссылки. steve@peggyo:~$ cd /usr/lib steve@peggyo:/usr/lib$ ls -la libfreetype* -rw-r--r-- 1 root root 2431914 2004-11-11 00:28 libfreetype.a -rwxr-xr-x 1 root root 816 2004-11-11 00:28 libfreetype.la* lrwxrwxrwx 1 root root 20 2004-11-11 00:28 libfreetype.so -> libfreetype.so.6.3.7* lrwxrwxrwx 1 root root 20 2004-11-11 00:28 libfreetype.so.6 -> libfreetype.so.6.3.7* -rwxr-xr-x 1 root root 415008 2004-06-05 17:48 libfreetype.so.6.3.5* (<-старая) -rwxr-xr-x 1 root root 1521734 2004-11-11 00:28 libfreetype.so.6.3.7* steve@peggyo:/usr/lib$ Это полезно, если Вы будете обновлять библиотеки и хотите проверить, что линки указывают на новые. А также, если планируете удалить старые библиотеки перед компиляцией новых и хотите убедиться, что новые линки были созданы. Если нет, то листинг старых укажет Вам, что делать. Убедитесь, что новые пакеты с исходными текстами установлены, так что Вы можете начать компиляцию. Итак, начнем... ./configure --prefix=/usr Я использую этот префикс для Slackware, Вам он может не понадобиться. Если libfreetype находится в /usr/lib, то все в порядке. Прочтите ./configure --help чтобы узнать установки по умолчанию. make Побежали строчки. Сообщения типа "blah blah violates strict antialiasing rules yada yada" можете игнорировать. Зарегистрируйтесь root'ом: su - make install Будучи root'ом запустите ldconfig Если Вы в KDE, запустите Панель управления и разделе Внешний вид/Шрифты оставьте сглаживание шрифтов, но исключите диапазон от 0.0pt до 14.0 или 15.0pt. Замените все шрифты на Arial или Verdana размером 9 или 10 pt и перезапустите X-Window. Вы должны увидеть огромную разницу, как шрифты отрисовываются без сглаживания (при этом размере). Шаг 3: Приложения 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, но наверняка и в их конфигах есть подобная строка. ОС: Slackware 10.2 На всякий случай добавлю: при установке последней версии freetype2 (2.1.10) в файле ./include/freetype/config/ftoption.h нужно не заменить строку #undef TT_CONFIG_OPTION_BYTECODE_INTERPRETER на #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER а просто разкомментировать последнюю. При установке на Suse 9.3 я, как и автор статьи, не сносил старую версию программы, а ставил новую поверх. У меня также все прошло без проблем. Я тоже внесу свои 5 копеек, в Gentoo делать манипуляции с файлом /include/freetype/config/ftoption.h не нужно, все они выполняються на стадии сборки пакета. Соответсвенно в генту надо только подправить xorg.conf. На всякий случай добавлю: при установке последней версии freetype2 (2.1.10) в файле ./include/freetype/config/ftoption.h нужно не заменить строку В include-файлах символ '#' - это не комментарий, а начало директивы компилятора. #undef говорит компилятору, что идентефикатор не будет определен (компилятор потом будет компилировать код по разному, в зависимости от того, определен этот идентификатор или нет). Ее замена на #define определяет этот идентификатор и компилятор будет компилить код по-другому.

<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1.1, Игорь (??), 17:58, 27/07/2006 [ответить]  
  • +/
    Замечательный HOWTO. У меня Mandriva 2006.0 - все сработало в точности, как описано. Ничего лишнего выдумывать не пришлось, кроме игрищ с вариантами включения-выключения сглаживания (типа подбора диапазона, хинтинга и способа межточечного сглаживания - RGB/BGR/Monochrome Horizontal/Vertical). На экран теперь приятно смотреть. Даже The Bat! под линуксом выглядит получше, хотя я собственно со шрифтами WINE еще не возился. Автору - спасибо.
     
  • 1.2, Name (?), 23:18, 29/03/2007 [ответить]  
  • +/
    отличный HOWTO, всё прошло без сучка и задоринки
     
  • 1.3, Юрий (??), 00:59, 02/05/2007 [ответить]  
  • +/
    И мне очень помогло, спасибо автору и переводчику.
     
  • 1.4, Сергей (??), 18:44, 20/06/2007 [ответить]  
  • +/
    Все сработало нормально. Правда установить ttf-шрифты в администраторском режиме не удалось - получилось только в режиме пользователя.
    Я использовал MandrivaLinux-2007 и пакет freetype-2.3.4. Теперь ttf-шрифты в разрешении 96dpi выглядят как и в WinXP.
    Автору огромное спасибо.
     
  • 1.5, Enlightened (?), 17:00, 01/09/2007 [ответить]  
  • +/
    Спасибо большое! В FreeBSD сработало на ура!
     
  • 1.6, Goga (??), 22:52, 04/09/2007 [ответить]  
  • +/
    А как быть с Fedora 7 там это работает для Gnom а в KDE галочка для использования sub-pixel не активна вообще.????
     
  • 1.7, Inspirra (ok), 09:15, 06/01/2008 [ответить]  
  • +/
    Я просто обалдеваю!... Откуда берется такой бред. Неужели так сложно прочесть man xorg.conf?...

    DisplaySize -- это размер видимой части монитора в миллиметрах -- смотрится в паспорте на монитор, или измеряется линейкой!.. И соответственно, X'ы сами рассчитают DPI под любые разрешения.
    Причем, современные мониторы сами отдают свой размер через EDID, что можно обнаружить в логах X'ов и в этом случае DisplaySize не нужен.

    И в отличии от Windows, который применяет DPI избирательно, -- X'ы применяют DPI всегда. Так что, вопрос о качестве отображения шрифтов должен быть направлен в иную сторону.

     
     
  • 2.9, Vasdi (?), 02:04, 25/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Но винда этого не делает! И если хочеш штобы было "как в винде" -- ломай ноги под её костыли.
    И ЕДИД, кстати, не всегда прав.
     

  • 1.8, ash (??), 20:24, 28/02/2008 [ответить]  
  • +/
    Во FreeBSD только перенёс шрифты из Windows и всё...
    а 96x96 dpi у меня и так есть !
    Стало намного лучше !!!
     
  • 1.10, chart (??), 18:33, 28/01/2010 [ответить]  
  • +/
    Спасибо большое за статью, но я делал намного проще.

    Установил пакеты со стандартными шрифтами Windows (Arial, Couter New, Times New Roman). Перезагрузил систему и получил чёткие шрифты.

    Описание, как это сделать, и ссылку на эти пакеты берите вот здесь http://itmove.ru/2009/09/linux-fonts/

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру