SVG
可伸缩矢量图形(SVG)是一种XML标记语言,用于描述二维矢量图形,包括静态和动态图形(声明式或脚本化)。它是万维网联盟(W3C)创建的开放标准,W3C 也负责制定 和 等标准。
概述
SVG 允许三种类型的图形对象
- 矢量图形形状(例如,由直线和曲线组成的路径,以及由它们界定的区域)
- 栅格图形图像/数字图像
- 文本
图形对象可以分组、设置样式、转换和组合到先前渲染的对象中。文本可以是任何 XML 命名空间,适合于应用程序,从而增强了 SVG 图形的搜索能力和可访问性。功能集包括嵌套转换、裁剪路径、alpha 蒙版、滤镜效果、模板对象和可扩展性。
SVG 图形可以是动态和交互式的。 SVG 的文档对象模型 (DOM),包括完整的 XML DOM,允许通过 ECMAScript 或 SMIL 对矢量图形进行直接高效的动画处理。可以将丰富的事件处理程序(例如 onmouseover 和 onclick)分配给任何 SVG 图形对象。由于其兼容性和利用其他 Web 标准,可以在同一网页中同时对 SVG 元素和来自不同命名空间的 XML 元素进行脚本编写。
如果存储空间是一个问题,SVG 图像有时会使用 压缩保存,在这种情况下,它们可能被称为“SVGZ 文件”。由于 XML 包含大量冗余数据,XML 往往压缩得很好,这些文件可以小得多。但是,未压缩的 SVG 文件通常比压缩的(jpg、png)栅格化数据小得多。
潜力
SVG 客户端的广泛采用,尤其是在原生嵌入到 Web 浏览器中时,可能会导致万维网发生革命。互联网上的趋势是像计算机应用程序一样运行的网站,使用一种称为 的技术。SVG 有潜力通过提供动态渲染页面元素的机制来大大增强 的功能。
嵌入式设备的 SVG 小子集
由于行业需求,在 SVG 1.1 中引入了两个移动配置文件:SVG Tiny (SVGT) 和 SVG Basic (SVGB)。这些是完整 SVG 标准的子集,主要用于功能有限的用户代理。特别是,SVG Tiny 是为高度受限的移动设备(如手机)定义的,而 SVG Basic 是为更高水平的移动设备(如 PDA)定义的。
两种移动配置文件都不支持完整的 DOM,而只有 SVG Basic 才具有可选的脚本支持,但由于它们是完整标准的完全兼容子集,大多数 SVG 图形仍然可以由仅支持移动配置文件的设备渲染。
SVG 的应用程序支持
用于创建 SVG 的应用程序和工具
- OpenOffice.org Draw 1.1 及更高版本可以导出 SVG 文件,对于 Draw 2.0,还有一个额外的 SVG 导入插件。
- Inkscape 是一个开源的跨平台矢量编辑器,使用 SVG 作为其本机格式。 是 Inkscape 的前身,目前仍在独立开发中。
- 是一个开源矢量编辑器,支持 SVG 导入和导出。
- Apache Batik 是一个 工具包,用于应用程序或小程序,这些应用程序或小程序希望将图像用于 SVG 格式,用于各种目的,例如查看、生成或操作。 Batik 提供了一组标准模块,如 SVG 解析器、SVG 生成器和 SVG DOM;还包括一个 SVG 查看器应用程序。
- SVG Scene 工具包 使开发人员能够通过构建 SVG 内容模型或场景来创建应用程序视图。场景可以同时显示在多个窗口中,可能在单独的客户端上。SVG 的渲染通过 和 完成,后者又支持各种目标,例如 Windows、MacOS、PostScript、Xlib。
- Scribus 是一个跨平台开源页面布局程序,支持 SVG
Web 浏览器中查看 SVG 的支持
SVG 在 Web 上的使用还处于起步阶段。长期使用完全栅格格式和 Macromedia Flash 存在很大的惯性,但浏览器支持也存在问题,大多数浏览器用户必须安装插件。提供 SVG 图像的网站通常也会以栅格格式提供图像,要么通过 内容协商自动提供,要么允许用户直接选择文件。替代图像通常使用 ImageMagick 等库自动栅格化,这提供了一种快速但不完整的 SVG 实现。
原生支持有几个优点。例如,不需要插件,SVG 可以与其他格式混合在单个文档中,并且不同文档格式之间的脚本编写更加可靠。
- Opera Web 浏览器(自 8.0 Beta 3 起)支持 SVG 1.1 Tiny 规范
- Mozilla 的 Firefox 浏览器(自 1.5 版本起)和 SeaMonkey 互联网套件,它们共享相同的代码库,都对 SVG 1.1 Full 规范的支持不完整。 Mozilla 网站上有 Firefox 1.5 中支持的模块概述 和 Firefox 开发版本中正在进行的模块概述。
- Web 浏览器具有部分 SVG 支持
- KDE 项目的 Konqueror 具有一个相当完整的 SVG 插件,称为 。 1 开发已结束,但 2 已经活跃了一年多,并计划合并到 KDE 4 核心中,这可能会在未来某个时候使 Konqueror 实现原生渲染。
- Apple 的 Safari 浏览器,该浏览器基于 布局引擎的 Konqueror,但后来分叉到 Webkit 项目,最近也开始将 2 移植到 WebCore,从而启动了将 SVG 原生支持合并到 Safari 的工作
- SVG Salamander 是 Apache Batik 的一个开源替代方案,用于 Java
外部链接
官方
- W3C SVG 页面
- SVG Wiki - 开发者 SVG 信息 Wiki
库
教程
文章
- Math Games: Vector vs Raster (maa.org) - 31 个 SVG 编辑器的列表
- SVG Open,关于可伸缩矢量图形的年度国际会议
- 文章 "SVG:稳赢之选"
- 文章 "SVG 是未来"
- Webreference 的描述
- 关于免费实现的讨论
- 神奇的图片