findfont: Font family ‘Noto Serif CJK JP‘ not found

文章讲述了在使用mmocr时遇到的关于找不到NotoSerifCJKJP字体的警告问题,通过下载、安装NotoSerifCJKJP字体,将其放入matplotlib字体目录,以及清理缓存或修改配置文件等方式解决matplotlib无法识别中文字体的问题。
摘要由CSDN通过智能技术生成

起因

运行mmocr推断程序的时候,标注目标框的时候出现的问题
找不到字体
这个warning是找不到’Noto Serif CJK JP’字体
中文字符找不到
不仅找不到字体,中文的字符也只能长方形框来表示了,这非常不利于结果可视化!

解决方法

原因出在matplotlib找不到中文字体,我分三步解决这个问题

1、下载Noto Serif CJK JP字体

noto字体github地址上看到很多字体,但是Language-specific Variable Fonts以及Region-specific Subset Variable Fonts的字体不要选!!windows不支持。
下载链接
OTF|TTF中选择一个下载,我这里选择TTF下载
下载完成后,安装字体。

2、字体保存到matplotlib下的fonts\ttf文件夹下

查找字体路径

import matplotlib

# 查找字体路径
print(matplotlib.matplotlib_fname())

结果:
D:\anaconda\envs\yolov5\Lib\site-packages\matplotlib\mpl-data\matplotlibrc

将安装好的字体复制到D:\anaconda\envs\yolov5\Lib\site-packages\matplotlib\mpl-data\fonts\ttf文件夹下,这里的地址是你的字体路径地址

3、删除.matplotlib

linux系统下matplotlib在~/.cache文件夹下,直接rm -rf ~/.cache/matplotlib
windows下在C:\Users\[你的用户名]下.matplotlib,直接删除

结果

运行python程序,不报错了

题外

1、可以通过手动修改matplotlib/fontlist-v330.json文件中的字体名称来实现:命名为楷体的字体,实际中matplotlib中采用的却是黑体的骚操作
楷体变黑体
2、可以修改D:\anaconda\envs\yolov5\Lib\site-packages\matplotlib\mpl-data\matplotlibrc这个文件,添加你想呈现的字体类型。
Ctrl+F找sans-serif,将注释去掉,添加自己想添加的字体
修改默认
这里font.sans-serif会优先选择前面的字体。注意,SimHei这个字体的添加和前面Noto Serif CJK JP的字体添加步骤基本一致。
3、fonts\ttf文件夹下可以放除.ttf格式的字体文件,而且运行时不报错。

ttc
这里的.ttc也可行
4、RuntimeError: In FT2Font: Can not load face
报错信息
这个报错信息不一定是字体文件损坏导致的,也有可能是你的系统不支持这种字体。
NotoSerifJP-VF.ttf这种字体可以在FontLab中正常打开、正常显示,但是windows系统不支持。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 这个错误是由于CentOS系统无法找到指定的字体库导致的。"sans-serif"是一个通用的字体家族名称,CentOS默认情况下没有安装这个字体家族。因此,系统会自动回退到使用默认的字体库"dejavu"。 如果你希望解决这个问题,有几种方法可以尝试: 1. 安装"dejavu"字体库:可以使用以下命令安装"dejavu"字体库: ``` sudo yum install dejavu-sans-fonts ``` 安装完成后,系统将能够找到并使用该字体库。 2. 安装其他字体库:如果你不想使用"dejavu"字体库,可以尝试安装其他的字体库。你可以在CentOS的软件仓库中查找并安装带有"sans-serif"字体家族的字体库。 3. 更改默认字体设置:如果你希望系统使用其他字体库作为默认字体,你可以编辑系统的默认字体设置。具体的编辑方法可能因不同的应用而有所不同,但通常在`/etc/fonts/fonts.conf`或`~/.fonts.conf`文件中可以找到默认的字体设置。你可以将默认字体设置更改为已安装的字体库名称。 总之,"centos findfont: font family ['sans-serif'] not found. falling back to dejavu"错误表示系统在找不到指定的字体家族时会回退到"dejavu"字体库。你可以通过安装相应的字体库,或者更改默认字体设置来解决这个问题。 ### 回答2: 这是一个关于CentOS操作系统中的字体问题。当系统无法找到指定的字体家族“sans-serif”时,它会回退到使用默认的字体家族“dejavu”。 CentOS是一种常见的Linux发行版,它基于社区版本的Red Hat Enterprise Linux(RHEL)。在CentOS中,字体是用于显示应用程序、界面和文本内容的重要元素。 在某些情况下,当应用程序或系统试图使用“sans-serif”字体家族时,如果该字体家族不存在或无法访问,则会出现“findfont: font family ['sans-serif'] not found. falling back to dejavu”的错误。这可能是由于系统缺少所需的字体文件或字体配置错误引起的。 为了解决这个问题,有几种可能的解决方法: 1. 安装缺少的字体文件:可以通过安装缺少的字体文件来解决该问题。可以通过在终端中使用命令sudo yum install <font-package-name>来安装缺少的字体包。 2. 检查字体配置:可能字体配置存在问题,可以通过查看字体配置文件进行调整。配置文件位于/etc/fonts目录下,例如/etc/fonts/fonts.conf。可以编辑该文件,查看和调整字体配置信息。 3. 更改默认字体:如果以上方法仍然无法解决问题,还可以尝试更改系统的默认字体设置。可以通过编辑用户目录下的.fonts.conf文件或全局目录下的/etc/fonts/local.conf文件来更改默认字体。 需要注意的是,对于操作系统的更改和调整,建议在进行操作之前先备份相关文件,以防万一出现意外情况。 总而言之,“centos findfont: font family ['sans-serif'] not found. falling back to dejavu”这个错误是由于系统无法找到指定的字体家族而导致的。可以通过安装缺少的字体文件、调整字体配置或更改默认字体来解决这个问题。 ### 回答3: CentOS是一种Linux操作系统,用于服务器和桌面计算机。当系统无法找到所需的字体时,会出现"findfont: font family ['sans-serif'] not found. falling back to dejavu"的错误信息。 该错误是由系统中缺少所需字体导致的。在这种情况下,系统会自动回退到默认的DejaVu字体。DejaVu是一种自由字体家族,包含各种字形和符号,可作为一个通用的替代方案。 要解决这个问题,有几种方法可供尝试。首先,可以手动安装所需的字体。可以通过访问各个字体的官方网站,下载并安装适用于CentOS的字体。将字体文件拷贝到/usr/share/fonts/目录下,然后运行"fc-cache -f -v"命令来刷新字体缓存。 另外,还可以通过安装额外的字体包来解决问题。在CentOS中,可以使用yum包管理器来安装字体。可以运行"yum search fonts"命令来查找可用的字体包,然后使用"yum install"命令来安装所需的字体包。 另外,还可以尝试修改系统的字体配置文件。可以编辑/etc/fonts/fonts.conf文件,将sans-serif字体族添加到<fontconfig>标签内。将类似以下行添加到文件中: <alias> <family>sans-serif</family> <prefer><family>DejaVu Sans</family></prefer> </alias> 然后保存文件,并运行"fc-cache -f -v"命令来刷新字体缓存。 通过执行上述方法中的一种或多种,您应该能够解决"findfont: font family ['sans-serif'] not found. falling back to dejavu"错误,并恢复系统正常使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值