如何取得所有 \fontfamily{...}\fontseries{...} 組合的清單?

如何取得所有 \fontfamily{...}\fontseries{...} 組合的清單?

有人剛剛在上下文中向我建議另一個問題考慮一種或兩種\fontfamily{...}\fontseries{...}組合;但我不太熱衷於這些選擇。我怎樣才能檢查全部我的系統上安裝/可用的此類組合?

筆記:如果沒有更好的選擇,我可以在 LaTeX 之外執行此操作,例如從 shell 甚至使用某些 TeX 發行版特定的機制(我使用 TeXLive)。

答案1

並非所有可能的值,但如果滑鼠懸停在以下位置的相關命令上,您可以獲得最常見選項的概述texstudio

(這不會檢查您的系統上是否安裝了所有字體以及它們實際具有的權重)

在此輸入影像描述 在此輸入影像描述

答案2

字體描述通常保存在.fd文件中(但這不是強制性的,某些包可能直接在.sty文件中定義字體)。

外殼命令

fd '^[tT]1.*\.fd$' /usr/local/texlive/2017/texmf-dist/tex/latex | wc -l

(fd是一個提供比 ) 回傳 555 更簡單介面的腳本find

因此,有 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{了亶他件}

我會按照我想要或需要的數量來製作多個系列(和形狀),

然後我得到

神秘系列

不過,該清單將受到系統限制。

相關內容