我现在正在切换到 lualatex(因此有很多问题),部分是为了能够使用其他字体,部分是为了学习 lua 功能。
\usepackage{fontspec} %% should come before microtype
\newfontfamily{\andika}
[Ligatures=TeX, % recommended
UprightFont={*},
ItalicFont={* Italic},
BoldFont={* Bold},
BoldItalicFont={* Bold Italic}]{Andika}
\newcommand{\textandikabf}[2][20]{{\andika\bfseries\fontsize{#1}{#1}\selectfont#2}}
和大多数人一样,我把多年来一直使用的样式文件放在一起,其中包括多年来一直使用的字体,其中大部分我并不完全了解。我相信 fontspec 会修改/覆盖其中一些。我现在正在尝试找出什么是好的做法。
\usepackage[T1]{fontenc}
---想必,我还留着这个。
\usepackage{charter}
--- 是我的主要字体,因为它比现代罗马字体更重,具有良好的数学字体,并且无论在何处安装 latex 都是免费的。唉,fontspec 似乎覆盖了这个,尽管我不使用\setmainfont
。我也不确定 macos(或其他计算机系统)特许字体是否与 texlive 中包含的字体一样好。
\usepackage[mdbch,ttscaled=true]{mathdesign}
--- 与数学字体方面的章程相匹配。
\usepackage{textcomp}
--- 文本配套字体,大概也还可以。例如日元符号之类的东西。
\usepackage{microtype}
--- 我相信这必须被加载后包 fontspec.
因此,我的主要问题是如何恢复我的优质 latex 原生 charter 字体(并且仍然使用 andika 进行高亮显示)。我的第二个问题是如何处理这些其他提到的字体相关软件包。[一如既往] 非常感谢您的建议。
附言:(如果有人知道另一种适用于所有 TeX 系统且具有良好数学支持的通用免费字体,可以用于教科书,请随时给我提示。字体目录列出了具有数学支持的字体https://tug.org/FontCatalogue/mathfonts.html。
答案1
您不会将fontenc
和 一起使用fontspec
。这基本无害,但不起作用。该fontspec
软件包从 8 位传统编码切换到 Unicode。如果您真的想,仍然可以混合搭配。您也不需要加载textcomp
,无论是否fontspec
。它现在是 LaTeX 内核的一部分。
您实际上想要做的是加载 TrueType 或 OpenType 版本的 Charter,以及您的数学字体。TeX Live 发行版中有几个克隆版本,包括 XCharter。
\documentclass{article}
\usepackage[mdbch,ttscaled=true]{mathdesign}
\usepackage{fontspec}
\usepackage[paperwidth=10cm]{geometry} % To format the MWE for TeX.SX
\pagestyle{empty}
\defaultfontfeatures{ Scale=MatchUppercase, Ligatures=TeX }
% There is an XCharter.fontspec file in TeX Live,
% so this command is unnecessary:
%
%\defaultfontfeatures[XCharter]{
% Ligatures=Common,
% UprightFont=*-Roman,
% BoldFont=*-Bold,
% ItalicFont=*-Italic,
% SlantedFont=*-Slanted,
% BoldItalicFont=*-BoldItalic,
% BoldSlantedFont=*-BoldSlanted,
% Extension=.otf}
% Andika is available from:
% https://software.sil.org/andika/download/
\defaultfontfeatures[Andika]{
Ligatures=Common,
UprightFont={*},
ItalicFont={* Italic},
BoldFont={* Bold},
BoldItalicFont={* Bold Italic}}
\setmainfont{XCharter}
\newfontfamily\andika{Andika}
\newcommand{\textandikabf}[2][20]{{\andika\bfseries\fontsize{#1}{#1}\selectfont#2}}
\begin{document}
An \textit{example} of Charter and \textandikabf[10]{Andika}.
\[ x = ma \]
\end{document}
它使用 Math Design Charter 作为数学字体,使用 XCharter 的 OTF 版本作为文本字体。由于两者都是从同一原始字体克隆而来的,因此它们匹配。
不过,TeX 数学包中并不总是有与您的文本字体完全匹配的字体。如果没有,您可以在数学模式下使用现代字体。您可以设置mathastext
或来执行此操作。如果您需要做的只是设置字母表mathspec
以使用斜体样式的主文本字体,则可以使用以下方法:unicode-math
\mathnormal
\usepackage{mathdesign} % Or your legacy 8-bit math package
\usepackage{fontspec} % Or any modern font package
\setmainfont{...}
\usepackage[italic]{mathastext}
答案2
三条评论 — — 前两条是针对的Andika
。
如果 Andika 是文档的主要无衬线字体,我会使用
\setsansfont{Andika}[<options>]
而不是
\newfontfamily{\andika}{Andika}[<options>]
这样,所有采用文档基本无衬线字体的旧命令将继续工作而无需修改。
除非你使用一些定制的、非标准版本的 Andika 字体系列,否则执行
\setsansfont{Andika}
无需说明四种字体选项——
UprightFont
、BoldFont
等等;它们应该是多余的。另一方面,请仔细考虑是否要Scale=MatchUppercase
或Scale=MatchLowercase
;您可能无法预料到结果会有多么不同。(其他人已经提到过这一点。)在 LuaLaTeX 下,不要使用
inputenc
、fontenc
和包。在 之前或之后textcomp
加载都无所谓(或其“老大哥”,即)。microtype
fontspec
unicode-math
答案3
您可以使用 TeX Live 中提供的 XCharter OpenType 字体以及同一作者开发的配套数学字体。
我不确定该\textandikabf
命令应该做什么,但是......
\documentclass{article}
\usepackage{fontspec}
\usepackage[xcharter]{newtxmath}
\setmainfont{XCharter}[
Scale=0.9274,% to match the math fonts
Extension=.otf,
UprightFont=*-Roman,
ItalicFont=*-Italic,
BoldFont=*-Bold,
BoldItalicFont=*-BoldItalic,
]
\newfontfamily{\andika}{Andika}[
Ligatures=TeX,
Extension=.ttf,
Path=./,% because I don't have it in my system and downloaded it
UprightFont=*-Regular,
ItalicFont=*-Italic,
BoldFont=*-Bold,
BoldItalicFont=*-BoldItalic,
]
\newcommand{\textandikabf}[2][20]{%
{\fontsize{#1}{0}\andika\bfseries#2}%
}
\begin{document}
This is in Charter \textit{a}$a+b=c$
\[
\int_{-\infty}^\infty e^{-x^2}\,dx=\sqrt{\pi}
\]
This is \textandikabf{Andika}
\end{document}
正如评论所说,Path=./
只是因为我把 Andika 字体放在了工作目录中。
我通过将斜体“a”与数学字符进行比较来计算缩放因子。