免费引入商用黑体字体系列整理及 CSS 字体引入亲妈式教程

声明:本文转载并基于 免费引入商用黑体字体系列整理及 CSS 字体引入亲妈式教程(20240915更新) – 风记星辰 进行修改和完善。以下为正文内容:


在现代网页设计中,字体的选择对于用户体验和视觉效果至关重要。鉴于系统默认的微软雅黑字体在某些设计场景下略显陈旧,许多开发者和设计师倾向于引入更现代的无衬线字体,如苹果的苹方(PingFang SC)。这样做不仅能优化在 macOS 设备上的显示,也可能(在用户已安装相应字体的前提下)改善 Windows 系统上的视觉呈现。

本文将整理一系列免费可商用的黑体(无衬线)字体资源,并提供详尽的 CSS 字体引入教程。

1. 免费可商用字体列表及引用资源

1.1 字体提供方站点

以下是一些提供免费可商用字体或有相关计划的官方站点:

服务商 链接 备注
Google Fonts https://fonts.google.com 国内访问可能需代理
Adobe Fonts https://fonts.adobe.com 通常需 Creative Cloud 订阅授权
阿里巴巴普惠体 https://fonts.alibabagroup.com 免费商用
钉钉进步体 https://page.dingtalk.com/wow/dingtalk/default/dingtalk/y-W5aF3_ZJwzulU0nceIl 免费商用
斗鱼追光体 https://www.douyu.com/topic/douyuZGT 免费商用
快看世界体 https://www.kuaikanmanhua.com/webs/fontPromotion 免费商用
Mi Sans (小米) https://hyperos.mi.com/font/zh/ 免费商用
HarmonyOS Sans (华为) https://developer.huawei.com/consumer/cn/design/resource-V1 免费商用
OPPO Sans https://open.oppomobile.com/new/developmentDoc/info?id=13223 免费商用

1.2 网页 CDN 引入

部分字体提供了 CDN 链接,方便直接在网页中引入:

字体名称 服务商/托管方 字重范围 CDN 链接 (CSS 或 WOFF2)
Noto Sans SC (思源黑体简体中文) Google 可变 https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@100..900&display=swap
Mi Sans 小米 (官方CDN) 可变 https://cdn-font.hyperos.mi.com/font/css?family=MiSans:0:Chinese_Simplify,Latin&display=swap
Mi Sans VF (可变字体版本) 小米 (官方CDN) 可变 https://cdn-font.hyperos.mi.com/font/css?family=MiSans_VF:VF:Chinese_Simplify,Latin&display=swap
HarmonyOS Sans Bilibili CDN 400 (Regular) https://s1.hdslb.com/bfs/static/jinkela/long/font/regular.css
Bilibili CDN 500 (Medium) https://s1.hdslb.com/bfs/static/jinkela/long/font/medium.css
OPPO Sans ¹ OPPO (官方CDN) 400 (Regular) https://code.oppo.com/content/dam/oppo/common/fonts/font2/new-font/OPPOSansOS2-5000-Regular.woff2
OPPO (官方CDN) 500 (Medium) https://code.oppo.com/content/dam/oppo/common/fonts/font2/new-font/OPPOSansOS2-5000-Medium.woff2
华康金刚黑 (DFPKingGothicGB) ² 字节跳动 CDN 400 (Regular) https://fonts.bytedance.com/dfd/api/v1/css?family=DFPKingGothicGB-Regular&display=swap
字节跳动 CDN 500 (Medium) https://fonts.bytedance.com/dfd/api/v1/css?family=DFPKingGothicGB-medium&display=swap

注释:

  1. OPPO Sans 的官方 CDN WOFF2 文件似乎截取了约 5000 个常用字,可能导致生僻字无法显示。
  2. 华康金刚黑体与苹方字体关系密切,商业使用强烈建议确认授权情况。虽然 CDN 链接可跨域使用,但务必谨慎,避免潜在的版权风险。

2. 如何在 CSS 中引入字体

获取字体链接后,根据链接类型(CSS 文件或字体文件如 WOFF2),引入方式有所不同。

2.1 引入 CSS 字体链接

如果获取的是一个 .css 文件的链接(如 Google Fonts, Mi Sans 的 CSS 链接等),有两种常见引入方式:

方式一:在 HTML <head> 中使用 <link> 标签引入

<link rel='stylesheet' href='CSS字体链接地址'>

例如:

<link rel='stylesheet' href='https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@100..900&display=swap'>

方式二:在你的 CSS 文件中使用 @import 规则引入

@import url('CSS字体链接地址');

例如:

@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@100..900&display=swap');

注意@import 规则建议放在 CSS 文件的最顶部。

2.2 引入 WOFF2 等字体文件链接

如果获取的是直接指向 .woff2 (或其他字体格式如 .ttf, .otf) 文件的链接(如表格中 OPPO Sans 的 WOFF2 链接),需要在你的 CSS 文件中使用 @font-face 规则进行定义:

@font-face {
  font-family: 'YourFontName'; /* 1. 定义字体族名称,后续在 CSS 中使用 */
  src: url('字体文件链接.woff2') format('woff2'); /* 2. 指定字体文件的路径和格式 */
  font-weight: 400; /* 3. 定义该字体文件对应的字重 */
  font-style: normal; /* 4. 定义字体样式,如 normal, italic */
  font-display: swap; /* 5. 定义字体加载策略,swap 表示先用后备字体显示,加载完再替换 */
}

例如,为 OPPO Sans Regular (400) 定义:

@font-face {
  font-family: 'OPPOSans';
  src: url('https://code.oppo.com/content/dam/oppo/common/fonts/font2/new-font/OPPOSansOS2-5000-Regular.woff2') format('woff2');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

使用已定义的字体: 完成 @font-face 定义或 CSS 链接引入后,就可以在需要应用该字体的元素上通过 font-family 属性来指定了。

body {
  font-family: 'YourFontName', sans-serif; /* 'YourFontName' 必须与 @font-face 中定义的 font-family 一致 */
}

h1 {
  font-family: 'AnotherFontName', 'YourFontName', sans-serif; /* 可以设置备用字体 */
}

3. 字重(Font Weight)的理解与应用

浏览器默认文本字重通常是 400 (normal)。如果希望标题等元素使用更粗的字重,可以利用 font-weight 属性。结合 @font-face 定义,有两种常见的处理不同字重字体文件的方式:

3.1 情况一:相同 font-family 名称,不同 font-weight

为同一字体族的不同字重文件定义相同的 font-family 名称,但在 @font-face 中指定各自对应的 font-weight 值。

/* 定义 Regular 字重 */
@font-face {
  font-family: 'OPPOSans';
  font-weight: 400; /* normal */
  font-display: swap;
  src: url(path/to/OPPOSansOS2-5000-Regular.woff2) format('woff2');
}

/* 定义 Medium 字重 */
@font-face {
  font-family: 'OPPOSans';
  font-weight: 500; /* medium */
  font-display: swap;
  src: url(path/to/OPPOSansOS2-5000-Medium.woff2) format('woff2');
}

使用时: 通过 font-weight 属性来切换字重。

body {
  font-family: 'OPPOSans', sans-serif;
  font-weight: 400; /* 默认使用 Regular 字重 */
}

h1 {
  /* h1 默认会被浏览器赋予较粗的字重,如 700 (bold) */
  /* 如果想精确使用 500 字重,则明确指定 */
  font-weight: 500; /* h1 元素使用 Medium 字重 */
}

.custom-bold-text {
  font-weight: 500; /* 应用 Medium 字重 */
}

这种方式更符合 font-familyfont-weight 的语义,管理起来也更方便。

3.2 情况二:不同 font-family 名称

为不同字重的文件定义不同的 font-family 名称。

/* 定义 Regular 字重 */
@font-face {
  font-family: 'OPPOSans-Regular';
  font-weight: 400; /* 声明此字体文件本身的字重 */
  font-display: swap;
  src: url(path/to/OPPOSansOS2-5000-Regular.woff2) format('woff2');
}

/* 定义 Medium 字重 */
@font-face {
  font-family: 'OPPOSans-Medium';
  font-weight: 500; /* 声明此字体文件本身的字重 */
  font-display: swap;
  src: url(path/to/OPPOSansOS2-5000-Medium.woff2) format('woff2');
}

使用时: 直接通过不同的 font-family 名称来选择字重。

body {
  font-family: 'OPPOSans-Regular', sans-serif;
  /* font-weight: 400; 此时 font-weight 仍可用于指示,但主要靠 font-family 区分 */
}

h1 {
  font-family: 'OPPOSans-Medium', sans-serif;
  /* font-weight: 500; */
}

这种方式下,font-weight 属性仍然会影响浏览器的字体匹配逻辑,但主要通过切换 font-family 来使用不同粗细的字体。

小结:推荐使用情况一。它更符合 CSS 规范的意图,代码也更简洁易懂,便于管理和维护。确保 @font-face 中的 font-weight 与字体文件本身的字重相匹配。

4. font-display: swap 的作用

你可能注意到许多 @font-face 规则或字体 CDN 链接的 CSS 中都包含 font-display: swap;。 它的核心作用是改善用户感知的加载性能:在自定义字体文件尚未加载完成时,浏览器会立即使用后备字体(如系统默认字体)来渲染文本。一旦自定义字体加载完毕,文本会自动“交换”成新字体。

这样做可以有效避免因字体加载慢而导致的“文本空白闪烁”(FOIT, Flash of Invisible Text),确保用户能尽快看到内容。 若想深入了解字体加载策略及其影响,推荐阅读:《知乎:一种减少字体加载影响的新方法:CSS 字体描述符(译)》

5. unicode-range 优化:按需加载字符集

在一些官方提供的字体 CSS 文件中,你可能会看到 unicode-range 这个 @font-face 描述符。 它的作用是定义该 @font-face 规则所应用的 Unicode 字符范围。通过为同一字体族的不同字符集(如拉丁字母、常用汉字、生僻汉字、标点符号等)分别定义 @font-face 规则并指定不同的 unicode-range,浏览器可以仅下载页面实际使用到的字符所在的字体子集文件。

简单来说,就是将一个完整的字体文件分割成多个小块,按需加载。例如,如果一个页面只包含少量汉字,且这些汉字都属于某个预设的常用字集,那么浏览器就只需要加载包含这个常用字集的字体文件,而无需下载整个(可能非常大的)完整中文字体文件。这能显著减少不必要的流量消耗,并加快字体加载速度。

在本文列表的 CDN 链接中,使用此优化方式的字体有:

  • Noto Sans SC (Google)
  • Mi Sans (小米)
  • HarmonyOS Sans (Bilibili CDN 托管的版本)
  • 华康金刚黑 (字节跳动 CDN 托管的版本)

6. 关于字体文件格式 (WOFF2)

本文示例主要使用 WOFF2 (.woff2) 字体格式。WOFF2 提供了目前最佳的压缩率和性能,被现代浏览器广泛支持。 考虑到当前浏览器内核(尤其是 Chromium 系)的趋同性,对于个人站点或面向现代用户的项目,优先使用 WOFF2 通常是最佳选择,可以适当简化对旧版浏览器兼容性的考虑。 若需了解更多字体格式(如 TTF, OTF, WOFF, EOT 等)的差异和适用场景,推荐阅读:《知乎:关于字体格式》

7. 结语

关于 Windows 系统上的字体渲染清晰度,微软雅黑由于经过微软的特别优化(如 Hinting),在特定显示环境下确实有其优势。然而,随着显示器分辨率的不断提升(例如高 DPI 屏幕的普及),许多未经特别优化的现代无衬线字体,包括苹方等,在 Windows 上的显示效果也已相当出色。

选择合适的字体并正确引入,能够显著提升网站的专业感和用户阅读体验。希望本教程能帮助你更好地在项目中使用这些优秀的免费商用字体。


消息盒子
# 您需要首次评论以获取消息 #
# 您需要首次评论以获取消息 #

只显示最新10条未读和已读信息