Skip to content

最佳实践

本文档提供使用千字网CDN的最佳实践建议,帮助你优化字体使用和提升用户体验。

性能优化

1. 精确选择字体

原则:只引用页面实际使用的字体

错误做法

css
/* 引用所有字体,浪费资源 */
@import url('https://hanzi.bluu.pl/main.css');

正确做法

css
/* 只引用需要的字体 */
@import url("https://hanzi.itedev.com/fonts/Source+Han+Sans+VF/result.css");

优势

  • 减少HTTP请求
  • 降低带宽消耗
  • 提升页面加载速度

2. 使用加速域名

推荐域名优先级

  1. https://hanzi.itedev.com - 加速域名,速度最快
  2. https://hanzi.bluu.pl - 备用域名(仅可在Codeberg Pages中使用)
  3. https://hanzi.qzz.io - Cloudflare 代理

示例

css
/* 优先使用加速域名 */
@import url("https://hanzi.itedev.com/fonts/Source+Han+Sans+VF/result.css");

3. 合理设置 font-display

不同场景的推荐值

场景推荐值说明
关键标题block确保字体加载完成再显示
正文文本swap快速显示内容,提升体验
装饰性字体optional可选字体,不影响核心内容

示例

css
/* 标题使用 block */
h1, h2, h3 {
    font-family: 'Source Han Sans VF', sans-serif;
    font-display: block;
}

/* 正文使用 swap */
p, div {
    font-family: 'Source Han Sans VF', sans-serif;
    font-display: swap;
}

4. 预加载关键字体

适用场景

  • 首屏关键字体
  • 品牌字体
  • 重要标题字体

实现方法

html
<head>
    <!-- 预加载字体CSS -->
    <link rel="preload" href="https://hanzi.itedev.com/fonts/Source+Han+Sans+VF/result.css" as="style">
    
    <!-- 预加载字体文件 -->
    <link rel="preload" href="https://hanzi.itedev.com/fonts/Source+Han+Sans+VF/xxx.woff2" as="font" crossorigin>
    
    <link rel="stylesheet" href="style.css">
</head>

5. 避免重复引用

错误做法

css
/* 在多个文件中重复引用同一字体 */
/* main.css */
@import url("https://hanzi.itedev.com/fonts/Source+Han+Sans+VF/result.css");

/* header.css */
@import url("https://hanzi.itedev.com/fonts/Source+Han+Sans+VF/result.css");

/* footer.css */
@import url("https://hanzi.itedev.com/fonts/Source+Han+Sans+VF/result.css");

正确做法

css
/* 在主CSS文件中引用一次 */
/* main.css */
@import url("https://hanzi.itedev.com/fonts/Source+Han+Sans+VF/result.css");

/* 其他CSS文件直接使用字体 */
/* header.css */
h1 {
    font-family: 'Source Han Sans VF', sans-serif;
}

/* footer.css */
footer {
    font-family: 'Source Han Sans VF', sans-serif;
}

用户体验

1. 设置合理的字体回退

原则:确保在任何情况下都有可用的字体

示例

css
body {
    font-family: 'Source Han Sans VF', 
                 'PingFang SC', 
                 'Microsoft YaHei', 
                 sans-serif;
}

回退顺序

  1. 千字网CDN字体
  2. 系统中文字体
  3. 系统默认无衬线字体

2. 优化字体大小和行高

推荐值

css
body {
    font-size: 18px;      /* 适合大多数屏幕 */
    line-height: 1.6;     /* 提升可读性 */
}

h1 {
    font-size: 2em;       /* 相对大小 */
    line-height: 1.2;     /* 标题行高较小 */
}

p {
    font-size: 1em;       /* 继承body大小 */
    line-height: 1.6;     /* 正文行高较大 */
}

3. 响应式字体大小

移动端优化

css
/* 移动端使用较小字体 */
@media (max-width: 768px) {
    body {
        font-size: 16px;
    }
    
    h1 {
        font-size: 1.5em;
    }
}

/* 桌面端使用标准字体 */
@media (min-width: 769px) {
    body {
        font-size: 18px;
    }
    
    h1 {
        font-size: 2em;
    }
}

4. 避免字体闪烁

方法

  1. 使用 font-display: swap
  2. 预加载字体
  3. 设置合理的回退字体

示例

css
@font-face {
    font-family: 'Source Han Sans VF';
    font-display: swap;
}

body {
    font-family: 'Source Han Sans VF', 'PingFang SC', sans-serif;
}

开发实践

1. 使用CSS变量管理字体

优势:便于统一管理和修改

示例

css
:root {
    --font-primary: 'Source Han Sans VF';
    --font-secondary: 'Source Han Serif VF';
    --font-mono: 'Source Han Sans VF', monospace;
}

body {
    font-family: var(--font-primary), sans-serif;
}

h1, h2, h3 {
    font-family: var(--font-secondary), serif;
}

code, pre {
    font-family: var(--font-mono);
}

2. 模块化字体引用

推荐结构

styles/
├── base/
│   ├── fonts.css      # 字体引用
│   ├── reset.css      # 样式重置
│   └── typography.css # 排版样式
├── components/
│   ├── button.css
│   └── card.css
└── pages/
    ├── home.css
    └── about.css

base/fonts.css

css
@import url("https://hanzi.itedev.com/fonts/Source+Han+Sans+VF/result.css");
@import url("https://hanzi.itedev.com/fonts/Source+Han+Serif+VF/result.css");

base/typography.css

css
body {
    font-family: 'Source Han Sans VF', sans-serif;
    font-size: 18px;
    line-height: 1.6;
}

h1, h2, h3 {
    font-family: 'Source Han Serif VF', serif;
}

3. 条件加载字体

适用场景:不同页面使用不同字体

示例

css
/* 首页使用无衬线字体 */
.home-page {
    font-family: 'Source Han Sans VF', sans-serif;
}

/* 文章页使用衬线字体 */
.article-page {
    font-family: 'Source Han Serif VF', serif;
}

4. 使用字体加载事件

JavaScript 示例

javascript
document.fonts.ready.then(function () {
    console.log('所有字体加载完成');
    // 执行字体加载后的操作
});

document.fonts.load('16px "Source Han Sans VF"').then(function () {
    console.log('特定字体加载完成');
    // 执行特定字体加载后的操作
});

维护建议

1. 定期检查字体更新

建议频率:每月检查一次

检查内容

  • 字体文件是否有更新
  • 字体版本是否有变化
  • 字体授权是否有变更

2. 监控字体加载性能

工具推荐

  • Google PageSpeed Insights
  • Lighthouse
  • WebPageTest

关键指标

  • 字体加载时间
  • 首次内容绘制(FCP)
  • 最大内容绘制(LCP)

3. 备份字体配置

建议做法

  1. 保存字体引用配置
  2. 记录字体版本信息
  3. 建立回退方案

示例配置记录

markdown
## 字体配置记录

### 2026-03-27
- 主字体:Source Han Sans VF
- 衬线字体:Source Han Serif VF
- CDN域名:https://hanzi.itedev.com
- 版本:1.0.0

4. 测试字体兼容性

测试浏览器

  • Chrome(最新版本)
  • Firefox(最新版本)
  • Safari(最新版本)
  • Edge(最新版本)

测试设备

  • 桌面端(Windows、macOS、Linux)
  • 移动端(iOS、Android)
  • 平板设备

5. 优化字体使用策略

定期评估

  • 是否所有引用的字体都在使用
  • 是否有更合适的字体替代
  • 是否需要调整字体回退策略

优化建议

  • 移除未使用的字体引用
  • 合并功能相似的字体
  • 更新字体回退列表

常见错误

1. 过度使用字体

错误:引用过多字体,影响性能

解决:只引用必要的字体

2. 忽视字体回退

错误:只设置单一字体,无回退方案

解决:设置合理的字体回退链

3. 不考虑移动端

错误:只在桌面端优化字体

解决:针对移动端进行字体优化

4. 忽视字体加载状态

错误:不处理字体加载失败的情况

解决:使用字体加载事件和回退方案

总结

遵循这些最佳实践,你可以:

  1. 提升性能:减少加载时间,优化用户体验
  2. 改善兼容性:确保在各种环境下正常工作
  3. 便于维护:简化字体管理,降低维护成本
  4. 提升质量:提供更好的视觉体验

记住,好的字体使用策略是性能、兼容性和用户体验的平衡。

相关文档

基于 MIT 许可发布 | 支持开源