В моем приложении странная проблема с подчеркиванием.У меня нет проблем с другими свойствами шрифта (размер, стиль, полужирный и т. Д.), Только с подчеркиванием.
У меня есть текстовые данные в NSTextView, theView.Подчеркивания правильны везде в тексте.
Я использую такой код:
dataPointers?[0] = UnsafeMutablePointer<UInt8>.allocate(capacity: totalBytes)
cachedBMs[appDel.nextFrameIndex] = NSBitmapImageRep(bitmapDataPlanes: dataPointers, pixelsWide: Int(viewFrame.size.width * 2), pixelsHigh: Int(viewFrame.size.height * 2), bitsPerSample: 8, samplesPerPixel: 4, hasAlpha: true, isPlanar: false, colorSpaceName: NSCalibratedRGBColorSpace, bytesPerRow: Int(bytesPerRow), bitsPerPixel: 32)
cachedBMs[appDel.nextFrameIndex]?.size = NSSize(width: viewFrame.size.width, height: viewFrame.size.height)
cachedBMsDataPointer[appDel.nextFrameIndex] = dataPointers?[0]
cachedBMsSize[appDel.nextFrameIndex] = totalBytes
if let bitmap = cachedBMs[appDel.nextFrameIndex]
{
theView = NSKeyedUnarchiver.unarchiveObject(with: NSKeyedArchiver.archivedData(withRootObject: originalView))!
theView.cacheDisplay(in: viewFrame, to: bitmap)
cachedBMsDataPointer[appDel.nextFrameIndex] = bitmap.bitmapData
}
Затем я использую этот растровый буфер для создания некоторых текстур для OpenGL (я знаю, я должен использоватьМы с металлом скоро будем) и рендерим их в другое окно.Не все подчеркивания видны.Те, что находятся в начале файла, отсутствуют.К концу файла правильные.
Текст может быть довольно длинным, более 5000 строк.Если я удаляю фрагмент текста из середины файла, подчеркивания в начале файла отображаются правильно в представлении OpenGL.Вот почему у меня есть клон NSTextView перед операцией, в противном случае это занимает так много времени, что это мешает пользователю редактировать NSTextView в окне.
Я прошел через атрибуты один за другим, и онито же самое каждый раз, как в начале, так и в конце файла, а также в тех случаях, когда подчеркивания видны и не видны в моем окне OpenGL.
Как я уже говорил выше, все остальные текстовые атрибуты всегда корректны.
Источником текста является либо файл RTF, либо вставленный из другого приложения, либо введенный непосредственно в NSTextView.Независимо от источника, поведение будет одинаковым.