从 LuaLaTeX unicode-math 到 ConTeXt typescript

从 LuaLaTeX unicode-math 到 ConTeXt typescript

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的命令,请执行以下操作:eNeoEuler

我正在浏览文档和这里的一些帖子,以实现相同的目的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]类似操作:MinionProGaramond-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 文件显示和MinionProlatinmodern-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如果该行被注释掉,则可以将其与输出进行比较:

数学中只有 Garamond

相关内容