feat(epub): complete wxread parity scope

This commit is contained in:
shen
2026-05-26 09:19:37 +08:00
parent 23182e8b5a
commit 0e7d952fe5
31 changed files with 2619 additions and 1533 deletions
@@ -28,6 +28,7 @@ public enum RDEPUBStyleSheetBuilder {
let values = cssValues(for: presentation)
let backgroundCSS = presentation.themeBackgroundColor.map { "background: \($0) !important;" } ?? ""
let textCSS = presentation.themeTextColor.map { "color: \($0) !important;" } ?? ""
let columnCountCSS = values.numberOfColumns > 1 ? "-webkit-column-count: \(values.numberOfColumns) !important; column-count: \(values.numberOfColumns) !important;" : ""
return """
html {
@@ -70,6 +71,7 @@ public enum RDEPUBStyleSheetBuilder {
line-height: \(values.lineHeight) !important;
-webkit-column-width: \(values.contentWidth)px !important;
column-width: \(values.contentWidth)px !important;
\(columnCountCSS)
-webkit-column-gap: \(values.columnGap)px !important;
column-gap: \(values.columnGap)px !important;
-webkit-column-fill: auto !important;
@@ -109,6 +111,7 @@ public enum RDEPUBStyleSheetBuilder {
let values = cssValues(for: presentation)
let backgroundCSS = presentation.themeBackgroundColor.map { "background: \($0) !important;" } ?? ""
let textCSS = presentation.themeTextColor.map { "color: \($0) !important;" } ?? ""
let columnCountCSS = values.numberOfColumns > 1 ? "-webkit-column-count: \(values.numberOfColumns) !important; column-count: \(values.numberOfColumns) !important;" : ""
return """
html {
@@ -132,6 +135,7 @@ public enum RDEPUBStyleSheetBuilder {
line-height: \(values.lineHeight) !important;
-webkit-column-width: \(values.contentWidth)px !important;
column-width: \(values.contentWidth)px !important;
\(columnCountCSS)
-webkit-column-gap: \(values.columnGap)px !important;
column-gap: \(values.columnGap)px !important;
-webkit-column-fill: auto !important;
@@ -187,6 +191,7 @@ public enum RDEPUBStyleSheetBuilder {
viewportHeight: String,
contentWidth: String,
columnGap: String,
numberOfColumns: Int,
paddingTop: String,
paddingRight: String,
paddingBottom: String,
@@ -197,14 +202,18 @@ public enum RDEPUBStyleSheetBuilder {
let viewportWidth = max(1, presentation.viewportSize.width)
let viewportHeight = max(1, presentation.viewportSize.height)
let contentInsets = presentation.contentInsets
let contentWidth = max(1, viewportWidth - contentInsets.left - contentInsets.right)
let columnGap = max(0, contentInsets.left + contentInsets.right)
let numberOfColumns = max(1, presentation.numberOfColumns)
let availableWidth = max(1, viewportWidth - contentInsets.left - contentInsets.right)
let totalGap = CGFloat(numberOfColumns - 1) * max(0, presentation.columnGap)
let contentWidth = max(1, (availableWidth - totalGap) / CGFloat(numberOfColumns))
let columnGap = max(0, presentation.columnGap)
return (
viewportWidth: String(format: "%.3f", viewportWidth),
viewportHeight: String(format: "%.3f", viewportHeight),
contentWidth: String(format: "%.3f", contentWidth),
columnGap: String(format: "%.3f", columnGap),
numberOfColumns: numberOfColumns,
paddingTop: String(format: "%.3f", contentInsets.top),
paddingRight: String(format: "%.3f", contentInsets.right),
paddingBottom: String(format: "%.3f", contentInsets.bottom),