gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 07:32:53 27 4
gpt4 key购买 nike

在我的应用程序中,我在UITextView中的文本行下绘制自定义背景。为此,我使用boundingRect(forGlyphRange:in:)NSLayoutManager方法。它适用于LTR语言(拉丁语、西里尔语、汉语等):
enter image description here
但是,如果我将它用于RTL文本(希伯来语、波斯语等),则该方法返回错误的边界rect(请参见左边缘的填充):
enter image description here
这些额外的填充似乎有一些逻辑。第一个字符决定行的填充大小:
enter image description here
这个额外填充的原因是什么以及如何得到正确的边界矩形?
这里有一个演示:https://www.dropbox.com/s/bpsr7bhhd7gqm2z/hebrew.zip?dl=0
UPD:似乎这个函数对所有使用的字母表都给出了一个错误的结果,我不知道是怎么调用的,变异字符。天成文书例如:
enter image description here

最佳答案

似乎boundingRect(forGlyphRange:in:)精确地计算字形及其用于附加相邻字符的空格,但不计算提供额外填充的最终组成文本。
enter image description here
我解决了我的问题,但是使用了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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com