部分中文字符无法使用 ctex 显示

部分中文字符无法使用 ctex 显示

我使用 overleaf 编辑简历,但我发现编译后的 PDF 中无法显示中文字符“珅”。我也尝试了 XeCJK,但它也不行。这是我的代码:

\documentclass[a4paper]{article}
\usepackage[UTF8]{ctex}
\begin{document}
\end{document}

答案1

和加载的默认字体集 ( fandol)可能不包含许多古汉字的字形。如果您在 Overleaf 上编译此内容,则可以使用加载 Noto Serif CJK SC 的选项:ctexxeCJKfontset=ubuntu

\usepackage[UTF8,fontset=ubuntu]{ctex}

或者如果您希望明确加载字体:

\usepackage{ctex}
\setCJKmainfont{Noto Serif CJK SC} % or some other font that has the glyph

答案2

我将通过一些最佳实践来扩展 imnothere 的精彩答案。

\documentclass[a4paper]{article}
\tracinglostchars=2
\usepackage[UTF8, fontset=none]{ctex}

\defaultfontfeatures{ Scale=MatchUppercase,
                      Ligatures=TeX,
                      Renderer=HarfBuzz }

%% Noto CJK fonts available at
%%  https://www.google.com/get/noto/help/cjk/
\setmainfont{Latin Modern Roman}[Scale=1.0]
\setCJKmainfont{Noto Serif CJK SC}
\setCJKsansfont{Noto Sans CJK SC}
\setCJKmonofont{Noto Sans Mono CJK SC}

\begin{document}
\end{document}
  • 您希望\tracinglostchars=2TeX 在字体缺少字符时向您发出警告。如果没有此命令,警告将默默地埋在文件中间.log
  • 在 LuaLaTeX 中,从 2020 年开始,您需要使用 加载 CJK 字体Renderer=HarfBuzz,否则会出现内存不足错误。XeTeX 默认使用 HarfBuzz,并且运行良好。如果 XeLaTeX 发现 ,它会向您发出良性警告Renderer=
  • Scale=如果要混合使用不同的字体,您可能需要一个选项。
  • 您可能还希望设置无衬线字体和等宽字体。
  • 如果您无论如何都要从包中重载字体集,则可以跳过使用 加载字体集fontset=none

相关内容