鸿蒙应用示例:字体的使用和注意事项记录
【使用效果】
首先去下载字体:
【字体注册与使用】
在HarmonyOS中,可以通过font.registerFont方法来注册一个新的字体,使其可以在整个应用中使用。下面是一个简单的示例代码,展示了如何在页面组件中注册并使用自定义字体:
src/main/ets/entryability/EntryAbility.ets
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import { UIAbility } from '@kit.AbilityKit' ; import { font, window } from '@kit.ArkUI' ; export default class EntryAbility extends UIAbility { onWindowStageCreate(windowStage: window.WindowStage): void { windowStage.loadContent( 'pages/Page114' , () => { // familySrc支持RawFile font.registerFont({ familyName: 'Alibaba_PuHuiTi_P3' , familySrc: $rawfile( 'Alibaba_PuHuiTi_P3.ttf' ) }) }); } } |
src/main/ets/pages/Page114.ets
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | @Entry @Component struct Page114 { @State message: string = 'Hello World' ; build() { Row() { Column() { Text(`引入指定字体:${ this .message}`) .align(Alignment.Center) .fontSize(20) .fontFamily( 'Alibaba_PuHuiTi_P3' ) Text(`当前默认字体:${ this .message}`) .align(Alignment.Center) .fontSize(20) } .width( '100%' ) } .height( '100%' ) } } |
【注意事项】
1. 预览器限制:
如果像上述示例那样在EntryAbility中使用font.registerFont注册新字体,那么在使用预览器时将看不到字体效果。原因是预览器不会执行EntryAbility的生命周期方法,包括onWindowStageCreate。因此,为了在预览器中查看效果,可以在页面组件的生命周期钩子(如aboutToAppear)中注册字体。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | import { font } from '@kit.ArkUI' ; @Entry @Component struct Page114 { @State message: string = 'Hello World' ; aboutToAppear(): void { font.registerFont({ familyName: 'Alibaba_PuHuiTi_P3' , familySrc: $rawfile( 'Alibaba_PuHuiTi_P3.ttf' ) }) } build() { Row() { Column() { Text(`引入指定字体:${ this .message}`) .align(Alignment.Center) .fontSize(20) .fontFamily( 'Alibaba_PuHuiTi_P3' ) Text(`当前默认字体:${ this .message}`) .align(Alignment.Center) .fontSize(20) } .width( '100%' ) } .height( '100%' ) } } |
2. 免费可商用字体:
• 在开发过程中,选择合适的字体对于降低成本至关重要。以下是一些免费且可用于商业项目的字体:
• 阿里巴巴普惠体 2.0
• 站酷仓耳渔阳体
• 钉钉进步体
3. 字体压缩方案:
• 使用字体压缩工具,如font-spider,可以减少字体文件大小,提高加载速度和节省存储空间。例如,将全字体文件从8MB压缩至92KB。
4. 字体资源管理策略:
• 动态内容的字体处理:对于APP内动态展示的数据,建议使用广泛支持的内置字体。
• 特定元素的字体需求:对于少量需要特殊字体的元素,可以考虑将文本设计为图片。
• 大量静态文本的字体优化:对于静态页面或固定文案,采用字体压缩技术可以显著减少字体文件的大小。
【字体文件放置位置】
需要注意的是,只有放置在resources/rawfile目录下的字体文件才能被引用。如果尝试从其他目录(如font)加载字体文件,则会收到错误提示“Only resources in the rawfile folder can be referenced”。
结论
通过上述讨论,我们了解到在HarmonyOS 11中使用自定义字体的基本方法和注意事项。正确地使用字体不仅可以提升应用的美观度,还可以优化性能。希望本文能够帮助开发者们在实际开发过程中更好地应用这些知识。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了