NSTextView -> cacheDisplay теряет некоторые подчеркивания, но не другие

В моем приложении у меня странная проблема с подчеркиванием. У меня нет проблем с другими свойствами шрифта (размер, стиль, полужирный и т. Д.), Только с подчеркиванием.

У меня есть текстовые данные в 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 (я знаю, я должен использовать Metal, и я скоро буду) и рендерить их в другое окно. Не все подчеркивания видны. Те, что находятся в начале файла, отсутствуют. Те к концу файла правильны.

Текст может быть довольно длинным, более 5000 строк. Если я удаляю фрагмент текста из середины файла, подчеркивания в начале файла отображаются правильно в представлении OpenGL. Вот почему у меня есть клон NSTextView перед операцией, в противном случае это занимает так много времени, что это мешает пользователю редактировать NSTextView в окне.

Я просмотрел атрибуты один за другим, и они всегда одинаковы, как в начале, так и в конце файла, а также в тех случаях, когда подчеркивания видны и не видны в моем окне OpenGL.

Как я уже говорил выше, все остальные текстовые атрибуты всегда корректны.

Источником текста является либо файл RTF, либо вставленный из другого приложения, либо введенный непосредственно в NSTextView. Независимо от источника, поведение одинаково.

0 ответов

Другие вопросы по тегам