PDF 里日文汉字显示成中文字形?汉字地区字形的原因与修法
简短回答
中日韩大部分汉字共用同一个 Unicode 编码,但各地区的写法有差别。PDF 工具如果用中文字体排日文(或反过来),就会显示错误的字形。修法是按文档语言选择字体,或用 lang="ja" / lang="ko" 标注段落,让工具自动切换字体。
症状


CJKmainfont="Microsoft YaHei"(中文字形)与 "Yu Gothic"(日文字形)。原因
Unicode 对这些汉字做了“统一编码”,编码本身不区分地区写法,由字体决定。文档里没有语言信息时,工具会使用排在最前面的中日韩字体:在中文系统上常常是中文字体,或者整篇文档设定的那款字体。
用日文字体打开日文示例
打开日文示例在原工具中的修法
- Pandoc + xelatex:按文档语言设置字体,日文可用
-V CJKmainfont="Yu Gothic"(Windows)、"Hiragino Sans"(macOS)或"Noto Sans CJK JP"。实测:从微软雅黑换成 Yu Gothic 后,字形如上图所示变为日文写法。 - 基于 HTML / Chromium 的工具(实测 md-to-pdf;VS Code Markdown PDF 和 Typora 同样基于 Chromium/Electron,未实测):标注语言。使用
<span lang="ja">…</span>或<html lang="ja">后,Chromium 会选用日文字体;md-to-pdf 把测试文件中lang="ja"的那一行渲染成了日文字形。也可以在font-family里把对应地区的字体放在最前面。 - 多语言混排:每种语言放进各自的
lang标签(LaTeX 中为每种语言设置单独的字体族)。
日本語の段落:<span lang="ja">直 骨 角 化</span>
中文段落:<span lang="zh-CN">直 骨 角 化</span>在 MarkPDF 中
在 ⚙ 设置中按文档语言选择字体(日文、韩文、简体或繁体中文)。用 lang="ja"、lang="ko"、lang="zh-TW"、lang="zh-CN" 标注的段落会自动切换为对应地区的 Noto 字体,预览和两种 PDF 都一样。
常见问题
这是 Unicode 的问题吗?
不是。汉字统一编码是有意的设计,地区写法由语言标记和字体决定。
哪些字有差别?
很多,通常是细微笔画:直、骨、角、化、海、令、次、写、今 都比较明显。单个差别不大,但母语读者一眼就能看出来。
有没有一款字体能显示所有地区写法?
Noto Sans CJK / 思源黑体这类泛中日韩字体包含所有写法,但仍需要语言标记(或地区字体名)来选择正确的那一套。