前面一些小节里,又是出现呈现引擎,又是出现渲染引擎,那么它们究竟是什么东西?又该怎么区分他们呢?
其实他们都是Rendering Engine的翻译。
Render 的中文意思有翻译,呈送,粉刷的意思。直译的话,选取其呈送的意思,所以直译成呈现引擎。
文艺一点的话,那就翻译成渲染引擎(翻译成粉刷引擎可能会比较搞笑)。反正你跟做技术的人讲浏览器的“渲染引擎”,他们一定都知道你指的是 Gecko, KHTML/WebKit 这些。沟通起来也不会有障碍,大家知道呈现引擎和渲染引擎是一回事,只是直译和意译的区分。
绘画中的 render 就是一种“呈现”的技法,在线稿或底稿的基础上通过上色等手段将内容以更真实可感的样貌呈现而出,比如对光影和材质的表现,这到现在计算机绘图中的 render 是一脉相承的,比如底稿对应的线框模型,抽象对应抽象,具体对应具体。这或许是翻译成“呈现引擎”的另一种原因。浏览器中的 render 也是关于内容的呈现吧?以更具体可感的样貌呈现内容。
按 Wikipedia 上的说法,「render」指的是借助计算机程序,从一个模型生成图像的过程。这和美不美观或者准不准确都没关系。注意我们在屏幕上看到的一切东西本质上都是图像——哪怕它有文字的外形,哪怕它能够通过光标选择。
浏览器引擎做的正是这样的事情——输入一段 HTML,浏览器引擎把它处理成一个可视的画面。这个过程不能叫「翻译」或者「转译」。「译」指从一种文字到另一种文字,它是文字层面上的行为,严格地说与视觉或者说与文字的接受途径并无关联。一个人给我口述一段话,我把它用另一种语言讲述给另一人,在这个过程中没有视觉的介入但仍然叫「翻译」。而 re