Кто-то только что предложил мне в контекстеДругой вопросрассмотреть один или два\fontfamily{...}\fontseries{...}
комбинации; но я не слишком увлечен этими вариантами. Как я могу проверитьвсетакие комбинации установлены/доступны в моей системе?
Примечание:Я бы не против сделать это вне LaTeX, например, из оболочки или даже с использованием какого-либо специфичного для дистрибутива TeX механизма (я использую TeXLive) — если нет лучшего варианта.
решение1
решение2
Описания шрифтов обычно хранятся в .fd
файлах (но это не обязательно, некоторые пакеты могут определять шрифты непосредственно в .sty
файле).
Команда оболочки
fd '^[tT]1.*\.fd$' /usr/local/texlive/2017/texmf-dist/tex/latex | wc -l
(fd
скрипт, предоставляющий более простой интерфейс, чем find
) возвращает 555.
Таким образом, существует 555 семейств шрифтов, поддерживающих кодировку T1 (и 502 для кодировки OT1, с аналогичной командной строкой).
Теперь ваша задача — заглянуть внутрь каждого .fd
интересующего вас файла и извлечь информацию, связанную с формой и серией, представленными в семействе шрифтов. Например, T1Roboto-LF.fd
содержит
%% Generated by autoinst on 2015/09/15
%%
\ProvidesFile{T1Roboto-LF.fd}
[2015/09/15 (autoinst) Font definitions for T1/Roboto-LF.]
\expandafter\ifx\csname Roboto@scale\endcsname\relax
\let\Roboto@@scale\@empty
\else
\edef\Roboto@@scale{s*[\csname Roboto@scale\endcsname]}%
\fi
\DeclareFontFamily{T1}{Roboto-LF}{}
\DeclareFontShape{T1}{Roboto-LF}{l}{sc}{
<-> \Roboto@@scale Roboto-Light-lf-sc-t1
}{}
\DeclareFontShape{T1}{Roboto-LF}{l}{n}{
<-> \Roboto@@scale Roboto-Light-lf-t1
}{}
\DeclareFontShape{T1}{Roboto-LF}{l}{it}{
<-> \Roboto@@scale Roboto-LightItalic-lf-t1
}{}
\DeclareFontShape{T1}{Roboto-LF}{l}{scit}{
<-> \Roboto@@scale Roboto-LightItalic-lf-sc-t1
}{}
\DeclareFontShape{T1}{Roboto-LF}{l}{scsl}{
<-> ssub * Roboto-LF/l/scit
}{}
\DeclareFontShape{T1}{Roboto-LF}{l}{sl}{
<-> ssub * Roboto-LF/l/it
}{}
\DeclareFontShape{T1}{Roboto-LF}{k}{sc}{
<-> \Roboto@@scale Roboto-Black-lf-sc-t1
}{}
\DeclareFontShape{T1}{Roboto-LF}{k}{n}{
<-> \Roboto@@scale Roboto-Black-lf-t1
}{}
\DeclareFontShape{T1}{Roboto-LF}{k}{it}{
<-> \Roboto@@scale Roboto-BlackItalic-lf-t1
}{}
\DeclareFontShape{T1}{Roboto-LF}{k}{scit}{
<-> \Roboto@@scale Roboto-BlackItalic-lf-sc-t1
}{}
\DeclareFontShape{T1}{Roboto-LF}{k}{scsl}{
<-> ssub * Roboto-LF/k/scit
}{}
\DeclareFontShape{T1}{Roboto-LF}{k}{sl}{
<-> ssub * Roboto-LF/k/it
}{}
\DeclareFontShape{T1}{Roboto-LF}{b}{sc}{
<-> \Roboto@@scale Roboto-Bold-lf-sc-t1
}{}
\DeclareFontShape{T1}{Roboto-LF}{b}{n}{
<-> \Roboto@@scale Roboto-Bold-lf-t1
}{}
\DeclareFontShape{T1}{Roboto-LF}{b}{it}{
<-> \Roboto@@scale Roboto-BoldItalic-lf-t1
}{}
\DeclareFontShape{T1}{Roboto-LF}{b}{scit}{
<-> \Roboto@@scale Roboto-BoldItalic-lf-sc-t1
}{}
\DeclareFontShape{T1}{Roboto-LF}{b}{scsl}{
<-> ssub * Roboto-LF/b/scit
}{}
\DeclareFontShape{T1}{Roboto-LF}{b}{sl}{
<-> ssub * Roboto-LF/b/it
}{}
\DeclareFontShape{T1}{Roboto-LF}{mb}{sc}{
<-> \Roboto@@scale Roboto-Medium-lf-sc-t1
}{}
\DeclareFontShape{T1}{Roboto-LF}{mb}{n}{
<-> \Roboto@@scale Roboto-Medium-lf-t1
}{}
\DeclareFontShape{T1}{Roboto-LF}{mb}{it}{
<-> \Roboto@@scale Roboto-MediumItalic-lf-t1
}{}
\DeclareFontShape{T1}{Roboto-LF}{mb}{scit}{
<-> \Roboto@@scale Roboto-MediumItalic-lf-sc-t1
}{}
\DeclareFontShape{T1}{Roboto-LF}{mb}{scsl}{
<-> ssub * Roboto-LF/mb/scit
}{}
\DeclareFontShape{T1}{Roboto-LF}{mb}{sl}{
<-> ssub * Roboto-LF/mb/it
}{}
\DeclareFontShape{T1}{Roboto-LF}{m}{sc}{
<-> \Roboto@@scale Roboto-Regular-lf-sc-t1
}{}
\DeclareFontShape{T1}{Roboto-LF}{m}{n}{
<-> \Roboto@@scale Roboto-Regular-lf-t1
}{}
\DeclareFontShape{T1}{Roboto-LF}{m}{it}{
<-> \Roboto@@scale Roboto-Italic-lf-t1
}{}
\DeclareFontShape{T1}{Roboto-LF}{m}{scit}{
<-> \Roboto@@scale Roboto-Italic-lf-sc-t1
}{}
\DeclareFontShape{T1}{Roboto-LF}{m}{scsl}{
<-> ssub * Roboto-LF/m/scit
}{}
\DeclareFontShape{T1}{Roboto-LF}{m}{sl}{
<-> ssub * Roboto-LF/m/it
}{}
\DeclareFontShape{T1}{Roboto-LF}{t}{sc}{
<-> \Roboto@@scale Roboto-Thin-lf-sc-t1
}{}
\DeclareFontShape{T1}{Roboto-LF}{t}{n}{
<-> \Roboto@@scale Roboto-Thin-lf-t1
}{}
\DeclareFontShape{T1}{Roboto-LF}{t}{it}{
<-> \Roboto@@scale Roboto-ThinItalic-lf-t1
}{}
\DeclareFontShape{T1}{Roboto-LF}{t}{scit}{
<-> \Roboto@@scale Roboto-ThinItalic-lf-sc-t1
}{}
\DeclareFontShape{T1}{Roboto-LF}{t}{scsl}{
<-> ssub * Roboto-LF/t/scit
}{}
\DeclareFontShape{T1}{Roboto-LF}{t}{sl}{
<-> ssub * Roboto-LF/t/it
}{}
\DeclareFontShape{T1}{Roboto-LF}{bx}{sl}{
<-> ssub * Roboto-LF/b/sl
}{}
\DeclareFontShape{T1}{Roboto-LF}{bx}{scsl}{
<-> ssub * Roboto-LF/b/scsl
}{}
\DeclareFontShape{T1}{Roboto-LF}{bx}{sc}{
<-> ssub * Roboto-LF/b/sc
}{}
\DeclareFontShape{T1}{Roboto-LF}{bx}{n}{
<-> ssub * Roboto-LF/b/n
}{}
\DeclareFontShape{T1}{Roboto-LF}{bx}{it}{
<-> ssub * Roboto-LF/b/it
}{}
\DeclareFontShape{T1}{Roboto-LF}{bx}{scit}{
<-> ssub * Roboto-LF/b/scit
}{}
\endinput
который говорит, что шрифт предоставляет серию
l
(свет)k
(черный)b
(смелый)mb
(средний жирный)m
(средний или обычный)t
(тонкий)
и определяет bx
как псевдоним для b
.
Дескрипторы, за исключением m
и b
по сути являются произвольными строками. В руководстве по шрифтам LaTeX ( texdoc fntguide
) перечислены лишь несколько «общих» значений. То, что вызывает пакет шрифтов, k
может сильно отличаться от другого.
решение3
Этот сайт может помочь. Полезно для проверки доступных шрифтов.
решение4
Список даже больше, чем тот. Он открытый. Ответ — x.
Теперь, когда xelatex и lualatex могут получать доступ к системным шрифтам, а не только к tex/latex, список значительно расширился.
Дальше,
Предположим, я использую fontspec
пакет и определяю семейство шрифтов \setromanfont{Noto Serif}[
, а затем даю имя одной из его серий 仢ul
и назначаю этой серии несвязанное начертание шрифта, FontFace={仢ul}{n}{Font=SimSun},
и делаю это несколько раз.
и имеют
\DeclareRobustCommand{\仢ulseries}{\fontseries{仢ul}\selectfont}
и
\DeclareTextFontCommand{\仢textul}{\仢ulseries}
а затем вызвать серию с помощью
\仢textul{\sampletext} {\仢ulseries \sampletext}
где \sampletext
определяется как
\newcommand\sampletext{了亶他件}
и я делаю это для стольких серий (и форм), сколько мне нужно или нужно,
тогда я получаю
Однако список будет ограничен системными ограничениями.