北京雪聪网
我的

FreeBSD下如何使GraphicsMagick支持中文字体?

2026-03-27 10:33:02 浏览次数:0
详细信息

1. 安装中文字体

# 安装文泉驿字体(推荐)
sudo pkg install zh-wqy-fonts

# 或安装其他中文字体包
sudo pkg install zh-arphicttf
sudo pkg install zh-noto-cjk

2. 将字体添加到系统字体目录

# 将中文字体链接到字体目录
sudo ln -sf /usr/local/share/fonts/wqy /usr/share/fonts/
# 或直接复制字体文件
sudo cp /usr/local/share/fonts/wqy/*.ttf /usr/local/share/fonts/

3. 配置GraphicsMagick字体路径

方法A:修改配置文件

# 编辑Type配置文件
sudo vim /usr/local/etc/ImageMagick-6/type.xml
# 或(取决于版本)
sudo vim /usr/local/etc/ImageMagick/type.xml

在文件末尾添加字体配置:

<typemap>
  <include file="chinese.xml" />
</typemap>

方法B:创建字体配置文件

# 创建chinese.xml文件
sudo vim /usr/local/etc/ImageMagick/chinese.xml

内容示例:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE typemap [
<!ELEMENT typemap (type)+>
<!ELEMENT type (#PCDATA)>
<!ATTLIST type name CDATA #REQUIRED>
<!ATTLIST type family CDATA #REQUIRED>
<!ATTLIST type foundry CDATA #IMPLIED>
<!ATTLIST type weight CDATA #IMPLIED>
<!ATTLIST type style CDATA #IMPLIED>
<!ATTLIST type stretch CDATA #IMPLIED>
<!ATTLIST type format CDATA #IMPLIED>
<!ATTLIST type metrics CDATA #IMPLIED>
<!ATTLIST type glyphs CDATA #REQUIRED>
]>
<typemap>
  <type
    name="WenQuanYi-Microhei"
    family="WenQuanYi Micro Hei"
    foundry="unknown"
    weight="400"
    style="normal"
    stretch="normal"
    format="truetype"
    metrics="/usr/local/share/fonts/wqy/wqy-microhei.ttc"
    glyphs="/usr/local/share/fonts/wqy/wqy-microhei.ttc"/>
</typemap>

4. 验证安装

# 查看已安装字体
gm convert -list font

# 测试中文字体
gm convert -font "WenQuanYi Micro Hei" -pointsize 36 -draw "text 10,50 '测试中文'" xc:white test.png

5. 如果已安装GraphicsMagick,可能需要重新编译

# 重新安装或编译
cd /usr/ports/graphics/GraphicsMagick
sudo make config
# 确保选择了需要的字体支持选项
sudo make clean install

6. 常用调试命令

# 查看字体搜索路径
gm convert -list type

# 临时指定字体路径
gm convert -font /usr/local/share/fonts/wqy/wqy-microhei.ttc ...

# 使用env变量
export MAGICK_FONT_PATH=/usr/local/share/fonts/wqy

注意事项:

GraphicsMagick使用ImageMagick的字体配置文件 确保字体文件权限正确(通常644) 可能需要刷新字体缓存(如果系统使用fontconfig) 不同版本配置文件路径可能不同

通过以上步骤,GraphicsMagick应该能正常显示和处理中文字体。

相关推荐