
Typesets CJK paragraphs, unifying font fallback, line breaking, punctuation spacing, hanging punctuation, justification, ruby and inline annotations; supports rich text, selection and HTML integration.
提椠是一个中日韩段落书写器。
它在各平台的字体与绘制能力之上,统一处理中文正文里的字体选择、 断行、避头尾、标点空间、两端对齐、行内空间分配与行间注。
提椠仍处于早期开发阶段,尚未发布稳定版本,公共 API 和模块结构可能继续调整。
目前可以通过 Compose 和 Web 两种前端使用提椠。Android View 模块只保留了接入接口, 还不是可直接使用的完整前端。
Compose 前端支持 Compose Desktop 和 Android 6.0 (API 23) 及以上版本:
implementation("org.tiqian:tiqian-compose:<version>")
// Material 3 项目可以改为依赖 tiqian-compose-material3,以便读取 `LocalTextStyle` 与 `LocalContentColor` 等
implementation("org.tiqian:tiqian-compose-material3:<version>")普通文本可以直接把 Compose 的 Text 换成 CjkText,已有的 AnnotatedString 和
TextStyle 也可以继续使用。
val paragraph = buildAnnotatedString {
append("编号 A-17 的青铜")
ruby("盉", "hé")
append("仍")
emphasis { append("一并保留") }
append("。")
}
CjkText(
text = paragraph,
style = MaterialTheme.typography.bodyLarge,
)CjkText 会保留源码换行,并支持常用富文本样式、行间注与链接。接入现有富文本渲染器时,
可以用 cjkTextCompatibility() 检查当前还不能保真的能力。只读正文可以用
CjkSelectionContainer 包住一个或多个 CjkText,支持选择与复制。
整篇 Markdown 正文可以使用基于提椠的提椠 Markdown, 段落排版之上,还可以统一处理代码、表格、公式、图片与脚注等。
@tiqian/prose 渐进增强服务器已经输出的正文 HTML。没有 JavaScript、加载失败或遇到暂不支持的
内容时,原文仍由浏览器排版;网站原有的字体、颜色、链接、选择与复制语义继续生效。
静态博客和 SSR 网站可以把现有正文放进 <tiqian-prose>,再导入自定义元素入口:
<tiqian-prose class="prose">
<!-- Markdown 或 SSR 生成的正文 -->
</tiqian-prose>
<style>
tiqian-prose { display: block; }
</style>
<script type="module">
import "@tiqian/prose/element";
</script>安装、命令式 API、构建期预排与运行环境见
@tiqian/prose 使用文档。
项目使用 Gradle Wrapper,并会按需准备 JDK 25 toolchain;JVM 库产物以 Java 17 为目标:
./gradlew build
./gradlew runComposeDemo在 Linux 的 XWayland 会话中,JVM 可能无法读取桌面环境的分数缩放。此时可以只为 demo 覆盖 Compose density,例如 Plasma 的 150% 缩放使用:
./gradlew runComposeDemo -PtiqianDemoDensity=1.5该属性同时缩放 demo 中的 dp、sp、Compose 控件与 CjkText;未设置时保留系统报告的 density。
@tiqian/prose 使用文档 说明 Web 安装、接入方式与构建期预排。提椠以 Mozilla Public License 2.0 发布。
提椠是一个中日韩段落书写器。
它在各平台的字体与绘制能力之上,统一处理中文正文里的字体选择、 断行、避头尾、标点空间、两端对齐、行内空间分配与行间注。
提椠仍处于早期开发阶段,尚未发布稳定版本,公共 API 和模块结构可能继续调整。
目前可以通过 Compose 和 Web 两种前端使用提椠。Android View 模块只保留了接入接口, 还不是可直接使用的完整前端。
Compose 前端支持 Compose Desktop 和 Android 6.0 (API 23) 及以上版本:
implementation("org.tiqian:tiqian-compose:<version>")
// Material 3 项目可以改为依赖 tiqian-compose-material3,以便读取 `LocalTextStyle` 与 `LocalContentColor` 等
implementation("org.tiqian:tiqian-compose-material3:<version>")普通文本可以直接把 Compose 的 Text 换成 CjkText,已有的 AnnotatedString 和
TextStyle 也可以继续使用。
val paragraph = buildAnnotatedString {
append("编号 A-17 的青铜")
ruby("盉", "hé")
append("仍")
emphasis { append("一并保留") }
append("。")
}
CjkText(
text = paragraph,
style = MaterialTheme.typography.bodyLarge,
)CjkText 会保留源码换行,并支持常用富文本样式、行间注与链接。接入现有富文本渲染器时,
可以用 cjkTextCompatibility() 检查当前还不能保真的能力。只读正文可以用
CjkSelectionContainer 包住一个或多个 CjkText,支持选择与复制。
整篇 Markdown 正文可以使用基于提椠的提椠 Markdown, 段落排版之上,还可以统一处理代码、表格、公式、图片与脚注等。
@tiqian/prose 渐进增强服务器已经输出的正文 HTML。没有 JavaScript、加载失败或遇到暂不支持的
内容时,原文仍由浏览器排版;网站原有的字体、颜色、链接、选择与复制语义继续生效。
静态博客和 SSR 网站可以把现有正文放进 <tiqian-prose>,再导入自定义元素入口:
<tiqian-prose class="prose">
<!-- Markdown 或 SSR 生成的正文 -->
</tiqian-prose>
<style>
tiqian-prose { display: block; }
</style>
<script type="module">
import "@tiqian/prose/element";
</script>安装、命令式 API、构建期预排与运行环境见
@tiqian/prose 使用文档。
项目使用 Gradle Wrapper,并会按需准备 JDK 25 toolchain;JVM 库产物以 Java 17 为目标:
./gradlew build
./gradlew runComposeDemo在 Linux 的 XWayland 会话中,JVM 可能无法读取桌面环境的分数缩放。此时可以只为 demo 覆盖 Compose density,例如 Plasma 的 150% 缩放使用:
./gradlew runComposeDemo -PtiqianDemoDensity=1.5该属性同时缩放 demo 中的 dp、sp、Compose 控件与 CjkText;未设置时保留系统报告的 density。
@tiqian/prose 使用文档 说明 Web 安装、接入方式与构建期预排。提椠以 Mozilla Public License 2.0 发布。