Размер шрифта Swift AttributedString изменяется на .76666 (повторяющийся) при сохранении в RTF через NSAttributedString

iOS 16.2. X-код 14.2.
Блок ниже представляет собой простое создание и сохранение AttributedString.
Две функции AttributedExtensions для пользовательского append() и Bold().
Текст сохраняется как файл RTF с использованием NSAttributedString.
Я удалил проверку ошибок.

      var atr = AttributedString()
        
atr.append("Text 18\n", fontSize: 18)
atr.append(AttributedString.Bold("Bold Text 24", fontSize: 24)!)
        
    
if let rtfURL = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false).appendingPathComponent("file.rtf") {
    let nsa = NSAttributedString(atr)
    let data = try! nsa.data(from: NSRange(location: 0, length: nsa.length), documentAttributes: [NSAttributedString.DocumentAttributeKey.documentType : NSAttributedString.DocumentType.rtf])
    try data.write(to: url, options: Data.WritingOptions.atomic)
}
      extension AttributedString {
    mutating func append(_ s: String, fontName: String = "Helvetica", fontSize: CGFloat = 12, colour: UnvColour = .black) {
#if os(macOS)
        guard let font = NSFontManager.shared.font(withFamily: fontName, size: fontSize) else { return }
#else
        guard let font = UIFont(name: fontName, size: fontSize) else { return }
#endif
        let cont = AttributeContainer([NSAttributedString.Key.font : font, NSAttributedString.Key.foregroundColor : colour] )
        self.append(AttributedString(s, attributes: cont))
    }

static func Bold(_ s: String, colour: UnvColour = .black, fontName: String = "Helvetica", fontSize: CGFloat = 12) -> AttributedString? {
        if s.isEmpty { return AttributedString(s) }
#if os(macOS)
        guard let bold = NSFontManager.shared.font(withFamily: fontName, traits: .boldFontMask, weight: 5, size: fontSize) else { return nil }
#else
        
        guard let bold = UIFont(name: fontName, size: fontSize) else { return nil }
#endif
        let boldCont = AttributeContainer([NSAttributedString.Key.font : bold, NSAttributedString.Key.foregroundColor : colour] )
        var ab = AttributedString(s)
        ab.setAttributes(boldCont)
        return ab
    }
}

Когда файл сохраняется и открывается с помощью TextEdit, размеры шрифта масштабируются на 0,76666666666 (повторяющееся). Размер 18pt теперь равен 13,8pt, а 24pt — 18,4pt.

Отладчик показывает размеры шрифта 24 и 18 перед сохранением.

Это происходит на устройстве iPad и симуляторе iPhone.

Кто-нибудь видел это раньше?

0 ответов

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