Странная проблема с CoreText (результаты Мохаве и Каталины разные!) - PullRequest
0 голосов
/ 29 октября 2019

В Xcode 11.1 я использую CoreText для рендеринга следующего арабского текста…

**enter image description here**

CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString(attrString);
CFRelease(attrString); CTFrameRef frame =    CTFramesetterCreateFrame(framesetter, CFRangeMake(0, 0), path, NULL);
CTFrameDraw(frame, myContext);

ХОРОШО. Когда я нахожусь в Мохаве (macOS 10.14), он правильно рисует приписанную строку, и единственная строка фрейма состоит только из одного прогона ...

CTLineRef myLine = (CTLineRef) CFArrayGetValueAtIndex(lines, 0);
CFIndex countOfRuns = CFArrayGetCount(runArray);

countOfRuns равно 1, чтоправильно и что ожидается. 101

счетчик прогонов = 1, диапазон строк = (0, 69), ширина = 481,191, счетчик глифов = 69, диапазон строк прогона = (0, 69)…


Но когда я нахожусь в Каталине (macOS 10.15), хотя он все еще правильно рисует приписанную строку, единственная линия фрейма состоит из трех запусков!

CTLineRef myLine = (CTLineRef) CFArrayGetValueAtIndex(lines, 0);
CFIndex countOfRuns = CFArrayGetCount(runArray);

countOfRuns теперь равно 3, что не должно быть, и это нарушает мою программу!

run count = 3, диапазон строк = (0, 69), ширина = 481.191, количество символов = 70,диапазон строки первого запуска = (58, 11), диапазон строки второго запуска = (56, 2) и диапазон строки третьего запуска = (0, 56)…


Кодточно так же в Мохаве и Каталине, но каждый macOS возвращает различное количество прогонов глифа! Как это может быть? Были ли сделаны какие-то изменения в CoreText или в Catalina? Чего мне не хватает?

...