上一篇
html5搜索字体
- 行业动态
- 2025-05-06
- 4810
HTML5无内置字体搜索功能,需通过CSS引入或@font-face定义,也可借助Google Fonts等在线库实现 字体
HTML5 字体相关功能说明
基础用法与标签
HTML5 本身不提供直接操作字体的标签,但可通过以下方式控制字体:
| 标签/属性 | 作用 | 示例 |
|———|——|——|
| <canvas>
| 绘制文本时可设置字体样式 | ctx.font = 'bold 16px Arial'
|
| <svg>
| 内嵌矢量图形时定义字体属性 | <text font-family="宋体">文字</text>
|
| CSS font-family
| 设置文本字体系列 | body { font-family: 'Arial', sans-serif; }
|
CSS3 字体控制
通过 CSS3 可精细化控制字体呈现:
@font-face { font-family: 'CustomFont'; src: url('font.woff2') format('woff2'); font-weight: bold; } .text { font-family: 'CustomFont', serif; font-variant: small-caps; / 小型大写字母 / font-feature-settings: 'liga' off; / 禁用连字 / }
JavaScript 字体检测
通过 Canvas API 检测字体是否可用:
function checkFont(fontName) { const canvas = document.createElement('canvas'); const context = canvas.getContext('2d'); context.font = `72px ${fontName}`; return context.measureText('测试').width > 0; } // 示例:检查宋体是否可用 console.log(checkFont('SimSun')); // true/false
Web Font 加载方案
方法 | 特点 | 示例代码 |
---|---|---|
本地托管 | 自主控制加载,需考虑跨域 | <link rel="stylesheet" href="fonts.css"> |
Google Fonts | 丰富字体库,延迟加载 | <link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet"> |
@font-face | 自定义字体,支持多格式 | css @font-face { font-family: 'MyFont'; src: url('myfont.woff2') format('woff2'); } |
性能优化技巧
- 子集化:仅加载所需字符集(如中文字体去除拉丁字符)
- 按需加载:首屏关键内容优先加载,非必要字体延迟加载
- 压缩格式:优先使用 woff2/woff 格式(体积比 TTF 小 30-50%)
- 预加载提示:使用
font-display: swap
避免 FOUT(无字体回退闪烁)
相关问题与解答
Q1:如何判断用户设备是否安装特定字体?
A:通过 Canvas API 测量文本宽度实现:
function isFontAvailable(fontName) { const testStr = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; const canvas = document.createElement('canvas'); const ctx = canvas.getContext('2d'); ctx.font = `16px ${fontName}`; return ctx.measureText(testStr).width !== 0; } // 示例:检查思源黑体是否可用 console.log(isFontAvailable('Source Han Sans')); // true/false
Q2:如何优化 Web Font 加载速度?
A:可采用以下策略:
- 使用现代格式:优先采用 woff2/woff 格式替代 TTF/OTF
- 开启压缩:服务器启用 gzip/Brotli 压缩字体文件
- CDN 分发:通过 Cloudflare/阿里云等 CDN 加速字体传输
- 预连接优化:提前建立与字体服务器的连接
<link rel="preconnect" href="https://fonts.example.com"> <link href="https://fonts.example.com/font.woff2" rel="stylesheet