# 字体与 CJK 渲染：缺字、模糊与字体缓存

> 文档为什么显示方块、怎么重建字体缓存，以及 ClearType 与缩放在哪里打架。

**测试环境**

- 版本号: 26300.9457 / 26100.33650
- 版本: Pro (26H2) / Server
- 架构: x64
- 证据: E1
- 核验日期: 2026-10-29

## 一句话结论

三种不同的问题都被叫作"字体问题"：

| 现象 | 原因 |
|---|---|
| **方块 / 问号** | 字体缺字形（缺 CJK 字体，或 PDF 里是子集字体） |
| **文字模糊** | 非 DPI 感知应用的缩放，或点阵字体 |
| **字形形状不对** | 该脚本选错了字体（日文与中文变体） |

修法各不相同。装"更多字体"只对第一种有帮助。

## 缺字形

Windows 通过可选功能提供 CJK 支持：**设置 → 系统 → 可选功能 → 添加功能** → *中文（简体）补充字体*（繁体/日文/韩文同理）。

查看已安装：

```powershell
Get-WinUserLanguageList | Select-Object LanguageTag,InputMethodTips
Get-ChildItem C:\Windows\Fonts -Filter *.tt? | Measure-Object
Get-WindowsCapability -Online -Name 'Language.Fonts.*' | Select-Object Name,State
```

如果**PDF** 显示方块而同段文字在浏览器里正常，说明该 PDF 嵌入的是缺这些字形的子集——问题在文档，不在 Windows。

## CJK 变体错位

同一个 Unicode 码位在不同字体里渲染不同：中文简体的「直」与日文的「直」形状有细微差异。你打的是中文，文档却像日文，说明字体回退选到了日文字面。

解法是在文档/应用里显式指定中文字体（`Microsoft YaHei`、`SimSun`、`Noto Sans SC`），不要依赖回退。

## 字体缓存

Windows 会缓存字体数据；缓存损坏会导致字体缺失、应用看不到新装字体，或"设置"应用变慢。

```powershell
Stop-Service FontCache
Remove-Item "$env:SystemRoot\ServiceProfiles\LocalService\AppData\Local\FontCache\*" -Force -ErrorAction SilentlyContinue
Start-Service FontCache
```

之后重启。缓存会自行重建——字体密集的应用第一次启动会稍慢。

> **警告: 给所有用户安装，而不只是自己**
>
> 右键 → **安装**把字体放进按用户存储；**为所有用户安装**才放进 `C:\Windows\Fonts`。服务和其他账户只能看到后者——这就是"Word 里字体正常，服务生成的报表里没有"的常见原因。

## 缩放下的模糊

ClearType 是为 96 DPI 设计的。在 125–200% 缩放下：

- **DPI 感知的应用**按新比例重新渲染 → 清晰。
- **不感知的应用**被位图拉伸 → 模糊。
- **点阵字体**（老安装程序、部分工具）根本无法缩放。

这与[高 DPI 与缩放](https://winbook.fyi/zh/hardware/display/dpi-scaling/)是同一机制，不是字体缺陷。高 DPI 下关掉 ClearType 只会让字变细，不会变清晰，也不能修好不感知的应用。

## 验证字体真的可用

```powershell
Add-Type -AssemblyName System.Drawing
$families = (New-Object System.Drawing.Text.InstalledFontCollection).Families
$families | Where-Object Name -match 'YaHei|SimSun|Noto' | Select-Object Name
```

字体族不在列表里，应用就用不了它——哪怕文件就在磁盘上。

## 相关

- [高 DPI 与缩放](https://winbook.fyi/zh/hardware/display/dpi-scaling/)
- [色彩管理与 ICC](https://winbook.fyi/zh/windows/media/colour-management/)
- [视频解码与编解码器](https://winbook.fyi/zh/windows/media/codecs/)

## 实验室边界

E1。字体与文本渲染行为有微软文档依据。实验室虚拟机默认已装 CJK 字体，因此未复现缺字场景。

## 来源

- [Microsoft Learn — 字体与文本](https://learn.microsoft.com/zh-cn/windows/win32/gdi/fonts-and-text)
- [Microsoft Learn — 排版](https://learn.microsoft.com/zh-cn/typography/)
- [Microsoft Learn — 高 DPI 桌面应用开发](https://learn.microsoft.com/zh-cn/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows)

---

来源页面: https://winbook.fyi/zh/windows/media/fonts-cjk/
