Глава 15. Протокол X11 и шрифты

Протокол X11, разработанный в середине 80-х годов, определяет взаимодействие между приложением и системой отображения графики. Приложения называется клиентом X11, а система отображения — сервером X11. Таким образом, вопреки сложившимся житейским представлениям, сервер X11 работает на компьютере или X-терминале пользователя, а приложение (клиент X11) может быть запущено как локально, так и удалённо.

Протокол X11 представляет шрифт как набор матриц из нулей и единиц (растров). Каждый шрифт имеет ряд характеристик (имя, размер, кодировка и т.д.). Сервер ищет требуемый приложением растр шрифта с запрошенными свойствами сам, при помощи своего шрифтового модуля, или обращается за ним к специальному серверу шрифтов, запущенному локально или удалённо. Таким образом, протокол X11 был изначально ориентиован на работу с растровыми (bitmap) шрифтами (PCF, BDF), при этом приложение (клиент) может лишь запрашивать шрифт, но само с его растрами не работает.

С ростом возможностей печатающих устройств, они стали использовать т.н. скалируемые шрифты, задаваемые векторно, что позволило легко масштабировать их, а также осуществлять другие преобразования. Более того, при выводе на качественные устройства печати символы шрифтов отображаются не одним цветом, а оттенками цвета, что позволяет создать эффект сглаживания (антиалиасинга). UNIX™ прекрасно справлялся и справляется с красивой печатью скалируемыми шрифтами при помощи знаменитых программ nroff (groff в варианте GNU), TeX, ghostscript, но программы просмотра выходных форматов этих программ не пользуются шрифтовыми возможностями протокола X, ограниченного растром, а посылают серверу X уже сформированную картинку, что сильно замедляет работу и делает практически невозможным днамическое отображение текста в процессе набора или использование его в элементах интерфейса.

Для использования в оконной системе X скалируемых шрифтов (Type1, TTF, Speedo), необходимо преобразовывать их символы (глифы) в растры. В свободной реализации X, XFree86, это делает либо сам сервер X11, собранный с библиотекой растеризации freetype1 (сейчас это более распространенный способ), либо сервер шрифтов. При этом существенно увеличивается количество доступных шрифтов, появляется возможность использовать для отображения и печати одни и те же шрифты, но вот качество отображения оставляет желать лучшего, так как на экране символ по-прежнему остается одноцветным, без полутонов, т.е. сглаживания.