%%
%% SPDX-FileCopyrightText: 2026 Andre Anjos (github:anjos)
%%
%% SPDX-License-Identifier: LPPL-1.3c
%%
\documentclass[11pt]{article}

\usepackage[a4paper,margin=3cm]{geometry}
\usepackage{booktabs}
\usepackage{longtable}
\usepackage{hyperref}
\hypersetup{hidelinks}

\usepackage{geist}
\usepackage{geistmono}
\usepackage{geistserif}
\renewcommand{\familydefault}{\sfdefault}

\newcommand{\pkg}[1]{\texttt{#1}}
\newcommand{\opt}[1]{\texttt{#1}}

\title{The \pkg{geist-font} distribution\\[.3em]
       \large LaTeX support for the Geist, Geist Mono and Geist Serif typefaces}
\author{Andre Anjos}
\date{Version 1.9.2 -- 2026/11/08}

\begin{document}
\maketitle

\section{Introduction}

Geist is the sans-serif, monospaced and serif typeface family designed by
Vercel and released under the SIL Open Font License. The \pkg{geist-font} CTAN
distribution makes it available to LaTeX through three packages: \pkg{geist}
and \pkg{geistmono}, in all nine weights with matching italics, and
\pkg{geistserif}, a display serif in four variants.

The packages work with pdf\LaTeX, Xe\LaTeX{} and Lua\LaTeX. Under Xe\LaTeX{}
and Lua\LaTeX{} the fonts are used directly through \pkg{fontspec}. Under
pdf\LaTeX{} the packages use metrics generated with \pkg{autoinst}: Geist and
Geist Mono come as Type1 fonts, because pdf\TeX{} cannot subset CFF-flavoured
OpenType, while Geist Serif's TrueType fonts are embedded as they are. Both
paths declare the same font series names, so a document renders the same way
whichever engine builds it.

\section{Usage}

\begin{verbatim}
\usepackage{geist}      % Geist as the sans-serif family
\usepackage{geistmono}  % Geist Mono as the typewriter family
\usepackage{geistserif} % Geist Serif as the roman family
\end{verbatim}

\noindent To use Geist as the document's main font, either pass the
\opt{mainfont} option or redefine \verb|\familydefault| yourself:

\begin{verbatim}
\usepackage[mainfont]{geist}
\end{verbatim}

\subsection{Options}

\begin{tabular}{@{}ll@{}}
\toprule
Option & Effect \\
\midrule
\opt{mainfont}          & make this family the document default \\
\opt{scale=}\textit{n}  & scale the font by a factor \textit{n} \\
\opt{scale=MatchLowercase} & scale to match the current font's x-height \\
\opt{lining}, \opt{tabular}, \opt{proportional} & figure style (pdf\LaTeX{} only) \\
\opt{bold}, \opt{semibold}, \opt{extrabold}, \opt{black} & face used for \verb|\bfseries| (pdf\LaTeX{} only) \\
\opt{regular}, \opt{medium} & face used for \verb|\mdseries| (pdf\LaTeX{} only) \\
\opt{variant=}\textit{v} & Geist Serif variant (\pkg{geistserif} only) \\
\bottomrule
\end{tabular}

\medskip\noindent
The options marked pdf\LaTeX{} only are accepted and ignored under Xe\LaTeX{}
and Lua\LaTeX, so the same \verb|\usepackage| line works everywhere. Under
those engines, select a weight directly with \verb|\fontseries| instead.

\section{Weights}

Geist ships more weights than NFSS's series axis traditionally exposes. Each is
reachable by a long name, and most also by the conventional short NFSS code:

\begin{longtable}{@{}lll@{}}
\toprule
Face & \verb|\fontseries| & Sample \\
\midrule
\endhead
Thin        & \texttt{thin} / \texttt{ul}    & {\fontseries{ul}\selectfont Hamburgefonstiv} \\
ExtraLight  & \texttt{extralight} / \texttt{el} & {\fontseries{el}\selectfont Hamburgefonstiv} \\
Light       & \texttt{light} / \texttt{l}    & {\fontseries{l}\selectfont Hamburgefonstiv} \\
Regular     & \texttt{regular} / \texttt{m}  & {\fontseries{m}\selectfont Hamburgefonstiv} \\
Medium      & \texttt{medium}                & {\fontseries{medium}\selectfont Hamburgefonstiv} \\
SemiBold    & \texttt{semibold} / \texttt{sb}& {\fontseries{sb}\selectfont Hamburgefonstiv} \\
Bold        & \texttt{bold} / \texttt{b}     & {\fontseries{b}\selectfont Hamburgefonstiv} \\
ExtraBold   & \texttt{extrabold} / \texttt{eb} & {\fontseries{eb}\selectfont Hamburgefonstiv} \\
Black       & \texttt{black} / \texttt{ub}   & {\fontseries{ub}\selectfont Hamburgefonstiv} \\
\bottomrule
\end{longtable}

\noindent Medium has no short code: NFSS reserves none for that weight.

\subsection{Italics}

Every weight has a true italic, not a slanted approximation:

\begin{longtable}{@{}ll@{}}
\toprule
\verb|\fontseries| & Sample \\
\midrule
\endhead
\texttt{thin}       & {\fontseries{ul}\itshape\selectfont Hamburgefonstiv} \\
\texttt{light}      & {\fontseries{l}\itshape\selectfont Hamburgefonstiv} \\
\texttt{regular}    & {\fontseries{m}\itshape\selectfont Hamburgefonstiv} \\
\texttt{medium}     & {\fontseries{medium}\itshape\selectfont Hamburgefonstiv} \\
\texttt{semibold}   & {\fontseries{sb}\itshape\selectfont Hamburgefonstiv} \\
\texttt{bold}       & {\fontseries{b}\itshape\selectfont Hamburgefonstiv} \\
\texttt{extrabold}  & {\fontseries{eb}\itshape\selectfont Hamburgefonstiv} \\
\texttt{black}      & {\fontseries{ub}\itshape\selectfont Hamburgefonstiv} \\
\bottomrule
\end{longtable}

\section{Geist Mono}

\pkg{geistmono} sets Geist Mono as \verb|\ttdefault| and takes the same
options and series names:

\begin{longtable}{@{}ll@{}}
\toprule
\verb|\fontseries| & Sample \\
\midrule
\endhead
\texttt{light}    & {\ttfamily\fontseries{l}\selectfont 0O1lI \{\}[]()\#\&@\$} \\
\texttt{regular}  & {\ttfamily\fontseries{m}\selectfont 0O1lI \{\}[]()\#\&@\$} \\
\texttt{medium}   & {\ttfamily\fontseries{medium}\selectfont 0O1lI \{\}[]()\#\&@\$} \\
\texttt{bold}     & {\ttfamily\fontseries{b}\selectfont 0O1lI \{\}[]()\#\&@\$} \\
\texttt{black}    & {\ttfamily\fontseries{ub}\selectfont 0O1lI \{\}[]()\#\&@\$} \\
\bottomrule
\end{longtable}

\section{Geist Serif}

\pkg{geistserif} sets Geist Serif as \verb|\rmdefault|. It is a high-contrast
display serif, best at larger sizes. It comes in four variants that differ only
in the shape of their dots. \opt{variant=} picks the one the package uses, and
\verb|\geistserifvariant{|\textit{v}\verb|}| switches to another locally:

\begin{longtable}{@{}ll@{}}
\toprule
\textit{v} & Sample \\
\midrule
\endhead
\texttt{regular}  & {\fontsize{28}{34}\geistserifvariant{regular}\selectfont jiffy! quiz? i.j:} \\
\texttt{square}   & {\fontsize{28}{34}\geistserifvariant{square}\selectfont jiffy! quiz? i.j:} \\
\texttt{triangle} & {\fontsize{28}{34}\geistserifvariant{triangle}\selectfont jiffy! quiz? i.j:} \\
\texttt{heart}    & {\fontsize{28}{34}\geistserifvariant{heart}\selectfont jiffy! quiz? i.j:} \\
\bottomrule
\end{longtable}

\noindent Each variant has a single regular weight and no italic.
\verb|\textbf| and \verb|\textit| fall back to the upright regular face, with
LaTeX's usual font-substitution warning, rather than a faked bold or slant.

\section{Specimen}

{\fontsize{9}{12}\selectfont
The quick brown fox jumps over the lazy dog. \textbf{The quick brown fox jumps
over the lazy dog.} \textit{The quick brown fox jumps over the lazy dog.}
0123456789 --- \guillemotleft cr\oe ur\guillemotright{} \ss{} \ae{} \o{}
\AA{} \c{c} \'e \`a \^o \"u \~n.
\par}

\medskip

{\fontsize{9}{12}\ttfamily\selectfont
The quick brown fox jumps over the lazy dog.\\
\{ \} [ ] ( ) < > / \textbackslash{} | \& \# @ \$ \% * + - = \_ \textasciitilde
\par}

\medskip

{\fontsize{14}{18}\rmfamily\selectfont
The quick brown fox jumps over the lazy dog. 0123456789 \ae{} \oe{} \ss{}
\par}

\section{Fonts included}

\begin{tabular}{@{}lll@{}}
\toprule
Family & Upstream version & Faces \\
\midrule
Geist       & 1.900 & 9 weights + italics (18) \\
Geist Mono  & 1.900 & 9 weights + italics (18) \\
Geist Serif & 1.003 & 4 variants, regular weight only (4) \\
\bottomrule
\end{tabular}

\medskip\noindent
Taken from the \texttt{vercel/geist-font} release v1.9.2, which is also the
version of this distribution; a change to the LaTeX support alone adds a fourth
component, as in 1.9.2.1. Geist covers no lowercase Greek: since v1.8.1 it no
longer maps $\omega$ to the capital Omega glyph. Geist Pixel, a set of five decorative
display faces in the same release, is not packaged: it has no weight or shape
axis to map onto NFSS.

\section{License}

The fonts, and everything derived from them --- the Type1 fonts, metrics and
encodings generated during packaging --- are licensed under the SIL Open Font
License, version 1.1; see \texttt{OFL.txt}. Geist declares no Reserved Font
Name. The LaTeX support files and this documentation are licensed under the
LaTeX Project Public License, version 1.3c or later.

\end{document}
