asciidoc-pdf 不转换代码块中的表情符号

asciidoc-pdf doesnt convert emojis in code blocks

我用 asciidoc 写了一个文本,当我用 asciidoc-pdf 转换时,它没有从这个代码块转换表情符号:

[source,java]
----
  public static void lines() {
    System.out.print("♥♥♥♥♥♥♥♥♥♥");
  }
----

pdf 中的结果如下所示:

public static void lines() {
System.out.print("¬¬¬¬¬¬¬¬¬¬");
}

是的,我使用了自定义主题并设置了后备字体。 这是 yaml 主题文件:

font:
  catalog:
    PTSerif:
      normal: PTSerif-Regular.ttf
      italic: PTSerif-Italic.ttf
      bold: PTSerif-Bold.ttf
      bold_italic: PTSerif-BoldItalic.ttf
    EmojiFallback: 
      normal: EmojiFallback.ttf
      italic: EmojiFallback.ttf
      bold: EmojiFallback.ttf
      bold_italic: EmojiFallback.ttf
  fallbacks:
  - EmojiFallback
base:
  font-family: PTSerif

希望你能帮助我。我很感激任何帮助

很长一段时间后,我找到了帮助我的人。并给我这些修复方法。

最简单的方法是扩展默认主题并将添加的内容合并到字体目录中:

extends: default
font:
  catalog:
    merge: true
    PTSerif:
      normal: PTSerif-Regular.ttf
      italic: PTSerif-Italic.ttf
      bold: PTSerif-Bold.ttf
      bold_italic: PTSerif-BoldItalic.ttf
    EmojiFallback: EmojiFallback.ttf
  fallbacks:
  - EmojiFallback
base:
  font-family: PTSerif

您可以将代码块配置为使用 TTF 等宽字体,而不是扩展默认主题:

font:
  catalog:
    PTSerif:
      normal: PTSerif-Regular.ttf
      italic: PTSerif-Italic.ttf
      bold: PTSerif-Bold.ttf
      bold_italic: PTSerif-BoldItalic.ttf
    PTMono:
      normal: PTMono-Regular.ttf
      italic: PTMono-Italic.ttf
      bold: PTMono-Bold.ttf
      bold_italic: PTMono-BoldItalic.ttf
    EmojiFallback: EmojiFallback.ttf
  fallbacks:
  - EmojiFallback
base:
  font-family: PTSerif
code:
  font-family: PTMono

最后,Asciidoctor PDF 现在提供了一种表情符号字体,它是在 default-with-fallback-font 主题中配置的。所以你可以扩展那个主题:

extends: default-with-fallback-font
font:
  catalog:
    merge: true
    PTSerif:
      normal: PTSerif-Regular.ttf
      italic: PTSerif-Italic.ttf
      bold: PTSerif-Bold.ttf
      bold_italic: PTSerif-BoldItalic.ttf
  fallbacks: [M+ 1p Fallback, Noto Emoji]
base:
  font-family: PTSerif