說文解字注 swjzz.adb 製作說明
swjzz.adb 是用說文解字注データ(swjz.xml,經韵樓臧版影印本轉錄)重建的段注本資料庫。
2026-10-28 版另做兩件事:用大徐本《說文解字》逐條核對許慎原文(分出 <說文>/<說文異>),
並把說文小篆字型的每個字頭轉成 SVG 放進資料庫,讀者不必安裝字型就看得到篆形。
一眼看資料
| 項目 | 數值 | 說明 |
|---|---|---|
| 檔案 | swjzz.adb,19.5 MB | dbname swjzz、dbtype 2(詞典庫) |
| 行數 | 60,754 | 一行= <字>/<說文>/<段注> 各一行 |
| 卷/部 | 35/542 | 卷=十四篇上下+四篇序;部=部首分節(水部跨兩卷) |
| 字頭 | 10,706 | <字 id img>,caches/字 同名同長(詞典查詢靠它) |
| 說文/說文異 | 16,824/7,499 | 許慎原文;「異」=在大徐本同字條目裡找不到(段改字或古字) |
| 段注 | 23,934 | 段玉裁注,含 <篆>、<注>、<構形> 等行內標記 |
| 小篆字形 | 7,052 個 SVG | 13.85 MB,佔全檔七成;seal/U4E00.svg 這種命名 |
| 詞 | 15,601 種/1,270,941 筆 | 中文逐字索引,可直接搜 |
一、資料來源
| 用途 | 來源 | 授權 |
|---|---|---|
| 正文(經+注) | swjz.xml(cjkvi-dict/kanji-database,四部叢刊系影印本轉錄) | GPL |
| 大徐本說文(核對用) | shuowen.org 開放資料,一字一 JSON | Apache-2.0 |
| 小篆字形 | BeiShiDaShuoWenXiaoZhuan-1.ttf(字型的 cmap 是 Big5 碼) | 作者提供,公開前請確認 |
| 標點(另一顆庫) | 中华典藏网的現代標點本,只借標點、不借字 | 僅供學習 |
swjz.xml 本身已有稀疏句讀(「。」「、」),但沒有書名號;補上標點的版本是 swjzzp.adb,目前沒有上架。
二、標記怎麼分
<說文>:許慎原文(原書大字)。<說文異>:以段注本為底,把每一段拿去大徐本同字條目比對(去標點、異體字歸一), 對不上的標成「異」。逐字統計:說文 16,824、說文異 7,499;另有 1,112 條大徐本沒有這個字頭,無從核對,一律留在<說文>。<段注>:段玉裁注(原書小字),內含<注>(段注裡的小注)、<篆>(篆文標記)。<構形>:原檔用 XML 註解記的 IDS(UCS 沒有的字,如⿰氵㫄),共 863 處。- 結構標籤:
<卷>→<部>→<字>;第十五卷另有<節>/<部目>(540 部首目錄),以及<部數>、<卷數>、<篇末>、<補遺>、<作者>、<出版>。
目錄是卷 → 部 → 字三層;左欄另有「字頭」分頁(<樹 s="$字">,10,706 條)與「全文」(*字)。
三、小篆字形:不必安裝 TTF
字型的 cmap 其實是 Big5 碼(platform 3 / encoding 4 裡放 0x8140、0x81A1…),
一般字型工具會直接判「No valid cmap」。所以我們自己讀 cmap/loca/glyf,
把 Unicode 換成 Big5 再查字形,輪廓轉成 SVG path,每個字頭一個 SVG 放進 resources:
<字 id="w0010010" img="001a-01">一</字><圖 n="seal/U4E00.svg"/>
- 覆蓋:10,660 個字頭中 7,052 有篆形(66%);其餘 3,608 個是字型或 Big5 沒收的罕用字,不加標籤、也不會出現破圖。
- 顯示:SVG 直接 inline 成
<svg>(2026-10-28 起),跟著字色/主題走,滑過放大到 2.4 倍。 - 體積:SVG 共 13.85 MB(平均 2.1 KB/字),是這個庫從 5.4 MB 變成 19.5 MB 的原因。
四、怎麼重建
# 0) 大徐本參考表(比對與字形共用)
bun run ts/tools/shiwen-ref.ts <shuowen data> build\shiwen-ref.json
# 1) 字型 → SVG(只做字頭;產生 build/seal2/*.svg 與 seal-manifest.tsv)
bun run ts/tools/seal-svg.ts --ttf BeiShiDaShuoWenXiaoZhuan-1.ttf --big5 big5.tsv \
--out build\seal2 --chars-from build\heads.txt
# 2) XML → 文字(--ref 分說文/說文異,--seal 插 <圖>)
bun run ts/tools/swjz2adb.ts swjz.xml build\swjz.txt --ref build\shiwen-ref.json --seal build\seal-manifest.tsv
# 3) 打包(第 6 個參數是 resources 目錄)
bun run ts/tools/swjz-pack.ts build\swjz.txt build\swjzz.adb swjzz 說文解字注 build\seal2
完整步驟、踩過的坑與驗收數據見倉庫的 docs/adb/swjzz-steps.md(標記)、
docs/adb/swjzz-seal.md(小篆字形)、docs/adb/pua.md(缺字清單)。
五、限制
- 3,608 個字頭沒有小篆:字型或 Big5 沒有那個字(多為擴充區罕用字)。
說文異不是「段改清單」:判準只是「這一段在大徐本裡找不到」,其中約六成是 1–2 字的用字差異;
要判斷段玉裁到底改了什麼,還是得一條一條看注。
- 12 個字頭只有圖(
(图164A-01)這類,原檔就沒有字),另有 1 個字頭是 U+FFFD。 - 沒有標點:正文保留原檔的稀疏句讀;補標點的版本是
swjzzp.adb(未上架)。 - 字型授權:小篆輪廓取自使用者提供的字型,若要再散布請先確認該字型的授權條款。
六、這一版
- 版本:2026-10-29(小篆 SVG+inline 顯示)
- 下載:
swjzz.adb(19.5 MB) - SHA-256:
05788458ec0f6967e0d8c54929e928ce370d3c839d0907a37a465d6ced4d1b77 - 授權:原書為公有領域;
swjz.xml為 GPL、大徐本資料 Apache-2.0;本庫的增值標記以 CC BY 釋出