gpt4 book ai didi

cocoa - 核心文本字形位置和 em 值

转载 作者:行者123 更新时间:2023-12-03 17:39:55 25 4
gpt4 key购买 nike

我正在尝试使用 http://blog.steinberg.net/2013/05/introducing-bravura-music-font/ 中的 Bravura 字体绘制一些音符。使用核心文本功能。

伴随该字体的元数据 json 文件有一个 em 单位分数的“附加”坐标,用于指示词干应附加到某些音符的位置。该附着点再次与音符字形周围的边界框相关,其尺寸以 em 单位的分数为单位。

我的粗略 ASCII 图片显示了茎与音符的连接点:

      |
|
|
/---\* <- attach point here
| |
\---/

来自维基百科:“em 是排版领域中的宽度单位,等于当前指定的点大小。例如,16 点字体中的 1 个 em 为 16 点宽。因此,该单位对于同一时间的所有字体都是相同的。给定点大小。”

我想使用Core Text函数CTFontDrawGlyphs,它采用像素坐标来用于字形放置。

我还想使用 Core Graphics 函数 CGContextMoveToPointCGContextAddLineToPoint 来绘制附加到音符字形的茎。

我有点不清楚如何从 em 单位分数中的坐标转换为特定点大小字形的特定像素坐标,以便我可以准确地将这些词干放置到音符字形上。

最佳答案

如果没有文本转换矩阵 (CGContextSetTextMatrix),1 em 将与字体大小的点数相同。因此,对于具有默认标识文本矩阵的 12 点字体,1 em = 12 pt。

请注意,Core Graphics 中几乎没有任何内容是以像素为单位给出的。它们以点为单位(Core Graphics 点,而不是 PostScript 点)。对于视网膜显示屏,1 个点包含 4 个像素 (2x2)。无论如何,这可能就是您的意思,但是如果您与图像交互,点/像素转换非常重要。

(我感觉我已经重复了您已经知道的内容;问题还有更多吗?从给定的原点,您可以通过将 em 单位偏移量乘以字体大小来计算坐标。)

关于cocoa - 核心文本字形位置和 em 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20545703/

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