我LuaLaTeX
有这个代码(如果我写了不适当的内容,请纠正我。)
\usepackage{fontspec}
\usepackage[warnings-off={mathtools-colon,mathtools-overbracket}]{unicode-math}
\defaultfontfeatures{Scale=MatchLowercase,Scale=MatchUppercase}
\setmainfont[Path=./minion/,
%Extension = .otf,
UprightFont=*-Regular.otf,
BoldFont=*-Bold.otf,
%ItalicFont=EBGaramond-MediumItalic.ttf,
ItalicFont=*-It.otf,
%RawFeature=+cswh,
ItalicFeatures={Scale=MatchUppercase},{Scale=MatchLowercase},%{Style=Swash},
%BoldItalicFont=EBGaramond-BoldItalic.ttf,
BoldItalicFont=*-BoldIt.otf
]{MinionPro}
\newfontface\Swash{MinionPro-It}[
Path=./minion/,
Extension = .otf,
Contextuals=Swash]
\DeclareTextFontCommand{\textsw}{\Swash}
% \addfontfeature{ItalicFeatures={Style=Swash},{Scale=MatchUppercase},{Scale=MatchLowercase}},
%\newfontface\Cha[
% Path=./minion/,
% Extension = .ttf,
% %UprightFont=*-Regular,
% %AutoFakeSlant=0.15,
% %AutoFakeBold=1.2,
% ]{Chatelaine-Regular}
%\newfontface\MPI[
% Path=./minion/,
% Extension = .otf,
% ]{MinionPro-It}
\setmathfont{Garamond-Math.otf}[Scale=1.09]
\setmathfont{Garamond-Math.otf}[
range=up/{num},
Scale=1]
\setmathfontface\Neo[
Path=./minion/,
Extension = .otf,
UprightFont=*,
AutoFakeSlant=0.15,
AutoFakeBold=1.2,
Scale=1.09
]{NeoEuler}
\newcommand{\me}{\ensuremath{\Neo e}}
\setmathfont{STIX Two Math}[
range=bb,
Scale=MatchUppercase,
Scale=1.09
]
\unimathsetup{math-style=upright}
\setmathfont[
range=up/{greek,Greek}, script-features={},% sscript-features{},
Path=minion/,
Extension=.otf,
UprightFont=*,
AutoFakeSlant=0.15,
AutoFakeBold=1.2,
Scale=0.91
]{NeoEuler}
\renewcommand{\int}{\ensuremath{\char"222B}}
\setmathfont[range="222B,
Scale=1.09
]{Erewhon Math}
要获取MinionPro
类似主字体、Garamond-math
类似带有希腊字母的数学字体NeoEuler
、来自的黑板数学字母STIX2
、来自字体的积分符号以及指数符号Erewhon Math
的命令,请执行以下操作:e
NeoEuler
我正在浏览文档和这里的一些帖子,以实现相同的目的ConTeXt
。最初我写道
\definefontfamily[mainface][mm][Garamond-Math]
\definefontfamily[mainface][rm][MinionPro]
\setupbodyfont[mainface,11pt]
并且它可以工作(安装了),但尽管使用了和otf's
,斜体和粗体字母也不会返回。我也没有希腊字母,也没有其他字体的符号。对于文件夹中的文件,我尝试了以下步骤作为第一步,以从其他字体中获取符号{\it }
{\bf }
otf
\startenvironment mainface
%0x80-0x97=GREEK
\definefontfallback[Neo-fallback][file:NeoEuler.otf][0x80-x097][force=yes]
%0x98-0xAF=greek
\definefontfallback[Neo-fallback][file:NeoEuler.otf][0x98-0xAF][force=yes]
\starttypescript [serif] [mainface]
\definefontsynonym [Serif] [file:MinionPro-Regular.otf]
\definefontsynonym [SerifCaps] [Serif] [features=smallcaps]
\definefontsynonym [SerifItalic] [file:MinionPro-Italic.otf]
\definefontsynonym [SerifSwash] [SerifItalic] [features=swash]
\definefontsynonym [SerifBold] [file:MinionPro-Bold.otf]
\definefontsynonym [SerifBoldItalic] [file:MinionPro-BoldItalic.otf]
\stoptypescript
\starttypescript [math] [mainface]
\definefontsynonym [mathgreek] [file:Garamond-Math.otf] [fallbacks=Neo-fallback]
\stoptypescript
\definetypeface [mainface] [rm] [serif] [mainface] [default] [features=default]
\definetypeface [mainface] [mm] [math] [mainface] [default] [features=default]
\stopenvironment
\usetypescript[mainface][default]
\setupbodyfont[mainface,rm,mm,11pt]
但无法生成 pdf。当我尝试打开 pdf 文件时,我只收到消息:the pdf file is damaged
。安装字体,如果我执行[Neo Euler]
而不是和[file:NeoEuler.otf]
类似操作:MinionPro
Garamond-Math
\startenvironment mainface
%0x80-0x97=GREEK
\definefontfallback[Neo-fallback][Neo Euler][0x80-x097][force=yes]
%0x98-0xAF=greek
\definefontfallback[Neo-fallback][Neo Euler][0x98-0xAF][force=yes]
\starttypescript [serif] [mainface]
\definefontsynonym [Serif] [MinionPro-Regular]
\definefontsynonym [SerifCaps] [Serif] [features=smallcaps]
\definefontsynonym [SerifItalic] [MinionPro-Italic]
\definefontsynonym [SerifSwash] [SerifItalic] [features=swash]
\definefontsynonym [SerifBold] [MinionPro-Bold]
\definefontsynonym [SerifBoldItalic] [MinionPro-BoldItalic]
\stoptypescript
\starttypescript [math] [mainface]
\definefontsynonym [mathgreek] [Garamond-Math] [fallbacks=Neo-fallback]
\stoptypescript
\definetypeface [mainface] [rm] [serif] [mainface] [default] [features=default]
\usetypescript[mainface][default]
\setupbodyfont[mainface,rm,mm,11pt]
可以生成 pdf 文件,但数学字体未应用。pdf 文件显示和MinionPro
(latinmodern-math
并且{\it }
不起作用{\bf }
)。
很明显,我没有考虑在 ConTeXt 中获取上述 LuaLaTeX 代码的结果。我该如何实现呢?
答案1
有太多代码我看不懂或看起来有点奇怪,但让我给你展示一个小的(可怕的)例子,其中我使用 XCharter(我没有 Minion)作为文本,使用 Garamond Math 作为数学,并修改了一些字母/字形。这可能不是一个完整的答案,但它可能会让你开始。
该文件foo-math.lfg
如下所示:
return {
name = "foo-math",
comment = "Goodies that complement foo.",
author = "juanuni",
mathematics = {
tweaks = {
aftercopying = {
{
tweak = "replacealphabets",
list = {
{
source = "uppercasescript",
target = "uppercasecalligraphic",
filename = "latinmodern-math.otf",
rscale = 1,
},
{
source = "lowercasegreeknormal",
target = "lowercasegreekitalic",
filename = "euler-math.otf",
rscale = 1,
},
{
source = { first = 0x222B }, -- integral
filename = "stixtwomath-regular.ttf",
},
},
}
},
},
},
}
如果你查看 ConTeXt 发行版,你会发现一些.lfg
文件,通常只使用一种字体,并且该字体经过了调整。上面你只看到一种调整,即那replacealphabets
一种。
小示例文件如下所示:
\definefontfamily [mainface] [rm] [XCharter]
\definefontfamily [mainface] [mm] [Garamond Math]
\definefontfeature[default][default][goodies=foo-math.lfg]
\setupbodyfont[mainface,11pt]
\starttext
\startTEXpage[offset=3pt]
Text
\im{ a+b+c }
\im{\mathcal{ABC}}
\im{\alpha\beta\gamma}
\im{\int}
\stopTEXpage
\stoptext
没什么好说的。输出如下所示:
仔细观察,我们会发现书法有拉丁现代语、希腊语有欧拉数学,还有 Stix Two Math 积分符号。
\definefontfeature
如果该行被注释掉,则可以将其与输出进行比较: