跳转到内容
返回文库
返回文库

技术笔记

带有标签“技术笔记”的 2 篇文章

在沉重的 TEI 与散乱的 HTML 之间:从微读圣经与莊春江读经站,聊聊数字佛学的「格式之困」

如果一位开发者同时深入体验过微读圣经(wd.bible)与莊春江讀經站(agama.buddhason.org),通常会产生一种极其强烈的反差与震动。

这种反差并非源自义理或学术价值的高下——恰恰相反,两者都是各自领域的集大成者。然而,当经文从古老的羊皮纸、贝叶经跃入现代屏幕时,它们背后的数字工程底座与格式标准,却展现出了截然不同的两幅时代画卷。

丝滑的现代数字工业:微读圣经

Section titled “丝滑的现代数字工业:微读圣经”

打开微读圣经,用户体验是现代而平滑的:

  • 译本对照:无论是和合本、新译本、当代译本,还是英文的 ESV、NIV,几十个版本能够实现精准到每一句话的横向平行并排(Parallel Reading)。
  • 原文拆解:点开任意一节,底层的古希伯来文或古希腊文形态分析一览无余;每个词汇都挂载着对应的 Strong’s 词汇编号,字义释读与字典查询瞬间完成。
  • 交叉串珠:任意经节下方,都自动交织出一整套跨越数千年的经文互证网络。

这套系统的强大,并非仅仅归功于某一个前端界面写得多漂亮,而是因为它的背后,伫立着一套运行了数十年、甚至上百年的圣经数字化工业标准体系:

  1. 统一引用标准(OSIS):全球采用统一的书卷缩写(如 gen 创世记、psa 诗篇)与规范路由(gen.1.1)。
  2. 底层流转标准(USFM / OSIS XML):联合圣经公会(UBS)早在几十年前就推行了统一标准格式标记。诗体层级缩进(\q1、\q2)、段落(\p)、脚注(\f)全部实现了纯语义化标记。
  3. 字词编码标准(Strong’s Number):词根编号让全世界的字典、注释书、软件模块可以无缝拼插与重组。

伟大的学术孤岛:莊春江讀經站

Section titled “伟大的学术孤岛:莊春江讀經站”

转向另一边,打开莊春江老師的「阿含讀經站」。

任何对原始佛教稍有了解的人,都会对莊老师肃然起敬。这位学者倾尽毕生心血,完成了北传四部阿含经与南传巴利五部尼柯耶的对读互照,并逐经、逐段、逐字撰写了详尽的校勘与英译比对考证。在莊老师 2025 年 8 月去世后,家属更是大公无私地决议以 CC BY-NC-SA 4.0 国际协议向全球开放。无论是学术深度还是奉献精神,这都是现代佛学界一座巍峨的高峰。

然而,一旦拉开代码的幕布,你会看到完全不同的另一面:

  • 技术停滞在 Web 早期:全站依然依赖 2000 年代初期的 ExtJS 框架、HTML 表格布局与原生 JavaScript。
  • 缺乏数据与表现分离:经文释义与字典联动,是通过手写内联的 <a onMouseover="note(this, 1);">如是我聞</a> 硬生生塞在 HTML 里的。
  • 排版债缠身:段首缩进靠全角空格,偈颂靠空格硬凑,注释被做成了伪链接。

莊老师一生学问精深,但在技术实现上,他只能依靠个人手作的方式,将浩瀚的学术成果一点一点“砌”进静态的 HTML 网页里。数据被死死地锁在了视觉表现层之中。

后人若想提取这份极其珍贵的学术成果做二次利用(例如现代排版、大字适老化、APP 研读、甚至喂给大语言模型做高质量训练),必须先经历一场极其痛苦、极易出错的逆向数据清洗与正则刮骨。

二、 核心痛点:数字佛学断裂的「格式光谱」

Section titled “二、 核心痛点:数字佛学断裂的「格式光谱」”

为什么在数字技术高度发达的今天,佛学界却很难拥有类似微读圣经那样流畅的协作生态?

根本原因在于,汉语佛典在数字化过程中,出现了一段巨大的“生态断层”。现有的格式光谱两极分化,缺乏中间地带:

[ 沉重的学术殿堂 ] -------------------- ( 巨大的断层空白 ) -------------------- [ 原始的民间丛林 ]
TEI P5 XML 散乱的 HTML / Word 粘贴
(CBETA / SAT) (各大佛学网、博客、排版债)

在数字学术原典领域,佛学界其实有顶级的成果——CBETA(中华电子佛典协会)。CBETA 的底层完全采用国际人文学术文本编码标准 TEI P5 XML,东大 SAT、藏译英 84000 也都在向 TEI 看齐。

但 TEI 的问题在于太沉重了。它是专门为严苛的版本学校勘设计的,标签层级极其复杂、体系庞大。

  • 普通修行者、现代佛教学者、开示记录者,绝对不可能手写 TEI XML。
  • 普通工程师面对庞杂的 XML 树,解析和维护的门槛也极高。
  • 它适合供奉在学术象牙塔中作为大藏经底本,却极难在民间的日常流转与快速写作中普及。

2. 极其散乱的平地:手写 HTML 与 Word 粘贴

Section titled “2. 极其散乱的平地:手写 HTML 与 Word 粘贴”

而在象牙塔之外,全网流通的绝大部分佛学文献(各大讲堂网站、论坛、法师开示、白话注疏),依然停留在极其原始的状态:

  • 从 Word 里复制粘贴,段首硬塞两个全角空格(U+3000);
  • 偈颂为了居中,前面敲四个或八个空格;
  • 夹注、校勘记要么用括号硬塞在正文里,要么做成容易失效的页内跳转。

这就是我们在文库内部经常提到的病症:「表现层冒充语义层」。排版者用视觉字符硬画版面,却没有声明文本的本质结构。一旦到了移动端、屏幕宽度变化、或者启用大字适老化排版时,这些硬敲的空格就会立即崩坏、断行破碎。

3. 被遗忘的中间态:轻量级语义标准(Markdown Profile)

Section titled “3. 被遗忘的中间态:轻量级语义标准(Markdown Profile)”

圣经界有介于纯文本与学术代码之间的 USFM;现代软件工程有介于富文本与复杂排版之间的 Markdown。

然而,数字佛学界偏偏缺乏一套介于“过于沉重的学院派 TEI”与“散乱手写 HTML”之间的现代轻量级语义标准(A Buddhist Markdown Profile)。

我们需要这样一种标准:

  • 门槛足够低:它是纯文本的,任何人用记事本、VS Code 或 Obsidian 就能轻松阅读与撰写;
  • 具备佛典语义:
    • 在 Frontmatter 中规范书目元数据(经号、异译本、作者/译者、大正藏册卷行码);
    • 拥有类似 \q1 \q2 的偈颂块语义标记,不再靠敲空格对齐;
    • 拥有规范的校勘记与词条关联语法(如 <lem> 底本与 <rdg> 异文的轻量对应);
  • 具备无损转换能力:它作为“单语义真源”,能被脚本一键编译为供前端渲染的 HTML,能导出为适合移动阅读的精美 EPUB,也能无损升格为 CBETA 兼容的 TEI XML。

在维护显密文库的 12.7 万篇文献时,我们对这种格式断层有着切肤之痛。

显密文库拥有的核心资产,不是古代大藏经(那是 CBETA 的高山,无需重复造轮子),而是海量的现代白话佛学文献(近代高僧开示、白话经释、学术讲记、修行开示)。这部分文献在全网体量庞大,却也是“排版债”的重灾区。为了在自研的适老化主题(starlight-theme-large-print)中让老年读者能舒适地读大字,我们花费了巨大的精力去清理那些历史遗留下来的硬空格叠加穿帮与偈颂错位。

标准从来不是靠关起门来开研讨会就能推广开的,它必须跟着“数据重力”与“实用工具”走:

  1. 先医自己:我们正在显密内部提炼这套面向佛学白话文献的 Markdown Profile 规范,先把库里累积的缩进债、偈颂债与校勘注债务彻底消化干净;
  2. 再求普惠:当这套规范在生产环境打磨成熟后,我们计划将这套 Spec 规范文档、语法校验器(Linter),以及转出为 TEI/EPUB 的开源转换工具链发布出来。

佛教文献数字化的最终目的,是让历代先贤与善知识的智慧能够跨越时空、轻盈地流淌在每一个人的掌心。

我们期待着这样一天的到来:当未来的学者与技术人想要整理一部经释时,他们既不需要去啃浩繁晦涩的 TEI XML,也不必再陷于泥潭般的手工 HTML 之中。拿起纯文本,法音自流转。

为老年读者做的阅读控件:字号、行距与纸张色

文库的读者里,有相当一部分是年长法师与居士。默认的网页字号(通常 16px、行高 1.5)对他们并不友好。这一篇记录我们为「读得舒服」做的控件,以及背后的取舍。

页首的「排版」菜单里,正文字号有五档:14 / 15.5 / 17 / 19 / 22 像素。

曾考虑过滑杆无极调节,最后放弃了:档位化的好处是每一档的行高都能单独调过——字号越小行距越松(14px 配 2.1),字号越大行距越紧(22px 配 1.9)。无极调节只能套一条公式,五档是五条人工校过的曲线。老年读者要的是「清楚」,不是「自由」。

行距三档(0.9× / 1× / 1.1×)叠加在基准上;「外观」菜单里另有十四种纸张色——米黄、浅绿、淡褐,直到为夜读准备的暖黑。

纸张色不只是换背景图:整套界面的前景/背景对比度跟着重算,保证任何一档都落在可读的对比度区间内。选择存在读者的浏览器本地,我们不追踪、不画像。

这套适老化主题(starlight-theme-large-print)已经开源并发布到 npm,任何 Starlight 站点一行配置就能用上。细节在 www.xianmi.co/starlight/,欢迎取用,也欢迎 issue。