
Я ищу способ перевести следующее объявление XeLaTeX (на основе пакета unicode-math
)
\setmainfont{Linux Libertine G}
\setsansfont[Scale=MatchLowercase]{Liberation Sans}
\setmonofont[Scale=MatchLowercase,
ItalicFont=lmmono10-italic.otf,
BoldFont=lmmonolt10-bold.otf,
BoldItalicFont=lmmonolt10-boldoblique.otf,
SmallCapsFont=lmmonocaps10-regular]{lmmono10-regular.otf}
\setmathfont[Scale=MatchLowercase]{TeX Gyre Termes Math}
\setmathfont[Scale=MatchLowercase, range=\mathup]{linlibertine_r_g.ttf}
\setmathfont[Scale=MatchLowercase, range=\mathbfup]{linlibertine_rz_g.ttf}
\setmathfont[Scale=MatchLowercase, range=\mathsfup]{liberationsans-regular.ttf}
\setmathfont[Scale=MatchLowercase, range=\mathsfit]{liberationsans-italic.ttf}
\setmathfont[Scale=MatchLowercase, range=\mathbfsfup]{liberationsans-bold.ttf}
\setmathfont[Scale=MatchLowercase, range=\mathbfsfit]{liberationsans-bolditalic.ttf}
\setmathfont[Scale=MatchLowercase, range=\mathtt]{lmmono10-italic.otf}
\setmathfont[Scale=MatchLowercase, range=\mathscr]{asana-math.otf}
в машинописный текст ConTeXt. Мне удалось установить шрифты serif, sansserif и mono; но мне нужна помощь с математическими настройками.
\startenvironment liberty
\starttypescript [liberty]
\definefontsynonym [Serif] [file:LinLibertine_R_G]
\definefontsynonym [SerifCaps] [Serif] [features=smallcaps]
\definefontsynonym [SerifItalic] [file:LinLibertine_RI_G]
\definefontsynonym [SerifSlanted] [SerifItalic]
\definefontsynonym [SerifBold] [file:LinLibertine_RZ_G]
\definefontsynonym [SerifBoldItalic] [file:LinLibertine_RZI_G]
\definefontsynonym [SerifBoldSlanted] [SerifBoldItalic]
\definefontsynonym [Sans] [file:LiberationSans-Regular]
\definefontsynonym [SansCaps] [Sans] [features=smallcaps]
\definefontsynonym [SansItalic] [file:LiberationSans-Italic]
\definefontsynonym [SansSlanted] [SansItalic]
\definefontsynonym [SansBold] [file:LiberationSans-Bold]
\definefontsynonym [SansBoldItalic] [file:LiberationSans-BoldItalic]
\definefontsynonym [SansBoldSlanted] [SansBoldItalic]
\definetypeface [liberty] [rm] [serif] [liberty] [default]
\definetypeface [liberty] [ss] [sans] [liberty] [default] [rscale=0.816]
\definetypeface [liberty] [tt] [mono] [modern] [default]
\definetypeface [liberty] [mm] [math] [times] [default] [rscale=0.958]
\stoptypescript
\setupbodyfont[liberty, 10pt]
\stopenvironment
Заранее спасибо.
PS: Кто-нибудь знает, что эквивалентно Scale=MatchLowercase
? rscale
Я использовал s из файла журнала, созданного XeLaTeX.
EDIT. Как и предполагалось в комментарии, это начало запасного решения, которое, как ни странно, не работает.
\startenvironment liberty
\starttypescript [serif] [liberty]
\definefontsynonym [Serif] [file:LinLibertine_R]
\definefontsynonym [SerifCaps] [Serif] [features=smallcaps]
\definefontsynonym [SerifItalic] [file:LinLibertine_RI]
\definefontsynonym [SerifSlanted] [SerifItalic]
\definefontsynonym [SerifBold] [file:LinLibertine_RZ]
\definefontsynonym [SerifBoldItalic] [file:LinLibertine_RZI]
\definefontsynonym [SerifBoldSlanted] [SerifBoldItalic]
\stoptypescript
\starttypescript [sans] [liberty]
\definefontsynonym [Sans] [file:LiberationSans-Regular]
\definefontsynonym [SansCaps] [Sans] [features=smallcaps]
\definefontsynonym [SansItalic] [file:LiberationSans-Italic]
\definefontsynonym [SansSlanted] [SansItalic]
\definefontsynonym [SansBold] [file:LiberationSans-Bold]
\definefontsynonym [SansBoldItalic] [file:LiberationSans-BoldItalic]
\definefontsynonym [SansBoldSlanted] [SansBoldItalic]
\stoptypescript
\starttypescript [math] [liberty]
\definefontfallback [asserif] [Serif] [0x0030-0x0039] % Digits
\definefontfallback [asserif] [Serif] [0x0041-0x005a] % Latin capital letters
\definefontfallback [asserif] [Serif] [0x0061-0x007a] % Latin small letters
\definefontsynonym [MathRoman] [file:texgyretermes-math] [fallbacks=asserif]
\stoptypescript
\definetypeface [liberty] [rm] [serif] [liberty] [default]
\definetypeface [liberty] [ss] [sans] [liberty] [default] [rscale=0.816]
\definetypeface [liberty] [tt] [mono] [modern] [default]
\definetypeface [liberty] [mm] [math] [liberty] [default] %[rscale=0.958]
\setupbodyfont[liberty, 10pt]
\stopenvironment
решение1
для Libertine уже определен typescript. Чтобы получить TeXGyre Pagella Math, который отлично смотрится с Libertine, загрузите Pagella в первую очередь:
\setupbodyfont[pagella]
\setupbodyfont[libertine,12pt]
\starttext
foo $bar$
\stoptext
шрифты:
voss@shania:~> pdffonts zz.pdf
name type encoding emb sub uni object ID
--------------------------------- ----------- -------------- --- --- ---------
RSSLOW+LinLibertineO CID Type 0C Identity-H yes yes yes 18 0
TQYEHR+TeXGyrePagellaMath-Regular CID Type 0C Identity-H yes yes yes 19 0
решение2
Вот решение. Будьте осторожны, вам понадобится последняя версия ConTeXt. В следующем примере я буду использовать Baskervald, Corbel и Ubuntu Mono вместо Libertine, Liberation и Latin Modern Mono. Наш смешанный математический шрифт будет основан на Pagella Math.
Прежде всего, необходимо знать код математических глифов в математическом шрифте Opentype. Например, они находятся в таблице символов MS Word. Для Pagella Math у нас есть:
- 0x30-0x39 = 0-9
- 0x41-0x5A = вертикальные римские буквы AZ
- 0x61-0x7A = прямая римская буква az
- 0x1D434-0x1D44D = курсивный римский AZ
- 0x1D44E-0x1D467 = курсивный римский az
- 0x1D400-0x1D419 = вертикальный полужирный римский шрифт AZ
- 0x1D41A-0x1D433 = вертикальный полужирный римский шрифт az
- 0x1D468-0x1D481 = курсив, полужирный, римский AZ
- 0x1D482-0x1D49B = курсив, полужирный, римский az
- 0x1D5A0-0x1D5B9 = вертикальный без засечек AZ
- 0x1D5BA-0x1D5D3 = вертикальный без засечек az
- 0x1D608-0x1D621 = курсив без засечек AZ
- 0x1D622-0x1D63B = курсив без засечек az
- 0x1D5D4-0x1D5ED = вертикальный полужирный шрифт без засечек AZ
- 0x1D5EE-0x1D607 = вертикальный полужирный без засечек az
- 0x1D63C-0x1D655 = курсивный полужирный без засечек AZ
- 0x1D656-0x1D66F = курсив полужирный без засечек az
- 0x1D670-0x1D689 = вертикальный моно AZ
- 0x1D68A-0x1D6A3 = вертикальный моно az
Теперь мы используем механизм отката и опцию смещения для выполнения сопоставления:
\startenvironment liberty
% 0x30-0x39 = 0-9 within both Pagella Math and Baskervald
\definefontfallback [baskervaldmath] [file:BaskervaldADFStd] [0x30-0x39] [force=yes]
% 0x41-0x5A = upright roman A-Z within both Pagella Math and Baskervald
\definefontfallback [baskervaldmath] [file:BaskervaldADFStd] [0x41-0x5A] [force=yes]
% 0x61-0x7A = upright roman a-z within both Pagella Math and Baskervald
\definefontfallback [baskervaldmath] [file:BaskervaldADFStd] [0x61-0x7A] [force=yes]
% 0x1D434-0x1D44D = italic roman A-Z
\definefontfallback [baskervaldmath] [file:BaskervaldADFStd-Italic] [0x41-0x5A] [offset=0x1D434-0x1D44D, force=yes]
% 0x1D44E-0x1D467 = italic roman a-z
\definefontfallback [baskervaldmath] [file:BaskervaldADFStd-Italic] [0x61-0x7A] [offset=0x1D44E-0x1D467, force=yes]
% 0x1D400-0x1D419 = upright bold roman A-Z
\definefontfallback [baskervaldmath] [file:BaskervaldADFStd-Bold] [0x41-0x5A] [offset=0x1D400-0x1D419, force=yes]
% etc.
% Type script
\starttypescript [serif] [liberty]
\definefontsynonym [Serif] [file:BaskervaldADFStd]
\definefontsynonym [SerifCaps] [Serif] [features=smallcaps]
\definefontsynonym [SerifItalic] [file:BaskervaldADFStd-Italic]
\definefontsynonym [SerifSlanted] [SerifItalic]
\definefontsynonym [SerifBold] [file:BaskervaldADFStd-Bold]
\definefontsynonym [SerifBoldItalic] [file:BaskervaldADFStd-BoldItalic]
\definefontsynonym [SerifBoldSlanted] [SerifBoldItalic]
\stoptypescript
\starttypescript [sans] [liberty]
\definefontsynonym [Sans] [file:corbel]
\definefontsynonym [SansCaps] [Sans] [features=smallcaps]
\definefontsynonym [SansItalic] [file:corbeli]
\definefontsynonym [SansSlanted] [SansItalic]
\definefontsynonym [SansBold] [file:corbelb]
\definefontsynonym [SansBoldItalic] [file:corbelz]
\definefontsynonym [SansBoldSlanted] [SansBoldItalic]
\stoptypescript
\starttypescript [mono] [liberty]
\definefontsynonym [Mono] [file:UbuntuMono-R]
\definefontsynonym [MonoCaps] [Mono] [features=smallcaps]
\definefontsynonym [MonoItalic] [file:UbuntuMono-RI]
\definefontsynonym [MonoSlanted] [MonoItalic]
\definefontsynonym [MonoBold] [file:UbuntuMono-B]
\definefontsynonym [MonoBoldItalic] [file:UbuntuMono-BI]
\definefontsynonym [MonoBoldSlanted] [MonoBoldItalic]
\stoptypescript
\starttypescript [math] [liberty]
\definefontsynonym [MathRoman] [file:texgyrepagella-math] [fallbacks=baskervaldmath]
\stoptypescript
\definetypeface [liberty] [rm] [serif] [liberty] [default] [features=default]
\definetypeface [liberty] [ss] [sans] [liberty] [default] [features=default, rscale=0.95]
\definetypeface [liberty] [tt] [mono] [liberty] [default] [features=default, rscale=0.88]
\definetypeface [liberty] [mm] [math] [liberty] [default] [features=default]
\setupbodyfont [liberty, 12pt]
\stopenvironment