【问题标题】:How do I know if a font has a glyph for a given Unicode character? [duplicate]我如何知道字体是否具有给定 Unicode 字符的字形? [复制]
【发布时间】:2019-06-04 07:49:43
【问题描述】:

我已经看到针对 C#、PHP 等的类似问题得到解答,但我无法在我的 Pascal 工作(Lazarus 和 Delphi)中使用这些解决方案。

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

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

顺便说一句:我目前的迂回解决方案是获取 unicode 字符的 TextWidth 和 TextHeight,并将其与我确定没有字形的字符的 TextWidth 和 TextHeight 进行比较(比如 U0001)。如果它们不同,则表示字形存在。如果它们相同,则字符没有字形,或者字形恰好与(“缺少字形)替换字符具有相同的大小。显然不是一个非常令人满意的解决方案。如果您能想到更好的回旋处解决方案,请告诉我。

谢谢!

【问题讨论】:

  • 这取决于平台
  • @David:Lazarus 上的 TextWidth 似乎可以在不同的平台上运行,或者至少可以在 Windows 和 Mac(达尔文)上运行,这正是我所需要的。
  • 接受的答案在 Mac 上没有用

标签: delphi unicode lazarus


【解决方案1】:

GetGlyphIndices():

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

还有GetFontUnicodeRanges()

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

【讨论】:

  • 这似乎正是我所需要的!谢谢。
猜你喜欢
  • 2014-04-26
  • 2023-03-25
  • 2017-10-05
  • 2014-04-23
  • 2017-07-21
  • 2019-06-03
  • 1970-01-01
  • 2021-09-19
  • 1970-01-01
相关资源
最近更新 更多