TextNode 表示文本节点,整个文本节点、单个字符或范围都可以有独立的颜色(填充)、字体大小、字体名称等属性。
大多数文本节点的写方法都需要在字体已经加载的情况下才可以使用, 参考 motiff.loadFontAsync
。
Text node properties
type: 'TEXT' [readonly]
节点类型,值为 "TEXT"。
clone(): TextNode
复制文本节点。默认情况下,复制的节点将被放置在 motiff.currentPage
下。
hasMissingFont: boolean [readonly]
是否使用了当前文档中不可用的字体。
textAlignHorizontal: 'LEFT' | 'CENTER' | 'RIGHT' | 'JUSTIFIED'
文本在文本框内的水平对齐方式。设置此属性需要加载字体。
textAlignVertical: 'TOP' | 'CENTER' | 'BOTTOM'
文本在文本框内的垂直对齐方式。设置此属性需要加载字体。
textAutoResize: 'NONE' | 'WIDTH_AND_HEIGHT' | 'HEIGHT' | 'TRUNCATE'
文本框大小如何调整以适应字符。设置此属性需要加载字体。
textTruncation: 'DISABLED' | 'ENDING'
当文本节点的大小小于文本内容时,是否使用省略号截断文本。
maxLines: number | null
文本节点在截断之前可以达到的最大行数。仅在 textTruncation
设置为 "ENDING" 时适用。
paragraphIndent: number
段落的缩进(第一行与左侧的偏移)。设置此属性需要加载字体。
paragraphSpacing: number
段落之间的垂直距离。设置此属性需要加载字体。
autoRename: boolean
更新文本节点中的字符时是否应更新节点的名称。如果设置为 true,名称将自动从字符中生成。
Text content
characters: string
文本节点中的原始字符串。设置此属性需要加载字体。
insertCharacters(start: number, characters: string, useStyle?: 'BEFORE' | 'AFTER'): void
在指定位置 start
处插入字符。
deleteCharacters(start: number, end: number): void
从文本中删除从 start
(包含)到 end
(不包含)的字符。
Text and text range properties
这些属性可以应用于整个文本节点,或特定范围内的部分文本。
fontSize: number | motiff.mixed
字体大小。最小值为 1。
fontName: FontName | motiff.mixed
字体 Family(例如 "Inter")和字体样式(例如 "Regular")。将此属性设置为不同的值需要加载新字体。
fontWeight: number | motiff.mixed [readonly]
字体的粗细(例如 "Regular" 为 400,"Bold" 为 700)。
textCase: TextCase | motiff.mixed
覆盖文本节点中原始字符的大小写。需要加载字体。
openTypeFeatures: { readonly [feature in OpenTypeFeature]: boolean} | motiff.mixed [readonly]
显式启用或禁用的 OpenType 特性。
textDecoration: TextDecoration | motiff.mixed
文本是否有下划线或删除线。需要加载字体。
letterSpacing: LetterSpacing | motiff.mixed
字符之间的间距。需要加载字体。
lineHeight: LineHeight | motiff.mixed
段落中文本行之间的间距。需要加载字体。
textStyleId: string | motiff.mixed
文本节点的文本属性链接到的 TextStyle 对象的 ID。需要加载字体。
hyperlink: HyperlinkTarget | null | motiff.mixed
如果文本节点恰好有一个超链接,则为 HyperlinkTarget;如果没有,则为 null。
Text range functions
这些函数可以获取和设置文本部分的文本属性。
getStyledTextSegments<StyledTextSegmentFields extends (keyof Omit<StyledTextSegment, 'characters' | 'start' | 'end'>)[]>(fields: StyledTextSegmentFields, start?: number, end?: number): Array<Pick<StyledTextSegment, StyledTextSegmentFields[number] | 'characters' | 'start' | 'end'>>
获取文本段及所需的文本属性(字体大小、文本大小写等)。
getRangeFontSize(start: number, end: number): number | motiff.mixed
获取从 start
(包含)到 end
(不包含)范围内字符的字体大小。
setRangeFontSize(start: number, end: number, value: number): void
设置从 start
(包含)到 end
(不包含)范围内字符的字体大小。需要加载字体。
getRangeFontName(start: number, end: number): FontName | motiff.mixed
获取从 start
(包含)到 end
(不包含)范围内字符的字体名称。
setRangeFontName(start: number, end: number, value: FontName): void
设置从 start
(包含)到 end
(不包含)范围内字符的字体名称。需要加载新字体。
getRangeAllFontNames(start: number, end: number): FontName[]
获取从 start
(包含)到 end
(不包含)范围内字符的所有字体名称。
getRangeFontWeight(start: number, end: number): number | motiff.mixed
获取从 start
(包含)到 end
(不包含)范围内字符的字体粗细。
getRangeTextCase(start: number, end: number): TextCase | motiff.mixed
获取从 start
(包含)到 end
(不包含)范围内字符的文本大小写。
setRangeTextCase(start: number, end: number, value: TextCase): void
设置从 start
(包含)到 end
(不包含)范围内字符的文本大小写。需要加载字体。
getRangeOpenTypeFeatures(start: number, end: number): { readonly [feature in OpenTypeFeature]: boolean} | motiff.mixed
获取从 start
(包含)到 end
(不包含)范围内字符的 OpenType 特性。
getRangeTextDecoration(start: number, end: number): TextDecoration | motiff.mixed
获取从 start
(包含)到 end
(不包含)范围内字符的文本装饰。
setRangeTextDecoration(start: number, end: number, value: TextDecoration): void
设置从 start
(包含)到 end
(不包含)范围内字符的文本装饰。需要加载字体。
getRangeLetterSpacing(start: number, end: number): LetterSpacing | motiff.mixed
获取从 start
(包含)到 end
(不包含)范围内字符的字母间距。
setRangeLetterSpacing(start: number, end: number, value: LetterSpacing): void
设置从 start
(包含)到 end
(不包含)范围内字符的字母间距。需要加载字体。
getRangeLineHeight(start: number, end: number): LineHeight | motiff.mixed
获取从 start
(包含)到 end
(不包含)范围内字符的行高。
setRangeLineHeight(start: number, end: number, value: LineHeight): void
设置从 start
(包含)到 end
(不包含)范围内字符的行高。需要加载字体。
getRangeHyperlink(start: number, end: number): HyperlinkTarget | null | motiff.mixed
获取从 start
(包含)到 end
(不包含)范围内字符的超链接。如果范围内恰好有一个超链接,则返回 HyperlinkTarget;如果没有,则返回 null。
setRangeHyperlink(start: number, end: number, value: HyperlinkTarget | null): void
设置从 start
(包含)到 end
(不包含)范围内字符的超链接。如果值为 null,则移除范围内的超链接。
getRangeFills(start: number, end: number): Paint[] | motiff.mixed
获取从 start
(包含)到 end
(不包含)范围内字符的填充。
setRangeFills(start: number, end: number, value: Paint[]): void
设置从 start
(包含)到 end
(不包含)范围内字符的填充。需要加载字体。
getRangeTextStyleId(start: number, end: number): string | motiff.mixed
获取从 start
(包含)到 end
(不包含)范围内字符的 textStyleId。
setRangeTextStyleId(start: number, end: number, value: string): void
设置从 start
(包含)到 end
(不包含)范围内字符的 textStyleId。需要加载字体。
getRangeFillStyleId(start: number, end: number): string | motiff.mixed
获取从 start
(包含)到 end
(不包含)范围内字符的 fillStyleId。
setRangeFillStyleId(start: number, end: number, value: string): void
设置从 start
(包含)到 end
(不包含)范围内字符的 fillStyleId。需要加载字体。
getRangeListOptions(start: number, end: number): TextListOptions | motiff.mixed
获取从 start
(包含)到 end
(不包含)范围内字符的 textListOptions。返回一个 TextListOptions。
setRangeListOptions(start: number, end: number, value: TextListOptions): void
设置从 start
(包含)到 end
(不包含)范围内字符的 textListOptions。
getRangeIndentation(start: number, end: number): number | motiff.mixed
获取从 start
(包含)到 end
(不包含)范围内字符的缩进。
setRangeIndentation(start: number, end: number, value: number): void
设置从 start
(包含)到 end
(不包含)范围内字符的缩进。
Base node properties
id: string [readonly]
节点的唯一标识符,例如 "42:43"。
parent: (BaseNode & ChildrenMixin) | null [readonly]
返回当前节点的父节点(如果存在)。请注意这是一个只读属性,如需修改父节点关系,请使用 appendChild 方法。
name: string
在图层面板中显示的图层名称。调用 motiff.root.name
将返回当前文件的名称(只读)。
removed: boolean [readonly]
如果节点已被删除则返回 true。对于长时间运行的插件,建议编写防御性代码检查节点是否已被用户删除。
toString(): string
返回节点的字符串表示。此方法仅用于调试目的,请勿在生产环境中依赖其具体输出格式。
remove(): void
从文档中删除此节点及其所有子节点。
Plugin data properties
getPluginData(key: string): string
获取存储在节点或样式上的自定义数据。如果指定 key 不存在,返回空字符串。
setPluginData(key: string, value: string): void
在节点或样式上存储插件私有的自定义数据。
getPluginDataKeys(): string[]
获取存储在节点或样式上的所有自定义数据的 key。
getSharedPluginData(namespace: string, key: string): string
获取存储在节点或样式上的共享数据。如果指定的 namespace 和 key 不存在,返回空字符串。
setSharedPluginData(namespace: string, key: string, value: string): void
在节点或样式上存储可供所有插件访问的共享数据。
getSharedPluginDataKeys(namespace: string): string[]
获取指定 namespace 下所有共享数据的 key。
Scene node properties
visible: boolean
节点在画布上是否可见。
locked: boolean
节点是否被锁定,防止在画布上进行某些用户交互,如选择和拖动。
componentPropertyReferences: { [nodeProperty in 'visible' | 'characters' | 'mainComponent']?: string} | null
附加在此节点上的所有组件属性。只有当节点是组件或实例的子图层时,节点才可以有 componentPropertyReferences
。否则将为 null。键值对中的值指的是由包含组件、组件集或主组件(对于实例)上的 componentPropertyDefinitions
返回的组件属性名称。
opacity: number
节点的不透明度。必须在 0 到 1 之间。
blendMode: BlendMode
此节点的混合模式。
isMask: boolean
此节点是否为 Mask。Mask 节点会遮罩其后续兄弟节点。
maskType: MaskType
此节点的 mask 类型。默认为 "ALPHA"。更改 maskType
不会设置 isMask
为 true,在使用这个属性时,你需要先判断 isMask
。
effects: ReadonlyArray<Effect>
效果数组。
effectStyleId: string
此节点关联的 EffectStyle 的 ID。
fills: ReadonlyArray<Paint> | motiff.mixed
图层的填充颜色数组。
fillStyleId: string | motiff.mixed
此节点关联的 PaintStyle 的 id。
strokes: ReadonlyArray<Paint>
图层的描边颜色数组。
strokeStyleId: string
此节点关联的 StrokeStyle 的 id。
strokeWeight: number | motiff.mixed
描边的宽度,以像素为单位。此值必须为非负数,并且可以是小数。
strokeJoin: StrokeJoin | motiff.mixed
描边顶点连接点的样式。
strokeAlign: 'CENTER' | 'INSIDE' | 'OUTSIDE'
描边相对于图形边界的对齐方式。
dashPattern: ReadonlyArray<number>
指定交替的破折号和空白长度的数字列表,以像素为单位。
strokeCap: StrokeCap | motiff.mixed
只有一个连接段的顶点的样式。
x: number
节点的水平位置。与 relativeTransform[0][2]
相同。
y: number
节点的垂直位置。与 relativeTransform[1][2]
相同。
width: number [readonly]
节点的宽度。可以使用 resize
方法更改此值。
height: number [readonly]
节点的高度。可以使用 resize
方法更改此值。
minWidth: number | null
仅适用于自动布局 Frame 及其直接子节点。值必须为正。设置为 null 以移除 minWidth
。
maxWidth: number | null
仅适用于自动布局 Frame 及其直接子节点。值必须为正。设置为 null 以移除 maxWidth
。
minHeight: number | null
仅适用于自动布局 Frame 及其直接子节点。值必须为正。设置为 null 以移除 minHeight
。
maxHeight: number | null
仅适用于自动布局 Frame 及其直接子节点。值必须为正。设置为 null 以移除 maxHeight
。
节点相对于其父节点的位置。
节点相对于其所在页面的位置。
absoluteBoundingBox: Rect | null [readonly]
不包括渲染属性(如阴影或描边)的节点边界框。此属性中的 x 和 y 表示节点在页面上的绝对位置。
layoutAlign: 'MIN' | 'CENTER' | 'MAX' | 'STRETCH' | 'INHERIT'
仅适用于自动布局 Frame 的直接子节点。确定图层是否应沿父节点的副轴拉伸。默认为 "INHERIT"。
layoutGrow: number
仅适用于自动布局 Frame 的直接子节点。确定图层是否应沿父节点的主轴拉伸。0 对应于固定大小,1 对应于拉伸。
layoutPositioning: 'AUTO' | 'ABSOLUTE'
仅适用于自动布局 Frame 的直接子节点。确定图层的大小和位置是否应由自动布局设置决定或手动调整。
absoluteRenderBounds: Rect | null [readonly]
图层的实际边界框,它包含了阴影、描边等其他实际渲染的内容。如果节点不可见,则此值为 null。
constrainProportions: boolean
调整大小时,是否保持图层的长宽比例。
rotation: number
节点的旋转角度。返回 -180 到 180 之间的值。与 relativeTransform
矩阵中的 Math.atan2(-m10, m00)
相同。设置旋转时,也会设置 m00
、m01
、m10
、m11
。
resize(width: number, height: number): void
调整节点的大小。如果节点包含具有约束的子节点,则在调整大小时也会应用这些约束。如果父节点具有自动布局,父节点的大小也会重新计算。
resizeWithoutConstraints(width: number, height: number): void
调整节点的大小,忽略子节点的约束。如果父节点具有自动布局,则导致父节点调整大小(此约束无法忽略)。
rescale(scale: number): void
缩放节点。
constraints: Constraints
相对于其父节点的约束。
exportSettings: ReadonlyArray<ExportSettings>
存储在节点上的导出设置。
exportAsync(settings?: ExportSettings): Promise<Uint8Array>
exportAsync(settings: ExportSettingsSVGString): Promise<string>
将节点导出为编码后的图像。支持多种导出格式:
- 二进制格式(返回 Uint8Array)
- SVG 字符串格式
reactions: ReadonlyArray<Reaction>
节点上的原型交互列表,包括在原型中与此节点交互的方法以及该交互的行为。