我怎么知道字体是否具有给定Unicode字符的字形?

时间:2019-01-09 13:56:53

标签: delphi unicode lazarus

我在C#,PHP等中看到了类似的答案,但是我无法在Pascal工作中使用这些解决方案(Lazarus和Delphi)。

问题很简单:我想以编程方式知道字体是否具有给定unicode字符的字形-最好使用Lazarus或至少使用Delphi。

在我的特定情况下,我想在某些TLabel中使用unicode箭头字符,但我希望能够检查该字体中是否存在该unicode箭头字符。

顺便说一句:我当前的回旋解决方案是获取Unicode字符的TextWidth和TextHeight,并将其与我确定没有字形的字符的TextWidth和TextHeight进行比较(例如U0001)。如果它们不同,则表示字形存在。如果它们相同,则说明该字符没有字形,或者该字形恰好具有与(“缺少字形”)替换字符相同的大小。显然不是一个非常令人满意的解决方案。如果您能想到一个更好的环形交叉路口解决方案,也请让我知道。

谢谢!

1 个答案:

答案 0 :(得分:1)

请参见GetGlyphIndices()

  

GetGlyphIndices函数可将字符串转换为字形索引数组。 该功能可用于确定字体中是否存在字形。

还有GetFontUnicodeRanges()

  

GetFontUnicodeRanges函数返回有关字体支持哪些Unicode字符的信息。信息以GLYPHSET结构形式返回。