Журнал LinuxFormat - перейти на главную

LXF111:Interview

Материал из Linuxformat
Перейти к: навигация, поиск
Интервью LXF

Фараон графики

Карл Ворт потратил шесть лет жизни на создание Cairo, инструментария векторной графики, и считает, что самое интересное только начинается…

Всего два года назад в Лионе, Франция, на первой конференции Libre Graphics Meeting (LGM) Карл Ворт [Carl Worth] пытался заинтересовать народ инструментарием векторной графики под названием Cairo — он был создан исключительно для рисования, и больше ни для чего. Его принялись портировать в операционные системы, в том числе OS/2 и BeOS, и на сегодня Cairo является основной графической библиотекой многих приложений. LXF состыковался с Вортом, чтобы докопаться до самой сути: как выглядит Cairo — и ваш рабочий стол — и каковы его виды на будущее…

Linux Format: Ни в KDE, ни в Gnome не найдешь пункта меню для Cairo, поэтому расскажите, пожалуйста, что он, собственно, делает?

Карл Ворт: Создает графику. Он – кроссплатформенный и решает многие задачи, например, выводит изображения на дисплей, которым может быть X или Quartz на Mac OS X, и для этого не понадобится ничего менять в коде вашего приложения, кроме единственной строки, создающей поверхность. Cairo выводит результат в PDF или SVG, или же в файл изображения. По-моему, одна из лучших функций, которые Cairo предлагает приложениям – это унифицированный API, способный и отображать, и печатать. Цель – суметь изобразить все, что нужно для двумерного приложения.

LXF: Разве самая последняя работа не велась над PostScript и PDF?

КВ: Главное различие заключается в том, что мы делали с выводом в PostScript и PDF. Мы говорили, что результат в PDF должен всегда выглядеть ничуть не хуже того, что отображается на экране. Раньше нам удавалось добиться этого просто превращением в растровое изображение с высоким разрешением и выводом результата в PostScript… не очень удобно.

В 1.4 у нас был код, который сам по себе мог многое, но были и некоторые погрешности, исправить которые никак не удавалось: если, например, вы рисовали градиент, который легко выразить средствами PostScript, он все же становился растровым. Все подобные проблемы мы исправили в версии 1.6. Теперь результат выводится в PostScript и PDF совершенно нормально и удобно. Я могу этим хвастаться, потому что не писал ни строчки данного кода – все сделал Эдриен Джонсон [Adrian Johnson], фантастический член сообщества, который возник из ниоткуда и потратил на эту работу фантастическое количество часов. Впервые нашим выводом в PDF можно пользоваться.

LXF: А что было самым трудным?

КВ: Встраивание шрифтов. Должен сказать, с этим у нас было множество непонятных ошибок. Вроде делаешь все правильно, то есть и вправду правильно, согласно спецификации PostScript – но стоит отправить все это на печать, как принтеры начинают мигать и просить, чтобы их перезагрузили, потому что им отправили файл PS. Мы реализовали то, что говорится в спецификации, но не совсем так, как это делается у всех остальных.

LXF: И как в это втянулся Эдриен?

КВ: Изначально Эдриен занялся реализацией поддержки CID-шрифтов, ну, и прочими подобными вещами. Я думал, он работает в какой-то компании, использующей Cairo со своим приложением, которое гребет им миллионы долларов. А встретился я с ним в Австралии в январе, и он мне сказал: «О нет, я всем этим занимаюсь в свободное время». Я спросил: «И что ты делаешь?» А он ответил: «Я столько раз генерировал файл PDF, и он оказывался кривым, все перепутано: шрифты не те, верстка не та… Меня это просто достало. Я хочу, чтобы все работало нормально, и я слышал о Cairo. Я подумал, что если он будет создавать PDF, то все станут им пользоваться, а я позабочусь, чтобы он работал правильно».

LXF: И насколько вы близки к своей цели – чтобы все перешли на Cairo? Реально ли для Cairo стать тем Единственным, что правит всеми? [в оригинале the one to rule them all – намек на «Властелина Колец» Р.Р.Толкиена, – прим. пер.]

КВ: Для меня было отчасти сюрпризом то, что я увидел на конференции Libre Graphics: помните эти пять логотипов – так вот, три из них в разной степени используют Cairo; я такого не ожидал, потому что пару лет назад на первой LGM им не пользовался никто. У нас уже есть GDK, у нас есть Gnome, который применяет его для печати, у нас есть Mozilla, Scribus, Inkscape, OpenOffice.org и GIMP – все хоть как-то, да пользуются им. Некоторые – совсем чуть-чуть, где-нибудь в уголочке, но и это уже здорово, это – отлично.

LXF: А что, по вашему мнению, является катализатором, заставляющим людей выбирать Cairo? Все-таки переход на него требует известных усилий.

КВ: GDK начал использовать Cairo в версии 2.8. Конечно, он сильно отличается от всех прочих: все прочие – приложения, а GDK – библиотека, и в частности, она не оборачивает API Cairo, она передает его напрямую приложениям. Одной из целей работы над Cairo было создание действительно простого в использовании API. Мы потратили почти два года, улучшая API так и этак, прежде чем выпустить релиз 1.0 – старались сделать его как можно проще в использовании. Я всегда говорю людям: если вам не в кайф работать с Cairo, значит, что-то неправильно. Мы решили, что взаимодействие с ним должно доставлять удовольствие, и я надеюсь, нам удалось этого добиться. Спросите любого разработчика GDK, и он вам скажет: «просто используйте Cairo».

LXF: А Firefox тоже использует Cairo?

КВ: Сейчас Firefox 3 применяет Cairo для отображения всего своего контента: и основной панели, и виджетов. Все это нарисовано в Cairo, на всех платформах. Раньше в Mozilla было три или четыре отдельных части кода, одна – для рендеринга под Linux, одна – под OS X (Cocoa), одна – под Windows, и еще одна – чтобы генерировать результат в PostScript; и они смогли убрать все эти части и заменить их на один кусок кода, создающий графику с помощью Cairo. Им немножко не повезло, поскольку они были первопроходцами: выяснилось, что наши движки под OS X и Windows работают похуже, чем остальные, и в итоге в Mozilla проделали колоссальную работу, чтобы привести их все в соответствие.

LXF: А много ли еще осталось такого, что Cairo мог бы улучшить?

КВ: Мы заметно усовершенствовали Cairo 1.6 и вывод результата в PDF, но осталось несколько недоделок. Одна из них – многократное использование изображений в документе, например, водяных знаков. Вот на что надо обратить внимание. Кроме того, я как раз зафиксировал в коде 40 крупных изменений, которые вводят совершенно новое явление: пользовательские шрифты. Они позволят приложению предоставить контуры своих глифов, и они будут встроены в кэш глифов Cairo. То есть можно воспользоваться всеми преимуществами системы кэширования глифов, но с собственными настраиваемыми шрифтами.

Вещь, которой мы скоро займемся… Извлечение текста из PDF-файлов – идея тут такая: после того, как вы что-то напечатали, у вас должна быть возможность скопировать и вставить и снова получить текст назад.

LXF: Чего вы ожидали от посещения LGM?

КВ: Всегда отлично получать обратную связь от пользователей твоего кода. Мы еще много чего хотели бы видеть в Cairo, но пока не знаем, как это сделать. И потом, сейчас в Cairo есть только цветовая спецификация RGB. Вы можете добиться чего-то еще, использовав непрозрачный цвет, добавив RGB-контрольную точку или передав нам буфер RGB-данных, но у нас отсутствует возможность связи со CMYK или любым другим цветовым пространством.

Нам также очень нужны фильтры – в первую очередь, фильтр размывки изображения. Думаю, что было бы также неплохо взять часть GASL и передать ее Cairo, и если ваша цель – X или что-то в том же духе, это все передавалось бы на видеокарту и запускалось, а если ваша цель – PDF, то компилировалось бы на CPU, запускалось, потом бы вы получали нужный растровый результат и передавали в PDF-файл. Всем нужна высокая точность, но нужна также и выразительность, особенно для аппаратного ускорения… Каждый хочет уметь говорить на разных языках; по-моему, это было бы действительно здорово. LXF

Персональные инструменты
купить
подписаться
Яндекс.Метрика