HarmonyOS 鸿蒙Next如何给app全局设置一个字体

HarmonyOS 鸿蒙Next如何给app全局设置一个字体

目前我们这边设计针对标点符号以及数字输出了一套字体,希望在app内全局替换,安卓和ios都有对方的方案可以全局设置,想问下鸿蒙这边有什么方法么

3 回复
全局使用自定义字体,在EntryAbility.ets文件的onWindowStageCreate生命周期中,通过windowStage.loadContent回调注册
import font from '@ohos.font';
onWindowStageCreate(windowStage: window.WindowStage): void {
windowStage.loadContent('pages/registerFont', (err, data) => {
if (err.code) {
return;
}
font.registerFont({
familyName: 'Beacon',
familySrc: $rawfile('font/Beacon.otf')
})
font.registerFont({
familyName: 'SF',
familySrc: $rawfile('font/SF-Pro-Text-Italic.ttf')
})
});
}
 

registerFont.ets在页面中使用注册的字体familyName即可


[@Entry](/user/Entry)
[@Component](/user/Component)
struct registerFont {
  [@State](/user/State) message: string = 'test'
  build() {
    Column() {
      Text(this.message)
        .align(Alignment.Center)
        .fontSize(50)
        .fontFamily('Beacon')
      Text(this.message)
        .align(Alignment.Center)
        .fontSize(50)
        .fontFamily('SF')
    }.width('100%')
  }
} 

参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-font-V5

不能统一设置,在需要的地方设置

更多关于HarmonyOS 鸿蒙Next如何给app全局设置一个字体的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,为应用全局设置一个字体,可以按照以下步骤进行:

  1. 准备字体文件:确保自定义字体文件(如.ttf或.otf格式)已被正确放置在项目的资源目录中。建议创建一个与pages目录同级的font目录来存放这些文件。
  2. 注册字体:在应用的入口文件(如EntryAbility.ets)中,通过编程方式注册这些字体。在onWindowStageCreate生命周期函数中,调用windowStages.getUIContext().getFont().registerFont方法。例如:
windowStages.getUIContext().getFont().registerFont({
  familyName: 'CustomFont',
  familySrc: $rawfile('font/custom_font.ttf')
});
  1. 应用字体:注册完成后,无需在每个Text组件中显式设置字体名称,整个应用将默认使用该字体。当然,如果需要在特定组件上使用其他字体,仍然可以通过设置Text组件的fontFamily属性来实现。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

import font from '[@ohos](/user/ohos).font';

onWindowStageCreate(windowStage: window.WindowStage): void {
  windowStage.loadContent('pages/Index', (err) => {
	font.registerFont({
	  familyName: 'kaiti',
	  familySrc: '/font/kaiti.ttf'
	})
	
	this.context.getApplicationContext().setFont('kaiti');
  });
}
回到顶部