我想\={<letter>}
在使用 排版的文档中对大写字母使用“bar”重音符号 ( ) roboto
。如果我使用 LaTeX 编译文档,它可以完美运行。但如果我使用 LuaLaTeX 编译它,则可以正常工作\={A}
,但 和\={B}
都不起作用\={C}
:
问题:为什么?如何在 roboto 和 LuaLaTeX 中使用 'bar' 重音符号?
笔记:使用其他字体时我还没遇到过这样的问题。
平均能量损失
\documentclass{article}
\usepackage[sfdefault]{roboto}
\usepackage{ifluatex}
\ifluatex
\newcommand{\engine}{LuaTeX}
\else
\newcommand{\engine}{TeX}
\fi
\begin{document}
\engine:
\={A}
\={B}
\={C}
\end{document}
答案1
Roboto 字体缺少 U+0304 COMBINING MACRON 字符,因此你确实收到了可怕的消息
Missing character: There is no ̄ (U+0304) in font [Roboto-Regular.ttf]
\=
您可以通过声明以传统方式处理与的组合来解决这个问题,即通过\accent
。
\documentclass{article}
\usepackage{fontspec}
\makeatletter
\DeclareUnicodeEncoding{roboto}{%
\input{tuenc.def}%
\DeclareTextAccent{\=}{roboto}{"00AF}%
}
\makeatother
\setmainfont{Roboto}[
Extension = .ttf,
NFSSEncoding = roboto,
UprightFont = *-Regular,
ItalicFont = *-RegularItalic,
BoldFont = *-Bold,
BoldItalicFont = *-BoldItalic,
]
\begin{document}
\={A}
\={B}
\={C}
\end{document}
我没有看到使用该包的简单方法,因为它不允许NFSSEncoding
在字体选择中添加选项。
答案2
以下解决方法(灵感来自:https://tex.stackexchange.com/a/233378/112503)似乎有效:
\documentclass[12pt]{article}
\usepackage{fontspec}
\setmainfont{Roboto}[%
Extension = .ttf ,
Path = C:/path-to-font-file/ ,
UprightFont = {Roboto-Regular},
]
\begin{document}
\=A (\accent"02C9 A)
\accent"02C9 B
\accent"02C9 C
\end{document}