Ответ 1
Я нашел решение этой проблемы или, по крайней мере, своего рода
Проблема: boundingRectForGlyphRange
результаты отключены в случае RTL-текста.
Таким образом, в случае RTL-текста обнаруживается только:
Использование метода NSLayoutManager
locationForGlyphAtIndex
для каждой буквы в диапазоне. Это начальные точки каждого глифа в диапазоне.
Используя эти точки, я правильно настраиваю boundingRect.
Вот его схема:
CGPoint endPoint = ((NSValue *)pointsOfGlyps.firstObject).CGPointValue;
CGPoint startPoint = ((NSValue *)pointsOfGlyps.lastObject).CGPointValue;
boundingRect.origin.x = startPoint.x;
boundingRect.size.width = endPoint.x - startPoint.x + letterWidth;
letterWidth
- это приблизительная ширина буквы, рассчитанная как дельта между двумя последовательными начальными точками.