'\v{C}' 字符不会在不包含 T1 编码的 'Č' 的字体中呈现

'\v{C}' 字符不会在不包含 T1 编码的 'Č' 的字体中呈现

我正在尝试排版一个包含“Č”的单词,并且根据上下文,它必须以无粗体 quattrocento 字体出现。

但是,只要我将 fontencoding 设置为 T1,该字符就不会出现。以下 MWE 会创建一个空白页,但应该会创建一个粗体无“Č”的字符。

注释掉 fontenc 行似乎可以解决问题,但我更愿意为这个字符设置一个特殊情况,然后更改整个文档的 fontencoding

梅威瑟:

\documentclass{article}


\usepackage[T1]{fontenc}

\usepackage[sf,scaled=0.9]{quattrocento}

\begin{document}
\textbf{\textsf{\v{C}}}
\end{document}

答案1

该字体缺少几个预制重音符号。以无法使用连字符连接包含 Č 的单词为代价,您可以这样做

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[sf,scaled=0.9]{quattrocento}

\providecommand*\UndeclareTextComposite[3]{%
  \expandafter\let\csname\expandafter\string\csname
  #2\endcsname\string#1-#3\endcsname\relax}

\UndeclareTextComposite{\v}{T1}{C}

\begin{document}

\textsf{\v{C}}
\textbf{\textsf{\v{C}}}

\end{document}

在此处输入图片描述

https://tex.stackexchange.com/a/58115/4427对于\UndeclareTextCompositeCommand。对您需要的其他缺失重音字符执行类似操作。

\v{C}无论您直接使用 还是都无关紧要Č

笔记。LaTeX 字体包的维护者指出,字形缺失是因为它们甚至不在 TeX 版本所衍生的 OpenType 字体中。

答案2

这是使用 OpenType 字体的另一种解决方案。我下载的 Quattrocento Sans 版本不包含 Unicode 字符 U+030C(结合 caron)或 U+010C(拉丁大写字母 C 与 Caron),但你可以用 U+02C7(Caron)和 来伪造它\accent。你也可以使用Ulrike Fischer 对这个类似问题的解决方案。

\documentclass{article}
\usepackage{fontspec, newunicodechar}

\defaultfontfeatures{Scale = MatchLowercase}
\setmainfont{Quattrocento Roman}[Scale = 1.0]
\setsansfont{Quattrocento Sans}

\renewcommand\v[1]{{\accent"02C7 #1}}
\newunicodechar{Č}{\v{C}}
\newunicodechar{č}{\v{c}}

\begin{document}
\textbf{\textsf{\v{C}Č}}
\end{document}

Quattrocento Sans 字体样本

警告:这支持 Č (U+010C),但如果将其写为 Č (U+43 U+030C),则不一定有效。

相关内容