我可以更改 Asciidoctor PDF 在源代码块中使用的字体吗?

Can I change the font used in source blocks by Asciidoctor PDF?

是否可以在 asciidoctor-pdf 生成的 PDF 的 source 块中指定不同的字体?

我猜这与我使用的主题有关(目前只是默认),但我已经检查了 theming guide 并且看不到任何与 source 专门阻止。

是的,这是可能的,是的,这与主题有关。您可以在 https://github.com/asciidoctor/asciidoctor-pdf/blob/main/data/themes/default-theme.yml 下检查默认的 asciidoctor-pdf 主题,您将看到第 188 行 # code is used for source blocks (perhaps change to source or listing?),这是您需要更改的内容。

最简单的方法是通过 扩展默认主题 创建自己的主题 custom-theme.yml 并设置您想要的字体系列,在我的示例中 快递,这个有效:

extends: default
font:
  catalog:
    merge: true
    Courier:
      normal: cour.ttf
      bold: courbd.ttf
      italic: couri.ttf
      bold_italic: courbi.ttf
code:
  font_family: Courier

我这样组织我的文件:

yourFile.adoc
resources/themes/custom-theme.yml
resources/fonts/cour.ttf
resources/fonts/courbd.ttf
resources/fonts/couri.ttf
resources/fonts/courbi.ttf

然后您需要调用 asciidoctor-pdf 使用您的新主题和 link 到字体路径,如下所示:

asciidoctor-pdf -a pdf-theme=resources/themes/custom-theme.yml -a pdf-fontsdir="resources/fonts;GEM_FONTS_DIR" yourFile.adoc