最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
HTML5中SVG定义自定义字体样式及字间距控制
时间:2026-07-23 17:21:02 编辑:袖梨 来源:一聚教程网
SVG不支持原生@font-face和letter-spacing,但可通过外部Web字体+CSS font-family与现代letter-spacing属性实现自定义字体及字间距控制。
SVG 本身不支持定义“字体样式”(如 CSS 中的 @font-face)或直接设置字间距(letter-spacing),它依赖外部字体资源和有限的文本排版属性。但你可以通过组合 SVG 文本属性、CSS 样式及字体嵌入方式,实现类似自定义字体与精确字间距控制的效果。
使用外部 Web 字体 + SVG <text> 元素
SVG 可以继承 HTML 或内联 CSS 中加载的 Web 字体。只要字体已通过 @font-face 声明并可用,SVG 的 <text> 就能使用它:
- 在 HTML
<head>或 SVG 外部样式表中定义@font-face,指向 .woff/.woff2 等字体文件 - 为 SVG
<text>设置font-family,确保字体名与@font-face中的font-family一致 - SVG 内可内联 style:
<text style="font-family: 'MyCustomFont'; font-size: 16px;">Hello</text>
用 letter-spacing 控制字间距(需注意兼容性)
SVG 2 规范支持 CSS letter-spacing 属性,现代浏览器(Chrome/Firefox/Safari 15.4+)基本可用:
- 推荐写法:在
<text>上用内联 style 或 class 设置letter-spacing: 2px或letter-spacing: 0.1em - 避免用 SVG 1.1 的
textLength或lengthAdjust模拟字距——它们拉伸的是整体文本长度,不是等比例分发字间距 - 若需兼容旧版 Safari(<tspan> 手动偏移每个字符:
<tspan dx="0">H</tspan><tspan dx="8">e</tspan><tspan dx="8">l</tspan>…
嵌入字体子集(WOFF2 + Base64)实现真正“自定义字体”
若需确保字体随 SVG 一起分发(如导出为独立文件),可将精简后的字体 Base64 编码嵌入 SVG 的 <style> 中:
立即学习“前端免费学习笔记(深入)”;
- 用工具(如 Google Webfonts Helper 或
pyftsubset)生成仅含所需字符的 WOFF2 子集 - 转为 Base64 字符串,写入 SVG 的
<style type="text/css">内:@font-face { font-family: 'MyIconFont'; src: url(data:font/woff2;base64,d09...); } - 再在
<text>中调用该字体名即可,完全脱离外部依赖
kerning 和 font-feature-settings 的补充说明
SVG 支持部分高级排版控制,但支持度有限:
-
kerning="auto"属性可启用字体自带的字偶距(kerning),但需字体本身包含 kern 表,且浏览器支持(Chrome/Firefox 较好,Safari 部分失效) -
font-feature-settings(如"kern", "liga")在 SVG 中可通过 CSS 启用,但仅对支持 OpenType 特性的字体生效,且需显式声明font-variant-ligatures等配套属性 - 实际项目中,更稳妥的做法是预先在设计工具中调整好字距,导出为路径(
<path>),彻底绕过文本渲染差异
相关文章
- 苹果折叠屏爆料汇总:售价超两万,比例阔折叠 07-30
- 纪念碑谷3 纪念碑谷3手游玩法详解与体验评测 07-30
- 晴空双子金卡阵容推荐 晴空双子高性价比氪金养成指南 07-30
- 大周列国志全新派系系统 07-30
- 兔小萌世界甜系小房间搭建指南 兔小萌世界高颜值甜系房间布置全流程详解 07-30
- 大周列国志全新剧本包西汉剧本包 07-30