我想在 XeLaTeX 中导入另一种字体中的所有重音符号。我可以使用 xetex 从另一种字体导入特定字母,如下例所示。但如果 fontspec 中使用的字体没有定义 unicode 字符,则输出乱码。
\documentclass{article}
\usepackage{amsthm,amsmath,amsfonts}
\usepackage{iftex}
\ifxetex
\usepackage[no-math]{fontspec}
\usepackage{unicode-math}
\else
\usepackage[LGR,T2A,LY1]{fontenc}
\usepackage{OldStandard}
\usepackage{pdfrender, xcolor}
\fi
\ifpdftex
\pdfrender{StrokeColor=black,TextRenderingMode=2,LineWidth=0.1pt}
\makeatletter\let\normalrender\PdfRender@NormalColorHook\let\PdfRender@NormalColorHook\@empty\newcommand*{\textnormalrender}[1]{\begingroup\normalrender#1\endgroup}\makeatother
\else
\newcommand{\fakebold}{2}
\setmainfont[FakeBold=\fakebold,ItalicFont=ModernMT-ExtendedItalic.otf,BoldItalicFont=OldStandard-BoldItalic.otf,SmallCapsFont={OldStandard-Regular.otf},SmallCapsFeatures={Letters=SmallCaps,FakeBold=\fakebold,RawFeature=+smcp},BoldFont=OldStandard-Bold.otf,BoldFeatures={FakeBold=0,SmallCapsFont=OldStandard-Bold.otf,SmallCapsFeatures={RawFeature=+smcp}},BoldItalicFeatures={FakeBold=0}]{ModernMTStd-Extended.otf}
\setmathfont[FakeBold=\fakebold,]{NewCMMath-Book.otf}
\setmathfont[range=it,FakeBold=\fakebold]{Old Standard Italic}
\setmathfont[range={\symfrak},FakeBold=\fakebold]{Asana Math}
\setmathfont[range={\int},Scale=2,]{Old Standard Italic}
\setmathfont[range={\sum,\prod},Scale=1.7]{Old Standard Italic}
\usepackage{mathspec}
\setmathsfont(Digits)[Scale=MatchUppercase,FakeBold=\fakebold]{Old Standard}
\setmathsfont(Latin)[Uppercase=Italic,Lowercase=Italic,FakeBold=\fakebold,Scale=MatchUppercase]{ModernMT-ExtendedItalic.otf}
\defaultfontfeatures{Mapping=tex-text,Ligatures=Tex}
\fi
\title{\textsc{Title}}
\author{\textsc{Me}}
\newtheorem{theorem}{\textsc{\textbf{Theorem}}}
\begin{document}
\maketitle
Checking \'{a},\"{a},\H{a},\"{}
\end{document}
我每次需要访问时可能都会切换到不同的字体\H
,但我认为如果我能像对其他字体那样做会更好。例如,
\setmathfont[range=it,FakeBold=\fakebold]{Old Standard Italic}
允许我使用旧标准字体斜体版本中的所有字母。我不想手动取消声明/声明我需要的所有实例。