Cairo(Cairo)是一个开源的2D图形库,支持多种输出设备,提供了一种矢量图形基础的、设备无关的API,供软件开发者使用。Cairo支持在多个背景下的二维空间绘图,使用硬件加速功能时效果更好。虽然Cairo使用
c语言编写,但通过使用Cairo,还可以使用
C++、C#、Java、
Python、
Perl、
Ruby、
Scheme、
smalltalk等多种语言进行编程。Cairo遵循GNU较宽松公共许可证和Mozilla公共许可证两种授权条款。
基思·帕卡德和卡尔·沃思为在X Window系统使用创立了cairo项目。它原本(直到2003年)被称做Xr或Xr/Xc。为了加强跨平台而非被局限在X Window平台绘图的印象,项目更换了名称。Xr经被解释为希腊字母chi和rho派生出新名称cairo。
Cairo是一个功能强大的2D图形库,它允许开发者在多种不同的后端上进行图形渲染,包括X Window系统、Quartz、
win32、image.buffers、
PostScript、PDF和SVG文件输出。此外,Cairo还支持
OpenGL、XCB、
BeOS、OS/2操作系统和
DirectFB等后端,尽管BeOS、OS/2和DirectFB后端在2022年被取消。Cairo的目的是提供一致的输出效果,无论是在哪种输出媒体上,同时能利用硬件加速器。
Cairo的主要优点在于它统一了在X、Win32、Quartz等基础上的图形库操作方式,并支持PS、PDF、SVG、PNG/JPEG等图像格式的输出,这使得页面的再次利用变得方便。在glitz的支持下,Cairo甚至支持部分3D效果。Cairo的许可协议为GNU Lesser General Public License (LGPL) version 2.1 或者 the Mozilla Public License (MPL) version 1.1。
Cairo支持很多不同后端的输出,在实现中被称作“
surface”。支持的后端包括X Window系统、Win32 GDI、Quartz Compositor、OS/2,OpenGL环境(直接或间接地通过glitz)、内存缓冲区、PNG、PDF、
PostScript、
DirectFB和SVG文件。
这构成了与可扩展矢量图形(SVG)根本不同的方法,后者使用
层叠样式表(CSS) 规则指定形状的颜色。Cairo 会创建形状的蒙版,然后为其创建源,然后将它们传输到表面上,而 SVG 文件将简单地使用属性来指定形状style。也就是说,这些模型并不是不兼容的,而是相互兼容的。许多 SVG 渲染器使用 Cairo 来完成繁重的工作。