全部文章

字体与图标资源

开发常用字体、图标库、Web 字体加载优化与自托管方案

目录 21 节

字体与图标资源

这页适合作为“界面视觉基础素材入口”。字体和图标选型看起来像小事,但它们会持续影响界面一致性、加载性能、跨平台显示和品牌感。

先按用途选

  • 终端和编辑器:优先编程字体
  • 中文正文排版:优先中文字体
  • Web 页面主字体:优先可控的 Web 字体方案
  • 组件图标系统:优先统一来源的图标库
  • 品牌图标和社媒图标:优先品牌类图标集

真正重要的不是资源越多越好,而是项目里是否能长期保持“同一层级用同一套视觉规则”。

编程字体

字体特点
Fira Code连字符,最流行
JetBrains MonoJetBrains 出品
Cascadia Code微软出品,Windows 终端
Maple Mono圆润风格,中文友好
MonaspaceGitHub 出品,5 种变体
# 通过 Scoop 安装
scoop bucket add nerd-fonts
scoop install FiraCode-NF
scoop install JetBrainsMono-NF

中文字体

字体说明
思源黑体Adobe + Google
思源宋体衬线体
霞鹜文楷手写风格,免费商用
得意黑现代无衬线

Web 字体

Google Fonts

<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
  href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap"
  rel="stylesheet"
/>

自托管(推荐)

使用 Fontsource

pnpm add @fontsource-variable/inter
import "@fontsource-variable/inter";

字体加载优化

/* font-display 控制加载行为 */
@font-face {
  font-family: "MyFont";
  src: url("/fonts/myfont.woff2") format("woff2");
  font-display: swap; /* 先用系统字体,加载完切换 */
}
<!-- 预加载关键字体 -->
<link
  rel="preload"
  href="/fonts/inter.woff2"
  as="font"
  type="font/woff2"
  crossorigin
/>

推荐搭配方式

一个比较稳的组合通常是:

  • 代码区:一种编程字体
  • 中文正文:一种中文主字体
  • 英文 / UI:一种无衬线 UI 字体
  • 图标:一种主图标库

尽量不要在同一个项目里长期混用过多字体和图标风格,否则界面会显得很散。

图标库

UnoCSS Icons(本项目使用)

<!-- 直接用 class -->
<span class="i-carbon-home" />
<span class="i-mdi-github" />

支持所有 Iconify 图标集。

Lucide

pnpm add lucide-vue-next
<script setup>
import { Home, Settings, User } from "lucide-vue-next";
</script>

<template>
  <Home :size="24" />
</template>

其他图标资源

资源说明
Iconify20 万+ 图标聚合
HeroiconsTailwind 官方
Phosphor风格统一,6 种粗细
Simple Icons品牌 Logo
Tabler Icons5000+ 线性图标

SVG Sprite

<!-- 定义 -->
<svg style="display:none">
  <symbol id="icon-home" viewBox="0 0 24 24">
    <path d="M3 12l9-9 9 9v9a1 1 0 01-1 1H4a1 1 0 01-1-1z" />
  </symbol>
</svg>

<!-- 使用 -->
<svg width="24" height="24"><use href="#icon-home" /></svg>

Favicon 生成

工具说明
Favicon.io文字/图片生成
RealFaviconGenerator全平台适配
SVG Favicon现代 SVG 方案
<!-- 现代 Favicon 方案 -->
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<link rel="icon" type="image/png" href="/favicon.png" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />

常见问题

本地好看,线上字体很慢

优先检查:

  • 是否用了过多字重
  • 是否加载了完整字符集
  • 是否能改为自托管
  • 是否给关键字体做了预加载

图标风格不统一

通常是因为不同组件来源不一致。更稳的做法是:

  • 选定一个主图标库
  • 只在少数品牌图标场景引入第二套
  • 给图标尺寸、线宽和语义命名定规则

为什么 Favicon 改了却不生效

浏览器缓存很重,优先尝试:

  • 强制刷新
  • 文件名加版本
  • 检查不同平台是否还在读旧的 PNG / Apple 图标

风险提醒

  • 商用项目要确认字体和图标授权范围
  • 不要为了“看起来丰富”而加载大量无用字重和图标资源
  • 中文字体体积很大,Web 场景尤其要控制加载成本

延伸阅读

参考链接

阅读建议
  • - 先读标题和摘要,再结合目录决定从哪个章节开始精读。
  • - 看到具体命令、配置或步骤时,尽量在自己的环境里同步验证。
  • - 工具类页面更适合和同类替代方案一起比较,不建议只看单一推荐。
适合谁看
  • - 希望把零散经验整理成长期可复用工作流的人
  • - 希望快速筛选在线服务并减少信息噪音的人
  • - 希望阅读时顺手建立自己的操作清单或收藏体系的人
执行前检查
  • - 先浏览标题、摘要和目录,带着问题阅读会更高效
  • - 确认要上传的数据是否敏感,并优先使用临时数据做首次验证
  • - 如果页面里提到相关文档,尽量一起打开对照,效果通常更完整
同类内容
← 上一篇直播录制工具