Template:图书排版/styles.css:修订间差异

删除的内容 添加的内容
小无编辑摘要
字体别名改为混合方案(正文黑体 + 标题宋体)
第1行:
/* ===== 字体别名:中混合方案(正文黑体 + 标点走全角字题宋体(修复引号贴字)===== */
 
/* --- 标点层:正文黑体标点 --- */
@font-face {
font-family: "TemplateStyles CJKTushu Punct Hei";
src: local("Noto-Serif-SC-MediumMicrosoft YaHei UI"), local("Noto Serif SCMicrosoft MediumYaHei"),
local("Source Han SerifPingFang SC"), local("SongtiHiragino SCSans GB"),
local("STSong"),WenQuanYi local("SimSun"),Micro local("宋体"), local("Microsoft YaHei UIHei");
unicode-range: U+2000-206F, U+3000-303F;
}
 
/* --- 标点层:标题宋体标点 --- */
@font-face {
font-family: "TemplateStylesTushu CJKPunct BodySong";
src: local("Noto-Serif-Songti SC-Medium"), local("NotoSTSong"), Seriflocal("SimSun"), SC Mediumlocal("宋体"),
local("Noto-Serif-Kaiti SC-Regular"), local("NotoSTKaiti"), Serif SC Regularlocal("KaiTi"),;
unicode-range: U+2000-206F, U+3000-303F;
local("Songti SC"), local("SongtiSC-Regular"), local("STSong"),▼
}
local("SimSun"), local("宋体"),▼
 
local("PingFang SC Regular"), local("PingFang SC"), local("PingFangSC-Regular"),▼
/* --- 正文层:基本汉字 + 扩展 A(黑体) --- */
local("Hiragino Sans GB"), local("HiraginoSansGB-W3"),▼
@font-face {
local("Microsoft YaHei UI"), local("Microsoft YaHei"),▼
font-family: "Tushu Body Hei";
local("WenQuanYi Micro Hei"), local("ST Heiti");▼
▲ src: local("Microsoft YaHei UI"), local("Microsoft YaHei"),
local("PingFang SC"), local("Hiragino Sans GB"),
▲ local("SimSunSimHei"), local("宋黑体"),
▲ local("WenQuanYi Micro Hei"), local("STWenQuanYi HeitiZen Hei");
unicode-range: U+2E80-2EFF, U+31C0-31EF, U+3200-32FF,
U+3400-4DBF, U+4E00-9FFF, U+F900-FAFF, U+FE10-FE6F, U+FF00-FFEF,
U+1F200-1F2FF, U+20000-2A6DF;
}
 
/* --- 标题层:基本汉字 + 扩展 A(宋体) --- */
@font-face {
font-family: "Tushu Body Song";
src: local("Songti SC"), local("STSong"), local("SimSun"), local("宋体"),
local("Noto-Serif-SC-Medium"), local("Noto Serif SC Medium"),
▲ local("PingFang Noto-Serif-SC -Regular"), local("PingFangNoto Serif SC"), local("PingFangSC-Regular"),
local("Source Han Serif SC"), local("SourceHanSerifSC-Regular"),
▲ local("SongtiKaiti SC"), local("SongtiSC-RegularSTKaiti"), local("STSongKaiTi"),;
unicode-range: U+2E80-2EFF, U+31C0-31EF, U+3200-32FF,
U+3400-4DBF, U+4E00-9FFF, U+F900-FAFF, U+FE10-FE6F, U+FF00-FFEF,
U+1F200-1F2FF;
}
 
/* --- 正文扩展层:扩展 B(思源黑体) --- */
@font-face {
font-family: "Tushu ExtB Hei";
src: local("Source Han Sans SC"), local("SourceHanSansSC-Regular"),
▲ local("HiraginoNoto Sans GBCJK SC"), local("HiraginoSansGB-W3Microsoft YaHei UI"),;
unicode-range: U+20000-2A6DF;
}
 
/* --- 标题扩展层:扩展 B(宋体/古籍字体) --- */
@font-face {
font-family: "Tushu ExtB Song";
src: local("SimSun-ExtB"), local("PMingLiU-ExtB"), local("MingLiU-ExtB"),
local("Source Han Serif SC"), local("Noto Serif CJK SC"),
local("HanaMinA"), local("HanaMinB");
unicode-range: U+20000-2A6DF;
}
 
/* --- 正文扩展层:扩展 C-G(思源黑体) --- */
@font-face {
font-family: "Tushu ExtRare Hei";
src: local("Source Han Sans SC"), local("Noto Sans CJK SC"),
local("BabelStone Han");
unicode-range: U+2A700-2B73F, U+2B740-2B81F, U+2B820-2CEAF,
U+2CEB0-2EBEF, U+2EBF0-2EE5F,
U+2F800-2FA1F, U+30000-3134F, U+31350-323AF;
}
 
/* --- 标题扩展层:扩展 C-G(SimSun-ExtG + 花園明朝/思源宋) --- */
@font-face {
font-family: "Tushu ExtRare Song";
src: local("SimSun-ExtG"), local("SimSun-ExtB"),
local("HanaMinA"), local("HanaMinB"),
local("Source Han Serif SC"), local("Noto Serif CJK SC"),
local("BabelStone Han");
unicode-range: U+2A700-2B73F, U+2B740-2B81F, U+2B820-2CEAF,
U+2CEB0-2EBEF, U+2EBF0-2EE5F,
U+2F800-2FA1F, U+30000-3134F, U+31350-323AF;
}
 
第64行 ⟶ 第124行:
margin-top:12px
}
 
.heti--serif {
font-family:"TemplateStyles CJKTushu Punct Song","Songti SC","SimSun","Noto Serif SC",Georgia,"PMingLiU","PMingLiu-ExtB","SimSun-ExtB",新細明體,"HanaMinA","HanaMinB",serif
}
.heti--classic {
font-family:"TemplateStyles CJKTushu Punct Song","Songti SC","SimSun","Noto Serif SC",Georgia,"PMingLiU","PMingLiu-ExtB","SimSun-ExtB",新細明體,"HanaMinA","HanaMinB",serif
}
.heti--classic h1, .heti--classic h2, .heti--classic h3, .heti--classic h4, .heti--classic h5, .heti--classic h6 {
font-family:"TemplateStyles CJKTushu Punct Song","Kaiti SC","STKaiti","KaiTi",Georgia,serif;font-weight:800
}
.heti--classic blockquote, .heti--classic cite, .heti--classic q {
font-family:"TemplateStyles CJKTushu Punct Song","Kaiti SC","STKaiti","KaiTi",Georgia,serif
}
.heti--classic figcaption, .heti--classic caption, .heti--classic th {
font-family:"TemplateStyles CJKTushu Punct Song","TemplateStyles CJKTushu Body Song",Georgia,-apple-system,"Nimbus Roman No9 L","Noto Serif SC","Songti SC","SimSun","PingFang SC","Hiragino Sans GB","Microsoft YaHei UI","WenQuanYi Micro Hei","ST Heiti","PMingLiU","PMingLiu-ExtB","SimSun-ExtB",新細明體,"HanaMinA","HanaMinB",sans-serif
}
.heti--hei {
font-family:"TemplateStyles CJKTushu Punct Hei","TemplateStyles CJKTushu Body Hei",Georgia,-apple-system,"Nimbus Roman No9 L","Noto Serif SC","Songti SC","SimSun","PingFang SC","Hiragino Sans GB","Microsoft YaHei UI","WenQuanYi Micro Hei","ST Heiti","PMingLiU","PMingLiu-ExtB","SimSun-ExtB",新細明體,"HanaMinA","HanaMinB",sans-serif
}
.heti--song {
font-family:"TemplateStyles CJKTushu Punct Song","Songti SC","SimSun","Noto Serif SC",Georgia,"PMingLiU","PMingLiu-ExtB","SimSun-ExtB",新細明體,"HanaMinA","HanaMinB",serif
}
.heti--kai {
font-family:"TemplateStyles CJKTushu Punct Song","Kaiti SC","STKaiti","KaiTi",Georgia,serif
}
.heti--columns-1, .heti--columns-2, .heti--columns-3, .heti--columns-4, .heti--columns-16em, .heti--columns-20em, .heti--columns-24em, .heti--columns-28em, .heti--columns-32em, .heti--columns-36em, .heti--columns-40em, .heti--columns-44em, .heti--columns-48em {
第144行 ⟶ 第203行:
}
.heti--ancient, .heti--poetry {
font-family:"TemplateStyles CJKTushu Punct Song","Songti SC","SimSun","Noto Serif SC",Georgia,"PMingLiU","PMingLiu-ExtB","SimSun-ExtB",新細明體,"HanaMinA","HanaMinB",serif
}
.heti--ancient h1, .heti--ancient h2, .heti--ancient h3, .heti--ancient h4, .heti--ancient h5, .heti--ancient h6, .heti--poetry h1, .heti--poetry h2, .heti--poetry h3, .heti--poetry h4, .heti--poetry h5, .heti--poetry h6 {
font-family:"TemplateStyles CJKTushu Punct Song","Kaiti SC","STKaiti","KaiTi",Georgia,serif;font-weight:800;text-align:center
}
.heti--ancient h1 .heti-meta, .heti--ancient h2 .heti-meta, .heti--ancient h3 .heti-meta, .heti--ancient h4 .heti-meta, .heti--ancient h5 .heti-meta, .heti--ancient h6 .heti-meta, .heti--poetry h1 .heti-meta, .heti--poetry h2 .heti-meta, .heti--poetry h3 .heti-meta, .heti--poetry h4 .heti-meta, .heti--poetry h5 .heti-meta, .heti--poetry h6 .heti-meta {
第156行 ⟶ 第215行:
position:absolute;line-height:inherit;text-indent:0;display:inline;margin-top:4px;margin-left:8px
}
 
}
.heti--ancient .heti-meta, .heti--poetry .heti-meta {
第203行 ⟶ 第261行:
}
.heti-list-han {
 
}
.heti-list-han ol {
第212行 ⟶ 第269行:
}
.heti-fn {
margin-top:59px;border-top:1px solid;border-top-color:#ccc;font-size:0.8em;font-family:"TemplateStyles CJKTushu Punct Song","TemplateStyles CJKTushu Body Song",Georgia,-apple-system,"Nimbus Roman No9 L","Noto Serif SC","Songti SC","SimSun","PingFang SC","Hiragino Sans GB","Microsoft YaHei UI","WenQuanYi Micro Hei","ST Heiti","PMingLiU","PMingLiu-ExtB","SimSun-ExtB",新細明體,"HanaMinA","HanaMinB",sans-serif;line-height:24px
}
.heti-fn ol {
第226行 ⟶ 第283行:
样式独立在 Template:着重/styles.css),着重号因此不再依赖本样式表。
旧写法 <span class="heti-em"> 不再生效,请改用 {{着重|字}}。 */
/* ===== 基础正文排版(自 heti 字号阶梯)===== *//* ===== 页面底色与文字色(站点原有)===== *//* ===== 中文标点与中文字体别名 ===== *//* ===== 正文与标题字体栈(引号走全角字混合方案:正文黑体,标题宋体)===== */
h1, h2, h3, h4, h5, h6 {
font-family: "TemplateStyles CJKTushu Punct Song","TemplateStyles CJKTushu Body Song","Tushu ExtB Song","Tushu ExtRare Song",Georgia,-apple-system,"Nimbus Roman No9 L","Noto Serif SC","Songti SC","SimSun","PingFang SC","Hiragino Sans GB","Microsoft YaHei UI","WenQuanYi Micro Hei","ST Heiti","PMingLiU","PMingLiu-ExtB","SimSun-ExtB",新細明體,"HanaMinA","HanaMinB",sans-serif;
font-weight: 600700;
}
h2, h3, h4, h5, h6 { font-weight: bold; }
p { text-indent: 2em; }
p:not(:lang(zh)) { text-align: start; text-indent: 0; }
/* ===== 正文段落(仅 p)p,黑体栈)===== */▼
 
▲/* ===== 正文段落(仅 p)===== */
p {
font-size: 1.25rem; /* 20px(1.25 × 根字号 16px);原为固定 17px */
第245行 ⟶ 第301行:
text-indent: 2em;
color: #202122;
font-family: "TemplateStyles CJKTushu Punct Hei","TemplateStyles CJKTushu Body Hei","Tushu ExtB Hei","Tushu ExtRare Hei",Georgia,-apple-system,"Nimbus Roman No9 L","Noto Serif SC","Songti SC","SimSun","PingFang SC","Hiragino Sans GB","Microsoft YaHei UI","WenQuanYi Micro Hei","ST Heiti","PMingLiU","PMingLiu-ExtB","SimSun-ExtB",新細明體,"HanaMinA","HanaMinB",sans-serif;
}
p:not(:lang(zh)) {
第251行 ⟶ 第307行:
text-indent: 0;
}
/* ===== 标题(仅 h1-h6)h6,宋体栈)===== */▼
 
▲/* ===== 标题(仅 h1-h6)===== */
h1, h2, h3, h4, h5, h6 {
color: #202122;
font-family: "TemplateStyles CJKTushu Punct Song","TemplateStyles CJKTushu Body Song","Tushu ExtB Song","Tushu ExtRare Song",Georgia,-apple-system,"Nimbus Roman No9 L","Noto Serif SC","Songti SC","SimSun","PingFang SC","Hiragino Sans GB","Microsoft YaHei UI","WenQuanYi Micro Hei","ST Heiti","PMingLiU","PMingLiu-ExtB","SimSun-ExtB",新細明體,"HanaMinA","HanaMinB",sans-serif;
}
 
/* ===== 2026-09 补齐(依据 scripts/survey-heti.js --diff)==============================
1) heti 官方有而本站缺的 5 个类(.heti 容器类本体有意不引入,理由见 content/tushu/DESIGN.md §2);
第277行 ⟶ 第331行:
margin-inline-start:.25em
}
 
/* 正文行宽 —— 参考 Wikisource SKQS 的 .skqs-body(max-width:42em + 居中);
heti 的 $line-length 也是 42em(两处独立收敛到同一值)。由 {{图书排版|限宽}} 触发。 */
第284行 ⟶ 第337行:
margin-inline: auto;
}
 
/* 楷体字体栈 —— 取自 Wikisource [[Template:楷體/style.css]] 的完整栈;
删去本站不会命中的 :lang(zh-tw)/(zh-hk)/(zh-mo) 变体覆盖(本站只有 zh/zh-hans/zh-hant)。 */
.heti--kai, .heti--kai p {
font-family: "TemplateStyles CJKTushu Punct Song", Times, "Kaiti SC", 楷体, KaiTi, 楷体_GB2312, 华文楷体, STKaiti, "Kaiti TC", 標楷體, DFKai-SB, "TW-Kai", 全字庫正楷體, serif;
}
 
/* 楷体字号:楷体字形偏小(笔画细、中宫宽),同字号下视觉上小于宋体,
故放大 1.2em(正文为 1.25rem 时即 24px)。用相对值,改正文字号时自动跟随。
第298行 ⟶ 第349行:
font-size: 1.2em;
}
 
/* 诗词 + 多栏、以及 <poem> 的缩进/对齐,统一由下方 .tushu-body 作用域的规则处理
(原先这里有两条「版式类 + p」的规则,特异性与 .tushu-body 版相同且被其覆盖,已合并) */
 
/* ===== <poem> 在图书排版容器内自动套用诗排版(2026-09)=========================
Poem 扩展的 <poem> 只负责“"把换行变成 <br>”,",本身不带任何诗排版。
此前要居中和不缩进必须额外写 |诗词;现在只要放在 {{图书排版}} 的容器里,
<poem> 的诗行就自动居中、不缩进,可省去 |诗词 参数。
第313行 ⟶ 第362行:
text-indent: 0;
}
 
/* ===== 嵌套版式:诗词容器内的段落一律居中且不缩进(2026-09)======================
问题场景:外层用 |行间注(或 |古籍)套住内层 |诗词 时,两个版式类都命中同一个 <p>,
特异性相同(0,1,1),胜负由 CSS 顺序决定——而 .heti--annotation p 的 text-indent:2em
在样式表里更靠后,会覆盖诗词的 text-indent:0,使居中的文本首行右移 2em,
看起来就像“"没居中”"。
用「.tushu-body + 版式类 + p」(0,2,1)提升特异性,保证诗词容器内的段落
一定是居中且不缩进,不再受外层版式影响。
第326行 ⟶ 第374行:
text-indent: 0;
}
 
/* |诗栏(诗词 + 多栏):分栏时诗句改为左对齐。多栏每栏本就窄,居中的诗行左右参差
反而难读;标题仍继承 .heti--poetry 的居中(只针对 p,不动 h1–h6)。 */
第335行 ⟶ 第382行:
text-indent: 0;
}
 
/* ===== 多栏内顶部外边距归零(2026-09)==========================================
多栏里 CSS 无法选中“"每一栏的首元素”,",而各块级元素自带的 margin-top 不同
(h2 是 24px、p 是 6px),导致两栏起始位置错开。把多栏内所有直接子元素的
margin-top 归零,各栏即从同一基线开始;段间距改由 margin-bottom 承担。
第347行 ⟶ 第393行:
margin-top: 0;
}
 
/* ===== 基础容器 ================================================================
.tushu-body 由 Module:图书排版 **总是**输出(无参数时也输出),但本身不设任何样式。