Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

第8章:字体与字号设置

学习目标

  • 理解Word中字体信息的存储方式
  • 掌握字号单位(半磅)
  • 理解字体嵌入机制
  • 了解中文字体处理的特点
  • 理解字体查找回退机制

8.1 字体信息存储在哪里

字体信息可以存储在多个层级:

  1. docDefaults - 文档默认字体
  2. 样式 - 每个样式可以定义自己的字体
  3. 运行rPr - 单个run可以直接指定字体

优先级:直接run指定 > 样式 > docDefaults。

字体元素 w:rFonts

字体信息用<w:rFonts>元素表示,位于rPr内:

<w:rPr>
  <w:rFonts
    w:ascii="宋体"
    w:eastAsia="宋体"
    w:hAnsi="宋体"
    w:cs="宋体"/>
</w:rPr>

四个属性分别对应不同字符编码范围:

属性作用
w:asciiASCII字符(0-127)使用的字体
w:eastAsia东亚字符(中日韩)使用的字体
w:hAnsiWindows 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)
八号510
七号5.511
小六号6.513
六号7.515
小五号918
五号10.521
小四1224
四号1428
小三1530
三号1632
小二1836
二号2244
小一2448
一号2652
小初3672
初号4284

记忆要点:五号=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:uw: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包内,通过关系引用。

嵌入方式

有两种嵌入方式:

  1. 完全嵌入:嵌入整个字体文件,文件变大,但可以编辑
  2. 子集嵌入:只嵌入文档中用到的字符,文件小,但不能编辑(只能显示打印)

法律问题

⚠️ 重要提示

  • 大多数商业字体是有许可证的,不允许随意嵌入分发
  • 嵌入字体可能违反字体的使用许可
  • 在文档中嵌入字体之前,请确认你有嵌入权限
  • 开源字体一般允许嵌入

开发建议

  • 如果是内部使用,考虑字体嵌入
  • 如果是公开发布,尽量使用系统默认字体
  • PDF格式导出后再分发,可以避免字体问题

8.6 字体查找与回退

当Word打开文档,找不到指定字体时,会怎么处理?

字体回退机制

  1. Word按名称找字体
  2. 如果找不到,根据字体特征找相似字体替代
  3. 如果还是找不到,用默认替代字体(通常是Times New Roman + 宋体)

兼容性问题

  • 同样字体在不同系统名称可能不同
  • Mac和Windows字体名称不一样
  • Windows字体搬到Mac可能找不到
  • 开源系统(Linux)一般没有微软默认字体

解决建议

  1. 使用系统自带字体:Windows自带的宋体、黑体、仿宋、楷体一般不用嵌入
  2. 使用通用名称:尽量使用标准名称
  3. PDF导出:如果需要分发,导出PDF最安全
  4. 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会自动回退找替代

下一章我们讲解段落格式与缩进。