首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

鸿蒙应用示例:字体的使用和注意事项记录

  • 25-03-07 14:21
  • 3416
  • 11719
blog.csdn.net

【使用效果】

首先去下载字体:https://www.iconfont.cn/fonts/detail?spm=a313x.fonts_index.i1.d9df05512.4e963a81vR5lpw&cnid=adI1E7HF7yme

【字体注册与使用】

在HarmonyOS中,可以通过font.registerFont方法来注册一个新的字体,使其可以在整个应用中使用。下面是一个简单的示例代码,展示了如何在页面组件中注册并使用自定义字体:

src/main/ets/entryability/EntryAbility.ets

  1. import { UIAbility } from '@kit.AbilityKit';
  2. import { font, window } from '@kit.ArkUI';
  3. export default class EntryAbility extends UIAbility {
  4. onWindowStageCreate(windowStage: window.WindowStage): void {
  5. windowStage.loadContent('pages/Page114', () => {
  6. // familySrc支持RawFile
  7. font.registerFont({
  8. familyName: 'Alibaba_PuHuiTi_P3',
  9. familySrc: $rawfile('Alibaba_PuHuiTi_P3.ttf')
  10. })
  11. });
  12. }
  13. }

src/main/ets/pages/Page114.ets

  1. @Entry
  2. @Component
  3. struct Page114 {
  4. @State message: string = 'Hello World';
  5. build() {
  6. Row() {
  7. Column() {
  8. Text(`引入指定字体:${this.message}`)
  9. .align(Alignment.Center)
  10. .fontSize(20)
  11. .fontFamily('Alibaba_PuHuiTi_P3')
  12. Text(`当前默认字体:${this.message}`)
  13. .align(Alignment.Center)
  14. .fontSize(20)
  15. }
  16. .width('100%')
  17. }
  18. .height('100%')
  19. }
  20. }

【注意事项】

1. 预览器限制:

如果像上述示例那样在EntryAbility中使用font.registerFont注册新字体,那么在使用预览器时将看不到字体效果。原因是预览器不会执行EntryAbility的生命周期方法,包括onWindowStageCreate。因此,为了在预览器中查看效果,可以在页面组件的生命周期钩子(如aboutToAppear)中注册字体。

  1. import { font } from '@kit.ArkUI';
  2. @Entry
  3. @Component
  4. struct Page114 {
  5. @State message: string = 'Hello World';
  6. aboutToAppear(): void {
  7. font.registerFont({
  8. familyName: 'Alibaba_PuHuiTi_P3',
  9. familySrc: $rawfile('Alibaba_PuHuiTi_P3.ttf')
  10. })
  11. }
  12. build() {
  13. Row() {
  14. Column() {
  15. Text(`引入指定字体:${this.message}`)
  16. .align(Alignment.Center)
  17. .fontSize(20)
  18. .fontFamily('Alibaba_PuHuiTi_P3')
  19. Text(`当前默认字体:${this.message}`)
  20. .align(Alignment.Center)
  21. .fontSize(20)
  22. }
  23. .width('100%')
  24. }
  25. .height('100%')
  26. }
  27. }

2. 免费可商用字体:

• 在开发过程中,选择合适的字体对于降低成本至关重要。以下是一些免费且可用于商业项目的字体:
• 阿里巴巴普惠体 2.0
• 站酷仓耳渔阳体
• 钉钉进步体

3. 字体压缩方案:

• 使用字体压缩工具,如font-spider,可以减少字体文件大小,提高加载速度和节省存储空间。例如,将全字体文件从8MB压缩至92KB。

4. 字体资源管理策略:

• 动态内容的字体处理:对于APP内动态展示的数据,建议使用广泛支持的内置字体。
• 特定元素的字体需求:对于少量需要特殊字体的元素,可以考虑将文本设计为图片。
• 大量静态文本的字体优化:对于静态页面或固定文案,采用字体压缩技术可以显著减少字体文件的大小。

【字体文件放置位置】

需要注意的是,只有放置在resources/rawfile目录下的字体文件才能被引用。如果尝试从其他目录(如font)加载字体文件,则会收到错误提示“Only resources in the rawfile folder can be referenced”。

结论

通过上述讨论,我们了解到在HarmonyOS 11中使用自定义字体的基本方法和注意事项。正确地使用字体不仅可以提升应用的美观度,还可以优化性能。希望本文能够帮助开发者们在实际开发过程中更好地应用这些知识。

注:本文转载自blog.csdn.net的zhongcx01的文章"https://blog.csdn.net/zhongcongxu01/article/details/142688861"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

135
HarmonyOS
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top