我们使用的字体Liberation Sans
缺少许多 Unicode 字符。据我所知,DejaVu Sans
有很多这样的字符。有没有办法在lualatex
出现缺少字符的投诉时自动 (!) 切换字体?
{/usr/share/texmf/fonts/map/pdftex/updmap/pdftex.map}
Missing character: There is no ☎ (U+260E) in font LiberationSans:mode=node;scr
ipt=latn;language=dflt;+tlig;!
平均能量损失
\documentclass[a4paper,11pt,english]{article}
\usepackage{fontspec}
\usepackage[shorthands=off,bidi=basic]{babel}
\setmainfont{Liberation Sans}
%\setmainfont{DejaVu Sans}
\begin{document}
Kontakt: ☎️
\end{document}
因此主要思想是定义一个倒退当默认错过角色时。如果后备没有角色,那也没关系。但至少有一个级别会更好。
使用:LuaHBTeX, Version 1.12.0
答案1
感谢 Ulrike,我找到了以下工作示例
\documentclass[a4paper,11pt,english]{article}
\usepackage{fontspec}
\directlua{luaotfload.add_fallback
("emojifallback",
{ "DejaVu Sans:mode=harf;script=grek",
"NotoColorEmoji:mode=harf"}
)}
\setmainfont{Liberation Sans}[RawFeature={fallback=emojifallback}]
\begin{document}
Kontakt: ☎️ »
答案2
您可以声明某个特定字符为活动字符,这样您就可以指定每个单独符号所来自的字体,并且也可以在 XeTeX 或 PDFTeX 中使用。
\documentclass[a4paper,11pt,english]{article}
\tracinglostchars=2
\usepackage[shorthands=off,bidi=basic]{babel}
\usepackage{fontspec}
\usepackage{newunicodechar}
\setmainfont{Liberation Sans}
\newfontfamily\emojifont{Noto Color Emoji}[
Scale=MatchUppercase,
Renderer=HarfBuzz ]
\newunicodechar{^^^^260e}{{\emojifont\symbol{"260E}}} % ☎️
\begin{document}
Kontakt: ☎️
\end{document}