sxzz/hanji · 上手攻略
- 仓库:sxzz/hanji
- 链接:https://github.com/sxzz/hanji
- 分类:工具 / 汉字字形对照
- 作者:Tom
- 更新:2026-08-26
是什么
Hanji 是一个开源的汉字字形对照工具,把同一个汉字在中国大陆、香港、台湾、日本、韩国五个地区的印刷字形并排展示,揭示各地规范之间细微但真实的字形差异。
项目名"Hanji"与汉语拼音"hanzi"差一个字母,与日语"kanji"差一个字母,与韩语"hanja"差一个字母——同一件东西,每个地方都改了一点点。它同时也是闽南语「漢字」的实际读音 hàn-jī,所以并非生造词。
数据来源为五份公开字表: - 中国大陆《通用规范汉字表》(2013) - 台湾《常用國字標準字體表》(1982) - 香港《常用字字形表》 - 日本《常用漢字表》(2010) - 韩国《漢文教育用基礎漢字》(2000)
合并后共 8,449 行,其中 1,692 行五地字形完全一致,129 行五地各不相同。
解决什么问题
汉字在两岸四地及日韩虽然字义相同,但印刷字形存在差异。举例来说:
- 国 / 國:大陆简体 vs 台湾繁体字形有明显区别
- 着 / 著:各地分合处理不同
- 内 / 內:字体设计差异
这些问题在以下场景会直接造成困扰:
- 跨地区古籍/文档数字化:OCR 识别结果需要对照各地字形差异
- 字体/排版设计:设计师需要了解五地字形规范差异
- 汉语教学:教师需要知道"这个字在台湾/日本写起来不一样"
- NLP/大模型预处理:训练语料涉及多地区汉字时,需要理解字形变体
- 古籍研究:汉字在各地印刷体的演变溯源
传统上要查这些差异只能翻阅各地字表,Hanji 把这件事做成了实时可查的对照工具。
快速安装
在线使用(无需安装)
生产环境(主分支自动部署):
https://hanji.sxzz.moe
PR 预览:每个 PR 会在 GitHub PR 评论中显示独立预览地址(通过 Cloudflare Workers 部署)。
本地开发
# 克隆仓库
git clone https://github.com/sxzz/hanji
cd hanji
# 安装依赖(要求 pnpm)
pnpm install
# 构建字体数据(约下载 302 MiB 原始数据,首次走缓存)
pnpm build:data
# 启动开发服务器
pnpm dev
⚠️
pnpm build:data首次运行会下载大量字体文件(约 302 MiB),需要稳定的网络连接。
静态生成部署
pnpm build:data
pnpm generate # 生成静态站点(不含 OG 图片)
pnpm build:og # 可选:生成社交分享 OG 图片
pnpm preview:worker # 本地预览,http://localhost:8787
生成产物在 .output/public/,可直接交给任意静态托管(Cloudflare Pages、Vercel、Netlify 等)。
字体数据说明
字体数据通过 pnpm build:data 自动从以下来源下载并处理:
- Noto Sans / Serif CJK:页面渲染用
- Adobe Source Han Sans / Serif:五地字形差异判定用(CMap 映射)
- Plangothic P1 / WenJin Mincho P2:Noto 未收录码点的补充字体
原始下载缓存在 data/raw/ 下(已 gitignore),构建时如数据未变则走缓存跳过。
核心用法
界面操作
- 查找汉字:在首页输入框输入任意汉字,跳转到该字组页面
- 五地字形对比:每个字组页面展示五列,分别对应五地展示形
- 筛选与排序:按笔画数、码点排序,或按"差异模式"筛选
- 详情页:包含字表出处、状态(primary / glossed / unlisted)、字典链接等
- 地区别名:aka 和 alternatives 列可作为替代 URL
编程调用(HTTP API)
页面数据接口可直接跨域调用:
# 字表 JSON(缓存 1 小时,过期后 1 天内仍可用旧版)
curl -sI "https://hanji.sxzz.moe/data/chars.json" | head -5
URL 路由
| URL 格式 | 说明 |
|---|---|
/char/着 |
某字组主页面(按行名) |
/char/国 |
各地别名也可作为地址 |
每个字组的 canonical 地址为行名地址;详情页链接的也是这个地址。
GitHub Actions 部署
主分支 push 自动部署到 Cloudflare Workers Static Assets;PR 自动生成预览地址。需要在 GitHub 仓库配置两个 secrets:
- CLOUDFLARE_API_TOKEN:Workers 脚本编辑权限
- CLOUDFLARE_ACCOUNT_ID:Cloudflare 账户 ID
典型适用场景
- 字体设计师:在做泛中日韩字体设计时,快速查某字在五地的标准字形差异
- 古籍数字化项目:比对 OCR 识别结果与各地印刷体差异
- 汉语教学备课:向学生展示"同样的汉字在不同地区写出来有什么不同"
- 前端/CJK 排版开发者:在 Noto CJK 字形选择不确定时,作为参考依据
- 学术研究:汉字在东亚五地的规范化历史研究
坑与注意
-
只比较印刷字体,不含手写体:本应用对比的是 Source Han(Adobe)的印刷字形,不涵盖各地手写习惯,也不以教科书体为准。
-
Source Han 香港覆盖不完整:香港地区有一些"只有香港不同"的字形,Source Han 未能全部覆盖,可能少报差异。
-
韩国列默认隐藏:因为韩国没有公开的字频数据,系统默认关闭韩国列,可在显示选项中手动开启。
-
首次 build:data 耗时且耗流量:约 302 MiB 下载量,包含 195 MiB 的十份 Noto CJK 字体,需确保网络稳定。
-
判定对象是 Source Han 设计代理,不是各地标准本身:虽然 Source Han 的地区字形分别依据各国字表,但两者并不完全等同,正式场合请以原始规范为准。
-
macOS 辅助功能字体渲染差异:同一字在不同浏览器/操作系统下渲染可能略有差异,Hanji 的判定基于 Adobe Source Han 的 CMap 数据,与 macOS 辅助功能字体渲染结果可能不完全一致。
与同类对比
| 工具 | 字表覆盖 | 字形对比方式 | 是否有代码/API | 部署难度 |
|---|---|---|---|---|
| Hanji | 中/港/台/日/韩 5 地 | 基于 Adobe Source Han CMap 量化判定 | REST API 可直接调 | 静态生成,简单 |
| Noto CJK 官方对比页 | 仅中日韩 | 纯字体渲染截图对比 | 无 | 不适用 |
| Unicode 字符百科 | 多语言 | 文字描述 | 无 | 在线使用 |
| 各字表 PDF | 单一地区 | 需手动翻阅 | 无 | 不适用 |
Hanji 的核心优势:五地字形量化判定 + REST API + 开源自部署,是同类工具中覆盖最完整且工程化程度最高的。
一句话推荐
如果你需要做汉字在东亚五地的规范字形对照、且希望有机器可读的接口,Hanji 是目前最完整、最权威的开源解决方案。
原始 commit:https://github.com/sxzz/hanji/commit/main(以实际发布时间戳为准)