%% This is part of the OpTeX project, see http://petr.olsak.net/optex

% Version <2022-10-18>. Loaded in format and secondly on demand by \fontfam[catalog]

\_famtext {Special name for printing a catalog :}

\_faminfo [Catalogue] {Catalogue of all registered font families} {fonts-catalog} {}
\_famalias [Catalog]

\_famsrc {CTAN}
\_famtext {Computer Modern like family:}

\_famfrom {GUST}
\_faminfo [Latin Modern] {TeX Gyre fonts based on Computer Modern} {f-lmfonts}
   { -,\nbold,\sans,\sans\nbold,\slant,\ttset,\ttset\slant,\ttset\caps,%
       \ttprop,\ttprop\bolder,\quotset: {\rm\bf\it\bi}
       \caps: {\rm\it}
       \ttlight,\ttcond,\dunhill: {\rm\it} \upital: {\rm} }
\_famalias [LMfonts] \_famalias [Latin Modern Fonts] \_famalias [lm]

\_famtext {TeX Gyre fonts based on Adobe 35:}

\_faminfo [Termes] {TeX Gyre Termes fonts based on Times} {f-termes}
   { -,\caps: {\rm\bf\it\bi} }
\_famalias [Times]

\_faminfo [Heros] {TeX Gyre Heros fonts based on Helvetica} {f-heros}
   { -,\caps,\cond,\caps\cond: {\rm\bf\it\bi} }
\_famalias [Helvetica]

\_faminfo [Adventor] {TeX Gyre Adventor based on Avantgarde Book} {f-adventor}
   { -,\caps: {\rm\bf\it\bi} }
\_famalias [Avantgarde Book]

\_faminfo [Bonum] {TeX Gyre Bonum fonts based on Bookman} {f-bonum}
   { -,\caps: {\rm\bf\it\bi} }
\_famalias [Bookman]

\_faminfo [Pagella] {TeX Gyre Pagella fonts based on Palatino} {f-pagella}
   { -,\caps: {\rm\bf\it\bi} }
\_famalias [Palatino]

\_faminfo [Schola] {TeX Gyre Schola fonts based on New Century} {f-schola}
   { -,\caps: {\rm\bf\it\bi} }
\_famalias [New Century]

\_faminfo [Cursor] {TeX Gyre Cursor fonts based on Courier} {f-cursor}
   { -,\caps: {\rm\bf\it\bi} }
\_famalias [Courier]

\_famsrc {https://indestructibletype.com/}
\_famtext {Typefaces from indestructible type*}

\_famfrom {Owen Earl, indestructible type*}
\_faminfo [Besley*] {Antique slab serif, inspired by Robert Besley's Clarendon} {f-besley}
   { -,\narrow,\cond: {\rm\mf\bf\ef\kf\it\mi\bi\ei\ki}
     \caps,\narrow\caps,\cond\caps: {\rm\mf\bf\ef\kf\it\mi\bi\ei\ki}
     \allsc,\narrow\allsc,\cond\allsc: {\rm\mf\bf\ef\kf\it\mi\bi\ei\ki} }
\_famalias [Besley]

\_faminfo [Bodoni*] {No-compromises Bodoni for the digital age} {f-bodonimoda}
   { -,\caps,\allsc: {\rm\mf\bf\ef\kf\it\mi\bi\ei\ki} }
\_famalias [Bodoni] \_famalias [BodoniModa]

\_faminfo [Drafting* Mono] {Monospaced typeface family with small caps} {f-draftingmono}
   { \thin,\light,-,\medium: {\rm\bf\it\bi}
     \thin\caps,\light\caps,\caps,\medium\caps: {\rm\bf\it\bi}
     \thin\allsc,\light\allsc,\allsc,\medium\allsc: {\rm\bf\it\bi} }
\_famalias [DraftingMono]

\_faminfo [Jost*] {A modern geometric sans-serif} {f-jost}
   { \hairline,\thin,\light,-,\medium: {\rm\bf\it\bi} -: {\kf\ki} }
\_famalias [Jost]

\_famsrc {CTAN}
\_famtext {Other fonts:}

\_famfrom{Antonis Tsolomitis}
\_faminfo [New Computer Modern] {CM with Book variants, Cyrillic, Greek} {f-newcm}
   { -: {\rm\bf\it\bi} \book: {\rm\it} \ttset: {\rm\bf\it\bi} \book\ttset: {\rm\it}
     \sans: {\rm\bf\it\bi} \book\sans: {\rm\it}
     \caps: {\rm\bf} \book\caps: {\rm} }
\_famalias [NewCM] \_famalias [NewCMfonts]

\_famfrom{STI Pub group, MicroPress Inc., Coen Hoffman}
\_faminfo [STIX] {Scientific and Technical Information Exchange fonts} {f-stix}
   { -: {\rm\bf\it\bi} }

\_faminfo [XITS] {A fork of STIX with Bold Math variant} {f-xits}
   { -: {\rm\bf\it\bi} \caps: {\rm} }

\_famfrom{Tiro Typeworks Ltd., R. Mills, J. Hudson, P. Hanslow, C. Hoffman}
\_faminfo [STIXTwo] {Second version of STIX} {f-stixtwo}
   { -,\caps: {\rm\it} \medium,\caps\medium: {\rm\it} \bolder,\caps\bolder: {\rm\it}
     -,\caps: {\bf\bi} }
\_famalias [STIX2]

\_famfrom {Philipp H. Poll}
\_faminfo [Linux Libertine] {Free fonts typically installed on systems} {f-libertine}
   { -: {\rm\bf\it\bi} \semibold: {\bf\bi}
     \caps,\sans,\mono,\caps\sans: {\rm\bf\it\bi} -: {\initials\displ\keybr} }
\_famalias [Libertine] \_famalias [LinLibertine]

\_famfrom {Philipp H. Poll, Khaled Hosny}
\_faminfo [Libertinus] {Free fonts derived from Linux Libertine} {f-libertinus}
   { -: {\rm\bf\it\bi} \semibold: {\bf\bi} \sans: {\rm\bf\it}
     \caps: {\rm\bf\it\bi} \caps\semibold: {\bf\bi} \caps\sans: {\rm\bf\it}
     -: {\mono\initials\displ\keybr} }

\_famfrom{Victor Gaultney}
\_faminfo [Gentium] {Serif free fonts, support Greek, Cyrrilic, IPA} {f-gentium}
   { -,\caps,\book,\book\caps: {\rm\bf\it\bi} }
\_famalias [GentiumPro]

\_famfrom {Daniel Flipo}
\_faminfo [KP fonts] {KP fonts -- Johannes Kepler project} {f-kpfonts}
   { -,\light,\sans,\mono, \caps, \caps\light, \caps\sans,\caps\mono,\swash: {\rm\bf\it\bi} }
\_famalias [KP]

\_famfrom {DejaVu fonts team}
\_faminfo [DejaVu] {Derived from the Vera fonts} {f-dejavu}
   { -,\cond,\sans,\sans\cond,\mono: {\rm\bf\it\bi} \light: {\rm} }

\_famfrom {Zygfryd Gardzielewski, Janusz M. Nowacki}
\_faminfo [Antykwa Torunska] {Traditional Polish font family} {f-antt}
   { -,\cond,\caps, \caps\cond: {\rm\bf\it\bi}
    \medium,\cond\medium, \light, \cond\light:{\rm\it} }
\_famalias [Antt]

\_famfrom {Adam Półtawski, Janusz M. Nowacki, Bogusław Jackowski and Piotr Strzelczyk}
\_faminfo [Poltawski] {Antykwa Poltawskiego, Polish traditional font family} {f-poltawski}
   { \ccond,\cond,-,\expd,\eexpd,
     \light\ccond,\light\cond,\light,\light\expd,\light\eexpd,
     \caps: {\rm\bf\it\bi} }
\_famalias [Antykwa Poltawskiego] \_famalias [Poltawskiego] \_famalias [APoltawskiego]

\_famfrom {Michael Sharpe}
\_faminfo [Baskerville] {Free variants of classical Baskerville} {f-baskerville}
   { -,\caps: {\rm\bf\it\bi} }
\_famalias [BaskervilleF]

\_famfrom {Arkandis Digital Foundry}
\_faminfo [Baskervald] {Free variants of classical Baskerville by ADF} {f-baskervald}
   { -,\caps: {\rm\bf\it\bi} }
\_famalias [Baskervald ADF] \_famalias [ADFBaskerville]

\_famfrom {Undercase Type https://undercase.xyz/}
\_faminfo [Fraunces] {Display, old-style soft serif typeface} {f-fraunces}
   { -: {\tf\ti\lf\li\rm\it\mf\mi\bf\bi\kf\ki}
     \wonky: {\rm\it}
     \ssoft=70: {\rm\it}
   }

\_famfrom {Andrey V. Panov}
\_faminfo [Heuristica] {Extends the Utopia font} {f-heuristica}
   { -: {\rm\bf\it\bi} \caps: {\rm} }

\_faminfo [Erewhon] {Derived from Heuristica with slanted variants} {f-erewhon}
   { -: {\rm\bf\it\bi\sl\bs} \caps: {\rm\bf\it\bi} }

\_famfrom {Georg Duffner, Octavio Pardo}
\_faminfo [EB Garamond] {Free variants of classical Garamond} {f-ebgaramond}
   { -,\caps,\medium,\medium\caps,\semibold,\semibold\caps: {\rm\bf\it\bi}
     \swash: {\it\bi} -: {\initials} }
\_famalias [Garamond]

\_famfrom {George Douros, Benjamin Miller}
\_faminfo [Garamond Libre] {Free, derived from old style font family} {f-garamondl}
   { -,\caps: {\rm\bf\it\bi} \swash: {\it\bi} }
\_famalias [GaramondL]

\_famfrom {Pablo Impallari, Rodrigo Fuenzalida}
\_faminfo [LibreCaslon] {Libre Caslon Text, inspired by Caslon} {f-librecaslon}
   { -,\onum: {\rm\bf\it\bi} }
\_famalias [Caslon]

\_famfrom {Pablo Impallari, Igino Marini}
\_faminfo [Cabin] {Inspired by Gill's typefaces + touch of a modernism} {f-cabin}
   { -,\caps: {\rm\bf\it\bi} \medium: {\rm\it} \semibold: {\bf\bi}
     \cond: {\rm\bf\it\bi} \cond\medium: {\rm\it} \cond\semibold: {\bf\bi}
   }

\_famfrom {Adobe, Paul D. Hunt}
\_faminfo [Source Pro] {Adobe SourceSerifPro, SourceSansPro, SourceCodePro} {f-sourcepro}
   { \elight,\light,-,\bolder: {\rm\it} -,\bolder: {\bf\bi}
     \sans\elight,\sans\light,\sans,\sans\bolder: {\rm\it} \sans,\sans\bolder: {\bf\bi}
     \elight\caps,\light\caps,\caps,\bolder\caps: {\rm} \caps,\bolder\caps: {\bf}
     \sans\elight\caps,\sans\light\caps,\sans\caps,\sans\bolder\caps: {\rm}
     \sans\caps,\sans\bolder\caps: {\bf}
     \mono\elight,\mono\light,\mono,\mono\medium,\mono\bolder: {\rm\it} \mono,\mono\bolder: {\bf\bi}
   }
\_famalias [AdobeSource] \_famalias [AdobeSourcePro]

\_famfrom {Uni. of the  Aegean}
\_faminfo [Kerkis] {Free Bookman alternative with Greek letters} {f-kerkis}
   { -,\sans: {\rm\bf\it\bi} \caps: {\rm\bf} \semibold: {\bf\bi}
     \sanssemi: {\rm} -:{\calli}  }

\_famfrom {Craig Rozynski}
\_faminfo [ComicNeue] {Comic Neue sans serif} {f-comicneue}
   { -,\angular: {\lf\li\rm\it\bf\bi} }

\_famfrom {tipo, Dario Manuel Muhafara}
\_faminfo [Overlock] {fonts simulate Overlock sewing technique} {f-overlock}
   { -: {\rm\it\bf\bi\kf\ki} }

\_famfrom {Eben Sorkin}
\_faminfo [Merriweather] {Modern shapes, sharp serifs} {f-merriweather}
   { -,\sans: {\lf\li\rm\it\bf\bi\kf\ki} \caps,\sans\caps: {\rm\it} }

\_famfrom {Google, Christian Robertson}
\_faminfo [Roboto] {Geometric grotesk, thin variants included} {f-roboto}
   { -: {\tf\ti\lf\li\rm\it\mf\mi\bf\bi\kf\ki}
     \cond: {\lf\li\rm\it\bf\bi}
     \mono: {\tf\ti\lf\li\rm\it\mf\mi\bf\bi}
     \ttset: {\tf\lf\rm\bf}
     \caps, \caps\cond: {\rm\bf\it\bi} \caps\ttset: {\rm\bf}
   }

\_famfrom {Malgorzata Budyta, Janusz Marian Nowacki}
\_faminfo [Kurier] {Two element sans serif typeface} {f-kurier}
   { -,\cond,\caps,\caps\cond: {\rm\it\bf\bi}
     \light,\light\cond,\medium,\medium\cond,\bolder,\bolder\cond: {\rm\it}
   }
\_faminfo [Iwona] {Sans serif typeface derived from Kurier} {f-iwona}
   { -,\cond,\caps,\caps\cond: {\rm\it\bf\bi}
     \light,\light\cond,\medium,\medium\cond,\bolder,\bolder\cond: {\rm\it}
   }

\_famfrom {tyPoland Lukasz Dziedzic}
\_faminfo [Lato] {Geometric grotesk, many weights} {f-lato}
   { \hair: {\rm\it} \thin: {\rm\it} \light: {\rm\it} -: {\rm\it}
     \book: {\rm\it} \bolder: {\rm\it} -: {\bf\bi}
     \book: {\bf\bi} \bolder: {\bf\bi}
   }

\_famfrom {Julieta Ulanovsky, http://www.zkysky.com.ar}
\_faminfo [Montserrat] {Inspired from old posters in Montserat in Buenos Aires} {f-montserrat}
   { -,\caps,\alter: {\rm\bf\it\bi} \xlight,\elight,\light,-,\medium,\semibold: {\rm\it}
     -,\medium,\semibold: {\bf\bi} }

\_famfrom {CTU in Prague, Roman Cernohous}
\_famsrc {non free font, used in CTU Style, see \url{https://www.cvut.cz/en/ctu-logo}}
\_faminfo [Technika] {Fonts from visual style of CTU in Prague} {f-technika}
   { -,\light,\book, \caps, \caps\book: {\rm\bf\it\bi} -:{\stencil} }
\_famalias [CTU Technika]

\_famsrc {CTAN}
\_famfrom {Bitstream, Andrey V. Panov, Michael Sharpe}
\_faminfo [XCharter] {An extension of Bitstream Charter} {f-xcharter}
   { -,\slant,\caps,\caps\slant: {\rm\bf\it\bi} }

\_famfrom {George Matthiopoulos, Greek Font Society}
\_faminfo [GFSBodoni] {Based on Bodoni with greek letters} {f-gfsbodoni}
   { -: {\rm\bf\it\bi} \caps: {\rm} }

\_famfrom {David J. Perry, Michael Sharpe}
\_faminfo [fbb] {Bembo–like fonts derived from Cardo} {f-fbb}
   { -,\caps: {\rm\bf\it\bi} \swash: {\rm} }
\_famalias [Bembo] \_famalias [FBembo]

\_famfrom {bBox Type GmbH, Carrois Corporate GbR, Edenspiekermann AG}
\_faminfo [Fira] {Humanist sans-serif, originally designed for Firefox OS} {f-fira}
   { \thin,\light,\book,-,\medium,\mono,\mono\medium,%
     \thin\caps,\light\caps,\book\caps,\caps,\medium\caps,%
     \thin\allsc,\light\allsc,\book\allsc,\allsc,\medium\allsc: {\rm\bf\it\bi} }

\_famfrom {Raph Levien}
\_faminfo [Inconsolata] {A monospaced font for code listing} {f-inconsolata}
   { -,\narrow: {\rm\bf} }

\_famfrom {Alexey Kryukov}
\_faminfo [OldStandard] {inspired by a typeface most commonly used in old books} {f-oldstandard}
   { -,\caps: {\rm\bf\it\bi} }

\_famfrom {Séamas Ó Brógáin}
\_faminfo [Clara] {Clara, a serif font family} {f-clara}
   { -: {\rm\bf\it\bi} \caps: {\rm} }
   
\_famfrom {Maxim Iorsh}
\_faminfo [Culmus] {Hebrew roman, sans and mono fonts from the Culmus project} {f-culmus}
   {\roman,\sans,\mono: {\rm\bf\it\bi}}

\_endcode

Once you have prepared a font family file with the name `f-<famname>.opm` and
\TeX/ can see it in your filesystem then you can type \^`\fontfam``[<famname>]` and
the file is read, so the information about the font family is loaded. The name
`<famname>` must be lowercase and without spaces in the file name
`f-<famname>.opm`. On the other hand, the `\fontfam` command is more tolerant:
you can write uppercase letters and spaces here. The spaces are ignored and
uppercase letters are converted to lowercase.
For example `\fontfam [LM Fonts]` is equivalent to `\fontfam [LMfonts]` and both
commands load the file `f-lmfonts.opm`.

You can use your font file in sense of the previous paragraph without
registering it. But problem is that such families are not listed when
`\fontfam[?]` is used and it is not included in the font catalog when
`\fontfam[catalog]` is printed. The list of families taken in the catalog and
listed on the terminal is declared in two files: `fams-ini.opm` and
`fams-local.opm`. The second file is optional. Users can create it and write to
it the information about user-defined families using the same syntax as in
existed file `fams-ini.opm`.

The information from the user's `fams-local.opm` file has precedence.
For example `fams-ini.opm` declares aliases Times$\to$Termes etc. If you
have the original Times purchased from Adobe then you can register your
declaration of Adobe's Times family in `fams-local.opm`. When a user writes
`\fontfam[Times]` then the original Times (not Termes) is used.

The `fams-ini.opm` and `fams-local.opm` files can use the macros
\~`\_faminfo`, \~`\_famalias` and \~`\_famtext`. See the example from
`fams-ini.tex`:

{\everytt={\typosize[8/10]\_let\_printverbline=\_printcodeline \medskip}
 \def\docfile{fams-ini.opm}
\verbinput (3-28) fams-ini.opm
... etc.
}
\medskip

The \^`\_faminfo` commad has the syntax:
\begtt \catcode`\<=13
\_faminfo [<Family Name>] {<comments>} {<file-name>}
     { <mod-plus-vars> }
\endtt
%
The `<mod-plus-vars>` data is used only when printing the catalog. It consists of
one or more pairs `<mods>: {<vars>}`.
For each pair: each modifier (separated by comma) is applied to each
variant selector in <vars>
and prepared samples are printed. The `-` character means no modifiers
should be applied.

The \^`\_famalias` declares an alias to the last
declared family.

The \^`\_famtext` writes a line to the terminal and the log file when all
families are listed.

The \^`\_famfrom` saves the information about font type foundry or
manufacturer or designer or license owner. You can use it before `\_faminfo`
to print `\_famfrom` info into the catalog.
The `\_famfrom` data is applied to each following declared families until new
`\_famfrom` is given. Use `\_famfrom {}` if the information is not known.
