本文由 莫潇羽@无忆研习社(www.wuyi.wiki)撰写,转载请注明出处。
快速摘要
AI写出来的内容,排版往往是它最大的短板。 每次让模型生成研究报告、白皮书或简历,出来的东西几乎都是同一副面孔:纯白背景、默认黑字、段落之间毫无节奏感,像随手打印的Word稿子。更糟糕的是,同一份提示词运行两次,格式可能完全不一样。
Kami(紙,かみ) 是一套专门为 AI 时代设计的文档排版约束系统,由开源作者 tw93 开发,在 GitHub 上收获了大量关注。它不是 UI 框架,不是模板库,而是一套"让 AI 稳定输出印刷级文档"的规则集——8条铁律、6种文档类型、14种内嵌SVG图表,以安装为 Claude Code Skill 的形式分发,装完之后用自然语言描述需求,AI 就能稳定生成 PDF,不需要额外提示词。
核心视觉语言可以用一句话概括:暖羊皮纸底色、单一油墨蓝强调色、衬线字体承载层级、禁用冷灰和硬阴影。 整体气质更接近精心排版的纸质出版物,而不是 SaaS 仪表盘。
这套系统还内置了对"品牌配置文件"(brand.md)的支持,可以把个人信息、偏好字体、默认语言等持久化存储,让每次生成的文档都带一点"你的味道",而不是一模一样的通用模板感。
从安装成本看,Kami 以 Claude Code Skill 的形式分发,装好之后对日常操作几乎没有额外负担——你不需要学新的 DSL,不需要调 CSS,不需要懂字体间距,就是正常告诉 Claude 你要什么文档。约束在后台默默发挥作用,前台对你透明。
想看完整拆解,往下翻。
一、AI生成文档的排版困境,到底有多普遍
我自己折腾 AI 写文档已经有一段时间了。最常见的场景是让它生成行业分析报告,或者整理某个技术主题的白皮书。内容质量有时候确实不错,但每次看到输出的视觉效果,心里都会咯噔一下。
问题不是某一个点出了错,而是整体的视觉语言太廉价。
纯白背景 是第一个毛病。屏幕上的纯白页面反光太强,长时间阅读很累;打印出来之后,纸面显得薄而廉价,完全没有"专业报告"的质感。
字体选择失控 是第二个。模型不知道你在什么环境下看这份文档,有时候用系统默认衬线字体,有时候用无衬线,偶尔还会中英文字体混搭——整份文档的排版逻辑根本对不上。
段落节奏混乱 是第三个。行距时宽时窄,标题和正文的视觉权重区分不清楚,整份文档看起来像是把段落随机堆在一起,而不是经过编辑的出版物。
格式不稳定 大概是最让人崩溃的地方。同一句话"帮我生成一份公司一页纸报告",今天运行出来的是左右双栏,明天运行出来变成单栏,颜色不一样,标题字号不一样,章节顺序不一样。你根本无法预期输出结果。
信息层级失控 是另一个藏得比较深的问题。好的文档有明确的阅读路径:读者扫一眼就能知道"这页最重要的信息是什么、次要的是什么、细节在哪里"。但 AI 默认生成的文档往往把所有内容处理成同样的视觉权重——标题和正文的字号差异不明显、强调色到处都是、没有清晰的视觉层次。这样的文档对读者非常不友好,要花比必要更多的精力才能提取到关键信息。
这些问题合在一起,带来了一个很实际的结果:哪怕 AI 写出来的内容价值很高,大多数阅读者在视觉上的第一反应就是"这是 AI 生成的"——然后阅读欲望和信任感同时下降一个台阶。
我自己做过一个非正式测试:把同一份内容分别用"默认 AI 输出的 Markdown 转 PDF"和"Kami 格式生成的 PDF"发给几个朋友,让他们随便聊聊阅读感受。没有人知道这两份的内容一模一样。前者的反馈基本都是"内容还行""看起来像是网上下载的那种模板报告";后者的反馈是"这个排版挺好的""看起来很认真"——甚至有人问是不是找设计师做的。
这件事说明什么?说明版式设计本身就在传递信息——它告诉读者这份文档的作者有多认真对待自己的输出。内容和形式是一体的,形式拖累了内容,内容的价值就很难被完整传递出去。
这不是 AI 能力的问题,而是没有给 AI 一套稳定的"设计语言约束"。就像你让一个刚入职的设计师帮你做海报,但不给任何品牌规范,出来的东西当然五花八门。
换个角度想,LaTeX 之所以在学术界经久不衰,核心原因之一正是它给作者提供了一套严格的排版约束系统——每篇用 LaTeX 写的论文,读者看一眼就知道"这是认真排版过的"。但 LaTeX 的学习成本实在太高,面向普通用户很不友好。
Kami 的出现,某种程度上是在尝试把"LaTeX 约束系统的稳定性"和"自然语言指令的低门槛"结合起来:告诉 AI 一套明确的设计规则,然后让 AI 按这个规则去生成文档,普通用户不需要懂设计也不需要懂 CSS,只要会说话就够了。
Kami 想解决的,就是这个问题。
二、Kami 的诞生:从个人投资报告到开源项目
tw93 是中国开发者社区里挺有知名度的独立开发者,之前做过 Pake(一键把网页打包成桌面应用)、MiaoYan(极简 Markdown 写作工具)等项目,都有不少用户。他的项目有个共同特点:解决一个非常具体的痛点,工具做得足够小、足够专,不求大而全。
Kami 的起点非常具体——他喜欢关注股市,经常让 AI 帮他生成投资研究报告。每次生成的东西,虽然分析内容尚可,但视觉上千篇一律:灰色扁平、布局混乱、每次会话格式还不一样,结构难以扫描,排版感觉过时,翻两页就不想看了。
于是他开始自己动手,一条一条地调整:背景用什么色、强调色怎么控制、字体选哪几个、行距用多少、阴影怎么处理……每一条规则都不是拍脑袋想出来的,而是真实踩过坑之后总结出来的解决方案。调字体花了时间,调配色花了时间,WeasyPrint 的那个 rgba() 双矩形 Bug 找了一圈才定位到原因——他后来在文档里专门写了"四大常见错误",每一条都来自真实的开发教训。
后来他要做一个技术演讲,需要一套幻灯片。写幻灯片从头来太费时间,他干脆把已经调好的这套视觉规则直接用 Claude Code 生成演示稿,调了几轮,效果超出预期。这件事把他的规则集推得更完整了——加了内嵌 SVG 图表、统一了暖色调配色、让排版节奏更严格。
再后来,他把这整套规则抽象成一个独立的包,取名 Kami(紙,かみ),日语里"纸"的意思。含义很直白:文档最终落地的那个载体,就是纸。不管是 PDF、打印版还是数字阅读,所有内容都要经由"纸面"这个媒介传达,所以这个媒介本身值得被认真对待。
Kami 是 tw93"工作方法论三部曲"的最后一环:
Kaku(書く) → 你写代码的方式(AI 编程终端)
Waza(技) → 你练习工程习惯的方式
Kami(紙) → 你交付文档的方式
三个日语词,对应三个场景,组成一套完整的"个人生产力工具族"。如果你看过 tw93 其他几个项目,会发现他对"一件事只做好一件事"这个原则贯彻得很彻底——Kami 专注文档排版,不越界,不膨胀。
他还给这个工具家族起了一个带点温情的比喻:Kaku 是爸爸(写代码、扛项目)、Pake 是妈妈(安静地打包交付各种应用)、Waza 是大姐(练习工程习惯、帮助成长)、Kami 是小妹(最小的那个,专门负责把输出收拾得漂漂亮亮)。这个说法听起来有点奇特,但你要是真的同时用过这几个工具,会觉得这个比喻某种程度上还挺准——它们各自独立,专注一件事,组合起来构成一套完整的工作流。
三、设计哲学:约束即自由
在认识 Kami 的具体规则之前,有必要先理解它背后的设计观。因为这套规则的每一条都不是孤立的,而是从同一个理念推演出来的。
这个理念可以用 Kami 官网的一段"伪代码"来表达:
// 克制之中生暖意,而非颜色本身
canvas = parchment // 背景是羊皮纸,不是白纸
accent = ink_blue // 强调色只有一种
palette = warm_neutrals - cool_grays // 色板去掉所有冷色调
document = serif × hierarchy + generous_space
beauty = constraints × intention ÷ noise
"美感 = 约束 × 意图 ÷ 噪声"——这句话挺有意思的。大多数人觉得"限制越多越难看",但优秀的设计往往反过来:给得越少,反而越克制、越耐看。
Kami 的设计哲学直接借鉴了印刷出版界的传统逻辑,而不是互联网产品设计的惯例。它的 slogan 是"A thousand no's for every yes"——每一个"是"背后,是一千个"不"。
值得拿出来对比的是主流 SaaS 设计工具的思路。Notion 的设计逻辑是"给用户无限自由度"——你可以用任何颜色、任何字体、任何布局,结果是大多数人的 Notion 页面看起来像一个混搭的信息黑洞。Canva 的逻辑是"给你几千种模板"——表面上选择很丰富,但每种模板背后的视觉逻辑是割裂的,选一个商务模板和选一个活泼模板,完全是两套视觉语言,用起来反而让人选择困难。
Kami 走的是完全相反的方向:不给你选择,只给你一套规则。颜色已经定好了,字体已经定好了,行距已经定好了,阴影已经定好了。你唯一要做的,是用自然语言告诉它你要什么类型的文档、放什么内容。
这个设计选择带来的直接收益是:生成结果高度可预期,风格高度统一,视觉语言一以贯之。你今天生成的简历和明天生成的研究报告,拿在一起看,视觉上是同一个"人"做的——这正是"个人品牌"最需要的东西。
用这个框架去看 Kami 的 8 条铁律,每一条都是一个"不":不用纯白、不用第二种强调色、不用合成加粗、不用冷灰、不用硬阴影……这些"不"加在一起,就框定出了一种具体的、可复现的视觉风格。
莫潇羽@无忆研习社 觉得,这个思路对 AI 时代尤其合适。AI 生成内容的自由度太高,没有约束就没有稳定性。给 AI 一套明确的"不能做什么",反而比给一堆"可以做什么"更有用,因为后者的解释空间太大,前者则是确定性的边界。
四、8条铁律深度拆解:每一条都有它存在的理由
这是 Kami 最核心的部分,也是我折腾最久、收获最多的地方。8条规则表面上很简单,但每一条背后都有具体的设计原因,不是随便定的。
规则一:页面背景用暖羊皮纸色 #f5f4ed,不用纯白
/* Kami 背景色定义 */
--canvas: #f5f4ed; /* 暖羊皮纸色 */
--ivory: #faf9f5; /* 更浅的象牙色,用于卡片内部 */
为什么不用白色?两个原因。
第一是屏幕观感。RGB 模式下纯白(#ffffff)意味着红绿蓝三个通道全部拉满,亮度极高,在屏幕上长时间阅读会让眼睛疲劳。暖米色降低了整体亮度,减少了视觉刺激,读起来更舒服。
第二是印刷质感。纯白页面打印出来后,在普通打印纸上显得非常廉价——因为普通纸本身就是偏白的,反而更显空洞。暖米色在视觉上接近高档印刷品和精装书的用纸颜色,给整份文档带来一种"值得被认真对待"的感觉。
这个颜色是整个设计系统的情感基础,定对了,整份文档的气质就基本稳了。
规则二:强调色只有油墨蓝 #1B365D 一种,全文占比不超过 5%
--brand: #1B365D; /* 油墨蓝,唯一强调色 */
--brand-light: #2D5A8A; /* 更亮的变体,用于深色背景上的链接 */
"单一强调色"这个策略,是专业出版物排版里的常见做法。你翻一本设计感比较强的纸质书,会发现它的强调色通常只有一个,用来标注章节标题、重要术语或者引用框,其余部分全是中性色。
Kami 选择的油墨蓝 #1B365D 颜色很深,接近靛蓝,有权威感和专业感,同时在暖米色背景上对比度足够,清晰可读。
"全文占比不超过 5%"这个限制是关键。超过 5%,这个颜色就不再是"强调",而是变成"装饰"——视觉焦点被分散了,反而什么都强调不了。这条规则在 AI 生成文档里格外重要,因为没有约束的时候,模型很容易把蓝色堆得到处都是。
规则三:所有灰色必须是暖调,禁止冷蓝灰
这条规则更偏感性,但仔细想想很有道理。
Kami 的判断标准很直接:R ≈ G > B。换句话说,灰色里红通道和绿通道的值要大致相等,且都大于蓝通道。这样的灰色带有轻微的黄棕底色,视觉上是"暖的"。
典型的冷蓝灰,比如 #6b7280(Tailwind 的 gray-500),R=107、G=114、B=128,蓝通道最高,整体发冷。这种颜色是 SaaS 产品的标志性用色,用在文档里会给人一种"这是从某个管理系统里截图出来的"感觉,廉价而模板化。
Kami 要求所有中性色——正文辅助色、注释色、分割线色——都必须是暖调灰,跟背景的羊皮纸色保持统一的色温。这个细节大多数人不会直接注意到,但会下意识感受到整体色调的"温暖"或"冷漠"。
规则四:每种语言只用一种衬线字体
Kami 的字体选择非常节制:
|
语言 |
字体 |
来源 |
|
英文 |
Charter |
系统内置(macOS/Linux) |
|
中文 |
仓耳今楷 02(TsangerJinKai02) |
个人使用免费,商业授权需联系仓耳字库 |
|
日文 |
YuMincho |
系统内置(macOS) |
"每种语言只用一种衬线字体"——这条规则限制的不只是字体数量,更重要的是字体类别:统一用衬线体(Serif),不用无衬线体(Sans-serif)。
衬线字体在历史上是印刷出版的主流选择。字母末端的小钩(衬线)能引导视线沿行水平移动,降低阅读跳行的概率,在长篇正文里比无衬线字体更省力。同时,衬线字体有一种天然的"权威感"和"历史感",非常适合白皮书、研究报告、简历这类需要"被认真对待"的文档。
仓耳今楷 02 的选择很有意思。这款字体是"楷书"风格的现代数字字体,笔画骨架来自传统楷书,但针对屏幕显示做了现代化处理,在小字号下仍然清晰可辨,而且气质典雅,不会像某些商业黑体那样显得太商务。
需要注意的是:仓耳今楷 02 个人使用免费,但如果用于商业用途(比如帮客户生成对外发送的报告),需要向仓耳字库获取授权。其他字体(Charter、YuMincho)都是系统内置,无授权问题。
规则五:字重固定,不用合成加粗
/* Kami 的字重策略 */
body { font-weight: 400; } /* 正文:Regular */
h1-h6 { font-weight: 500; } /* 标题:Medium */
/* 禁止使用 600、700、800 等更高字重 */
"不加粗"是 Kami 里最反直觉的一条规则,但也是我最认可的一条。
传统观念里,加粗是强调的标准方式。但"合成加粗"(Synthetic Bold)和"字体真实加粗字重"是两回事。当你指定 font-weight: 700 但字体文件里没有 700 这个字重时,浏览器或渲染引擎会用算法把字形人工加宽,这种合成的粗体笔画模糊、边缘不清晰,在印刷 PDF 时尤其明显,会显得廉价而粗糙。
WeasyPrint(Kami 的 PDF 渲染引擎)不能合成加粗,这一点 Kami 的 design.md 里明确记录了。如果字体文件没有 700 字重,指定 700 会直接使用 400 的字形,根本不加粗,反而乱了样式预期。
Kami 的解决方案是:字重只用 400(正文)和 500(标题),需要更强的视觉存在感时,通过增大字号或者添加左侧竖线(border-left: 2pt solid var(--brand))来实现,而不是加粗字形。这种克制反而让版面更有格调。
规则六:行距三档,禁止超过 1.55
/* 三档行距 */
.line-tight { line-height: 1.1~1.3; } /* 紧凑标题 */
.line-dense { line-height: 1.4~1.45; } /* 密排正文 */
.line-reading { line-height: 1.5~1.55; } /* 阅读正文 */
/* 网页常用的 1.6+ 在此禁止 */
很多人做文档的时候会直接沿用网页的行距习惯,比如 Tailwind 默认的 leading-relaxed 大约是 1.625。这个行距在屏幕上看着很宽松舒适,但放进印刷品里就显得松散,段落之间的密度感没了,整份文档飘飘的,缺乏专业印刷物的紧凑感。
Kami 根据用途把行距分成三档,上限是 1.55。这个数值是作者在反复测试不同字号、不同页面宽度之后得出的平衡点:既能保证中文阅读的呼吸感(中文字形比英文更密,需要稍宽一点的行距),又不至于让版面飘散。
另外,Kami 对中文正文还额外增加了 letter-spacing: 0.3pt 的字间距,专门补偿仓耳今楷 02 本身的自然密度,让字行的呼吸感更均匀。英文正文则字间距为 0,符合西文排版惯例。
规则七:标签背景必须是实色 hex,禁用 rgba()
/* 错误示范(会触发 WeasyPrint Bug) */
.tag { background: rgba(27, 54, 93, 0.18); }
/* 正确做法(实色等价色) */
.tag { background: #E4ECF5; }
这条规则是一个纯技术坑,非常具体。
Kami 用 WeasyPrint 把 HTML 渲染成 PDF。WeasyPrint 在处理 rgba() 半透明背景色时,有一个已知的渲染 Bug:它会对"内边距区域"和"字形区域"分别计算透明度叠加,然后把两层叠在一起,结果就是在 Tag 组件上出现一个双层矩形——缩放 PDF 时能明显看到两个重叠的边框。
解决方法很简单:把所有 rgba() 背景色换算成对应的实色 hex。比如,油墨蓝 #1B365D 在羊皮纸背景 #f5f4ed 上以 18% 不透明度叠加,等价实色大约是 #E4ECF5。Kami 的文档里提供了一张色值换算对照表,直接查表用就行。
这个 Bug 不是 Kami 特有的,是 WeasyPrint 本身的已知问题,目前版本还没有修复。所以如果你用 WeasyPrint 生成 PDF,凡是涉及半透明背景的地方,都应该换成实色。
规则八:阴影只用描边阴影或极轻浮起阴影
/* 描边阴影(ring shadow)*/
box-shadow: 0 0 0 1pt #1B365D;
/* 极轻浮起阴影(whisper shadow)*/
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
/* 禁止用硬投影 */
/* box-shadow: 0 2px 8px rgba(0,0,0,0.3); ← 这是不对的 */
硬投影(Hard Drop Shadow)是 SaaS 界面的典型视觉语言,用来模拟"元素浮在页面上"的立体感。但放进文档里,这种投影显得很突兀——它来自屏幕交互界面的审美,和印刷品的阅读感格格不入。
Kami 用两种替代方案表达层次感:描边阴影(0 0 0 1pt,用品牌色画一条细线包围组件)和极轻浮起阴影(透明度只有 0.05,几乎感知不到,但在仔细对比时能看到微弱的立体感)。这两种方式都比硬投影克制得多,不会打断阅读节奏,印刷后也不会出现深色斑块。
五、底层渲染:为什么选 WeasyPrint,而不是其他方案
搞清楚 Kami 用什么技术生成 PDF,对理解它的很多设计决定都有帮助。
Kami 的主渲染路径是 HTML → WeasyPrint → PDF。工作流程很直观:Claude 根据 Skill 里的模板和规则生成一份 HTML 文件,WeasyPrint 读取这份 HTML(包含 CSS 样式),渲染成 PDF。
WeasyPrint 是一个纯 Python 实现的 HTML/CSS 转 PDF 引擎,跟 wkhtmltopdf(基于 Chromium 内核的老工具)不同,它完全用 Python 实现,依赖 cairo(图形渲染)、Pango(文字排版)和 GDK-PixBuf(图像处理)这三个系统级库。正因为是 Python 原生项目,它跟 Python 生态集成非常自然,可以通过代码直接控制渲染过程,而不像 wkhtmltopdf 那样需要通过命令行调用。
为什么不用 Puppeteer/Chromium?
Puppeteer 是用 Chromium 浏览器来截图或打印 PDF,技术上很普遍。问题是它对 CJK(中日韩)字体的处理有时候不稳定,字形和字间距在不同版本的 Chromium 里表现不一致,而且打印模式和屏幕渲染之间的差异不好控制。
另外,Chromium 本身体积很大,在 CI/CD 环境里或者轻量级服务器上部署成本较高。WeasyPrint 相比之下要轻量得多,没有浏览器进程的开销。
为什么不用 python-pptx?
Kami 的幻灯片格式(Slides)确实提供了 pptx 的备选路径,用于"用户明确需要可编辑 PPTX 文件"的场景。但默认路径是 WeasyPrint。原因是 python-pptx 生成的文件需要经过 LibreOffice 转换,在这个过程中 CJK 字体的字重、字间距、字形往往会出问题,字体嵌入精度不如 WeasyPrint。
WeasyPrint 的优势
WeasyPrint 是一个原生 Python 库,直接从 HTML+CSS 渲染 PDF,不依赖外部浏览器。它的优势在于:
- 字体嵌入精确:直接嵌入字体文件,像素级别的 CSS 控制能力,字形在 PDF 里和在网页预览里完全一致
- CJK 支持稳定:只要正确配置字体 fallback,中文、日文的渲染非常可靠
- 跨平台一致性高:Linux、macOS、Windows 下生成的 PDF 视觉结果接近,不像浏览器打印那样各平台有微小差异
- CSS 支持完整:支持
@page规则(控制页面尺寸、边距、页眉页脚)、break-inside: avoid(防止表格跨页断裂)等印刷专用 CSS 特性
WeasyPrint 的已知限制
当然 WeasyPrint 也有限制,Kami 的开发过程里踩了不少坑,其中最主要的是前面提到的 rgba() 双矩形 Bug——这个 Bug 是 WeasyPrint 的 alpha 通道合成逻辑缺陷,目前还没有官方修复,Kami 用"全部换成实色 hex"来绕开。
另外,WeasyPrint 不支持 JavaScript,所以文档里的图表不能用 ECharts 之类的 JS 图表库动态生成,Kami 的解决方案是用内嵌 SVG——图表直接写成静态 SVG 代码注入 HTML,颜色和字体全部跟随 Kami 设计语言,这样就绕过了 JS 依赖。
还有一点值得注意:WeasyPrint 不能合成加粗(Synthetic Bold)。当你给一个只有 400 字重的字体文件指定 font-weight: 700 时,浏览器通常会用算法拉宽字形来模拟加粗效果,但 WeasyPrint 不做这个模拟——它直接用 400 字重的字形渲染,当成"没有加粗"处理。这就是 Kami 规则五(字重只用 400 和 500)存在的技术原因之一:必须确保字体文件里真实存在需要的字重,否则样式预期会和渲染结果对不上。
六、字体系统详解:为什么这三款字体
字体选择是 Kami 里最有意思的部分之一,三种语言各选一款,有的是系统内置,有的是第三方开源,每个都有具体理由。
英文:Charter
Charter 是 1987 年由 Matthew Carter 为低分辨率激光打印机设计的衬线字体。那个年代的激光打印机分辨率只有 300 DPI 左右,要在这种条件下让字形清晰可辨,字体设计必须非常紧凑、对比度分明、衬线粗壮。
这些特点在今天反而成了优势:Charter 在各种分辨率下表现都非常稳定,无论是屏幕显示还是 PDF 打印,字形都清晰利落,既不会显得太古典,也不会太现代感。macOS 和主流 Linux 发行版都内置了 Charter,不需要额外安装。
中文:仓耳今楷 02(TsangerJinKai02)
仓耳今楷是仓耳字库出品的一套楷体字族,"今楷"这个名字透露了它的定位:今天的楷书——既有传统楷书的骨架和笔意,又针对现代数字显示做了优化。
楷书在中文字体里有一种特殊的地位。它既不像黑体那样方正工整、带着浓厚的商业气息,也不像宋体那样细腻精致、在小字号屏幕上容易显得虚。楷书的笔画有起伏、有转折、有顿挫,保留了毛笔书写的节律,这让它在视觉上天然带有一种"用心写就"的感觉,读者看到楷体排版的文档,会下意识觉得作者在认真对待这件事。
仓耳今楷 02 在这个基础上做了现代化调整:整体字形略微方正,笔画末端的钩和撇收拢得比传统楷书更干净,在 9-12pt 的正文字号下渲染清晰,放大到标题字号(16-20pt)之后字形依然端庄大方,没有那种"撑大了就变形"的感觉。
个人使用免费这一点让它在独立开发者里很受欢迎。Kami 里用的是 02 字重(对应 Regular),在正文字号(9pt 左右)下渲染清晰,在标题字号(16-20pt)下字形端庄大方。
仓耳今楷的字间距自然偏紧,所以 Kami 在中文正文上加了 letter-spacing: 0.3pt 来补偿,标题则保持 0。莫潇羽@无忆研习社 实际用下来感觉这个搭配确实比市面上很多中文文档字体好看——既不像黑体那么商务感,也没有宋体在屏幕上那种轻微的不适感。
商业使用提示:仓耳今楷 02 的个人免费授权仅限非商业用途。如果你用 Kami 生成的文档用于商业交付(比如帮客户制作对外发布的白皮书),需要从仓耳字库官网(tsanger.cn)购买商业授权。这件事要提前确认清楚,避免后续纠纷。
日文:YuMincho
YuMincho 是微软和 macOS 系统内置的日文明朝体(Mincho,即衬线体),字形优雅,CJK 覆盖完整。Kami 的日文支持是"尽力而为"(best-effort)的路径,官方建议交付前做视觉 QA 检查,确认字形渲染正常。
字体加载策略
Kami 的字体加载有优先级顺序:先从本地 checkout 加载,如果本地没有,再从 jsDelivr CDN 加载。渲染有问题的话,Claude 会在下次运行时自动下载字体。这个策略让字体加载在离线环境下也尽量可用,同时不强依赖网络。
七、六种文档类型全解析:覆盖绝大多数日常场景
Kami 支持六种(后来更新到八种)核心文档类型,每种都有专门的英中双语模板,覆盖了日常工作里最常见的文档需求。
graph TD
A[Kami 文档类型] --> B[One-Pager 一页纸]
A --> C[Long Doc 长文档]
A --> D[Letter 信函]
A --> E[Portfolio 作品集]
A --> F[Resume 简历]
A --> G[Slides 幻灯片]
A --> H[Equity Report 股权/投资报告]
A --> I[Changelog 变更日志]
One-Pager(一页纸)
适合:公司简介、产品一页介绍、会议摘要、项目说明
一页纸格式的核心挑战是"信息密度"——一张 A4 纸要装下足够多的内容,同时不能显得拥挤。Kami 的 One-Pager 模板用紧凑的双栏布局(两列 CSS Grid)、密排正文行距(1.4-1.45)和油墨蓝左侧竖线来组织信息层级,确保视觉扫描路径清晰。
这种格式我自己用得最多。让 Claude 帮你把一个复杂项目压缩成一页纸,配合 Kami 的排版约束,出来的东西发给领导或客户看,第一印象就比随便截张文档好太多。
Long Doc(长文档)
适合:白皮书、行业研究报告、技术方案、学术论文风格的分析
长文档是 Kami 设计挑战最大的格式。正文可能几十页,必须保证:长时间阅读不累眼、章节层级清晰可跳转、图表和文字穿插自然。
Kami 的 Long Doc 模板用阅读正文行距(1.5-1.55)、更宽的页面内边距、明显的章节标题油墨蓝竖线,加上每页页脚的页码,构建出一份适合深度阅读的文档节奏。
Letter(信函)
适合:推荐信、正式业务函件、申请信、合作邀请信
信函格式有很强的格式规范,Kami 的 Letter 模板遵循西方商务信函的基本结构(日期、收件方信息、称谓、正文、落款),用 Charter 衬线字体赋予正式感,右对齐的日期和署名位置符合专业惯例。
Portfolio(作品集)
适合:设计师、开发者、写作者的个人项目展示
作品集对视觉设计要求最高,需要在展示内容的同时让版面本身就传递专业感。Kami 的 Portfolio 模板预留了大图区域,用暖米色背景衬托项目截图,结合内嵌 SVG 图表展示技术架构或数据,整体气质接近高端设计工作室的作品展示。
Resume(简历)
适合:求职、内推、个人履历存档
简历是最个人化也最需要一致性的文档类型。Kami 的简历模板参考了 Anthropic 内部的视觉规范(官方文档里有提到),单栏为主,信息层级靠字号差异和左侧竖线来区分,整体干净利落,打印出来和 PDF 版本的视觉效果基本一致。
Slides(幻灯片)
适合:演讲、内部汇报、客户提案
幻灯片的默认尺寸是 280mm × 158mm(宽屏比例),用 WeasyPrint 渲染成 PDF,比 python-pptx 的 PPTX 路径字体保真度更高。如果你明确需要可编辑的 PPTX 文件,Kami 也提供备选路径,但视觉效果可能打折扣。
幻灯片模板支持双列布局(CSS Grid 两等分)和 2×2 网格布局(用 HTML table 实现,因为 CSS Grid 无法保证多 cell 对齐,table 行高天然同步)。
Equity Report 和 Changelog
这是后来新增的两种类型,分别对应投资分析报告(这也是 Kami 最初的起点场景)和软件版本变更日志。前者有专门的财务数据表格样式和图表类型,后者则有版本号、日期、变更分类的标准化格式。
八、十四种内嵌 SVG 图表:不依赖 JS,直接写进文档
这是我觉得 Kami 最聪明的设计之一。
因为 WeasyPrint 不支持 JavaScript,传统的 ECharts、Chart.js 这类动态图表在 PDF 里根本跑不起来。大多数人遇到这个问题的解决思路是:在别的地方生成图表截图,然后插入 HTML。但这样图表里的文字是图片的一部分,字体和主文档对不上,质感立刻降级。
Kami 的解决方案是内嵌静态 SVG——图表直接写成 SVG 代码,嵌在 HTML 里,颜色使用 CSS 变量(var(--brand)、var(--canvas) 等),字体用仓耳今楷 02 或 Charter,跟主文档完全一致。
当前支持的 14 种图表类型覆盖了文档里最常见的场景:
|
图表类型 |
适用场景 |
|
柱状图 |
数量对比、同期对比 |
|
折线图 |
时序数据、趋势分析 |
|
面积图 |
累积量、市场规模变化 |
|
饼图/环形图 |
占比分析 |
|
散点图 |
相关性分析 |
|
甘特图 |
项目排期、里程碑 |
|
架构图 |
系统架构、技术栈 |
|
流程图 |
业务流程、决策树 |
|
股票/K 线图 |
投资报告专用 |
|
热力图 |
密度分析、矩阵数据 |
|
桑基图 |
流量流向、资金流向 |
|
矩阵/四象限 |
战略分析、优先级排序 |
|
时间轴 |
历史事件、路线图 |
|
网络拓扑图 |
基础设施、服务关系 |
让 Claude 插入图表的方式很简单,直接在需求里描述:"帮我在第二节加一张折线图,展示过去六个月的用户增长趋势,数据是……",Skill 会自动生成对应的 SVG 代码并注入文档的正确位置。
<!-- Kami 内嵌 SVG 图表示意(简化版折线图) -->
<svg width="460" height="200" xmlns="http://www.w3.org/2000/svg"
font-family="TsangerJinKai02, Charter, Georgia, serif">
<!-- 使用 CSS 变量保证颜色跟随 Kami 主题 -->
<line x1="40" y1="10" x2="40" y2="170" stroke="#c8c4b4" stroke-width="0.5"/>
<polyline
points="40,150 120,110 200,90 280,60 360,40 440,20"
fill="none" stroke="#1B365D" stroke-width="1.5"/>
<text x="40" y="190" font-size="9" fill="#6b6556">0</text>
<text x="440" y="190" font-size="9" fill="#6b6556">6月</text>
</svg>
图表的实际代码当然比这个复杂,但逻辑就是这样:用 SVG 基础元素手写图形,颜色全部用 Kami 的色值变量,字体声明跟主文