總網頁瀏覽量

咕狗大神

2012年4月24日 星期二

人生奇景之二:全世界第六顆排版引擎

大家都知道,世界上有五顆排版引擎,分別是 Webkit(Safari & chrome), Gecko(Firefox), Opera, Adobe, 以及 Trident(IE),那麼第六顆是甚麼呢?

話說我人生第二份工作,來報到不久,為了要去 IDPF 把直排推進去當標準,所以大量的 trace Webkit source code。本單位某子單位聽到了,就來找我,希望我幫他們找出 Webkit 運作的原理。菜就罪該萬死阿,這個道理我懂,所以就拼命地找資料看 source code,整理了一份投影片做報告。

結果報告完,子單位人員說沒感覺,然後說給我一個簡單的題目,怎麼樣畫表格(<tb>, <tr>, ...)。我問說要做什麼,他們說要用在排版引擎上面,我心裡立刻起了很崇高的敬意。根據我 trace Webkit source code ,我發現排版引擎的難度真的超高,沒想到我竟然來到這麼一個技術超強的單位,自己在開發排版引擎,這可得好好學習啦。

我就白目的問:「請問一下,你們怎麼去 parsing DOM tree?」回答我的是該子單位老大:「我們不用 DOM,DOM太慢了,我們用另外一個,ㄟ~忽然想不起來了,你應該知道吧~就那個啊」指著我。

我有點懷疑的問說:「是 SAX 嗎?」「對對,就是 SAX,SAX比較快」

這下子我真的摸不著腦袋了,SAX要怎麼繪製出版面呢?SAX也沒有比DOM快啊?難道,難道,難道他們只是替代某些標籤而已嗎?

「請教一下,排版引擎已經做到甚麼程度了?」我依然白目地詢問。「可以吃 <audio> 跟 <video> 了,還有基本的排版如 <p>, <b>, <a>, ...」這麼厲害,已經可以做到 html5 的影音了耶,可是我還是想不通ㄟ。

「那再請教一下,怎麼去做 <audio> 的播放?」我傻傻地繼續問。「就呼叫 API 啊」不屑的回答。「然後呢?」我還是很笨。「丟給 Webview 作呈現啊」有點不耐煩了。

挖靠~原來如此。太了不起了,這個全世界的第六顆排版引擎,原來是 preprocessor,所以 <audio> & <video> 還有 SAX 就豁然開朗了。用 SAX 去把這兩個標籤掃出來,然後用 <obj> 的方式改寫成 html4,再丟給 Webview ( Webkit 的 android 版)就好了。

我的程度真的是差太遠了

沒有留言:

張貼留言