|
- 生僻字自动往后掉:SimSun-ExtB → SimSun-ExtG → Jigmo → HanaMin
参考 ctext.org 的长栈逻辑,结合本站的标点分区方案。
(宋体/楷体栈的西文用 Georgia——与衬线中文协调;黑体栈的西文用 Verdana/Arial——与黑体协调)
========================================================== */
"Jigmo3", "Jigmo2", "Jigmo", "HanaMinA", "HanaMinB",
serif
}
.heti--classic {
font-family:"TemplateStyles CJK Punct", Georgia, ▼
"SimSun", "Songti SC", "Noto Serif SC", ▼
"PMingLiU", "PMingLiu-ExtB", "SimSun-ExtB", "SimSun-ExtG", 新細明體, ▼
"Jigmo3", "Jigmo2", "Jigmo", "HanaMinA", "HanaMinB", ▼
}
.heti--classic h1, .heti--classic h2, .heti--classic h3, .heti--classic h4, .heti--classic h5, .heti--classic h6 { ▼
font-family:"TemplateStyles CJK Punct", Georgia,
"Kaiti SC", "STKaiti", "KaiTi",
serif;font-weight:800
}
.heti--classic blockquote, .heti--classic cite, .heti--classic q {
font-family:"TemplateStyles CJK Punct", Georgia,
"Kaiti SC", "STKaiti", "KaiTi",
serif
}
.heti--classic figcaption, .heti--classic caption, .heti--classic th {
font-family:"TemplateStyles CJK Punct", Verdana, Arial, Helvetica, -apple-system,
"PingFang SC", "Microsoft YaHei", "Hiragino Sans GB",
"SimSun", "SimSun-ExtB", "SimSun-ExtG",
"Jigmo3", "Jigmo2", "Jigmo", "HanaMinA", "HanaMinB",
sans-serif
}
.heti--hei {
font-family:"TemplateStyles CJK Punct", Verdana, Arial, Helvetica, -apple-system,
"PingFang SC", "Microsoft YaHei", "Hiragino Sans GB",
"SimSun", "SimSun-ExtB", "SimSun-ExtG",
"Jigmo3", "Jigmo2", "Jigmo", "HanaMinA", "HanaMinB",
sans-serif
}
.heti--song {
column-width:48em
}
.heti--verticalpoetry {
▲ font-family:"TemplateStyles CJK Punct", Georgia,
max-width:none;max-height:42em;writing-mode:vertical-rl;letter-spacing:.125em
▲ "SimSun", "Songti SC", "Noto Serif SC",
▲ "PMingLiU", "PMingLiu-ExtB", "SimSun-ExtB", "SimSun-ExtG", 新細明體,
▲ "Jigmo3", "Jigmo2", "Jigmo", "HanaMinA", "HanaMinB",
}
/* 诗词标题:2026-09 起不再用楷体(楷体版式已整体移除),改为继承容器的宋体栈,仍居中加粗。 */
.heti--vertical h1, .heti--vertical h2, .heti--vertical h3, .heti--vertical h4, .heti--vertical h5, .heti--vertical h6 {
▲.heti-- classicpoetry h1, .heti-- classicpoetry h2, .heti-- classicpoetry h3, .heti-- classicpoetry h4, .heti-- classicpoetry h5, .heti-- classicpoetry h6 {
text-align:start
seriffont-family:inherit;font-weight:800;text-align:center ▼
}
.heti-- ancientpoetry h1 , .heti- -ancient h2meta, .heti-- ancientpoetry h3,h2 .heti- -ancient h4meta, .heti-- ancientpoetry h5,h3 .heti- -ancient h6meta, .heti--poetry h1,h4 .heti- -poetry h2meta, .heti--poetry h3,h5 .heti- -poetry h4meta, .heti--poetry h5,h6 .heti- -poetry h6meta { ▼
.heti--vertical q {
quotes:"「" "」" "『" "』"
}
.heti--ancient, .heti--poetry {
font-family:"TemplateStyles CJK Punct", Georgia,
"SimSun", "Songti SC", "Noto Serif SC",
"PMingLiU", "PMingLiu-ExtB", "SimSun-ExtB", "SimSun-ExtG", 新細明體,
"Jigmo3", "Jigmo2", "Jigmo", "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 CJK Punct", Georgia,
"Kaiti SC", "STKaiti", "KaiTi",
▲ 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 {
font-weight:400
}
@media screen and (min-width: 640px){
.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 {
position:absolute;line-height:inherit;text-indent:0;display:inline;margin-top:4px;margin-left:8px
}
}
.heti--ancient .heti-meta, .heti--poetry .heti-meta {
line-height:24px;text-align:center;text-indent:0
}
.heti--ancient p {
text-indent:2em
}
.heti--poetry p {
/* ===== 2026-09 补齐(依据 scripts/survey-heti.js --diff)==============================
1) heti 官方有而本站缺的 5 个标点/间距类(.heti 容器类本体有意不引入,理由见 content/tushu/DESIGN.md §2);
2) 参考 Wikisource SKQS 的两项:正文行宽、楷体字体栈。
(.heti--sans、.heti--hei 两个黑体类已于 2026-09 连同「黑体」参数一并移除。)
================================================================================== */
.heti--sans {
font-family:"Helvetica Neue",helvetica,arial,"Heti Hei",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"
}
.heti-adjacent-half {
margin-inline-end:-0.5em
}
/* 楷体字体栈 —— 取自 Wikisource [[Template:楷體/style.css]] 的完整栈;
删去本站不会命中的 :lang(zh-tw)/(zh-hk)/(zh-mo) 变体覆盖(本站只有 zh/zh-hans/zh-hant)。 */
.heti--kai, .heti--kai p {
font-family: "TemplateStyles CJK Punct", Times,
"Kaiti SC", 楷体, KaiTi, 楷体_GB2312, 华文楷体, STKaiti,
"Kaiti TC", 標楷體, DFKai-SB, "TW-Kai", 全字庫正楷體,
serif;
}
/* 楷体字号:楷体字形偏小(笔画细、中宫宽),同字号下视觉上小于宋体,
故放大 1.2em(正文为 1.25rem 时即 24px)。用相对值,改正文字号时自动跟随。
注意必须写在 .heti--kai p 上——p 有自己的固定字号(1.25rem,不继承容器),
写在容器 .heti--kai 上对它无效。 */
.heti--kai p {
font-size: 1.2em;
}
/* 诗词 + 多栏、以及 <poem> 的缩进/对齐,统一由下方 .tushu-body 作用域的规则处理
}
/* ===== 嵌套版式:诗词容器内的段落一律居中且不缩进(2026-09)==============================
问题场景:外层用 |行间注(或 |古籍)套住内层 |诗词 时,两个版式类都命中同一个 <p>,
特异性相同(0,1,1),胜负由 CSS 顺序决定——而 .heti--annotation p 的 text-indent:2em
在样式表里更靠后,会覆盖诗词的 text-indent:0,使居中的文本首行右移 2em, ▼
看起来就像“没居中”。
用「.tushu-body + 版式类 + p」(0,2,1)提升特异性,保证诗词容器内的段落
一定是居中且不缩进,不再受全局或外层版式规则影响。(原先 |古籍/|行间注 与 |诗词 嵌套时,
▲ 在样式表里更靠后,外层规则会覆盖诗词的 text-indent:0,使居中 的文本首行右移 2em,2em)。
============================================================================== */
.tushu-body .heti--poetry p {
}
/* |诗词|双栏(分栏诗词 + 多栏):分栏时诗句改为左对齐。多栏每栏本就窄,居中的诗行左右参差
反而难读;标题仍继承 .heti--poetry 的居中(只针对 p,不动 h1–h6)。 */
.tushu-body .heti--poetry.heti--columns-2 p,
|