Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >HarmonyOS 开发实践 —— 基于Text的自定义字体

HarmonyOS 开发实践 —— 基于Text的自定义字体

原创
作者头像
小帅聊鸿蒙
发布于 2024-11-26 06:23:40
发布于 2024-11-26 06:23:40
2600
举报
文章被收录于专栏:鸿蒙开发笔记鸿蒙开发笔记

场景一:应用设置三方字体。

方案

  1. 在pages的同级目录下创建font目录。
  2. 将已有的ttf文件放入font目录中(或者直接放置在rewfile目录下)。
  3. 在EntryAbility.ets文件的windowStage.loadContent函数中,通过调用font.registerFont方法注册全局的自定义字体。
  4. 注册完成后在所需页面的Text组件上使用fontFamily属性即可。

核心代码

在windowStage.loadContent中进行字体的注册(可通过font.registerFont进行注册),这样注册完成后,整个应用内都可以使用。

代码语言:ts
AI代码解释
复制
onWindowStageCreate(windowStage: window.WindowStage): void {
  // Main window is created, set main page for this ability
  hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
 
  windowStage.loadContent('pages/Index', (err) => {
  font.registerFont({
    familyName:'roundFont',
    familySrc:'/font/AlimamaFangYuanTiVF-Thin.ttf'
  })
  if (err.code) {
  hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
  return;
}
hilog.info(0x0000, 'testTag', 'Succeeded in loading the content.');
});
}

在需要的页面进行使用即可。

代码语言:ts
AI代码解释
复制
@Entry
@Component
struct GlobalFont {
 
  @State imageUrl: string = 'xxxxx'
  @State bgColor: string = "#ffffff"
  @State topSafeHeight: number = 0
  @State checkedIndex: number = 0
  private swiperController: SwiperController = new SwiperController()
 
  build() {
    Column() {
      Stack() {
        Image(this.imageUrl)
          .draggable(false)
          .width("100%")
          .height('100%')
        // 使用注册自定义字体
        Text('氛围感')
          .fontFamily('roundFont')
          .fontColor('#ffffff')
          .fontSize(30)
          .fontWeight(FontWeight.Bold)
          .margin({ top: -500 })
        // 原生字体,没有使用自定义字体
        Text('听听海风的声音~')
          .fontColor('#ffffff')
          .fontSize(30)
          .margin({ top: -400 })
      }
      .width('100%')
      .height('100%')
 
    }
    .height('100%')
    .width('100%')
  }
}

场景二:使用emoji表情。

方案

emoji表情的使用可分为两种:

使用自定义的emoji时:下载需要的的ttf文件,在aboutToAppear的生命周期中进行注册,在当前页面的Text组件上设置fontFamily属性去使用。

使用系统内置的emoji时:直接在Text组件中通过unicode码加载,文字偏少时,建议这么使用。

核心代码

1.使用自定义的emoji时:在生命周期中进行注册。

代码语言:ts
AI代码解释
复制
aboutToAppear(): void {
  font.registerFont({
    // 设置的字体名
    familyName:'emoji',
    // 通过resouce的方式加载ttf文件
    familySrc:$rawfile('NotoColorEmoji-Regular.ttf')
  })
}

给Text组件设置fontFamily属性,fontFamily中的名字就是上面注册时设置的字体名,最后使用的emoji表情,就是从下载的三方emoji字体文件钟直接粘贴得到的。

代码语言:ts
AI代码解释
复制
Flex({direction : FlexDirection.RowReverse,alignItems : ItemAlign.Center}){
  Image('https://xxxxx')
    .width(50)
    .height(50)
    .borderRadius(15)
    .margin({left:10,right : 10})
  Text('通过注册自定义字体得到的emoji')
    .fontFamily('emoji')
    .fontSize(20)
    .backgroundColor('#ffc6ecf3')
    .padding(10)
    .borderRadius(20)
}
.width('90%')
.margin(20)

2.使用系统内置的emoji时:直接通过Text去加载相关的unicode码,可通过String.fromCodePoint方法对相关unicode进行解析,再通过Text展示出来。

代码语言:ts
AI代码解释
复制
Flex({direction : FlexDirection.Row,alignItems : ItemAlign.Center}){
  Image('https://xxxx')
    .width(50)
    .height(50)
    .borderRadius(15)
    .margin({left:10,right : 10})
  Text('系统内置的'+String.fromCodePoint(0x1F97A))
    .fontSize(20)
    .backgroundColor('#fff')
    .padding(10)
    .borderRadius(20)
}
.width('90%')

场景三:Text&TextArea支持icon。

方案

Text&TextArea支持icon,从iconfont的官网上下载对应的字体文件,下载完成后进行注册和使用说明。

核心代码

与场景二相同。

场景四:Text生僻字的显示。

方案

系统自带的字体不一定能展示所有的生僻字,可以下载对应的ttf文件将其加载出来。

核心代码

与场景二相同。

常见问题

Q:在page中注册字体没问题,移到UIAbility时会偶现字体注册失败,希望提供一个稳定在UIAbility注册字体的方案。

A:在onCreate中注册字体时,页面还未创建,所以字体未生效,需要在页面创建完成之后再加载字体,推荐在页面注册回调windowStage.loadContent中进行字体注册。

写在最后

如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:

  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力;
  • 关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识;
  • 想要获取更多完整鸿蒙最新学习知识点,可关注B站:码牛课堂;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SSH 远程连接中断 导致阿里云服务器程序运行终止解决方法
关于其他操作参见:https://blog.csdn.net/ancient_wind/article/details/7989015
圆号本昊
2021/09/24
3.1K0
SSH 远程连接中断 导致阿里云服务器程序运行终止解决方法
高效简单的服务器登录配置
当你拥有了属于自己的一个云服务器后,首先需要做的事情就是登录服务器。而登录服务器,作为新手可以通过云厂商提供的 dashboard 进行登录操作。但是,最简单及最方便的方式还是通过终端,使用 ssh 命令快速登录
山月
2020/05/25
1.5K0
Fix SSH客户端登录会话超时设置
通常默认公有云上的ECS远程连接,很容易断开,当你有什么事情被打断或者去操作别的机器同步做点其他事情,你会发现你SSH客户端登录窗口经常会断开掉,非常烦人,经常要重新登录。
后场技术
2020/09/03
5.8K0
Fix SSH客户端登录会话超时设置
防止ssh登录服务器的掉线
因为云服务器是我自己的,而要给十几个新手使用,所以我应该使用root权限来选择修改sshd_config文件里面的服务端参数,这样才能做到一次修改,终身受益!!!
生信技能树
2018/12/05
2.4K0
配置SSH服务远程连接空闲超时退出时间(包括SSH无法登录、登录缓慢)
编辑/etc/ssh/sshd_config配置文件,将ClientAliveInterval设置为300到900,即5-15分钟,将ClientAliveCountMax设置为0。
非著名运维
2022/06/22
9.2K0
linux ssh 登录后 空闲断开 解决方法
我们通过终端连接服务器时,当鼠标和键盘长时间不操作,服务器就会自动断开连接,我们还的需要重新连接,感觉很麻烦,总结一下解决此问题的方法
IT工作者
2022/07/28
3.1K0
配置服务器的免密码快捷登录
ssh,secure shell protocol,以更加安全的方式连接远程服务器。
山月
2022/11/02
3.5K0
配置服务器的免密码快捷登录
如何让计算机工作环境更便捷?几行简单的命令即可
过去几年里,我一直从事数据科学/研究项目,本科就做了一些与这个行业相关的工作,现在是研究生在读,也在做这方面的研究。作为一个喜欢便捷环境的人,我总是喜欢改进我的工作方式,将日常的枯燥过程变得「自动化」。在这篇文章中,我将描述如何使环境更便于使用。
机器之心
2019/05/07
6880
如何让计算机工作环境更便捷?几行简单的命令即可
保持SSH连接持续不断的配置方法
在修改服务器的一些文件的过程中,经常碰到的情况就是需要隔一段时间修改一下文件,然后需要去查阅相关的资料,等下一次想修改的时候发现ssh连接由于长时间未相应已经断开了。而且这时候终端会卡在那里,十分的不方便。所以在网上找了几个配置SSH的方法,能保证连接能够长时间不断开。 方法有两种,一般配置一种就可以。但是我为了效果更好,把他们同时配置一下:
mythsman
2022/11/14
2.1K0
mac终端如何自定义登录欢迎语
shigen看着单调的终端,突然有了一丝丝的念头,我要搞的炫酷一点。让我想到的一个场景就是:我之前在使用公司的阿里云服务器的时候,在每次登录的时候会有欢迎语,类似于这样的:
shigen
2023/12/26
3020
mac终端如何自定义登录欢迎语
Linux系统相关配置
Linux系统安装好以后,我们需要对这个系统进行简单的配置,其中主要包括以下几部分的内容:
以某
2023/03/07
2.4K0
如何用macOS玩转Linux? macOS配置Paralles 安装的 ubuntu20.04 arm64 并通过iTerm ssh自动操作虚拟机
作为一个开发者,如果想要搞一些自己的项目,就要对Linux有一些了解,而学习Linux的最好方式,就是充分使用它,Windows通过WSL,已经完美支持Linux子系统,那macOS如何玩转Linux?
zhaoolee
2022/10/04
2.9K0
如何用macOS玩转Linux? macOS配置Paralles 安装的 ubuntu20.04 arm64 并通过iTerm ssh自动操作虚拟机
mac系统ssh远程登录服务器小清新方案
Windows下有xshell,puty等一系列ssh软件,免费又好用,mac则没有。mac下虽然有SecureCrt,ZOC Terminal,但都还是收费的,虽说有破解版,但是版本落后不说,破解起来也麻烦。 经过本人一系列的研究,最终整出一套比较好用的方案,利用Shuttle+iTerm+ SSHPass来实现,这套方案清爽、轻便且实用。
皇上得了花柳病
2020/05/06
1.2K0
mac系统ssh远程登录服务器小清新方案
Linux | 如何保持 SSH 会话处于活动状态
在远程服务器管理和安全数据传输中,SSH(Secure Shell)是不可或缺的工具。然而,它的便利性和安全性有时会因常见的问题而受到损害:冻结 SSH 会话。
数据科学工厂
2023/11/02
2.2K0
Linux | 如何保持 SSH 会话处于活动状态
linux自定义SSH连接以简化远程访问
SSH (SSH client) 是一个远程访问服务器的程序,它使用户能够在远程主机上执行命令。它是最推荐的远程登录主机的方法之一,因为它旨在通过不安全的网络在两个不受信任的主机之间提供安全的加密通信。 SSH使用系统范围和用户特定(自定义)配置文件。在本教程中,我们将解释如何创建自定义ssh配置文件并使用某些选项连接到远程主机。 SSH 客户端配置文件 ssh客户端配置文件的位置: /etc/ssh/ssh_config这是默认的、系统范围的配置文件。它包含适用于ssh客户端计算机的所有用户的设置。 ~/
入门笔记
2022/06/02
1.7K0
如何保持SSH连接的linux服务器不断线
使用SecureCRT连接远程服务器,在会话选项 -> 终端设置中勾选“发送协议 NO-OP”。
明哥的运维笔记
2019/01/30
3.9K0
如何保持SSH连接的linux服务器不断线
解决SSH连接Linux超时
在开发当中经常需要登录远程服务器,于是通过 ssh 或者 putty 登录,可是一转身,这厮就自动断开了。让人非常恼火,如何解决 SSH 连接 Linux 超时自动断开?
chuchur
2022/10/25
10K0
SSH——云服务器SSH经常断开如何处理
基于安全考虑,云服务器的 ~c SSH Server c~ 闲置一段时间会自动断开,不过这个闲置的一段时间说实话太短了,很容易断开,所以改造下吧; 客户端: SCRT
思索
2024/08/15
4620
Mac电脑iTerm2链接Linux服务器断线解决方案
用Windows链接Linux服务器,方式很多,我最经常用的是xshell。但是xshell没有mac版,那用mac电脑,比较好的命令行软件是什么呢?我用的是iTerm2 ,这个功能确实蛮强大,很多人都在用。但是,你用iTerm2 链接远程Linux服务器,假如你去干别的,一会再回到iTerm2 ,你会发现iTerm2 断线了,苦逼的还要再次进行链接,好麻烦!针对这个有没有什么好的解决方案呢?
星哥玩云
2022/07/24
2.5K0
解决macOS下ssh空闲一段时间自动断开的问题
使用ssh登录linux服务器后,在后台放置一段时间,会发现会自动断开或者卡死无法输入
Huramkin
2018/09/17
4K0
推荐阅读
相关推荐
SSH 远程连接中断 导致阿里云服务器程序运行终止解决方法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档