文本
当谈论 SVG 中的文本时,我们必须区分两个几乎完全独立的主题。一个是图像中文本的包含和显示,另一个是 SVG 字体。后者将在教程的后续部分中介绍,而本页将重点关注第一部分:将文本引入 SVG 图像。
基础知识
我们在 入门示例 中已经看到,text
元素可用于在 SVG 文档中放置任意文本。
xml
<text x="10" y="10">Hello World!</text>
x
和 y
属性决定文本在视口中的位置。text-anchor
属性,其值可以是 "start"
、"middle"
、"end"
或 "inherit"
,决定了文本从该点流动的方向。dominant-baseline
属性决定了垂直对齐方式。
与形状元素一样,文本可以使用 fill
属性着色,并使用 stroke
属性描边。两者都可以引用渐变或图案,这使得 SVG 中的文本着色非常强大。
设置字体属性
文本的一个重要部分是显示它的字体。SVG 提供了一组属性,其中许多与其 CSS 对应项相似,用于启用字体选择。以下每个属性都可以作为属性设置,或通过 CSS 声明设置:font-family
、font-style
、font-weight
、font-variant
、font-stretch
、font-size
、font-size-adjust
、letter-spacing
、word-spacing
和 text-decoration
。
其他与文本相关的元素
tspan
此元素用于标记较大文本的子部分。它必须是 text
元素或另一个 tspan
元素的子元素。一个典型的用例是将句子中的一个单词显示为粗体红色。
html
<svg width="350" height="60" xmlns="http://www.w3.org/2000/svg">
<text>
This is
<tspan font-weight="bold" fill="red">bold and red</tspan>
</text>
<style>
<![CDATA[
text {
dominant-baseline: hanging;
font: 28px Verdana, Helvetica, Arial, sans-serif;
}
]]>
</style>
</svg>
tspan
元素具有以下自定义属性
textPath
此元素通过其 href
属性获取任意路径,并沿着该路径排列其所包含的字符。
html
<svg width="200" height="100" xmlns="http://www.w3.org/2000/svg">
<path id="my_path" d="M 20,20 C 80,60 100,40 120,20" fill="transparent" />
<text>
<textPath xmlns:xlink="http://www.w3.org/1999/xlink" href="#my_path">
A curve.
</textPath>
</text>
<style>
<![CDATA[
text {
dominant-baseline: hanging;
font: 28px Verdana, Helvetica, Arial, sans-serif;
}
]]>
</style>
</svg>