0

我用 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

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

4

1 回答 1

0

很久之后,我找到了帮助我的人。并给我这些方法来解决它。

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

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
于 2020-06-12T10:51:57.980 回答