2015-08-13 110 views
1

我使用Cairo在嵌入式設備上進行文本渲染。我評估過「玩具」文本API(即cairo_show_text),它效果很好,效率很高。不幸的是,它只支持最基本的操作,並且總是立即丟棄形狀。開羅字形緩存

我需要做的是繪製簡單的文字填充中風。當我使用稍微複雜的API(cairo_text_path)執行此操作時,它可以工作,但性能會降低到不可接受的級別。

這是一個有點難以找到文檔,但我確實發現這個提示:

注意cairo_show_text()緩存字形所以是更有效的,如果你有大量的文字工作。

我在哪裏可以讀到關於這個字形緩存以及如何爲cairo_text_path?理想情況下,是否有這樣做的代碼示例?我只需要支持這個簡單的用例。

回答

1

cairo_text_path將具有所有字形的文本轉換爲路徑並將其添加到上下文中。渲染此路徑的代價很高,因爲有許多細分 - 每個單個字形都有數十個移動,線條和曲線。

通過cairo_show_text緩存字形意味着重複的字形/字符只會渲染一次,並以更便宜的格式(如掃描線,三角形或位圖)保存以備以後使用。因爲字體不會在中間變化,所以這種回收不是問題。

你可以自己做這個緩存,渲染image surfaces上的字形並將它們用作pattern,或者從一開始就簡單地使用bitmap fonts