macOS(Monterey)下独立版enscript指定AFM文件位置的问题咨询
解决独立版enscript无法识别本地AFM字体文件的问题
我之前在分发独立工具包时也碰到过类似的enscript路径识别坑,给你几个经过验证的解决方案:
1. 优先使用环境变量指定库路径
enscript会优先读取ENSCRIPT_LIB环境变量来定位其依赖的库文件(包括AFM目录),这是最适合独立分发场景的方案,不用修改配置文件:
# 先进入你解压后的enscript根目录 cd /path/to/your/enscript-folder # 设置环境变量指向当前目录的lib文件夹 export ENSCRIPT_LIB="$PWD/lib" # 测试指定字体打印(比如用Helvetica,字号12) ./bin/enscript -f Helvetica@12 your-test-file.txt
这个方法能直接让enscript加载自带的AFM文件,不会受系统默认配置影响。
2. 修正enscript.cfg的绝对路径配置
如果你坚持用配置文件,要确保AFMPath写的是完整的绝对路径,并且放在配置文件的[AFM]区块下:
# 打开enscript根目录下的enscript.cfg # 找到[AFM]部分,添加或修改: [AFM] AFMPath=/Users/your-username/path/to/enscript-folder/lib/afm
注意:如果路径包含空格,一定要用双引号括起来,比如AFMPath="/Users/your name/enscript/lib/afm";另外要确保enscript有读取这个目录的权限(一般解压后默认权限没问题)。
3. 命令行直接指定AFM路径
临时测试或者脚本里可以用--afm-path参数直接指定,不用改配置或环境变量:
# 进入enscript根目录后执行 ./bin/enscript --afm-path ./lib/afm -f Times-Roman@10 your-test-file.txt
如果不是在根目录执行,就写完整的绝对路径,比如--afm-path /Users/xxx/enscript/lib/afm。
4. 替代方案:打包完整独立版enscript
如果以上方法都不行,可能是你提取的Snow Leopard版本enscript有兼容性问题,可以试试自己打包一个更兼容的独立版:
- 从Homebrew编译enscript(
brew install enscript); - 用
otool -L /usr/local/bin/enscript查看它依赖的动态库; - 把所有依赖的动态库复制到你的enscript包的
lib目录; - 用
install_name_tool修改enscript的库路径为相对路径,比如:install_name_tool -change /usr/lib/libiconv.2.dylib @executable_path/../lib/libiconv.2.dylib /path/to/your/enscript/bin/enscript
这样处理后的enscript就能完全独立运行,不会依赖系统库,也能正确识别自带的AFM文件。
最后提醒一下:指定字体时要和AFM文件的名称完全一致,比如Times-Roman.afm对应-f Times-Roman@12,大小写和名称都不能错哦。
内容的提问来源于stack exchange,提问作者emendelson
相关产品推荐
相关产品推荐

