Limit H1, H2 to the H3 point size.

This commit is contained in:
Stefan Ceriu
2025-09-09 12:43:10 +03:00
committed by Doug
parent ee3caf5205
commit 69894ece62
2 changed files with 9 additions and 3 deletions

View File

@@ -116,7 +116,7 @@ struct AttributedStringBuilderV2: AttributedStringBuilderProtocol {
switch tag {
case "h1", "h2", "h3", "h4", "h5", "h6":
let level = Int(String(tag.dropFirst())) ?? 1
let level = max(3, Int(String(tag.dropFirst())) ?? 1)
let size: CGFloat = UIFont.systemFontSize + CGFloat(6 - level) * 2
content = attributedString(from: childElement, preserveFormatting: preserveFormatting, listTag: listTag, listIndex: &childIndex, indentLevel: indentLevel)
content.setFontPreservingSymbolicTraits(UIFont.boldSystemFont(ofSize: size))

View File

@@ -35,7 +35,7 @@ class AttributedStringBuilderV1Tests: XCTestCase {
XCTAssertEqual(attributedString.runs.count, 11) // newlines hold no attributes
let pointSizes = attributedString.runs.compactMap(\.uiKit.font?.pointSize)
XCTAssertEqual(pointSizes, [24, 22, 20, 18, 16, 14])
XCTAssertEqual(pointSizes, [23, 23, 23, 21, 19, 17])
} else {
XCTAssert(attributedString.runs.count == 6)
@@ -173,7 +173,13 @@ class AttributedStringBuilderV1Tests: XCTestCase {
return
}
if !AttributedStringBuilder.useNextGenHTMLParser {
if AttributedStringBuilder.useNextGenHTMLParser {
XCTAssertEqual(h1Font, h2Font)
XCTAssertEqual(h2Font, h3Font)
XCTAssert(h1Font.pointSize > UIFont.preferredFont(forTextStyle: .body).pointSize)
XCTAssert(h1Font.pointSize <= 23)
} else {
XCTAssertEqual(h1Font, h2Font)
XCTAssertEqual(h2Font, h3Font)