Введение
Векторная графическая библиотека Cairo (стилизованная как cairo) — это библиотека графики с открытым исходным кодом, предоставляющая независимый от устройства API для разработчиков программного обеспечения, основанный на векторной графике. Она предоставляет примитивы для двумерного рисования на различных бэкендах. Cairo использует аппаратное ускорение, если оно доступно.
Cairo (stylized as cairo) is an open source graphics library that provides a vector graphics based, device independent API for software developers. It provides primitives for two dimensional drawing across a number of different backends. Cairo uses hardware acceleration when available.
Языковые связи
Библиотека, написанная на одном языке программирования, может быть использована в другом языке, если для него созданы привязки. Cairo располагает широким набором привязок для различных языков, включая C++, C# и другие языки CLI, Delphi, Eiffel, Fortran, Factor, Harbour, Haskell, Julia, Lua, Perl, PHP, Python, Ruby, Rust, Scheme, Smalltalk и ряд других, таких как Gambas (подобный Visual Basic).
Привязки набора инструментов
Поскольку Cairo — это всего лишь библиотека для рисования, может быть весьма полезно интегрировать её с инструментарием графического пользовательского интерфейса. FLTK имеет полную поддержку Cairo (через опцию компиляции `enable-cairo`). GTK начала использовать Cairo для рендеринга большинства своих графических элементов управления в 2005 году, с версии 2.8, а начиная с версии 3.0 весь рендеринг осуществляется через Cairo. Команда разработчиков Cairo поддерживает актуальные инструкции по рендерингу поверхностей в SDL.
Доступные бэк-энда
Cairo поддерживает вывод (включая растрирование) на различные бэкэнды, известные как "поверхности" в коде библиотеки. Поддержка бэкэндов включает вывод в X Window System через Xlib и XCB, Win32 GDI, OS X Quartz Compositor, BeOS API, OS/2, контексты OpenGL (непосредственно и через glitz), локальные буферы изображений, файлы PNG, PDF, PostScript, DirectFB и SVG. В разработке находятся и другие бэкэнды, ориентированные на графические API OpenVG, Qt, Skia и Direct2D от Microsoft. Бэкэнды BeOS, OS/2 и DirectFB были удалены в 2022 году.
Примечательное использование
Cairo популярен в сообществе открытого исходного кода благодаря кроссплатформенной поддержке для продвинутого 2D-рисования. GTK, начиная с 2005 года с версии 2.8, использует Cairo для отрисовки большинства элементов графического интерфейса. Начиная с версии GTK 3, вся отрисовка выполняется с использованием Cairo. Программа, доступная в Debian, позволяет создавать векторные (SVG, PDF или PostScript) скриншоты приложений GTK 3. Проект Mono, включая Moonlight, использует Cairo с самых ранних этапов разработки для обеспечения работы бэкэнда GDI+ (libgdiplus) и пространств имен System.Drawing. Проект Mozilla использовал Cairo в своем движке компоновки Gecko, который применяется для отрисовки графического вывода продуктов Mozilla. Gecko 1.8, движок компоновки для Mozilla Firefox 2.0 и SeaMonkey 1.0, использовал Cairo для отрисовки SVG и <canvas> контента. Gecko 1.9, версия Gecko, лежащая в основе Firefox 3, использует Cairo в качестве графического бэкэнда для отрисовки как содержимого веб-страниц, так и пользовательского интерфейса (или "chrome"). Фреймворк WebKit использует Cairo для всей отрисовки в портах GTK и EFL. Также добавлена поддержка SVG и <canvas> контента с использованием Cairo. Библиотека Poppler использует Cairo для отрисовки PDF-документов. Cairo позволяет отрисовывать векторную графику с сглаживанием и прозрачные объекты. Приложение для работы с векторной графикой Inkscape использует библиотеку Cairo для отображения в режиме контуров, а также для экспорта в форматы PDF и PostScript, начиная с версии 0.46. Изначальная версия Manim, известная как ManimCairo, представляет собой движок математической анимации, используемый в анимациях видеороликов 3Blue1Brown на YouTube. Manim впоследствии перешел на использование OpenGL. Эта версия называется ManimGL. MorphOS 2.5 включает в себя реализацию Cairo в виде разделяемой библиотеки, которая была доступна как отдельный релиз для более ранних версий MorphOS. AmigaOS 4.1 поддерживает разделяемую объектную библиотеку Cairo (libcairo.so) в своей стандартной установке. FontForge включил Cairo по умолчанию для отрисовки в середине октября 2008 года. R может выводить графики в форматах PDF, PostScript и SVG с использованием Cairo, если он доступен. Gnuplot 4.4 теперь использует Cairo для отрисовки PDF и PNG вывода. Интернет-браузер для PlayStation 3 использует Cairo с момента обновления системного программного обеспечения до версии 4.10. Synfig 0.64 теперь поддерживает опциональную отрисовку с использованием Cairo. Графическое отображение данных временных рядов по требованию в Graphite. Движок виджетов Konfabulator/Yahoo использует Cairo для получения идентичного вывода как на Win32, так и на Quartz в Mac OS/X. SolveSpace – бесплатное программное обеспечение для 2D и 3D CAD с открытым исходным кодом.
История
Кит Паккард и Карл Уорт основали проект Cairo для использования в системе X Window. Название Cairo происходит от первоначального названия Xr, которое интерпретируется как греческие буквы хи и ро.
Сложная компоновка текста
Cairo обрабатывает шрифты на основе латиницы и CJK, но не поддерживает напрямую шрифты для сложных систем письменности, требующие формирования символов. Разработчики Cairo рекомендуют использовать Pango, который обеспечивает сложную компоновку текста и может быть интегрирован с Cairo.