我正在尝试寻找解决方案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 结果为:
因此,对于普通/罗马/直立文本,字形已成功替换,并且日志中没有“缺少字符”消息。
现在,如果取消{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 为:
因此,字符确实在普通文本和字体中被替换 - 但在{verbatim}
使用电传打字机字体的环境文本中并没有被替换(并且在日志中输出相应的“缺失字符”)。
我的问题是:我该如何设置,以便为使用电传打字机字体的所有地方(以及环境等)combofont
提供字符后备?verbatim
lstlisting
(需要注意的是,我最初只想为电传打字机文本/字体提供后备字形;我为上面的 MWE 中的普通文本/字体提供后备的唯一原因是因为这是迄今为止我唯一能做到的事情——所以至少这是一个很好的起点)。
编辑:在这里找到了解决方法:为 LuaLaTeX 中缺失的字形定义后备字体- 看起来,我唯一缺少的就是命令\renewcommand\ttdefault{multiscript}
后面的a \DeclareFontShape
。这确实有效,并生成了 PDF 格式的内容:
... 但是,这会用作DejaVuSerif.ttf
电传打字机字体的后备 - 所以我根本没有显示电传打字机/单色字体;但我想要用作DejaVuSerif.ttf
普通/直立/罗马文本的后备 - 并用作DejaVuSansMono.ttf
电传打字机文本的后备;我该怎么做呢?