Как получить список всех комбинаций \fontfamily{...}\fontseries{...}?

Как получить список всех комбинаций \fontfamily{...}\fontseries{...}?

Кто-то только что предложил мне в контекстеДругой вопросрассмотреть один или два\fontfamily{...}\fontseries{...} комбинации; но я не слишком увлечен этими вариантами. Как я могу проверитьвсетакие комбинации установлены/доступны в моей системе?

Примечание:Я бы не против сделать это вне LaTeX, например, из оболочки или даже с использованием какого-либо специфичного для дистрибутива TeX механизма (я использую TeXLive) — если нет лучшего варианта.

решение1

Не все возможные значения, но вы можете получить обзор наиболее распространенных вариантов, если наведете указатель мыши на нужную команду в texstudio:

(это не проверяет, все ли шрифты установлены в вашей системе и какую на самом деле имеют начертание)

введите описание изображения здесь введите описание изображения здесь

решение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

Этот сайт может помочь. Полезно для проверки доступных шрифтов.

https://tug.org/FontCatalogue/

решение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{了亶他件}

и я делаю это для стольких серий (и форм), сколько мне нужно или нужно,

тогда я получаю

myseries

Однако список будет ограничен системными ограничениями.

Связанный контент