字体排序个人见解

因为only office的默认排序是英文在上,中文在下的,有时候我们英文字体多了之后,使用不方便,所以,需要将我们习惯使用的汉字放到上面来。
这里我有三个思路

1、底层修改

之前有说到,only office部署字体的脚本文件为documentserver-generate-allfonts.sh,所以打开该文件后,可发现生成的配置都是基于allfontsgen这个文件,然而这个文件却是一个没有后缀名的ELF文件,全称为‘Executable and Linkable Format’是可执行和可链接文件格式,其中包含了可执行的程序,需要反汇编,反编译后在程序中进行修改,难度复杂。

2、页面修改

.sh文件生成了两个js文件,分别为/sdkjs/common/AllFonts.js和/server/FileConverter/bin/AllFonts.js,可通过修改其中字体顺序使页面的显示样式改变,但具体功能代码还需要修改/var/www/onlyoffice/documentserver/fonts文件夹下的字体文件名称,或sdk-all.js,而sdk-all.js为编译后的js文件认知难度也很高。(不推荐)

以上两个方法都很复杂。
第二种方法个人不是很推荐,因为每次部署一遍字体,就需要做一次修改,显得有些繁琐。
而第一种方法当然最好,但想要实现很困难。
于是最好选用最简单的第三个方法。

3、名称修改(已解决)

既然only office是按名称排序的,并且英文排在前面,那么就改变字体名不就可以了。
但字体名的改变并不是那么简单,要考虑三点。

(1)不能让字体名称的变化让使用者看出来
(2)字体名称改变后不能让only office无法检测
(3)空格的问题
【1】要满足第一点需求,那么在名字中就只能加入空格字符。
【2】要满足第二点需求,那么就不能改变字体,但这里我试了一下,只要不在汉字中间加入空格,那么不管在名字头,还是名字尾加入空格onlyoffice还是能够检测出来,这就给了我们接下来的操作空间。

要改变字体顺序,将空格输入到字体名的尾部显然是不行的,然而输入到字体名的前面,字体修改器也会自动过滤掉,所以我们需要一个特殊的字符空格。

【3】按住Alt键+0160,即可得出一个并不会被过滤掉的字符空格

OnlyOffice中文docker onlyoffice中文字体排序_中文字体

【4】输入一个肯定是不行的,因为英文的优先级在Alt+0160之前,而Alt+0160的优先级在普通空格之后。

所以这里给每个中文字体名的前面加上一个Alt+0160与一个普通空格,这两个字符。
而给每个英文字体名前面至少加上两个Alt+0160,如此一来英文字体的优先级就在中文字体之后了。
最后将修改好的字体部署上去。
注意:

①、输入Alt+0160后字体的名称不能中英文混合,only office只识别中文或者英文+特殊字符。如:仿宋_GB2312就只会显示后面部分的_GB2312,大体上并没有其他影响。
②、有些字体在加入Alt+0160后无法识别的问题,那就只能去网上找个相似的字体改个名,或者基于其他字体使用FontCreator将其中的字符替换一下。

OnlyOffice中文docker onlyoffice中文字体排序_OnlyOffice中文docker_02

修改结束!