使用组合字体作为电传打字机字体的后备字符吗?

使用组合字体作为电传打字机字体的后备字符吗?

我正在尝试寻找解决方案https://stackoverflow.com/questions/65177985/pandoc-markdown-to-pdf-fixing-missing-character-warnings;为此,我发现:

... 和我几乎到达那里combofont;这里是一个 MWE,带有来自的标题输出pandoc

tester.tex

(编辑:查看历史记录以查看原始输出pandoc- 我已经删去了大部分序言内容,并且似乎下面的 MWE 重现了同样的问题):

\documentclass[]{article}
\usepackage{lmodern}
\usepackage{combofont}
\setupcombofont{multiscript-regular}
{
  {file:lmroman10-regular.otf:\combodefaultfeat} at #1pt, % have this in C:/Windows/Fonts/lmroman10-regular.otf ; C:/bin/texlive/2020/texmf-dist/fonts/opentype/public/lm/lmroman10-regular.otf
  {file:DejaVuSerif.ttf} at #1pt % have this in C:/Windows/Fonts/DejaVuSerif.ttf ; C:/msys64/mingw64/share/fonts/TTF/DejaVuSerif.ttf ;
}
{
   {},
   fallback
}
\DeclareFontFamily{TU}{multiscript}{}
\DeclareFontShape {TU}{multiscript}{m}{n} {<->combo*multiscript-regular}{}
%\renewcommand\ttdefault{multiscript} % TEX.SE 514940
\AtBeginDocument{\fontfamily{multiscript}\selectfont} % have to do it this way; if the ...\selectfont is just in the header, then \begin{document} resets it, so then we'd have to write the ...\selectfont in the body of the document explicitly, which we'd rather not do

\author{}
\date{}

\begin{document}

Here is a test of a glyph that otherwise trips up *latex: ┌

%\begin{verbatim}
%Here is a test of the same glyph inside verbatim: ┌ ...
%\end{verbatim}

\end{document}

编译如下:

$ lualatex -halt-on-error -interaction=batchmode tester.tex
This is LuaHBTeX, Version 1.12.0 (TeX Live 2020/W32TeX)
 restricted system commands enabled.

luaotfload | loaders : eval: found tfmdata for "luaotfload<1>", injecting.

$ grep 'Missing character' tester.log

...PDF 结果为:

pdf-ok

因此,对于普通/罗马/直立文本,字形已成功替换,并且日志中没有“缺少字符”消息。


现在,如果取消{verbatim}注释中的代码片段tester.tex,则编译结果为:

$ lualatex -halt-on-error -interaction=batchmode tester.tex
This is LuaHBTeX, Version 1.12.0 (TeX Live 2020/W32TeX)
 restricted system commands enabled.

luaotfload | loaders : eval: found tfmdata for "luaotfload<1>", injecting.

$ grep 'Missing character' tester.log
Missing character: There is no ┌ (U+250C) in font [lmmono10-regular]:!

... 生成的 PDF 为:

pdf 错误

因此,字符确实在普通文本和字体中被替换 - 但在{verbatim}使用电传打字机字体的环境文本中并没有被替换(并且在日志中输出相应的“缺失字符”)。


我的问题是:我该如何设置,以便为使用电传打字机字体的所有地方(以及环境等)combofont提供字符后备?verbatimlstlisting

(需要注意的是,我最初只想为电传打字机文本/字体提供后备字形;我为上面的 MWE 中的普通文本/字体提供后备的唯一原因是因为这是迄今为止我唯一能做到的事情——所以至少这是一个很好的起点)。


编辑:在这里找到了解决方法:为 LuaLaTeX 中缺失的字形定义后备字体- 看起来,我唯一缺少的就是命令\renewcommand\ttdefault{multiscript}后面的a \DeclareFontShape。这确实有效,并生成了 PDF 格式的内容:

pdf-更好

... 但是,这会用作DejaVuSerif.ttf电传打字机字体的后备 - 所以我根本没有显示电传打字机/单色字体;但我想要用作DejaVuSerif.ttf普通/直立/罗马文本的后备 - 并用作DejaVuSansMono.ttf电传打字机文本的后备;我该怎么做呢?

相关内容