delphi - 我如何知道字体是否具有给定 Unicode 字符的字形?
问题描述
我已经看到针对 C#、PHP 等回答的类似问题,但我无法在我的 Pascal 工作(Lazarus 和 Delphi)中使用这些解决方案。
问题很简单:我想以编程方式知道字体是否具有给定 unicode 字符的字形 - 使用 Lazarus(最好)或至少使用 Delphi。
在我的特定情况下,我想在某些 TLabel 中使用 unicode 箭头字符,但我希望能够检查该字体中是否存在该 unicode 箭头字符。
顺便说一句:我当前的迂回解决方案是获取 unicode 字符的 TextWidth 和 TextHeight,并将其与我确定没有字形的字符的 TextWidth 和 TextHeight 进行比较(比如 U0001)。如果它们不同,则表示字形存在。如果它们相同,则字符没有字形,或者字形恰好与(“缺少字形)替换字符具有相同的大小。显然不是一个非常令人满意的解决方案。如果您能想到更好的回旋处解决方案,也请告诉我。
谢谢!
解决方案
该
GetGlyphIndices
函数将字符串转换为字形索引数组。该函数可用于确定字体中是否存在字形。
该
GetFontUnicodeRanges
函数返回有关字体支持哪些 Unicode 字符的信息。信息作为GLYPHSET
结构返回。
推荐阅读
- python - 有没有办法通过python中的参数在列表中搜索对象?
- winapi - GetDoubleClickTime 意外返回 0
- wicket - 使用 CaptchImageResource 创建的 Captch 图像不会立即与其余网页内容一起显示,而是在大约 5 秒延迟后显示
- html - 离子选择中的字符串不会改变,除非它被点击
- ffmpeg - 当有多个drawtext目标时,如何编写函数“avfilter_graph_send_command”(ffmpeg)的*args?
- c++ - 移动语义与 const 引用
- android - 评分栏在小屏幕上无法正常工作
- javascript - SyntaxError:JSON 输入角度意外结束
- qt - 具有统一 vec3 数组的 Qt3D 着色器图
- r - 我怎样才能用这样的比例制作一个情节(-1, 13000)