# TextStyle · 文字样式容器

在同一个 textStyle 标记上保存字体、颜色等直接格式。安装此容器后，再按需安装 FontFamily、Color 等属性扩展。

在同一个 textStyle 标记上保存字体、颜色等直接格式。安装此容器后，再按需安装 FontFamily、Color 等属性扩展。

`@quirekit/extension-text-style` · **MIT**

## 编辑器适用范围
层次：**共享文档能力**
| 编辑器 | 状态 | 所需装配与边界 |
| --- | --- | --- |
| Classic | 直接支持 | [classicEditorPreset](/plugins/reference/classic-editor-preset) — 使用产品中立的 classicEditorPreset；已有能力由预设装配，不要重复追加。Word 预设会替换段落、标题和容器列表，不能把通用结构直接叠加到 Word 模型。 |
| Block | 直接支持 | [createBlockEditorPreset](/plugins/reference/create-block-editor-preset) — createBlockEditor 默认预设已装配此能力。通过 preset 中对应子项配置；图形编辑使用预设注入的工作区，宿主仍负责保存和资源。不要重复安装同名扩展。 |

“直接支持”指已有上述产品装配；具体交互、宿主服务和格式支持仍有各自条件。[状态与接入规则](/plugins/compatibility)。许可独立显示。

## 接入

```sh
pnpm add @quirekit/extension-text-style@alpha
```

在创建 Editor 时放入 `extensions`。挂载容器、视图和保存由宿主提供，见[快速开始](/guide/quick-start)。

```ts
import { TextStyle } from '@quirekit/extension-text-style'
```

安装时按包声明选择兼容版本，外部可用版本以分发源为准。本站使用工作区 Alpha；许可标签来自入口所属包，使用条件见[支持与许可](/support)。

## 按编辑器接入

以下片段沿用已挂载的宿主元素 `element`，宿主负责容器尺寸与保存；退出页面时调用 `instance.destroy()`。已有预设装配的能力不要再重复追加；需要宿主端口的入口应先完成下方配置。

### Classic

使用产品中立的 classicEditorPreset；已有能力由预设装配，不要重复追加。Word 预设会替换段落、标题和容器列表，不能把通用结构直接叠加到 Word 模型。

[classicEditorPreset](/plugins/reference/classic-editor-preset)

```ts
import { createClassicEditor } from '@quirekit/classic-editor'
import '@quirekit/classic-editor/styles.css'

const instance = createClassicEditor({ element })
```

### Block

createBlockEditor 默认预设已装配此能力。通过 preset 中对应子项配置；图形编辑使用预设注入的工作区，宿主仍负责保存和资源。不要重复安装同名扩展。

[createBlockEditorPreset](/plugins/reference/create-block-editor-preset)

```ts
import { createBlockEditor } from '@quirekit/block-editor'
import '@quirekit/block-editor/styles.css'

const instance = createBlockEditor({
  element,
  content: { type: 'doc', content: [{ type: 'paragraph' }] },
})
```

## 配置

下面是扩展自身的默认选项。预设可以覆盖这些值；它们不等于当前文档属性。配置方法见[配置插件](/plugins/configuration)。

### HTMLAttributes

序列化 HTML 时合并的属性，例如 class。它不修改 Canvas 排版，也不是文档中节点属性的默认值。

类型：`Record<string, unknown>`

默认：`{}`

### mergeNestedSpanStyles

解析嵌套 span 时，是否先合并外层与内层的样式。

类型：`boolean`

默认：`true`

## 命令与运行方式

以下命令由此扩展直接提供，均在当前 Editor 上调用。命令是否可用由已安装 schema、当前选区与保护策略决定；可以先用 `editor.can()` 查询。

| 命令 | 参数签名 |
| --- | --- |
| `toggleTextStyle` | `toggleTextStyle()` |
| `removeEmptyTextStyle` | `removeEmptyTextStyle()` |
| `setTextScale` | `setTextScale(percentage: number)` |
| `unsetTextScale` | `unsetTextScale()` |
| `setAllCaps` | `setAllCaps()` |
| `unsetAllCaps` | `unsetAllCaps()` |
| `setSmallCaps` | `setSmallCaps()` |
| `unsetSmallCaps` | `unsetSmallCaps()` |
| `toggleBold` | `toggleBold()` |
| `toggleItalic` | `toggleItalic()` |
| `setDirectBoldState` | `setDirectBoldState(value: DirectEmphasisState)` |
| `setDirectItalicState` | `setDirectItalicState(value: DirectEmphasisState)` |
| `setComplexScriptBold` | `setComplexScriptBold(value: boolean)` |
| `unsetComplexScriptBold` | `unsetComplexScriptBold()` |
| `setComplexScriptItalic` | `setComplexScriptItalic(value: boolean)` |
| `unsetComplexScriptItalic` | `unsetComplexScriptItalic()` |
| `setRunRightToLeft` | `setRunRightToLeft(value: boolean)` |
| `unsetRunRightToLeft` | `unsetRunRightToLeft()` |
| `setHiddenText` | `setHiddenText(value: boolean)` |
| `unsetHiddenText` | `unsetHiddenText()` |
| `setTextOutline` | `setTextOutline(value: boolean)` |
| `unsetTextOutline` | `unsetTextOutline()` |
| `setTextShadow` | `setTextShadow(value: boolean)` |
| `unsetTextShadow` | `unsetTextShadow()` |
| `setTextEmboss` | `setTextEmboss(value: boolean)` |
| `unsetTextEmboss` | `unsetTextEmboss()` |
| `setTextImprint` | `setTextImprint(value: boolean)` |
| `unsetTextImprint` | `unsetTextImprint()` |
| `setEmphasisMark` | `setEmphasisMark(value: TextStyleEmphasisMark)` |
| `unsetEmphasisMark` | `unsetEmphasisMark()` |
| `applyTextStyleFieldUpdates` | `applyTextStyleFieldUpdates(updates: readonly TextStyleResolvedFieldUpdate[])` |

这里只展示参数签名。接界面时见[命令与控件](/build/commands)，正文变更继续经过同一事务与历史。

## 其他公开入口

- `textStyleExtension` · `@quirekit/extension-text-style`

## 下一步

返回[全部插件](/plugins)，或阅读[配置插件](/plugins/configuration)区分配置、文档属性与命令。

自己定义能力时见[扩展开发](/build/extension)；搭建完整宿主时见[构建产品](/build)。
