Fontspec 软件包与其他字体相关软件包(charter 等)

Fontspec 软件包与其他字体相关软件包(charter 等)

我现在正在切换到 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}

XCharter/Andika/MathDesign 示例

它使用 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}
    

    无需说明四种字体选项—— UprightFontBoldFont等等;它们应该是多余的。另一方面,请仔细考虑是否要Scale=MatchUppercaseScale=MatchLowercase;您可能无法预料到结果会有多么不同。

  • (其他人已经提到过这一点。)在 LuaLaTeX 下,不要使用inputencfontenc和包。在 之前或之后textcomp加载都无所谓(或其“老大哥”,即)。microtypefontspecunicode-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”与数学字符进行比较来计算缩放因子。

在此处输入图片描述

相关内容