Gluon移动iOS应用日语字符显示乱码问题求助
Gluon iOS应用日语字符显示方框/横线问题解决方案
问题概述
开发的Gluon应用在Mac端运行时英文、日语显示正常,但部署到iPhone后日语字符显示为方框或横线,构建打包无报错,已尝试设置UTF-8编码、切换Hiragino字体仍未解决。
核心原因
- iOS系统中指定的字体名称与Mac端不一致,导致无法正确加载系统日语字体
- 自定义字体未被嵌入到iOS应用包中
- GraalVM打包时未包含日语字体相关资源或配置
解决方案
1. 嵌入自定义日语字体到应用
- 将日语字体文件(如
HiraginoSans-W3.ttf)放入项目src/main/resources/fonts目录 - 在应用初始化时加载字体,确保全局可用:
@Override public void init() throws Exception { super.init(); // 加载自定义日语字体 Font.loadFont(getClass().getResourceAsStream("/fonts/HiraginoSans-W3.ttf"), 12); }
2. 修正FXML中的字体引用
替换FXML中指定的字体名称为加载后的字体family(通常与字体文件名一致,可通过Font.getFamilies()验证):
<!-- 原代码 --> <Font name="Hiragino Sans CNS W3" size="18.0" /> <!-- 修改后 --> <Font name="Hiragino Sans" size="18.0" />
3. 配置GluonFX插件包含字体资源
在pom.xml的gluonfx-maven-plugin配置中添加资源包含规则,确保字体和语言文件被打包:
<plugin> <groupId>com.gluonhq</groupId> <artifactId>gluonfx-maven-plugin</artifactId> <version>${gluonfx.plugin.version}</version> <configuration> <!-- 原有配置保留 --> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>fonts/**</include> <include>lang*.properties</include> </includes> </resource> </resources> </configuration> </plugin>
4. 优化ResourceBundle配置
- 确保
lang_ja.properties文件以UTF-8编码保存(IntelliJ中设置文件编码为UTF-8) - 调整
bundlesList配置,用资源包基础名称替代具体语言包:
<bundlesList> <list>lang</list> <!-- 替换原lang_en、lang_ja,自动匹配对应语言资源 --> </bundlesList>
5. 清理重建项目
执行以下命令清理缓存并重新部署:
mvn clean mvn -Pios gluonfx:build gluonfx:nativerun
额外排查点
- 在iOS端通过
Font.getFamilies()打印可用字体列表,确认自定义字体是否成功加载 - 检查iOS设备的语言区域设置,确保日语环境配置正常
内容的提问来源于stack exchange,提问作者Sion S
相关产品推荐
相关产品推荐

