我试图在核心文本中找到一行文本的边界。为简单起见,假设它只有一个字符。
目前我正在使用以下方法:
line = CTLineCreateWithAttributedString(attrString);
rect = CTLineGetImageBounds(line, context);
它在大多数情况下都有效,但对于某些字符,例如数学斜体 d (Unicode: 0x1D451) 或数学斜体 q (Unicode: 0x1D45E),宽度有点短。
我尝试使用CTLineGetTypographicBounds()
or CTFramesetterSuggestFrameSizeWithConstraints
,但他们也没有帮助(我认为他们使用字形的提前来找到宽度,而不是它的图形宽度。)由于字体本身不是斜体,我也不能使用倾斜角度来纠正这个问题。
我尝试直接访问字形并使用CTFontCreatePathForGlyph()
,但失败了,因为 CGGlyph 和 UniChar 都是 16 位,而我需要 32 位字符。
有谁知道我做错了什么吗?如果是这样,正确的方法是什么?
Update:
为了确保这不是与字体相关的问题,我使用了不同的字体。即使对于 Arial Italic 中的 ASCII 字符也存在该问题。
Update:
请忽略我之前的更新!事实证明,这个问题(Arial Italic 的问题)是我自己的错误。但第一个问题仍然存在。
根据我所做的错误报告,显然这是一个 CoreText 问题,只在极少数情况下出现。一旦找到修复方法,我会立即通知您。
更新:2012 年 3 月 15 日
我忘了早点更新这个问题,但这已经解决了。该修复已在 OS X Lion / iOS 5 中进行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)