summaryrefslogtreecommitdiff
path: root/support/albatross
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-12-08 03:00:51 +0000
committerNorbert Preining <norbert@preining.info>2020-12-08 03:00:51 +0000
commit2d234d1cf6b222448569c5e7596c7f835fd54bd2 (patch)
tree7892534e79378bddb52c9dc8cf085c9bc2e4079d /support/albatross
parent3fd16c4afc6febb1c1ecfbf6a6e3c15b01bf59e2 (diff)
CTAN sync 202012080300
Diffstat (limited to 'support/albatross')
-rw-r--r--support/albatross/README.md318
-rw-r--r--support/albatross/doc/albatross-manual.pdfbin0 -> 76990 bytes
-rw-r--r--support/albatross/doc/albatross-manual.tex463
-rw-r--r--support/albatross/doc/version.tex1
-rw-r--r--support/albatross/scripts/albatross.sh17
5 files changed, 799 insertions, 0 deletions
diff --git a/support/albatross/README.md b/support/albatross/README.md
new file mode 100644
index 0000000000..9f411eb1d8
--- /dev/null
+++ b/support/albatross/README.md
@@ -0,0 +1,318 @@
+# Albatross
+
+![Language: Kotlin](https://img.shields.io/badge/Language-Kotlin-blue.svg?style=flat-square)
+![Minimum JRE: 8.0](https://img.shields.io/badge/Minimum_JRE-8.0-blue.svg?style=flat-square)
+![Current version](https://img.shields.io/badge/dynamic/json.svg?color=blue&label=Latest%20release&query=%24.0.name&url=https%3A%2F%2Fgitlab.com%2Fapi%2Fv4%2Fprojects%2F22437260%2Frepository%2Ftags&style=flat-square)
+
+Albatross is a command line tool for finding fonts that contain a given
+(Unicode) glyph. It relies on [Fontconfig](https://www.fontconfig.org),
+a library for configuring and customizing font access.
+
+## Basic use
+
+The tool is a typical command line application, so we need to invoke it by
+typing `albatross` in the terminal:
+
+```bash
+$ albatross
+ __ __ __
+.---.-.| | |--.---.-.| |_.----.-----.-----.-----.
+| _ || | _ | _ || _| _| _ |__ --|__ --|
+|___._||__|_____|___._||____|__| |_____|_____|_____|
+
+Usage: albatross [OPTIONS] glyphs...
+
+Options:
+ -s, --show-styles Show available font styles
+ -d, --detailed Show a detailed font list
+ -a, --ansi-level [n|a16|a256|tc]
+ Set the default ANSI level
+ -b, --border-style [1|2|3|4|5|6]
+ Set the border style
+ -V, --version Show the version and exit
+ -h, --help Show this message and exit
+```
+
+Provided that Albatross is properly available in the underlying operating
+system, we will get the help message listing all the available options and
+the tool usage.
+
+### Glyphs
+
+Albatross takes a list of glyphs as input. Two formats are supported:
+
+- The glyph itself, e.g, `ß` ([Eszett](https://en.wikipedia.org/wiki/%C3%9F)).
+ Internally, the tool will convert it to the corresponding Unicode code point.
+
+- The glyph as a Unicode code point in the hexadecimal notation, e.g, `0xDF`.
+ The `0x` prefix is mandatory. Note that the tool takes the value as case
+ insensitive, e.g, `0xDF` is equal to `0xdf` (or any case combination thereof).
+
+### Output
+
+Albatross prints the results as a table. The default behaviour is to just
+display the font names, e.g,
+
+```bash
+ Unicode code point DF mapping to ß
+┌─────────────────────────────────────────────────────────────────────────────┐
+│ Font name │
+├─────────────────────────────────────────────────────────────────────────────┤
+│ 3270Medium Nerd Font │
+├─────────────────────────────────────────────────────────────────────────────┤
+│ 3270Medium Nerd Font Mono │
+├─────────────────────────────────────────────────────────────────────────────┤
+...
+├─────────────────────────────────────────────────────────────────────────────┤
+│ Zilla Slab,Zilla Slab Medium │
+├─────────────────────────────────────────────────────────────────────────────┤
+│ Zilla Slab,Zilla Slab SemiBold │
+└─────────────────────────────────────────────────────────────────────────────┘
+```
+
+There is a `-s` option (or `--show-styles` for the long option) that includes
+the styles available for each font, e.g,
+
+```bash
+ Unicode code point DF mapping to ß
+┌───────────────────────────────┬─────────────────────────────────────────────┐
+│ Font name │ Available styles │
+├───────────────────────────────┼─────────────────────────────────────────────┤
+│ 3270Medium Nerd Font │ Medium │
+├───────────────────────────────┼─────────────────────────────────────────────┤
+│ 3270Medium Nerd Font Mono │ Medium │
+├───────────────────────────────┼─────────────────────────────────────────────┤
+...
+├───────────────────────────────┼─────────────────────────────────────────────┤
+│ Zilla Slab,Zilla Slab Medium │ Medium Italic, Italic, Medium, Regular │
+├───────────────────────────────┼─────────────────────────────────────────────┤
+│ Zilla Slab,Zilla Slab │ SemiBold, Regular, SemiBold Italic, Italic │
+│ SemiBold │ │
+└───────────────────────────────┴─────────────────────────────────────────────┘
+```
+
+For even more details, including the font type and paths, there is the `-d`
+option (or `--detailed` for the long option), e.g,
+
+```bash
+ Unicode code point DF, font details, mapping to ß
+┌──────────┬──────────────────────────────────────────────────────────────────┐
+│ Name │ 3270Medium Nerd Font │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Type │ OpenType Font │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Files │ /home/paulo/.local/share/fonts/NerdFonts/3270-Medium Nerd Font │
+│ │ Complete.otf │
+└──────────┴──────────────────────────────────────────────────────────────────┘
+ Unicode code point DF, font details, mapping to ß
+┌──────────┬──────────────────────────────────────────────────────────────────┐
+│ Name │ 3270Medium Nerd Font Mono │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Type │ OpenType Font │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Files │ /home/paulo/.local/share/fonts/NerdFonts/3270-Medium Nerd Font │
+│ │ Complete Mono.otf │
+└──────────┴──────────────────────────────────────────────────────────────────┘
+...
+ Unicode code point DF, font details, mapping to ß
+┌──────────┬──────────────────────────────────────────────────────────────────┐
+│ Name │ Zilla Slab,Zilla Slab Medium │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Type │ OpenType Font │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Files │ /usr/share/fonts/mozilla-zilla-slab/ZillaSlab-MediumItalic.otf │
+│ │ ──────────────────────────────────────────────────────────────── │
+│ │ /usr/share/fonts/mozilla-zilla-slab/ZillaSlab-Medium.otf │
+└──────────┴──────────────────────────────────────────────────────────────────┘
+ Unicode code point DF, font details, mapping to ß
+┌──────────┬──────────────────────────────────────────────────────────────────┐
+│ Name │ Zilla Slab,Zilla Slab SemiBold │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Type │ OpenType Font │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Files │ /usr/share/fonts/mozilla-zilla-slab/ZillaSlab-SemiBold.otf │
+│ │ ──────────────────────────────────────────────────────────────── │
+│ │ /usr/share/fonts/mozilla-zilla-slab/ZillaSlab-SemiBoldItalic.… │
+└──────────┴──────────────────────────────────────────────────────────────────┘
+```
+
+For more verbosity, `--detailed` can be combined with `--show-styles` to
+include all font details, e.g,
+
+```bash
+ Unicode code point DF, font details, mapping to ß
+┌──────────┬──────────────────────────────────────────────────────────────────┐
+│ Name │ 3270Medium Nerd Font │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Type │ OpenType Font │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Files │ /home/paulo/.local/share/fonts/NerdFonts/3270-Medium Nerd Font │
+│ │ Complete.otf │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Styles │ Medium │
+└──────────┴──────────────────────────────────────────────────────────────────┘
+ Unicode code point DF, font details, mapping to ß
+┌──────────┬──────────────────────────────────────────────────────────────────┐
+│ Name │ 3270Medium Nerd Font Mono │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Type │ OpenType Font │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Files │ /home/paulo/.local/share/fonts/NerdFonts/3270-Medium Nerd Font │
+│ │ Complete Mono.otf │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Styles │ Medium │
+└──────────┴──────────────────────────────────────────────────────────────────┘
+...
+ Unicode code point DF, font details, mapping to ß
+┌──────────┬──────────────────────────────────────────────────────────────────┐
+│ Name │ Zilla Slab,Zilla Slab Medium │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Type │ OpenType Font │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Files │ /usr/share/fonts/mozilla-zilla-slab/ZillaSlab-MediumItalic.otf │
+│ │ ──────────────────────────────────────────────────────────────── │
+│ │ /usr/share/fonts/mozilla-zilla-slab/ZillaSlab-Medium.otf │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Styles │ Medium Italic, Italic, Medium, Regular │
+└──────────┴──────────────────────────────────────────────────────────────────┘
+ Unicode code point DF, font details, mapping to ß
+┌──────────┬──────────────────────────────────────────────────────────────────┐
+│ Name │ Zilla Slab,Zilla Slab SemiBold │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Type │ OpenType Font │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Files │ /usr/share/fonts/mozilla-zilla-slab/ZillaSlab-SemiBold.otf │
+│ │ ──────────────────────────────────────────────────────────────── │
+│ │ /usr/share/fonts/mozilla-zilla-slab/ZillaSlab-SemiBoldItalic.… │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Styles │ SemiBold, Regular, SemiBold Italic, Italic │
+└──────────┴──────────────────────────────────────────────────────────────────┘
+```
+
+Since the results can span several rows (the more common the glyph, the more
+fonts will contain it), we strongly recommend using a pipeline and pass the
+results to a terminal pager, e.g, the `less` utility:
+
+```
+$ albatross ß | less
+```
+
+### Coloured output
+
+Albatross supports terminal colours by including the `-a` option (or
+`--ansi-level` for the long option) followed by the corresponding colour
+level. The following levels are available:
+
+| Level | Description |
+|--------|-----------------------------|
+| `n` | No colours at all (default) |
+| `a16` | ANSI 16 colours |
+| `a256` | ANSI 256 colours |
+| `tc` | Support for true colours |
+
+Note that colours might mess the output when passed to a terminal pager. You
+might need to either adjust the terminal pager accordingly (e.g, `less -r`
+makes control characters to be displayed) or disable colours altogether
+(which is the default behaviour).
+
+### Table styles
+
+Albatross provides 6 table styles. Include the `-b` option (or `--border-style`
+for the long option) followed by the corresponding border style. The following
+styles are available:
+
+- Style 1:
+
+ ```
+ +-------------------------------+-----------------------------------------+
+ | Font name | Available styles |
+ +-------------------------------+-----------------------------------------+
+ | 3270Medium Nerd Font | Medium |
+ +-------------------------------+-----------------------------------------+
+ ...
+ ```
+
+
+- Style 2:
+
+ ```
+ ╭─────────────────────────────────────────────────────────────────────────╮
+ │ Font name │
+ ├─────────────────────────────────────────────────────────────────────────┤
+ │ 3270Medium Nerd Font │
+ ├─────────────────────────────────────────────────────────────────────────┤
+ ...
+ ```
+
+- Style 3:
+
+ ```
+
+ Font name Available styles
+
+ 3270Medium Nerd Font Medium
+
+ ...
+ ```
+
+- Style 4:
+
+ ```
+ ╔═══════════════════════════════╦═════════════════════════════════════════╗
+ ║ Font name ║ Available styles ║
+ ╠═══════════════════════════════╬═════════════════════════════════════════╣
+ ║ 3270Medium Nerd Font ║ Medium ║
+ ╠═══════════════════════════════╬═════════════════════════════════════════╣
+ ...
+ ```
+
+
+- Style 5:
+
+ ```
+ ┌───────────────────────────────┬─────────────────────────────────────────┐
+ │ Font name │ Available styles │
+ ├───────────────────────────────┼─────────────────────────────────────────┤
+ │ 3270Medium Nerd Font │ Medium │
+ ├───────────────────────────────┼─────────────────────────────────────────┤
+ ...
+ ```
+
+
+- Style 6:
+
+ ```
+ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+ ┃ Font name ┃ Available styles ┃
+ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
+ ┃ 3270Medium Nerd Font ┃ Medium ┃
+ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
+ ...
+ ```
+
+These are the keys to be used as option values:
+
+| Key | Description |
+|-----|-----------------------------------|
+| `1` | Style 1 (ASCII) |
+| `2` | Style 2 (rounded corners) |
+| `3` | Style 3 (blank) |
+| `4` | Style 4 (double lines) |
+| `5` | Style 5 (square corners, default) |
+| `6` | Style 6 (heavy lines) |
+
+## License
+
+This application is licensed under the
+[New BSD License](https://opensource.org/licenses/BSD-3-Clause). Please note
+that the New BSD License has been verified as a GPL-compatible free software
+license by the [Free Software Foundation](http://www.fsf.org/), and has been
+vetted as an open source license by the
+[Open Source Initiative](http://www.opensource.org/).
+
+## The team
+
+Albatross is brought to you by the Island of TeX. If you want to support TeX
+development by a donation, the best way to do this is donating to the
+[TeX Users Group](https://www.tug.org/donate.html).
+
diff --git a/support/albatross/doc/albatross-manual.pdf b/support/albatross/doc/albatross-manual.pdf
new file mode 100644
index 0000000000..e03ff5d2f6
--- /dev/null
+++ b/support/albatross/doc/albatross-manual.pdf
Binary files differ
diff --git a/support/albatross/doc/albatross-manual.tex b/support/albatross/doc/albatross-manual.tex
new file mode 100644
index 0000000000..6c23400735
--- /dev/null
+++ b/support/albatross/doc/albatross-manual.tex
@@ -0,0 +1,463 @@
+% arara: lualatex
+% arara: lualatex
+% arara: clean: { extensions: [ aux, log, gz ] }
+\documentclass[12pt,article,a4paper,oneside]{memoir}
+
+\usepackage{fontspec}
+\setmainfont{DejaVu Serif}
+\setmonofont{DejaVu Sans Mono}
+
+\setlrmarginsandblock{2.5cm}{2.5cm}{*}
+\setulmarginsandblock{2.5cm}{*}{1}
+\checkandfixthelayout
+
+\usepackage[english]{babel}
+\usepackage{enumitem}
+\usepackage{etoolbox}
+\usepackage{fancyvrb}
+\usepackage{booktabs}
+
+\newcommand{\albatross}{Albatross}
+\newcommand{\command}[1]{{\ttfamily#1}}
+\newcommand{\glyph}[1]{{\ttfamily#1}}
+\newcommand{\hex}[1]{{\ttfamily0x#1}}
+\newcommand{\val}[1]{{\ttfamily#1}}
+\newcommand{\shortopt}[1]{{\ttfamily-#1}}
+\newcommand{\longopt}[1]{{\ttfamily{-}{-}#1}}
+
+\newcommand{\albatrossversion}{%
+ \InputIfFileExists{version.tex}{}{undefined}}
+
+\renewcommand\maketitlehooka{{\centering
+\em What flavour is it?\par}}
+
+\title{A gentle introduction to \albatross}
+\author{Island of \TeX}
+\date{Version \albatrossversion\ -- \today}
+
+\begin{document}
+
+\maketitle
+
+\chapter{Introduction}
+\label{chap:introduction}
+
+\epigraph{Albatross! Albatross! Albatross!}{\textsc{Monty Python}}
+
+\albatross\ is a command line tool for finding fonts that contain a given
+Unicode glyph. It relies on Fontconfig, a library for configuring and
+customizing font access. The tool is written in Kotlin and requires a Java
+virtual machine to run.
+
+\chapter{Requirements}
+\label{chap:requirements}
+
+\epigraph{Two choc-ices please.}{\textsc{Monty Python}}
+
+\albatross\ has two hard requirements: a Java virtual machine (at least version
+8.0, from any vendor) and the \command{fc-list} tool provided by the Fontconfig
+library, available in the system path. Linux and MacOS are known to have this
+library. For Windows, note that the \TeX~Live distribution contains Fontconfig
+tools. It is also highly recommended to use a terminal with Unicode support, as
+\albatross\ will try to render the given glyphs.
+
+\newpage
+
+\chapter{Basic use}
+\label{chap:basicuse}
+
+\epigraph{I haven't got choc-ices. I only got the albatross.
+Albatross!}{\textsc{Monty Python}}
+
+The tool is a typical command line application, so we need to invoke it by
+typing \command{albatross} in the terminal:
+
+\bigskip
+
+\begin{Verbatim}[frame=single, fontsize=\small, framesep=5mm]
+ __ __ __
+.---.-.| | |--.---.-.| |_.----.-----.-----.-----.
+| _ || | _ | _ || _| _| _ |__ --|__ --|
+|___._||__|_____|___._||____|__| |_____|_____|_____|
+
+Usage: albatross [OPTIONS] glyphs...
+
+Options:
+ -s, --show-styles Show available font styles
+ -d, --detailed Show a detailed font list
+ -a, --ansi-level [n|a16|a256|tc]
+ Set the default ANSI level
+ -b, --border-style [1|2|2|3|4|5]
+ Set the border style
+ -V, --version Show the version and exit
+ -h, --help Show this message and exit
+\end{Verbatim}
+
+\bigskip
+
+Provided that \albatross\ is properly available in the underlying operating
+system, we will get the help message listing all the available options and the
+tool usage.
+
+\section{Glyphs}
+\label{sec:glyphs}
+
+\epigraph{What flavour is it?}{\textsc{Monty Python}}
+
+\albatross\ takes a list of glyphs, separated by spaces, as input. Two formats
+are supported by the command line tool:
+
+\begin{itemize}[label={--}]
+\item The glyph itself, e.g, \glyph{ß} (Eszett). Internally, the tool will
+convert it to the corresponding Unicode code point.
+
+\begin{Verbatim}[frame=single, fontsize=\small, framesep=3.5mm]
+$ albatross ß
+\end{Verbatim}
+
+\item The glyph as a Unicode code point in the hexadecimal notation, e.g,
+\hex{DF}. The \hex{} prefix is mandatory.
+
+\begin{Verbatim}[frame=single, fontsize=\small, framesep=3.5mm]
+$ albatross 0xDF
+\end{Verbatim}
+
+Note that the tool takes the value as case insensitive, e.g, \hex{DF} is equal
+to \hex{df} (or any case combination thereof).
+\end{itemize}
+
+Formats can be used interchangeably.
+
+\section{Output}
+\label{sec:output}
+
+\epigraph{It's a bird, innit? It's a bloody sea bird\ldots\ it's not any bloody
+flavour. Albatross!}{\textsc{Monty Python}}
+
+\albatross\ prints the results as a table. The default behaviour is to just
+display the font names, e.g,
+
+\bigskip
+
+\begin{Verbatim}[fontsize=\scriptsize]
+ Unicode code point DF mapping to ß
+┌─────────────────────────────────────────────────────────────────────────────┐
+│ Font name │
+├─────────────────────────────────────────────────────────────────────────────┤
+│ 3270Medium Nerd Font │
+├─────────────────────────────────────────────────────────────────────────────┤
+│ 3270Medium Nerd Font Mono │
+├─────────────────────────────────────────────────────────────────────────────┤
+...
+├─────────────────────────────────────────────────────────────────────────────┤
+│ Zilla Slab,Zilla Slab Medium │
+├─────────────────────────────────────────────────────────────────────────────┤
+│ Zilla Slab,Zilla Slab SemiBold │
+└─────────────────────────────────────────────────────────────────────────────┘
+\end{Verbatim}
+
+\bigskip
+
+There is a \shortopt{s} option (or \longopt{show-styles} for the long option)
+that includes the styles available for each font, e.g,
+
+\bigskip
+
+\begin{Verbatim}[fontsize=\scriptsize]
+ Unicode code point DF mapping to ß
+┌───────────────────────────────┬─────────────────────────────────────────────┐
+│ Font name │ Available styles │
+├───────────────────────────────┼─────────────────────────────────────────────┤
+│ 3270Medium Nerd Font │ Medium │
+├───────────────────────────────┼─────────────────────────────────────────────┤
+│ 3270Medium Nerd Font Mono │ Medium │
+├───────────────────────────────┼─────────────────────────────────────────────┤
+...
+├───────────────────────────────┼─────────────────────────────────────────────┤
+│ Zilla Slab,Zilla Slab Medium │ Medium Italic, Italic, Medium, Regular │
+├───────────────────────────────┼─────────────────────────────────────────────┤
+│ Zilla Slab,Zilla Slab │ SemiBold, Regular, SemiBold Italic, Italic │
+│ SemiBold │ │
+└───────────────────────────────┴─────────────────────────────────────────────┘
+\end{Verbatim}
+
+\bigskip
+
+For even more details, including the font type and paths, there is the
+\shortopt{d} option (or \longopt{detailed} for the long option), e.g,
+
+\bigskip
+
+\begin{Verbatim}[fontsize=\scriptsize]
+ Unicode code point DF, font details, mapping to ß
+┌──────────┬──────────────────────────────────────────────────────────────────┐
+│ Name │ 3270Medium Nerd Font │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Type │ OpenType Font │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Files │ /home/paulo/.local/share/fonts/NerdFonts/3270-Medium Nerd Font │
+│ │ Complete.otf │
+└──────────┴──────────────────────────────────────────────────────────────────┘
+ Unicode code point DF, font details, mapping to ß
+┌──────────┬──────────────────────────────────────────────────────────────────┐
+│ Name │ 3270Medium Nerd Font Mono │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Type │ OpenType Font │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Files │ /home/paulo/.local/share/fonts/NerdFonts/3270-Medium Nerd Font │
+│ │ Complete Mono.otf │
+└──────────┴──────────────────────────────────────────────────────────────────┘
+...
+ Unicode code point DF, font details, mapping to ß
+┌──────────┬──────────────────────────────────────────────────────────────────┐
+│ Name │ Zilla Slab,Zilla Slab Medium │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Type │ OpenType Font │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Files │ /usr/share/fonts/mozilla-zilla-slab/ZillaSlab-MediumItalic.otf │
+│ │ ──────────────────────────────────────────────────────────────── │
+│ │ /usr/share/fonts/mozilla-zilla-slab/ZillaSlab-Medium.otf │
+└──────────┴──────────────────────────────────────────────────────────────────┘
+ Unicode code point DF, font details, mapping to ß
+┌──────────┬──────────────────────────────────────────────────────────────────┐
+│ Name │ Zilla Slab,Zilla Slab SemiBold │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Type │ OpenType Font │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Files │ /usr/share/fonts/mozilla-zilla-slab/ZillaSlab-SemiBold.otf │
+│ │ ──────────────────────────────────────────────────────────────── │
+│ │ /usr/share/fonts/mozilla-zilla-slab/ZillaSlab-SemiBoldItalic.… │
+└──────────┴──────────────────────────────────────────────────────────────────┘
+\end{Verbatim}
+
+\medskip
+
+For more verbosity, \longopt{detailed} can be combined with
+\longopt{show-styles} to include all font details, e.g,
+
+\medskip
+
+\begin{Verbatim}[fontsize=\scriptsize]
+ Unicode code point DF, font details, mapping to ß
+┌──────────┬──────────────────────────────────────────────────────────────────┐
+│ Name │ 3270Medium Nerd Font │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Type │ OpenType Font │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Files │ /home/paulo/.local/share/fonts/NerdFonts/3270-Medium Nerd Font │
+│ │ Complete.otf │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Styles │ Medium │
+└──────────┴──────────────────────────────────────────────────────────────────┘
+ Unicode code point DF, font details, mapping to ß
+┌──────────┬──────────────────────────────────────────────────────────────────┐
+│ Name │ 3270Medium Nerd Font Mono │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Type │ OpenType Font │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Files │ /home/paulo/.local/share/fonts/NerdFonts/3270-Medium Nerd Font │
+│ │ Complete Mono.otf │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Styles │ Medium │
+└──────────┴──────────────────────────────────────────────────────────────────┘
+...
+ Unicode code point DF, font details, mapping to ß
+┌──────────┬──────────────────────────────────────────────────────────────────┐
+│ Name │ Zilla Slab,Zilla Slab Medium │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Type │ OpenType Font │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Files │ /usr/share/fonts/mozilla-zilla-slab/ZillaSlab-MediumItalic.otf │
+│ │ ──────────────────────────────────────────────────────────────── │
+│ │ /usr/share/fonts/mozilla-zilla-slab/ZillaSlab-Medium.otf │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Styles │ Medium Italic, Italic, Medium, Regular │
+└──────────┴──────────────────────────────────────────────────────────────────┘
+ Unicode code point DF, font details, mapping to ß
+┌──────────┬──────────────────────────────────────────────────────────────────┐
+│ Name │ Zilla Slab,Zilla Slab SemiBold │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Type │ OpenType Font │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Files │ /usr/share/fonts/mozilla-zilla-slab/ZillaSlab-SemiBold.otf │
+│ │ ──────────────────────────────────────────────────────────────── │
+│ │ /usr/share/fonts/mozilla-zilla-slab/ZillaSlab-SemiBoldItalic.… │
+├──────────┼──────────────────────────────────────────────────────────────────┤
+│ Styles │ SemiBold, Regular, SemiBold Italic, Italic │
+└──────────┴──────────────────────────────────────────────────────────────────┘
+\end{Verbatim}
+
+\bigskip
+
+Since the results can span several rows (the more common the glyph, the more
+fonts will contain it), we strongly recommend using a pipeline and pass the
+results to a terminal pager, e.g, the \command{less} utility:
+
+\bigskip
+
+\begin{Verbatim}[frame=single, fontsize=\small, framesep=3.5mm]
+$ albatross ß | less
+\end{Verbatim}
+
+\newpage
+
+\section{Coloured output}
+\label{sec:colouredoutput}
+
+\epigraph{Do you get wafers with it?}{\textsc{Monty Python}}
+
+\albatross\ supports terminal colours by including the \shortopt{a} option (or
+\longopt{ansi-level} for the long option) followed by the corresponding colour
+level. The following levels are available:
+
+\bigskip
+\bigskip
+
+{\centering
+\begin{tabular}{@{}ll@{}}
+\toprule
+Level & Description\\
+\midrule
+\val{n} & No colours at all (default)\\
+\val{a16} & ANSI 16 colours\\
+\val{a256} & ANSI 256 colours\\
+\val{tc} & Support for true colours\\
+\bottomrule
+\end{tabular}\par}
+
+\bigskip
+\bigskip
+
+Note that colours might mess the output when passed to a terminal pager. You
+might need to either adjust the terminal pager accordingly (e.g, \command{less
+-r} makes control characters to be displayed) or disable colours altogether
+(which is the default behaviour).
+
+\section{Table styles}
+\label{sec:tablestyles}
+
+\albatross\ provides 6 table styles. Include the \shortopt{b} option (or
+\longopt{border-style} for the long option) followed by the corresponding border
+style. The following styles are available:
+
+\begin{itemize}[label={--}]
+\item Style 1:
+
+\begin{Verbatim}[fontsize=\scriptsize]
++-------------------------------+-----------------------------------------+
+| Font name | Available styles |
++-------------------------------+-----------------------------------------+
+| 3270Medium Nerd Font | Medium |
++-------------------------------+-----------------------------------------+
+...
+\end{Verbatim}
+
+\item Style 2:
+
+\begin{Verbatim}[fontsize=\scriptsize]
+╭─────────────────────────────────────────────────────────────────────────╮
+│ Font name │
+├─────────────────────────────────────────────────────────────────────────┤
+│ 3270Medium Nerd Font │
+├─────────────────────────────────────────────────────────────────────────┤
+...
+\end{Verbatim}
+
+\item Style 3:
+
+\begin{Verbatim}[fontsize=\scriptsize]
+
+ Font name Available styles
+
+ 3270Medium Nerd Font Medium
+
+...
+\end{Verbatim}
+
+\item Style 4:
+
+\begin{Verbatim}[fontsize=\scriptsize]
+╔═══════════════════════════════╦═════════════════════════════════════════╗
+║ Font name ║ Available styles ║
+╠═══════════════════════════════╬═════════════════════════════════════════╣
+║ 3270Medium Nerd Font ║ Medium ║
+╠═══════════════════════════════╬═════════════════════════════════════════╣
+...
+\end{Verbatim}
+
+\item Style 5:
+
+\begin{Verbatim}[fontsize=\scriptsize]
+┌───────────────────────────────┬─────────────────────────────────────────┐
+│ Font name │ Available styles │
+├───────────────────────────────┼─────────────────────────────────────────┤
+│ 3270Medium Nerd Font │ Medium │
+├───────────────────────────────┼─────────────────────────────────────────┤
+...
+\end{Verbatim}
+
+\item Style 6:
+
+\begin{Verbatim}[fontsize=\scriptsize]
+┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃ Font name ┃ Available styles ┃
+┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
+┃ 3270Medium Nerd Font ┃ Medium ┃
+┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
+...
+\end{Verbatim}
+\end{itemize}
+
+These are the keys to be used as option values:
+
+\bigskip
+\bigskip
+
+{\centering
+\begin{tabular}{@{}ll@{}}
+\toprule
+Key & Description\\
+\midrule
+1 & Style 1 (ASCII)\\
+2 & Style 2 (rounded corners)\\
+3 & Style 3 (blank)\\
+4 & Style 4 (double lines)\\
+5 & Style 5 (square corners, default)\\
+6 & Style 6 (heavy lines)\\
+\bottomrule
+\end{tabular}\par}
+
+\chapter*{License}
+
+\epigraph{Course you don't get bloody wafers with it. Albatross!}{\textsc{Monty
+Python}}
+
+\albatross\ is licensed under the New BSD License. Please note that the New BSD
+License has been verified as a GPL-compatible free software license by the Free
+Software Foundation, and has been vetted as an open source license by the Open
+Source Initiative.
+
+\chapter*{Changelog}
+
+\epigraph{How much is it?}{\textsc{Monty Python}}
+
+\section*{1.0.0 (current)}
+
+\begin{itemize}[label={--}]
+\item Initial release.
+\end{itemize}
+
+\chapter*{The team}
+
+\epigraph{Ninepence.}{\textsc{Monty Python}}
+
+\albatross\ is brought to you by the Island of \TeX. If you want to support
+\TeX\ development by a donation, the best way to do this is donating to the
+\TeX\ Users Group.
+
+\vfill
+
+{\centering\footnotesize\em No albatrosses were harmed during the making of this
+user manual.\par}
+
+\end{document}
diff --git a/support/albatross/doc/version.tex b/support/albatross/doc/version.tex
new file mode 100644
index 0000000000..6c6aa7cb09
--- /dev/null
+++ b/support/albatross/doc/version.tex
@@ -0,0 +1 @@
+0.1.0 \ No newline at end of file
diff --git a/support/albatross/scripts/albatross.sh b/support/albatross/scripts/albatross.sh
new file mode 100644
index 0000000000..323713ca4b
--- /dev/null
+++ b/support/albatross/scripts/albatross.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+# Public domain. Originally written by Norbert Preining and Karl Berry, 2018.
+# Note from Paulo: this script provides better Cygwin support than our original
+# approach, so the team decided to use it as a proper wrapper for albatross as well.
+
+scriptname=`basename "$0"`
+jar="$scriptname.jar"
+jarpath=`kpsewhich --progname="$scriptname" --format=texmfscripts "$jar"`
+
+kernel=`uname -s 2>/dev/null`
+if echo "$kernel" | grep CYGWIN >/dev/null; then
+ CYGWIN_ROOT=`cygpath -w /`
+ export CYGWIN_ROOT
+ jarpath=`cygpath -w "$jarpath"`
+fi
+
+exec java -jar "$jarpath" "$@" \ No newline at end of file