linux下fontConfig配置

本文介绍了在SUSE系统中添加并配置新中文字体MicroHei到fontConfig的过程,包括将字体文件放入~/.fonts/目录、配置font.conf、使用fc-list和fc-match检查、修改suse-post-user.conf文件设置字体优先级、运行fc-cache更新缓存,以及在Chrome中验证字体加载和效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     最近工作中,需要在suse操作系统中添加一种新的中文字体,然后在chromium中传入font family名称,通过skia,再通过fontConfig访问该字库。
     添加字库的步骤大致有:

     (1)将需要增加的字库文件拷贝到~/.fonts/目录下。(注:对~/.fonts/目录的扫描,需要预先在/usr/loca/etc/font/font.conf里面配置)

     (2)/usr/loca/etc/font/font.conf配置的30s会扫描一次字库文件,这个一般是默认配置。

     (3)使用fc-list命令查看fontConfig当前检测到的字库,一般打印如下:

NSimSun,新宋体:style=Regular
FZHeiTi,方正黑体:style=Regular
FZFangSong,方正仿宋:style=Regular
MicroHei,文泉驿微米黑(完整版)_by_zxl1103:style=Regular
SimSun,宋体:style=Regular
AR PL SungtiL GB,文鼎PL简报宋:style=Regular
FZKaiTi,方正楷体:style=Regular
AR PL ZenKai Uni,文鼎PL中楷Uni:style=Medium
FZSongTi,方正宋体:style=Regular
AR PL ShanHeiSun Uni,文鼎PL細上海宋Uni,文鼎PL细上海宋Uni:style=Regular
AR PL KaitiM GB,文鼎PL简中楷:style=Regular

       其中MicroHei是我们需要添加的字库,看来是fontConfig扫描到了。

      (4)使用 fc-match -v MicroHei 命令可查看MicroHei的详细信息。比较有用的数据有:

Pattern has 30 elts (size 32)
        family: "MicroHei"(s)
        familylang: "en"(s)
        style: "Regular"(s)
        stylelang: "en"(s)
        fullname: "Droid Sans"(s)
        fullnamelang: "en"(s)
        slant: 0(i)(s)
        weight: 80(i)(s)
        width: 100(i)(s)
        size: 12(f)(s)
        pixelsize: 12.5(f)(s)
        foundry: "unknown"(s)
        antialias: FcTrue(s)
        hintstyle: 3(i)(s)
        hinting: FcTrue(s)
        verticallayout: FcFalse(s)
        autohint: FcFalse(w)
        globaladvance: FcTrue(s)
        file: "/usr/local/app/.fonts/MicroHei.ttf"(s)
        index: 0(i)(s)
        outline: FcTrue(s)
        scalable: FcTrue(s)
        dpi: 75(f)(s)
        scale: 1(f)(s)

       其中file和family可以确定该字库是不是你添加的字库。

     (5)修改/usr/local/etc/fonts/suse-post-user.conf文件,
对应的alias/family/prefer配置,serif,sans-serif及monospace三个family建议都修改。
由于suse中默认的中文使用FZSongTi,可以将MicroHei添加到FZSongTi的配置之前。prefer数组配置的主要意义是确认fontConfig以family name搜索字库时的先后顺序。
     如果prefer数组中没有添加MicroHei字段,fontConfig就不会搜索MicroHei字库了。
  
     (6)使用 fc-cache -f 命令强制更新fontConfig服务。使之前加入的配置立即生效。

     (7)使用模拟器访问页面,触发服务器上的Chrome服务加载新字库。使用 lsof | grep "XXXX" 查看进程资源引用情况。其中XXXX是你的Chrome进程端口号,如果有以下信息:
 
      Chrome 14169        mqq  mem       REG                8,3     9152   1920703 /usr/local/app/.fontconfig/8f60ca31bea1e8f374144819c091a766-x86-64.cache-2
Chrome 14169        mqq  mem       REG                8,3    33448   1920700 /usr/local/app/.fontconfig/7ef2298fde41cc6eeb7af42e48b7d293-x86-64.cache-2
Chrome 14169        mqq  mem       REG                8,3  6193796   1430046 /usr/local/app/.fonts/MicroHei.ttf

      说明字库已经被Chrome服务成功加载了。
      注:如果需要在Chrome服务中指定font family,需要修改服务的配置文件,添加
以下字段(默认不配置时,FontFamily值为"simsun"):
      #font_family
      FontFamily="MicroHei"

      (8)新的MicroHei字库与系统默认的FZSongTi对英文的显示有明显区别,MicroHei是非等宽字符集,FZSongTi是等宽字符集。可通过模拟器,显示英文字符网页或查看下发的文件中字符串的宽度对比,确认最终字库更换是否生效。
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值