You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

asciidoctor-pdf自定义图标字体不显示问题求助

解决asciidoctor-pdf自定义图标字体不显示的问题

asciidoctor-pdf确实需要额外配置才能识别自定义图标字体,它的图标处理逻辑和HTML输出完全不同——HTML靠CSS解析字体和图标映射,而PDF生成时需要直接获取图标名称对应的Unicode码点,并且加载本地字体文件。具体步骤如下:

  1. 创建图标名称到Unicode码点的映射文件
    新建一个YAML文件(比如icons.yml),把你自定义字体里的所有图标按以下格式配置,每个图标对应它在字体中的Unicode编码:
icons:
  my-icon: "\uE001"
  another-icon: "\uE002"
  # 继续添加其他图标

注意这里的编码要和你icons.css里content属性的值一致,比如CSS里写content: "\e001",这里就写"\uE001"(大写的E,转义前缀是\u)。

  1. 添加PDF专属的配置属性
    在你的AsciiDoc文档开头,除了原有的图标配置,新增以下属性:
:icons: font
:iconfont-name: icons
:iconfont-remote!:
# PDF自定义图标配置
:icon-set-path: ./icons.yml
:iconfont-path: ./fonts/icons.ttf
  • :icon-set-path:指向你刚创建的YAML映射文件
  • :iconfont-path:指向自定义字体的TTF文件路径(必须是TTF格式,asciidoctor-pdf优先读取这个格式)

如果不想修改adoc文件,也可以在命令行里直接传递这些参数:

bundle exec asciidoctor-pdf book.adoc -o out/book.pdf -a icon-set-path=./icons.yml -a iconfont-path=./fonts/icons.ttf
  1. 验证配置
    重新执行PDF生成命令,之前的警告应该会消失,图标也会正常显示在PDF里。如果还是有问题,检查以下几点:
  • 确认TTF字体文件路径正确,asciidoctor-pdf能读取到该文件
  • 映射文件里的图标名称和你adoc里使用的完全一致(比如my-icon不能写错)
  • Unicode码点和字体文件里的实际编码匹配

内容的提问来源于stack exchange,提问作者Genus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 03:46:05