📔 生态运营产品知识库

高清预览的字体原理及回落机制

文档由 黄申奥 于 2022-04-20 13:00 创建,由 黄申奥 于 2022-11-03 11:51 更新
文档标签:
文档分类:
870

高清预览= 预览地址里不带&wpsPreview=0或者带&wpsPreview=1101110

1.高清预览的字体依赖说明

  • 高清预览走内核排版,主要是为了保证公文场景下和客户端尽可能呈现同样的效果。详细背景可参见:为什么要做高清预览?
  • 高清预览,同时依赖服务端和客户端都安装了该字体;如果任一平台端缺少字体,就会走到字体回落逻辑;

2.高清预览的字体回落机制及表现

  • weboffice默认设计逻辑会限制字体使用,即只生效自身有版权的字体。所以当服务端没有该字体时,会先交由浏览器处理;而后等服务端下载相近字体后,自动刷新以该相近字体显示。具体情况及表现如下。

2.1 情况1

  • 服务端有字体,本地有字体-->文档打开时可正常显示设置的字体;

2.2 情况2

  • 服务端有字体,本地没有字体-->文档打开时会触发webfont机制。对于PC端,会默认下载webfont字体缓存到浏览器;对于移动端,考虑到手机流量消耗,会弹出“下载缺失字体”的弹窗,点击【下载】后,文档刷新后展示正确的字体;参见下图:

2.3 情况3

  • 服务端没有字体,本地有字体。如果该字体没有版权,文档会优先交由浏览器处理,而后下载相近字体进行展示;视觉上会呈现文档界面“闪一下”的效果,如下所示:

2.4 情况4

  • 服务端没有字体,客户端也没有字体-->文档渲染效果交由浏览器处理。

3.高清预览怎么取消回落机制?

3.1 回落逻辑

  • 想要保证文档在高清预览场景下能正确显示所设置的字体,必须要保证服务端和客户端都安装了该字体;
  • 在此基础上,需要添加ENABLE_WIN_FONTS=1环境变量。增加该环境变量后,能保证私有化业务方自行添加有版权字体可以正常显示,不发生回落。否则,即使通过管理后台->字体自定义功能导入了业务方上传的字体,但对于weboffice没有版权的字体,仍会回落到汉仪相关字体。

3.2 环境变量的添加方式

1、临时方式

  • kubectl set env deployment/weboffice-webword ENABLE_WIN_FONTS=1

2、持久化方式

进入 kubewps/apps/docs.5.1.5.xxx/charts/templates/weboffice-webword/values.yaml,修改yaml文件,在env里添加ENABLE_WIN_FONTS=1
然后重新安装应用

3.3 举例说明

  • 场景描述:文档A设置了黑体;
  • 问题表现:在使用文档中台预览能力打开文档A时(默认走高清预览),发现文档加载后会先闪一下,然后再落到某一字体;
  • 原因解析:客户端安装了黑体,中台服务端没有黑体,且没有该字体版权;所以先交由浏览器处理渲染,而后由服务端下载相近的字体进行刷新展示,即呈现如上效果;
  • 解决方法:先通过如上两种方式,添加ENABLE_WIN_FONTS=1环境变量;然后进入文档中台后台管理页面/plus/sysadmin/font-custom,即字体自定义界面,上传黑体文件,并配置生效;重新进入预览界面,此时文档正常渲染打开。效果参见如下: