我试图在核心文本中找到一行文本的边界。为了简单起见,假定它具有单个字符。 目前我使用下面的方法:在核心文本中查找文本的边界矩形
line = CTLineCreateWithAttributedString(attrString);
rect = CTLineGetImageBounds(line, context);
它的工作原理时代的大多数,但对于某些字符,如数学斜体d(统一:0x1D451)或数学斜体Q(Unicode:当0x1D45E)宽度有点短。
我试过使用CTLineGetTypographicBounds()
或CTFramesetterSuggestFrameSizeWithConstraints
,但他们也没有帮助(我认为他们使用字形先行来找到宽度,而不是它的图形宽度。)由于字体本身不是斜体,我也不能使用倾斜角度来纠正这一点。
我试着直接访问字形并使用CTFontCreatePathForGlyph()
,但因CGGlyph和UniChar都是16位而失败,我需要32位字符。
有谁知道我是否做错了什么?如果是这样,什么是正确的方式?
更新:
,以确保它是不相关的字体的问题,我用不同的字体。甚至对于Arial Italic中的ASCII字符也存在问题。
更新:
忽略我以前的更新!事实证明这一个(与Arial斜体的问题)是我自己的错误。第一个问题仍然存在。
我刚刚提交了一个错误。如果我听到任何消息,会让你知道。 – mohsenr 2010-05-08 10:53:31