当前位置: 首页 > news >正文

Ubuntu下ttf-mscorefonts-installer的安装与Python中Times New Roman字体的应用指南

1. Ubuntu下ttf-mscorefonts-installer字体包安装全攻略

第一次在Ubuntu上用matplotlib画论文图表时,发现系统默认的英文字体里居然没有Times New Roman,这让我这个科研狗差点崩溃。毕竟大多数期刊都要求使用这个经典字体。折腾了半天才发现,原来Linux系统默认不包含这些商业字体,需要手动安装微软核心字体包。下面我就把踩坑后总结的完整安装流程分享给大家。

ttf-mscorefonts-installer是Ubuntu官方仓库提供的微软核心字体安装包,包含Times New Roman、Arial、Courier New等12种常用英文字体。虽然这些字体在Windows上是标配,但在Linux环境下需要额外安装。这个教程特别适合需要准备学术论文图表、毕业论文排版或者商业文档制作的开发者。

2. 安装前的准备工作

2.1 系统环境检查

在开始安装前,建议先更新系统软件包列表。打开终端(Ctrl+Alt+T)执行以下命令:

sudo apt update sudo apt upgrade

检查系统是否已安装fontconfig,这个库负责字体配置管理:

fc-list

如果提示命令未找到,则需要先安装fontconfig:

sudo apt install fontconfig

2.2 解决可能的依赖问题

有些Ubuntu衍生版本(如Kali Linux、Linux Mint)可能需要额外安装cabextract工具来处理微软的.cab字体压缩包:

sudo apt install cabextract

3. 安装ttf-mscorefonts-installer

3.1 常规安装方法

执行标准安装命令:

sudo apt install ttf-mscorefonts-installer

安装过程中会出现终端图形界面(ncurses界面),需要用Tab键切换到"OK"按钮后按回车。接着会显示微软的EULA协议,选择"是"同意条款。

注意:在这个步骤很多人会遇到安装失败,主要是因为字体服务器连接问题。如果看到"Failed to download extra data files"错误,不要慌,下面会介绍手动解决方法。

3.2 手动安装方案

当自动下载失败时,可以到以下目录查看字体下载链接:

cat /usr/share/package-data-downloads/ttf-mscorefonts-installer

这些链接指向微软的字体文件。你可以:

  1. 手动下载所有列出的.ttf文件
  2. 创建一个临时目录存放这些字体,比如~/Downloads/msttcorefonts
  3. 执行重新配置命令:
sudo dpkg-reconfigure ttf-mscorefonts-installer

在出现的界面中指定你存放字体文件的目录路径。

3.3 验证安装结果

成功安装后,检查字体目录:

ls /usr/share/fonts/truetype/msttcorefonts/

应该能看到包括Times_New_Roman.ttf在内的多个字体文件。也可以用以下命令测试:

fc-match "Times New Roman"

如果返回"Times New Roman"字样及文件路径,说明安装成功。

4. 常见问题解决方案

4.1 安装失败后的清理

如果安装中途失败想重新开始,建议彻底清除后重装:

sudo apt remove --purge ttf-mscorefonts-installer sudo apt clean sudo apt autoclean

然后重新执行安装步骤。

4.2 字体缓存更新问题

有时即使安装成功,系统仍无法识别新字体。这时需要重建字体缓存:

sudo fc-cache -fv

这个命令会强制刷新系统字体缓存,-v参数显示详细过程便于排查问题。

4.3 特定衍生版的兼容问题

在基于Ubuntu的某些发行版(如Kali Linux)上,可能需要额外步骤:

sudo apt --fix-broken install sudo dpkg --configure -a

5. Python中使用Times New Roman字体

5.1 基础matplotlib配置

最简单的使用方法是在绘图代码开头设置rcParams:

import matplotlib.pyplot as plt plt.rcParams['font.family'] = 'Times New Roman' plt.rcParams['font.size'] = 12 # 设置默认字号 # 示例绘图 plt.plot([1,2,3,4]) plt.title('Sample Plot') plt.show()

5.2 高级字体管理方法

对于更复杂的应用场景,建议使用FontProperties指定具体字体文件路径:

import matplotlib.pyplot as plt import matplotlib.font_manager as fm # 重建字体缓存(重要!) fm._rebuild() # 指定字体文件路径 font_path = '/usr/share/fonts/truetype/msttcorefonts/Times_New_Roman.ttf' font_prop = fm.FontProperties(fname=font_path) # 应用字体属性 plt.rcParams['font.family'] = font_prop.get_name() # 绘制图表 fig, ax = plt.subplots() ax.plot([1,2,3,4], label='Data') ax.set_title('Advanced Font Usage', fontproperties=font_prop) ax.legend(prop=font_prop) plt.show()

5.3 中英文混排解决方案

当需要同时显示中文和Times New Roman时,可以使用以下配置:

from matplotlib import rcParams # 设置默认字体 rcParams['font.family'] = 'sans-serif' rcParams['font.sans-serif'] = ['Times New Roman', 'SimHei'] # Windows中文用户用SimHei rcParams['axes.unicode_minus'] = False # 解决负号显示问题

6. 学术图表优化技巧

6.1 SVG输出配置

对于需要矢量图输出的论文,建议添加以下设置:

plt.rcParams['svg.fonttype'] = 'path' # 将文字转为路径,避免字体缺失问题

这样即使在没有安装Times New Roman的电脑上打开SVG文件,也能正常显示。

6.2 LaTeX文本渲染

如果需要与LaTeX排版风格一致,可以启用matplotlib的LaTeX文本渲染:

plt.rcParams['text.usetex'] = True plt.rcParams['text.latex.preamble'] = r'\usepackage{times}'

注意:这种方法需要系统安装LaTeX环境,会增加图表生成时间。

6.3 字体大小与排版规范

根据常见学术期刊要求,建议使用以下基准尺寸:

  • 图标题:10-12pt
  • 坐标轴标签:8-10pt
  • 刻度标签:7-8pt
  • 图例文本:8-9pt

可以通过全局设置统一管理:

plt.rcParams['axes.titlesize'] = 12 plt.rcParams['axes.labelsize'] = 10 plt.rcParams['xtick.labelsize'] = 8 plt.rcParams['ytick.labelsize'] = 8 plt.rcParams['legend.fontsize'] = 9

7. 其他应用场景扩展

7.1 在Jupyter Notebook中使用

对于Jupyter用户,建议在第一个单元格运行以下代码确保字体生效:

import matplotlib.pyplot as plt from matplotlib import font_manager # 显式加载字体 font_manager.findfont("Times New Roman", rebuild_if_missing=True) # 设置全局样式 plt.style.use('seaborn') plt.rcParams['font.family'] = 'Times New Roman'

7.2 配合Pandas绘图

Pandas的plot方法也继承matplotlib的字体设置:

import pandas as pd df = pd.DataFrame({'data': [1,3,2,4]}) ax = df.plot(title='Pandas Plot') ax.title.set_fontname('Times New Roman') # 显式设置标题字体

7.3 在Seaborn中使用

Seaborn基于matplotlib,字体设置方法类似:

import seaborn as sns sns.set(font='Times New Roman') # 设置全局字体 sns.set_context("paper", font_scale=1.2) # 调整字体缩放比例

8. 字体管理进阶技巧

8.1 多字体切换方案

如果需要在不同图表间切换字体,可以创建字体属性字典:

font_props = { 'times': fm.FontProperties(fname='/usr/share/fonts/truetype/msttcorefonts/Times_New_Roman.ttf'), 'arial': fm.FontProperties(fname='/usr/share/fonts/truetype/msttcorefonts/Arial.ttf') } # 使用特定字体绘图 plt.title('Times Title', fontproperties=font_props['times']) plt.xlabel('Arial Label', fontproperties=font_props['arial'])

8.2 自定义字体缓存位置

如果不想修改系统字体目录,可以将字体放在用户目录并更新缓存:

mkdir -p ~/.fonts/truetype cp *.ttf ~/.fonts/truetype/ fc-cache -fv

然后在Python中指定用户字体路径:

user_font_path = os.path.expanduser('~/.fonts/truetype/Times_New_Roman.ttf')

8.3 字体回退机制

为确保代码在不同环境下的兼容性,可以实现字体回退:

try: plt.rcParams['font.family'] = 'Times New Roman' except: print("Times New Roman not found, falling back to DejaVu Sans") plt.rcParams['font.family'] = 'DejaVu Sans'

在实际科研工作中,我经常需要为合作者准备图表。最稳妥的做法是导出PDF时将所有文字转为轮廓,这样可以完全避免字体兼容问题。在matplotlib中可以通过以下设置实现:

plt.rcParams['pdf.fonttype'] = 42 # 输出Type 42字体(可编辑) # 或者 plt.rcParams['pdf.fonttype'] = 3 # 将文字转为路径(不可编辑但兼容性最好)
http://www.jsqmd.com/news/635112/

相关文章:

  • WeiboImageReverse:一键追溯微博图片来源的Chrome神器
  • HunyuanVideo-Foley自动化测试实践:构建音效生成质量评估流水线
  • Qwen3-Reranker-0.6B与YOLOv8结合:智能图像检索系统构建
  • 驾驶行为识别图像数据集 疲劳驾驶图像识别数据集 驾驶员闭眼识别 开车打盹图像识别人员疲劳状态识别图像数据集 YOLO第10332期
  • Cesium GLSL材质实战:构建动态雷达扫描效果
  • <%= projectName %>
  • 【SCI电气】考虑不同充电需求的电动汽车有序充电调度方法附Matlab代码
  • 5个步骤让普通鼠标在macOS上获得超越苹果触控板的体验
  • 2026深度评测:ChatGPT模型功能完整性全解析——技术标杆的全能边界与本土化困境
  • 为什么92%的AIAgent项目在V2迭代期失败?SITS2026模式集锁定的8个隐性架构债(含检测脚本)
  • Earth Online网站下载ENVISAT ASAR数据:批量下载32景影像的实战经验与效率优化
  • 每日两道算法题(第四天)(01背包,模拟+素数)
  • 3步开启你的Web游戏模拟器:EmulatorJS完全指南
  • vLLM-v0.17.1详细步骤:NVIDIA/AMD/Intel多平台GPU算力适配指南
  • 告别环境依赖!用Auto-Py-To-Exe把YOLOv5项目打包成独立EXE(附避坑指南)
  • Linux入门--远程登录与用户管理
  • Win11Debloat终极指南:一键清理Windows 11预装垃圾,让你的系统重获新生
  • ViPER4Windows终极修复指南:简单三步解决Windows 10/11音频兼容性问题 [特殊字符]
  • 【国家级AI系统审计指南】:基于NIST AI RMF与OWASP Top 10 for LLMs的AIAgent双模日志审计框架
  • 从零上手谷歌Colab:免费GPU环境搭建与个人数据集加载实战
  • Graphite代码审查自动化实践
  • CHORD-X视觉战术指挥系统Python爬虫数据注入:开源情报自动收集与分析
  • 教育大模型落地难?SITS2026 AIAgent案例全链路复盘,从Prompt工程到教育伦理审查,12个关键决策点不容错过
  • 2026年贵州智慧停车与智能安防一站式解决方案深度横评|官方联系直达 - 精选优质企业推荐榜
  • 终极离线语音转文字指南:如何在本地电脑上安全转录音频文件
  • 一文读懂机器学习与深度学习的区别是什么
  • ARM 架构 JuiceFS 性能优化:基于 MLPerf 的实践与调优郝
  • 2026奇点大会AIAgent推荐系统技术栈全景图,含3类不可替代中间件选型矩阵与2027兼容性预警
  • 优客工具箱:让音频格式转换变得触手可及
  • 二本计算机专业转AI Agent:简历怎么写才加分