本项目收录 15,000 余部 中国古代文献,全部为 Markdown(.md)格式、UTF-8 编码,按传统经史子集之外的「十藏」体系分类组织,便于在线阅读、全文检索与二次开发(如构建古籍语料库、全文数据库、检索系统等)。
本项目文本源自「殆知阁古代文献」数据集,在其基础上整理为 Markdown 格式。
| 分类 | 收录内容 | 文献数 |
|---|---|---|
| 佛藏 | 乾隆藏、嘉兴藏、大藏经、续藏经、藏外佛教文献 | 5,135 |
| 史藏 | 正史、编年、纪事本末、别史、地理、政书、诏令奏议等 | 2,043 |
| 集藏 | 四库别集、文总集、小说、话本、演义、宝卷、谜语等 | 1,948 |
| 道藏 | 正统道藏(洞真、洞玄、洞神、太玄、太平、太清、正一部)、藏外道书 | 1,721 |
| 子藏 | 诸子、兵家、法家、农家、笔记、类书、算法 | 1,463 |
| 医藏 | 历代医经、医案、方书、养生著作 | 911 |
| 儒藏 | 四书、五经、孝经、小学、蒙学、语录等 | 908 |
| 诗藏 | 诗集、词集、诗话、词话、楚辞、汉赋、剧曲、对联 | 776 |
| 艺藏 | 书画、篆刻、音乐、棋技、武术、饮馔、草木鸟兽虫鱼 | 446 |
| 易藏 | 易经及历代注疏、术数 | 343 |
| 合计 | 15,694 |
cinaclassics/
├── 佛藏/ # 佛教典籍
├── 史藏/ # 史部典籍
├── 集藏/ # 集部典籍
├── 道藏/ # 道教典籍
├── 子藏/ # 子部典籍
├── 医藏/ # 医学典籍
├── 儒藏/ # 儒家典籍
├── 诗藏/ # 诗词曲赋
├── 艺藏/ # 艺术典籍
├── 易藏/ # 易学典籍
├── Tools/ # 排版引擎与排版素材(见下文「排版引擎」)
├── 使用须知.md
└── README.md
多数分类下还有二级、三级子目录(如 佛藏/乾隆藏/大乘五大部外重译经/),每个文件为一部完整的著作。
在线阅读:直接在 GitHub 网页上浏览目录并点开任意文件即可阅读。
全文检索:
- 检索正文内容:使用页面顶部的搜索框,输入关键字后选择「In this repository」在本仓库内搜索;
- 按书名/文件名查找:在仓库主页按 t 键(或点击 Go to file),输入标题快速定位文件。
下载:点击仓库右上角绿色的 Code 按钮,选择 Download ZIP;或使用 git 克隆:
git clone https://github.com/cinagroup/cinaclassics.git注意:仓库体积约 2.1 GB,建议使用桌面端浏览器下载;网络不稳定时可多次尝试或分段克隆。
本地检索(推荐,速度快):
# 在所有文献中全文搜索
grep -r "关键词" --include="*.md" .
# 或使用 ripgrep(更快)
rg "关键词" -g "*.md"- 所有文件为纯文本 Markdown,正文未添加 Markdown 标记,可直接当作纯文本处理;
- 编码为 UTF-8,换行符为 CRLF(Windows 风格);
- 原始数据为 txt 格式,2026 年 9 月已整体更名为 .md。
Cinaclassics 的古籍刻本风格排版引擎:将中文文本排版为刻本风格的直排(竖排)PDF 电子书,文字可选取、可检索,自带书签目录,支持普通版式与族谱/字典多栏版式、印章贴放、多字体回退与度量微调。排版核心为纯计算(位置网格、标点处理、批注双排、标记系统、多字体回退、回退加粗),输出绘制指令流;渲染层用 pdf-lib + fontkit 生成 PDF(字体子集嵌入、底层算子实现文本填充+描边加粗、底层对象写入书签目录),可运行于 Cloudflare Workers(含本地 workerd)与 Node.js。
标识说明:品牌与基础设施标识统一为 Cinaclassics —— Worker 名
cinaclassics、R2 桶cinaclassics-assets、素材仓库环境变量CINACLASSICS_ASSETS(兼容历史值VRAIN_REPO)。更名前的旧 Workervrain与旧桶vrain-assets已下线。
目录位置:排版素材(
fonts/canvas/books/books_mr/db/)已并入Tools/根目录,引擎开箱即用;如需改用外部素材仓库,设置环境变量CINACLASSICS_ASSETS指向其根目录即可覆盖(未设置时按目录层级向上自动探测,探测标记为db/num2zh_jid.txt)。
- 直排位置网格:自右向左、自上而下逐字落位,打满一叶自动换叶/换页
- 双版式:主版式(
books/)与多栏版式(books_mr/:族谱/字典,含^跳栏、onlyperiod_color、if_tpcenter、if_book_vline) - 正文与批注:批注小字双排、圆角框;标点替换/归一化/过滤
- 特殊标记系统:书名波浪线、圆角方框、圆形框、圈注/点注/线注、字体缩放
- 字体策略:多字体互补回退、度量微调保持视觉一致、回退字体描边加粗
- 印章贴放:
books/<id>/stamps.cfg声明式驱动 - 输出:自动生成 PDF 书签目录;字体子集 + 对象流压缩(Ghostscript 无法运行于 Workers,此为本版的等价压缩实现)
素材仓库中的 Perl 脚本与本引擎的能力对照:
| Perl 组件 | TS 对应 | 状态 |
|---|---|---|
vrain.pl(主版式) |
src/engine/layout.ts |
✓ 已移植 |
vrain_mr.pl(族谱/字典多栏) |
src/engine/layout-mr.ts |
✓ 已移植(^跳栏、onlyperiod_color、if_tpcenter、if_book_vline;try_st 简繁转换未内置——原版两书均关闭) |
addyin.pl(印章贴放) |
src/engine/stamps.ts + books/<id>/stamps.cfg |
✓ 声明式等价(省略 Image::Magick 重采样/二值化,PDF 等比缩放贴放) |
indentxt.pl(S 缩进重排) |
scripts/indent.ts |
✓ 通用核心(原版 book-01 专属 hack 未移植) |
Ghostscript 压缩(-c) |
字体子集 + useObjectStreams |
△ 等价替代(gs 无法运行于 Workers) |
books/01(虞初新志):全书 29 页 = 29 页,逐页字符数一致;封面/正文印章位置与 export 版一致books_mr/01(賈府族譜):3 页 = 3 页,逐页字符数一致(275/275、33/33)books_mr/02(說文解字):5 页 = 5 页,视觉一致(参考 PDF 全字嵌入的 ToUnicode 对生僻字提取失真,字符数差异系提取假象)books/02(三国志通俗演义·嘉靖壬午本):scripts/ingest-sanguo.ts从库文本生成 24 卷 + 序/引/总目 + 宗僚附录,全书 914 页本地与线上生成一致books/03(红楼梦·程高本 120 回):scripts/ingest-hongloumeng.ts从库文本生成 120 回 + 总目,全书 1151 页;正文回目标记整行/独立两种样式混杂,按目录回号顺序匹配解析books/04(汉书·百卷本):scripts/ingest-hanshu.ts从库文本生成 100 卷(上下/中之上等分卷合并归位)+ 总目,全书 1172 页;目录条目含「(表略)」后缀与「中之上」类卷号,正则按序匹配books/05(后汉书·百二十卷):scripts/ingest-houhanshu.ts从库文本生成纪传 90 卷(上下分卷合并)+ 志 30 篇 + 总目,全书 1340 页;志单独立目(版心卷九十一..卷百二十),卷号采用中文数值精确比较- 文本懒加载:排版只读取 from..to 范围内的文本并并行加载(多文件书目在 Workers 上避免全量 R2 往返)
- Node 全书约 2-3s(虞初新志规模);三国演义全书约 35s、红楼梦约 34s、汉书约 39s、后汉书约 68s;线上单请求受 Workers CPU 30s 限制,长书按
from/to分卷请求
Tools/
├── fonts/ 排版字体(qiji-combo / HanaMinA / HanaMinB)
├── canvas/ 书叶背景底图与配置(每画布一对 .jpg/.cfg)
├── books/ 主版式书目(01 虞初新志、02 三国志通俗演义、03 红楼梦、04 汉书、05 后汉书)
├── books_mr/ 多栏版式书目(01 賈府族譜、02 說文解字)
├── db/ 中文数字表等素材数据
├── src/engine/ 排版引擎(纯计算,无 I/O)
│ ├── cfg.ts cfg 配置解析(兼容素材仓库注释/空白规则)
│ ├── text.ts 文本预处理(标点替换/归一化/段落补齐)
│ ├── layout.ts 主版式排版循环
│ ├── layout-mr.ts 多栏版式(族谱/字典)
│ ├── stamps.ts 印章贴放(stamps.cfg 驱动)
│ ├── fonts.ts 字体回退检测 + 度量微调(fontkit)
│ ├── render.ts 指令流 → PDF(pdf-lib)
│ ├── pipeline.ts 生成管线(书架选择 + 印章 + 渲染)
│ ├── assets.ts 素材加载(FsAssetSource / R2AssetSource)
│ └── zhnum-data.ts 中文数字表(db/num2zh_jid.txt 生成)
├── src/index.ts Worker 入口(路由)
└── scripts/
├── repo.ts 素材仓库定位(环境变量优先 + 逐级向上探测,各脚本共用)
├── generate-local.ts 本地 Node 生成(--mr 选择多栏书架)
├── font-subset.ts 按书字体子集(子集器为 fonteditor-core)
├── ingest-sanguo.ts / ingest-hongloumeng.ts / ingest-hanshu.ts / ingest-houhanshu.ts
│ 库文本 → books/02..05 排版素材(各书入库脚本)
├── make-sanguo-cover.ts 三国志通俗演义封面图绘制
├── indent.ts S 缩进文本重排
├── r2-push.ts 素材上传 R2(--local / --remote)
└── pdf2png.ts PDF 转 PNG(视觉对照用)
npm install
npm run local -- --book 01 --from 1 --to 2 # 主版式(books/)
npm run local -- --book 01 --mr --from 1 --to 1 # 多栏版式(books_mr/)
npm run local -- --book 01 --from 1 --to 2 --no-stamps # 跳过印章
npm run r2:push:local # 素材上传本地模拟 R2
npm run dev # wrangler dev → http://127.0.0.1:8787线上 API:
GET /— 使用说明GET /books— 列出书籍(books主版 +mr多栏版)GET /generate?book=01&from=1&to=2— 生成 PDFshelf=mr:多栏书架(books_mr/)pages=N:测试模式(对应素材仓库工具的-z)stamps=0:跳过印章(默认存在 stamps.cfg 时自动应用)
# 0. 认证:设置环境变量(免交互,CI 可用)
export CLOUDFLARE_API_TOKEN=... # Windows 用户级环境变量亦可用 PowerShell 读取注入
# 1. 生成按书字体子集(关键:全量字体 92MB 会超 Workers 128MB 内存限制,error 1102)
npx tsx scripts/font-subset.ts --book 01 --from 1 --to 2 # 主版(books/01)
npx tsx scripts/font-subset.ts --book 01 --mr --from 1 --to 1 # 多栏版(books_mr/01)
npx tsx scripts/font-subset.ts --book 02 --mr --from 1 --to 1 # 多栏版(books_mr/02)
# 自动改写 .r2build 下的 book.cfg 指向子集目录(未用字体置空),并全指令对比自检
# 2. 创建 R2 桶并上传素材(r2-push 优先推送 .r2build 产物)
npx wrangler r2 bucket create cinaclassics-assets
npm run r2:push # 远端,逐文件 wrangler r2 object put --remote
# 3. 部署 Worker
npm run deploy # wrangler deploy部署实例:https://cinaclassics.cinagroup.workers.dev(备用)与 https://classics.cinaseek.ai(主入口)
GET /books→{"books":["01","02","03","04","05"],"mr":["01","02"]}GET /generate?book=01&from=1&to=2→ 全书 29 页 PDF(含印章)GET /generate?book=01&shelf=mr&from=1&to=1→ 族谱多栏版- 服务端 TTFB 约 4~9s
- 内存:直接用全量字体(92MB)会触发 Workers
error code: 1102(128MB 超限)。务必先跑font-subset.ts生成按书子集并r2:push。新增/修改书目后需重新生成。 - 印章:
books/<id>/stamps.cfg存在时自动应用(stamps=0跳过);省略了 Perl 版 Image::Magick 的重采样与 11.jpg 二值化特例。 - try_st 简繁转换:素材仓库 Perl 版的转换依赖 Encode::HanConvert,未随引擎内置(原版两本书均关闭,原作者也标注"不建议开启")。
- CPU 时长:付费版单请求 30s CPU 上限。本书规模服务端实测 4~9s;更长的书建议按卷分片(
from/to)或改用 Queues/Workflows。 - Windows 上传坑:
execFileSync('npx', args, {shell:true})会丢数组参数(--remote静默失效、全传进本地模拟桶),r2-push.ts 已改为手工拼接命令串。 - 提取假象说明:参考 PDF(PDF::Builder 全字嵌入)文本提取对生僻字会输出垃圾字符(
╯等)或丢失,字符数对比时以视觉与位置为准;本版按源文本码点嵌入子集,提取结果与源文本一致。
Cinaclassics 排版引擎的版式算法与素材格式兼容 shanleiguang/vRain(Perl 工具链,MIT License,Copyright (c) 2025 shanleiguang),在其基础上以 TypeScript 独立实现并面向 Workers 运行时重构,素材仓库沿用其目录约定(素材仓库目录名 vRain 与历史环境变量 VRAIN_REPO 即源于此,现由 CINACLASSICS_ASSETS 取代、旧名仍兼容)。
layout.ts 按原版变量名移植(pcnt 字位指针、pid 页计数、posL/posR 左右半列坐标等),goto RCHARS 映射为外层循环 continue。原版两处语义陷阱已按原行为保留并注释:
if($pcnt+1 % $row_num == 0):%优先级高于+,条件恒假,pcol恒为int(pcnt/row_num)+1- 批注圆角框连接补齐的条件
'commn'(永不等于'comm'),批注框不连接
- 使用前请阅读 使用须知。
欢迎提交 Issue 或 Pull Request:包括但不限于文本勘误、补充整理卷章、修正目录层级、改进检索脚本等。