在我的应用程序中,我在UITextView
中的文本行下绘制自定义背景。为此,我使用boundingRect(forGlyphRange:in:)
的NSLayoutManager
方法。它适用于LTR语言(拉丁语、西里尔语、汉语等):
但是,如果我将它用于RTL文本(希伯来语、波斯语等),则该方法返回错误的边界rect(请参见左边缘的填充):
这些额外的填充似乎有一些逻辑。第一个字符决定行的填充大小:
这个额外填充的原因是什么以及如何得到正确的边界矩形?
这里有一个演示:https://www.dropbox.com/s/bpsr7bhhd7gqm2z/hebrew.zip?dl=0
UPD:似乎这个函数对所有使用的字母表都给出了一个错误的结果,我不知道是怎么调用的,变异字符。天成文书例如:
最佳答案
似乎boundingRect(forGlyphRange:in:)
精确地计算字形及其用于附加相邻字符的空格,但不计算提供额外填充的最终组成文本。
我解决了我的问题,但是使用了boundingRect
函数。检查结果:https://www.dropbox.com/s/qq5lmo8fsozjqml/hebrew%202.zip?dl=0
关于ios - NSLayoutManager boundingRect(forGlyphRange:in :)为RTL语言返回错误的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54161101/