生僻字
最近遇到个问题,客户有个tte文件,是现场的一个生僻字库,tte文件装不上linux系统,然后客户给的示例excel也莫名其妙的没法在我的电脑显示,我也没法测试服务器到底能不能正常显示.
tte文件Linux应该是不能直接装进去的,应该使用ttf,需要转换。
我的理解是这样 , 因为是前后端的网页服务,所以要求三个端即 服务器后端、客户端、web前端,服务器后端可以用下面的方法放到服务器字体里面去,客户端可以放到 C:\Windows\Fonts 这个文件夹里面,然后是web前端,前端字体是wolf、ttf格式都可以,可以用下文提到的工具FontCreator 进行转换。 (存疑,前端返回字体,浏览器有字体展示就会展示出来,那客户端只看的场景里面还需不需要在本机安装字体呢,我认为不用,因为客户端机器有限,问题解决了也没再去深入的实验,如果有其他见解在评论区帮忙说说看)
提供一下解决思路
1.FontCreator 先将原先的tte文件导出为ttf文件(save as)
2 检验字体是否成功安装在服务器上(选做,排查的时候用到):将ttf字体装在windows本机和linux服务器上,xshell没法看出来,装个VNC服务连上服务器桌面就行(这些怎么装其他帖子都有)
3.字体数据库导出 :这字体需要你重新打印出来,复制到word里面,word打开之后格式化为你对应的字体。(这个过程用下面的python代码来实现,就是读取然后写入的过程)
客户端输入生僻字全靠这个word文档了(直接复制进去),搞个依赖于这个字库的输入工具比较麻烦,但好像不是不行,以后的事情了
import json
from docx import Document
from fontTools.ttLib import TTFontfont = TTFont('C:\\Users\Administrator\Desktop\\EUDC.ttf')doc = Document()
uninames = font.getGlyphNames()
block=' 'for key in uninames:origin_str= key.replace('uni','\\u')output_str= json.loads(f'"{origin_str}"')doc.add_paragraph(output_str)doc.add_paragraph(block)
doc.save("C:\\Users\\Administrator\\Desktop\spz.docx")
执行不了 ?pip install fontTools python-docx
下面是服务器上面安装字符的命令。创建好文件夹后需要再上传字体文件进去这个文件夹
#命令参考
#安装字体工具
yum -y install fontconfig mkfontscale
#已安装字体工具列出
fc-list
#创建字体文件夹,上传字体文件ttf文件(可以通过xftp拷贝) FontDirectoryName 字体文件夹
mkdir -p /usr/share/fonts/FontDirectoryName
cd /usr/share/fonts/FontDirectoryName
#创建字体索引
mkfontscale
#重新加载所有字体
fc-cache
生僻字
最近遇到个问题,客户有个tte文件,是现场的一个生僻字库,tte文件装不上linux系统,然后客户给的示例excel也莫名其妙的没法在我的电脑显示,我也没法测试服务器到底能不能正常显示.
tte文件Linux应该是不能直接装进去的,应该使用ttf,需要转换。
我的理解是这样 , 因为是前后端的网页服务,所以要求三个端即 服务器后端、客户端、web前端,服务器后端可以用下面的方法放到服务器字体里面去,客户端可以放到 C:\Windows\Fonts 这个文件夹里面,然后是web前端,前端字体是wolf、ttf格式都可以,可以用下文提到的工具FontCreator 进行转换。 (存疑,前端返回字体,浏览器有字体展示就会展示出来,那客户端只看的场景里面还需不需要在本机安装字体呢,我认为不用,因为客户端机器有限,问题解决了也没再去深入的实验,如果有其他见解在评论区帮忙说说看)
提供一下解决思路
1.FontCreator 先将原先的tte文件导出为ttf文件(save as)
2 检验字体是否成功安装在服务器上(选做,排查的时候用到):将ttf字体装在windows本机和linux服务器上,xshell没法看出来,装个VNC服务连上服务器桌面就行(这些怎么装其他帖子都有)
3.字体数据库导出 :这字体需要你重新打印出来,复制到word里面,word打开之后格式化为你对应的字体。(这个过程用下面的python代码来实现,就是读取然后写入的过程)
客户端输入生僻字全靠这个word文档了(直接复制进去),搞个依赖于这个字库的输入工具比较麻烦,但好像不是不行,以后的事情了
import json
from docx import Document
from fontTools.ttLib import TTFontfont = TTFont('C:\\Users\Administrator\Desktop\\EUDC.ttf')doc = Document()
uninames = font.getGlyphNames()
block=' 'for key in uninames:origin_str= key.replace('uni','\\u')output_str= json.loads(f'"{origin_str}"')doc.add_paragraph(output_str)doc.add_paragraph(block)
doc.save("C:\\Users\\Administrator\\Desktop\spz.docx")
执行不了 ?pip install fontTools python-docx
下面是服务器上面安装字符的命令。创建好文件夹后需要再上传字体文件进去这个文件夹
#命令参考
#安装字体工具
yum -y install fontconfig mkfontscale
#已安装字体工具列出
fc-list
#创建字体文件夹,上传字体文件ttf文件(可以通过xftp拷贝) FontDirectoryName 字体文件夹
mkdir -p /usr/share/fonts/FontDirectoryName
cd /usr/share/fonts/FontDirectoryName
#创建字体索引
mkfontscale
#重新加载所有字体
fc-cache