📔 生态运营产品知识库

字体回落策略

文档由 黄申奥 于 2022-02-24 07:03 创建,由 黄申奥 于 2023-04-01 08:59 更新
文档标签:
文档分类:
1021

基于上述对字体基本原理的介绍,我们知道如果文档中设置的字体本地没有,就会进入“回落机制”;这里主要以文字组件为例,说明走weboffice打开文档在不同终端不同排版模式下的字体回落逻辑。

1.PC端字体的回落策略

  • 通过weboffice打开的文档,主要包含2种排版方式。一个是前端排版,一个是内核排版。而不同的排版方式,对应的字体显示策略是不一样的,详细如下。

1.前端排版的“字体显示策略”

  • 文档(前端排版)从打开到最终显示字体效果的流程图。

  • 根据上图可总结如下字体最终的显示逻辑。

2.内核排版的“字体显示策略”

  • 文档(内核排版)从打开到最终显示字体效果的流程图。

  • 注意:对于私有化部署,服务端字体以客户导入的自定义字体并开启生效为主。
  • 根据上图可总结如下字体最终的显示逻辑。

2.移动端端字体的回落策略

1.VS PC端的相同点

  • 移动端页面版式与PC前端排版字体回落逻辑相同,仅回落表顺序不同而已;
  • 移动端分页版式前端排版&内核排版文档PC前端排版&PC内核排版字体回落逻辑相同,仅回落表顺序不同而已;

2.VS PC端的不同点

  • 移动端黑体不在回落策略中。本地有黑体时会使用本地黑体,本地无时不走回落策略;
    • 原因:黑体与系统默认字体样式无明显差异;
  • 高清预览时,如果服务端部署了某字体,移动端字体需要手动点击下载,然后客户端会对该字体进行缓存,即打开不同文档但遇到已经下载过的字体时,字体也不会再次下载;而web端浏览器默认自动下载到缓存中。参见下图:

3.weboffice不同组件的字体回落顺序

  • 了解到不同终端不同排版模式的字体回落策略之后,我们对日常使用频率最高的4类文档的具体回落顺序进行深入了解。

1.WPS文字

1.高清预览模式

  • 只有当服务端部署了文档中设置的字体A后,用户在高清预览模式下才能看到准确的字体A效果,如果服务端没有部署该字体,那么用户看到的只能是由浏览器决定的与字体A相近的字体效果;

2.普通预览或在线编辑模式且文件不包含脚注、尾注或文字方向属性时

  • 在普通预览或在线编辑模式下打开文件,而且该文件不包含脚注、尾注或文字方向属性时:
    • 必须是在回落策略表中的字体且该字体本地有的情况下才能精准显示为设置的字体效果;
    • 不在回落策略表的字体一律交由浏览器来决定显示为何种字体;
    • 如果在回落策略表但本地又没有该字体时则按如下回落顺序去找到尽可能匹配的字体样式显示;
  • 注意:字体回落策略表是针对于文档中某种字体不存在本地时,字体展示的一个顺序表。
  • 附:回落策略表及回落层级(如下所示)
  • 举例说明。前提:文档中设置了宋体,而且当前客户端是Windows系统;
    1. 打开文件,先看客户端本地有没有宋体;
    2. 如果没有宋体,则尝试去找宋体GB2312;
    3. 如果本地也没有宋体GB2312,就去找本地已有的汉仪书宋二KW字体;
    4. 如果本地没有汉仪书宋二KW字体,就去找方正书宋简体;
    5. 如果本地没有方正书宋简体,就去下载汉仪书宋二KW字体(因为我们weboffice在服务端默认带了汉仪书宋二KW字体,如果当前浏览器没有下载过,就重新去下载到本地
  • 简而言之,字体回落的逻辑就是先看某个字体在客户端本地有没有,没有的话,就去找下一个。

3.普通预览或在线编辑模式且文件包含脚注、尾注或文字方向属性时

  • 如果服务端对该设置的字体有版权,则从本地或服务端下载对应的字体精准显示;
  • 若服务端对该设置的字体没有版权,但属于如下5种字体之一的,则从本地找或服务端下载对应的汉仪系字体来对应显示;不属于这5种字体的,交由浏览器处理。

2.WPS演示

  • 设置的字体只要本地有,就能精准显示为设置的字体;
  • 如果本地没有,但是属于如下5种字体之一的,就可以从本地找或服务端下载对应的汉仪系字体来对应显示,此外都交由浏览器处理。

3.WPS表格

  • 设置的字体只要本地有,就能精准显示为设置的字体;
  • 如果本地没有,但在如下策略表中的字体则按回落顺序逐个查找匹配显示;本地没有且不在策略表的字体则交由浏览器处理。

4.格式转换

1、首先,格式处理服务,依赖于服务端字体,不依赖于本地字体。

  • 举个例子,比如文档设置了字体A,从docx转换成PDF格式,只要服务端有对应字体,就行;那如果服务端没有字体A,就会回落到我们默认的字体上面去,默认字体是「汉仪楷体」。

2、另外,对于格式处理的字体情况,根据新老内核分如下两种:

①旧内核:docs-cps容器处理,没有自带字体,必须前端导入,导入的字体在容器/usr/share/fonts/diy-fonts路径下
②新内核,docs-file-cps处理,有自带字体,即使不导入,只要有自带的就会生效,自带字体在容器/usr/share/fonts/server-fonts路径下;前端导入的字体还在容器/usr/share/fonts/diy-fonts路径