cocoa - 在核心文本中查找文本的边界矩形

标签 cocoa cocoa-touch macos core-text

我正在尝试找到核心文本中一行文本的边界。为简单起见,假设它只有一个字符。 目前我正在使用以下方法:

line = CTLineCreateWithAttributedString(attrString);
rect = CTLineGetImageBounds(line, context);

它在大多数情况下都有效,但对于某些字符,例如数学斜体 d (Unicode: 0x1D451) 或数学斜体 q (Unicode: 0x1D45E),宽度有点短。

我尝试使用 CTLineGetTypgraphicBounds()CTFramesetterSuggestFrameSizeWithConstraints,但它们也没有帮助(我认为它们使用字形的提前来查找宽度,而不是其图形宽度。 )由于字体本身不是斜体,我也无法使用倾斜角度来纠正这个问题。

我尝试直接访问字形并使用 CTFontCreatePathForGlyph(),但失败了,因为 CGGlyph 和 UniChar 都是 16 位,而我需要 32 位字符。

有人知道我做错了什么吗?如果是这样,正确的方法是什么?

更新:

为了确保这不是与字体相关的问题,我使用了不同的字体。即使对于 Arial Italic 中的 ASCII 字符也存在此问题。

更新:

忽略我之前的更新!事实证明,这个问题(Arial Italic 的问题)是我自己的错误。但第一个问题仍然存在。

最佳答案

根据我所做的错误报告,显然这是一个 CoreText 问题,只在极少数情况下出现。一旦找到修复方法,我会立即通知您。

更新:2012 年 3 月 15 日

我忘记早点更新这个问题,但这个问题已经解决了。该修复已在 OS X Lion/iOS 5 中进行。

关于cocoa - 在核心文本中查找文本的边界矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2770252/

相关文章:

objective-c - 如何在 Mac 上禁用 cmd+q

objective-c - 如何在不使用 sleep() 的情况下在 Mac 上暂停 c 或 Objective-C 中的函数

objective-c - 主从界面中的多个详细 View

objective-c - 支持在我的 iOS 邮件和 Safari 应用程序中打开...菜单项

ios - UITableView 的 textLabel.text 位置在 iOS 中不居中

objective-c - NSButton在cocoa mac应用程序中顺时针旋转动画

ios - UIAlertController 中的文本字段不应该是第一响应者

macos - HTML5 视频能让计算机保持开机吗?

cocoa - NSView 是否有类似于 UIView 的 setNeedsLayout/layoutSubviews 方法?

windows - 需要mac应用商店吗?