gpt4 book ai didi

c++ - 在 Windows 中,如何检测 Unicode 字符是否呈现为正方形( bean 腐)?

转载 作者:太空狗 更新时间:2023-10-29 21:36:20 29 4
gpt4 key购买 nike

我正在为 OpenGL 编写一个简单的位图字体渲染器,我也想渲染一些 Unicode。然而,在许多字体中,一些字符丢失并呈现为正方形。这些因此浪费了我纹理中的空间,我想摆脱它们。有没有WinAPI函数来检测某个字符是否会被渲染成使用某种字体的 bean 腐方 block ?

我正在使用 GDI,我使用 CreateDIBSection 创建了一个屏幕外位图,然后使用 CreateFontIndirect 获取字体并使用 ExtTextOutW 呈现字形。

到目前为止,我一直在考虑检测光栅化形式的 bean 腐(通过比较像素)哪种方法可行,但我想这不是很好。它还要求我获得一些给定字体肯定没有的 Unicode 字符,以便获得要比较的"template"。我想我迟早会惹上麻烦。

最佳答案

在为 3D 渲染器构建字形映射时,我必须做一些类似的事情来实现我自己的字体链接和字体回退。我使用 Uniscribe 将字符串转换为字形索引字符串并转换为字体。然后我用了 ScriptGetFontProperties获取字体的 wgDefault 属性并将该值与每个字形索引进行比较。

纯 GDI 等价物是使用类似 GetCharacterPlacement 的东西将文本转换为字形索引(然后将 ExtTextOut 与 ETO_GLYPH_INDEX 一起使用),但我认为这不会完成 Uniscribe 会执行的所有键整形和重新排序。对于初学者,我认为这对 BMP 以外的任何事情都不起作用。

您不想在图形上匹配缺失的符号字形,因为它并不总是正方形。例如,在某些字体中,它是一个带有问号的黑色菱形。

关于c++ - 在 Windows 中,如何检测 Unicode 字符是否呈现为正方形( bean 腐)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40745202/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com