Latex verbatim:使用后备字体显示字符?

Latex verbatim: show characters using a fallback font?

我对逐字块使用特定的单字体。在我的一个逐字记录块中,某些字符未包含在字体中。正如 中所建议的,可以使用不同的字体,或者使用 pmboxdraw 包来呈现不受支持的字符。但它似乎对我不起作用。

下面是一个MWE,其中黑色圆圈(即第二行第一个字符)无法正确绘制。我的意图是使用我用于逐字块的单字体,并使用任何替代字体来代替黑色圆圈字符。有解决办法吗?非常感谢!

\documentclass{article}
\usepackage{fancyvrb}

\usepackage[utf8]{inputenc}
\usepackage{pmboxdraw}

\usepackage{fontspec}
\setmonofont[Path=./fonts/PragmataPro/,
    UprightFont=*-R,
    ItalicFont=*-RI,
    BoldFont=*-B,
    BoldItalicFont=*-BI]{PragmataPro}

\begin{document}
\begin{Verbatim}
$ systemctl status redsocks
● redsocks.service - Redsocks transparent SOCKS proxy redirector
   Loaded: loaded (/lib/systemd/system/redsocks.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2019-10-28 16:14:16 CST; 5s ago
  Process: 1499 ExecStart=/usr/sbin/redsocks -c ${CONFFILE} (code=exited, status=0/SUCCESS)
  Process: 1496 ExecStartPre=/usr/sbin/redsocks -t -c ${CONFFILE} (code=exited, status=0/SUCCESS)
\end{Verbatim}
\end{document}

使用xelatex的输出显示黑圈渲染不正确:

顺便说一句,如果我不指定自定义的monofont,黑圈根本不会画出来。

您可以用 newunicodechar 包替换单个符号。您只需要找到包含该字符的字体,例如参见https://www.fileformat.info/info/unicode/char/25cf/fontsupport.htm

% !TeX TS-program = xelatex

\documentclass{article}
\usepackage{fancyvrb}

\usepackage[utf8]{inputenc}
\usepackage{newunicodechar}

\usepackage{fontspec}
\setmonofont{Monaco}

\newfontfamily{\dejamono}{DejaVu Sans Mono}

\newunicodechar{●}{{\dejamono ●}}

\begin{document}
\begin{Verbatim}
$ systemctl status redsocks
● redsocks.service - Redsocks transparent SOCKS proxy redirector
   Loaded: loaded (/lib/systemd/system/redsocks.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2019-10-28 16:14:16 CST; 5s ago
  Process: 1499 ExecStart=/usr/sbin/redsocks -c ${CONFFILE} (code=exited, status=0/SUCCESS)
  Process: 1496 ExecStartPre=/usr/sbin/redsocks -t -c ${CONFFILE} (code=exited, status=0/SUCCESS)
\end{Verbatim}
\end{document}

(我在上面的示例中使用 Monaco 字体,因为该字体也缺少符号并且我没有专有的 PragmataPro 字体)