我们在启用 openGL 的情况下运行钴,并且图形似乎在 1920x1080 分辨率下正确显示。
但偶尔,“设置”菜单中的某些图标可能会在顶部出现意想不到的竖线(如图所示)。
我们猜测图标是从 TTF 字体文件创建的,但我们不确定它是如何渲染到屏幕上的。
我们想在以下几点将图标转储到文件中,以检查出了什么问题。
当图标实际转换为图像时。当图标体验进一步修改。(例如,颜色变化、加粗等) 当图标被渲染到屏幕画布上时。
如果有人可以帮助指出这些事件在源代码中可能发生的位置,我将不胜感激。
我们在启用 openGL 的情况下运行钴,并且图形似乎在 1920x1080 分辨率下正确显示。
但偶尔,“设置”菜单中的某些图标可能会在顶部出现意想不到的竖线(如图所示)。
我们猜测图标是从 TTF 字体文件创建的,但我们不确定它是如何渲染到屏幕上的。
我们想在以下几点将图标转储到文件中,以检查出了什么问题。
当图标实际转换为图像时。当图标体验进一步修改。(例如,颜色变化、加粗等) 当图标被渲染到屏幕画布上时。
如果有人可以帮助指出这些事件在源代码中可能发生的位置,我将不胜感激。
我猜第一个问题是:你运行的是稳定分支还是 Cobalt 的实验分支?
除此之外,是的,这些图标是从远程下载的 TTF 字体文件创建的。图标本身只是一个转换为字形的字符,就像它上面的文本一样,尽管尺寸要大得多。
我相信您正在寻找的逻辑在钴/渲染器/光栅化器/skia/render_tree_node_visitor.cc 中的 RenderText() 中。向 SkCanvas::drawTextBlob() 传递用于渲染图标的字形和颜色信息。
正在使用的特定字形看起来是正确的,但是表示它的 render_tree::GlyphBuffer 的创建位置是 Cobalt/renderer/rasterizer/skia/text_shaper.cc 中的 TextShaper::CreateGlyphBuffer()。