如何优雅地解决平台字体适应问题

简介: 对于一套好看舒适的前端设计方案,风格统一是基本要求,其中必然包括字体的统一。

2.png


前言


对于一套好看舒适的前端设计方案,风格统一是基本要求,其中必然包括字体的统一。

由于国产化进程的不断推进,冒出了不少基于 Linux 的国产操作系统,这就导致我们平时在 windows 上使用得好好的字体,在这些国产操作系统上就失效了,其原因是这些操作系统上没有安装对应的字体。


在这里,我就记录一下最近解决字体问题的一次过程。


现象


某客户在某国产系统上运行我们的项目时,脚本编辑器中出现了光标错位的问题。


分析


我们的项目中用到了 ace_editor 脚本编辑器,通过阅读源码得知,它在计算光标位置时,依靠的是字体宽度,这就要求必须使用等宽字体才行,否则,会因计算位置错误而引起光标错位。


引起上述现象的原因,说白了就是客户所使用的的操作系统中,没有安装我们项目脚本编辑器所需要的字体。


CSS 字体知识


熟悉 CSS 的同学应该都知道,我们可以通过 CSS 引入字体文件并定义字体名称,比如:


// font.css
/* 定义字体名称、引入等宽字体文件 */
@font-face {
    font-family: "bianchengsanmei";
    src: url("./font/bianchengsanmei.ttf");
}
/* 使用字体 */
.div{
    font-family: "bianchengsanmei";
    font-size: 14px;
    font-weight: normal;
}


解决方案


针对上述问题,我们的解决方案包括以下步骤:


第一步:在网上下载等宽字体文件,在这里我们选择的是 JetBrainsMono 字体;


第二步:挑选合适的字体文件,本文中选择的是 JetBrainsMono-Regular.ttf  :


1.png


第三步:将 JetBrainsMono-Regular.ttf 拷贝至 ./css/font/ 路径下,并在 CSS 文件中引入和使用:


// ./css/font.css
/* 定义字体名称、引入等宽字体文件 */
@font-face {
    font-family: "JetBrainsMono-Regular";
    src: url("./font/JetBrainsMono-Regular.ttf");
}
/* 使用字体 */
.div{
    font-family: "JetBrainsMono-Regular";
    font-size: 14px;
    font-weight: normal;
}


结果


刷新页面后,重新测试,发现脚本编辑器中的字体显示为等宽字体,且光标位置也显示正常,问题得到解决。


总结


以上的解决方案应该是最常见最普遍的字体问题解决方案,以后遇到类似的问题都可以参考这个解决。


~ 本文完,感谢阅读!


学习有趣的知识,结识有趣的朋友,塑造有趣的灵魂!



相关文章
|
监控 关系型数据库 MySQL
mysql升级和降级
mysql升级和降级
566 9
|
机器学习/深度学习 人工智能 搜索推荐
语音识别技术的现状与未来展望
【6月更文挑战第15天】**语音识别技术现状与未来:** 随AI发展,语音识别精度与速度大幅提升,应用广泛,从手机助手到智能家居。深度学习驱动技术进步,跨语言及多模态交互成为新趋势。未来,精度、鲁棒性将增强,深度学习将进一步融合,个性化和情感化交互将提升用户体验。跨领域融合与生态共建将推动技术普及,为各行业带来更多智能解决方案。但同时也需关注技术伦理和社会影响。
1156 2
|
存储 缓存 NoSQL
Linux内存性能优化总结,让你的系统更加高效!(下)
Linux内存性能优化总结,让你的系统更加高效!
|
Prometheus 监控 Cloud Native
Prometheus: ansible+consul自动发现,监控服务器
Prometheus: ansible+consul自动发现,监控服务器
937 0
|
Java 数据库连接 数据库
深入了解Java中的MyBatis Plus注解 @TableLogic:优雅实现逻辑删除功能
在数据库操作中,逻辑删除是一种常见的需求,它能够将数据标记为已删除状态而不是直接从数据库中删除。MyBatis Plus作为一款强大的ORM框架,提供了注解 `@TableLogic`,使得开发者可以轻松实现逻辑删除功能,而不必手动编写复杂的SQL语句。本文将详细介绍 `@TableLogic` 注解的用法及其在持久层开发中的应用。
4664 1
|
开发框架 JSON 前端开发
ASP.NET Web API入门介绍(一)
ASP.NET Web API入门介绍(一)
420 0
|
机器学习/深度学习
深度学习:MobileNet V2
深度学习:MobileNet V2
232 0
深度学习:MobileNet V2
|
存储 负载均衡 监控
HBase 角色介绍 | 学习笔记
快速学习 HBase 角色介绍。
449 0