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 台湾繁体字形有明显区别
  • 着 / 著:各地分合处理不同
  • 内 / 內:字体设计差异

这些问题在以下场景会直接造成困扰:

  1. 跨地区古籍/文档数字化:OCR 识别结果需要对照各地字形差异
  2. 字体/排版设计:设计师需要了解五地字形规范差异
  3. 汉语教学:教师需要知道"这个字在台湾/日本写起来不一样"
  4. NLP/大模型预处理:训练语料涉及多地区汉字时,需要理解字形变体
  5. 古籍研究:汉字在各地印刷体的演变溯源

传统上要查这些差异只能翻阅各地字表,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),构建时如数据未变则走缓存跳过。


核心用法

界面操作

  1. 查找汉字:在首页输入框输入任意汉字,跳转到该字组页面
  2. 五地字形对比:每个字组页面展示五列,分别对应五地展示形
  3. 筛选与排序:按笔画数、码点排序,或按"差异模式"筛选
  4. 详情页:包含字表出处、状态(primary / glossed / unlisted)、字典链接等
  5. 地区别名: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


典型适用场景

  1. 字体设计师:在做泛中日韩字体设计时,快速查某字在五地的标准字形差异
  2. 古籍数字化项目:比对 OCR 识别结果与各地印刷体差异
  3. 汉语教学备课:向学生展示"同样的汉字在不同地区写出来有什么不同"
  4. 前端/CJK 排版开发者:在 Noto CJK 字形选择不确定时,作为参考依据
  5. 学术研究:汉字在东亚五地的规范化历史研究

坑与注意

  1. 只比较印刷字体,不含手写体:本应用对比的是 Source Han(Adobe)的印刷字形,不涵盖各地手写习惯,也不以教科书体为准。

  2. Source Han 香港覆盖不完整:香港地区有一些"只有香港不同"的字形,Source Han 未能全部覆盖,可能少报差异。

  3. 韩国列默认隐藏:因为韩国没有公开的字频数据,系统默认关闭韩国列,可在显示选项中手动开启。

  4. 首次 build:data 耗时且耗流量:约 302 MiB 下载量,包含 195 MiB 的十份 Noto CJK 字体,需确保网络稳定。

  5. 判定对象是 Source Han 设计代理,不是各地标准本身:虽然 Source Han 的地区字形分别依据各国字表,但两者并不完全等同,正式场合请以原始规范为准。

  6. 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(以实际发布时间戳为准)