我使用Cairo在嵌入式设备上进行文字渲染。我已经评估了玩具'文本API(即cairo_show_text
),它运行良好,效率很高。不幸的是,它只支持最基本的操作,并且总是立即丢弃形状。
我需要做的是使用填充和笔划绘制简单文本。当我使用稍微复杂的API(cairo_text_path
)执行此操作时,它可以正常工作,但性能会下降到不可接受的水平。
找到文档有点困难,但我确实找到了这个提示:
请注意cairo_show_text()会缓存字形,因此如果您处理大量文本,效率会更高。
我在哪里可以阅读有关此字形缓存以及cairo_text_path
的方法?理想情况下,是否有代码示例?我只需要支持这个简单的用例。
答案 0 :(得分:2)
cairo_text_path
将包含所有字形的文本转换为路径并将其添加到上下文中。渲染这条路径是很昂贵的,因为有很多段 - 每个字形的数十个移动,线条,曲线。
cairo_show_text
的字形缓存意味着重复的字形/字符会被渲染一次并以更便宜的格式(如扫描线,三角形或位图)保存,以便以后出现。由于字体之间没有变化,因此这种回收不是问题。
您可以自己执行此缓存,在image surfaces上呈现字形并将其用作pattern,或者只是从头开始使用bitmap fonts。