% \iffalse meta-comment
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% adfarrows.dtx
% Additions and changes Copyright (C) 2019-2025 Clea F. Rees.
% Code from skeleton.dtx Copyright (C) 2015-2024 Scott Pakin (see below).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
% of this license or (at your option) any later version.
% The latest version of this license is in
%   https://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions of LaTeX
% version 2008-05-04 or later.
%
% This work has the LPPL maintenance status `maintained'.
%
% The Current Maintainer of this work is Clea F. Rees.
%
% This work consists of all files listed in manifest.txt.
%
% The file adfarrows.dtx is a derived work under the terms of the
% LPPL. It is based on version 2.4 of skeleton.dtx which is part of 
% dtxtut by Scott Pakin. A copy of dtxtut, including the 
% unmodified version of skeleton.dtx is available from
% https://www.ctan.org/pkg/dtxtut and released under the LPPL.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \fi
%
% \iffalse
%<*driver>
\RequirePackage{svn-prov}
% ref. ateb Max Chernoff: https://tex.stackexchange.com/a/723294/
\def\MakePrivateLetters{\makeatletter\ExplSyntaxOn\endlinechar13}
\ProvidesFileSVN{$Id: adfarrows.dtx 10985 2025-03-31 05:35:43Z cfrees $}[v1.4 \revinfo][\filebase DTX: FONT for 8-bit engines]
\DefineFileInfoSVN[adfarrows]
\documentclass[11pt,british]{ltxdoc}
% l3doc loads fancyvrb
% fancyvrb overwrites svn-prov's macros without warning
% restore \fileversion \filerev in case we're using l3doc
\GetFileInfoSVN{adfarrows}
\EnableCrossrefs
\CodelineIndex
\RecordChanges
% \OnlyDescription
\DoNotIndex{\verb,\ProvidesPackageSVN,\NeedsTeXFormat,\ProcessKeyOptions,\revinfo,\filebase,\filename,\filedate,\RequirePackage,\usepackage,\DefineFileInfoSVN,\GetFileInfoSVN,\ProvidesPackageSVN,\documentclass,\MakeAutoQuote,\parindent,\par,\smallskip,\setlength,\bigskip,\maketitle,\title,\author,\date,\ExplSyntaxOn,\ExplSyntaxOff}
\usepackage{babel}
\pdfmapfile{-adfarrows.map}
\pdfmapfile{+adfarrows.map}
\usepackage[tt={monowidth,tabular,lining}]{cfr-lm}
% \usepackage{lmodern}
% \renewcommand{\ttdefault}{lmvtt}
% \let\origrmdefault\rmdefault
% \DeclareRobustCommand{\origrmfamily}{%
%   \fontencoding{T1}%
%   \fontfamily{\origrmdefault}%
%   \selectfont}
% \DeclareTextFontCommand{\textorigrm}{\origrmfamily}
\usepackage[]{adfarrows}
\input{adfsymbols-uni}
\usepackage{fancyhdr}
\usepackage{fixfoot}
\usepackage{array,verbatim,tabularx}
\usepackage{enumitem}
\usepackage[referable]{threeparttablex}
\makeatletter
\def\TPT@measurement{% ateb David Carlisle: https://tex.stackexchange.com/a/370691/
  \ifdim\wd\@tempboxb<\TPTminimum
    \hsize \TPTminimum
  \else
    \hsize\wd\@tempboxb
  \fi
  \xdef\TPT@hsize{\hsize\the\hsize \noexpand\@parboxrestore}\TPT@hsize
  \ifx\TPT@docapt\@undefined\else
    \TPT@docapt \vskip.2\baselineskip
  \fi \par
  \dimen@\dp\@tempboxb % new
  \box\@tempboxb
  \ifvmode \prevdepth\dimen@ \fi% was \z@ not \dimen@
}
\renewlist{tablenotes}{enumerate}{1}
\setlist[tablenotes]{label=\tnote{\alph*},ref=\alph*,itemsep=\z@,topsep=\z@skip,partopsep=\z@skip,parsep=\z@,itemindent=\z@,labelindent=\tabcolsep,labelsep=.2em,leftmargin=*,align=left,before={\unskip\medskip\footnotesize}}
\makeatother
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{xcolor}
\usepackage{xurl}
\urlstyle{tt}
\usepackage{multicol}
\usepackage{longtable}
\usepackage{microtype}
\usepackage[a4paper,headheight=14pt]{geometry}	% use 14pt for 11pt text, 15pt for 12pt text
\usepackage{csquotes}
\MakeAutoQuote{‘}{’}
\MakeAutoQuote*{“}{”}
\usepackage{caption}
\DeclareCaptionFont{lf}{\sffamily\lstyle}
\captionsetup[table]{labelfont=lf}
% sicrhau hyperindex=false: llwytho CYN bookmark
\usepackage{hypdoc}% ateb Ulrike Fischer: https://tex.stackexchange.com/a/695555/
\usepackage{bookmark}
\hypersetup{%
  colorlinks=true,
  citecolor={moss},
  extension=pdf,
  linkcolor={strawberry},
  linktocpage=true,
  pdfcreator={TeX},
  pdfproducer={pdfeTeX},
  urlcolor={blueberry}%
}
\NewDocElement[%
  idxtype=opt.,
  idxgroup=options,
  printtype=\textit{opt.},
]{Opt}{option}
\NewDocElement[%
  idxtype=pkg.,
  idxgroup=packages,
  printtype=\textit{pkg.},
]{Pkg}{package}
\NewDocElement[%
  printtype=\textdagger,
  idxtype=,
  macrolike,
]{DMacro}{dmacro}
\NewDocElement[%
  idxtype=enc.,
  idxgroup=font encodings,
  printtype=\textit{enc.},
]{Fenc}{fntenc}
\NewDocElement[%
  idxtype=fd.,
  idxgroup=font definitions,
  printtype=\textit{fd.},
]{Fdefn}{fntdefn}
\NewDocElement[%
  idxtype=map,
  idxgroup=map file fragments,
  printtype=\textit{map},
]{Fmap}{fmapping}
\NewDocumentCommand \val { m }
{%
  {\ttfamily =\,\meta{#1}}%
}
\ExplSyntaxOn
\NewDocumentCommand \vals { m }
{
  {
    \ttfamily = \, 
    \clist_use:nn { #1 } { \textbar }
  }
} 
\cs_new_eq:NN \pkgname \filebase
\ExplSyntaxOff
\usepackage{cleveref}
\title{\filebase}
\author{Clea F. Rees\thanks{%
    Bug tracker:
  \href{https://codeberg.org/cfr/nfssext/issues}{\url{codeberg.org/cfr/nfssext/issues}}
  \textbar{} Code:
  \href{https://codeberg.org/cfr/nfssext}{\url{codeberg.org/cfr/nfssext}}
  \textbar{} Mirror:
  \href{https://github.com/cfr42/nfssext}{\url{github.com/cfr42/nfssext}}% 
}}
% \date{\fileversion~\filetoday}
\date{\fileversion~\filedate}
\pagestyle{fancy}
\fancyhf{}
% \fancyhf[lh]{\filebase~\fileversion}
% \fancyhf[rh]{\itshape\filetoday}
% \fancyhf[rh]{\filedate}
\fancyhf[ch]{}
\fancyhf[lf]{}
\fancyhf[rf]{}
\fancyhf[ch]{\itshape \filebase\hspace*{1.5em}\adfarrows{37}\hspace*{1.5em}\fileversion}
\fancyhf[cf]{\itshape \adfarrows{18} \thepage~of~\lastpage{} \adfarrows{46}}
\renewcommand{\headrulewidth}{0pt}
\ExplSyntaxOn
\hook_gput_code:nnn {shipout/lastpage} {.}
{
  \property_record:nn {t:lastpage}{abspage,page,pagenum}
}
\cs_new_protected_nopar:Npn \lastpage 
{
  \property_ref:nn {t:lastpage}{page}
}
\ExplSyntaxOff
\definecolor{strawberry}{rgb}{1.000,0.000,0.502}
\definecolor{blueberry}{rgb}{0.000,0.000,1.000}
\definecolor{moss}{rgb}{0.000,0.502,0.251}
\makeatletter 
	\def\@seccntformat#1{\adfarrows{74}\csname the#1\endcsname\quad}
\newcommand{\adfarrowsset}{%
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75}
\newcommand{\adfarrowsshow}{%
	\def\tempa{75}%
	\@for \xx:=\adfarrowsset \do {%
		\ifx\xx\tempa
			\xx: \adfarrows{\xx}%
		\else
			\xx: \adfarrows{\xx}\\%
		\fi}}
\makeatother
\newcommand*{\adf}{ADF}
\newcommand*{\lpack}[1]{\textsf{#1}}
\newcommand*{\fgroup}[1]{\textsf{#1}}
\newcommand*{\fname}[1]{\textsf{#1}}
\newcommand*{\file}[1]{\texttt{#1}}


\begin{document}
  \DocInput{\filename}
\end{document}
%</driver>
% \fi
%
% \title{\pkgname: adfarrows}
% \author{Clea F. Rees\thanks{%
%     Bug tracker:
%   \href{https://codeberg.org/cfr/nfssext/issues}{\url{codeberg.org/cfr/nfssext/issues}}
%   \textbar{} Code:
%   \href{https://codeberg.org/cfr/nfssext}{\url{codeberg.org/cfr/nfssext}}
%   \textbar{} Mirror:
%   \href{https://github.com/cfr42/nfssext}{\url{github.com/cfr42/nfssext}}% 
% }}
% \date{\fileversion~\filedate}
% 
% \maketitle\thispagestyle{empty}
% \setlength{\parindent}{0pt}
% \setlength{\parskip}{0.5em}
%	
%
% \iffalse
%<*sty>
% \fi
%    \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{svn-prov}
\ProvidesPackageSVN[\filebase.sty]{$Id: adfarrows.dtx 10985 2025-03-31 05:35:43Z cfrees $}[v1.4 \revinfo  ArrowsADF]
\DefineFileInfoSVN[adfarrows]
\newif\if@adfarrows@digonnew
%    \end{macrocode}
% Copied verbatim, excepting format and modulo package/module name from Joseph Wright's \file{siunitx.sty} under LPPL
%    \begin{macrocode}
\@ifundefined{ExplLoaderFileDate}{%
  \IfFileExists{expl3.sty}{%
    \RequirePackage{expl3}%
  }{%
    \@adfarrows@digonnewfalse
  }%
}{\@adfarrows@digonnewtrue}
%    \end{macrocode}
% \begin{option}{scale}
% \changes{v1.3}{Add scaling option.}
% \texttt{scale} takes a factor by which to scale the fonts.
% This is empty by default, which is equivalent to \texttt{1}, but more efficient.
%    \begin{macrocode}
\if@adfarrows@digonnew
\ExplSyntaxOn
\keys_define:nn { adfarrows }
{
  scale .tl_set:N = \adfarrows@scale,
  scale .initial:V = \@empty,
}
\else
  \let\adfarrows@scale\@empty
\fi
%    \end{macrocode}
% \end{option}
% Provide \cs{ProcessKeyOptions}, \cs{IfFormatAtLeastTF} on older kernels.
% Joseph Wright: from \file{siunitx.sty} ; \url{https://chat.stackexchange.com/transcript/message/64327823#64327823}
%    \begin{macrocode}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\providecommand \IfFormatAtLeastTF { \@ifl@t@r \fmtversion }
\IfFormatAtLeastTF { 2022-06-01 }
{
  \ProcessKeyOptions [ adfarrows ] 
}{
  \RequirePackage { l3keys2e }
  \ProcessKeysOptions { adfarrows }
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ExplSyntaxOff
%    \end{macrocode}
% \begin{macro}{\adfarrows@style}
% \mbox{}
%    \begin{macrocode}
\DeclareRobustCommand{\adfarrows@style}{%% do NOT break line below!
  \not@math@alphabet\adfarrows@style\relax
  \fontencoding{U}\fontfamily{ArrowsADF}\fontseries{m}\fontshape{n}\selectfont
}
%    \end{macrocode}
% \end{macro}
% \changes{v1.3}{2024-10-03}{Remove cack-handed dependency on \lpack{fp}.}
% \changes{v1.3}{2024-10-03}{%
%   May as well use \lpack{expl3} here.
%   The alternative would be rewriting the code to use \TeX{} counts, but for symbols like these there does not seem to be much reason to avoid the overhead of \lpack{expl3}.
%   (Certainly almost anything would be an improvement over the current implementation, I suppose.)}
%    \begin{macrocode}
\ExplSyntaxOn
%    \end{macrocode}
% \begin{macro}{\l__adfarrows_base_ot_int}
% \mbox{}
%    \begin{macrocode}
\int_new:N \l__adfarrows_base_ot_int
\int_set:Nn \l__adfarrows_base_ot_int {1}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\l__adfarrows_base_p_int}
% \mbox{}
%    \begin{macrocode}
\int_new:N \l__adfarrows_base_p_int
\int_set:Nn \l__adfarrows_base_p_int {2}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\l__adfarrows_base_c_int}
% \mbox{}
%    \begin{macrocode}
\int_new:N \l__adfarrows_base_c_int
\int_set:Nn \l__adfarrows_base_c_int {3}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\l__adfarrows_base_st_int}
% \mbox{}
%    \begin{macrocode}
\int_new:N \l__adfarrows_base_st_int
\int_set:Nn \l__adfarrows_base_st_int {4}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\l__adfarrows_base_th_int}
% \mbox{}
%    \begin{macrocode}
\int_new:N \l__adfarrows_base_th_int
\int_set:Nn \l__adfarrows_base_th_int {5}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\l__adfarrows_base_t_int}
% \mbox{}
%    \begin{macrocode}
\int_new:N \l__adfarrows_base_t_int
\int_set:Nn \l__adfarrows_base_t_int {6}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\l__adfarrows_dir_e_int}
% \mbox{}
%    \begin{macrocode}
\int_new:N \l__adfarrows_dir_e_int
\int_set:Nn \l__adfarrows_dir_e_int {0}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\l__adfarrows_dir_east_int}
% \mbox{}
%    \begin{macrocode}
\int_new:N \l__adfarrows_dir_east_int
\int_set:Nn \l__adfarrows_dir_east_int {0}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\l__adfarrows_dir_se_int}
% \mbox{}
%    \begin{macrocode}
\int_new:N \l__adfarrows_dir_se_int
\int_set:Nn \l__adfarrows_dir_se_int {1}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\l__adfarrows_dir_southeast_int}
% \mbox{}
%    \begin{macrocode}
\int_new:N \l__adfarrows_dir_southeast_int
\int_set:Nn \l__adfarrows_dir_southeast_int {1}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\l__adfarrows_dir_s_int}
% \mbox{}
%    \begin{macrocode}
\int_new:N \l__adfarrows_dir_s_int
\int_set:Nn \l__adfarrows_dir_s_int {2}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\l__adfarrows_dir_south_int}
% \mbox{}
%    \begin{macrocode}
\int_new:N \l__adfarrows_dir_south_int
\int_set:Nn \l__adfarrows_dir_south_int {2}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\l__adfarrows_dir_sw_int}
% \mbox{}
%    \begin{macrocode}
\int_new:N \l__adfarrows_dir_sw_int
\int_set:Nn \l__adfarrows_dir_sw_int {3}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\l__adfarrows_dir_southwest_int}
% \mbox{}
%    \begin{macrocode}
\int_new:N \l__adfarrows_dir_southwest_int
\int_set:Nn \l__adfarrows_dir_southwest_int {3}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\l__adfarrows_dir_w_int}
% \mbox{}
%    \begin{macrocode}
\int_new:N \l__adfarrows_dir_w_int
\int_set:Nn \l__adfarrows_dir_w_int {4}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\l__adfarrows_dir_west_int}
% \mbox{}
% \changes{v1.3}{2024-10-03}{Try to make west arrows point west.}
%    \begin{macrocode}
\def\adfarrows@west{west}%
\int_new:N \l__adfarrows_dir_west_int
\int_set:Nn \l__adfarrows_dir_west_int {4}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\l__adfarrows_dir_nw_int}
% \mbox{}
%    \begin{macrocode}
\int_new:N \l__adfarrows_dir_nw_int
\int_set:Nn \l__adfarrows_dir_nw_int {5}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\l__adfarrows_dir_northwest_int}
% \mbox{}
%    \begin{macrocode}
\int_new:N \l__adfarrows_dir_northwest_int
\int_set:Nn \l__adfarrows_dir_northwest_int {5}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\l__adfarrows_dir_n_int}
% \mbox{}
%    \begin{macrocode}
\int_new:N \l__adfarrows_dir_n_int
\int_set:Nn \l__adfarrows_dir_n_int {6}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\l__adfarrows_dir_north_int}
% \mbox{}
%    \begin{macrocode}
\int_new:N \l__adfarrows_dir_north_int
\int_set:Nn \l__adfarrows_dir_north_int {6}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\l__adfarrows_dir_ne_int}
% \mbox{}
%    \begin{macrocode}
\int_new:N \l__adfarrows_dir_ne_int
\int_set:Nn \l__adfarrows_dir_ne_int {7}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\l__adfarrows_dir_northeast_int}
% \mbox{}
%    \begin{macrocode}
\int_new:N \l__adfarrows_dir_northeast_int
\int_set:Nn \l__adfarrows_dir_northeast_int {7}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\g__adfarrows_base_int}
% \mbox{}
%    \begin{macrocode}
\int_new:N \g__adfarrows_base_int
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\g__adfarrows_add_int}
% \mbox{}
%    \begin{macrocode}
\int_new:N \g__adfarrows_add_int
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\l__adfarrows_base_opentail_int}
% \mbox{}
%    \begin{macrocode}
\int_new:N \l__adfarrows_base_opentail_int
\int_set:Nn \l__adfarrows_base_opentail_int {3}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\l__adfarrows_base_plain_int}
% \mbox{}
%    \begin{macrocode}
\int_new:N \l__adfarrows_base_plain_int
\int_set:Nn \l__adfarrows_base_plain_int {11}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\l__adfarrows_base_comic_int}
% \mbox{}
%    \begin{macrocode}
\int_new:N \l__adfarrows_base_comic_int
\int_set:Nn \l__adfarrows_base_comic_int {19}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\l__adfarrows_base_solidtail_int}
% \mbox{}
%    \begin{macrocode}
\int_new:N \l__adfarrows_base_solidtail_int
\int_set:Nn \l__adfarrows_base_solidtail_int {29}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\l__adfarrows_base_thick_int}
% \mbox{}
%    \begin{macrocode}
\int_new:N \l__adfarrows_base_thick_int
\int_set:Nn \l__adfarrows_base_thick_int {37}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\l__adfarrows_base_tail_int}
% \mbox{}
%    \begin{macrocode}
\int_new:N \l__adfarrows_base_tail_int
\int_set:Nn \l__adfarrows_base_tail_int {45}
%    \end{macrocode}
% \end{macro}
% \changes{v1.3}{2024-10-03}{Was \cs{adfarrows@fam}\marg{}\marg{}\marg{}\marg{}.}
% \begin{macro}{\l__adfarrows_arrow_int}
% \mbox{}
%    \begin{macrocode}
\int_new:N \l__adfarrows_arrow_int
%    \end{macrocode}
% \end{macro}
% \changes{v1.4}{2025-03-31}{Add \texttt{/ToUnicode} values (\lpack{adfarrows}).}
% I don't know why somebody would use these fonts with a Unicode engine, but, just in case, map for that as well as pdf\TeX.
% 
% Lua\TeX{} manual page 49.
%    \begin{macrocode}
\bool_if:nT { \sys_if_engine_luatex_p: }
{ 
  \protected\def\pdfglyphtounicode {\pdfextension glyphtounicode }
}
\bool_if:nT { \sys_if_engine_luatex_p: || \sys_if_engine_pdftex_p: }
{
%    \end{macrocode}
% \begin{macro}{\l__adfarrows_glyphtounicode_seq}
% This seems \dots{} insane?
% 
% It would be more efficient to just set everything directly, but this is easier to set up and only read once.
% First, a sequence to hold glyph names.
%    \begin{macrocode}
  \seq_new:N \l__adfarrows_glyphtounicode_seq
  \seq_set_from_clist:Nn \l__adfarrows_glyphtounicode_seq
  {
%    \end{macrocode}
% outlines
%    \begin{macrocode}
    A, %% A  ⇀ 21C0
    B, %% B  ↼ 21BC
%    \end{macrocode}
% outline shaft/tail with solid tip
%    \begin{macrocode}
    C, %% C  → 2192
    D, %% D  ↘ 2198
    E, %% E  ↓ 2193
    F, %% F  ↙ 2199
    G, %% G  ← 2190
    H, %% H  ↖ 2196
    I, %% I  ↑ 2191
    J, %% J  ↗ 2197
%    \end{macrocode}
% solid in various styles
%    \begin{macrocode}
    K, %% K  → 2192
    L, %% L  ↘ 2198
    M, %% M  ↓ 2193
    N, %% N  ↙ 2199
    O, %% O  ← 2190
    P, %% P  ↖ 2196
    Q, %% Q  ↑ 2191
    R, %% R  ↗ 2197
    S, %% S  → 2192
    T, %% T  ↘ 2198
    U, %% U  ↓ 2193
    V, %% V  ↙ 2199
    W, %% W  ← 2190
    X, %% X  ↖ 2196
    Y, %% Y  ↑ 2191
    Z, %% Z  ↗ 2197
    a, %% a  ⇀ 21C0
    b, %% b  ↼ 21BC
    c, %% c  → 2192
    d, %% d  ↘ 2198
    e, %% e  ↓ 2193
    f, %% f  ↙ 2199
    g, %% g  ← 2190
    h, %% h  ↖ 2196
    i, %% i  ↑ 2191
    j, %% j  ↗ 2197
    k, %% k  → 2192
    l, %% l  ↘ 2198
    m, %% m  ↓ 2193
    n, %% n  ↙ 2199
    o, %% o  ← 2190
    p, %% p  ↖ 2196
    q, %% q  ↑ 2191
    r, %% r  ↗ 2197
    s, %% s  → 2192
    t, %% t  ↘ 2198
    u, %% u  ↓ 2193
    v, %% v  ↙ 2199
    w, %% w  ← 2190
    x, %% x  ↖ 2196
    y, %% y  ↑ 2191
    z, %% z  ↗ 2197
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\l__adfarrows_tounicode_seq}
% A sequence to hold Unicode targets.
% These are not incredibly detailed, but hopefully more useful than PUA. 
%    \begin{macrocode}
  \seq_new:N \l__adfarrows_tounicode_seq
  \seq_set_from_clist:Nn \l__adfarrows_tounicode_seq
  {
%    \end{macrocode}
% outlines
%    \begin{macrocode}
    21C0, %% A  ⇀ 21C0
    21BC, %% B  ↼ 21BC
%    \end{macrocode}
% outline shaft/tail with solid tip
%    \begin{macrocode}
    2192, %% C  → 2192
    2198, %% D  ↘ 2198
    2193, %% E  ↓ 2193
    2199, %% F  ↙ 2199
    2190, %% G  ← 2190
    2196, %% H  ↖ 2196
    2191, %% I  ↑ 2191
    2197, %% J  ↗ 2197
%    \end{macrocode}
% solid in various styles
%    \begin{macrocode}
    2192, %% K  → 2192
    2198, %% L  ↘ 2198
    2193, %% M  ↓ 2193
    2199, %% N  ↙ 2199
    2190, %% O  ← 2190
    2196, %% P  ↖ 2196
    2191, %% Q  ↑ 2191
    2197, %% R  ↗ 2197
    2192, %% S  → 2192
    2198, %% T  ↘ 2198
    2193, %% U  ↓ 2193
    2199, %% V  ↙ 2199
    2190, %% W  ← 2190
    2196, %% X  ↖ 2196
    2191, %% Y  ↑ 2191
    2197, %% Z  ↗ 2197
    21C0, %% a  ⇀ 21C0
    21BC, %% b  ↼ 21BC
    2192, %% c  → 2192
    2198, %% d  ↘ 2198
    2193, %% e  ↓ 2193
    2199, %% f  ↙ 2199
    2190, %% g  ← 2190
    2196, %% h  ↖ 2196
    2191, %% i  ↑ 2191
    2197, %% j  ↗ 2197
    2192, %% k  → 2192
    2198, %% l  ↘ 2198
    2193, %% m  ↓ 2193
    2199, %% n  ↙ 2199
    2190, %% o  ← 2190
    2196, %% p  ↖ 2196
    2191, %% q  ↑ 2191
    2197, %% r  ↗ 2197
    2192, %% s  → 2192
    2198, %% t  ↘ 2198
    2193, %% u  ↓ 2193
    2199, %% v  ↙ 2199
    2190, %% w  ← 2190
    2196, %% x  ↖ 2196
    2191, %% y  ↑ 2191
    2197, %% z  ↗ 2197
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\__adfarrows_tounicode:nn}
% TFM-specific mapping.
%
% pdf\TeX{} manual page 33.
%    \begin{macrocode}
  \cs_new_nopar:Npn \__adfarrows_tounicode:nn #1#2
  {
    \pdfglyphtounicode { tfm:ArrowsADF/#1 } { #2 }
  }
%    \end{macrocode}
% \end{macro}
% Generate the actual mappings.
%    \begin{macrocode}
  \seq_map_pairwise_function:NNN \l__adfarrows_glyphtounicode_seq 
    \l__adfarrows_tounicode_seq \__adfarrows_tounicode:nn
}
%    \end{macrocode}
% \begin{macro}{\__adfarrows_arrow:nn}
% \mbox{}
%    \begin{macrocode}
\cs_new_nopar:Nn \__adfarrows_arrow:nn
{
  \int_if_exist:cTF { l__adfarrows_base_#1_int }
  {
    \int_gset_eq:Nc \g__adfarrows_base_int { l__adfarrows_base_#1_int }
  }{ % some kind of error check needed here
    \int_gset:Nn \g__adfarrows_base_int { #1 }
  }
  \int_if_exist:cTF { l__adfarrows_dir_#2_int }
  {
    \int_gset_eq:Nc \g__adfarrows_add_int { l__adfarrows_dir_#2_int }
  }{
    \PackageError{adfarrows}{#2 ~not~a~valid~direction.~Setting~east~}
    \int_gzero:N \g__adfarrows_add_int
  }
  \int_set:Nn \l__adfarrows_arrow_int { \g__adfarrows_base_int + \g__adfarrows_add_int }
  \int_compare:nNnTF { \l__adfarrows_arrow_int } < { 53 } 
  { %^^A ~ \ifnum ... \the \numexpr ... N \the \numexpr ... \else ... \fi
    \int_compare:nNnTF { \l__adfarrows_arrow_int } > { 0 }
    {
      \expandafter\adfarrows@style\expandafter\char \int_to_arabic:n {
        \l__adfarrows_arrow_int
      }
    }{
      \PackageError{adfarrows}{\textbackslash l__adfarrows_arrow_int~must~be~greater~than~0~but~is~\int_to_arabic:n {\l__adfarrows_arrow_int}}%
    }
  }{
    \PackageError{adfarrows}{\textbackslash l__adfarrows_arrow_int ~ must~be~less~than~than~53~but~is~\int_to_arabic:n {\l__adfarrows_arrow_int}}%
  }
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\__adfarrow_arrow:n}
% \mbox{}
%    \begin{macrocode}
\cs_new_nopar:Nn \__adfarrows_arrow:n
{
  \adfarrows@style\char#1
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\adfarrow}
% \changes{v1.3}{2024-10-03}{Remove \lpack{pifont} dependency.}
% \mbox{}
%    \begin{macrocode}
\NewDocumentCommand \adfarrow { o m }
{
  \group_begin:
  \IfValueTF { #1 }
  {
    \__adfarrows_arrow:nn { #1 } { #2 }
  }{
    \__adfarrows_arrow:n { #2 }
  }
  \group_end:
}
%    \end{macrocode}
% \end{macro}
%    \begin{macrocode}
\ExplSyntaxOff
%    \end{macrocode}
% \begin{macro}{\adfhalfarrowright}
% \mbox{}
%    \begin{macrocode}
\newcommand*{\adfhalfarrowright}{\adfarrow{1}}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\adfhalfarrowleft}
% \mbox{}
%    \begin{macrocode}
\newcommand*{\adfhalfarrowleft}{\adfarrow{2}}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\adfhalfarrowrightsolid}
% \mbox{}
%    \begin{macrocode}
\newcommand*{\adfhalfarrowrightsolid}{\adfarrow{27}}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\adfhalfarrowleftsolid}
% \mbox{}
%    \begin{macrocode}
\newcommand*{\adfhalfarrowleftsolid}{\adfarrow{28}}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\adfarrowe}
% \mbox{}
%    \begin{macrocode}
\gdef\adfarrowe#1{%
	\ifcase	#1		\relax
		\or	\adfarrow{3}%
		\or	\adfarrow{11}%
		\or	\adfarrow{19}%
		\or	\adfarrow{29}%
		\or	\adfarrow{37}%
		\or	\adfarrow{45}%
	\fi}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\adfarrowse}
% \mbox{}
%    \begin{macrocode}
\gdef\adfarrowse#1{%
	\ifcase	#1		\relax
		\or	\adfarrow{4}%
		\or	\adfarrow{12}%
		\or	\adfarrow{20}%
		\or	\adfarrow{30}%
		\or	\adfarrow{38}%
		\or	\adfarrow{46}%
	\fi}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\adfarrows}
% \mbox{}
%    \begin{macrocode}
\gdef\adfarrows#1{%
	\ifcase	#1		\relax
		\or	\adfarrow{5}%
		\or	\adfarrow{13}%
		\or	\adfarrow{21}%
		\or	\adfarrow{31}%
		\or	\adfarrow{39}%
		\or	\adfarrow{47}%
	\fi}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\adfarrowsw}
% \mbox{}
%    \begin{macrocode}
\gdef\adfarrowsw#1{%
	\ifcase	#1		\relax
		\or	\adfarrow{6}%
		\or	\adfarrow{14}%
		\or	\adfarrow{22}%
		\or	\adfarrow{32}%
		\or	\adfarrow{40}%
		\or	\adfarrow{48}%
	\fi}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\adfarroww}
% \mbox{}
%    \begin{macrocode}
\gdef\adfarroww#1{%
	\ifcase	#1		\relax
		\or	\adfarrow{7}%
		\or	\adfarrow{15}%
		\or	\adfarrow{23}%
		\or	\adfarrow{33}%
		\or	\adfarrow{41}%
		\or	\adfarrow{49}%
	\fi}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\adfarrownw}
% \mbox{}
%    \begin{macrocode}
\gdef\adfarrownw#1{%
	\ifcase	#1		\relax
		\or	\adfarrow{8}%
		\or	\adfarrow{16}%
		\or	\adfarrow{24}%
		\or	\adfarrow{34}%
		\or	\adfarrow{42}%
		\or	\adfarrow{50}%
	\fi}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\adfarrown}
% \mbox{}
%    \begin{macrocode}
\gdef\adfarrown#1{%
	\ifcase	#1		\relax
		\or	\adfarrow{9}%
		\or	\adfarrow{17}%
		\or	\adfarrow{25}%
		\or	\adfarrow{35}%
		\or	\adfarrow{43}%
		\or	\adfarrow{51}%
	\fi}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\adfarrowne}
% \mbox{}
%    \begin{macrocode}
\gdef\adfarrowne#1{%
	\ifcase	#1		\relax
		\or	\adfarrow{10}%
		\or	\adfarrow{18}%
		\or	\adfarrow{26}%
		\or	\adfarrow{36}%
		\or	\adfarrow{44}%
		\or	\adfarrow{52}%
	\fi}
%    \end{macrocode}
% \end{macro}
%^^A paid â chynnwys \endinput - docstrip yn chwilio amddo fe yn arbennigol
%^^A & bydd doctrip yn ei ychwanegu fe beth bynnag
%^^A (Martin Scharrer: https://tex.stackexchange.com/a/28997/)
%    \begin{macrocode}
%% end adfarrows.sty
%    \end{macrocode}
% \iffalse
%</sty>
% \fi
% 
%
% \subsection{Font Definitions}\label{subsec:fds-arr}
%
% \iffalse
%<*fd>
% \fi
% \begin{fntdefn}{uarrowsadf.fd}
% Font declarations for ArrowsADF font
%    \begin{macrocode}
\ProvidesFile{uarrowsadf.fd}[v1.3 2024/10/01 font definitions for U/ArrowsADF.]
%    \end{macrocode}
% \changes{v1.3}{2024-10-03}{Support for scaling.}
% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
%    \begin{macrocode}
  \expandafter\ifx\csname adfarrows@scale\endcsname\relax
    \let\adfarrows@@scale\@empty
  \else
    \edef\adfarrows@@scale{s*[\csname adfarrows@scale\endcsname]}%
  \fi
\DeclareFontFamily{U}{ArrowsADF}{}
\DeclareFontShape{U}{ArrowsADF}{m}{n}{
  <-> \adfarrows@@scale ArrowsADF
}{}
\DeclareFontShape{U}{ArrowsADF}{m}{sc}{<->ssub * ArrowsADF/m/n}{}
\DeclareFontShape{U}{ArrowsADF}{m}{it}{<->ssub * ArrowsADF/m/sc}{}
\DeclareFontShape{U}{ArrowsADF}{m}{sl}{<->ssub * ArrowsADF/m/it}{}
\DeclareFontShape{U}{ArrowsADF}{m}{si}{<->ssub * ArrowsADF/m/sl}{}
\DeclareFontShape{U}{ArrowsADF}{m}{scit}{<->ssub * ArrowsADF/m/si}{}
\DeclareFontShape{U}{ArrowsADF}{m}{scsl}{<->ssub * ArrowsADF/m/scit}{}
\DeclareFontShape{U}{ArrowsADF}{b}{n}{<->ssub * ArrowsADF/m/scsl}{}
\DeclareFontShape{U}{ArrowsADF}{b}{sc}{<->ssub * ArrowsADF/b/n}{}
\DeclareFontShape{U}{ArrowsADF}{b}{it}{<->ssub * ArrowsADF/b/sc}{}
\DeclareFontShape{U}{ArrowsADF}{b}{sl}{<->ssub * ArrowsADF/b/it}{}
\DeclareFontShape{U}{ArrowsADF}{b}{si}{<->ssub * ArrowsADF/b/sl}{}
\DeclareFontShape{U}{ArrowsADF}{b}{scit}{<->ssub * ArrowsADF/b/si}{}
\DeclareFontShape{U}{ArrowsADF}{b}{scsl}{<->ssub * ArrowsADF/b/scit}{}
\DeclareFontShape{U}{ArrowsADF}{bx}{n}{<->ssub * ArrowsADF/b/scsl}{}
\DeclareFontShape{U}{ArrowsADF}{bx}{sc}{<->ssub * ArrowsADF/bx/n}{}
\DeclareFontShape{U}{ArrowsADF}{bx}{it}{<->ssub * ArrowsADF/bx/sc}{}
\DeclareFontShape{U}{ArrowsADF}{bx}{sl}{<->ssub * ArrowsADF/bx/it}{}
\DeclareFontShape{U}{ArrowsADF}{bx}{si}{<->ssub * ArrowsADF/bx/sl}{}
\DeclareFontShape{U}{ArrowsADF}{bx}{scit}{<->ssub * ArrowsADF/bx/si}{}
\DeclareFontShape{U}{ArrowsADF}{bx}{scsl}{<->ssub * ArrowsADF/bx/scit}{}
%    \end{macrocode}
% \end{fntdefn}
% \iffalse
%</fd>
% \fi
%
% \iffalse
%<*uni>
% \fi
%^^A ateb wipet: https://tex.stackexchange.com/a/406420/
%    \begin{macrocode}
\DeclareUnicodeCharacter{21C0}{right arrow top half}
\DeclareUnicodeCharacter{21BC}{left arrow top half}
\DeclareUnicodeCharacter{2192}{\textrightarrow}
\DeclareUnicodeCharacter{2198}{$\searrow$}
\DeclareUnicodeCharacter{2193}{\textdownarrow}
\DeclareUnicodeCharacter{2199}{$\swarrow$}
\DeclareUnicodeCharacter{2190}{\textleftarrow}
\DeclareUnicodeCharacter{2196}{$\nwarrow$}
\DeclareUnicodeCharacter{2191}{\textuparrow}
\DeclareUnicodeCharacter{2197}{$\nearrow$}
%    \end{macrocode}
% \iffalse
%</uni>
% \fi
%
%\Finale
%^^A vim: sw=2:et:tw=0:
