Repository navigation
find-font 1.0.1 —— 压缩包里现在只有一个 FindFont.exe。Windows 10 1803+ / Windows 11,绿色版免安装。
下载
| 文件 | 说明 |
|---|---|
find-font-1.0.1-win-x64.zip |
解压后双击 FindFont.exe |
解压出来就这一个文件(约 1 MB),没有第二个 exe、没有附带 dll、没有安装程序,也不会在开始菜单或注册表里留下东西。要卸载直接删掉它。
需要 .NET 8 桌面运行时(Desktop Runtime)。没装的话,Windows 会弹出系统对话框说明并给出下载链接,不会静默双击无反应。
1.0.1 改了什么
- 发布包从两个 exe 变成一个:原来是一个 28 KB 的 .NET Framework 引导器负责检查运行时、再启动 1 MB 的主程序,两个中文名一样的 exe 摆在一起,用户不知道该点哪个。现在主程序自己就是入口,程序集名
FindFont与图标、快捷方式、任务管理器里的名字一致。 build.cmd publish末尾会校验输出目录里除了FindFont.exe没有别的文件,CI 里也有同名测试盯着——省得以后不小心又冒出一个 exe 或 dll 没人发现。
完整能力
全字体离屏渲染预览 / 300 ms 防抖搜索与命中高亮 / 分类与四种排序 / 2–3 字体对比 / 拖放安装 / 多字面 .ttc 展开 / 字形缺失检测(区分「cmap 无映射」与「映射到空字形」)/ 可变字体坐标轴 / 嵌入许可位 / 装给当前用户(免 UAC)或所有用户 / 失效登记清理(不动字体文件)/ 单实例 / 记忆上次状态 / PerMonitorV2 DPI / 崩溃日志 / Mica 材质。
实现要点
- 全程离屏
FormattedText+RenderTargetBitmap出冻结位图,XAML 里不出现FontFamily绑定,规避 WPF 加载上千套字形的内存暴涨(1380 个字体约 160 MB)。 - 直读 sfnt 的
name/OS/2/head/cmap/loca/glyf/maxp/fvar表,0.2–0.4 ms/文件;不依赖GlyphTypeface(43 ms/文件)。 - 2–4 条 STA 渲染线程按缓存键分派,首屏 12 行冷渲染从 1.1 s 降到 150 ms。
VirtualizingStackPanel+ 位图 LRU(96 MB 字节预算,不是按条数)。
已知限制
- 旧式
.fon位图字体不是 sfnt 容器,以文件名做显示名(不标记为异常)。 .ttc/.otc按文件头声明的成员展开,未独立声明的隐藏字面取不到。- 字形缺失检测只认
glyf轮廓;真 CFF 轮廓的.otf只报「无映射」,不判断字形是否为空。 - 缺字检测的依据是当前样本文字这一小组码位,回答的是「我这串字能不能显示出来」,不是「这个字体完整吗」。
- 可变字体只读轴范围,不解析
STAT表,也不提供轴滑杆。 fsType许可位只做提示:字体说「禁止嵌入」时仍会装上并附一句提醒,是否可用取决于授权。