开罗雕文缓存

时间:2015-08-13 09:51:40

标签: c cairo

我使用Cairo在嵌入式设备上进行文字渲染。我已经评估了玩具'文本API(即cairo_show_text),它运行良好,效率很高。不幸的是,它只支持最基本的操作,并且总是立即丢弃形状。

我需要做的是使用填充笔划绘制简单文本。当我使用稍微复杂的API(cairo_text_path)执行此操作时,它可以正常工作,但性能会下降到不可接受的水平。

找到文档有点困难,但我确实找到了这个提示:

请注意cairo_show_text()会缓存字形,因此如果您处理大量文本,效率会更高。

我在哪里可以阅读有关此字形缓存以及cairo_text_path的方法?理想情况下,是否有代码示例?我只需要支持这个简单的用例。

1 个答案:

答案 0 :(得分:2)

cairo_text_path将包含所有字形的文本转换为路径并将其添加到上下文中。渲染这条路径是很昂贵的,因为有很多段 - 每个字形的数十个移动,线条,曲线。

cairo_show_text的字形缓存意味着重复的字形/字符会被渲染一次并以更便宜的格式(如扫描线,三角形或位图)保存,以便以后出现。由于字体之间没有变化,因此这种回收不是问题。

您可以自己执行此缓存,在image surfaces上呈现字形并将其用作pattern,或者只是从头开始使用bitmap fonts