jcome 发表于 2004-4-28 17:17:15

SVG 及其Linux桌面历程 (中文版 v0.0.1)

SVG 及其Linux桌面历程

撰写: Christian F.K. Schaller

中文版v0.0.1翻译:jcome

长期以来,计算机图形一直被位图所统治。然而,自由软件社区已经开始了一场变革:在他们的桌面上使用可缩放的图形。在这篇文章里,我将从我的观点出发阐述可缩放图形在桌面中使用的历史以及成长过程——一个GNOME桌面平台中的可缩放图形的倡导者。这篇文章更多的是从GNOME的角度来关注SVG的应用过程,因为GNOME在这方面更具特色,并且,相比之下我对GNOME的相关知识比较了解。适当地,我也会涉及其他项目的里程碑。


导言

可缩放图形在桌面系统里的成长归要功于诸多因素。第一个(也是最重要的一个)是基于W3C SVG XML的矢量图形格式。SVG为我们创建这样的图形提供了开放的、标准的格式。相对其他可缩放格式,使用SVG对我们有很多有利的条件。因为它是基于XML的文件格式,创建者可以在SVG文件中存accessibility信息或者分类(categorization)信息——这两个对于像Medusa的索引技术和像Dashboard的查询系统是非常有用的。

对于那些不熟悉SVG的人们而言,SVG就是一种可缩放矢量图形的文件格式,是在W3C为在Web上实现矢量图形和动画的一种开放、自由的标准。不同于PNG和JPEG,SVG是基于矢量的图形格式,这意味着图像可以作任意尺寸的变形同时保持清晰和清爽的外观。SVG基于XML,这意味着它是人类可读格式,并且,可在其他基于XML的技术如XHTML CCS DOM 及 SMIL中对其进行控制、操作(interoperates)。SVG的应用并不局限于WEB,这是我希望在本文略作描述的。事实上,我认为在Linux桌面上普及SVG将是SVG取得成功的一个关键因素。


第一章:Levin的时代

Raph Levien 是带给Linux本地化SVG支持的先驱之一。在1999年早期,Raph开始着手于一个他称之为Gill的应用程序。“Gill”是“GNOME Illustrator”的缩写。它作了创建自由的SVG编辑器和矢量绘图应用程序的第一个尝试。作为该成果的部分,Raph也开始了一个名为Gdome的库的编写——一个W3C DOM标准的实现。Raph是早期的SVG采纳者,直到1999年2月, SVG规范的第一个公共草案发布。

SVG规范的第一个公共草案发布后,激发了另外一个SVG编辑器产生——现在非常有名的,来自Lauris Kaplinski的,Sodipodi绘图程序。Sodipodi部分地基于Gill。接下来的几个月,Sodipodi继续发展着,Gill因为Raph的注意力转向别处而走到终点。

大约在相同的时间,一个名叫Eazel的公司成立了。他们的部分商业计划是为GNOME开发一个新的文件管理器——鹦鹉螺(Nautilus)。在来自Apple的老手(veteran)Andy Hertzfeld主管下,Eazel有许多对桌面体验进行革命的计划。作为计划的一部分,Eazel开始探求使用矢量图形来取替位图,因而雇佣了Raph Levien来编写鹦鹉螺中用的SVG渲染库。这些代码的第一个版本在2000年四月进入GNOME CVS中。

As things would have it, Raph was asked to take over maintainership of the Ghostscript project, a project that had a money-earning commercial venture built up around it. So when Raph left librsvg development and started working on Ghostscript in September/October 2000, librsvg's development went into maintenance mode as the project lost its founder and sole developer.


第二章:SVG 渲染器的繁荣

2001年3月15日具有基本(初步)SVG支持的鹦鹉螺(Nautilus)1.0版本发布。在那时,有了一些SVG图标或主题。然而当浏览目录时,鹦鹉螺(Nautilus)试图对磁盘上所有SVG图像都以缩略图显示。当时librsvg还非常的不成熟,当遇到一个它不能渲染的SVG文件时有摧毁鹦鹉螺(Nautilus)的倾向。因为libsrvg库还没有达到一个令人满意的水平,对其的整合工作被放弃了。With general performance issues in its showcasing application Nautilus probably slowed down interest in SVG on the desktop quite a bit although progress in other SVG projects would keep the ball rolling.其他的SVG项目在继续发展。那时,有另外两个SVG项目开始运转。Mozilla SVG项目开始附属于rocodile Mathematics项目,它直到2001年12月才进入Mozilla 的CVS中。KSVG在2001年8月进入KDE的CVS,KDE得以开始它的SVG 。

事情的发展看起来非常不错,一个月以后,也就是2001年9月4日,W3C发布了SVG 1.0规范,这极大的推动了SVG的发展。各种项目,诸如Apache的基于java的Batik渲染器,商业化的Adobe SVG插件、浏览器在随后的几个月中纷纷启动。2001年10月,Ximian发布来自Jakub Stener的《大猩猩(Gorilla)》 SVG主题,宣告第一个SVG主题的出现。

在接下来,伴随一些相关的小变化,时间过了大半年,一些优化librsvg和鹦鹉螺(Nautilus)的工作使得可缩放的《大猩猩》的渲染速度提高了。

2002年6月,Dom Lachowicz接手librsvg的维护,这是让librsvg重新处在实现SVG图形想法的领导者的一个阶段。通过他在Gnumeric的工作;随后作为Abiword文字处理程序开发主力之一,为其提供了众多的补丁;对GNOME的底层库的修理,这些已经证明Dom是一名顶尖的黑客。接着,Carl Worth 开始创建xsvg,一个使用新的开罗(Cairo)X11扩展的librsvg的分支。这是一个友好的(amicable)分支。Dom 和Carl在XSVG的原始设计上进行合作。现在,Dom计划在librsvg中使用开罗。希望他和Carl能集合他们的成就。Cairo’s immaturity and general unavailability kep for him from doing that。这会带来什么样的未来,仍然未清晰的——希望开罗的开发者改进开罗,因为还存在几个不足,导致实现SVG渲染器存在困难。

同期开始的另外一个的成果是libcroco——尽管与librsvg 和SVG没有直接关系。Libcroco是Dodji Seketli编写的CSS2语法解释库,原来是为在其mlview XML编辑器程序而创建。Libcroco已经证明了它对于改良自由软件的SVG支持的必要性。它已被librsvg所采用,KSVG亦准备采用它。2002年11月,Vladim Plessky开始他的《BlueSphere 》SVG图标集的创作,这样,第二套SVG图标集出现了。

SVG运动在继续着,2003年1月14日,W3C发布了它的SVG1.1推荐规范。对KDE项目希望通过使用由Everaldo Coelho设计的《Crystal》 SVG图标主题来更进一步整合SVG到它的桌面系统上而言,这是一个好时机。其实,这套主题并没有正真使用SVG和矢量图形。(其矢量名声是因为它的图标是用Adobe Illustrator创作的。这些图标是以位图格式输出的)。事实上,很多的主题仍旧不是有效的SVG。但是,因为《Crystal》以SVG图标主题的面貌出现的,他对桌面系统的SVG图标的mindshare确实起了推动的作用。


第三章:闯进虚拟主题的世界

这时我决定加入到这场战斗中(fray)看是否可以为SVG的发展出力。通过合并《Bluesphere》和《Crystal》的SVG图标,我创建了名为《Sphere 和Crystal》的虚拟主题,这给了librsvg一个不错的试验基地。为了让librsvg渲染所有的图标,Dom和我成立了一个俩人小组。Dom和Matthias Clasen 在librsvg上层创建了一个GdkPixbuf加载器,它可以让SVG图形在GNOME桌面的任何地方都可用。但是该加载器和主题出现了好多问题,同时它们也需要一些GNOME桌面的全局特性。许多时间被花在对问题反馈的归档、与维护者沟通让他们修改他们的程序和库上。最终,2003年2月librsvg、Sodipodi和GNOME的大部分关键问题都改正过来了,我们发布了《Spheres 和Crystals》的第一个版本,并受到了积极的肯定。

我们继续《Spheres 和Crystals》的工作,并把它作为在GNOME中检验可缩放问题的工具。与此同时,Jakub Steiner让他的《大猩猩》SVG主题(屏幕快照)重新焕发了活力,并成为一个叫Gnome-themes-extras包的第一个主题。在这时,涌现了更多基于矢量图形的图标集。我决定试着用它们来创建更多的GNOME虚拟主题,同时也决定停止《Spheres 和Crystals》上的工作,它们的使命已经完成。毕竟,它是不同包的图标,搭配是失谐的。那些可用的新图标集让我有了冲动,试图做出一些感觉更完美无瑕的主题来。我了集中力量和推动这些虚拟主题的创建,我与Jakub Steiner取得了联系 ,并成为gnome-themes-extras包的维护人。组合了漂亮的图标作品——David Vignoi 的《Lush》(屏幕快照)、《Nuvola》(屏幕快照)图标及Mathew McClintock的《BeOS风格》图标(屏幕快照) ,使用Andrew Johnson 修整的新Gtk+主题引擎的Gtk和Metacity主题,我们组装了gnome-themes-extras的第一个发行版本,这时刚好是2003年6月12日。稍后,我们增加了一个基于Michael Doches 《Amaranth》(屏幕快照) 图标集的虚拟主题到这个包里。

所有这些加快了SVG在桌面系统的使用。我们不断改进和添加新图标,发布了不少新版的gnome-themes-extras。这些图标集开始流行起来,直至今天各地都还在展示屏幕快照。KDE阵营也没有原地踏步,感谢Rob Buis不懈的努力,KDE宣布在KDE 3.2开始装载KSVG渲染引擎。虽然没有librsvg快,但KSVG支持一些librsvg还没有支持的SVG规范。这些特性使KSVG成为让KDE的Web浏览器Konqueror渲染SVG的有力工具,但是在满足SVG图标主题渲染的需求上做得并不是那么好。


第四章:超越图标

当基础的东西打好后,越来越多的人开始关注SVG,并开始探求将这种格式应用到桌面计算上的可行性。一个名为《Monkey-bubble》的游戏在2003年10月发布,这让人们打开了视野:在游戏和其他类型图形化的软件中使用SVG图形的可行性。

同月,我联合Lauris Kaplinski 、Bryce Harrington把SVG引入Gnome桌面环境的前沿。长期以来,Sodipodi站点有一个小型的旗帜收集。我们认为收集更多更完整的旗帜供众多不同地区不同环境的人们使用将是一件非常有意义的事。所以,在2003年10月期间,我们启动了Sodipodi-flag收集工作,向大众发出号召:在Creative Commons Public Domain Dedication下贡献各种旗帜。短短几个月,收集的旗帜从原来的20~30幅一下子超过了330幅。感谢为此做出贡献的艺术家:Tobias Jackobs,Caleb Morre,Patricia Fidi和更多的其他人。这一旗帜项目有助于增长人们对 SVG图形的兴趣,也有助于引来更多的开发者从事到相关项目中。旗帜收集运动的到如此广泛的报道,是因为其用途已经超越了自由软件的开发。Including garnishing a nice endorsement from Lawrence Lessig。

All is not well in the house of rose though .在那个月下旬,Sodipodi开发队伍一分为二, Inkscape项目诞生。这给了我们两个SVG编辑器(矢量绘图程序)。长期的分歧(UI设计、扩展库的使用、项目的目标方向、编程语言的选用)导致了开发者们认为:如果他们从事两个分开的项目会更快乐,更高效。

Sodipodi和Inkscape并非此领域的仅有的玩家。在十一月份,Gimp通过librsvg库(Dom Lachowicz的SVG插件)开始支持SVG的输入。Sven Neumun后来重新编写了这个插件,现在它可以把SVG路径输入为Gimp的路径(屏幕快照)。Gimp开发者Sven Neuman 添加了许多和SVG相关的新功能到Gimp,从而Gimp可以进行一些基本的SVG绘图,这引起了轰动。有关Gimp支持SVG的新闻在许多linux 艺术站点和Slashdot上都进行了报道。

2003年11月成为另外一个重要的项目启动。Iago Rubio开始一个名为cssed的项目。它是一个CSS2编辑器。随着快速的开发,Cssed已经是一个非常有用的应用程序。这一程序对我们的发展计划将可能显示出极其便利。这计划我将在第五章描绘。

Monkey-Bubble 的榜样力量和发生在SVG上令人激动的情形,使得Gnome游戏小组在以Richard Hoelscher为SVG的主要技术力量下,开始把游戏迁移到SVG上来。Gnome2.6所带的Gnome游戏中有三款游戏支持SVG,分别是:namely lines、Gnome mines 和Mahjong。他们的计划是要把Gnome2.6后的所有游戏都SVG化,同时也要让游戏的图形界面也得到这一新图形格式有弹性的好处。


第五章:计划先行——任务和远景

目前,librsvg正在做种种改良,比如,滤镜和遮罩。Caleb Moore显示出优秀黑客的一面——已经使这些改良工作的主要力量。Caleb Moore的加入是旗帜收集项目的成果之一,基本上,他忘记离开了。他是这个项目很受欢迎的新增成员。

我们正在改进gnome-themes-extras包(新增了Kuswanto的《Gartoon》图标集)。我们很想着手的是用CSS stylesheet与主题图标结合起来。假设我们可以让一个主题中的所有图标参考一个CSS文件为它们提供的颜色信息,那么我们可以让用户容易的改变他们的图标颜色。这个想法类似于Metacity,它可以参考Gtk+主题的色彩来替代实际的颜色代码/名字。如果我们在librcroco中增加这样的支持,那么您的SVG图标就可以改变颜色,这和多数Metacity主题依据您的GTK+ 主题来改变颜色一样。

这有一个先决条件,要在Sodipodi和Inkscape中增加功能(目前还没有),以便的容易创建和维护这样的共享Stylesheet。关于此想法,我们已经从Sodipodi和Inkscape的开发者那里得到明确的答复。同时,Dodjiseketeli的libcroco也愿意助我们一臂之力。这个想法可能具有accessibility的用途,因为它可以通过CSS Stylesheets来使用一个高对比版本的主题,让色盲的人调整GUI来很好的适应他们自己的情况。

我们希望在更广的范围推广可伸缩GUI的概念。随着屏幕的分辨率越来越高,许多人想要和需要高分辨率的可伸缩GUI。使用传统的位图,会让GUI出现非常像素化的外观。仔细想想双倍尺寸模式的XMMS。如果使用SVG图形,我们就可以让它和图标一起做漂亮的缩放。这工作已经在某些gnome游戏上展开了。希望这些游戏能成为推广这一特性用途的使者。

还有,Jakub Steiner和我希望Gnome2.8的缺省主题采用SVG。这要一步一步来,一个一个把缺省的Gnome主题stock图标用SVG版本的图标替换掉,以保持Gnome当前的外观和感觉。另一个办法是在2.8中使用已有的SVG图标主题。这一补充方案需要进行讨论。我个人认同第一种方案。Dom achowicz也做了一个基于SVG的GTK+主题引擎,它体现了基于SVG的GTK+和GNOME的widget主题某些让人干兴趣的可能性。

最近Mozilla宣布正在重新开始他们的SVG效果,并计划让Mozilla缺省支持SVG渲染。对于促进SVG在Internet上的应用,这一点相当重要,同时也有助于激发艺术家和工具开发者更多的关注可伸缩易用的图形。在Mozilla中整合SVG引擎非常的重要,因为它可以使Mozilla中其他的Web技术与SVG更加紧密的整合起来,以提供更多种类的媒体,增加Web体验。

Librsvg维护者Dom Lachowicz也创建了一个基于librsvg的Mozilla插件(屏幕快照1 、屏幕快照2),其发布在librsvg 2.7.0中。这是一个有效的解决方案,可用于观看所有的在线SVG图像,如w3c一致性测试页面。

我们已经拥有的的最后一个SVG成就,同样是来自Dom achowicz,它已经为gnome-print创建了一个基于W3C SVGPrint规范的全功能SVG后端。这就意味着在Gnome 2.7,任何支持gnome-print的应用程序都可将文档打印成SVG。这个后端的大多数功能目前都可以工作了,但是我们还要让librsvg支持SVGPrint文档以便能在屏幕上正确的渲染它们。目前还没有能够处理SVGPrint文档的自由的渲染器可用。长远来看,合并浏览SVGPrint文档的功能到GGV/GPDF浏览器(Gnome Ghostcript 和 Gnome PDF浏览器)中是比较有趣的。这样,我们会有一个可以同时处理3种主要的与打印技术相关的应用程序。

总结

虽为Web而生,但看来SVG在桌面上也会有一个美好的未来。在使用和推广这种开放的格式上,自由软件处于领导者的角色。现在已经有多种不同用途的实现。更广的自由软件社区应该抓住这个机会,帮助我们达到目标。基础的东西已经完成,但要有稳定、成熟的SVG库和编辑器,仍有许多工作要做。这包括在像Sodipodi和Inkscape这样的项目上的更多工作。或为使用虚拟主题而创建CSS的工具,或更多面向SVG动画制作的工具。

感兴趣的艺术家们请关注最近启动的freedesktop剪辑艺术项目。这个项目是在freedesktop邮件列表for the time being,但我们的希望是把它变成共享的公共范围的SVG剪辑艺术包,以便用于像Gnome Office 、KDE Office 或 Open Office等等的多种应用程序中。

如果您对本文作者和文中提到的项目的有关人员有问题或建议要提,请到irc.gimp.net的#librsvg IRC频道上发布。随便访问,不必拘束。



原来翻译这么难啊!
还请各位看官多多包涵。



建议读原文
原文链接:
http://www.osnews.com/story.php?news_id=6460




开罗简介

http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=64357

Gnome 2.7 : 您准备好了吗

http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=64351

xLoneStar 发表于 2004-4-29 01:17:53

不精不行

amplifier 发表于 2004-5-3 11:15:28

太厉害了,自由软件在扮演领导者的角色,呵呵,微软之流只会赚钱,不会创新
页: [1]
查看完整版本: SVG 及其Linux桌面历程 (中文版 v0.0.1)