diff --git a/public/static/css/phone-image-templates.css b/public/static/css/phone-image-templates.css
index 7940250..c38047a 100644
--- a/public/static/css/phone-image-templates.css
+++ b/public/static/css/phone-image-templates.css
@@ -18,6 +18,20 @@
--pi-font-size-title: calc(26px * var(--pi-font-scale, 1));
--pi-font-size-subtitle: calc(16px * var(--pi-font-scale, 1));
--pi-font-size-small: calc(12px * var(--pi-font-scale, 1));
+}
+
+/*
+ * 字号缩放中间变量局部覆盖
+ * 当 --pi-font-scale 通过 inline style 设置在 #render-preview 或 #render-staging 上时,
+ * 需要在该元素上重新声明中间变量,使其用本地的 --pi-font-scale 重新计算。
+ * 否则中间变量继承 :root 的预计算值(:root 的 --pi-font-scale 始终为 1),缩放不生效。
+ */
+#render-preview,
+#render-staging {
+ --pi-font-size-base: calc(14px * var(--pi-font-scale, 1));
+ --pi-font-size-title: calc(26px * var(--pi-font-scale, 1));
+ --pi-font-size-subtitle: calc(16px * var(--pi-font-scale, 1));
+ --pi-font-size-small: calc(12px * var(--pi-font-scale, 1));
/* 行高 */
--pi-line-height: 1.8;
/* 间距 */
@@ -579,8 +593,8 @@
/* 表格美化样式(html2canvas兼容) */
.page-content table { width: 100%; border-collapse: collapse; margin: 10px 0; font-size: calc(13px * var(--pi-font-scale, 1)); }
-.page-content th { background-color: #f0f0f0; font-weight: bold; padding: 8px 10px; border: 1px solid #ddd; text-align: left; }
-.page-content td { padding: 8px 10px; border: 1px solid #ddd; }
+.page-content th { background-color: #f0f0f0; font-weight: bold; padding: 4px 10px; border: 1px solid #ddd; text-align: left; }
+.page-content td { padding: 4px 10px; border: 1px solid #ddd; }
.page-content tr:nth-child(even) td { background-color: #f9f9f9; }
.content-flow pre {
@@ -607,8 +621,8 @@
/* 中间栏表格样式 */
.content-flow-block table { width: 100%; border-collapse: collapse; margin: 10px 0; font-size: calc(13px * var(--pi-font-scale, 1)); }
-.content-flow-block th { background-color: #f0f0f0; font-weight: bold; padding: 8px 10px; border: 1px solid #ddd; text-align: left; }
-.content-flow-block td { padding: 8px 10px; border: 1px solid #ddd; }
+.content-flow-block th { background-color: #f0f0f0; font-weight: bold; padding: 4px 10px; border: 1px solid #ddd; text-align: left; }
+.content-flow-block td { padding: 4px 10px; border: 1px solid #ddd; }
.content-flow-block tr:nth-child(even) td { background-color: #f9f9f9; }
/* ============================================
@@ -780,7 +794,7 @@ body > .page-header-right .layui-btn:not(.layui-btn-primary):not(.layui-btn-norm
#render-preview {
font-family: var(--pi-font-family);
- font-size: var(--pi-font-size-base);
+ font-size: calc(14px * var(--pi-font-scale, 1));
line-height: var(--pi-line-height);
color: var(--pi-color-text);
}
@@ -858,13 +872,13 @@ body > .page-header-right .layui-btn:not(.layui-btn-primary):not(.layui-btn-norm
#render-preview th {
background-color: #f0f0f0;
font-weight: bold;
- padding: 8px 10px;
+ padding: 4px 10px;
border: 1px solid #ddd;
text-align: left;
}
#render-preview td {
- padding: 8px 10px;
+ padding: 4px 10px;
border: 1px solid #ddd;
}
diff --git a/public/static/js/phone-image.js b/public/static/js/phone-image.js
index 620c53a..92fc3a7 100644
--- a/public/static/js/phone-image.js
+++ b/public/static/js/phone-image.js
@@ -1048,6 +1048,7 @@ var PhoneImageEngine = (function () {
function doCapturePages(opts, pageProgressCallback) {
var deferred = $.Deferred();
ensureStaging();
+ applyFontScale();
var $staging = $('#render-staging');
$staging.empty();
diff --git a/view/admin/post/phone_image.html b/view/admin/post/phone_image.html
index 46758cd..1842f6c 100644
--- a/view/admin/post/phone_image.html
+++ b/view/admin/post/phone_image.html
@@ -11,10 +11,19 @@