Skip to content

find-font v0.3.0-alpha

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 04 Nov 13:17
· 9 commits to main since this release

候选版本。Windows 10 1803+ / Windows 11,绿色版免安装。

下载

文件 说明
find-font-0.3.0-alpha-win-x64.zip 解压后双击 FindFont.exe

需要 .NET 8 桌面运行时(Desktop Runtime)。没装的话引导器会弹框说明并给出下载链接,不会静默失败。

这一版修了什么

前两版有三个会伤到用户系统的缺陷,这个版本全部修掉:

  • 卸载不再删除系统字体。 以前选中任意字体点卸载都会把文件删掉,包括 Arial 这种系统自带的。现在维护一份「本工具装过什么」的台账(%ProgramData%\find-font\installed.txt),只有台账里的文件才删,而且走回收站;系统自带字体只清除注册表登记,确认框会提前写清是哪一种。
  • 网页字体明确拒装。 .woff/.woff2/.eot 是浏览器格式,装进 C:\Windows\Fonts 系统根本不认,以前会制造「装了但看不见」的假成功。现在在碰系统目录之前就拒绝,并说明原因和该转成什么格式。
  • 注册表不再写重复项。 以前同一个字体登记两条值(裸名 + 带类型名),现在幂等:已存在指向同名文件的值就跳过,值名统一为 名字 (TrueType|OpenType|TrueType collection)。

另外补上了应用图标(16–256 七档),发布包里不再带 70 KB 的 pdb。

功能

  • 全字体预览:把本机所有字体按真实字形渲染成缩略图,中英文混排可见
  • 实时搜索:300 ms 防抖,匹配显示名 / 本地化名 / 中文名 / 家族名 / 文件名 / 样式名
  • 筛选:中文 / 西文 / 其他 + 常规 / 粗体 / 斜体 + 只看失效登记
  • 多字体对比:Ctrl 多选 1–3 个字体同屏对照,改文字实时重渲染
  • 安装 / 卸载:走 UAC 提权微进程,取消提权不会留下半成品
  • 失效登记清理:删掉注册表里指向缺失文件的僵尸条目,不动任何字体文件

实现要点

  • 全程离屏 FormattedText + RenderTargetBitmap 出冻结位图,XAML 里不出现 FontFamily 绑定 —— 规避 WPF 加载上千套字形导致的内存暴涨(1333 个字体约 160 MB)
  • 直读 sfnt 的 name / OS/2 / head 表补全家族名与字重,0.33 ms/文件;不依赖 GlyphTypeface(43 ms/文件)
  • VirtualizingStackPanel + VirtualizationMode=Recycling;只有被选中的行才渲染 220px 大样本,位图缓存按 96 MB 字节预算淘汰

已知限制

  • 语言归属靠名字关键词推断,不解析字符表,冷门字体会归到「其他」
  • 旧式 .fon 位图字体不是 sfnt 容器,以文件名做显示名
  • .ttc / .otc 只读第一个字体成员
  • 只扫描 HKLM / HKCU 下的标准字体注册表项
  • 卸载保护依赖台账:本版之前安装的字体没有台账记录,卸载时只会清登记、不会删文件(保守方向)