Skip to content

Latest commit

 

History

History
88 lines (73 loc) · 4.33 KB

README.zh_CN.md

File metadata and controls

88 lines (73 loc) · 4.33 KB

FontMod

English 简体中文 繁体中文

修改 Win32 程序字体的简单的 hook 工具。可用于一些基于 GDI/GDI+ 或者 Qt 的程序。

经测试可用于 Telegram DesktopKleopatra (Gpg4Win)Mendeley Desktop

使用方法

下载 FontMod{32,64,ARM,ARM64}.dll 并重命名为下列之一:
dinput8.dll, dinput.dll, dsound.dll, d3d9.dll, d3d11.dll, ddraw.dll, winmm.dll, version.dll, d3d8.dll (d3d8.dll 仅支持 32 位)。
然后放在程序 exe 所在的文件夹里。
用户字体:把字体文件放在 fonts 文件夹内,可以直接使用,无需安装到系统中。

配置文件

初次运行时会创建 FontMod.yaml。配置文件使用 UTF-8 编码。支持 UTF-8 BOM。

style: &style
# Remove '#' to override font style
#  size: 0
#  width: 0
#  weight: 0
#  italic: false
#  underLine: false
#  strikeOut: false
#  charSet: 0
#  outPrecision: 0
#  clipPrecision: 0
#  quality: 0
#  pitchAndFamily: 0

fonts:
  SimSun: &zh-cn-font # Chinese (Simplified) fallback font
    replace: Microsoft YaHei
    <<: *style
  PMingLiU: # Chinese (Traditional) fallback font
    replace: Microsoft JhengHei UI
    <<: *style
  MS UI Gothic: # Japanese fallback font
    replace: Yu Gothic UI
    <<: *style
  Gulim: # Korean fallback font
    replace: 맑은 고딕
    <<: *style

#fixGSOFont: true # true is to use system UI font
#fixGSOFont: *zh-cn-font # Or replace with user defined font

#gdiplus:
#  SimSun:
#    replace: Microsoft YaHei
#  Microsoft YaHei:
#    size: 72.0
#    style: regular
##    style: 0
#    unit: point
##    unit: 3

#gdipGFFSansSerif: Calibri
#gdipGFFSerif: Times New Roman
#gdipGFFMonospace: Consolas

debug: false
  • fonts

    • key ("SimSun"): 要修改的字体名称。
    • replace / name: 要替换成的字体名称。
    • size width weight italic underLine strikeOut charSet outPrecision clipPrecision quality pitchAndFamily: 覆盖原始字体样式。请参见 MSDN 文档。如果不想覆盖的话请把这些项删除。
  • fixGSOFont 替换 GetStockObject 字体,选项与前面的 fonts 相同。若设为 true 则会使用 SystemParametersInfo 获取系统字体。

  • gdiplus 替换 GDI+ 字体. 由于 GDI+ 的限制, 你只可以把一个字体替换成另一个 (SimSun -> Microsoft YaHei),或者修改某个字体的样式。

    • key ("SimSun"): 要修改的字体名称。
    • replace / name: 要替换成的字体名称。
    • size: 字体大小。
    • style: 字体样式。允许的值为: regular bold italic boldItalic underline strikeout。或者你可以直接写 FontStyle enumeration 对应的整数值。
    • unit: 大小的单位。允许的值为: world display pixel point inch document millimeter. 或者你可以直接写 Unit enumeration 对应的整数值。
  • gdipGFFSansSerif, gdipGFFSerif, gdipGFFMonospace 替换 GDI+ generic font family. (https://docs.microsoft.com/en-us/windows/win32/gdiplus/-gdiplus-fontfamily-flat)

  • debug 调试模式 (会记录相关信息到 FontMod.log)。

YAML 支持 锚点(&)引用(*) (请参见 维基百科),此工具还支持 YAML 标准中非强制的键值合并 (Merge Key) 功能。你可以像上面的配置文件那样重复使用数据,而不需要像 JSON 那样把数据复制多份。

如果只想替换 CJK 字体,保留英文字体不变,你需要将 key 设为 CJK 的 fallback 字体。这个字体在不同语言环境下可能不一样 (比如简体中文是 SimSun),你可以使用 debug 模式找到对应的字体。