一、需求说明
客户系统部署要求使用指定字体,该字体在linux服务器上没有,导致系统处理相关上传文档的时候显示乱码,所以我们需要在linux服务器上安装指定字体。博主实验环境:
- 操作系统:centos7.6
- 安装window环境下的宋体等中文字体
二、字体格式简介
常见的字体格式有ttf,ttc,fon,pfb,afm等,其中fon是window系统换的格式,linux环境下不支持,pfb和afm是linux系统默认安装的字体。
- ttf格式
TTF(TrueTypeFont)是Apple公司和Microsoft公司共同推出的字体文件格式,随着windows的流行,已经变成最常用的一种字体文件表示方式,TTF字体则只包含一种字型。 - ttc格式
TTC字体是TrueType字体集成文件(.TTC文件),是在一单独文件结构中包含多种字体,以便更有效地共享轮廓数据,当多种字体共享同一笔画时,TTC技术可有效地减小字体文件的大小。 TTC是几个TTF合成的字库,安装后字体列表中会看到两个以上的字体。如果几个字体中的大部分字都一样时,可以将几种字体做成一个TTC文件,常见的TTC字体,因为共享笔划数据,所以大多这个集合中的字体区别只是字符宽度不一样,以便适应不同的版面排版要求。 - otf格式
OTF是由Microsoft和Adobe公司开发的另外一种字体格式。它也是一种轮廓字体,比TrueType更为强大,最明显的一个好处就是可以在把PostScript字体嵌入到TrueType的软件中。并且还支持多个平台,支持很大的字符集,还有版权保护。可以说它是Type 1和TrueType的超集。 - fon格式
这种字体是针对特定的显示分辨率以不同大小存储的位图,用于Windows系统中屏幕上的菜单、按钮等处文字的显示。它并不是以矢量描述的,放大以后会出现锯齿,只适合屏幕描述。不过它的显示速度非常快,所以作为系统字体而在Windows中使用。 - svg格式
SVG全称是Scalable Vector Graphics,SVG是由W3C制定的开放标准的图形格式。SVG字体就是使用SVG技术来呈现字体,还有一种gzip压缩格式的SVG字体。 - pfb格式
PFB 格式是一种二进制字体文件格式,用于存储字体的轮廓数据。它通常与AFM文件一起使用,以提供字体的度量信息和轮廓数据。 - afm格式
AFM (Adobe Font Metrics) 是一种字体文件格式,用于描述字体的度量信息,如字母的宽度、高度、斜度等。它是一种文本文件,以ASCII码表示,通常与PFB (Printer Font Binary) 格式的字体文件一起使用。
三、安装windows字体到linux系统
1、打包windows系统字体
将windows系统下的字体文件夹C:\Windows\Fonts打包成压缩包。整个字体文件夹有300MB以上,有些装的字体多的更大。当然如果我们只是需要某几种字体,我们也可以只拷贝确定的字体上传并安装。
2、安装fontconfig
fc-list和fc-cache命令都依赖fontconfig软件包。
[root@s152 Fonts]# yum install fontconfig
3、查看linux系统下当前中文字体类型数量
[root@s152 ~]# fc-list :lang=zh
[root@s152 ~]# fc-list :lang=zh |wc -l
0
4、字体包上传并解压
[root@s152 ~]# cd /usr/share/fonts/
[root@s152 fonts]# ll
总用量 340028
drwxr-xr-x. 2 root root 4096 11月 28 15:07 dejavu
-rw-r–r-- 1 root root 348184334 12月 15 11:26 Fonts.zip
[root@s152 fonts]# unzip Fonts.zip
5、删除fon字体
fon字体是windows环境专有,linux环境下无法安装和使用,为了避免报错和浪费空间全部删除即可。
[root@s152 fonts]# cd Fonts
[root@s152 Fonts]# rm -rf *.fon
6、安装mkfontscale命令
[root@s152 Fonts]# yum install mkfontscale
7、执行mkfontscale命令
mkfontscale命令用于创建字体缩放文件,即将字体文件转换为可供X服务器使用的字体缩放文件。字体缩放文件包含了字体文件的相关信息,如字体名称、字体文件路径等。这些信息可以帮助X服务器在运行时快速查找和加载字体文件。
mkfontdir命令用于创建字体目录文件,即将字体文件的相关信息写入字体目录文件。字体目录文件通常位于/usr/share/fonts或/usr/X11R6/lib/X11/fonts目录下,用于记录系统中可用的字体文件。当系统启动或者用户需要使用某个字体时,X服务器会读取字体目录文件来查找相应的字体文件。
通过使用mkfontscale和mkfontdir命令,可以方便地管理和更新系统中的字体文件和字体目录,确保系统能够正确加载和使用字体。执行完这两个命令之后会生产fonts.scale和fonts.dir文件。
[root@s152 Fonts]# mkfontscale
[root@s152 Fonts]# mkfontdir
[root@s152 Fonts]# ll |grep dir
-rw-r–r-- 1 root root 210721 12月 15 11:38 fonts.dir
[root@s152 Fonts]# ll |grep scale
-rw-r–r-- 1 root root 210721 12月 15 11:38 fonts.scale
8、生成字体缓存
强制重新生成字体缓存。
[root@s152 Fonts]# fc-cache -fv
/usr/share/fonts: 正在生成缓存,新增缓存内容:0 个字体,2 个目录
/usr/share/fonts/Fonts: 正在生成缓存,新增缓存内容:506 个字体,0 个目录
/usr/share/fonts/dejavu: 正在生成缓存,新增缓存内容:9 个字体,0 个目录
/usr/share/X11/fonts/Type1: 跳过,无此目录
/usr/share/X11/fonts/TTF: 跳过,无此目录
/usr/local/share/fonts: 跳过,无此目录
/root/.local/share/fonts: 跳过,无此目录
/root/.fonts: 跳过,无此目录
/usr/share/fonts/Fonts: 跳过,探测到循环目录
/usr/share/fonts/dejavu: 跳过,探测到循环目录
/usr/lib/fontconfig/cache: cleaning cache directory
/root/.cache/fontconfig: not cleaning non-existent cache directory
/root/.fontconfig: not cleaning non-existent cache directory
/usr/bin/fc-cache-64: 缓存生成成功
9、查看并统计中文字体
[root@s152 Fonts]# fc-list :lang=zh |wc -l
38
[root@s152 Fonts]# fc-list :lang=zh
/usr/share/fonts/Fonts/MSJH.TTC: Microsoft JhengHei UI:style=Regular