HarmonyOS鸿蒙Next中用注册font的方式在软件包里导入了自定义字体,然后fontFamily使用了自定义字体的所有汉字都变成了这种奇怪的像素字,fontFamily使用了自定义字体的所有数字都直接变成了空白

HarmonyOS鸿蒙Next中用注册font的方式在软件包里导入了自定义字体,然后fontFamily使用了自定义字体的所有汉字都变成了这种奇怪的像素字,fontFamily使用了自定义字体的所有数字都直接变成了空白 用注册font的方式在软件包里导入了自定义字体,然后fontFamily使用了自定义字体的所有汉字都变成了这种奇怪的像素字,fontFamily使用了自定义字体的所有数字都直接变成了空白怎么解决?

3 回复

可能是由于字体文件注册不正确或字体文件本身不完整导致。检查字体文件是否包含中文汉字和数字字符集(部分免费字体可能仅支持英文)。
字体文件路径错误。
注册自定义字体。有以下两种方式:

// 注册自定义字体
let fontCollection = text.FontCollection.getGlobalInstance()
// 方式一:/system/fonts/myFontFile.ttf文件仅为示例路径,应用根据自身实际填写文件路径
fontCollection.loadFontSync(‘myFamilyName0’, ‘file:///system/fonts/myFontFile.ttf’)

// 方式二:确保已经将自定义字体myFontFile.ttf文件放在本应用工程的entry/src/main/resources/rawfile目录
fontCollection.loadFontSync(‘myFamilyName1’,$rawfile(‘myFontFile.ttf’))

使用自定义字体:

// 填写注册自定义字体时传入的字体家族名
let myFontFamily: Array<string> = [“myFamilyName0”]
// 设置文本样式
let myTextStyle: text.TextStyle = {
color: { alpha: 255, red: 255, green: 0, blue: 0 },
fontSize: 100,
// 在文本样式中加入可使用的自定义字体
fontFamilies: myFontFamily
};

更多关于HarmonyOS鸿蒙Next中用注册font的方式在软件包里导入了自定义字体,然后fontFamily使用了自定义字体的所有汉字都变成了这种奇怪的像素字,fontFamily使用了自定义字体的所有数字都直接变成了空白的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


自定义字体在HarmonyOS Next中显示异常,可能是字体文件本身不支持当前字符集或格式问题。请检查字体文件是否包含完整的汉字和数字字形,并确认字体格式(如TTF、OTF)与系统兼容。若字体文件仅包含部分字符或编码错误,会导致汉字显示为像素化、数字不显示。建议重新验证字体文件的完整性和字符覆盖范围。

在HarmonyOS Next中,自定义字体渲染异常通常是由于字体文件本身或加载方式的问题导致的。以下是排查和解决步骤:

  1. 检查字体文件完整性
    确认字体文件(如.ttf/.otf)是否完整且支持中文字符集(如GB2312、UTF-8)。部分字体可能仅包含特定字符子集,导致未包含的字符(如数字)显示异常或空白。可通过字体工具(如FontForge)验证字符覆盖范围。

  2. 注册字体时的路径和格式
    确保在resources/base/media目录下放置字体文件,并在module.json5中正确声明:

    "resource": {
      "media": [
        {
          "name": "custom_font",
          "src": "./media/CustomFont.ttf"
        }
      ]
    }
    

    文件名需与代码中引用的名称一致,且路径无错误。

  3. 字体加载与使用方式
    通过ResourceManager获取字体后,需确保在ArkUI组件中正确赋值:

    let font = this.context.resourceManager.getMedia($r('app.media.custom_font'));
    // 在Text组件中设置fontFamily
    Text("测试文本")
      .fontFamily(font)
    

    若直接使用字符串名称(如fontFamily('CustomFont')),需确认注册时的name字段与调用名称完全匹配。

  4. 字体兼容性问题
    部分字体文件可能因格式兼容性问题导致渲染异常。尝试更换其他字体文件测试,或使用HarmonyOS默认字体(如HarmonyOS Sans)对比验证是否为字体文件本身的问题。

  5. 调试工具使用
    通过DevEco Studio的预览器或真机调试功能,检查控制台是否有字体加载错误日志。若存在错误,需根据日志进一步定位问题。

若以上步骤仍无法解决,建议检查字体文件的版权和格式规范,或尝试重新生成字体文件。

回到顶部