Skip to content

find-font 1.0.0

Choose a tag to compare

@github-actions github-actions released this 07 Nov 09:03
· 1 commit to main since this release

find-font 1.0.0 —— 第一个正式版。Windows 10 1803+ / Windows 11,绿色版免安装。

下载

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

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

1.0.0 新增

  • 可变字体坐标轴:读 fvar 表,在右栏「档案」列出 wght 100–900、wdth 75–100 这类轴范围;静态字体不显示这一段。
  • 嵌入许可位:读 OS/2 fsType,标出「禁止嵌入 / 仅可预览与打印 / 可安装(允许嵌入) / 仅位图嵌入」,并注明是否禁止子集化。修正了此前把 BitmapOnly 位误读成「仅可编辑嵌入」的错误。只提示不阻断,装不装由你和授权方定。
  • 装给当前用户,不需要管理员权限:新增第二条安装路径,写 HKCU + %LOCALAPPDATA%\Microsoft\Windows\Fonts。左栏两个按钮分别对应「装给我 / 所有人」,卸载时按文件位置自动选对路径。
  • 测试分层:用例按 unit / integration / ui 标注,CI 先跑纯逻辑那层再跑全量;发布任务在 windows-2022 与 windows-latest 两档上并行,NuGet 包缓存跨运行复用。

完整能力

全字体离屏渲染预览 / 300 ms 防抖搜索与命中高亮 / 分类与四种排序 / 2–3 字体对比 / 拖放安装 / 多字面 .ttc 展开 / 字形缺失检测(区分「cmap 无映射」与「映射到空字形」)/ 失效登记清理(不动字体文件)/ 单实例 / 记忆上次状态 / 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 表,也不提供轴滑杆。