开罗字形缓存

Cairo glyph caching

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

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

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

Be aware cairo_show_text() caches glyphs so is much more efficient if you work with a lot of text.

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

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

字形缓存 cairo_show_text 意味着重复 glyphs/characters 渲染一次并以更便宜的格式(如扫描线、三角形或位图)保存以供以后出现。因为字体不会在中间改变,所以这种回收不是问题。

您可以自己进行缓存,从头开始在 image surfaces and using them as pattern, or simply use bitmap fonts 上渲染字形。