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

iOS15/16中NotoSansTelugu字体泰卢固语文本渲染异常求助

泰卢固语字体在iOS15/16首次启动时渲染异常问题

背景信息

  • 应用已实现多语言支持,为不同语言配置对应字体:
    • 印地语使用NotoSansDevanagari(功能正常)
    • 泰卢固语使用NotoSansTelugu
  • 已完成字体文件的完整配置:.ttf字体文件已正确添加至项目、Info.plist,且已加入Build Phase的Copy Bundle Resources中

相关代码配置

泰卢固语本地化文件内容

"newsletter" = "సమాచార పత్రిక(న్యూస్‌లెట్టర్)";

"darkMode" = "డార్క్ మోడ్";

语言选择存储逻辑

func saveSelectedLanguage() {
    for language in languages where selectedLanguage == language.languageText {
        UserDefaults.appLanguage = language.languageCode
    }
}

语言管理与本地化字符串获取实现

class LanguageManager: LanguageProvider {
    func fetchValue(for key: Localize.Key) -> String {
        var savedAppLanuage = UserDefault.appLanguage
        let path = Bundle.main.path(forResource: savedAppLanuage, ofType: "lproj")
        let bundle = Bundle(path: path ?? "")
        return NSLocalizedString(key.rawValue, tableName: nil, bundle: bundle ?? Bundle.main, value: "", comment: "")
    }
}

/// 属性包装器:从本地化文件获取实际字符串
@propertyWrapper
public struct LocalizedString {
    var key: Localize.Key
    let languageManager: LanguageProvider = LanguageManager()
    public var wrappedValue: String {
        languageManager.fetchValue(for: key)
//            NSLocalizedString(key.rawValue, tableName: nil, bundle: Bundle.main, value: "", comment: "")
    }
}

应用字体枚举定义

enum AppFontName {
    case roboto
    case notoSansDevanagari
    case notoSansKannada
    case notoSansTelugu
    
    var value: String {
        switch self {
        case .roboto: return "Roboto-Regular"
        case .notoSansDevanagari: return "NotoSansDevanagari-Regular"
        case .notoSansKannada: return "NotoSansKannada-Regular"
        case .notoSansTelugu: return "NotoSansTelugu-Regular"
        }
    }
}

问题现象

  • 仅iOS15、iOS16版本存在异常:首次启动应用并选择泰卢固语后,UI渲染的文本显示异常,但控制台输出的本地化字符串是正确的;重启应用后,文本渲染恢复正常。
  • iOS14、iOS17及以上版本无此问题。
  • 已尝试重新添加、安装字体,问题未得到解决。
  • 应用同时使用Swift和SwiftUI,开发环境为Xcode 15.0。

重现步骤

  1. 安装应用,选择泰卢固语并进入应用,跳转页面后检查文本显示状态;
  2. 强制关闭应用并重启,再次选择泰卢固语进入应用,可观察到部分文本渲染异常。

内容的提问来源于stack exchange,提问作者Swarna Pandey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 00:07:48