You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Electron应用自定义俄文字体加载及对话块全局默认字体设置问询

问题解决方案

1. 对话块字体为空时的全局默认字体定义位置

全局默认字体的配置通常分布在以下几个位置,按优先级排查:

  • Electron主进程配置:检查应用主入口文件(如main.js/index.js)的webPreferences字段,是否设置了defaultFontFamily参数,该配置会覆盖渲染层的字体默认值。
  • 全局样式文件:在resources/app目录下查找全局CSS文件(如styles.css、main.css),查看body、html或根容器选择器中的font-family属性,这是渲染层最常见的全局字体定义处。
  • 引擎专属配置文件:如果应用基于特定游戏引擎(如自定义引擎、Phaser等),检查额外的配置文件(如config.js、engine.json),通常会有globalFont或defaultFont之类的全局字体项。
  • Preload脚本:查看preload.js文件,是否有通过JS注入全局字体样式的逻辑(如动态创建@font-face规则)。

2. 确保引擎从md5ext指定路径加载TTF字体

针对当前配置无效的情况,按以下步骤排查修复:

  • 验证路径正确性:确认md5ext的路径是相对于resources文件夹的正确路径。如果字体放在resources根目录,直接写Undertale-Battle-Font.ttf即可;若在子文件夹,需补充相对路径(如./fonts/Undertale-Battle-Font.ttf)。部分引擎可能要求绝对路径,可尝试用Windows绝对路径(如C:\xxx\resources\Undertale-Battle-Font.ttf)测试。
  • 手动注册字体:Electron渲染层需通过@font-face显式注册自定义字体,即使game.json配置了,引擎可能未自动执行该步骤。创建或修改全局CSS文件,添加:
@font-face {
  font-family: 'MyBattleFont';
  src: url('./Undertale-Battle-Font.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
}

确保该CSS被渲染进程加载(可在主进程webPreferences的preload或webContents的insertCSS方法中注入)。

  • 检查配置字段逻辑:确认system: false的含义是否为禁用系统字体、优先加载自定义字体。若引擎逻辑相反,可尝试改为system: true测试。同时检查family字段的拼写是否与@font-face中的font-family完全一致(部分引擎严格区分大小写)。
  • 清除应用缓存:Electron会缓存字体资源,修改配置后删除应用缓存目录(通常在C:\Users\<你的用户名>\AppData\Roaming\<应用名称>下的Cache或Local Storage文件夹),再重启应用。
  • 验证字体文件完整性:确保Undertale-Battle-Font.ttf未损坏,可在Windows系统中安装该字体,确认俄文字符能正常显示。

内容的提问来源于stack exchange,提问作者Нарезной Лололошка

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 09:32:44