\documentclass[12pt]{article}


\usepackage{microtype}
\usepackage{multicol}
\usepackage{supertabular}
\usepackage[table,dvipsnames]{xcolor}
\definecolor{myLightBlue}{RGB}{203,228,249}
\definecolor{BrickRed}{RGB}{146,18,6}
\definecolor{RViolet}{RGB}{70,18,87}
\definecolor{GunMetalGray}{RGB}{42,52,57}
\definecolor{myRed}{rgb}{0.5,0,0}
\newcommand{\bluerow}{\rowcolor{myLightBlue}}

\newcommand{\SizeRecord}[3]{{Size={#1},RawFeature={axis={wght=#2,wdth=#3}}}}
\usepackage[semiexpanded,weightadjustment=35,widthadjustment=-5,
    MainFeatures={StylisticSet=9}
]{junicodevf}
\setfontface\samplefootnote{JunicodeVF}[
    Renderer = HarfBuzz,
    SizeFeatures = {{Size={5-}, RawFeature={axis={wght=490,wdth=115}}}},
]
\setfontface\sampleheader{JunicodeVF}[
    Renderer = HarfBuzz,
    SizeFeatures = {{Size={5-}, RawFeature={axis={wght=350,wdth=90}}}}
]
\usepackage{metalogo}
\usepackage{titlesec}
\titleformat{\section}[hang]{\Large\color{GunMetalGray}}{\thesection.}{1em}{}
\newcommand{\ltech}{Lua\kern-1.5pt\TeX}
\newcommand{\lltech}{Lua\LaTeX}
\setmonofont{Fira Mono}[Scale=MatchLowercase,Numbers=Lowercase]
\setsansfont{Fira Sans}[Scale=MatchLowercase,Numbers=Lowercase]
\usepackage{fancyhdr}
\pagestyle{fancy}
\footskip = 30pt
\headsep = 30pt
\renewcommand{\headrule}{}
\fancyhead[L]{}
\fancyhead[C]{}
\fancyhead[R]{}
\fancyfoot[L]{}
\fancyfoot[C]{}
\fancyfoot[R]{}
\newcommand{\fspec}{{\sffamily fontspec}}
\newcommand{\src}[1]{{\color{BrickRed}\texttt{#1}}}
\newcommand{\option}[1]{{\color{RViolet}\textbf{#1}}}
\linespread{1.1}
\title{Junicode VF}
\author{Peter S. Baker}
\date{\today}
\tolerance=1500

\begin{document}

\maketitle

\section{Introduction}

\pagestyle{fancy}
\fancyhead[CE]{\scshape\color{myRed} {\addfontfeatures{Numbers=OldStyle}\thepage}\hspace{10pt}%
\addfontfeature{Letters=UppercaseSmallCaps}\leftmark}
\fancyhead[CO]{\scshape\color{myRed} {junicode}\hspace{10pt}{\addfontfeatures{Numbers=OldStyle}\thepage}}

This package supports Junicode VF, the variable version of Junicode
(2.204 or higher) for \lltech.

A variable font is one with glyphs that can change not only their size, but also their
shape. These changes in shape are defined in one or more \textbf{axes}---for example,
\textbf{Weight} (Light, Bold, etc.) and \textbf{Width} (Condensed, Expanded). A traditional
“static” font family also has axes, but as every stylistic variant of a static family
requires a separate font file,
the number of available styles is severely constrained. A variable font, by contrast,
offers a practically limitless number of styles in a single file: you choose a style
by making a selection of number values (usually called “coordinates”) from the axes, 
of which Junicode has three:

\begin{description}
    \item[Weight] Possible weights run from Light (300) to ExtraBold (700). By
    convention, Regular is 400.
    \item[Width] Widths run from 75 (Condensed) to 125 (Expanded). Stroke widths remain
    the same as the overall width of the character changes, with the result that
    Condensed type looks darker than Regular or Expanded.
    \item[Enlarge] This axis is for reproducing the enlarged minuscules of medieval
    manuscripts---that is, letters that are lowercase in shape and intermediate between
    upper- and lowercase in size, used to introduce various textual units (see section
    5 below).
\end{description}

\section{Loading Junicode VF}

Load the package in the usual way, with {\color{BrickRed}\verb|\usepackage{junicodevf}|}, to
set Junicode VF as the main font.
By default, the main font is not a set of static outlines whose proportions
remain the same though they can be scaled, but rather a set of
\emph{variable} outlines that become relatively narrower and lighter as the
text size increases. You can see the difference if we scale a line of footnote
text and a line of header text to the same {\color{BrickRed}\verb|\large|} size:\\[0.5ex]

\noindent {\large\samplefootnote Here is some sample text for footnotes (usually about 8pt).}\\[0.2ex]
{\large\sampleheader Here is some sample text for headers (18pt or larger).}\\[0.5ex]

\noindent The letter-shapes are markedly different, but on the page they look
pretty much the same, because the purpose of these changes in
shape, in addition to promoting legibility,
is to allow blocks of text in different sizes (headers, main text,
block quotations, footnotes) to coexist on a page without any of them looking too
dark or too light.\footnote{%
For example, on a typical LaTeX page a footnote like this, looked at as a block
of gray, is usually a little lighter than the main text. But on this page, the
“color” of the footnote matches that of the main text. The variation in glyph
shape responsible for this effect approximates the way letters in metal type were
typically wider and heavier at small sizes.} Evenness of texture makes text in
different point sizes \emph{look} the same.

Junicode VF's package options give you a number of ways to fine-tune the look of
your text:

\begin{description}
    \item[light] The weight of the type for the main text is Light. As with the default
    weight, and all weights selectable by options, “Light” is a range of weights that varies
    with the size of the type.
    \item[medium] The weight of the type for the main text is Medium---that is, darker than
    Regular but lighter than Semibold.
    \item[semibold] The weight of bold type is somewhat lighter than the usual bold. This may be a
    good choice if you have selected the \option{light} option.
    \item[weightadjustment] Adjusts the weight of the type by adding this number.
    For example, if you choose \option{medium} for your document (weight averaging about 500)
    and \option{bold} (weight around 700), and also include the option {\color{BrickRed}\verb|weightadjustment=-25|},
    then the weights of medium and bold text will be lightened by 25 (475, 675).
    \item[condensed] The width of the type is narrow---about 85\% of the width of the Regular style.
    As with the default
    width, and all widths selectable by options, "Condensed" is a range of widths that varies
    with the size of the type.
    \item[semicondensed] The width of the type is wider than condensed but narrower than the default.
    \item[expanded] The width of the type is wide---about 125\% of the width of the Regular style.
    \item[semiexpanded] The width of the type is wider than Regular but narrower than Expanded.
    \item[widthadjustment] Adjusts the width of the type by adding this number. For example, if you
    choose \option{semicondensed} for your document (width averaging 87.5), and you also include
    the option {\color{BrickRed}\verb|widthadjustment=5|}, then the average width will be 92.5, between
    \option{semicondensed} and \option{regular}.
    \item[proportional] Numbers in the document will be proportionally spaced. This is the default.
    \item[tabular] Numbers will be tabular (monospaced).
    \item[oldstyle] Numbers will be old-style, harmonizing with lowercase letters. This is the default.
    \item[lining] Numbers will be lining, harmonizing with uppercase letters.
\end{description}

\section{Customizing the Main Font}

If the options listed in the previous section don’t give you the effect you’re looking for, this package’s 
more advanced options allow you to choose from an effectively infinite number of styles. Do this by passing 
OpenType features for your document’s main text or for one or more of the four main styles (Regular, Italic, 
Bold, Bold Italic), and also by supplying custom values for the font’s four axes.

For example, if you want your document to use the conventions observed by early
English typesetters for the distribution of \option{s} and \option{ſ}, load the
package this way:

\footnotesize
\begin{verbatim}
    \usepackage[MainFeatures={
        Language=English,
        StylisticSet=8
    }]{junicodevf}
\end{verbatim}
\normalsize

\noindent If you want to use these conventions only for italic text, use
\option{MainItalicFeatures} instead of \option{MainFeatures}. All of the
features you pass via these options must be valid for \fspec: in fact,
they are passed straight through to \fspec.

If you want to customize the four basic styles of the main text, use
\option{MainRegularSizeFeatures}, \option{MainItalicSizeFeatures}, and so on.
Each of these defines a list of associative arrays, in which each array in the
list prescribes axis coordinates for a range of sizes.
For example, here are the \textbf{SizeFeatures} for the \textit{Junicode Manual}:

\footnotesize
\begin{verbatim}
    \usepackage[
        MainRegularSizeFeatures={
            {size=8.6,wght=550,wdth=120},
            {size=10.99,wght=475,wdth=115},
            {size=21.59,wght=400,wdth=112.5},
            {size=21.59,wght=351,wdth=100}
        },
        MainItalicSizeFeatures={
            {size=8.6,wght=550,wdth=118},
            {size=10.99,wght=475,wdth=114},
            {size=21.59,wght=450,wdth=111},
            {size=21.59,wght=372,wdth=98}
        },
        MainBoldSizeFeatures={
            {size=8.6,wght=700,wdth=120},
            {size=10.99,wght=700,wdth=115},
            {size=21.59,wght=650,wdth=112.5},
            {size=21.59,wght=600,wdth=100}
        },
        MainBoldItalicSizeFeatures={
            {size=8.6,wght=700,wdth=118},
            {size=10.99,wght=700,wdth=114},
            {size=21.59,wght=650,wdth=111},
            {size=21.59,wght=600,wdth=98}
        }
    ]{junicodevf}
\end{verbatim}
\normalsize

\noindent For each array, a \src{size} key is mandatory: any array without one
is ignored. The arrays should be in order of point size. The first array
prescribes axis coordinates for all sizes up to \src{size}, the last array for all sizes
greater than \src{size}, and any intermediate items a range from the previous to the
current \src{size}.\footnote{%
If you want only one size array, make \src{size} improbably low (e.g. 5) and place
a comma after the closing brace of the array.%
} So the ranges covered in each list above are \src{-8.6}, \src{8.6-10.99},
\src{10.99-21.59},
and \src{21.59-}.\footnote{Any modification of the default text size (e.g. in the
\src{\textbackslash documentclass} command) can affect the size definitions in these
arrays, with the result that (for example)
\src{10} no longer means exactly “ten points.” You may have to experiment to get these numbers
right.}

The keys other than \src{size} are the four-letter tags for the font's axes: \src{wght}
(Weight), \src{wdth} (Width), and \src{ENLA} (Enlarge).\footnote{%
By convention, tags for axes defined in the OpenType standard are lowercase; custom axes
are uppercase. Junicode’s \src{ENLA} is a custom axis.%
} When a key
is omitted, the default value for that axis is used. It is up to the user to make sure the values
given for each axis are valid---the package does no checking (but {\fspec} will do a good bit
of checking for you). When SizeFeatures are given in
this way, they override any other options that set or change axis coordinates
(e.g. \option{weightadjustment}).


\section{Selecting Alternate Styles}

In addition to the document's main font, you can choose from fifty
predefined styles. These match the thirty-eight styles supplied by the
static version of Junicode, plus twelve more. The commands for shifting to these
styles are as follows (of the italic styles, only the base “jItalic” is listed;
append “Italic” to any of the others, except “jRegular”):

\begin{multicols}{3}
    \jCond\textbackslash jRegular

    \textbackslash jItalic
    
    \textbackslash jCond
    
    \textbackslash jSmCond
    
    \textbackslash jSmExp
    
    \textbackslash jExp
    
    \textbackslash jLight
    
    \textbackslash jCondLight
    
    \textbackslash jSmCondLight
    
    \textbackslash jSmExpLight
    
    \textbackslash jExpLight
    
    \textbackslash jMedium
    
    \textbackslash jCondMedium
    
    \textbackslash jSmCondMedium
    
    \textbackslash jSmExpMedium
    
    \textbackslash jExpMedium
    
    \textbackslash jSmbold
    
    \textbackslash jCondSmbold
    
    \textbackslash jSmCondSmbold
    
    \textbackslash jSmExpSmbold
    
    \textbackslash jExpSmbold
    
    \textbackslash jBold
    
    \textbackslash jCondBold
    
    \textbackslash jSmCondBold
    
    \textbackslash jSmExpBold
    
    \textbackslash jExpBold
    
\end{multicols}

\noindent These commands will be self-explanatory if you bear in mind Junicode's 
abbreviations for style names: Cond=Condensed, Exp=Expanded, Sm=Semi.\footnote{%
The purpose of these abbreviations is to keep font names under the character-limit
imposed by some systems.} Use
them to shift temporarily to a style other than that of the main text.
For example, to shift to the Condensed Light style for a short phrase, use
this code:
\begin{center}
{\color{BrickRed}\small\verb|{\jCondLight a short phrase}|}.
\end{center}
The result: {\jCondLight a short phrase}.

To add features to any of these styles, use the style name
(without the prefixed “j” and with \textbf{Features} appended)
as a package option. To change the size features for the style,
do the same, but with \textbf{SizeFeatures} instead of \textbf{Features}
appended:

\footnotesize
\begin{verbatim}
    \usepackage[
        CondLightFeatures={
            Language=English,
            StylisticSet=2
        },
        CondLightSizeFeatures={{size=5,wght=325,wdth=80},}
    ]{junicodevf}
\end{verbatim}
\normalsize

\noindent This will shift text in the Condensed Light style from default to insular
letter-shapes and slightly increase the weight and width of all glyphs in that style.
Here the \textbf{SizeFeatures} section is very simple (as in the package file itself),
but you can have as many size ranges as you want, just as you can for the main font.

\section{The Enlarge Axis}

Junicode's Enlarge axis is for a special purpose: to represent the enlarged
minuscule letters that often begin sentences and other textual units in medieval manuscripts.
Thus it should normally be applied only to single letters, not to runs of text.

This package defines four different styles for the Enlarge axis, in four sizes:\\[0.5ex]

\begin{center}
\begin{supertabular}{ l  l  l }
Not Enlarged & abc & \textit{abc}\\
\textbackslash EnlargedOne & {\EnlargedOne abc} & {\EnlargedOneItalic abc}\\
\textbackslash EnlargedTwo & {\EnlargedTwo abc} & {\EnlargedTwoItalic abc}\\
\textbackslash EnlargedThree & {\EnlargedThree abc} & {\EnlargedThreeItalic abc}\\
\textbackslash EnlargedFour & {\EnlargedFour abc} & {\EnlargedFourItalic abc}\\
\end{supertabular}
\end{center}

\noindent You can produce an italic version of the enlarged minuscule by appending “Italic” to
the style name. You can also customize these styles with \textbf{SizeFeatures}:

\footnotesize
\begin{verbatim}
    \usepackage[
        ENLAThreeSizeFeatures={{size=5,ENLA=85},}
    ]{junicodevf}
\end{verbatim}
\normalsize

\noindent This example will set all axes except for \src{ENLA} to their default coordinates.
You can, of course, define other axes, and, as with Junicode’s other \textbf{SizeFeatures} options,
as many size arrays as you like. \textbf{Features} options are not available for the Enlarged 
styles.

\section{Other Commands}

This package's other commands (listed in Table 1) are offered as conveniences, being shorter and more
mnemonic than the {\fspec} commands they invoke (though of course all {\fspec} commands
remain available). Each of these commands
also has a corresponding “text” command that works like 
{\color{BrickRed}\verb|\textit{}|}—that is, it takes
as its sole argument the text to which the command will be applied. Each “text” command
consists of the main command with “text” prefixed—for example,
{\color{BrickRed}\verb|\textInsularLetterForms{}|}
corresponding to {\color{BrickRed}\verb|\InsularLetterForms|}.  For a fuller account of the OpenType features
applied by these commands, see Chapter 4 of the \textit{Junicode Manual}, “Feature Reference.”

%\begin{center}
\begin{table}[ht]
\centering
\tablehead{\hline}
\tabletail{\hline}
\begin{supertabular}{| l | p{2.75in} |}
\bluerow\textbackslash AltThornEth & Applies ss01, Alternate thorn and eth.\\
\textbackslash InsularLetterForms & Applies ss02, Insular letter-forms.\\
\bluerow\textbackslash IPAAlternates & Applies ss03, IPA alternates.\\
\textbackslash HighOverline & Applies ss04, High Overline.\\
\bluerow\textbackslash MediumHighOverline & Applies ss05, Medium-high Overline.\\
\textbackslash EnlargedMinuscules & Applies ss06, Enlarged minuscules.\\
\bluerow\textbackslash Underdotted & Applies ss07, Underdotted.\\
\textbackslash ContextualLongS & Applies ss08, Contextual long s.\\
\bluerow\textbackslash AlternateFigures & Applies ss09, Alternate Figures.\\
\textbackslash EntitiesAndTags & Applies ss10, Entities and Tags.\\
\bluerow\textbackslash EarlyEnglishFuthorc & Applies ss12, Early English Futhorc.\\
\textbackslash ElderFuthark & Applies ss13, Elder Futhark.\\
\bluerow\textbackslash YoungerFuthark & Applies ss14, Younger Futhark.\\
\textbackslash LongBranchToShortTwig & Applies ss15, Long Branch to Short Twig.\\
\bluerow\textbackslash ContextualRRotunda & Applies ss16, Contextual r rotunda.\\
\textbackslash RareDigraphs & Applies ss17, Rare Digraphs.\\
\bluerow\textbackslash OldStylePunctuation & Applies ss18, Old-style Punctuation.\\
\textbackslash LatinToGothic & Applies ss19, Latin to Gothic.\\
\bluerow\textbackslash LowDiacritics & Applies ss20, Low Diacritics.\\
\textbackslash jcv, \textbackslash textcv & Applies any Character Variant feature (see below).\\
\end{supertabular}
\caption{Stylistic Set and Character Variant Commands}
\end{table}
%\end{center}

\noindent The syntax of \textbackslash jcv
is {\color{BrickRed}\verb|\jcv[num]{num}|}, where the second (required) argument is the number of the Character Variant feature,
and the first (optional) argument is an index into the variants provided by that feature (starting with zero, the default).
\textbackslash textcv takes an additional required argument ({\color{BrickRed}\verb|\textcv[num]{num}{text}|}—the text to which the
feature should be applied.

Character Variant features can also be selected with mnemonics, listed below. For example, a feature for
lowercase \textbf{a} can be expressed as {\color{BrickRed}\verb|\textcv[2]{\jcva}{a}|}, yielding \textbf{\textcv[2]{\jcva}{a}}.

\begin{multicols}{3}
\small\jCond\textbackslash jcvA

\textbackslash jcva

\textbackslash jcvB

\textbackslash jcvb

\textbackslash jcvC

\textbackslash jcvc

\textbackslash jcvD

\textbackslash jcvd

\textbackslash jcvE

\textbackslash jcve

\textbackslash jcvF

\textbackslash jcvf

\textbackslash jcvG

\textbackslash jcvg

\textbackslash jcvH

\textbackslash jcvh

\textbackslash jcvI

\textbackslash jcvi

\textbackslash jcvJ

\textbackslash jcvj

\textbackslash jcvK

\textbackslash jcvk

\textbackslash jcvL

\textbackslash jcvl

\textbackslash jcvM

\textbackslash jcvm

\textbackslash jcvN

\textbackslash jcvn

\textbackslash jcvO

\textbackslash jcvo

\textbackslash jcvP

\textbackslash jcvp

\textbackslash jcvQ

\textbackslash jcvq

\textbackslash jcvR

\textbackslash jcvr

\textbackslash jcvS

\textbackslash jcvs

\textbackslash jcvT

\textbackslash jcvt

\textbackslash jcvU

\textbackslash jcvu

\textbackslash jcvV

\textbackslash jcvv

\textbackslash jcvW

\textbackslash jcvw

\textbackslash jcvX

\textbackslash jcvx

\textbackslash jcvY

\textbackslash jcvy

\textbackslash jcvZ

\textbackslash jcvz

\textbackslash jcvaa

\textbackslash jcvAE

\textbackslash jcvae

\textbackslash jcvAO

\textbackslash jcvao

\textbackslash jcvAogonek

\textbackslash jcvaogonek

\textbackslash jcvASCIItilde

\textbackslash jcvasterisk

\textbackslash jcvav

\textbackslash jcvbrevebelow

\textbackslash jcvcombiningdieresis

\textbackslash jcvcombiningdoublemacron

\textbackslash jcvcombininginsulard

\textbackslash jcvcombiningopena

\textbackslash jcvcombiningoverline

\textbackslash jcvcombiningrrotunda

\textbackslash jcvcombiningzigzag

\textbackslash jcvcomma

\textbackslash jcvcurrency

\textbackslash jcvdbar

\textbackslash jcvdcroat

\textbackslash jcvEng

\textbackslash jcvEogonek

\textbackslash jcvetabbrev

\textbackslash jcvexclam

\textbackslash jcvflorin

\textbackslash jcvGermanpenny

\textbackslash jcvglottal

\textbackslash jcvlb

\textbackslash jcvlhighstroke %somehow escaped the documentation

\textbackslash jcvmacron

\textbackslash jcvmiddot

\textbackslash jcvoPolish

\textbackslash jcvounce

\textbackslash jcvperiod

\textbackslash jcvpunctuselevatus

\textbackslash jcvquestion

\textbackslash jcvrum

\textbackslash jcvsemicolon

\textbackslash jcvslash

\textbackslash jcvspacingusabbrev

\textbackslash jcvspacingzigzag

\textbackslash jcvsterling

\textbackslash jcvthorncrossed

\textbackslash jcvTironianEt

\textbackslash jcvYogh
\end{multicols}

\vspace*{\fill}
\begin{center}
    \itshape This document is set in 12-point Junicode VF with Weight 435 and Width 107.5.\\
    The font for code is Fira Mono,\\
    and the sans serif font is Fira Sans.
\end{center}
\end{document}
