SVG 文本 – SVG text, SVG textPath

SVG 允许制作三种类型的图形对象:矢量图形、图像和文本。同样,对于形状,SVG 文本元素可以应用坐标系转换、剪切和样式设置。在本文中,我们将考虑如何将文本添加到 SVG 图像中。

本文介绍了 SVG 文本元素,例如 <text><tspan><textPath>,并回顾了一些有助于在 SVG 图像中显示文本、设置文本格式和样式的常见属性。 通过详细的示例和解释,您将学习如何操纵文本位置、方向和外观。 本文还提供有关字形、字符和字体的基本信息。

字体和字形

在谈论 SVG 文本时,最好了解什么是字形、字符和字体。

字形 是用于字体字符书写的一组商定的单元中的基本图形单元。参考 W3.org的官方规范:

“A glyph represents a unit of rendered content within a font. Typically, a glyph is defined by one or more shapes such as a path, possibly with additional information such as rendering hints that help a font engine to produce legible text in small sizes”.

换句话说,字形用作字母或符号制作的一组图形路径(曲线)。

字体 是一个数据块(或一个文件),由程序在显示文本时使用的集合中各个字符的描述组成。另一方面,字体表示图形相关字形的有组织的集合,其中各种字形表示将共享针对给定字体表征的特定外观或样式。

矢量字体使用路径、贝塞尔曲线、绘图指令和数学公式来描述每个字形,因此字符轮廓可以缩放到任何大小。

字符 是字母或符号的数字表示。字符可以是控制指令、可渲染标记或修饰符,即它是文本的原子或基本单元。根据UTF-8通用字符编码标准,可以用1到4个字节来表示一个字符。

当计算机呈现字符时,它将这些字符映射到字体中的字形。

在字符串中,文本字符沿着假想的直线对齐。这条线称为 基线。一般来说,基线可以以不同的方式定向。这取决于语言和显示的字符。在大多数语言中,字符在沿着字符底部的“字母”基线上对齐。

SVG 文本内容元素

文本内容元素是导致文本在画布上呈现的 SVG 元素。 SVG 文本内容元素是:<text><tspan><textPath>

SVG text 元素

<text> 元素用于定义文本。 xy 是负责文本位置的主要属性。文本的基线从第一个文本符号的左下角开始。必须将 y 值设置为大于字体大小。否则,文本不会进入视口。

以下示例说明了如何正确指定基线的起点。 xy 设置基线起点的坐标 ( svg-text-position.svg)。

1<svg height="100" width="200" xmlns="http://www.w3.org/2000/svg">
2    <text x="10" y="6" fill="red">The text is not fully visible </text>
3    <text x="10" y="30" fill="green">The text is fully visible </text>
4</svg>

文本“两行 SVG 文本 – 一行不适合视口,但另一行适合。”

<text><tspan> 元素的属性指示书写方向、对齐方式、字体以及其他精确描述如何呈现字符的指定属性和功能。主要属性有:

x, y – 字符的绝对 x 和 y 坐标

dx, dy – 沿 x 轴或 y 轴(相对坐标)移动

rotate – 旋转应用于所有字符

textLength – 文本的渲染长度

lengthAdjust – 文本渲染长度的调整类型

<text><tspan> 元素中的 xydxdyrotate 属性通常用于需要细微位置调整才能达到视觉效果的单个角色。在示例中,xy 设置基线的起始坐标。

使用 textLength 属性,您可以设置文本的长度。然后通过调整字形的间距和大小来调整文本长度以匹配指定的长度。使用 lengthAdjust 属性,您可以指定是否同时调整字母间距和字形大小。

让我们看看如何排列文本 ( svg-text-arranging.svg):

1 <svg  height="300" width="400" xmlns="http://www.w3.org/2000/svg">
2    <text x="180" y="30" fill="red">Aspose.SVG</text>
3    <text x="180" y="60" fill="blue" textLength="140" >Aspose.SVG</text>
4    <text x="180" y="90" fill="grey" textLength="160" lengthAdjust="spacingAndGlyphs" style="direction: rtl; unicode-bidi: bidi-override">Aspose.SVG</text>
5    <text x="180" y="120" fill="green" style="text-anchor: middle" >Aspose.SVG</text>
6    <text x="260" y="90" style="writing-mode: tb">Aspose.SVG</text>
7</svg>

文本“SVG 文本排列 – 位置、文本方向和长度不同的五行相同文本。”

“红色”和“绿色”文本仅在 text-anchor 属性的位置上有所不同,该属性可以采用三个值:startmiddleend。第一种情况,默认的text-anchor是文本的左边缘,值为start。第二个 – text-anchor: middle – 是文本的中间。

属性 direction: rtl 表示“从右到左”,因此“灰色”文本会改变书写方向。对于“蓝色”和“灰色”文本设置,使用属性 textLengthlengthAdjust 提供视觉文本/字符拉伸效果。对于从上到下的文本方向,应用 writing-mode: tb 结构,其中 tb 是“从上到下”。

SVG tspan 元素

<tspan> 元素位于 <text> 元素或其他 <tspan> 元素内。作为一个子元素,<tspan> 在文本显示和格式化方面具有几个重要功能:

  1. 在 SVG 中,文本在视口内呈现为单行;它不会自动换行到另一个字符串。您可以使用 <tspan> 元素将其分成多行。每个 <tspan> 元素可以包含不同的格式和位置。

  2. 对于样式(或其他属性)设置并仅应用于文本的特定部分,您需要使用<tspan>元素。它允许您相对于父元素切换 <tspan> 元素中显示文本的样式或位置。

考虑一个简单的 <tspan>> 示例 ( svg-text.svg):

1 <svg height="300" width="600" xmlns="http://www.w3.org/2000/svg">
2    <text x="20" y="60" style="font-family:arial">
3        <tspan style="font-weight:bold; font-size:55px">ASPOSE</tspan>
4        <tspan x="50" y="90" style="font-size:20px; fill:grey">Your File Format APIs </tspan>
5    </text>
6</svg>

文本“文本指定您的文件格式 API”

具有一个或多个 <tspan> 子元素的 <text> 元素为开始新行的字符设置新位置。对于 SVG 文本格式,我们使用 xy 属性来指定文本起点。上图中的虚线表示文本在视口中的起始位置。对于文本样式,需要 style 属性的属性,例如 font-familyfont-sizefont-weight 等。

SVG 文本路径 – SVG textPath

在 SVG 中,文本不仅可以水平或垂直显示,还可以沿着任何矢量曲线显示。

SVG textPath 元素

SVG 可以沿着 <path> 元素定义的路径放置文本。这是通过 <textPath> 元素通过以下几种方式实现的:- 属性 href (xlink:href) 引用指向 <path> 元素的 URL。 – 属性 path 直接指定SVG路径数据。

path 属性和 href 属性都指定渲染字符的路径。沿曲线显示的文本大多采用属性 href 引用 <path> 元素。这是一个示例( svg-text-path.svg):

 1<svg height="300" width="800" xmlns="http://www.w3.org/2000/svg">
 2    <path id="my_path1" d="M 50 100 Q 25 10 180 100 T 350 100 T 520 100 T 690 100"  fill="transparent" />
 3    <path id="my_path2" d="M 50 100 Q 25 10 180 100 T 350 100" transform="translate(0,75)" fill="transparent" />
 4    <text>
 5        <textPath href ="#my_path1">  Aspose.SVG for .NET is flexible library for SVG files processing and fully compatible with its specifications. 
 6        </textPath>
 7        <textPath href ="#my_path2">  Aspose.SVG for .NET is flexible library for SVG files processing and fully compatible with its specifications. 
 8        </textPath>
 9    </text>
10</svg>

Text “沿 SVG 路径的 SVG 文本”

如果路径的长度短于文本大小,则仅绘制路径范围内的文本部分。在图中,第二条曲线比文本长度短,因此文本在路径末端断开。

SVG 文本可以使用 CSS 属性 设置样式,例如 font-weightfont-styletext-decorationtext-transform 等。可以用下划线、上划线和删除线来装饰。与其他 SVG 形状一样,文本可以同时设置描边和填充。您可以在 SVG 滤镜和渐变 部分中阅读有关如何设置文本样式的更多信息。

结论

SVG 文本元素(包括 <text><tspan><textPath>)是用于在 SVG 图形中渲染文本的基本 SVG 组件。 <text> 元素定义文本块,而 <tspan> 元素允许更精确地控制 <text> 中文本的样式和位置。 此外,<textPath> 元素允许文本沿着指定的路径移动。 使用 SVG 文本,您可以创建动态且具有视觉吸引力的图形,从而提高 SVG 文档的交互性和可用性。

Aspose.SVG 建议您在短时间内将文本转换为矢量,并具有专业的质量和分辨率! Text to Vector Web 应用程序旨在用矢量图形替换 SVG 文件中的文本元素。在矢量化 SVG 文本中,所有字体字形都替换为图形元素的组合。这样的文本变成矢量绘图并且无法编辑。

Text “横幅文本转矢量应用程序”

Close
Loading

Analyzing your prompt, please hold on...

An error occurred while retrieving the results. Please refresh the page and try again.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.