前端开发小程序时使用自定义字体

简介: 不管在pc端还是移动端,开发一些图表统计或者数字显示的时候,往往UI效果里需要一些自定义字体来增加显示效果和美观度,各个系统提供的系统字体很难满足需求

不管在pc端还是移动端,开发一些图表统计或者数字显示的时候,往往UI效果里需要一些自定义字体来增加显示效果和美观度,各个系统提供的系统字体很难满足需求,比如下图中的数字展示,UI使用了一款叫“DINPro-Bold”的国外字体。

web项目

在web项目中,我们可以直接将字体文件放置在代码包中或者通过静态资源库下载,不过这样会增加代码包的大小。

小程序项目

在小程序中,微信有提供一个字体下载的接口 wx.loadFontFace:

wx.loadFontFace({
   
   
  family: 'Bitstream Vera Serif Bold',
  source: 'url("https://sungd.github.io/Pacifico.ttf")',
  success: () => {
   
   
    console.log
  }
})

存在的问题

上面这些方案的缺点:要么增加了代码包大小,要么需要用户下载到本地。

对于这种我们仅仅只是为了数字展示的,其实是不需要整套字体字库文件的,尤其中文字库大的几十上百M,下载流量也费钱呀!

比如上图中的数字展示其实只需要0-9和英文逗号总共11个字符就可以了,这样我们可以先在网上找到字体文件下载下来,然后通过FontCreator这个软件将“DINPro-Bold”这个整套字库文件删掉只保留需要的11个字符,再导出为手机端需要的ttf字体格式:
1.png

上图中我导出的numFont.ttf字体文件总共也才3KB,这样完全可以直接放在小程序包里使用就行了,下面就是实际做出来的效果:
2.png
使用步骤

  1. 将字体文件放入项目中,然后引入

    /* main.styl */
    @font-face
    font-family: 'numFont'
    src: url("numFont.ttf")
    font-weight: normal
    font-style: normal
    
  2. 在标签上添加类名

 <p class="num">123,034</p>
  1. 在样式中用 font-family 使用自定义字体
.num
  font-family 'numFont'
  font-size 24px
  font-weight 700
  color #333
  text-align center
  padding 48rpx 0 88rpx

需要注意的点

  1. 这种内嵌字体,使用前要核实清楚字体的版权,有版权的字体如果没有购买版权是不能内嵌的(经多方核实,上面UI使用的“DINPro-Bold”字体是有版权的,Din系列字体是德国的一款字体,在国内被方正代理了,所以最终放弃使用了,选择了谷歌出的两款免费字体替换:Graduate、Futura,所以切记这种内嵌字体使用前一定要核实清楚字体的版权问题);

  2. 手机端需要ttf的字体格式,在网上下载的大多是otf格式的。

目录
相关文章
|
4月前
|
开发框架 前端开发 JavaScript
在Vue&Element前端项目中,使用FastReport + pdf.js生成并展示自定义报表
在Vue&Element前端项目中,使用FastReport + pdf.js生成并展示自定义报表
|
3天前
|
前端开发 数据安全/隐私保护
.自定义认证前端页面
.自定义认证前端页面
5 1
.自定义认证前端页面
|
2月前
|
前端开发
前端引入字体文件
文章介绍了如何在前端项目中引入字体文件,并展示了具体的HTML和CSS代码示例,包括如何使用`@font-face`规则来定义字体和在页面中应用自定义字体。
64 1
前端引入字体文件
|
4月前
|
开发框架 前端开发 JavaScript
在Vue前端项目中,附件展示的自定义组件开发
在Vue前端项目中,附件展示的自定义组件开发
在Vue前端项目中,附件展示的自定义组件开发
|
7天前
|
小程序 前端开发 数据可视化
作为一个前端小白,我竟然搞定了一个小程序的交付
作为一名刚毕业的前端码农,今年毕业后就加入了一家初创公司。入职不久便接到了一个小程序开发项目,客户特别强调必须使用小程序原生语言进行开发。由于时间紧迫而合适的后端开发者暂时还没到位,老板决定让我边学边做,承担起整个项目的前后端开发工作。对于初出茅庐的我来说,这无疑是一个巨大的挑战。不仅要掌握一门新的编程语言,还要学习数据库设计、服务器部署等一系列后端技术,任务艰巨。正当我为此感到头疼时,一位前辈向我推荐了极态云。经过一番调研后发现,它简直就是为像我这样缺乏后端经验但又急需快速完成项目的人量身定做的解决方案!
作为一个前端小白,我竟然搞定了一个小程序的交付
|
15天前
|
JSON 前端开发 数据格式
前端的全栈之路Meteor篇(五):自定义对象序列化的EJSON介绍 - 跨设备的对象传输
EJSON是Meteor框架中扩展了标准JSON的库,支持更多数据类型如`Date`、`Binary`等。它提供了序列化和反序列化功能,使客户端和服务器之间的复杂数据传输更加便捷高效。EJSON还支持自定义对象的定义和传输,通过`EJSON.addType`注册自定义类型,确保数据在两端无缝传递。
|
22天前
|
小程序
微信小程序动态tabBar实现:基于自定义组件,灵活支持不同用户角色与超过5个tab自由组合(更新版)
微信小程序动态tabBar实现:基于自定义组件,灵活支持不同用户角色与超过5个tab自由组合(更新版)
297 1
|
23天前
|
小程序 搜索推荐 API
微信小程序:自定义关注公众号组件样式
尽管关注公众号组件的样式固定且不可修改,但产品经理的需求却需要个性化的定制。在这种情况下,我们需要寻找解决方案,以满足这些特殊需求,尽管这可能有点棘手。
51 0
微信小程序:自定义关注公众号组件样式
|
2月前
|
前端开发
【前端web入门第三天】02 CSS字体和文本
本文详细介绍了CSS中字体和文本的相关属性。字体部分涵盖字体大小、粗细、样式、行高、字体族及`font`复合属性,通过具体示例展示了如何设置和使用这些属性。文本部分则讲解了文本缩进、对齐方式、修饰线及文字颜色等属性,并提供了实用的代码示例。此外,还简要介绍了调试工具中的一些细节,如错误属性标识和属性生效状态的控制。
64 28
|
22天前
|
资源调度 前端开发 安全
前端实战:基于Verdaccio搭建私有npm仓库,轻松上传与下载自定义npm插件包
前端实战:基于Verdaccio搭建私有npm仓库,轻松上传与下载自定义npm插件包
43 0