跳转到内容

各格式支持情况

同一份 JSON 在三种格式里尽量长得一样。某个格式表达不了的样式,渲染时忽略,打一条警告(同一个字段只报一次),不报错。

图例:✓ 支持;✗ 忽略并警告;— 忽略,不警告。

docx pdf html
怎么生成 docx-rs 先转成 Typst,再编译 自己拼 HTML,自带 CSS
字体 只写名字,打开时用对方电脑的字体 渲染时从本机找字体,嵌进文件 交给浏览器
图片 打包进文件 打包进文件 本地图写成 data: URI
分页 ✓ ✓ 打印或 --paged 时
页眉页脚、页码 Word 域,打开后自己算 排完版算好 只在 --paged 时
组件 docx pdf html
Heading ✓ 另外挂 Word「标题 1–6」 ✓ ✓
Text、Code、List ✓ ✓ ✓
Code 的 lineNumbers ✓ ✓ ✓
Table ✓ 部位样式逐格写 ✓ ✓
Image 只收 png、jpeg、gif、webp 不收网址 ✓
PageBreak ✓ ✓ 打印或 --paged 时
Section ✓ 每节末尾多一个空段落放节设置 ✓ --paged 时;打印只用第一节纸张
Slide 二级标题加正文,后面分页;部位 body ✗ 一张一页 一张一页(16:9 框)
docx pdf html
png、jpeg、gif、webp ✓ ✓ ✓
svg ✗,显示 alt ✓ ✓
网址 ✗,显示 alt ✗,显示 alt ✓
float 绕排 ✓ ✗,只左右对齐 ✓
objectFit ✗ ✓ ✓
opacity ✗ ✗ ✓
字段 docx pdf html
fontFamily 回退列表 只取第一个名字 ✓ ✓
italic ✓ 中文字体没有斜体 ✓
underline 双线、波浪 ✓ 画成单线,✗ ✓
underlineColor ✗ ✓ ✓
strike: "double" ✓ 画成单线,✗ ✓
caps: "small" ✗ ✓ ✓
emphasisMark ✗ ✗ ✓
scale ✓ ✗ ✗
kerning ✗ ✓ ✓
lang — ✓ ✓
颜色透明度 — ✓ ✓
字段 docx pdf html
align: "distribute" ✓ 按 justify,✗ ✓
lineHeight: { atLeast } ✓ ✓ 按固定值
autoSpace ✗ ✓ ✓
kinsoku ✗ — 默认就有 ✓
wrap: false ✗ ✗ ✓
outlineLevel ✓ — —
contextualSpacing ✗ ✗ ✗
borderBetween ✓ ✗ ✗
字段 docx pdf html
段落 padding 只在有边框时生效(内置的 Code 样式也会因此警告) ✓ ✓
radius ✗ ✓ ✓
background 底纹 ✓ 混成纯色 混成纯色
background 渐变 取第一个颜色 ✓ ✓
边框 dashDot / wave ✓ ✓ 画成 dashed / solid
borderDiagonal 尚未实现 尚未实现 尚未实现
textRotation 只在表格格子里 ✓ ✓
字段 docx pdf html
listMarkerImage ✗ ✓ ✓
listMarkerGap 写长度 按 tab,✗ ✓ ✓
tableLayout ✓ — ✓
rowBreak: false ✓ ✗ ✓
固定行高 exact ✓ ✓ 按最小高度
最小行高 ✓ 只对单行文字的格子 ✓
表头重复 ✓ ✓ 打印或 --paged 时
meta.title / author / lang — ✓ ✓
  • 默认中文字体按这个顺序找:苹方、冬青黑体、Noto Sans CJK SC、思源黑体、微软雅黑。
  • 都找不到时退回 Typst 自带字体,中文可能显示不全。
  • 自己写的 fontFamily 排在默认列表前面。

下面这些已经在开发分支上,还没发布(最新发布是 v0.1.0-alpha.2):

  • pdf、html:文字以换行结尾时,末尾补一行空行,和 Word 一样。
  • pdf:固定行高不再让字体撑高;格子里改字号,行高不变。
  • pdf:表格格子自己的行高(比如表头的 lineHeight)不再丢。
  • pdf:字在行里按字体自己的上下高度摆,不再偏上。
  • pdf:有左右缩进时,段前段后距不再丢。
  • pdf:节开头和手动分页后保留段前距,和 Word 一致。
  • pdf:字重按整个字体家族归一,MiSans 这类字重不是整百的字体也能正确加粗。
  • docx:hangingIndent 首行不再往左伸。
  • docx:绝对定位图片所在的段落不再多占一行。
  • html --paged:屏幕上节与节之间的虚线和空白去干净。