MacOSX Mojave下Gnuplot 5.2.8文本显示异常问题求助
问题背景
你在 macOS Mojave 10.14.6 上通过以下命令将 Gnuplot 从 5.x.x 版本升级至 5.2.8:
brew uninstall gnuplot brew install gnuplot
升级后发现使用 pngcairo 终端时出现文本显示异常和绘图尺寸异常的问题,但默认的 qt 终端无此故障。测试用的 Gnuplot 命令如下:
set terminal pngcairo set output "test.png" plot sin(x)
生成的异常绘图如下:
pngcairo终端生成的异常sin(x)绘图
可能的原因
这类问题大多是 brew 编译 Gnuplot 5.2.8 时,依赖的 Cairo 图形库版本/配置与旧版 Gnuplot 不兼容,或是 macOS Mojave 的系统字体缓存与新版 Cairo 的渲染逻辑冲突导致的。
解决方案
试试下面几个步骤,按顺序操作,一般能解决问题:
重新安装依赖库,确保版本适配
先卸载 Gnuplot 和它的核心依赖 Cairo,再重新安装,避免残留的旧依赖干扰:brew uninstall --force cairo gnuplot brew install gnuplot(注:新版 brew 已默认包含 Cairo 支持,无需额外加
--with-cairo参数;如果你的 brew 版本较老,可以加上试试)手动指定 pngcairo 终端的字体和尺寸
如果重新安装后问题依旧,直接在 Gnuplot 里手动设置画布尺寸和系统支持的字体,覆盖默认的异常配置:# 调整size为你需要的尺寸,font换成Mojave支持的字体(比如Helvetica、Arial) set terminal pngcairo size 800,600 font 'Helvetica,12' set output "test_fixed.png" plot sin(x)重置 macOS 字体缓存
Mojave 的字体缓存可能出现异常,导致 Cairo 无法正确读取字体,执行以下命令重置:atsutil databases -removeUser atsutil server -shutdown atsutil server -ping重启终端后再运行你的 Gnuplot 测试命令。
启用增强文本渲染并调整字体缩放
在 Gnuplot 里开启enhanced模式,并调整字体缩放比例,适配系统环境:set terminal pngcairo enhanced fontscale 1.0 set output "test_enhanced.png" plot sin(x)可以根据实际显示效果微调
fontscale的值(比如 0.9 或 1.1)。
内容的提问来源于stack exchange,提问作者kipgon

