[英]NSLayoutManager boundingRect(forGlyphRange:in:) returns wrong value for RTL languages
在我的应用程序中,我在UITextView
的文本行下绘制自定义背景。 要做到这一点,我用boundingRect(forGlyphRange:in:)
的方法NSLayoutManager
。 它适用于 LTR 语言(拉丁文、西里尔文、中文等): 但是如果我将它用于 RTL 文本(希伯来语、波斯语等),该方法将返回错误的边界矩形(请参阅左边缘的填充):
这些额外的填充似乎有一些逻辑。 第一个字符决定了一行的填充大小:
这种额外填充的原因是什么以及如何获得正确的边界矩形?
这是一个演示: https : //www.dropbox.com/s/bpsr7bhhd7gqm2z/hebrew.zip?dl=0
UPD:似乎这个函数对所有使用的字母都给出了错误的结果,我不知道它是如何调用的,变异的字符。 梵文例如:
似乎boundingRect(forGlyphRange:in:)
精确地计算字形及其用于附加相邻字符的空格,而不是提供额外填充的最终组合文本。
我解决了我的问题,但使用了NSString
boundingRect
函数。 查看结果: https : //www.dropbox.com/s/qq5lmo8fsozjqml/hebrew%202.zip?dl=0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.