ImFontBaked::FindGlyphByGlyphId 请求
作者: rodrigorc创建于 2026年9月26日更新于 2026年9月28日
标签font/text
Dear ImGui 的版本/分支: 版本 v1.92.9b ### 后端: n/a ### 编译器、操作系统: 所有 ### 完整配置/构建信息: 无响应 ### 详细信息: 我正在编写一个程序,使用 ImGui 作为主要的用户界面,然后重新使用 ImGui 的字体图册来在某些画布中渲染文本。它运行得很好,但现在我正在使用低级的东西来处理字体,并且需要访问一些在我的 TTF 中没有映射的字符(想想替代形状、自定义连字符之类的)。对于正常的字符,我只需要调用 ImFontBaked::FindGlyph(ImWchar c),但对于这些奇怪的字符,我需要一个 ImFontBaked::FindGlyphByGlyphId(uint32_t glyph_id),并且它可以绕过字符->字符 ID 的映射。 当然,我可以使用 AddCustomRect() 方法,但这会迫使我自己渲染字体,而代码已经存在于 ImGui 中了... 我认为这是一个小众需求,并且它可能会破坏代码中的一些假设(一切都是通过代码点进行索引)。但我一直在想,如果我们有一个函数 ImFontLoader::FontBakedLoadGlyph(ImWchar codepoint, ...),那么我们就有两个: uint32_t ImFontLoader::FontSrcMapCodepointToGlyphId(ImWchar codepoint),然后 ImFontLoader::FontBakedLoadGlyph(uint32_t glyphId, ...)。然后,我可以简单地 子类化 标准的 ImFontLoader,并将我所需的字符 ID 添加到私有 Unicode 块中...
内容来源: ocornut/imgui