web-dev-qa-db-ja.com

iOS13が段落<p>のNSAttributedString内のfont-familyを変更する理由

私のアプリケーションはNSAttributedStringを使用してユーザーにテキストを表示します。このテキストのほとんどは、段落のHTMLタグ(<p>)。タグ内にある場合、フォントファミリーは一部のTimesスタイルに変更されます。
この問題は、新しいバージョンのiOS 13で発生する前に発生していました。

この画像では、通常のフォントと変更されたフォントが表示されます。

タグ: https://imgur.com/a/YY3Gdph

ソリューションをどこから探し始めるかわかりません。

let font = UIFont.preferredFont(forTextStyle: .body)
let strDesc: String = "\(explanation)\n"
let newStringDesc = strDesc.replacingOccurrences(of: "</ul>", with: "</ul><br>")

let modifiedString = "<style>body{font-family: '\(font.fontName)'; font-size:\(font.pointSize)px;}</style>\(strDesc)"
guard let data = modifiedString.data(using: .utf8) else { return nil }

let attrString = try NSMutableAttributedString(
    data: data,
    options: [
              NSAttributedString.DocumentReadingOptionKey.documentType: NSAttributedString.DocumentType.html,

NSAttributedString.DocumentReadingOptionKey.characterEncoding: String.Encoding.utf8.rawValue,
                ],
    documentAttributes: nil
)
attrString.addCustomParagraphSettings(font: font)
attrString.setCustomParagraphFontColor()

let mainAttributedText = NSMutableAttributedString()

mainAttributedText.append(attrString)
mainAttributedText.append(tmpTakenText)
descriptionTextView.attributedText = mainAttributedText

標準のiOSフォントが表示されることを期待しています。

6

@Larmeがコードにバグを見つけました。 font-family CSSプロパティの値は、font.familyNameではなくfont.fontNameにする必要があります。

1