关于Ubuntu系统汉字“复”“门”等简体中文显示为异体(日文)字形

前言

之前工作中遇到ubuntu后台调用wkhtmltopdf生成PDF文件时,里面的部分中文字体显示异常,例如门、关、复等字字形与规范中文不符。主要原因是 ubuntu 系统自带的 fontconfig 配置语言优先级造成的。原配置文件里面的日文优先级排在中文前面,所以解决办法就是修改配置文件 /etc/fonts/conf.d/64-language-selector-prefer.conf 将优先级改一下即可。
在这里插入图片描述

如下图所示,配置文件里面的 Noto Sans CJK JP(红框) 排在 Noto Sans CJK SC)(椭圆) 前面,所以系统使用字体时优先使用JP字体了。
在这里插入图片描述

解决办法:

# 先备份原文件
sudo cp /etc/fonts/conf.d/64-language-selector-prefer.conf /etc/fonts/conf.d/64-language-selector-prefer_back.conf
# 修改以下配置文件,将 所有 Noto Sans CJK SC 放在 最前面 保存退出即可
sudo vim /etc/fonts/conf.d/64-language-selector-prefer.conf
# 注:不同ubuntu系统版本支持的语言种类有所不一样,但都是将所有 Noto Sans CJK SC 放在 最前面 即可。

下图所示为Ubuntu 16.04(上面截图为Ubuntu 18.04版本)版本修改后的配置文件
在这里插入图片描述

测试:

# 上面修改完成后,更新字体缓存
fc-cache -fv
# 然后执行以下命令检查,如果出现 NotoSansCJK-Regular.ttc: "Noto Sans CJK SC" "Regular" 则表示设置成功:
fc-match -s | grep 'Noto Sans CJK'

在这里插入图片描述
在这里插入图片描述

参考资料:
更多详情可以点击参考 1.2.2.2~~

Ubuntu系统中,要解决matplotlib库中文字体显示的问题,可以按照以下步骤进行操作: 1. 首先,安装中文字体文件。可以通过下载适合Ubuntu系统中文字体文件,并将其安装到系统字体目录中。这样,matplotlib库就可以正常使用这些中文字体了。 2. 删除matplotlib库的缓存文件(可选)。有时候,matplotlib库的缓存文件可能会导致字体显示问题。可以尝试删除这些缓存文件,然后重新运行程序。 3. 设置matplotlib库的字体。可以使用以下代码来设置matplotlib库使用中文字体: ```python import matplotlib.pyplot as plt plt.rcParams['font.family'] = 'SimSun' # 设置字体为宋体,可以根据需要更换为其他中文字体 ``` 这样,matplotlib库就会使用指定的中文字体显示文字了。 4. 如果想查看当前python环境下matplotlib库的配置文件所在位置,可以使用以下代码: ```python import matplotlib print(matplotlib.matplotlib_fname()) ``` 运行这段代码后,会显示出matplotlib库的配置文件所在的路径。 通过以上步骤,您就可以在Ubuntu系统中解决matplotlib库中文字体显示的问题了。希望对您有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Ubuntu下让matplotlib显示中文字体](https://blog.csdn.net/takedachia/article/details/131017286)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值