LINUX.ORG.RU

Как реально ресетнуть Х font server?


0

0

Привет всем. Вообщем доигрался я со шрифтами, что у X-сов глюки пошли. Добавляю пути с помощью xset fp+, проверяю xset -q, делаю xset rehash, на время сессии X-server юзает добавленные шрифты. После пeрезагрузки, остаются только шрифты из /usr/openwin/lib/X11/fonts. Раньше был выход, поместить пути нужных шрифтов в OWfontpath например локали С.Тогда при загрузке X-server читал .../C/OWfontpath и добавлял пути в начале каждой сессии. Сейчас этого не происходит. :-(



Последнее исправление: wolfgang (всего исправлений: 1)

>Как реально ресетнуть Х font server?

А ты прямо xfs используешь или пути к шрифтам непосредственно серверу в xorg.conf указываешь? Если xfs, то пути к шрифтам прописываются в конфигурации xfs в переменной catalogue, а в xorg.conf вместо путей к шрифвтам указывается

FontPath «unix/:7100»

Zubok ★★★★★
()

>Добавляю пути с помощью xset fp+

Это ты пути не серверу шрифтов добавляешь, а непосредственно X серверу.

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

Хороший вопрос. Что-то я ни xorg.conf ни catalogue не видел. X-совые шрифты (пути)которые он юзает по умолчанию, прописаны в /usr/openwin/lib/X11/fontserver.cfg.

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

>usr/openwin/lib/X11/fontserver.cfg.

Вот здесь и должен быть этот catalogue. Описание тут:

http://docs.sun.com/app/docs/doc/802-2011/6i60mct7b?a=view

А потом в конфигурации X сервера надо указать, откуда ему брать шрифты. По умолчанию X Font Server сидит на порту 7100.

Zubok ★★★★★
()

Вот надо в OWfontpath прописать tcp/localhost:7100/all вместо непосредственных путей к шрифтам. Тогда у тебя сервер будет брать шрифты именно у сервера шрифтов. Единственное, что неясно, можно ли unux domain sockets использовать в этом OpenWindows вместо tcp.

Zubok ★★★★★
()
Ответ на: комментарий от Deleted

>Он разве ещё где-то используется?

Я думаю, что автору, если машина у него одна, пути к шрифтам лучше прописать прямо серверу, то есть в OWfontpath, а на X Font Server забить вообще. Но автор топика ничего не сказал, зачем уме это надо. Спросил про X Font Server. Значит, ему именно это надо зачем-то.

Автору: проверь, есть ли в каждой директории со шрифтами файлы fonts.dir. Если нет, то их надо создать утилитой mkfondir. Короче, читай. Кто знает, с чем ты там химичил

http://docs.sun.com/app/docs/doc/802-1951/6i5ut5rf9?l=ru&a=view

Zubok ★★★★★
()

>Раньше был выход, поместить пути нужных шрифтов в OWfontpath например локали С.Тогда при загрузке X-server читал .../C/OWfontpath и добавлял пути в начале каждой сессии. Сейчас этого не происходит. :-(

Локаль сменил?

Zubok ★★★★★
()
Ответ на: комментарий от wolfgang

не понимаю разницы когда пути прописывают прямо Х-cерверу (как и было еще на рабочей системе) и когда шрифты добавляют при помощи xset использую fontserver.

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

>не понимаю разницы когда пути прописывают прямо Х-cерверу (как и было еще на рабочей системе) и когда шрифты добавляют при помощи xset использую fontserver.

xset — это прописывание пути прямо X-серверу. xset +-fp добавляет (или удаляет) к уже прописанным путям в конфигурации X-сервера (OWfontpath) новые. Но к X Font Server xset никакого отношения не имеет.

X Font Server — это *отдельный* сервер, который умеет растеризовывать шрифты и раздает уже растеризованные шрифты через сеть. Любой X-сервер может эти шрифты использовать, надо только прописать путь к серверу шрифтов (порт 7100). У XFS *свои* пути к шрифтам, *своя* конфигурация. Особого смысла использовать XFS на локальной машине нет, если только не заметишь, что с XFS быстрее рисуется (я один раз такое заметил, но это было сто лет назад). X Server сам умеет растеризовывать шрифты, надо только указать ему пути к шрифтам.

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

То есть Х fontserver меня не должен интересовать вообще.Т.к у меня машина не связана по сети с другими. Вопрос встает о прописывании путей прямо X-серверу. Значит в fontserver.cfg прописаны пути к шрифтам, которые юзает X-сервер по умолчанию. Прописывая пути в OWfontpath соответствующей локали мы добавляем дополнительные пути ПРЯМО X-cерверу. Тогда вопрос почему не читается OWfontpath при загрузке системы?

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

>То есть Х fontserver меня не должен интересовать вообще.

Да. Его можно даже не запускать при старте вообще.

Т.к у меня машина не связана по сети с другими.

Наличие связи с другими машинами по сети — это никак не ограничивает применимость XFS. Он был полезен и на локальной машине, так как X Server однотредный, а растеризация занимала время, то одно из архитектурных решений было создание отдельного сервера по растеризации шрифтов, чтобы не задерживать X Server этой работой.

Значит в fontserver.cfg прописаны пути к шрифтам, которые юзает X-сервер по умолчанию.

Нет, в fontserver.cfg прописаны шрифты, который X *Font* Server использует, а не X Server. Эта конфигурация только для XFS.

Прописывая пути в OWfontpath соответствующей локали мы добавляем дополнительные пути ПРЯМО X-cерверу.

Если я правильно понимаю осоебнности конфигурирования путей к шрифтам для твоего X-сервера, то да.

Тогда вопрос почему не читается OWfontpath при загрузке системы?

А вот это вот вопрос. Может, он читается, но неправильно (в синтаксисе где-то ошибка), либо локаль другая, тогда надо в нужной локали создавать. Либо еще где-то есть место, куда прописываются пути. И проверь, правильно ли каталоги со шрифтами организованы (наличие fonts.dir и т. п). Надо документацию на твой X Server смотреть. Наверняка есть man-страничка. Я так понимаю, что это сановский X Server? Я с ним просто никогда не имел дела.

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

Когда я добавляю xset fp+ .../locale/iso_8859_5/X11/fonts/75dpi, то данный путь приписывается к списку путей выводимых xset q и все у меня со шрифтами нормально. Но при перезагрузке системы происходит reset путей и остаются только те, что лежат в ...openwin/lib/X11/fonts.

То есть синтаксис каталога (и все что в нем находится) iso_8859_5 - правильный? Тогда дело в локали? Т.е Solaris не выходит корректно в нужную локаль и поэтому OWfontpath не читается? Но команда locale выводит: LANG=C LC_CTYPE=«C» LC_NUMERIC=«C» LC_TIME=«C» LC_COLLATE=«C» LC_MONETARY=«C» LC_MESSAGES=«C» LC_ALL=

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

Судя по тому, что я вижу в сети, файл OWfontpath читается скриптом Xsetup. Этот скрипт запускает Login Manager'ом до появления ввода пароля, но после старта X Server. В этом скрипте читается файл OWfontpath и выполняется xset для данных путей. Посмотри исходник.

Zubok ★★★★★
()
Ответ на: комментарий от wolfgang

то есть переменная LANG у тебя у рута не выставлена. В этом весь и секрет, почему не читается файл OWfontpath, так как если ты посмотришь на скрипт Xsetup (который выполняется от root!), там есть строчка:

if [ -r $OPENWINHOME/lib/locale/$LANG/OWfontpath ]; then
          ADDFONTPATH_LOCAL $OPENWINHOME/lib/locale/$LANG/OWfontpath
      fi

Так как переменная $LANG у тебя не выставлена, то до файла OWfontpath скрипт и не добирается. Такие дела.

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

Привет.

1. Вчера у товарища на подобной машине посмотрел в руте (LANG=).

И OWfontpath читается.

2. но все-таки вчера попробовал.

# setenv LANG

# setenv LANG C

# locale

LANG=C

После перезагрузки LANG=

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

>1. Вчера у товарища на подобной машине посмотрел в руте (LANG=).

И OWfontpath читается.

Чудес не бывает. Во-первых, тебе просто необходимо посмотреть в скрипт Xsetup. То, что я видел в сети, может не соответствовать тому, что у тебя. В том куске, что я видел, все прозрачно: читается файл OWfontpath и при помощи xset fp прочитанные пути загоняются в X-сервер. OWfontpath находится в зависимости от переменной LANG. Этот кусок я выше привел.

После перезагрузки LANG=

Перезагрузки чего? Системы? А с чего это она вдруг станет установленной? Попробуй прописать 'LANG=C' в /etc/default/init и перезапустись.

Zubok ★★★★★
()
Ответ на: комментарий от wolfgang

Проверь также очень внимательно, все ли пути, указанные в OWfontpath существуют реально. Если хотя бы один путь не существует, то добавления шрифтов может не произойти. Если ты удалял какие-то шрифты, то и путь к ним надо удалить из OWfontpath.

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

Это .../C/OWfontpath

/usr/openwin/lib/locale/iso_8859_2/X11/fonts/75dpi

/usr/openwin/lib/locale/iso_8859_2/X11/fonts/Type1

/usr/openwin/lib/locale/iso_8859_4/X11/fonts/75dpi

/usr/openwin/lib/locale/iso_8859_4/X11/fonts/Type1

/usr/openwin/lib/locale/iso_8859_5/X11/fonts/75dpi

/usr/openwin/lib/locale/iso_8859_5/X11/fonts/Type1

/usr/openwin/lib/locale/iso_8859_7/X11/fonts/75dpi

/usr/openwin/lib/locale/iso_8859_7/X11/fonts/Type1

/usr/openwin/lib/locale/iso_8859_9/X11/fonts/75dpi

/usr/openwin/lib/locale/iso_8859_9/X11/fonts/Type1

да, что-то не найду какими значками выделять здесь на форуме код. Движок какой-то странный...

Прикол ->

По твоему совету прописал LANG=C в /etc/default/init

перезагрузил систему.

Все без изменений.

в юзере LANG=C и остальные

LC_... =«C», кроме LC_ALL=,

в руте также без изменений LANG=,

остальные LC_...=«C», кроме LC_ALL=.

И также не читается ОWfontpath.

Потом прописал в init локаль 'ru'

перезагрузился и эта с... прочитала OWfontpath из локали 'ru' и

добавила X-серверу.

Насчет Xsetup, тютелька в тютельку, что ты привел.

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

Ты оказался прав на счет реальности путей.

Как всегда подвели китайцы, ведь прописанные в OWfontpath пути локали

'zh' :-)

Заглянул в .../locale/zh -там черт ногу сломит.

Просто убрал китайские пути из OWfontpath.

И о чудо!!!

Огромное спасибо Zubok.

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

Ага, вот в чем дело. Скрипт Xsetup имеет специфику (процедура ADDFONTPATH_LOCAL). Он берет все пути из файла OWfontpath и выстраивает их в строчку «fp+ +fp path1 +fp path2 +fp path3...», а потом передает их в xset. Если хоть один путь не существует или нет fonts.dir, то xset выходит с ошибкой и ничего не добавляет.

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