From 4c028c54da56c1117a18bf83b7c9b6afa0e698d2 Mon Sep 17 00:00:00 2001 From: Caitlye <57263725+LyundipLye@users.noreply.github.com> Date: Thu, 22 Oct 2026 20:21:40 +0100 Subject: [PATCH] =?UTF-8?q?=E8=AE=AD=E7=82=B9=EF=BC=9A=E7=AB=96=E6=8E=92?= =?UTF-8?q?=E5=88=86=E5=B8=A6=E4=B8=8D=E5=86=8D=E7=95=99=E5=8D=95=E5=88=97?= =?UTF-8?q?=EF=BC=88=E6=B5=A3=E6=BA=AA=E6=B2=99=20390=20=E5=AE=BD=E7=BB=93?= =?UTF-8?q?=E5=8F=A5=E5=AD=A4=E5=88=97=E7=AD=89=2022=20=E5=A4=84=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 渲染器 bandKanbunColumns:一带排满后若只剩一列,先在带内的片间断点换带(断点距带头至少两列);带内没有片间断点时,从满带让一列给末带 - 全站 16 个日文页 × 7 种宽度共 224 个训点框,改动 22 处,单列带由 22 处降为 0;浣溪沙 390 宽改为上片一带、下片一带 - 新增 qa:poetry-kunten-bands:16 页 × 7 种宽度全扫,断言无单列带,并钉住浣溪沙 390 宽按片分带;多行检查(Chromium、WebKit × 4 种宽度)同加单列带断言 - 同步更新 docs/poetry-kunten-renderer.md;渲染器指纹随生成页更新 --- assets/kanbun-viewer/kanbun-render.js | 12 ++- .../chaozhongcuo-20181023-revised-202610.html | 2 +- .../fengrusong-20181102-revised-202610.html | 2 +- .../works/huanxisha-20261020-text.html | 2 +- .../kanbun-viewer/works/jia-yi-a1-text.html | 2 +- .../kanbun-viewer/works/jia-yi-a10-text.html | 2 +- .../kanbun-viewer/works/jia-yi-a2-text.html | 2 +- .../kanbun-viewer/works/jia-yi-a3-text.html | 2 +- .../kanbun-viewer/works/jia-yi-a4-text.html | 2 +- .../kanbun-viewer/works/jia-yi-a5-text.html | 2 +- .../kanbun-viewer/works/jia-yi-a6-text.html | 2 +- .../kanbun-viewer/works/jia-yi-a7-text.html | 2 +- .../kanbun-viewer/works/jia-yi-a8-text.html | 2 +- .../kanbun-viewer/works/jia-yi-a9-text.html | 2 +- .../kanbun-viewer/works/jia-yi-b1-text.html | 2 +- .../kanbun-viewer/works/jia-yi-b2-text.html | 2 +- .../kanbun-viewer/works/jia-yi-b3-text.html | 2 +- .../kanbun-viewer/works/jia-yi-b4-text.html | 2 +- .../kanbun-viewer/works/jia-yi-b5-text.html | 2 +- .../kanbun-viewer/works/jia-yi-b6-text.html | 2 +- .../kanbun-viewer/works/jia-yi-b7-text.html | 2 +- .../linjiangxian-20180108-revised-202610.html | 2 +- .../works/linjiangxian-20260909-text.html | 2 +- ...njiangxianyin-20191028-revised-202610.html | 2 +- .../works/manjianghong-2022-echo-202610.html | 2 +- .../works/manjianghong-2022-sewn-202610.html | 2 +- .../manjianghong-rereading-202610-text.html | 2 +- .../mantingfang-20191219-revised-202610.html | 2 +- .../works/pusaman-20261021-text.html | 2 +- .../queqiaoxian-20181222-revised-202610.html | 2 +- .../works/yingtianchang-20261008-text.html | 2 +- .../works/zhegutian-20260909-text.html | 2 +- .../works/zhegutian-20261017-text.html | 2 +- docs/poetry-kunten-renderer.md | 7 +- ja/poetry/chaozhongcuo-20181023/index.html | 2 +- ja/poetry/fengrusong-20181102/index.html | 2 +- ja/poetry/huanxisha-20261020/index.html | 2 +- ja/poetry/jia-yi/index.html | 34 ++++---- ja/poetry/linjiangxian-20180108/index.html | 2 +- ja/poetry/linjiangxian-20260909/index.html | 2 +- ja/poetry/linjiangxianyin-20191028/index.html | 2 +- ja/poetry/manjianghong-2022/index.html | 4 +- .../manjianghong-rereading-202610/index.html | 2 +- ja/poetry/mantingfang-20191219/index.html | 2 +- ja/poetry/pusaman-20261021/index.html | 2 +- ja/poetry/queqiaoxian-20181222/index.html | 2 +- ja/poetry/september-2026/index.html | 4 +- ja/poetry/yingtianchang-20261008/index.html | 2 +- ja/poetry/zhegutian-20260909/index.html | 2 +- ja/poetry/zhegutian-20261017/index.html | 2 +- package.json | 3 +- tools/poetrykuntenbandcheck.mjs | 86 +++++++++++++++++++ tools/poetrykuntenmultilinecheck.mjs | 5 ++ 53 files changed, 175 insertions(+), 70 deletions(-) create mode 100644 tools/poetrykuntenbandcheck.mjs diff --git a/assets/kanbun-viewer/kanbun-render.js b/assets/kanbun-viewer/kanbun-render.js index aa642a0..d136189 100644 --- a/assets/kanbun-viewer/kanbun-render.js +++ b/assets/kanbun-viewer/kanbun-render.js @@ -209,7 +209,10 @@ // Lays the body columns into bands right to left for root's current // font size and width cap, wrapping only between columns. A band ends // at a stanza break when that costs at most STANZA_PULL columns; a - // blank stanza column is not set at the edge of a band. + // blank stanza column is not set at the edge of a band. No band is + // left holding a single column (2026-10-22): when a full band would + // leave one column over, the band ends at its stanza break, or, with + // no stanza break in it, hands one column on to the last band. function bandKanbunColumns(root) { const body = root.kanbunBody; const text = root.querySelector(':scope > .kanbun-text'); @@ -248,6 +251,13 @@ if (body[start + t].dataset.kanbunColumn === 'gap') { take = t; break; } } } + if (body.slice(start + take).filter(c => c.dataset.kanbunColumn !== 'gap').length === 1) { + let broken = false; + for (let t = take - 1; t >= 2; t--) { + if (body[start + t].dataset.kanbunColumn === 'gap') { take = t; broken = true; break; } + } + if (!broken && take > 1) take -= 1; + } let list = body.slice(start, start + take); while (list.length && list[list.length - 1].dataset.kanbunColumn === 'gap') list.pop(); const band = document.createElement('div'); diff --git a/assets/kanbun-viewer/works/chaozhongcuo-20181023-revised-202610.html b/assets/kanbun-viewer/works/chaozhongcuo-20181023-revised-202610.html index 77f72bb..dbe3b02 100644 --- a/assets/kanbun-viewer/works/chaozhongcuo-20181023-revised-202610.html +++ b/assets/kanbun-viewer/works/chaozhongcuo-20181023-revised-202610.html @@ -7,7 +7,7 @@