SVG——新一代Web设计及互动媒体的革新
首页 SVG入门 SVG介绍 Firefox浏览器Gecko/SVG结构

Firefox浏览器Gecko/SVG结构

Firefox游览器Gecko/SVG结构   本篇文章的内容引用了“Gecko + Cairo:Firefox 未来的显示输出架构”部分内容,FireFox对于SVG的支持是源于Firefox的Gecko输出引擎,简单明了的说就是Gecko内核决定着Firefox对SVG的支持程度,文章将让大家了解SVG与FireFox及其内核Gecko+Cairo的一些关系,并且将理解Firefox以后在SVG支持方面会有何进展。

来源:SVG中国(ChinaSVG.COM)

1 关于Gecko

  Gecko是Firefox(Mozilla)的输出引擎,一般习惯于称之为内核。其性能直接决定了浏览器的效率。
  Gecko是套开放原始码的、以C++编写的网页排版引擎。
  Gecko为第2个最流行的排版引擎,仅次于Trident(用于Windows版的Internet Explorer)。
  Gecko将会继续支持更多的网络标准,例如XForms和SVG。Mozilla基金会作为WHATWG的一份子,  Gecko和其他排版引擎将会率先支援WHATWG所定下的规格,例如可供绘画的canvas。
  Gecko的绘画元件在1.9版将会有重大的改变。她将会使用跨平台的Cairo元件来代替作业平台的绘画接口。这个改变将会令Gecko拥有更佳的绘图能力。而加上Glitz的话,更可利用3D硬件加速。而所有多媒体内容(如HTML/CSS、canvas、SVG等)将可使用同一管道作出渲染,SVG 的特效亦可以应用于HTML上。

2 Gecko使用Cairo有什么好处

  可能上面的Gnome展望会令你感到难忘,其实,Cairo在Mozilla上使用的前景同样值得期待。

  比如,你的Firefox的CPU占用率是否经常达到100%?实际上很大原因就是因为目前Firefox的Gecko引擎生成页面的方式并不是那么有效率,它的高速度很大程度上依赖于CPU的开销。而通过Cairo可以实现的硬件加速,Gecko就可以把大部分的显示工作交给显卡(GPU)来完成。这样一来,Gecko在那些有3D显卡的机器上是非常高效的。(当然,它不会把你的小猫变成100M专线) :108:

  不仅仅是这些,按照 roc 的说法,转移到Cairo上,将会“带给我们现代化的2D图形处理能力(如填充、描旁、去背、映射转换,alpha透明支持等)」。Cairo可以将它的输出传送到不同的后端,这使它很适合在屏幕上显示图像和打印。借助Glitz函数库,Cairo能使用 OpenGL的硬件加速功能来绘制图像,这使得 Mozilla能在现代化的3D显卡上获得益处。

  为了实现上述目标,Mozilla需要去除软件中大量的图形代码,把它们重新构建于 Cairo之上。目前,这一工作正在有条不紊地进行着。在 roc的blog 里面有一篇文章,介绍了Mozilla的图形处理基础架构转换到Cairo的最新进度,其中所附的Mozilla截图便是以Cairo来生成网页以及本身的XUL使用者介面。(尚处于开发测试阶段)

3 cairo在 Gecko 上实现的路线图

图1 Firefox浏览器Gecko/SVG结构

  首先是cairo在 Gecko 1.8/Firefox 1.1中的实现:

  • canvas 和 SVG的实现将基于cairo
  • 没有硬件加速;只用软件方式实现render-to-bitmap
  • 非cairo的SVG实现方式(例如GDI+)仍会被支持
  • Windows上cairo的实现将随进度而定
  • 非canvas,非SVG利用现有的平台API实现。
  • 如图,Cairo的运用只是部分的。如Windows平台对于SVG的实现就被排除。
  • 其次是cairo 在 Gecko 1.9 中的实现:
  • 停止使用2D API, 使用cairo来实现所有内容。

4 解决foreignObject问题

  实现HTML显示的硬件加速
  更高的质量(比如,双线性图像扫描)
  如图所示,Cairo在Gecko 1.9中将得到完全的实现。
  现在Mozilla的路线图指向3.0,这是一个非常长远和有规划的项目。或许,伴随着Gecko 1.9或更高版本性能的不断提升,你会在不远的将来看到一个完全不一样的Mozilla. Mozilla基金会运作规范,工作高效。是开源软件组织中难得的典范。

  关于SVG与Firefox的更多信息,这里有一篇文章可以参考:SVG与Firefox相关的介绍(英文)

(THE END)

标签:; 更多...