繁体   English   中英

NSLayoutManager boundingRect(forGlyphRange:in:) 为 RTL 语言返回错误的值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM