Real IMAP connection via imapflow library: - Connects to IMAP server (IMAPFlow, TLS on port 993) - Fetches recent messages (configurable limit, default 20) - Extracts: from, fromEmail, subject, date, snippet (200 chars) - Thread-to-contact matching (PRD §6.1): 1. Match sender email against persons table 2. If no person match, extract domain and match against company.website 3. Returns matchedCompany + matchedPerson for each email - Audit-logged (action: crm.mailsync:imap) - Zod validated (host, port, user, password, folder, limit) - 502 on IMAP connection failure with detail - 400 on validation failure Tested: invalid creds → 502 'IMAP connection failed', missing host → 400
278 lines
12 KiB
Markdown
Executable File
278 lines
12 KiB
Markdown
Executable File
# 排版方向 Text Direction:横排 / 直排 / 混排
|
||
|
||
中文是世界上少数能**横竖两套排版系统并行**的文字。"用什么方向"是任何中文排版项目的第一个决策,而不是默认横排。本文给出方向决策树、参数对照、CSS 实现、地区风格差异。
|
||
|
||
## 一、方向决策树
|
||
|
||
```
|
||
内容主要属性是什么?
|
||
│
|
||
├─ 古籍 / 文言 / 诗词 / 书法集 / 题词 / 对联 ────────────→ 直排
|
||
├─ 邀请函 / 请柬 / 礼仪文书 / 书信复古 ──────────────→ 直排
|
||
├─ 博物馆图录 / 艺术画册中"诗题画跋"页 ────────────→ 直排
|
||
├─ 杂志 / 报纸 / 教材 / 学术论文 / 商务文档 ───────→ 横排
|
||
├─ 现代小说 / 散文 / 网页 / H5 / App ───────────────→ 横排
|
||
└─ 工具书 / 字典 / 辞海 ───────────────────────→ 横排(直排版多见于民国老版本)
|
||
|
||
需不需要混排?
|
||
│
|
||
├─ 直排中遇 1 字英文/缩略词 ────→ 正立排(保持横向单字)
|
||
├─ 直排中遇 2-3 位阿拉伯数字 ───→ 纵中横排 tate-chu-yoko(保持横向小组)
|
||
├─ 直排中遇整段西文/词组 ───────→ 顺时针 90° 旋转
|
||
├─ 直排中遇竖排小注 ──────────→ 双行夹注(注文两行平行,字号 1/2)
|
||
├─ 横排中遇直排标题/匾额 ──────→ 局部 writing-mode: vertical-rl
|
||
└─ 横排中遇直排小段诗词引文 ───→ 局部直排("插秧式")
|
||
```
|
||
|
||
## 二、横排 vs 直排参数对照
|
||
|
||
| 维度 | 横排 | 直排 |
|
||
|---|---|---|
|
||
| 文字方向 | 左 → 右 | 上 → 下 |
|
||
| 行方向 | 上 → 下 | **右 → 左** |
|
||
| 翻页方向 | 从左向右翻(**左侧装订**) | 从右向左翻(**右侧装订**) |
|
||
| 正面页位置 | 右页(奇数页) | 左页(奇数页) |
|
||
| 分栏方向 | 垂直切分(左中右栏) | 水平切分(上中下栏) |
|
||
| 图/表标题位置 | 上方 / 下方 | 左侧 / 右侧 |
|
||
| 表头行位置 | 上方 | 右侧 |
|
||
| 表头列位置 | 左侧 | 上方 |
|
||
| 末页多栏行数 | 各栏尽量对齐,余空在末栏末尾 | 顺其结束,各栏行数可不齐 |
|
||
| 行长上限 | ≤ 48 字 | ≤ 55 字 |
|
||
| 行长下限 | ≥ 10 字 | ≥ 10 字 |
|
||
| CSS writing-mode | `horizontal-tb`(默认) | `vertical-rl` |
|
||
|
||
## 三、标点在横/直排中的差异(大陆 GB/T 15834-2011)
|
||
|
||
**关键差异点。错配会让版面瞬间显业余。**
|
||
|
||
| 标点 | 横排(大陆) | 直排(大陆) | 港台 |
|
||
|---|---|---|---|
|
||
| 句号 。 | 字面左下角 | 字面右上角 | 字面正中 |
|
||
| 逗号 , | 字面左下角 | 字面右上角 | 字面正中 |
|
||
| 顿号 、 | 字面左下角 | 字面右上角 | 字面正中 |
|
||
| 冒号 : | 字面左下角,直立 | **直立偏右**(不转 90°) | 居中直立 |
|
||
| 分号 ; | 字面左下角,直立 | **直立偏右**(不转 90°) | 居中直立 |
|
||
| 问号 ? | 字面左下角,直立 | **直立**(不转 90°) | 居中直立 |
|
||
| 叹号 ! | 字面左下角,直立 | **直立**(不转 90°) | 居中直立 |
|
||
| 引号(双) | 弯引号 " " | **直角引号 「」**(双) | 直角引号 |
|
||
| 引号(单) | 弯引号 ' ' | 直角引号 『』 | 直角引号 |
|
||
| 书名号 | 《》〈〉 | 《》(直立) | 甲式波浪 ﹏(台湾)/ 乙式《》 |
|
||
| 破折号 | —— 占 2 字水平居中 | **占 2 字垂直居中** | 同 |
|
||
| 省略号 | …… 占 2 字,6 点水平居中 | 占 2 字,6 点**垂直居中** | 同 |
|
||
|
||
**反例(要避免)**:
|
||
- 把日文规则套用到中文直排:冒号、分号、问号、叹号在日文直排转 90° 躺倒;**中文必须保持直立**。某代 macOS 因 Unicode UAX#50 早期不完善曾把中文比照日文,是错误案例。
|
||
- 直排正文用弯引号 " "(应改用直角「」)。
|
||
|
||
## 四、直排中混排西文的 3 种方法(W3C CLReq §2.1.3)
|
||
|
||
直排文本中遇到西文/数字时,根据长度选用:
|
||
|
||
### 方法 1:正立排(Upright)
|
||
- 用于:**单个字母、首字母缩略词**(如 GDP、CPU、A)
|
||
- 做法:用与汉字等宽的字体或全角字符,与汉字同方向逐字排
|
||
- CSS:`text-orientation: upright`
|
||
- 示例:`一个 G D P 增速…` (G、D、P 各占一格,与汉字同方向)
|
||
|
||
### 方法 2:顺时针 90° 旋转(Rotated)
|
||
- 用于:**一般单词 / 句子 / 4 位以上数字**(如 "JavaScript"、"2024"、"the quick brown fox")
|
||
- 做法:用比例字体,整词整句旋转
|
||
- 汉字与西文之间间距 **≤ 1/4 汉字宽**;西文位于行首/行尾时**不加空白**
|
||
- CSS:`text-orientation: sideways`(即默认行为)
|
||
|
||
### 方法 3:纵中横排(Tate-chu-yoko 縦中横)
|
||
- 用于:**2–3 位阿拉伯数字、短缩写**(如 "3.0"、"A+"、"2B"、"21"、"AM"、"99")
|
||
- 做法:比例字体,保持正方向横置;宽度与行幅相当或稍出
|
||
- 活字时代严格不超过 1 个汉字宽;现今可凸出行间
|
||
- CSS:`text-combine-upright: all`
|
||
- 示例:年龄 `21` 岁、`3.0` 升发动机、温度 `25` ℃
|
||
|
||
### 混排间距规则(直排同横排)
|
||
- 直排中**通常不用弯引号**(应改用直角引号)
|
||
- 若引用西文且用弯引号,需跟随被引文旋转
|
||
- 直排中阿拉伯数字内部不可分行,破折号/省略号不可分行
|
||
|
||
## 五、横排中嵌入直排
|
||
|
||
现代横排文档中嵌入小段直排的场景:
|
||
|
||
- 标题 / 匾额 / 题字
|
||
- 古诗引文(一首七绝直排展示,强化古意)
|
||
- 对联(两幅竖排平行展示)
|
||
- 印章、闲章、款识
|
||
- 杂志专题"穿插式"页面
|
||
|
||
**CSS 实现**:
|
||
```css
|
||
.vertical-quote {
|
||
writing-mode: vertical-rl; /* 直排:从右向左 */
|
||
text-orientation: mixed; /* 汉字直立,西文转横 */
|
||
height: 20em;
|
||
margin: 0 1em;
|
||
}
|
||
```
|
||
|
||
**注意事项**:
|
||
- 直排段在横排里要"做容器"——给定明确高度,不要让它自由撑开
|
||
- 直排标点要切换到右上角形态;不要直接搬横排标点
|
||
- 嵌入位置遵守"文意停顿"——句间嵌入而非词间
|
||
|
||
## 六、装订与翻页方向
|
||
|
||
装订方向直接影响版心位置和阅读体验,不能搞反。
|
||
|
||
| 方向 | 装订侧 | 翻页方向 | 第一页(正面)位置 | 用途 |
|
||
|---|---|---|---|---|
|
||
| **横排左翻** | 左侧 | 从左向右 | **右页**(奇数页) | 现代中文书、教材、报告、所有英文书 |
|
||
| **直排右翻** | 右侧 | 从右向左 | **左页**(奇数页) | 古籍、文言、诗集、传统书法集 |
|
||
| **直排左翻(错的)** | 左侧 | 从左向右 | — | 中日韩三国都不用 |
|
||
|
||
**关键检查项**:
|
||
- 大标题必须出现在**正面页**(横排右页 / 直排左页),不能开在反面页
|
||
- 章节末页留出余白时,留白方向匹配阅读方向(横排留下方、直排留下方)
|
||
- 跨页大图:横排左页向右延展、直排右页向左延展
|
||
|
||
## 七、CSS writing-mode 完整指南
|
||
|
||
```css
|
||
/* 横排(默认) */
|
||
.horizontal {
|
||
writing-mode: horizontal-tb; /* horizontal, top-to-bottom */
|
||
}
|
||
|
||
/* 直排(中文、日文、传统蒙文) */
|
||
.vertical {
|
||
writing-mode: vertical-rl; /* vertical, right-to-left lines */
|
||
text-orientation: mixed; /* 汉字立、半角西文转 90° */
|
||
}
|
||
|
||
/* 直排但行从左向右(少见,部分新蒙文) */
|
||
.vertical-lr {
|
||
writing-mode: vertical-lr;
|
||
}
|
||
|
||
/* 直排内单字符强制立起来(缩略词、单字母) */
|
||
.upright {
|
||
text-orientation: upright;
|
||
}
|
||
|
||
/* 纵中横排(数字小组保持横置) */
|
||
.tcy {
|
||
text-combine-upright: all;
|
||
}
|
||
```
|
||
|
||
完整 HTML 示例:
|
||
```html
|
||
<article style="writing-mode: vertical-rl; height: 30em;">
|
||
<p>
|
||
秦时明月汉时关,万里长征人未还。
|
||
但使<span style="text-combine-upright: all;">21</span>世纪有李广,
|
||
不教胡马度阴山。
|
||
</p>
|
||
</article>
|
||
```
|
||
|
||
## 八、地区风格三大体系
|
||
|
||
地区差异的索引表——一个项目锁定一个地区,按下面维度逐项对齐。具体执行细节看对应文件:标点详见 `punctuation.md`、字体详见 `fonts.md`、避头尾详见 `punctuation.md § 四`。
|
||
|
||
| 维度 | 大陆简体 | 港台繁体 | 日文 |
|
||
|---|---|---|---|
|
||
| 标点位置 | **横排左下、直排右上** | **居中**(横直排都一样) | 横排左下、直排右上(同大陆) |
|
||
| 避头尾严格度 | GB 级 / strict 级 | 多不严格(标点居中无突兀) | 严格 |
|
||
| 标点风格 | 开明式(句末全宽、句内半宽)多 | 居中式 + 多不调宽度 | 开明式 + 严格挤压 |
|
||
| 直排冒号分号 | 直立偏右 | 居中直立 | **转 90° 躺倒** |
|
||
| 引号 | 弯引号 ""''(横)/ 直角「」(直) | 直角「」『』(先单后双) | 直角「」 |
|
||
| 书名号 | 《》〈〉 | 甲式波浪 ﹏(书底)+ 乙式《》 | 二重括号 『』 |
|
||
| 间隔号 · | 占**半字宽** | 占**全字宽** | 占全字宽 |
|
||
| 公文字体 | **仿宋** | **楷体** | 明朝体 |
|
||
|
||
**核心心法**:项目开始就锁定地区风格,不要"中港台日"混用。
|
||
|
||
## 九、什么时候直排?什么时候横排?
|
||
|
||
### 必须直排
|
||
- 古籍影印 / 古籍今译保留原貌
|
||
- 文言文学校教材(部分台湾教材)
|
||
- 中医典籍、佛经、道经
|
||
- 书法作品集、字帖
|
||
- 传统戏曲剧本(旧版)
|
||
- 朱批奏折、家书复刻
|
||
|
||
### 强烈推荐直排
|
||
- 当代古典诗词集
|
||
- 茶艺 / 香道 / 国画相关书籍
|
||
- 高端艺术画册"诗题画跋"页
|
||
- 邀请函 / 请柬 / 谢卡(小段)
|
||
- 博物馆图录的部分内页(混合)
|
||
- 题字 / 题词 / 闲章
|
||
|
||
### 可以选直排(增加古意 / 仪式感)
|
||
- 散文集封面
|
||
- 招贴海报标题
|
||
- 茶包装、白酒包装文案
|
||
- 婚礼喜帖
|
||
- 复古风咖啡店菜单
|
||
|
||
### 不要直排
|
||
- 现代长文(用户已习惯横向扫视)
|
||
- 表格密集的文档(直排表格难做)
|
||
- 大量中英混排的技术 / 学术内容
|
||
- 网页正文(写读不便、生态差)
|
||
- App / H5(小屏直排压力大)
|
||
|
||
## 十、混排(横直交叉)的进阶玩法
|
||
|
||
不要把"混排"理解为"破格"——这是中文排版的基础语法。常见 5 种:
|
||
|
||
### 1. 横排正文 + 直排引文
|
||
正文横排,引用的古诗、对联、题词单段直排,与正文形成节奏对比。
|
||
|
||
```html
|
||
<article class="horizontal-body">
|
||
<p>李白《静夜思》写道:</p>
|
||
<blockquote class="vertical-quote">
|
||
床前明月光,疑是地上霜。<br>
|
||
举头望明月,低头思故乡。
|
||
</blockquote>
|
||
<p>这首诗体现了…</p>
|
||
</article>
|
||
```
|
||
|
||
### 2. 直排正文 + 横排数据
|
||
古籍今译类,正文直排,但年表、数据表、地图说明等横排。靠纸张/底色区分。
|
||
|
||
### 3. 跨页"半横半直"
|
||
左页直排(古文原文)、右页横排(今译),翻页对照。常见于古籍今译。
|
||
|
||
### 4. 标题直排、正文横排
|
||
封面 / 章首页用直排大字标题,营造仪式感;内页正文回到横排实用。
|
||
|
||
### 5. 双行夹注(小注)
|
||
直排正文中插入双行夹注:两行小注同高,字号为正文 1/2,平行排列。古籍标配。
|
||
|
||
```
|
||
正┃ 双行夹注:
|
||
文┃ 上行注┃下行注
|
||
正┃ 上行注┃下行注
|
||
文┃
|
||
```
|
||
|
||
## 十一、检查清单(方向相关)
|
||
|
||
排印完成前必过:
|
||
|
||
- [ ] 排版方向(横 / 直 / 混)是否与内容气质匹配?
|
||
- [ ] 装订方向是否与排版方向对应?(横左翻 / 直右翻)
|
||
- [ ] 大标题是否在正面页(横右页 / 直左页)?
|
||
- [ ] 直排中数字是否用了纵中横排?
|
||
- [ ] 直排中单字英文是否用了正立排?
|
||
- [ ] 直排标点是否切换到右上角形态?
|
||
- [ ] 直排冒号分号是否保持直立(没躺成日式)?
|
||
- [ ] 直排引号是否改用了直角「」?
|
||
- [ ] 地区风格是否一致?(没把港台居中标点 + 大陆 GB 避头尾混用)
|
||
- [ ] 横排嵌直排的段落是否给了明确高度?
|
||
- [ ] 图表标题方向是否匹配主排版方向?
|
||
- [ ] CSS `writing-mode` 和 `text-orientation` 是否成对设置?
|