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中,为应用全局设置一个字体,可以按照以下步骤进行:
- 准备字体文件:确保自定义字体文件(如.ttf或.otf格式)已被正确放置在项目的资源目录中。建议创建一个与pages目录同级的font目录来存放这些文件。
- 注册字体:在应用的入口文件(如EntryAbility.ets)中,通过编程方式注册这些字体。在onWindowStageCreate生命周期函数中,调用
windowStages.getUIContext().getFont().registerFont
方法。例如:
windowStages.getUIContext().getFont().registerFont({
familyName: 'CustomFont',
familySrc: $rawfile('font/custom_font.ttf')
});
- 应用字体:注册完成后,无需在每个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');
});
}