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

Gluon移动iOS应用日语字符显示乱码问题求助

Gluon iOS应用日语字符显示方框/横线问题解决方案

问题概述

开发的Gluon应用在Mac端运行时英文、日语显示正常,但部署到iPhone后日语字符显示为方框或横线,构建打包无报错,已尝试设置UTF-8编码、切换Hiragino字体仍未解决。

核心原因

  1. iOS系统中指定的字体名称与Mac端不一致,导致无法正确加载系统日语字体
  2. 自定义字体未被嵌入到iOS应用包中
  3. 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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 11:56:44