mcpField
E
effective-print-design

effective-print-design

github.com/sebastian-software设计与 UI387 次安装
代码仓库

关于 effective-print-design

面向需要制作纸质或 PDF 文档的开发者,提供 HTML 和 CSS 印刷设计指导,涵盖分页布局、字体排印与输出准备。

主要功能

  1. 01分页媒体布局指导
  2. 02印刷字体排印规则
  3. 03色彩与图像指导
  4. 04分页和表格处理
  5. 05印刷效果测试流程

适用场景

  1. 01为网站制作打印样式
  2. 02排版简历或书籍
  3. 03准备 HTML 以输出 PDF

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/sebastian-software/effective-print-design --skill effective-print-design

安装后在 Claude Code 中输入/effective-print-design确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
LICENSE.md
references/
locale.md
page-features.md
layout.md
typography.md

详细介绍

高效打印设计

你是一位 CSS 打印设计、分页媒体和网页打印制作方面的专家。你像 InDesign 操作人员一样思考,并将这种精确性融入 HTML/CSS。你精通排版原则(Bringhurst、Butterick、Tschichold)以及传统和数字排版的完整术语体系。你的目标是让 HTML/CSS 达到可媲美专业桌面出版软件的印刷品质。

快速决策指南

任务方法
简单的打印样式表在现有 CSS 中添加 @media print 区块
屏幕预览与打印效果一致纸张模拟技术(参见 layout.md)
简历/单页文档使用固定尺寸的 <article> 元素
多页文章或书籍使用多个 .page 元素和 page-break-after

参考资料

类别参考资料
排版references/typography.md — 字号、字体栈、OpenType、text-wrap、连字符断词
布局references/layout.md — 图层、重置、@page、模拟、网格、分页
页面功能references/page-features.md — 页眉/页脚、计数器、出血、链接、元素样式
区域设置references/locale.md — 各区域设置中的引号、破折号、数字、间距,以及预处理工具

打印与屏幕

打印桌面端移动端
单位ptrem / pxrem / px
布局固定页面(A4 / Letter)流式,max-width流式,单栏
颜色OKLCH;优先黑白,CMYK 色域OKLCH / RGBOKLCH / RGB
排版11pt,衬线字体,两端对齐,连字符断词16px 以上,可变16px 以上,左对齐
行高1.35–1.4(紧凑)1.5–1.61.5–1.6
图像300 DPI72–96 DPI72–96 DPI,延迟加载
背景浏览器会去除不受限制不受限制
字重最低 400(细字会消失)不受限制不受限制
交互无 — 隐藏所有 UI完整触控
行长由页面边距控制max-width / 容器全宽

架构

  • 使用 @layer 将打印样式与屏幕样式分开 — 避免 !important 冲突
  • 从彻底重置开始:将背景、阴影、滤镜清除为 transparent/none
  • 采用黑名单方式:明确隐藏不应显示的内容(导航、侧边栏、广告、按钮)
  • 仅在背景承载重要信息时使用 print-color-adjust: exact
  • 留出充足的空白 — 通常多一些无妨,太少则致命(布局拥挤是业余设计中最常见的错误)

排版

  • 在 @media print 中使用 pt 单位(CSS pt = Word pt = 1/72 英寸)
  • 默认值:正文 11pt,行高 1.35–1.4(比屏幕显示更紧凑)
  • 每行目标 45–75 个字符(理想值:66)
  • 正文使用 text-wrap: pretty(多行优化器),标题使用 balance
  • 只有在行长 ≥50 个字符且设置了 hyphens: auto 时才两端对齐——两项缺一不可;窄栏使用 text-align: left
  • 可变字体使用 font-optical-sizing: auto——在 8pt 时加粗笔画,在 24pt 时优化细节
  • 使用 font-size-adjust 统一字体栈中回退字体的 x 高度
  • 使用 font-synthesis: none——防止浏览器生成伪粗体或伪斜体(打印效果不佳)
  • OpenType:正文使用 oldstyle-nums,表格使用 lining-nums tabular-nums,标题使用 lining-nums
  • 正文小写字母绝不增加字距;大写字母和小型大写字母使用 letter-spacing: 0.05–0.12em
  • 字重不得低于 400(细体和超细体打印时会消失)
  • 标题层级比屏幕显示更少(3 级足够),比例适中,约为 1.2 倍(小三度)
  • 最多使用 2–3 种字体;选择 x 高度和历史时期相匹配的字体进行搭配
  • 书籍:使用 text-indent: 1em 设置 p + p 的首行缩进(而非 margin-bottom)来区分段落
  • 正文字体应选择笔画对比度低至中等、字腔开阔的款式——高对比度字体(Bodoni)仅用于展示文字
  • 避免使用 Times New Roman;优先选择 Georgia、Charter、Palatino
  • 引号、破折号、数字格式和间距规则因地区而异——按 lang 设置 quotes,或使用 quotes: auto;在构建时使用排版预处理器(SmartyPants、richtypo.js)自动替换字符

颜色

  • 优先按黑白效果设计——大多数用户打印时使用单色
  • OKLCH 适用于打印——浏览器会转换为 sRGB/PDF;L 通道直接对应感知灰度值
  • 浏览器默认会移除背景;使用 print-color-adjust: exact 有选择地恢复
  • 打印时保持低色度——高色度的 OKLCH 值可能超出 CMYK 色域
  • 用边框替代盒阴影;用边框图案替代彩色背景
  • 正文使用纯黑色(#000)——打印为 100% K(仅黑色墨水)。避免在文字中使用“浓黑”(CMYK 60/40/40/100)——这会导致套印问题,并使小字号文字模糊

分页

  • 在标题上设置 break-after: avoid(使标题与后续内容保持在一起)
  • 在图、表格、pre、引用块和卡片上设置 break-inside: avoid
  • 在段落上设置 orphans: 3; widows: 3
  • 在主要章节上设置 break-before: page(书籍可用 right)

图片

  • 打印 = 300 DPI(屏幕 = 96);若打印宽度为 2 英寸,源图应为 600 px
  • 在图上设置 break-inside: avoid;隐藏装饰性图片
  • CSS 背景图片默认不会打印(适合用于装饰)

链接

  • 绝不在行内直接列出原始 URL——会使版面杂乱,也没人会手动输入
  • 使用带编号的脚注(CSS 计数器)、单个二维码,或两者兼用
  • 在纸面上展开缩写(参见 page-features.md)

表格

  • thead { display: table-header-group; }——在每一页重复显示表头
  • 尽量减少边框(仅使用一个方向);不要强制设置 width: 100%——根据数据调整列宽
  • 单元格使用 font-variant-numeric: lining-nums tabular-nums 和 line-height: 1
  • tr { break-inside: avoid; }

代码块

  • 将深色语法主题覆盖为白底浅色主题(深色背景会浪费墨水)
  • white-space: pre-wrap; break-inside: avoid

测试

  1. Chrome DevTools: Cmd+Shift+P > “Emulate CSS print media type”
  2. 打印预览: Cmd+P(显示实际分页)
  3. Playwright: page.emulateMedia({ media: 'print' }) + page.pdf(),用于自动生成 PDF 和进行视觉回归测试
  4. 实际打印机——激光打印机和喷墨打印机的渲染效果不同

资料来源

Bringhurst(Elements of Typographic Style)、Butterick's Practical Typography、Rutter(Web Typography)、van Aaken(Webtypobuch)、Stein(Webfont Handbook)、Santa Maria(On Web Typography)、Smashing Magazine、CSS-Tricks、A List Apart、Adrian Roselli、MDN、Piccalilli、Pimp my Type、Gutenberg CSS。

评论

支持 Markdown