第8章:字体与字号设置
学习目标
- 理解Word中字体信息的存储方式
- 掌握字号单位(半磅)
- 理解字体嵌入机制
- 了解中文字体处理的特点
- 理解字体查找回退机制
8.1 字体信息存储在哪里
字体信息可以存储在多个层级:
- docDefaults - 文档默认字体
- 样式 - 每个样式可以定义自己的字体
- 运行rPr - 单个run可以直接指定字体
优先级:直接run指定 > 样式 > docDefaults。
字体元素 w:rFonts
字体信息用<w:rFonts>元素表示,位于rPr内:
<w:rPr>
<w:rFonts
w:ascii="宋体"
w:eastAsia="宋体"
w:hAnsi="宋体"
w:cs="宋体"/>
</w:rPr>
四个属性分别对应不同字符编码范围:
| 属性 | 作用 |
|---|---|
w:ascii | ASCII字符(0-127)使用的字体 |
w:eastAsia | 东亚字符(中日韩)使用的字体 |
w:hAnsi | Windows ANSI字符(128-255)使用的字体 |
w:cs | 复杂文种(Complex Script,如阿拉伯语、印地语等) |
中文字体的写法
对于中文文档,通常四个属性都设为同一个中文字体就可以:
<w:rFonts w:ascii="黑体" w:eastAsia="黑体" w:hAnsi="黑体" w:cs="黑体"/>
这样不管什么字符都用这个字体。
只指定部分属性
如果只需要改东亚字体,其他用继承,可以只写eastAsia:
<w:rFonts w:eastAsia="微软雅黑"/>
其他属性继承自父样式或默认。
8.2 字号设置
单位:半磅
Word中字号单位是半磅(half-points)。也就是说:
- 1磅 = 2半磅
- 所以 12磅 = 24半磅
为什么用半磅?历史原因,Word早期这样设计,一直保留下来了。
w:sz 元素
字号用<w:sz>元素表示,值是半磅数:
<w:rPr>
<w:sz w:val="24"/> <!-- 24半磅 = 12磅 -->
</w:rPr>
字号对照
常见中文字号对应的磅值和半磅数:
| 中文字号 | 磅值 | 半磅数(w:val) |
|---|---|---|
| 八号 | 5 | 10 |
| 七号 | 5.5 | 11 |
| 小六号 | 6.5 | 13 |
| 六号 | 7.5 | 15 |
| 小五号 | 9 | 18 |
| 五号 | 10.5 | 21 |
| 小四 | 12 | 24 |
| 四号 | 14 | 28 |
| 小三 | 15 | 30 |
| 三号 | 16 | 32 |
| 小二 | 18 | 36 |
| 二号 | 22 | 44 |
| 小一 | 24 | 48 |
| 一号 | 26 | 52 |
| 小初 | 36 | 72 |
| 初号 | 42 | 84 |
记忆要点:五号=21,小四=24,四号=28,二号=44。
中文简体和中文繁体字体名称差异
注意字体名称在不同地区版本中名称可能不同:
- 简体中文Word:
宋体,黑体,仿宋_GB2312,楷体_GB2312 - 繁体中文Word:
新细明体,标楷体,微软正黑体
如果是给简体中文用户用,使用简体名称。兼容性会更好。
8.3 字体颜色
字体颜色用<w:color>元素:
<w:rPr>
<w:color w:val="FF0000"/> <!-- 红色 RGB -->
</w:rPr>
w:val是十六进制RGB值,不带#号:
- 红色:
FF0000 - 绿色:
00FF00 - 蓝色:
0000FF - 黑色:
000000 - 白色:
FFFFFF
也可以使用主题颜色:
<w:color w:themeColor="accent1" w:themeShade="80"/>
但直接用RGB更直观,兼容性更好。
8.4 字体效果
常见字体效果元素:
| 效果 | 元素 | 说明 |
|---|---|---|
| 粗体 | <w:b/> | 布尔,存在即开启 |
| 斜体 | <w:i/> | 布尔,存在即开启 |
| 删除线 | <w:strike/> | 删除线 |
| 双删除线 | <w:dstrike/> | 双删除线 |
| 下划线 | <w:u w:val="single"/> | 下划线类型 |
| 上标 | <w:vertAlign w:val="superscript"/> | 上标 |
| 下标 | <w:vertAlign w:val="subscript"/> | 下标 |
| 小型大写 | <w:smallCaps/> | 小型大写字母 |
| 全部大写 | <w:caps/> | 全部大写 |
| 隐藏文字 | <w:vanish/> | 隐藏文字 |
下划线类型
w:u的w:val常见值:
| 值 | 说明 |
|---|---|
single | 单下划线 |
double | 双下划线 |
dotted | 点线 |
dash | 虚线 |
wave | 波浪线 |
none | 无下划线(取消) |
例子:组合效果
<w:rPr>
<w:b/>
<w:i/>
<w:color w:val="0000FF"/>
<w:u w:val="single"/>
</w:rPr>
这就是蓝色粗斜体带下划线。
8.5 字体嵌入
Word可以把字体嵌入到文档中,这样即使对方电脑没有这个字体,也能正确显示和打印。
字体嵌入存储在哪里
字体数据存储在word/fontTable.xml中。
<w:fontTable xmlns:w="...">
<w:font w:name="宋体">
<w:embedFont w:id="1"/>
</w:font>
</w:fontTable>
实际字体数据作为嵌入font文件存在ZIP包内,通过关系引用。
嵌入方式
有两种嵌入方式:
- 完全嵌入:嵌入整个字体文件,文件变大,但可以编辑
- 子集嵌入:只嵌入文档中用到的字符,文件小,但不能编辑(只能显示打印)
法律问题
⚠️ 重要提示:
- 大多数商业字体是有许可证的,不允许随意嵌入分发
- 嵌入字体可能违反字体的使用许可
- 在文档中嵌入字体之前,请确认你有嵌入权限
- 开源字体一般允许嵌入
开发建议
- 如果是内部使用,考虑字体嵌入
- 如果是公开发布,尽量使用系统默认字体
- PDF格式导出后再分发,可以避免字体问题
8.6 字体查找与回退
当Word打开文档,找不到指定字体时,会怎么处理?
字体回退机制
- Word按名称找字体
- 如果找不到,根据字体特征找相似字体替代
- 如果还是找不到,用默认替代字体(通常是Times New Roman + 宋体)
兼容性问题
- 同样字体在不同系统名称可能不同
- Mac和Windows字体名称不一样
- Windows字体搬到Mac可能找不到
- 开源系统(Linux)一般没有微软默认字体
解决建议
- 使用系统自带字体:Windows自带的宋体、黑体、仿宋、楷体一般不用嵌入
- 使用通用名称:尽量使用标准名称
- PDF导出:如果需要分发,导出PDF最安全
- Web字体:不要用奇怪的字体,保持兼容性
8.7 fontTable.xml 是什么
我们提到了word/fontTable.xml,这是什么?
<w:fontTable xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:font w:name="宋体">
<w:panose w:val="02020603050405020304"/>
<w:charset w:val="86"/>
<w:pitch w:val="variable"/>
</w:font>
<w:font w:name="黑体">
<!-- ... -->
</w:font>
</w:fontTable>
fontTable列出文档中用到的所有字体,包含一些字体特征信息(Panose分类、字符集等),帮助Word在找不到字体时找替代。嵌入字体也在这里记录。
如果文档没有嵌入字体,这个文件很小,只是列出字体名称和特征。
8.8 实际例子
一个完整的字体设置例子:
<!-- 小四,宋体,黑色,常规 -->
<w:rPr>
<w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:cs="宋体"/>
<w:sz w:val="24"/>
<w:color w:val="000000"/>
</w:rPr>
<!-- 二号,黑体,红色,粗体 -->
<w:rPr>
<w:rFonts w:ascii="黑体" w:eastAsia="黑体" w:hAnsi="黑体" w:cs="黑体"/>
<w:sz w:val="44"/>
<w:color w:val="FF0000"/>
<w:b/>
</w:rPr>
<!-- 斜体带下划线 -->
<w:rPr>
<w:i/>
<w:u w:val="single"/>
</w:rPr>
<!-- 上标 -->
<w:rPr>
<w:vertAlign w:val="superscript"/>
<w:sz w:val="16"/>
</w:rPr>
本章小结
- 字体信息在
w:rFonts中,分为ascii、eastAsia、hAnsi、cs四个属性 - 中文字体四个属性一般设置为同一个
- 字号单位是半磅,1磅=2半磅,五号=21,小四=24
- 颜色用RGB十六进制表示,不带#号
- 粗体斜体等效果用布尔元素表示,存在即开启
- 字体嵌入可以保证显示一致,但要注意版权
- 找不到字体时Word会自动回退找替代
下一章我们讲解段落格式与缩进。