Skip to content

find-font 1.0.1

Latest

Choose a tag to compare

@github-actions github-actions released this 07 Nov 15:49

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 许可位只做提示:字体说「禁止嵌入」时仍会装上并附一句提醒,是否可用取决于授权。