% \iffalse meta-comment
%
% linearb.dtx
%
%  Author: Peter Wilson (Herries Press) herries dot press at earthlink dot net
%  Copyright 1999--2005 Peter R. Wilson
%
%  This work may be distributed and/or modified under the
%  conditions of the Latex Project Public License, either
%  version 1.3 of this license or (at your option) any
%  later version.
%  The latest version of the license is in
%    http://www.latex-project.org/lppl.txt
%  and version 1.3 or later is part of all distributions of
%  LaTeX version 2003/06/01 or later.
%
%  This work has the LPPL maintenance status "author-maintained".
%
%  This work consists of the files listed in the README file.
% 
% If you do not have the docmfp package (available from CTAN in
% tex-archive/macros/latex/contrib/supported), comment out the
% \usepackage{docmfp} line below and uncomment the line following it.
% 
%
%<*driver>
\documentclass[twoside]{ltxdoc}
\usepackage{docmfp}
%%%%% \providecommand{\DescribeVariable}[1]{} \newenvironment{routine}[1]{}{}
\usepackage{url}
\usepackage[draft=false,
            plainpages=false,
            pdfpagelabels,
            bookmarksnumbered,
            hyperindex=false
           ]{hyperref}
\providecommand{\phantomsection}{}
\OnlyDescription %% comment this out for the full glory
\EnableCrossrefs
\CodelineIndex
\setcounter{StandardModuleDepth}{1}
\makeatletter
  \@mparswitchfalse
\makeatother
\renewcommand{\MakeUppercase}[1]{#1}
\pagestyle{headings}
\newenvironment{addtomargins}[1]{%
  \begin{list}{}{%
    \topsep 0pt%
    \addtolength{\leftmargin}{#1}%
    \addtolength{\rightmargin}{#1}%
    \listparindent \parindent
    \itemindent \parindent
    \parsep \parskip}%
  \item[]}{\end{list}}
\begin{document}
  \raggedbottom
  \DocInput{linearb.dtx}
\end{document}
%</driver>
%
%
% \fi
%
% \CheckSum{780}
%
% \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath}
% \DoNotIndex{\@centercr,\@cite}
% \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue}
% \DoNotIndex{\@input,\@ixpt,\@m}
% \DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint}
% \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb}
% \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt}
% \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt}
% \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace}
% \DoNotIndex{\advance,\Alph,\alph}
% \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box}
% \DoNotIndex{\bullet}
% \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption}
% \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass}
% \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist}
% \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup}
% \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter}
% \DoNotIndex{\fbox}
% \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef}
% \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule}
% \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi}
% \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi}
% \DoNotIndex{\input}
% \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark}
% \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright}
% \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment}
% \DoNotIndex{\NeedsTeXFormat,\newdimen}
% \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number}
% \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@}
% \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip}
% \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions}
% \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright}
% \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font}
% \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman}
% \DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength}
% \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space}
% \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase}
% \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt}
% \DoNotIndex{\viipt,\vipt,\vskip,\vspace}
% \DoNotIndex{\wd,\xiipt,\year,\z@}
%
% \changes{v1.0}{1999/06/20}{First public release}
% \changes{v1.1}{2001/08/01}{Changed \cs{Bpiii} to \cs{Bpaiii}}
% \changes{v1.2}{2005/06/22}{Added many more glyphs and just one MF file}
% \changes{v1.2}{2005/06/22}{Added map file}
%
% \def\fileversion{v1.0} \def\filedate{1999/06/20}
% \def\fileversion{v1.1} \def\filedate{2001/08/01}
% \def\fileversion{v1.2} \def\filedate{2005/06/22}
% \newcommand*{\Lpack}[1]{\textsf {#1}}           ^^A typeset a package
% \newcommand*{\Lopt}[1]{\textsf {#1}}            ^^A typeset an option
% \newcommand*{\file}[1]{\texttt {#1}}            ^^A typeset a file
% \newcommand*{\Lcount}[1]{\textsl {\small#1}}    ^^A typeset a counter
% \newcommand*{\pstyle}[1]{\textsl {#1}}          ^^A typeset a pagestyle
% \newcommand*{\Lenv}[1]{\texttt {#1}}            ^^A typeset an environment
% \newcommand{\BC}{\textsc{bc}}
% \newcommand{\AD}{\textsc{ad}}
% \newcommand{\jurgen}{J\"urgen Kraus}
%
% \title{The \Lpack{Linearb} font\thanks{This
%        file has version number \fileversion, last revised
%        \filedate.}}
%
% \author{%
% Peter Wilson\thanks{With thanks to J\"{u}rgen Kraus who corrected my
% misinterpretations of some of the signs.} \\
% Herries Press\thanks{\texttt{herries dot press at earthlink dot net}}
% }
% \date{\filedate}
% \maketitle
% \begin{abstract}
%    The \Lpack{linearb} bundle provides a font for the Linear B
% syllabary which was used for writing Greek in the Bronze Age.
% \end{abstract}
% \tableofcontents
% \listoftables
%
% 
%
% \section{Introduction}
%
%    The font presented here is a rendition of (part of) the Linear B script
% that was used in the Bronze Age, particularly on Crete.
% It is one of a series of fonts that was initially intended
%nnn to show how the Latin alphabet has evolved from its original Phoenician form
% to its present day appearance.
%
% This manual is typeset according to the conventions of the
% \LaTeX{} \textsc{docstrip} utility which enables the automatic
% extraction of the \LaTeX{} macro source files~\cite{GOOSSENS94}.
%
%    Section~\ref{sec:usc} describes the usage of the package.
% Commented code for the fonts and source code for the package is in 
% later sections.
%
% \subsection{An alphabetic tree}
%
%    Scholars are reasonably agreed that all the world's alphabets are descended
% from a Semitic alphabet invented about 1600~\BC{} in the Middle 
% East~\cite{DRUCKER95}. The word `Semitic' refers
% to the family of languages used in the geographical area from
% Sinai in the south, up the Mediterranean coast to Asia Minor in the north and
% west to the valley of the Euphrates.
%
%    The Phoenician alphabet was stable by about 1100~\BC{} and the script was
% written right to left. In earlier times the writing direction was variable, 
% and so were
% the shapes and orientation of the characters. The alphabet consisted of
% 22 letters and they were named after things. For example, their first two 
% letters were called \textit{aleph} (ox), and \textit{beth} (house). 
% The Phoenician script had
% only one case --- unlike our modern fonts which have both upper- and 
% lower-cases. In modern day terms the Phoenician abecedary was: \\
% A B G D E Y Z H $\Theta$ I K L M N X O P ts Q R S T \\
% where the `Y' (\textit{vau}) character was sometimes written as `F' and
% `ts' stands for the \textit{tsade} character.
%
%    The Greek alphabet is one of the descendants of the Phoenician alphabet;
% another was Aramaic which is the ancestor of the Arabic, Persian and Indian 
% scripts.
% Initially Greek was written right to left but around the 6th C~\BC{} became 
% \textit{boustrophedron}, meaning that the lines 
% alternated in direction. At about 500~\BC{} the writing direction stabilised 
% as left to 
% right. The Greeks modified the Phoenician alphabet to match the vocalisation
% of their language. They kept the Phoenician names of the letters, suitably
% `greekified', so \textit{aleph} became the familar \textit{alpha} and 
% \textit{beth} became \textit{beta}. At this
% point the names of the letters had no meaning. Their were several variants
% of the Greek character glyphs until they were finally fixed in Athens in
% 403~\BC.
% The Greeks did not develop a lower-case 
% script until about 600--700~\AD.
%
%    The Etruscans based their alphabet on the Greek one, and again modified it.
% However, the Etruscans wrote right to left, so their borrowed characters are 
% mirror images of the original Greek ones. Like the Phoenicians, the Etruscan
% script consisted of only one case; they died out before ever needing a
% lower-case script. The Etruscan script was used up until the first century 
% \AD, even though the Etruscans themselves had dissapeared by that time.
% 
%
%    In turn, the Romans based their alphabet on the Etruscan one, but as they 
% wrote left to right, the characters were again mirrored (although the early
% Roman inscriptions are boustrophedron). 
%
%    As the English alphabet is descended from the Roman alphabet
% it has a pedigree of some three and a half thousand years.
%
% \section{The \Lpack{linearb} package} \label{sec:usc}
%
%    In 1900~\AD{} Arthur Evans (later Sir Arthur) began excavating the
% palace of Knossos on Crete, which had been destroyed about 1400~\BC. 
% There he found clay tablets with unknown
% writing on them. There were two different scripts which he called Linear~A
% and Linear~B. Sir Arthur was convinced that the script was used for an
% unknown Minoan language. He tried his hand at deciphering the scripts but
% made virtually no progess. This was in spite of the fact that the Cypriot
% script, which had several signs in common with Linear~B, had been deciphered
% in the 1870's and shown to be used for writing Greek.
% Later, in 1939, Carl W.~Blegen of the University
% of Cincinnati led a combined American-Greek excavation at Pylos on
% the mainland where he also found tablets inscribed with Linear~B.
% During his lifetime Sir Arthur published only a few
% of the tablets from Knossos. In 1951 the Pylos tablets were published
% and in 1952, eleven years after Sir Athur's death, the Knossos tablets 
% were published.
%
%    Michael Ventris (1922--1956) was an English architect who was 
% fascinated by the
% problem of deciphering Linear~B. He had studied the few published examples
% of the script and had decided that Linear~B was a syllabary rather than
% an alphabet because of the number of different signs. With the 
% publication of the Pylos and Knossos tablets
% he had a larger corpus to work on. He ignored the clue of the Cypriot
% script and independantly determined that Linear~B was probably
% used to write Greek, and then sought the help of John Chadwick of Cambridge
% University whose speciality was the early history of the Greek language. 
% They published their decipherment of Linear~B in the
% \textit{Journal of Hellenic Studies}, 1953. Tragically, Ventris was killed
% in a car accident in 1956.
%
%    Apart from the specialised literature, the story of Linear~B can be
% found in~\cite{CHADWICK87} and~\cite{GORDON87} among others.
%
%    Linear~B was in use during the approximate period 1500--1200~\BC,
% for writing in Mycenaean Greek. This was some centuries 
% before the Greek alphabet
% was invented. Perhaps surprisingly, Linear~B has no other relationship
% to the Greek alphabet except that they can both be used to write dialects
% of the same language.
%
%    Linear~B is basically a syllabary, where there is a sign for each 
% syllable. There are 60 basic signs and 16 optional signs for clarifying
% meanings; there are still some 11 signs whose meanings have not yet
% been identified. The script was used for record keeping, not for literary
% purposes. It has signs for numbering in a decimal system. The script also
% includes some ideographic signs, such as symbols for various kinds of goods
% and possesions,
% for example wheat or sheep or wool or wine. 
% There is also a system for weights and measures within
% the script.
%
%    The font presented here is based on the signs illustrated by 
% Chadwick~\cite{CHADWICK87}. \jurgen{} (\texttt{jkraus@uni-goettingen.de})
% was kind enough to review my first renditions and gave valuable advice
% concerning my errors of interpretation. 
% The font consists of the basic, optional,
% unidentified, and numbering signs only.
%
%
%
% \DescribeMacro{\linbfamily}
%    This command selects the Linear B font family. 
% The family name is |linb|.
%
% \DescribeMacro{\textlinb}
% The command |\textlinb{|\meta{text}|}| typesets \meta{text} in the
% Linear B font.
%
%    All the character commands start with |\B| (for the B in Linear~B).
%
%    The commands (and their ASCII equivalents) for the 60 basic signs
% are given in Table~\ref{tab:basic}; you can use either the command or
% its ASCII keyboard equivalent. There are 5 signs for the 5 vowels and
% the remaining 55 signs are two-character syllables.
% The apparently random
% ASCII mapping is so that a companion Cypriot font~\cite{CYPRIOT} 
% can use the same ASCII
% characters for syllables common to both scripts.
%
% \begin{table}
% \centering
% \caption{Commands and encoding for the basic signs}\label{tab:basic}
% \begin{tabular}{cccccc} \hline
%    & a        & e        & i        & o        & u        \\ \hline
%    & |\Ba|  a & |\Be|  e & |\Bi|  i & |\Bo|  o & |\Bu|  u \\
% d  & |\Bda| d & |\Bde| D & |\Bdi| f & |\Bdo| g & |\Bdu| x \\
% j  & |\Bja| j & |\Bje| J &          & |\Bjo| b & |\Bju| L \\
% k  & |\Bka| k & |\Bke| K & |\Bki| c & |\Bko| h & |\Bku| v \\
% m  & |\Bma| m & |\Bme| M & |\Bmi| y & |\Bmo| A & |\Bmu| B \\
% n  & |\Bna| n & |\Bne| N & |\Bni| C & |\Bno| E & |\Bnu| F \\
% p  & |\Bpa| p & |\Bpe| P & |\Bpi| G & |\Bpo| H & |\Bpu| I \\
% q  & |\Bqa| q & |\Bqe| Q & |\Bqi| X & |\Bqo| 8 &          \\
% r  & |\Bra| r & |\Bre| R & |\Bri| O & |\Bro| U & |\Bru| V \\
% s  & |\Bsa| s & |\Bse| S & |\Bsi| Y & |\Bso| 1 & |\Bsu| 2 \\
% t  & |\Bta| t & |\Bte| T & |\Bti| 3 & |\Bto| 4 & |\Btu| 5 \\
% w  & |\Bwa| w & |\Bwe| W & |\Bwi| 6 & |\Bwo| 7 &          \\
% z  & |\Bza| z & |\Bze| Z &          & |\Bzo| 9 &          \\
% \hline
% \end{tabular}
% \end{table}
%     
%    The commands for the 16 optional signs
% are given in Table~\ref{tab:optional}. Each entry is of the form: X |\Bcom|, 
% where X is the value of the sign and |\Bcom| is the command. Where the
% value includes a digit, I have used the corresponding roman numeral in the
% command.
%
% \changes{v1.1}{2001/08/01}{Changed `p3' to `pa3' in optional signs table}
% \changes{v1.1}{2001/08/01}{Changed \cs{Bpiii} to \cs{Bpaiii} in optional signs table}
% \begin{table}
% \centering
% \caption{Commands for the optional signs}\label{tab:optional}
% \begin{tabular}{lll} \hline
%  a2  |\Baii|  & a3  |\Baiii|  & au  |\Bau|   \\
%  dwe |\Bdwe|  & dwo |\Bdwo|   &              \\
%  nwa |\Bnwa|  &               &              \\
%  pa3 |\Bpaiii| & pu2 |\Bpuii|  & pte |\Bpte|  \\
%  ra2 |\Braii| & ra3 |\Braiii| & ro2 |\Broii| \\
%  swa |\Bswa|  & swi |\Bswi|   &              \\
%  ta2 |\Btaii| & two |\Btwo|   &              \\
% \hline
% \end{tabular}
% \end{table}
%
% The commands for the unidentified signs all have the form |\BUr|, where
% |r| is a roman numeral. There are either eleven or twelve of these signs,
% depending on the particular source for the character descriptions.
% The commands range from |\BUi| to |\BUxii|. The last of these signs,
% which looks like a `B', 
% may be classified as `unidentified' in one source, while another source
%  may give it the meaning \textit{twe}; 
% the commands |\BUxii| and |\Btwe| both print the same sign.
%
%     The commands for the numbers are given in Table~\ref{tab:num}. The
% commands are of the form |\BNr|, where |r| is the roman number for the
% numeral in question.
%
% \begin{table}
% \centering
% \caption{Commands for the numbers}\label{tab:num}
% \begin{tabular}{lllll} \hline
%     & digits     & tens      & hundreds  & thousands \\ \hline
% 1   & |\BNi|     & |\BNx|    & |\BNc|    & |\BNm|    \\
% 2   & |\BNii|    & |\BNxx|   & |\BNcc|   &   \\
% 3   & |\BNiii|   & |\BNxxx|  & |\BNccc|  &   \\
% 4   & |\BNiv|    & |\BNxl|   & |\BNcd|   &   \\
% 5   & |\BNv|     & |\BNl|    & |\BNd|    &   \\
% 6   & |\BNvi|    & |\BNlx|   & |\BNdc|   &   \\
% 7   & |\BNvii|   & |\BNlxx|  & |\BNdcc|  &   \\
% 8   & |\BNviii|  & |\BNlxxx| & |\BNdccc| &   \\
% 9   & |\BNix|    & |\BNxc|   & |\BNcm|   &   \\
% \hline
% \end{tabular}
% \end{table}
%
%     The Linear~B script includes a word divider, which is a short vertical
% line. In this font, there are three synonomous dividers which are produced
% by the ASCII keyboard characters |: , /| (i.e., colon or comma or slash).
% Using any of these when typesetting the script produce the same word divider
% sign. 
%
% \begin{table}
% \centering
% \caption{Commands for weights and measures}\label{tab:measures}
% \begin{tabular}{llcll} \hline
% Weight & & & Volume & \\ \hline
% Lightest & \cs{BPwta} & & Smallest & \cs{BPvola} \\
%          & \cs{BPwtb} & &          & \cs{BPvolb} \\
%          & \cs{BPwtc} & & Largest (dry) & \cs{BPvolcd} \\
%          & \cs{BPwtd} & & Largest (fluid) & \cs{BPvolcf} \\
% Heaviest & \cs{BPtalent} & & & \\ \hline
% \end{tabular}
% \end{table}
%
% \begin{table}
% \centering
% \caption{Commands for commodities}\label{tab:commodities}
% \begin{tabular}{llcll} \hline
% cloth & \cs{BPcloth} & & wool & \cs{BPwool} \\
% wheat & \cs{BPwheat} & & barley & \cs{BPbarley} \\
% wine  & \cs{BPwine} & & olive oil & \cs{BPolive} \\
% bronze & \cs{BPbronze} & & gold & \cs{BPgold} \\ \hline
% \end{tabular}
% \end{table}
%
% \begin{table}
% \centering
% \caption{Commands for people and livestock}\label{tab:animals}
% \begin{tabular}{llcllcll} \hline
%       & & & man & \cs{BPman} & & woman & \cs{BPwoman} \\
% sheep & \cs{BPsheep} & & ram & \cs{BPram} & & ewe & \cs{BPewe} \\
% goat  & \cs{BPgoat} & & he goat & \cs{BPbilly} & & she goat & \cs{BPnanny} \\
% pig   & \cs{BPpig} & & boar & \cs{BPboar} & & sow & \cs{BPsow} \\
% ox    & \cs{BPox} & & bull & \cs{BPbull} & & cow & \cs{BPcow} \\
% horse & \cs{BPhorse} & & foal & \cs{BPfoal} & & &  \\ \hline
% \end{tabular}
% \end{table}
%
%  
% \begin{table}
% \centering
% \caption{Commands for weapons}\label{tab:weapons}
% \begin{tabular}{llcll} \hline
% chariot & \cs{BPchariot} & & sword & \cs{BPsword} \\
% chariot body & \cs{BPchassis} & & arrow & \cs{BParrow} \\
% (chariot) wheel & \cs{BPwheel} & & spear & \cs{BPspear} \\ \hline
% \end{tabular}
% \end{table}
%
%    A variety of glyphs are provided encompassing some of the pictograms in
% the script. These are given in the following tables. All the commands
% start with \verb?\BP? (the \verb?P? for pictogram).
%
% Table~\ref{tab:measures} lists the commands for the system of weights, 
% and for volumetric quantities. There is an assumption that the heaviest 
% weight might be a \textit{talent}, which was the most common one in 
% archaic times. There are different pictograms for the largest volume for
% dry materials (e.g., flour) and liquids.
%
% Table~\ref{tab:commodities} lists pictograms for various goods, and 
% table~\ref{tab:animals} is for livestock as well as pictograms for 
% a man and a woman.
%
% Pictograms related to warlike activities are in table~\ref{tab:weapons}.
%
%  
%  
%
%
% \DescribeMacro{\translitlinb}
%  The command |\translitlinb{|\meta{char-commands}|}|, where \meta{char-commands}
% are the Linear~B character commands, will typeset a transliteration of the
% signs. For example,\\
% |\translitlinb{\Bti\Bme:\Bto/\Bre\Bti\Bre}| will generate \\
% \textit{ti-me-:to-/re-ti-re-} \\
% Note that in the transliterated form the word dividers 
% (|:| and |/| in this example) are printed as themselves. This is because
% only the character commands are modified while any other text is printed as is.
% The unidentified signs, |\BUi| through |\BUxii|, are all transliterated
% as \textit{?-}.
% It is a feature of the command that all transliterated commands, except
% for pictograms, have a trailing |-| sign.
%
% The transliterations of the pictograms are given as words, enclosed in
% slashes. For example, 
% \verb?\translitlinb{\BPolive}? is \textit{ /olive oil/ }.
% 
% \DescribeMacro{\translitlinbfont}
% The transliterated Linear~B is typeset with the font declarations specified by
% |\translitlinbfont|, which defaults to |\itshape| thus printing the
% transliteration in an italic font. The font can be changed by redefining
% the command. For example, if you wanted to use a bold sans font you
% would do: \\
% |\renewcommand{\translitlinbfont}{\sffamily\bfseries}|
%
% 
% \StopEventually{
% \bibliographystyle{alpha}
% \begin{thebibliography}{GMS94}
%
% \bibitem[Cha87]{CHADWICK87}
% John Chadwick.
% \newblock \emph{Linear~B and Related Scripts}.
% \newblock University of California Press/British Museum, 1987.
% (ISBN 0-520-06019-9)
%
% \bibitem[Dru95]{DRUCKER95}
% Johanna Drucker.
% \newblock \emph{The Alphabetic Labyrinth}.
% \newblock Thames and Hudson, 1995.
%
% \bibitem[GMS94]{GOOSSENS94}
% Michel Goossens, Frank Mittelbach, and Alexander Samarin.
% \newblock \emph{The LaTeX Companion}.
% \newblock Addison-Wesley Publishing Company, 1994.
%
% \bibitem[Gor87]{GORDON87}
% Cyrus H.~Gordon.
% \newblock \emph{Forgotten Scripts}.
% \newblock Dorset Press, (Revised and enlarged edition) 1987.
%
% \bibitem[Rob02]{ROBINSON02}
% Andrew Robinson.
% \newblock \emph{Lost Languages}.
% \newblock McGraw Hill, 2002.
%
% \bibitem[Wil99]{CYPRIOT}
% Peter R.~Wilson.
% \newblock \emph{The Cypriot Package}.
% \newblock 1999. (Available from CTAN in \texttt{fonts/archaic}).
%
% \end{thebibliography}
% \PrintIndex
% }
%
%     
%
% \section{The Metafont code} \label{sec:mf}
%
% \subsection{Parameters and setup}
%
%    We deal with the parameter file first, and start by announcing
% what it is for.
%    \begin{macrocode}
%<*up>
%%% LINB10.MF  Linear B font 10 point design size.

%    \end{macrocode}
%    Specify the font size.
%    \begin{macrocode}

font_identifier:="LinearB"; font_size 10pt#;

%    \end{macrocode}
%
%
% \DescribeVariable{penfudge}
%  Increase (decrease) this to get bolder (lighter) characters.
%    \begin{macrocode}
penfudge:=1.0;
%    \end{macrocode}
%  
%
% \DescribeVariable{heightfudge}
%  Increase (decrease) this to get taller (shorter) characters.
%    \begin{macrocode}
heightfudge:=1.0;
%    \end{macrocode}
%  
%
% \DescribeVariable{u} 
% |u| is the unit width.
%    \begin{macrocode}
u#:=.2pt#;                 % unit width
%    \end{macrocode}
%
% \DescribeVariable{ht} 
% |ht| is the height of the characters (the Computer Modern value 
% for the capital letters is
% approximately 6.8pt).
%    \begin{macrocode}
ht#:=heightfudge*10pt#;    % height of characters 
%    \end{macrocode}
%
% \DescribeVariable{s} 
% \DescribeVariable{o} 
% |s| is the width of the space at either side of a character; |o| is
% the amount that a charcter stroke can overshoot its normal width or height.
%    \begin{macrocode}
s#:=1.5pt#;                % width correction (right and left)
o#:=1/20pt#;               % overshoot
%    \end{macrocode}
%
% \DescribeVariable{px} 
% |px| is the horizontal width of the pen.
%    \begin{macrocode}
%%%%%%px#:=penfudge*0.7pt#;      % horizontal width of pen
px#:=penfudge*0.5pt#;      % horizontal width of pen
%    \end{macrocode}
%
% \DescribeVariable{font-normal-space} 
% \DescribeVariable{font-normal-shrink} 
% \DescribeVariable{font-x-height} 
% \DescribeVariable{font-quad}
%    Define the very simple font values.
%    \begin{macrocode}
font_normal_space:=7pt#;   % width of a blank space
font_normal_shrink:=.9pt#; % width correction for blank space
font_x_height:=4.5pt#;     % height of one ex
font_quad:=10pt#;          % an em

%    \end{macrocode}
%  
% \DescribeVariable{digwd}
% \DescribeVariable{digsz}
% |digwid| is the character `width' of a pair of digit dashes. |digsz| is
% the length (as a proportion of the character height) of a digit dash.
%    \begin{macrocode}
digwd:=0.2;
digsz:=0.4;
%    \end{macrocode}
%  
% \DescribeVariable{tenwd}
% \DescribeVariable{tensz} 
% \DescribeVariable{tensep} 
% |tenwd| is the character `width' of a column of tens dashes. |tensz|
% is the length (as a proportion of the character height) of a ten dash. 
% |tensep| is the horizontal seperation between columns of tens dashes.
%    \begin{macrocode}
tensz:=0.4;
tenwd:=tensz;
tensep:=0.2;
%    \end{macrocode}
%  
% \DescribeVariable{hunwd}
% \DescribeVariable{hunsep}
% \DescribeVariable{hunsz}
% |hunwid| is the character `width' of hundred circle and |hunsep| is
% the horizontal spacing the perimeters of a pair. |hunsz| is
% the diameter (as a proportion of the character height) of a hundred
% circle.
%    \begin{macrocode}
hunsz:=0.4;
hunwd:=hunsz;
hunsep:=0.1;

%    \end{macrocode}
%  
%    This is where the driver file would normally be called.
%
%
%    Here is the code for what would normally be the driver file.
% \changes{v1.2}{2005/06/22}{Merged MF driver file into the main file}
%
% Switch into Metafont mode
%
%    \begin{macrocode}
font_coding_scheme:="Linear B glyphs";
mode_setup;

%    \end{macrocode}
%
% \DescribeVariable{ho}
% \DescribeVariable{leftloc}
% \DescribeVariable{py}
%  Perform additional setup.
%    \begin{macrocode}
ho#:=o#;                   % horizontal overshoot
leftloc#:=s#;        % leftmost xcoord of character
py#:=.9px#;                % vertical thickness of the pen

define_pixels(s,u);
define_blacker_pixels(px,py);
define_good_x_pixels(leftloc);
define_corrected_pixels(o);             % turn on overshoot correction
define_horizontal_corrected_pixels(ho);  

%    \end{macrocode}
%  
%
% \DescribeVariable{midloc}
% \DescribeVariable{rightloc}
%    Variables for the middle xcoord and rightmost xcoord of a character.
%    \begin{macrocode}
numeric midloc, rightloc;
%    \end{macrocode}
%  
%
% \DescribeVariable{tiny}
% \DescribeVariable{small}
% \DescribeVariable{medium}
% \DescribeVariable{large}
% \DescribeVariable{huge}
%   Some lengths.
%    \begin{macrocode}
tiny#:=px#;
small#:=2px#;
medium#:=3px#;
large#:=4px#;
huge#:=5px#;
define_pixels(tiny,small,medium,large,huge);
%    \end{macrocode}
%  
% \DescribeVariable{NE} 
% \DescribeVariable{NW} 
% \DescribeVariable{SW} 
% \DescribeVariable{SE} 
% Shorthand for direction vectors corresponding to the designated compass point.
%    \begin{macrocode}
pair NE,NW,SW,SE;
NE:=(1,1);
NW:=(-1,1);
SW:=(-1,-1);
SE:=(1,-1);
%    \end{macrocode}
%  
%
% \DescribeVariable{stylus}
%    Define the pen.
%    \begin{macrocode}
pickup pencircle xscaled px yscaled py;
stylus:=savepen;

%    \end{macrocode}
%  
%
% \begin{routine}{draw_hdash}
%    |draw_hdash(1,len)| draws a horizontal line, length |len|, with its
% midpoint at |z1|.
%    \begin{macrocode}
def draw_hdash(suffix $)(expr len)=
  x$l=x$-len/2; x$r=x$+len/2; y$l=y$r=y$;
  draw z$l--z$r;
enddef;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{draw_vdash}
%    |draw_vdash(1,len)| draws a vertical line, length |len|, with its
% midpoint at |z1|.
%    \begin{macrocode}
def draw_vdash(suffix $)(expr len)=
  x$t=x$b=x$; y$t=y$+len/2; y$b=y$-len/2;
  draw z$t--z$b;
enddef;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{draw_vloop}
% Draws a vertical elliptical shape. |draw_vloop(1,2,f)| draws ellipse between
% |z1| and |z2| with minor (horizontal) radius fraction |f| of major 
% (vertical) radius.
%    \begin{macrocode}
def draw_vloop(suffix $, $$)(expr len)=
  z$m=1/2[z$,z$$];
  y$l=y$r=y$m;
  q:=len*(y$-y$m);
  x$l=x$m-q; x$r=x$m+q;
  draw z$..z$l..z$$; draw z$$..z$r..z$;
  labels($,$l,$m,$r,$$);
enddef;  
  
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{beginglyph}
%    A macro to save some typing of beginchar arguments.
%    \begin{macrocode}
def beginglyph(expr code, unit_width) =
  beginchar(code, unit_width*ht#+2s#, ht#, 0);
  midloc:=1/2w; rightloc:=(w-s);
  pickup stylus enddef;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{cmchar}
%    |cmchar| should precede each character
%    \begin{macrocode}
let cmchar=\;

%    \end{macrocode}
% \end{routine}
% 
%    This is where the glyph code file would normally be called.
%
%    The following code generates the glyphs for the Linear B font. 
% \changes{v1.2}{2005/06/22}{Merged MF glyph file into the main one}
%
% \subsection{The basic glyphs}
%
% There are 60 basic glyphs. These are composed of the five vowels 
% (a e i o u), and 55 syllables. First I define the vowels,
% then the remaining characters in syllable order 
% (e.g. \ldots nu, pa, pe, pi, po, pu, qa \ldots). The basic glyphs
% are encoded as roman upper and lower case characters and the digits.
%
%    The somewhat peculiar mapping to the alphanumerics is so that a
% companion Cypriot syllabary can use an identical encoding for the
% syllables that are common between Linear B and Cypriot.
%
%    The vowels are mapped to their lowercase ASCII equivalents.
% A syllable `xa' is mapped to ASCII x and `xe' is mapped to X.
% Otherwise, the mapping appears random, although there is an 
% underlying methodology.
%
% \begin{routine}{a}
%    The sign \textit{a}. Like an old-rashioned English TV aerial.
%    \begin{macrocode}
cmchar "Linear B sign a";
beginglyph("a",0.6);
x1=x3=leftloc; x4=midloc;  x6=x8=rightloc;    
y1=y6=1/2h; y3=y8=h; y4=0;
z2=0.5[z1,z3]; z7=0.5[z6,z8]; z5=0.5[z2,z7];
draw z1--z3;  % left vertical
draw z4--z5;  % centre vertical
draw z6--z8;  % right vertical
draw z2--z7;  % bar
labels(1,2,3,4,5,6,7,8);
endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{e}
%    The sign \textit{e}. Much like our modern A but but with an additional
% crossbar.
%    \begin{macrocode}
cmchar "Linear B sign e";
beginglyph("e",0.6);
x1=x6=leftloc; x3=x7=rightloc;       % base points
y1=y3=0;
x2=midloc; y2=h;               % apex
z4=0.4[z1,z2]; z5=0.4[z3,z2];  % lower bar
y6=y7=0.5[y4,y2];              % upper bar
draw z1--z2--z3;               % the legs
draw z4--z5;                   % lower bar
draw z6--z7;                   % upper bar
labels(1,2,3,4,5,6,7);
endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{i}
%    The sign \textit{i}. Top half of an asterisk on a stem.
%    \begin{macrocode}
cmchar "Linear B sign i";
beginglyph("i",0.6);
x1=x2=x4=midloc; y1=0; y2=h;            % upright
x3=leftloc; x5=rightloc;             % bar
y3=y4=y5=2/3h;
x6=leftloc; x7=rightloc;             % diagonals
top y6=top y7=h;
draw z1--z2;       % upright
draw z3--z5;       % horizontal
draw z6--z4--z7;   % diagonals
labels(1,2,3,4,5,6,7);
endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{o}
%    The sign \textit{o}. Like a box with partially opened lid.
%    \begin{macrocode}
cmchar "Linear B sign o";
beginglyph("o",0.6);
numeric alpha; alpha:=2/3;
x1=x2=leftloc; y1=h; y2=0;                  % left vertical
x3=x4=rightloc; y3=y2; y4=y5=alpha*h;       % right vertical
x5=x6=0.4[x1,x3]; y6=y1;                    % center vertical
x7=x8=1/2[x5,x4]; y7=y4; y8=0.5[y4,y6];     % dash
draw z1--z2--z3--z4;                        % main shape
draw z1--z6{right}..{right}z5--z4;
draw z7--z8;                                % dash
labels(1,2,3,4,5,6,7,8);
endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{u}
%    The sign \textit{u}. Like an f.
%    \begin{macrocode}
cmchar "Linear B sign u";
beginglyph("u",0.6);
numeric alpha; alpha:=2/3;
x1=x2=leftloc; y1=0; y2=alpha*h;            % left vertical
x3=x5=midloc; x4=x6=rightloc;               % cross and curve
y6=y2; y3=y4=h;
y2-y5=y3-y2;
draw z1--z2{up}..{right}z3--z4;             % vertical and curve top
draw z2--z6; draw z3--z5;                   % cross
labels(1,2,3,4,5,6,7,8);
endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{da}
%    The sign \textit{da}. Like |!-|.
%    \begin{macrocode}
cmchar "Linear B sign da";
beginglyph("d",0.4);
x1=x2=leftloc; y1=0; y2=h;            % left vertical
z3=0.5[z1,z2];                        % horizontal
x4=rightloc; y4=y3;
draw z1--z2; draw z3--z4;
labels(1,2,3,4);
endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{de}
%    The sign \textit{de}, with corrections suggested by \jurgen. Like a W on
% top of a trestle table.
% \begin{verbatim}
% cmchar "Linear B sign de (original)";
% beginglyph("D",0.8);
% numeric alpha; alpha:=0.01;
% x8=leftloc; x9=rightloc; y8=y9=0;     % base points
% y2=y4=y6=h;                           % top points
% y1=y3=y5=y7=0.7h;                     % middle points
% x1=x8+alpha*w; x7=x9-alpha*w;
% x2=1/6[x1,x7]; x3=2/6[x1,x7]; x4=3/6[x1,x7]; x5=4/6[x1,x7]; x6=5/6[x1,x7];
% draw z1--z2--z3--z4--z5--z6--z7;      % top wavy
% draw z3--z5;                          % triangle base
% draw z8--z5; draw z9--z3;             % legs
% labels(1,2,3,4,5,6,7,8,9); endchar;
% \end{verbatim}
%
%    \begin{macrocode}
cmchar "Linear B sign de";
beginglyph("D",0.8);
numeric alpha; alpha:=0.01;
x2=leftloc; x6=rightloc; x4=0.5[x2,x6];  % top of W
y2=y4=y6=h;                           
x3=0.5[x2,x4]; x5=0.5[x4,x6]; y1=y3=y5=y7=0.7h;  % bottom of W
z11=2/3[z3,z2]; z17=2/3[z5,z6];          % side points on W
x1=x2; x7=x6;
x12=x11; x15=x17; y12=y13=y14=y15=y1-3/4small;  % the horizontal
x13=x3; x14=x5;
x8=x12; x9=x15; y8=y9=0;                     % base points
draw z2--z3--z4--z5--z6;                 % W
draw z11--z1; draw z17--z7;              % side arms
draw z12--z15;                           % horizontal
draw z8--z14; draw z9--z13;              % legs
labels(1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17);
endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{di}
%    The sign \textit{di}. Like a T with a fringe under the crossbar.
%    \begin{macrocode}
cmchar "Linear B sign di";
beginglyph("f",0.6);
numeric alpha; 
alpha:=small;
x1=x2=midloc; y1=0; y2=0.6h;          % stem
x3=leftloc; x4=rightloc; y3=y4=h;     % bar
x5=x6=x3; x7=x8=x2; x9=x10=x4;        % fringe
y5=y7=y9=y3-alpha;
y6=y8=y10=y2+alpha;
draw z1--z2;                             % stem
draw z3--z4;                             % bar
draw z5--z6; draw z7--z8; draw z9--z10;  % fringe
labels(1,2,3,4,5,6,7,8,9,10);
endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{do}
%    The sign \textit{do}, circle on a stem with various spikes emenating from 
% the circle. \jurgen{} suggested a kinked stem with a semicircle and a dash.
% \begin{verbatim}
cmchar "Linear B sign do (original)";
% beginglyph("g",0.8);
% numeric alpha; alpha:=0.2*(rightloc-leftloc);
% numeric rad;   rad:=0.3*(rightloc-leftloc);
% x0=midloc; y0=h-rad-0.5alpha;         % circle center
% x1=x2=x5=x9=x0;                       % mid vertical points
% y1=0; y2=y0-rad; y5=y0+rad; y9=h;
% y7=y3=y6=y11=y0;                      % mid horizontal points
% x7=leftloc; x3=x0-rad; x6=x0+rad; x11=rightloc;
% x10=x9-0.5alpha; y10=y9;              % top line
% y12=y13=y11+small; x13=x11; x12=x13-0.25alpha;
% path p;
% p=z2..z3..z5..z6..cycle;
% x8=x7; x4=x3; y8=y4=y3+small;
% draw p;                               % circle
% draw z1--z2;                          % stem
% draw z7--z3; draw z6--z11;            % main horizontals
% draw z12--z13;                        % right dash
% draw z5--z9--z10;                     % top L
% draw z4--z8;                          % left dash
% labels(0,1,2,3,4,5,6,7,8,9,10,11,12,13); endchar;
% \end{verbatim}
%
%    \begin{macrocode}
cmchar "Linear B sign do";
beginglyph("g",0.4);
numeric alpha; alpha:=small;
numeric rad;   rad:=0.15h;
numeric beta; beta:=1.5tiny; % gap size
numeric gam; gam:=1.5;    % the tension
x0=midloc; y0=h-rad-alpha;            % circle center
x1=x2=x4=x5=x0;                       % stem vertical points
y1=0; y2=y0-rad; y4=y0+rad; y5=h;
x3=x0-0.75rad; y3=y0;                     % mid arc point
x12=x14=x0+beta; y12=y2; y14=y4;      % points on right arc
x13=x14+rad; y13=y3;
x15=x1; x16=x13; y15=y16=y2-beta;     % horizontal
%%draw z1..tension gam..z2..tension gam..z3..tension gam..z4..tension gam..z5;
%%draw z1---z2..tension gam..z3..tension gam..z4---z5;
draw z1--z2{up}..z3..{up}z4--z5;
draw z12..z13..z14;                   % right hand arc
draw z15--z16;                        % horizontal
labels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16);
endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{du}
%    The sign \textit{du}. A very vague resemblance to a chef's hat,
%    \begin{macrocode}
cmchar "Linear B sign du";
beginglyph("x",0.6);
x4=leftloc; x6=rightloc-tiny; x5=1/3[x4,x6];   % base points
y4=y5=y6=0;
y1=y2=y3=0.8h;                                % mid points
x1=x4+tiny; x3=x6; x2=1/3[x1,x3];
x7=leftloc; x8=rightloc;                      % top points
y7=y8=h;
draw z1--z3;                                  % horizontal
draw z6--z3--z8;                              % right uprights
draw z1{up}..z7;                              % top left
draw z4{up}..z1; draw z5{up}..z2;             % curved legs
labels(1,2,3,4,5,6,7,8);
endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{ja}
% The sign \textit{ja}. A rectangle with two interior lines.
%    \begin{macrocode}
cmchar "Linear B sign ja";
beginglyph("j",0.6);
x1=x2=x3=x4=leftloc;                       % left points
y1=0; y4=h; y2=1/3[y1,y4]; y3=2/3[y1,y4];
x5=x6=x7=x8=rightloc;
y5=y1; y6=y2; y7=y3; y8=y4;
draw z1--z4--z8--z5--cycle;               % exterior
draw z2--z6; draw z3--z7;                 % lines
labels(1,2,3,4,5,6,7,8); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{je}
% The sign \textit{je}. 
%    \begin{macrocode}
cmchar "Linear B sign je";
beginglyph("J",0.6);
path p[]; numeric alpha; alpha:=0.8;
x1=leftloc; y1=0; x2=rightloc; y2=h;       % left leg
p1=z1{up}..z2;
z3 = point alpha of p1;
x5=x2; y5=y1; x6=x1; y6=y2;                % right leg
p2=z5{up}..z6;
z7 = point alpha of p2;
z4'=z3 shifted (w*(1,-1));
z4 = whatever[z3,z4']= whatever[z5,z2];
z7'= z7 shifted (w*(-1,-1));
z8 = whatever[z7,z7'] = whatever[z1,z6];
draw p1; draw z3--z4;                     % left leg
draw p2; draw z7--z8;                     % right leg
labels(1,2,3,4,5,6,7,8); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{jo}
% The sign \textit{jo}. An angled top bar on a kinked stem.
%    \begin{macrocode}
cmchar "Linear B sign jo";
beginglyph("b",0.4);
x1=x2=x4=midloc; y1=0;                      % center points
x6=leftloc; y6=h-tiny; x7=rightloc; y7=h;   % crossbar
z5=0.5[z6,z7];
y4=y5-small; y2=y4-medium;
x3=0.75[x4,x7]; y3=0.5[y2,y4];
draw z6--z7;                                % crossbar
draw z1--z2; draw z4--z5; draw z2{right}..z3..{left}z4;  % stem
labels(1,2,3,4,5,6,7,8); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{ju}
% The sign \textit{ju}. Looks a bit like a chair. 
%    \begin{macrocode}
cmchar "Linear B sign ju";
beginglyph("L",0.8);
x1=x5=leftloc; y1=0; y5=h-tiny;    % back and leg
x4=x1+tiny; y4=h;
x2=0.5[x1,x4]; y2=1/2h;            
x9=rightloc-tiny; y9=0;            % seat and leg
x7=x9; y7=y2+tiny;
x8=rightloc; y8=y7-2tiny;
z10=1/3[z1,z9]; z12=2/3[z1,z9];
x11=x10; x13=x12;
y11=y2; y13=1/3[y2,y4];
draw z1--z2--z4--z5;               % back leg
draw z2---z7..z8---z9;               % seat and leg
draw z10--z11; draw z12--z13;      % other legs
labels(1,2,3,4,5,6,7,8,9,10,11,12,13); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{ka}
% The sign \textit{ka}. It is a circle with horizontal and vertical diameters.
%    \begin{macrocode}
cmchar "Linear B sign ka";
beginglyph("k",0.8);
numeric rad; rad:=0.5*(rightloc-leftloc);
x0=midloc; y0=h/2;
x1=x0-rad; x3=x0+rad;
y2=y0+rad; y4=y0-rad;
x2=x4=x0;
y1=y3=y0;
draw z1..z2..z3..z4..cycle;  % the circle
draw z1--z3; draw z2--z4;   % the cross
labels(0,1,2,3,4); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{ke}
%    The sign \textit{ke}. A W on curved legs (similar to \textit{de}).
%    \begin{macrocode}
cmchar "Linear B sign ke";
beginglyph("K",0.8);
numeric alpha; alpha:=0.01;
x8=leftloc; x9=rightloc; y8=y9=0;     % base points
y2=y4=y6=h;                           % top points
y1=y3=y5=y7=0.7h;                     % middle points
x1=x8+alpha*w; x7=x9-alpha*w;
x2=1/6[x1,x7]; x3=2/6[x1,x7]; x4=3/6[x1,x7]; x5=4/6[x1,x7]; x6=5/6[x1,x7];
x10=x11=x4; y10=y3;                       % line points
y10-y11 = y4-y3;
draw z1--z2--z3--z4--z5--z6--z7;      % top wavy
draw z3--z5;                          % triangle base
draw z8{up}..z5; draw z9{up}..z3;             % legs
draw z10--z11;                        % line
labels(1,2,3,4,5,6,7,8,9,10,11);
endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{ki}
%    The sign \textit{ki}, which is like a triangle with a bow at top left.
%    \begin{macrocode}
cmchar "Linear B sign ki";
beginglyph("c",0.8);
numeric rad; rad:=small;
x0=leftloc+rad; y0=h-rad;      % circle center
path p;
p=fullcircle scaled (2rad) shifted z0;
z2 = directionpoint (1,1) of p;    % triangle points
x3=rightloc; y3=y2;
x1=0.5[x2,x3]; y1=0;
z4=z2 shifted (-rad,-rad);
z5-z2=z2-z4;
draw z1--z2--z3--cycle;  % triangle
draw z4--z5; draw p;     % bow

labels(0,1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{ko}
%    The sign \textit{ko}, which is like an icecream cone.
%    \begin{macrocode}
cmchar "Linear B sign ko";
beginglyph("h",0.4);
numeric rad; rad:=0.5*(rightloc-leftloc);
x1=x6=midloc; y1=0; y6=h;      % axis points
x5=leftloc; x7=rightloc;       % circle horizontal diameter
y5=y7=y6-rad;
x9=x6; y9=y6-2rad;
x2=x9-rad/2; x3=x9+rad/2;      % cone points
y2=y3=3/4[y9,y5];
path p[];
p1=z5{down}..z9{right}..{up}z7;
p2=z1--z2; p3=z1--z3;
z4 = p2 intersectionpoint p1;
z8 = p3 intersectionpoint p1;
draw z1--z2--z3--cycle;       % cone
draw z4..z5{up}..z6{right}..z7{down}..z8;  % icecream
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{ku}
%    The sign \textit{ku}, which is similar to our modern B, but no upright and
% a faucet on the upper bowl. The correction by \jurgen{} looks very different,
% a bit like |w)?|, or a satelite TV dish.
% \begin{verbatim} 
cmchar "Linear B sign ku (original)";
% beginglyph("v",0.6);
% x1=x3=x5=leftloc;
% x2=x4=rightloc-small; 
% bot y1=-o; top y5=h;
% y2=1/4h; y3=1/2h; y4=3/4h;
% path p;
% p = z3{right}..z4..z5{left};    % upper bowl
% z6 = directionpoint (1,1) of p;  % faucet
% x7=rightloc; y7=y6;
% x8=x7; y8=0.5[y2,y3];
% draw z1{right}..z2..z3{left};  % lower bowl
% draw p;                        % upper bowl
% draw z6--z7--z8;               % faucet
% labels(1,2,3,4,5,6,7,8); endchar;
% \end{verbatim}
%
%    \begin{macrocode}
cmchar "Linear B sign ku)";
beginglyph("v",0.6);
numeric alpha; alpha:=1/3(rightloc-leftloc);
numeric beta; beta:=0.5alpha;
x1=x3=leftloc; x2=rightloc-alpha; y1=0; y2=h/2; y3=h;  % the right paren
x12=leftloc; x11=x13=1/4[x12,x2];                      % the w
x14=1/2[x12,x2]; x15=3/4[x12,x2];
y11=y2; y13=y15=y2-beta; y12=y14=0.5[y11,y13];
x23=rightloc; x21=x22=0.5[x2,x23];                     % the ?
y21=0; y23=y13; y23-y22=y2-y23;
draw z1..z2{up}..z3;                          % the paren
draw z11..z12..z13..z14; draw z14..z15..z2;   % the w
draw z2{right}..z23..{down}z22--z21;          % the ?
labels(1,2,3,11,12,13,14,15,21,22,23,24); 
endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{ma}
%    The sign \textit{ma}. My original was a bit like a V in a bucket.
% \jurgen's correction is more like a Y with two stirrups.
% \begin{verbatim} 
cmchar "Linear B sign ma (original)";
% beginglyph("m",0.75);
% x1=leftloc; x3=midloc; x5=rightloc;  % triangley
% y1=y5=h; y3=1/8h;                  
% z2=3/4[z3,z1]; z4=3/4[z3,z5];    % top of bucket
% x6=x8=x2; x7=x9=x4;              % bottom lines
% y6=y7=0; y8=y9=y3;
% draw z1--z3--z5;                   % triangle
% draw z2--z6--z7--z4; draw z8--z9;  % bucket
% labels(1,2,3,4,5,6,7,8,9); endchar;
% \end{verbatim}
%
%    \begin{macrocode}
cmchar "Linear B sign ma";
beginglyph("m",0.75);
x1=leftloc; x2=x3=midloc; x4=rightloc;  % The Y
y1=y4=h; y2=1/2h; y3=0;
z5=0.5[z1,z2];                          % top of left stirrup strap
x7=x9=0.5[x5,x2]; x8=0.5[x5,x1];        % left stirrup
y9=1/6[y3,y2]; y7=2/3[y9,y2]; y8=0.5[y7,y9];
path p; p=z7..z8..z9;                   % strap point on stirrup
z6=point 0.5 of p;
z15=z5 reflectedabout (z3,z2);          % right strap and stirrup
z16=z6 reflectedabout (z3,z2);
z17=z7 reflectedabout (z3,z2);
z18=z8 reflectedabout (z3,z2);
z19=z9 reflectedabout (z3,z2);
draw z1--z2--z3; draw z4--z2;       % Y
draw z5--z6; draw z7..z8..z9;       % straps
draw z15--z16; draw z17..z18..z19;  % right half
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{me}
%    The sign \textit{me}. A walking stick with a flash at the curved handle.
%    \begin{macrocode}
cmchar "Linear B sign me";
beginglyph("M",0.8);
numeric alpha; alpha:=2/3;
x1=x2=midloc; y1=0; y2=alpha*h;            % right vertical and curve
x4=leftloc; x3=0.5[x4,x1]; y4=y3=h;
x5=x3; y5=y2;                              % cross 
path p[];                                  % right jiggle
p1=z1--z2{up}..{left}z3--z4;
z6 = point 1.33 of p1;
x9=rightloc; y9=y2;
z8=1/3[z2,z9];
x7=0.5[x2,x9]; y7=y6;
draw p1;                                   % vertical and curve
draw z2--z5--z3;                           % cross
draw z6--z7--z8--z9;                       % jiggle
labels(1,2,3,4,5,6,7,8,9);
endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{mi}
%    The sign \textit{mi}. A bit like a V.
%    \begin{macrocode}
cmchar "Linear B sign mi";
beginglyph("y",0.8);
numeric alpha; alpha:=small;
x1=leftloc; x2=x1+alpha; x3=x4=x1+2alpha;   % left half
y1=y3=h-alpha; y2=h; y4=0;
x7=rightloc; y7=h;                          % right half
x6=x7-alpha; y6=y7-alpha;
x5=x7; y5=y6-alpha;
draw z1..z2..z3---z4;                       % left half
draw z4{up}..{(1,1)}z5--z6--z7;             % right half
labels(1,2,3,4,5,6,7,8,9);
endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{mo}
%    The sign \textit{mo}, having a vague resemblance to a shepherd's crook.
% \jurgen{} gives a different sign looking like a reflected epsilon by a kinked
% stem.
% \begin{verbatim} 
cmchar "Linear B sign mo (initial)";
% beginglyph("A",0.8);
% numeric alpha; alpha:=small;
% x1=x2=x4=midloc; y1=0; y2=0.65h; y4=h;  % shepherds crook
% x3=rightloc; y3=0.5[y2,y4];
% x5=leftloc; y5=0.5[y2,y3];
% path p;
% p = z5..z4{right}..z3{down}..z2--z1;
% z6 = point 0.3 of p;                    % lines
% z8 = point 0.6 of p;
% z7=z6 shifted (alpha*(-1,1));
% z9=z8 shifted (alpha*(-1,1));
% draw p;
% draw z6--z7; draw z8--z9;
% labels(1,2,3,4,5,6,7,8,9);
% endchar;
% \end{verbatim}
%
%    \begin{macrocode}
cmchar "Linear B sign mo";
beginglyph("A",0.6);
numeric alpha; alpha:=small;
numeric rad;   rad:=0.15h;
numeric beta; beta:=0.2h; % e radius
numeric gam; gam:=1.5;    % the tension
x3=rightloc;                           % stem points
x1=x2=x4=x5=x0=x3-0.75rad;
y1=0; y5=h; y0=h-rad-alpha;
y2=y0-rad; y4=y0+rad; y3=y0;
x7-x0 = x0-x3; y7=y0;                 % midpoint of e arc perimeter
z9'=z7 shifted (beta*left); z9=z9' shifted (tiny*up);
z6'=z9 shifted (beta*down); z6=z6' shifted (tiny*left);
z8'=z9 shifted (beta*up);   z8=z8' shifted (tiny*right);
%%draw z1..tension gam..z2..tension gam..z3..tension gam..z4..tension gam..z5;
%%draw z1---z2..tension gam..z3..tension gam..z4---z5;
draw z1--z2{up}..z3..{up}z4--z5;
draw z7--z9;       % the e
draw z6..z7..z8;
labels(0,1,2,3,4,5,6,7,8,9); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{mu}
%    The sign \textit{mu}. 
%    \begin{macrocode}
cmchar "Linear B sign mu";
beginglyph("B",0.8);
numeric rad; rad:=small;
x1=x2=leftloc+2rad; y1=0; y2=h-rad;     % stem
x3=x5=leftloc+rad; y3=h; y5=y3-2rad;
x4=leftloc; y4=y2;
x6=x8=rightloc; y6=y5; y8=y3;            % bar and curve
x7=x6-rad; y7=0.5[y6,y8];
x9=x7-1/2rad; y9=y6;
x10=x9; y10=y9-2rad;
draw z1--z2{up}..z3{left}..z4{down}..{right}z5--z6;  % stem and bar
draw z6{left}..z7{up}..{right}z8;                    % curve
draw z9--z10;
labels(1,2,3,4,5,6,7,8,9,10);
endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{na}
% The sign \textit{na}. Sort of semi-mirrored version of \textit{jo} (i.e.,
% an angled top bar on a kinked stem).
% \jurgen{} instead draws it as a Y with two bars on top.
% \begin{verbatim} 
cmchar "Linear B sign na (original)";
% beginglyph("n",0.4);
% x1=x2=midloc; y1=0;                      % center points
% x6=leftloc; y6=h-tiny; x7=rightloc; y7=h;   % crossbar
% z5=0.5[z6,z7];
% y4=y5-small; y2=y4-small; x4=x2+small;
% x3=0.5[x2,x6]; y3=0.5[y2,y4];
% z8'= z6 shifted (tiny*down); z9'= z7 shifted (tiny*down);
% z8 =0.45[z8',z9']; z9=0.55[z8',z9'];
% draw z6--z7;                                % crossbar
% draw z1--z2; draw z2{left}..z3..{right}z4;  % stem
% draw z8--z9;                                % little bar
% labels(1,2,3,4,5,6,7,8); endchar;
% \end{verbatim}
%
%    \begin{macrocode}
cmchar "Linear B sign na";
beginglyph("n",0.4);
numeric alpha; alpha:=(rightloc-leftloc);
x1=leftloc; x3=rightloc; y1=y3=2/3h;     % top of Y
x2=x4=midloc; y4=0; y2=2/3[y4,y1];       % leg of Y
x5=x6=midloc; y6=h; y5=0.5[y1,y6];       % dash centers
draw z1--z2--z3; draw z4--z2;              % Y
draw_hdash(5,alpha); draw_hdash(6,alpha);  % crossbars
labels(1,2,3,4,5,6); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{ne}
%    The sign \textit{ne}. A bit like a telegraph pole. \jurgen{} suggested
% shortening the top bar.
%    \begin{macrocode}
cmchar "Linear B sign ne";
beginglyph("N",1.0);
numeric rad; 
x1=x2=x3=midloc; y1=0; y2=h; y3=2/3[y1,y2];     % stem
rad:=0.2*(y2-y3);                              % circle radius
x6=leftloc; y6=y16=y3+4rad; x16=rightloc;      % curvey bar
x7=x6+rad; x15=x16-rad; y7=y15=y6;
x8=x9=x7+rad; x14=x13=x15-rad; y8=y14=y7-rad; y9=y13=y3+rad;
x10=x9+rad; x12=x13-rad; y10=y12=y3;
z0l=(x10,y9); z0r=(x12,y13);                    % circle centers
%%x4=x0l; x5=x0r; y4=y5=y2;                       % top bar
x4=0.25[x0l,x2]; x5=0.25[x0r,x2]; y4=y5=y2;       % top bar
draw z1--z2;                     % stem
draw z4--z5;                     % top bar
draw z6..z8..{down}z9; draw z10--z12; draw z13{up}..z14..z16; 
draw fullcircle scaled (2rad) shifted z0l;
draw fullcircle scaled (2rad) shifted z0r;
labels(0l,0r,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{ni}
%    The sign \textit{ni}. A curved V with dashes near the top.
%    \begin{macrocode}
cmchar "Linear B sign ni";
beginglyph("C",0.6);
numeric alpha, beta;
alpha:=0.2; beta:=tiny;
x1=leftloc; x2=midloc; x3=rightloc; y1=y3=h; y2=0;  % V
path p[];
p1=z1{(1,-1)}...{down}z2;
p2=z3{(-1,-1)}...{down}z2;
z5 = point alpha of p1; 
z8 = point alpha of p2;
z4=z5 shifted (beta*(-1,-1)); z6=z5 shifted (beta*(1,1));
z7=z8 shifted (beta*(-1,1)); z9=z8 shifted (beta*(1,-1));
draw p1; draw p2;           % V
draw z4--z6; draw z7--z9;   % dashes
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{no}
%    The sign \textit{no}. 
%    \begin{macrocode}
cmchar "Linear B sign no";
beginglyph("E",1.0);
numeric alpha, beta;
alpha:=small; beta:=tiny;
x1=x2=leftloc; y1=h; x3=x2+alpha; y3=1/3h; y2=y3+alpha;  % curves
x4=x5-alpha; y4=y3; x5=rightloc; y5=y4+alpha;
x6=x4; x9=x5; 
y6=y5+alpha; y7=y6+alpha/2; y8=y9=y7+alpha/2;
x7=x6-alpha/2; x8=0.5[x7,x9];
x10=x11=1/4[x2,x7];             % toast rack
x12=x13=1/2[x2,x7];
x14=x15=3/4[x2,x7];
y10=y12=y14=y3;
y11=y13=y15=y1;
x16=x10; x17=x14; y16=y17=0;    % legs
draw z1---z2{down}..{right}z3---z4{right}..z5..z6..z7..z8--z9;
draw z10--z11;         % toast rack
draw z12--z13;
draw z14--z15;
draw z16--z12--z17;    % legs
labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{nu}
%    The sign \textit{nu}. Two semicircles within two uprights.
%    \begin{macrocode}
cmchar "Linear B sign nu";
beginglyph("F",0.6);
numeric alpha, beta;
alpha:=0.2*(rightloc-leftloc);
beta:=small;
x1=x2=leftloc; x3=x4=rightloc; y1=y3=0; y2=y4=h;  % uprights
x9=x6=midloc; x5=x8=x6-alpha; x10=x7=x6+alpha;    % curves
y8=y10=h/2 - beta; y5=y7=h/2 + beta;
y6=y5+3/2alpha; y9=y8-3/2alpha;
draw z1--z2; draw z3--z4;                         % uprights
draw z5{up}..z6..{down}z7;                        % curves
draw z8{down}..z9..{up}z10;
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{pa}
%    The sign \textit{pa}. Like a Lorraine cross. \jurgen{} drew this with
% the crossbars equidistant from the center.
%    \begin{macrocode}
cmchar "Linear B sign pa";
beginglyph("p",0.4);
x1=x2=midloc; y1=0; y2=h;  % stem
x3=x5=leftloc;             % crossbars
%%y3=0.7h; y5=0.85h; 
y3=0.375h; y5=0.625h; 
x4=x6=rightloc; y4=y3; y6=y5;
draw z1--z2;               % stem
draw z3--z4; draw z5--z6;  % cross bars
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{pe}
%    The sign \textit{pe}. 
%    \begin{macrocode}
cmchar "Linear B sign pe";
beginglyph("P",0.4);
numeric alpha, beta; alpha:=0.2;
x1=x2=leftloc; y1=0; y2=h;  % stem
x3=x4=rightloc; y3=alpha[y1,y2]; y4=(1-alpha)[y1,y2];
x6=0.5[x1,x3]; y6=h/2;
beta:=0.5*(x6-x1);
x5=x7=x1; y7=y6+beta; y5=y6-beta;
draw z3--z1--z2--z4;
draw z5..z6..z7;
labels(1,2,3,4,5,6,7); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{pi}
%    The sign \textit{pi}. A triangle with a vertical divider and a crossbar
% near the apex.
%    \begin{macrocode}
cmchar "Linear B sign pi";
beginglyph("G",0.6);
x1=x6=leftloc; x3=x7=rightloc; x4=midloc;       % base points
y1=y3=y4=0;
x2=midloc; y2=h;               % apex
y6=y7=0.65h;                    % upper bar
draw z1--z2--z3--cycle;        % the main triangle
draw z2--z4;                   % vertical bisector
draw z6--z7;                   % upper bar
labels(1,2,3,4,5,6,7);
endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{po}
%    The sign \textit{po}. \jurgen{} drew an upright and more angular version of
% my original.
% \begin{verbatim} 
% cmchar "Linear B sign po (original)";
% beginglyph("H",0.6);
% x4=leftloc; y4=h/3; x7=x4+small; y7=h;  % LHS
% z5=1/3[z4,z7]; z6=2/3[z4,z7];
% x3=rightloc; y3=h;      % RHS
% x2=x3-small; y2=y5;
% x1=midloc; y1=0;
% draw z4--z7;                   % LHS
% draw z1--z2--z5; draw z6--z3;  % RHS
% labels(1,2,3,4,5,6,7); endchar;
% \end{verbatim}
%
%    \begin{macrocode}
cmchar "Linear B sign po";
beginglyph("H",0.6);
x1=x2=leftloc; y1=h; y2=h/2;        % LHS
x3=x4=rightloc; y3=y2; y4=0;        % RHS
z5=0.5[z1,z2]; x6=rightloc; y6=y5;  % bar
draw z1--z2--z3--z4;                % h shape
draw z5--z6;                        % bar
labels(1,2,3,4,5,6,7);
endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{pu}
%    The sign \textit{pu}. An elephant with three legs and raised trunk.
%    \begin{macrocode}
cmchar "Linear B sign pu";
beginglyph("I",0.6);
numeric rad; rad:=small;
x1=leftloc; y1=0;                              % bottom left
x8=rightloc; y9=h; y8=y9-rad; x9=x8-rad;       % curl at top right
x7=x9; y7=y8-rad;
y2=y7-rad; x2=x1+rad;
path p[];
p1=z1{up}..z2..{right}z7..{up}z8..{left}z9;
x5=x6=x7; y6=0; y5=y7;
x4=0.5[x1,x6]; y4=0;
z4'=z4 shifted (h*up);
z3 = (z4--z4') intersectionpoint p1;
draw p1;
draw z4--z3; draw z6--z5;
labels(1,2,3,4,5,6,7,8,9);
endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{qa}
%    The sign \textit{qa}. A circle with ears, on a stem.
%    \begin{macrocode}
cmchar "Linear B sign qa";
beginglyph("q",0.8);
numeric alpha; alpha:=0.2*(rightloc-leftloc);
numeric rad;   rad:=0.3*(rightloc-leftloc);
x0=midloc; y0=h-rad;                  % circle center
x1=x2=x5=x0;                          % mid vertical points
y1=0; y2=y0-rad; y5=y0+rad;
y3=y6=y0;                             % mid horizontal points
x3=x0-rad; x6=x0+rad; 
path p[];                             % ears
p1=z2{left}..z3{up}..{right}z5;
p2=z5{right}..z6{down}..{left}z2;
x7'=leftloc; y7'=y3-0.5rad; x11'=rightloc; y11'=y7';
p3=z7'--z11';
z7= p3 intersectionpoint p1;
z11= p3 intersectionpoint p2;
x8=leftloc; y8=0.5[y3,y7]; 
x10=rightloc; y10=y8;
draw p1; draw p2;                     % circle
draw z1--z2;                          % stem
draw z3..z8..z7; draw z6..z10..z11;   % ears
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{qe}
%    The sign \textit{qe}. A circle with 4 interior dashes.
%    \begin{macrocode}
cmchar "Linear B sign qe";
beginglyph("Q",0.8);
numeric alpha, beta; 
numeric rad;   rad:=0.5*(rightloc-leftloc);
alpha:=0.3rad;
beta:= small;
x0=midloc; y0=h/2;                    % circle center
x1=x2=x5=x0;                          % mid vertical points
y1=0; y2=y0-rad; y5=y0+rad;
y3=y6=y0;                             % mid horizontal points
x3=x0-rad; x6=x0+rad; 

z10'=z0 shifted (alpha*(1,1)); 
z11'=z0 shifted (alpha*(1,-1)); 
z12'=z0 shifted (alpha*(-1,-1)); 
z13'=z0 shifted (alpha*(-1,1)); 
draw fullcircle scaled (2rad) shifted z0;
draw_hdash(10',beta); draw_hdash(11',beta); draw_hdash(12',beta); draw_hdash(13',beta);
labels(1,2,3,4,5,6,7,8,9,10,10',11,11',12,12',13,13'); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{qi}
%    The sign \textit{qi}. A T with an additional wavy line under the crossbar.
%    \begin{macrocode}
cmchar "Linear B sign qi";
beginglyph("X",0.8);
numeric alpha, beta;
alpha:=small;
beta:=medium;
x1=leftloc; x2=rightloc-alpha; y1=y2=h;      % top bar
x3=0.25[x1,x2]; y3=y1;                       % wave
x4=0.25[x3,x2]; y4=y3-beta;
x6=rightloc; y6=y3-0.5beta;
x7=0.8[x1,x2]; y7=y1;                        % stem
x8=x7; y8=0;
draw z1--z2;                                 % top bar
draw z8--z7;                                 % stem
draw z3..z4{right}..z2{right}..z6;           % wave
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{qo}
%    The sign \textit{qo}. Vertically symmetric with the right half like an
% L on top of the right half of a T.
%    \begin{macrocode}
cmchar "Linear B sign qo";
beginglyph("8",0.6);
numeric alpha, beta;
alpha:=small;
beta:=small;
x1=x2=midloc; y1=0; y2=h/2;   % stem
x5=leftloc; x8=rightloc;      % the Ls
y5=y6=y9=y8=3/4h; y7=y10=h;
x6=x7=1/3[x5,x8]; x9=x10=2/3[x5,x8];
x3=0.5[x5,x6]; x4=0.5[x8,x9]; y3=y4=0.5[y2,y5]; % bar
draw z1--z2;      % stem
draw z3--z4;      % bar
draw z5--z6--z7;  % left L
draw z8--z9--z10; % right L
labels(1,2,3,4,5,6,7,8,9,10); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{ra}
%    The sign \textit{ra}. Like an `L' with a kerned c.
%    \begin{macrocode}
cmchar "Linear B sign ra";
beginglyph("r",0.6);
x1=x2=leftloc; y1=h; y2=0;  x3=rightloc; y3=y2;  % the L
x4=x6=x3; y4=y3+small; y6=y4+large;               % the c
x5=x4-0.5*(y6-y4); y5=0.5[y4,y6];
draw z1--z2--z3;                    % L
draw z4{left}..z5{up}..{right}z6;   % c
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{re}
%    The sign \textit{re}. Like a Greek \textit{psi}.
%    \begin{macrocode}
cmchar "Linear B sign re";
beginglyph("R",0.6);
numeric rad;
x1=x2=x4=midloc; y1=h; y2=0;       % stem
rad = 0.5*(rightloc-leftloc);
x3=leftloc; y3=y5=h; x5=rightloc; y4=y3-rad;
draw z1--z2;          % stem
draw z3..z4..z5;      % bowl
labels(1,2,3,4,5); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{ri}
%    The sign \textit{ri}, sort of like a box on legs. \jurgen's rendition
% is more like a pawn with a wsip of hair.
% \begin{verbatim} 
% cmchar "Linear B sign ri (original)";
% beginglyph("O",0.8);
% numeric rad;
% x1=leftloc; x2=rightloc; y1=y2=0.2h;   % horizontal
% x3=leftloc; y3=0;                      % left verticals
% x4=x5=1/3[x1,x2]; y4=y1; y5=0.8h;
% x6=rightloc; y6=0;                     % right verticals
% x7=x8=2/3[x1,x2]; y7=y4; y8=y5;
% x11=x5; y11=h;                         % top curve
% draw z1--z2;                           % horizontal
% draw z3--z4--z5--z8--z7--z6;           % box and legs
% draw z8{up}..{left}z11;                 % top curve
% labels(1,2,3,4,5,6,7,8,9,10,11); endchar;
% \end{verbatim}
%
%    \begin{macrocode}
cmchar "Linear B sign ri";
beginglyph("O",0.4);   %% was 0.6
numeric beta; beta:=small;
x1=leftloc; x3=rightloc; y1=y3=0.55h;   % horizontal
x4=0.1[x1,x3]; x5=0.1[x3,x1]; y4=y5=0; % legs
z2=0.5[z1,z3];
x14=x12=midloc; y14=h;                 % head
y12=0.75[y2,y14];
x11=0.3[x1,x2]; y11=2/3[y2,y12];
z13=z11 reflectedabout (z2,z12);
x15=x14-beta; y15=y14; %% y15=y14-0.5beta;
draw z1--z3;                 % horizontal
draw z4--z2--z5;             % base
draw z2..z13..{left}z12; draw z2..z11..{right}z12; % head
draw z2..z13..z14..z15;      % hair
labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{ro}
%    The sign \textit{ro}. A cross.
%    \begin{macrocode}
cmchar "Linear B sign ro";
beginglyph("U",0.6);
x1=x2=midloc; y1=0; y2=h;
x3=leftloc; x4=rightloc; y3=y4=0.6h;
draw z1--z2; draw z3--z4;
labels(1,2,3,4); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{ru}
%    The sign \textit{ru}. A bit like a tulip.
%    \begin{macrocode}
cmchar "Linear B sign ru";
beginglyph("V",0.6);
x1=x2=midloc; y1=0; y2=0.75h;
x5=leftloc; x6=rightloc; 
x3=0.25[x5,x6]; x4=0.75[x5,x6]; y3=y4=h;
x7=x3; x8=x4; y7=y8=y2-0.1h;
y5=y6=0.5[y7,y3];
draw z1--z2;      % stem
draw z2{down}..z7{left}..z5{up}..z3;   % left petal
draw z2{down}..z8{right}..z6{up}..z4;  % right petal
labels(1,2,3,4); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{sa}
%    The sign \textit{sa}. A Y with a dash on each arm.
%    \begin{macrocode}
cmchar "Linear B sign sa";
beginglyph("s",0.6);
x1=midloc; y1=0; 
x3=leftloc; x4=rightloc; y3=y4=h;
z3' = z3 shifted (w*(1,-1)); z4' = z4 shifted (w*(-1,-1));
z2= whatever[z3,z3'] = whatever[z4,z4'];
z5=0.5[z2,z3]; z6=0.5[z2,z4];
z5'= z5 shifted (w*(-1,-1)); z6'= z6 shifted (w*(1,-1));
z7 = whatever[z5,z5']; x7=x3;
z8 = whatever[z6,z6']; x8=x4;
draw z1--z2;                % stem
draw z3--z2--z4;            % V
draw z5--z7; draw z6--z8;   % 
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{se}
%    The sign \textit{se}. An E rotated 90 degrees on a stem.
%    \begin{macrocode}
cmchar "Linear B sign se";
beginglyph("S",0.6);
x1=x3=x2=leftloc; y1=0; y2=h; y3=2/3[y1,y2];
x4=x5=midloc; x6=x7=rightloc;
y4=y6=y3; y5=y7=y2;
draw z1--z2;               % upright
draw z3--z6;               % horizontal
draw z4--z5; draw z6--z7;  % short uprights
labels(1,2,3,4,5,6,7); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{si}
%    The sign \textit{si}. A bit like a cooling tower.
%    \begin{macrocode}
cmchar "Linear B sign si";
beginglyph("Y",0.6);
numeric alpha; alpha:=small;
x1=leftloc; y1=0; x3=x1+alpha; y3=h-alpha;     % left leg
x4=rightloc; y4=y1; x6=rightloc-alpha; y6=y3;  % right leg
path p[];
p1 = z1..{up}z3; p2 = z4..{up}z6;              % cross bar
z2 = point 2/3 of p1;
z5 = point 2/3 of p2;
x7=x9=midloc; y9=h; y2-y7 = y3-y2;             % vertical
draw p1; draw p2;      % legs
draw z2--z5;           % bar
draw z9--z7;           % vertical
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{so}
%    The sign \textit{so}. A bit like a backwards ? mark with half a cross 
%   at the left. \jurgen's version is a kinked stem with a pi rotated 90 
% degrees. However, I don't see that in any example tablets and it is not
% in Robinson~\cite{ROBINSON02}.
%
%    \begin{macrocode}
cmchar "Linear B sign so";
beginglyph("1",0.6);
numeric alpha, beta; 
alpha:=medium;
beta:=small;
x5=rightloc-alpha; y5=0;       % stem
x8=rightloc; y8=h;
x6=rightloc; y6=y8-2alpha;
x7=x6-alpha; y7=0.5[y6,y8];
x1=x2=x3=leftloc;              % tother part
y2=y7; y1=y2-2alpha; y3=y4=0.5[y1,y2];
%%x4=x7-alpha;
x4=0.5[x7,x2];
draw z5---z6{left}..z7..z8;    % stem
draw z1--z2; draw z3--z4;      % tother
labels(1,2,3,4,5,6,7,8,9); endchar;

%    \end{macrocode}
%
% \begin{verbatim}
% cmchar "Linear B sign so (Jurgen's)";
% beginglyph("1",0.6);
% numeric alpha; alpha:=small;
% numeric rad;   rad:=0.15h;
% numeric gam; gam:=1.5;    % the tension
% x3=rightloc;                           % stem points
% x1=x2=x4=x5=x0=x3-0.75rad;
% y1=0; y5=h; y0=h-rad-alpha;
% y2=y0-rad; y4=y0+rad; y3=y0;
% x6=x7=x8=x9=leftloc; x10=x11=x0-alpha;  % [ points
% y9=y5; y8=y11=y4; y7=y10=y2; y7-y6=y9-y8;
% %%draw z1..tension gam..z2..tension gam..z3..tension gam..z4..tension gam..z5;
% %%draw z1---z2..tension gam..z3..tension gam..z4---z5;
% draw z1--z2{up}..z3..{up}z4--z5;
% draw z6--z9; draw z7--z10; draw z8--z11;
% labels(0,1,2,3,4,5,6,7,8,9,10,11); endchar;
% \end{verbatim}
%
% \end{routine}
%
% \begin{routine}{su}
%    The sign \textit{su}. Like an angular sloping lowercase E, except that
% \jurgen{} showed it upright without the small vertical dash.
% \begin{verbatim} 
% cmchar "Linear B sign su (original)";
% beginglyph("2",0.6);
% numeric alpha;
% alpha:=small;
% x1=leftloc; x3=x1+alpha; y1=y4=0; y3=y7=h;   % rectangle corner points
% x7=rightloc; x4=x7-alpha;
% z2=2/3[z1,z3];
% z6=2/3[z4,z7];
% z5=1/3[z4,z7];
% draw z5--z4--z1--z3--z7--z6--z2;
% labels(1,2,3,4,5,6,7,8,9); endchar;
% \end{verbatim}
% 
%    \begin{macrocode}
cmchar "Linear B sign su";
beginglyph("2",0.6);
numeric alpha;
alpha:=small;
x1=leftloc; x3=x1; y1=y4=0; y3=y7=h;   % rectangle corner points
x7=rightloc; x4=x7;
z2=2/3[z1,z3];
z6=2/3[z4,z7];
z5=1/3[z4,z7];
draw z4--z1--z3--z7--z6--z2;
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{ta}
%    The sign \textit{ta}. Bit like a pi lying on its side.
%    \begin{macrocode}
cmchar "Linear B sign ta";
beginglyph("t",0.6);
x1=x3=leftloc; y1=0; y3=h;     % left upright
x2=x3+small; y2=h/2;
path p[];
p1 = z1..z2{up}..z3;
z4= point 0.5 of p1; z7= point 1.5 of p1;
x6=x5=x8=x9=rightloc;
y5=y4-small; y8=y7+small;
y6=y1; y9=y3;
draw p1;                       % upright
draw z4--z5--z6;               % bottom arm
draw z7--z8--z9;               % top arm
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{te}
%    The sign \textit{te}. Vertical stem with three crossbars.
%    \begin{macrocode}
cmchar "Linear B sign te";
beginglyph("T",0.6);
numeric alpha; alpha:=1/3;
x1=x2=midloc; y1=0; y2=h;     % upright
x3=x4=x5=leftloc; x6=x7=x8=x1-alpha;
x9=x10=x11=x1+alpha; x12=x13=x14=rightloc;
y3=y6=y9=y12=alpha*h;
y5=y8=y11=y14=(1-alpha)*h;
y4=y7=y10=y13=0.5[y3,y5];
draw z1--z2;                                  % stem
draw z3--z6; draw z4--z7; draw z5--z8;        % left dashes
draw z9--z12; draw z10--z13; draw z11--z14;   % right dashes
labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{ti}
%    The sign \textit{ti}. A dome enclosing a vertical dash.
%    \begin{macrocode}
cmchar "Linear B sign ti";
beginglyph("3",0.6);
numeric alpha; alpha:=0.15h;
numeric beta; beta:=1.5;                % for tension
x1=leftloc; x3=rightloc; y1=y3=0;      % base points
x2=midloc; y2=h;                       % top point
x4=x5=x6=midloc; y5=0.5h;
y4=y5-alpha; y6=y5+alpha;
draw z1{up}..tension beta..z2..tension beta..{down}z3;      % curve
draw z4--z6;                           % vertical
labels(1,2,3,4,5,6); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{to}
%    The sign \textit{to}. Like a T but two crossbars.
%    \begin{macrocode}
cmchar "Linear B sign to";
beginglyph("4",0.6);
numeric alpha; alpha:=0.2;
x1=x2=midloc; y1=0; y2=h;             % stem
x3=leftloc; x4=rightloc; y3=y4=y2;    % top bar
x5=alpha[x3,x4]; x6-x2=x2-x5; y5=y6=0.75h;
draw z1--z2;    % stem
draw z3--z4;    % top bar
draw z5--z6;    % middle bar
labels(1,2,3,4,5,6); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{tu}
%    The sign \textit{tu}. Like a heart with a stalk. \jurgen{} has the stalk
% going down to the point of the heart.
%    \begin{macrocode}
cmchar "Linear B sign tu";
beginglyph("5",0.6);
numeric alpha; alpha:=0.1h;
x1=x5=midloc; y1=0;
x3=leftloc; x7=rightloc;
x4=0.25[x3,x7]; x6=0.75[x3,x7];
y4=y6=h-alpha; y3=y7=2/3[y1,y4];
y5=0.5[y3,y4];
x10=x6; y10=h;
draw z1{up}..z3{up}..z4{right}..z5;   % left half
draw z1{up}..z7{up}..z6{left}..z5;    % right half
%%draw z5{up}..z10;                     % stalk (original)
draw z1---z5..z10;                    % stalk (jurgen)
labels(1,2,3,4,5,6,7,8,9,10); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{wa}
%    The sign \textit{wa}. A box on three legs
%    \begin{macrocode}
cmchar "Linear B sign wa";
beginglyph("w",0.6);
x1=x2=x3=leftloc; y1=0; y2=0.67h; y3=h;
x4=x5=midloc; y4=y1; y5=y2;
x6=x7=x8=rightloc;
y6=y1; y7=y2; y8=y3;
draw z2--z3--z8--z7--cycle;  % box
draw z1--z2; draw z4--z5; draw z6--z7;  % legs
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{we}
%    The sign \textit{we}. A reversed `S'.
%    \begin{macrocode}
cmchar "Linear B sign we";
beginglyph("W",0.4);
numeric alpha; alpha:=0.5*(rightloc-leftloc);
x1=x5=leftloc; x6=x4=x2=midloc; x7=x3=rightloc;
y6=0; y5=y7=y6+alpha; y4=h/2; y1=y3=y2-alpha; y2=h;
draw z1..z2..z3..z4..z5..z6..z7;
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{wi}
%    The sign \textit{wi}. A bit like a whale's tooth with a cross at the bottom.
%    \begin{macrocode}
cmchar "Linear B sign wi";
beginglyph("6",0.6);
numeric alpha; alpha:=small;
numeric beta; beta:= 0.15;
x1=leftloc; x3=rightloc; x5=x3-alpha; y1=y5=0; y3=h;  % curves
path p[];
p1=z1{up}..z3; p2=z5{up}..z3;
z2= point beta of p1; z4= point beta of p2;
x6=x7=0.5[x1,x5]; y6=y1; y7-y2=y2;
draw p1; draw p2; draw z1--z5;        % tooth
draw z2--z4; draw z6--z7;             % cross
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{wo}
%    The sign \textit{wo}. Bit like pi with a small 3 tacked at the right of the 
% crossbar.
%    \begin{macrocode}
cmchar "Linear B sign wo";
beginglyph("7",0.6);
numeric alpha; alpha:=small;
numeric beta; beta:= 0.15;
x1=x3=leftloc; x4=rightloc; x2=0.7[x1,x4]; y1=y4=0; y3=y2=h-alpha;
x10=x11=x12=0.5[x2,x4]; x13=x14=rightloc;    % the 3
y12=h; y11=y2; y11-y10=y12-y11;
y14=0.5[y11,y12]; y13=0.5[y10,y11];
draw z1--z2; draw z3--z2{down}..z4;      % main part
draw z10..z13{up}..{left}z11;            % the 3
draw z12..z14{down}..{left}z11;
labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{za}
%    The sign \textit{za}. A circle on a stem with a crossbar at the bottom
% of the circle.
%    \begin{macrocode}
cmchar "Linear B sign za";
beginglyph("z",0.8);
numeric alpha; alpha:=0.2*(rightloc-leftloc);
numeric rad;   rad:=0.3*(rightloc-leftloc);
x0=midloc; y0=h-rad;                  % circle center
x1=x2=x5=x0;                          % mid vertical points
y1=0; y2=y0-rad; y5=y0+rad;
y3=y6=y0;                             % mid horizontal points
x3=x0-rad; x6=x0+rad; 
path p[];             
p1=z2{left}..z3{up}..{right}z5;
p2=z5{right}..z6{down}..{left}z2;
x7=leftloc; y7=y2; x11=rightloc; y11=y7;
p3=z7--z11;
draw p1; draw p2;                     % circle
draw z1--z2;                          % stem
draw p3;                              % horizontal line
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{ze}
%    The sign \textit{ze}. Looks a bit like a fish hook.
%    \begin{macrocode}
cmchar "Linear B sign ze";
beginglyph("Z",0.6);
numeric rad;   rad:=0.5*(rightloc-leftloc);
numeric alpha; alpha:=0.2*(rightloc-leftloc);
numeric beta;
x1=x2=leftloc; y1=h; y2=rad;            % the hook
x3=midloc; y3=0; x4=rightloc; y4=y2;
x5=x7=x1; y7=1/8[y2,y1]; y5=3/4[y2,y1]; % the lure
x6=0.25[x2,x4]; y6=0.5[y7,y5];
x10=x11=x12=x13=0.5[x6,x4];             % and dashes
y10=0.1[y7,y5]; y13=0.9[y7,y5];
y11=1/3[y10,y13]; y12=2/3[y10,y13];
beta:=0.5(x4-x6);
draw z1--z2..z3..z4;                  % hook
draw z5..z6..z7;                      % lure
draw_hdash(10,beta); draw_hdash(11,beta); 
draw_hdash(12,beta); draw_hdash(13,beta);
labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,17); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{zo}
%    The sign \textit{zo}. An upward arrow with a horizontal dash near the bottom.
% \jurgen{} suggested that the dash be a little shorter.
%    \begin{macrocode}
cmchar "Linear B sign zo";
beginglyph("9",0.6);
x1=x2=midloc; y1=0; y2=h;      % stem
x5=leftloc; x6=rightloc; y5=y6=3/4h;
%%x3=leftloc; x4=rightloc; y3=y4=1/4h;  % bar (original)
x3=0.2[x5,x6]; x4=0.2[x6,x5]; y3=y4=1/4h;  % bar (jurgen)
draw z1--z2;      % stem
draw z3--z4;      % bar
draw z5--z2--z6;  % roof
labels(1,2,3,4,5,6); endchar;
 
%    \end{macrocode}
% \end{routine}
%
%
% \subsection{Unidentified glyphs}
%
%    There are 11 glyphs whose meanings have not yet been identified.
% I will put these at the start of the encoding, where the upper case Greek
% characters (there are 11 of them) normally reside.
% \changes{v1.2}{2005/06/22}{Reordered the unknown glyphs}
%
% \begin{routine}{unkown 1}
%    The 1st unknown character. A bit like a stick figure of a man with
% spiky hair.
%    \begin{macrocode}
cmchar "Linear B unknown 1";
beginglyph(oct"035", 0.6);
numeric alpha; alpha:=0.2*(rightloc-leftloc);
numeric rad;   rad:=0.3*(rightloc-leftloc);
numeric hair;  hair:=0.1h;
x0=midloc; y0=h-rad-hair;             % circle center
x1=x2=x5=x0;                          % mid vertical points
y1=0; y2=y0-rad; y5=y0+rad;
y3=y6=y0;                             % mid horizontal points
x3=x0-rad; x6=x0+rad; 
path p[];             
p1=z5{left}..z3{down}..{right}z2;
p2=z5{right}..z6{down}..{left}z2;
x7=leftloc; y7=y2; x11=rightloc; y11=y7;
p3=z7--z11;
% for the the hair lines
x25=x5; y25=h;
z16= point 1/3 of p1; z17= point 1/3 of p2;
z26'=z16 shifted (w*(-1,2)); z27'=z17 shifted (w*(1,2));
y26=y27=h; 
z26=whatever[z16,z26']; z27=whatever[z17,z27'];
draw p1; draw p2;                     % circle
draw z1--z2;                          % stem
draw p3;                              % horizontal line
draw z16--z26; draw z5--z25; draw z17--z27;  % hairs
labels(1,2,3,4,5,6,15,16,17,25,26,27); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{unknown 2}
%    The 2nd unknown character. A bit like a chess pawn.
%    \begin{macrocode}
cmchar "Linear B unknown 2";
beginglyph(oct"036", 0.6);
numeric alpha; alpha:=0.2*(rightloc-leftloc);
x1=leftloc; x2=rightloc; y1=y2=0;     % base points
x3=leftloc; x4=midloc; x5=rightloc; y3=y4=y5=h/2;  % middle points
x8=x4;y8=h;                           % top point
x6=leftloc+alpha; x7=rightloc-alpha; y6=y7=0.5[y4,y8];
draw z1--z2--z4--cycle;               % bottom triangle
draw z3--z5;                          % horizontal bar
draw z4{left}..z6{up}..z8{right}..z7{down}..cycle;  % head
labels(1,2,3,4,5,6,7,8); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{unknown 3}
%    The 3rd unknown character, like a T with a wavy top bar. 
%    \begin{macrocode}
cmchar "Linear B unknown 3";
beginglyph(oct"037", 0.8);
numeric alpha; alpha:=0.2h;
x3=leftloc; x4=rightloc; x1=x2=2/3[x3,x4]; 
y1=0; y3=y2=y4=h-alpha;
x6=0.5[x3,x2]; y6=h;
x7=0.5[x2,x4]; y7=h;
draw z1--z2;                   % stem
draw z3..z6{right}..z2;        % left bar
draw z2..z7{right}..z4;        % right bar
labels(1,2,3,4,5,6,7,8); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{unknown 4}
%    The 4th unknown character. A bow with a circle.
%    \begin{macrocode}
cmchar "Linear B unknown 4";
beginglyph(oct"040", 0.6);
numeric rad; rad:=1/3*(rightloc-leftloc);
x1=rightloc; y1=0; 
x3=rightloc; y3=h;
x2=leftloc+rad; y2=0.5[y1,y3];
draw z1..z2{up}..z3;
draw fullcircle scaled (2rad) shifted z2;
labels(1,2,3,4,5,6,7,8); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{unknown 5}
%    Suggested by \jurgen. A mirror image of the bow with circle.
%    \begin{macrocode}
cmchar "Linear B unknown 5";
beginglyph(oct"041", 0.6);
numeric rad; rad:=1/3*(rightloc-leftloc);
x1=leftloc; y1=0; 
x3=leftloc; y3=h;
x2=rightloc-rad; y2=0.5[y1,y3];
draw z1..z2{up}..z3;
draw fullcircle scaled (2rad) shifted z2;
labels(1,2,3,4,5,6,7,8); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{unknown 6}
%    The 6th unknown character. Two intersecting curves with a square
% around the intersection.
%    \begin{macrocode}
cmchar "Linear B unknown 6";
beginglyph(oct"042", 0.6);
numeric alpha; 
x1=x4=leftloc; x3=x2=rightloc; y1=y3=0; y2=y4=h;  % leg points
path p[];
p1=z1{up}..z2; p2=z3{up}..z4;
z0 = p1 intersectionpoint p2;
%%alpha:=0.5*(x0-x4);
alpha:=0.75*(x0-x4);
x5=x0-alpha; x7=x0+alpha; y5=y7=y0;
x6=x8=x0; y8=y0-alpha; y6=y0+alpha;
draw p1; draw p2;            % the legs
draw z5--z6--z7--z8--cycle;  % the square
labels(1,2,3,4,5,6,7,8); endchar;

%    \end{macrocode}
% \end{routine}
%
%
% \begin{routine}{unknown 7}
%    The 7th unknown character. Like a sketch of a bird, and three legs.
%    \begin{macrocode}
cmchar "Linear B unknown 7";
beginglyph(oct"043", 0.8);
numeric alpha; alpha:=0.1h;
numeric beta; beta:=0.1;
numeric gamma; gamma:=0.15*(rightloc-leftloc);
x1=leftloc; x5=rightloc; y1=y5=(h-alpha);           % bird wings
x3=0.5[x1,x5]; y3=y1;
x2=0.5[x1,x3]; x4=0.5[x3,x5]; y2=y4=h;
x12=x2; y12=y2; x15=x3; y15=y3; x18=x4; y18=y4;           % top of legs
x10=leftloc+0.5gamma; x13=midloc; x16=rightloc-0.5gamma;  % bottom of legs
y10=y13=y16=0;
z11=beta[z10,z12]; z14=beta[z13,z15]; z17=beta[z16,z18]; % dash points
draw z1..z2..z3; draw z3..z4..z5;                   % wings
draw z10--z12; draw z13--z15; draw z16--z18;        % legs
draw_hdash(10,gamma); draw_hdash(11,gamma);         % dashes
draw_hdash(13,gamma); draw_hdash(14,gamma); 
draw_hdash(16,gamma); draw_hdash(17,gamma); 
labels(1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{unknown 8}
%    The 8th unknown character. A bit like castle battlements.
%    \begin{macrocode}
cmchar "Linear B unknown 8";
beginglyph(oct"044", 1.0);
numeric alpha; alpha:=0.1h;
numeric beta,gamma; 
x1=x2=x3=leftloc; y1=0; y3=h; y2=(h-alpha);         % left upright
x14=rightloc; y14=h;                                % rightmost point
x9=x11=x12=4/5[x1,x14]; y9=y1; y11=(y2-2alpha); y12=y2;   % right upright
x13=0.5[x12,x14]; y13=y14;
x4=x6=x7=x8=0.5[x1,x9]; y4=y1; y6=y11; y7=y2; y8=y3; % middle upright
x5=0.75[x1,x4]; x10=0.75[x4,x9]; y5=y10=0.25[y9,y11];  % dashes
beta:=0.5*(x4-x1);                  % dash length
gamma:=0.55;                        % zigzag overlap
x2'=gamma[x2,x6]; y2'=y2; x6'=gamma[x6,x2]; y6'=y6;
x7'=gamma[x7,x11]; y7'=y7; x11'=gamma[x11,x7]; y11'=y11;
draw z1--z9;                        % base line
draw z1--z3; draw z4--z8;           % uprights
draw z9--z12{up}..{right}z13--z14;
draw_hdash(5,beta); draw_hdash(10,beta);  % dashes
draw z2---z2'{right}..{right}z6'---z6;    % left zigzag
draw z7---z7'{right}..{right}z11'---z11;  % right zigzag
labels(1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{unknown 9}
%    The 9th unknown character.  Like a paramecium.
%    \begin{macrocode}
cmchar "Linear B unknown 9";
beginglyph(oct"045", 0.8);
numeric majrad,minrad;      % major and minor ellipse radii
numeric alpha; 
numeric beta,gamma; 
x0=0.5[leftloc,rightloc]; y0=h/2;                      % center of ellipse
majrad:=0.5*(rightloc-leftloc); minrad:=0.5majrad;
z1=z0 shifted (majrad*NW); z3=z0 shifted (majrad*SE);  % ellipse points
z2=z0 shifted (minrad*NE);  z4=z0 shifted (minrad*SW);
path p[];
p1=z1..z2..z3..z4..cycle;
alpha:=0.4minrad;
z1'=z1 shifted (alpha*NW); z3'=z3 shifted (alpha*SE); % expanded ellipse points
z2'=z2 shifted (alpha*NE); z4'=z4 shifted (alpha*SW);
p2= z1'..z2'..z3'..z4'..cycle;
p3= z1'..z4'..z3'..z2'..cycle;
gamma:=0.15;    % half the dash skip
z14=point (1-3gamma) of p2; z24=point (1-3gamma) of p3;
z15=point (1-gamma)  of p2; z25=point (1-gamma)  of p3;
z16=point (1+gamma)  of p2; z26=point (1+gamma)  of p3;
z17=point (1+3gamma) of p2; z27=point (1+3gamma) of p3;
beta:=0.5tiny;
z14''= z14 shifted (beta*SE); z14'=z14 shifted (beta*NW);
z24''= z24 shifted (beta*SE); z24'=z24 shifted (beta*NW);
z15''= z15 shifted (beta*SE); z15'=z15 shifted (beta*NW);
z25''= z25 shifted (beta*SE); z25'=z25 shifted (beta*NW);
z16''= z16 shifted (beta*SE); z16'=z16 shifted (beta*NW);
z26''= z26 shifted (beta*SE); z26'=z26 shifted (beta*NW);
z17''= z17 shifted (beta*SE); z17'=z17 shifted (beta*NW);
z27''= z27 shifted (beta*SE); z27'=z27 shifted (beta*NW);
draw p1;                                  % the ellipse
draw z14'--z14''; draw z24'--z24'';       % the dashes
draw z15'--z15''; draw z25'--z25'';
draw z16'--z16''; draw z26'--z26'';
draw z17'--z17''; draw z27'--z27'';
labels(0,1,1',2,2',3,3',4,4',5,6,7,8,10,11,12,13,14,15,16,17,24,25,26,27); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{unknown 10}
%    The 10th unknown character.  Like a dome with a weathervane on top.
% \jurgen{} changes the weather vane to a line with curls at each end.
% \begin{verbatim}
% cmchar "Linear B unknown 10 (original)";
% beginglyph(oct"046", 0.8);
% x1=leftloc; x7=rightloc; y1=y7=0;         % outside base points
% x4=midloc; y4=2/3h;
% z8=0.15[z1,z7]; z9=0.85[z1,z7];
% x3=x8; x5=x9; y3=y5=y4-small;
% x10=x4; y10=2/3[y4,h];                             % weathervane
% x11=x8; x12=x9; y11=y12=y10;
% z15=0.75[z10,z12];
% numeric beta; beta:=(h-y10);
% z13=z11 shifted (beta*SE); z14=z11 shifted (beta*NE); % arrow
% draw z1{up}..z3..z4{right}..z5..{down}z7;          % dome
% draw z8--z3; draw z9--z5;
% draw z4--z10;                                      % weathervane support
% draw z11--z12;                                     % arrow shaft
% draw z13--z11--z14;                                % arrow head
% draw_vdash(15,2beta); draw_vdash(12,2beta);        % feathers
% labels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,24,25,26,27); endchar;
% \end{verbatim}
% 
%    \begin{macrocode}
cmchar "Linear B unknown 10";
beginglyph(oct"046", 0.8);
numeric rad; rad:=1/16h;
x1=leftloc; x7=rightloc; y1=y7=0;                % dome outside base points
x4=midloc; y4=h-6rad;                            % center top
z8=0.15[z1,z7]; z9=0.85[z1,z7];                  % internal uprights
x3=x8; x5=x9; y3=y5=y4-small;
x22=x4; y22=h-2rad;                              % stem
x24=x26=x8; y24=y22+rad; y26=y22-rad;            % left curls
x23=x25=x27=x24+rad; y23=y24+rad; y25=y22; y27=y26-rad;
z13=z23 reflectedabout (z4,z22);                 % right curls
z14=z24 reflectedabout (z4,z22);
z15=z25 reflectedabout (z4,z22);
z16=z26 reflectedabout (z4,z22);
z17=z27 reflectedabout (z4,z22);
draw z1{up}..z3..z4{right}..z5..{down}z7;    % dome
draw z8--z3; draw z9--z5;                    % internal uprights
draw z4--z22;                                % stem
draw z25--z15;                               % crossbar
draw z23..z24..z25; draw z25..z26..z27;      % left curls
draw z13..z14..z15; draw z15..z16..z17;      % right curls
labels(1,2,3,4,5,6,7,8,9,13,14,15,16,17,22,23,24,25,26,27); endchar;


%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{unknown 11}
%    The 11th unknown character.  Like a scythe.
%    \begin{macrocode}
cmchar "Linear B unknown 11";
beginglyph(oct"047", 0.8);
x1=x5=x2=leftloc; y1=0; y2=h; y5= 0.2h;   % vertical handle
x7=rightloc; y7-y5 = y5-y1;                    % rightmost point
x4=0.9[x1,x7]; y7-y4=0.5(y5-y1);
x3=x6=0.5[x1,x7]; y3-y1 = 0.25(y4-y1); y6-y3=y5-y1;
draw z1--z2;                           % handle
draw z1{right}..z3..z4; draw z4--z7;   % the blade
draw z5{right}..z6..z7;
draw z3--z6;
labels(1,2,3,4,5,6,7); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{unknown 12}
%    The last unknown character. Like a capital letter B. \jurgen{} suggested
% that it should be narrower, and also said that it was the \textit{twe} sign.
%    \begin{macrocode}
cmchar "Linear B unknown 12 (or twe)";
beginglyph(oct"177", 0.35);
numeric beta; beta:=2.0;  % tension
x1=x3=leftloc; y1=0; y3=h; z2=0.5[z1,z3];   % upright
x4=x5=rightloc;
y4=0.5[y1,y2];
y5=0.5[y2,y3];
draw z1--z3;
%%draw z1..tension beta..z4..tension beta..z2;  % lower bowl
%%draw z2..tension beta..z5..tension beta..z3;  % lower bowl
%%draw z1{right}..z4..{left}z2; 
%%draw z2{right}..z5..{left}z3;
draw z1{(2,1)}..z4..{(-2,1)}z2;
draw z2{(2,1)}..z5..{(-2,1)}z3;
labels(1,2,3,4,5,6,7); endchar;

%    \end{macrocode}
% \end{routine}
%
% \subsection{The optional signs}
%
%    There are 16 optional signs. There is also a word divider.
% Hyphenation was, of course, unknown but it might be useful to
% leave the normal character position for the hyphen (i.e., octal 055)
% empty allowing, perhaps, \TeX{} to perform hyphenation but without
% marking it.
%
% \begin{routine}{,}
%    A word divider coded as a comma. It is a short vertical line above the
% text baseline.
%    \begin{macrocode}
cmchar "Linear B word divider (1)";
beginglyph(",",0.1);
x1=x2=midloc; y1=0.2h; y2=0.4h;
draw z1--z2;
labels(1,2); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{:}
%    A word divider coded as a colon. It is a short vertical line above the
% text baseline.
%    \begin{macrocode}
cmchar "Linear B word divider (2)";
beginglyph(":",0.1);
x1=x2=midloc; y1=0.2h; y2=0.4h;
draw z1--z2;
labels(1,2); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{/}
%    A word divider coded as a forward slash. It is a short vertical line above the
% text baseline.
%    \begin{macrocode}
cmchar "Linear B word divider (3)";
beginglyph("/",0.1);
x1=x2=midloc; y1=0.2h; y2=0.4h;
draw z1--z2;
labels(1,2); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{a2}
%    Optional character \textit{a2}. Like a T with two loops under the crossbar.
%    \begin{macrocode}
cmchar "Linear B optional sign a2";
beginglyph(oct"073",0.8);
x1=x2=midloc; y1=0; y2=h;                          % upright
x3=leftloc; x4=rightloc; y3=y4=y2;                 % crossbar
x5=0.1[x3,x2]; x7=0.6[x3,x2]; y5=y7=y2-tiny;       % left loop
x6=0.5[x5,x7]; y6=y5-small;
z8=z7 reflectedabout (z1,z2);
z9=z6 reflectedabout (z1,z2);
z10=z5 reflectedabout (z1,z2);
draw z1--z2; draw z3--z4;      % stem and crossbar
draw z5..z6..z7;               % loops
draw z8..z9..z10;
labels(1,2,3,4,5,6,7,8,9,10); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{a3}
%    Optional character \textit{a3}. Like a crown on bowed legs.
%    \begin{macrocode}
cmchar "Linear B optional sign a3";
beginglyph(oct"074",0.8);
x5=leftloc; x10=rightloc; y5=y10=h;           % top left & right
x4=0.1[x5,x10]; x9=0.9[x5,x10]; y4=y9=0.75h;  % ends of crossbar
z11=1/3[z4,z9]; z13=2/3[z4,z9];               % vertical dashes
x11=x12; y12=y5; x14=x13; y14=y12;
z3=0.5[z4,z11]; x2=leftloc; y2=0.5[y1,y3];    % left leg
x1=0.5[x2,x3]; y1=0;
z8=0.5[z13,z9]; x7=rightloc; y7=y2;           % right leg
x6=0.5[x8,x7]; y6=0;
x15=x16=midloc; y15=y2; y16=0.5[y15,y4];      % central dash
draw z1..z2{up}..z3;  draw z6..z7{up}..z8;    % legs
draw z4--z9; draw z11--z12; draw z13--z14;    % crown
draw z4{up}..z5; draw z9{up}..z10;
draw z15--z16;                                % central dash
labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{au}
%    Optional character \textit{au}. Like an antelope's head.
%    \begin{macrocode}
cmchar "Linear B optional sign au";
beginglyph(oct"075",0.8);
numeric alpha; alpha:=0.1h;
x1=x2=x3=leftloc+alpha; y1=0; y2=0.33h; y3=h-3alpha;  % neck
x5=leftloc; y5=h-small;                               % bottom of ear
x4=0.5[x5,x3]; y4=0.5[y5,y3] - tiny;
x6=x5+small; y6=h;                                    % top of ear
x8-x6=x3-x5; y6-y8=y5-y3;
x7=0.5[x8,x6]; y7=0.5[y8,y6] + tiny;
x9=x10=rightloc; y10=1/3[y2,y8]; y9=2/3[y2,y8];       % head
x12=x8; y12=y3; x11=0.3[x8,x9]; y11=0.5[y10,y9];      % eye
draw z1--z3;                % neck
draw z3..z4..{up}z5;        % ear
draw z6{right}..z7..z8;
draw z8--z9--z10--z2;       % head
draw z11--z12;              % eye
labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{dwe}
%    Optional character \textit{dwe}. A man with outstretched arms.
%    \begin{macrocode}
cmchar "Linear B optional sign dwe";
beginglyph(oct"076",0.8);
numeric rad; rad:=1/6h;
numeric alpha; alpha:=0.1h;
x1=leftloc; x4=rightloc; x2=x1+rad; x3=x4-rad; % arms
y2=y3=1/3h; y1=y4=y2+rad;
x0=midloc; y0=h-rad;                           % center of head
x5=x0-1/2rad; x7=x0+1/2rad;              % body
y5=y7=0;
x0'=x0-rad; x0''=x0; x0'''=x0+rad;
y0'=y0'''=y0; y0''=y0-rad;
path p;
p=z0'{down}..z0''{right}..{up}z0''';
z5'=z5 shifted (h*up); z7'=z7 shifted (h*up);
z6= (z5--z5') intersectionpoint p;
z8= (z7--z7') intersectionpoint p;
draw fullcircle scaled (2rad) shifted z0;    % head
draw z6--z5--z7--z8;                         % body
draw z1{right}..{down}z2--z3{up}..{right}z4; % arms
labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{dwo}
%    Optional character \textit{dwo}. Two curved posts with dashes between at the
% top. \jurgen{} suggested that the posts be tapered with two 3 between them.
% \begin{verbatim}
% cmchar "Linear B optional sign dwo (original)";
% beginglyph(oct"077",1.0);
% numeric beta; beta:=0.15h;  % dash length
% numeric alpha; alpha:=(rightloc-leftloc);
% x1=leftloc; x9=rightloc; y1=y9=0;        % extreme base points
% x4=x1+0.4alpha; x6=x9-0.4alpha; y4=y6=0; % inner base points
% x3=0.5[x1,x4]; x5=x4; x8=0.5[x6,x9]; x10=x9; y3=y5=y8=y10=(h - 1.5beta);
% x21=x22=1/3[x5,x8]; x23=x24=2/3[x5,x8];
% y22=y24=h-0.5beta; y21=y23=y22-2beta;
% draw z1..{up}z3--z5--z4;                  % left half
% draw z6..{up}z8--z10--z9;                 % right half
% draw_vdash(21,beta); draw_vdash(22,beta); % dashes
% draw_vdash(23,beta); draw_vdash(24,beta); 
% labels(1,2,3,4,5,6,7,8,9,10,21,22,23,24); endchar;
% \end{verbatim}
% 
%    \begin{macrocode}
cmchar "Linear B optional sign dwo";
beginglyph(oct"077",1.1);
numeric alpha; alpha:=(rightloc-leftloc);
numeric beta; beta:=0.2alpha;  % dash length
numeric gap; gap:=3/2tiny;
x0=x0'=midloc; y0=0; y0'=h;   % axis of symmetry
x1=leftloc; x3=x0-0.5gap; y1=y3=0;    % left base points
x2=0.5[x1,x3]; y2=0.9h;                  % top point
x4=x1+gap; x5=x3-gap; y4=y5=0;        % base line
%%x9=x10=0.5[x5,x3]; x6=x7=x8=0.5[(x2+0.5beta),x9];  % points for the 3
x9=x10=x3; x6=x7=x8=0.5[(x2+0.5beta),x9];  % points for the 3
y6=h; y7=y2; y7-y8=y6-y7;
y10=0.5[y6,y7]; y9=0.5[y7,y8];
z11=z1 reflectedabout (z0,z0');   % the symmetric right hand side
z12=z2 reflectedabout (z0,z0');
z13=z3 reflectedabout (z0,z0');
z14=z4 reflectedabout (z0,z0');
z15=z5 reflectedabout (z0,z0');
z16=z6 reflectedabout (z0,z0');
z17=z7 reflectedabout (z0,z0');
z18=z8 reflectedabout (z0,z0');
z19=z9 reflectedabout (z0,z0');
z20=z10 reflectedabout (z0,z0');
draw z1--z2--z3; draw z4--z5;         % triangle
draw_hdash(2,beta);                   % dash at the top
draw z6..z10..z7;                     % 3
draw z7..z9..z8;   
draw z11--z12--z13; draw z14--z15;    % and for the RHS
draw_hdash(12,beta);                 
draw z16..z20..z17;                  
draw z17..z19..z18;   
labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{nwa}
%    Optional character \textit{nwa}. Two rakes with crossed curved handles.
%    \begin{macrocode}
cmchar "Linear B optional sign nwa";
beginglyph(oct"100",1.0);
numeric beta; beta:=0.15h;  % dash length
numeric alpha; alpha:=0.5beta;
x1=x11=leftloc; x6=x16=rightloc; y1=y6=h-beta;  % extreme points
z3=0.4[z1,z6]; z4=0.6[z1,z6]; 
z2=0.5[z1,z3]; z5=0.5[z4,z6];
x7=x2; x8=x5; y7=y8=0;          % base points
x21=x1; x22=x2; x23=x3; x24=x4; x25=x5; x26=x6;
y21=y22=y23=y24=y25=y26=h-alpha;
draw z7{up}..z5; draw z8{up}..z2;       % legs
draw z1--z3; draw z4--z6;               % 
draw_vdash(21,beta); draw_vdash(22,beta); draw_vdash(23,beta); 
draw_vdash(24,beta); draw_vdash(25,beta); draw_vdash(26,beta); 
labels(1,2,3,4,5,6,7,8,9,10,21,22,23,24,25,26); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{pa3}
%    Optional character \textit{pa3}. A ladder with three rungs.
%    \begin{macrocode}
cmchar "Linear B optional sign pa3";
beginglyph(oct"133",0.6);
x1=x2=leftloc; x3=x4=rightloc; y1=y3=0; y2=y4=h;  % corner points
z11=0.25[z1,z2]; z12=0.5[z1,z2]; z13=0.75[z1,z2]; % left
z21=0.25[z3,z4]; z22=0.5[z3,z4]; z23=0.75[z3,z4]; % right
draw z1--z2; draw z3--z4;                    % uprights
draw z11--z21; draw z12--z22; draw z13--z23; % crossbars
labels(1,2,3,4,5,6,7,8,9,10,21,22,23,24,25,26); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{pu2}
%    Optional character \textit{pu2}. 
%    \begin{macrocode}
cmchar "Linear B optional sign pu2";
beginglyph(oct"134",0.8);
numeric alpha; alpha:=small;   % length of dashes
x1=leftloc; x2=rightloc; y1=y2=0.6h;       % crossbar
x3=x4=x5=midloc; y3=0; y4=y1; y5=h;        % upright
x11=0.5[x1,x4]; x21=0.5[x4,x2]; y11=y21=y4; % base of spikes
x14=x1; x24=x2; y14=y24=y5;                 % top of spikes
z12=1/3[z11,z14]; z13=2/3[z11,z14];         % left dash centers
z22=1/3[z21,z24]; z23=2/3[z21,z24];         % right dash centers
z32=1/3[z4,z5]; z33=2/3[z4,z5];             % middle dash centers
draw z3--z5; draw z1--z2;                   % upright and crossbar
draw z11--z14; draw z21--z24;               % angled stems
draw_hdash(32,alpha); draw_hdash(33,alpha); % middle dashes
draw_hdash(12,alpha); draw_hdash(13,alpha); % left dashes
draw_hdash(22,alpha); draw_hdash(23,alpha); % right dashes
labels(1,2,3,4,5,6,7,8,9,10,21,22,23,24,25,26); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{pte}
%    Optional character \textit{pte}. A box with a sunken top.
%    \begin{macrocode}
cmchar "Linear B optional sign pte";
beginglyph(oct"135",0.8);
numeric rad; rad:=small;   % radius
x1=x2=leftloc; x3=x4=rightloc; y1=y3=0; y2=y4=h;  % straight exterior
x13=x14=0.2[x2,x4]; x19=x20=0.8[x2,x4];
x11=x13-rad; x22=x20+rad; y11=y22=h;
y13=y20=y11-rad;
x16=x14+rad; x17=x19-rad; y16=y17=0.6h;
y14=y19=y16+rad;
draw z2--z1--z3--z4;                       % straight exterior
draw z2--z11{right}..{down}z13--z14{down}..{right}z16--z17{right}..{up}z19
       --z20{up}..{right}z22--z4;          % top dish
labels(1,2,3,4,11,12,13,14,15,16,17,18,19,20,21,22); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{ra2}
%    Optional character \textit{ra2}, like two lightning flashes.
%    \begin{macrocode}
cmchar "Linear B optional sign ra2";
beginglyph(oct"136",0.6);
numeric rad;          % radius
numeric alpha; alpha:=(rightloc-leftloc);
numeric beta, eta;
rad:=0.1alpha;
x1=x5=x6=leftloc; y1=0; y6=h;                   % left stroke leftmost points
x12=rightloc; y12=h-2rad-rad;                   % right stroke rightmost point
y13=y14=y12+rad; y15=y14+rad; y16=h;            % other right stroke points
x13=x12-rad;
x11=x16=x15=1/4[x1,x12]; y11=0;                 % right stroke leftmost points
x14=x15+rad;
y6-y5=2*(y16-y15) + tiny;                       % left stroke y coords
y4=y3=y5-rad; y2=y3-rad;
z2-z1=whatever*(z12-z11);                   % left and right strokes are parallel
x4=x5+rad; x3=x2-rad;
draw z1---z2..z3..z4..z5---z6;                  % left stroke
draw z11---z12..z13..z14..z15---z16;            % right stroke
labels(1,2,3,4,5,6,11,12,13,14,15,16); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{ra3}
%    Optional character \textit{ra3}. 
%    \begin{macrocode}
cmchar "Linear B optional sign ra3";
beginglyph(oct"137",0.8);
numeric alpha; alpha:=0.15*(rightloc-leftloc);  % dash length
numeric beta; beta:=tiny;                     % small arc center offset
x1=leftloc; x6=rightloc; y1=y6=h;              % top boundary points
x7=x8=midloc; y7=0; y8=0.6h;                   % stem
x3=x1+alpha; x4=x6-alpha; y3=y4=y1;            % inner ends of top dashes
z2=0.5[z1,z3]; z5=0.5[z4,z6];                  % dash midpoints
path p[];
p1=z2{down}..z8{right}..{up}z5;                % bowl
p2=z5{down}..z8{left}..{up}z2;
z11=point 0.3 of p1; z21=point 0.3 of p2;      % end points of the small arcs
z13=point 0.7 of p1; z23=point 0.7 of p2;
z12'=0.5[z11,z13];   z22'=0.5[z21,z23];
z12=z12' shifted (beta*(1,1)); z22=z22' shifted (beta*(-1,1));
x31=x32=x33=x7-2alpha;                         % left stem dash centers
y31=1/4[y7,y8]; y32=1/2[y7,y8]; y33=3/4[y7,y8];
z41=z31 reflectedabout (z7,z8);                % right stem dash centers
z42=z32 reflectedabout (z7,z8);
z43=z33 reflectedabout (z7,z8);
draw p1; draw z1--z3; draw z4--z6;            % bowl and top
draw z11..z12..z13; draw z21..z22..z23;       % small arcs
draw z7--z8;                                  % stem
draw_hdash(31,alpha); draw_hdash(32,alpha); draw_hdash(33,alpha); 
draw_hdash(41,alpha); draw_hdash(42,alpha); draw_hdash(43,alpha); 
labels(1,2,3,4,5,6,7,8,11,12,13,21,22,23,31,32,33,41,42,43); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{ro2}
%    Optional character \textit{ro2}. A deep dish with a cross.
% \jurgen's version is like a cherry with a cross on the long stalk.
% \begin{verbatim}
% cmchar "Linear B optional sign ro2 (original)";
% beginglyph(oct"140",0.8);
% numeric rad;    % radius
% numeric beta;
% x1=x3=midloc; y1=0; y3=h;               % axis of symmetry        
% x2=leftloc; x4=rightloc; y2=y4=0.8h;    % extreme bowl points
% rad:=(x4-x2)/8;
% x11=x2+rad; y11=y2;                     % finish off left points
% x13=x11+rad; y13=y11-rad;
% x14=x13; y14=rad;
% x16=x14+rad; y16=0;
% z17=z16 reflectedabout (z1,z3);         % and right points
% z19=z14 reflectedabout (z1,z3);
% z20=z13 reflectedabout (z1,z3);
% z22=z11 reflectedabout (z1,z3);
% x31=x32=midloc; y32=h; y31=0.3h;            % vertical
% x33=x31; y33=0.5[y2,y32];
% beta:=0.5(x20-x13);
% draw z2--z11{right}..{down}z13--z14{down}..{right}z16--z17{right}..{up}z19
%        --z20{up}..{right}z22--z4;          % dish
% draw z31--z32;                             % vertical
% draw_hdash(33,beta);                       % crossbar
% labels(1,2,3,4,11,12,13,14,15,16,17,18,19,20,21,22,31,32,33); endchar;
% \end{verbatim}
% 
%    \begin{macrocode}
cmchar "Linear B optional sign ro2";
beginglyph(oct"140",0.6);
numeric gap; gap=tiny;
numeric alpha; alpha:=(rightloc-leftloc);
numeric beta, eta;
rad:=0.1alpha;
x1=x2=midloc; y1=h; y2=0;           % middle points
x5=x2-gap; y5=h/2;                  % curve points
x3=leftloc; y3=0.75[y2,y5];
x4=0.3[x3,x5]; y4=y5; 
x6=x1; y6=y5+3/2gap;
z13=z3 reflectedabout (z2,z1);
z14=z4 reflectedabout (z2,z1);
z15=z5 reflectedabout (z2,z1);
draw z1--z2;                          % vertical
draw_hdash(6,4gap);                   % crossbar
draw z5---z4..z3..z2..z13..z14---z15;   % curve
labels(1,2,3,4,5,6,11,12,13,14,15,16); endchar;


%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{swa}
%    Optional character \textit{swa}. 
%    \begin{macrocode}
cmchar "Linear B optional sign swa";
beginglyph(oct"173",0.6);
numeric beta; beta:=2;      % tension value
numeric eta; eta:=small;    % dash size
x1=leftloc; x1'=rightloc; y1=y1'=h/2;     % axis of symmetry        
x2=leftloc; y2=0;
x3=leftloc; y3=h/5;
x5=0.75[x1,x1']; y5=y3;
x7=0.875[x1,x5]; y7=y1;
z12=z2 reflectedabout (z1,z1');
z13=z3 reflectedabout (z1,z1');
z15=z5 reflectedabout (z1,z1');
z21=1/3[z1,z7]; z22=2/3[z1,z7];
y23=y5+0.5eta; x23=rightloc;
z24=z23 reflectedabout (z1,z1');
draw z2..tension beta..z3..tension beta..z5..tension 0.5beta..z7
       ..tension 0.5beta..z15..tension beta..z13..tension beta..z12;
draw_vdash(21,eta); draw_vdash(22,eta);
draw_vdash(23,eta); draw_vdash(24,eta);
labels(1,2,3,4,5,6,7,8,12,13,14,15,16,17,18,21,22,23,24); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{swi}
%    Optional character \textit{swi}. An X inside brackets.
%    \begin{macrocode}
cmchar "Linear B optional sign swi";
beginglyph(oct"174",0.8);
numeric beta, eta, wid;
wid:=(rightloc-leftloc);
x0=x0'=midloc; y0=0; y0'=h;           % axis of symmetry
x1=x2=leftloc; y1=0; y2=h;            % left bracket
x3=x4=x1+0.1wid; y3=y1; y4=y2;
x5=x7=x0-0.3wid; y5=0.3h; y7=0.7h;    % left of bars
x6=x8=0.2[x5,x0]; y6=y5; y8=y7;       % left of X
z21=z1 reflectedabout (z0,z0');       % the right half points
z22=z2 reflectedabout (z0,z0');
z23=z3 reflectedabout (z0,z0');
z24=z4 reflectedabout (z0,z0');
z25=z5 reflectedabout (z0,z0');
z26=z6 reflectedabout (z0,z0');
z27=z7 reflectedabout (z0,z0');
z28=z8 reflectedabout (z0,z0');
draw z3--z1--z2--z4; draw z23--z21--z22--z24; % brackets
draw z5--z25; draw z7--z27;                   % bars
draw z26--z8; draw z6--z28;                   % the X
labels(1,2,3,4,5,6,7,8,21,22,23,24,25,26,27,28); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{ta2}
%    Optional character \textit{ta2}. 
%    \begin{macrocode}
cmchar "Linear B optional sign ta2";
beginglyph(oct"175",0.8);
numeric beta, eta, wid;
wid:=(rightloc-leftloc);
eta:= 1/7h;                           % dash length and vertical space
beta:= 0.2wid;                        % dash horizontal seperation
x0=x0'=midloc; y0=0; y0'=h;           % axis of symmetry
x1=leftloc; x2=rightloc; y1=y2=h;     % top
x3=1/4[x1,x2]; y3=0;                  % bottom left
z4=z3 reflectedabout (z0,z0');        % bottom right
x11=x0; y11=3/2eta;                   % bottom dash
x12=x0-1/2beta; y12=y11+2eta;         % middle dashes
z13=z12 reflectedabout (z0,z0');
x15=x0; y15=y12+2eta;                 % top dashes
x14=x15-beta; y14=y15;
z16=z14 reflectedabout (z0,z0');
draw z1--z2;                          % top
draw z3{up}..z1; draw z4{up}..z2;     % sides
draw_vdash(11,eta);                   % dashes
draw_vdash(12,eta); draw_vdash(13,eta);
draw_vdash(14,eta); draw_vdash(15,eta); draw_vdash(16,eta);
labels(1,2,3,4,5,6,7,8,11,12,13,14,15,16); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{two}
%    Optional character \textit{two}. A bit like a bird house.
%    \begin{macrocode}
cmchar "Linear B optional sign two";
beginglyph(oct"176",0.8);
numeric beta, eta, wid;
wid:=(rightloc-leftloc);
eta:= 0.2wid;                           % dash length and vertical space
x0=x0'=midloc; y0=0; y0'=h;             % axis of symmetry
x1=leftloc; x2=midloc; y1=2/3h; y2=h;   % the roof
z3=z1 reflectedabout (z0,z0');
z4=0.2[z1,z2];                          % top of sides
z5=z4 reflectedabout (z0,z0');
x6=0.4[x1,x3]; y6=0;                    % bottom of sides
z7=z6 reflectedabout (z0,z0');
x8=0.5[x6,x7]; y8=(x0-x6);              % top of base
x11=x12=x0; y11=y4-1/2eta; y12=y11+eta; % dash centers
draw z1--z2--z3;                        % roof
draw z6{up}..z4; draw z7{up}..z5;       % sides
draw z6..z8..z7;                        % base
draw_hdash(11,eta); draw_hdash(12,eta); % dashes
labels(1,2,3,4,5,6,7,8,11,12,13,14,15,16); endchar;

%    \end{macrocode}
% \end{routine}
%
%
%
% \subsection{The numerals}
%
%    There are different signs for digits, tens, hundreds, and one thousand.
% That is, 28 characters. I will put these into the positions normally
% occupied by the lower case Greek letters and variants.
% \changes{v1.2}{2005/06/22}{Rordered the numerals}
%
%
%    The digits are composed of vertical dashes.
% \begin{routine}{9}
%    The numeral \textit{9}. 
%    \begin{macrocode}
cmchar "Linear B numeral sign 9";
beginglyph(oct"011",4digwd);
numeric alpha; alpha:=digsz*h;
x1=x6=leftloc; y1=y2=y3=y4=y5=(1-digsz/2)*h;
x5=rightloc;  y6=y7=y8=y9=(digsz/2)*h;
x2=x7=1/4[leftloc,rightloc];
x3=x8=1/2[leftloc,rightloc];
x4=x9=3/4[leftloc,rightloc];
% top row
draw_vdash(1,alpha);
draw_vdash(2,alpha);
draw_vdash(3,alpha);
draw_vdash(4,alpha);
draw_vdash(5,alpha);
% bottom row
draw_vdash(6,alpha);
draw_vdash(7,alpha);
draw_vdash(8,alpha);
draw_vdash(9,alpha);
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{8}
%    The numeral \textit{8}. 
%    \begin{macrocode}
cmchar "Linear B numeral sign 8";
beginglyph(oct"010",3digwd);
numeric alpha; alpha:=digsz*h;
x1=x6=leftloc; y1=y2=y3=y4=y5=(1-digsz/2)*h;
x5=rightloc;  y6=y7=y8=y9=(digsz/2)*h;
x2=x7=1/3[leftloc,rightloc];
x3=x8=2/3[leftloc,rightloc];
x4=x9=rightloc;
% top row
draw_vdash(1,alpha);
draw_vdash(2,alpha);
draw_vdash(3,alpha);
draw_vdash(4,alpha);
% bottom row
draw_vdash(6,alpha);
draw_vdash(7,alpha);
draw_vdash(8,alpha);
draw_vdash(9,alpha);
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{7}
%    The numeral \textit{7}. 
%    \begin{macrocode}
cmchar "Linear B numeral sign 7";
beginglyph(oct"007",3digwd);
numeric alpha; alpha:=digsz*h;
x1=x6=leftloc; y1=y2=y3=y4=y5=(1-digsz/2)*h;
x5=rightloc;  y6=y7=y8=y9=(digsz/2)*h;
x2=x7=1/3[leftloc,rightloc];
x3=x8=2/3[leftloc,rightloc];
x4=x9=rightloc;
% top row
draw_vdash(1,alpha);
draw_vdash(2,alpha);
draw_vdash(3,alpha);
draw_vdash(4,alpha);
% bottom row
draw_vdash(6,alpha);
draw_vdash(7,alpha);
draw_vdash(8,alpha);
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{6}
%    The numeral \textit{6}. 
%    \begin{macrocode}
cmchar "Linear B numeral sign 6";
beginglyph(oct"006",2digwd);
numeric alpha; alpha:=digsz*h;
x1=x6=leftloc; y1=y2=y3=y4=y5=(1-digsz/2)*h;
x5=rightloc;  y6=y7=y8=y9=(digsz/2)*h;
x2=x7=1/2[leftloc,rightloc];
x3=x8=rightloc;
x4=x9=rightloc;
% top row
draw_vdash(1,alpha);
draw_vdash(2,alpha);
draw_vdash(3,alpha);
% bottom row
draw_vdash(6,alpha);
draw_vdash(7,alpha);
draw_vdash(8,alpha);
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{5}
%    The numeral \textit{5}. 
%    \begin{macrocode}
cmchar "Linear B numeral sign 5";
beginglyph(oct"005",2digwd);
numeric alpha; alpha:=digsz*h;
x1=x6=leftloc; y1=y2=y3=y4=y5=(1-digsz/2)*h;
x5=rightloc;  y6=y7=y8=y9=(digsz/2)*h;
x2=x7=1/2[leftloc,rightloc];
x3=x8=rightloc;
x4=x9=rightloc;
% top row
draw_vdash(1,alpha);
draw_vdash(2,alpha);
draw_vdash(3,alpha);
% bottom row
draw_vdash(6,alpha);
draw_vdash(7,alpha);
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{4}
%    The numeral \textit{4}. 
%    \begin{macrocode}
cmchar "Linear B numeral sign 4";
beginglyph(oct"004",digwd);
numeric alpha; alpha:=digsz*h;
x1=x6=leftloc; y1=y2=y3=y4=y5=(1-digsz/2)*h;
x5=rightloc;  y6=y7=y8=y9=(digsz/2)*h;
x2=x7=rightloc;
x3=x8=rightloc;
x4=x9=rightloc;
% top row
draw_vdash(1,alpha);
draw_vdash(2,alpha);
% bottom row
draw_vdash(6,alpha);
draw_vdash(7,alpha);
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{3}
%    The numeral \textit{3}. 
%    \begin{macrocode}
cmchar "Linear B numeral sign 3";
beginglyph(oct"003",2digwd);
numeric alpha; alpha:=digsz*h;
x1=x6=leftloc; y1=y2=y3=y4=y5=(1-digsz/2)*h;
x5=rightloc;  y6=y7=y8=y9=(digsz/2)*h;
x2=x7=1/2[leftloc,rightloc];
x3=x8=rightloc;
x4=x9=rightloc;
% top row
draw_vdash(1,alpha);
draw_vdash(2,alpha);
draw_vdash(3,alpha);
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{2}
%    The numeral \textit{2}. 
%    \begin{macrocode}
cmchar "Linear B numeral sign 2";
beginglyph(oct"002",digwd);
numeric alpha; alpha:=digsz*h;
x1=x6=leftloc; y1=y2=y3=y4=y5=(1-digsz/2)*h;
x5=rightloc;  y6=y7=y8=y9=(digsz/2)*h;
x2=x7=rightloc;
x3=x8=rightloc;
x4=x9=rightloc;
% top row
draw_vdash(1,alpha);
draw_vdash(2,alpha);
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{1}
%    The numeral \textit{1}. 
%    \begin{macrocode}
cmchar "Linear B numeral sign 1";
beginglyph(oct"001",digwd/2);
numeric alpha; alpha:=digsz*h;
x1=midloc; y1=(1-digsz/2)*h;
draw_vdash(1,alpha);
labels(1,2,3,4,5,6); endchar;
 
%    \end{macrocode}
% \end{routine}
%
%    The tens are all composed of horizontal dashes.
%
% \begin{routine}{90}
%    The numeral \textit{90}.
%    \begin{macrocode}
cmchar "Linear B numeral sign 90";
beginglyph(oct"022",(2tenwd+tensep));
numeric alpha; alpha:=tensz*h;
x1=x2=x3=x4=x5=leftloc+alpha/2;
x6=x7=x8=x9=rightloc-alpha/2;
y1=y6=h;
y2=y7=3/4h;
y3=y8=1/2h;
y4=y9=1/4h;
y5=0;
%  left column
draw_hdash(1,alpha);
draw_hdash(2,alpha);
draw_hdash(3,alpha);
draw_hdash(4,alpha);
draw_hdash(5,alpha);
% right column
draw_hdash(6,alpha);
draw_hdash(7,alpha);
draw_hdash(8,alpha);
draw_hdash(9,alpha);
labels(1,2,3,4,5,6,7,8,9); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{80}
%    The numeral \textit{80}.
%    \begin{macrocode}
cmchar "Linear B numeral sign 80";
beginglyph(oct"021",(2tenwd+tensep));
numeric alpha; alpha:=tensz*h;
x1=x2=x3=x4=x5=leftloc+alpha/2;
x6=x7=x8=x9=rightloc-alpha/2;
y1=y6=h;
y2=y7=3/4h;
y3=y8=1/2h;
y4=y9=1/4h;
y5=0;
%  left column
draw_hdash(1,alpha);
draw_hdash(2,alpha);
draw_hdash(3,alpha);
draw_hdash(4,alpha);
% right column
draw_hdash(6,alpha);
draw_hdash(7,alpha);
draw_hdash(8,alpha);
draw_hdash(9,alpha);
labels(1,2,3,4,5,6,7,8,9); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{70}
%    The numeral \textit{70}.
%    \begin{macrocode}
cmchar "Linear B numeral sign 70";
beginglyph(oct"020",(2tenwd+tensep));
numeric alpha; alpha:=tensz*h;
x1=x2=x3=x4=x5=leftloc+alpha/2;
x6=x7=x8=x9=rightloc-alpha/2;
y1=y6=h;
y2=y7=3/4h;
y3=y8=1/2h;
y4=y9=1/4h;
y5=0;
%  left column
draw_hdash(1,alpha);
draw_hdash(2,alpha);
draw_hdash(3,alpha);
draw_hdash(4,alpha);
% right column
draw_hdash(6,alpha);
draw_hdash(7,alpha);
draw_hdash(8,alpha);
labels(1,2,3,4,5,6,7,8,9); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{60}
%    The numeral \textit{60}.
%    \begin{macrocode}
cmchar "Linear B numeral sign 60";
beginglyph(oct"017",(2tenwd+tensep));
numeric alpha; alpha:=tensz*h;
x1=x2=x3=x4=x5=leftloc+alpha/2;
x6=x7=x8=x9=rightloc-alpha/2;
y1=y6=h;
y2=y7=3/4h;
y3=y8=1/2h;
y4=y9=1/4h;
y5=0;
%  left column
draw_hdash(1,alpha);
draw_hdash(2,alpha);
draw_hdash(3,alpha);
% right column
draw_hdash(6,alpha);
draw_hdash(7,alpha);
draw_hdash(8,alpha);
labels(1,2,3,4,5,6,7,8,9); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{50}
%    The numeral \textit{50}.
%    \begin{macrocode}
cmchar "Linear B numeral sign 50";
beginglyph(oct"016",(2tenwd+tensep));
numeric alpha; alpha:=tensz*h;
x1=x2=x3=x4=x5=leftloc+alpha/2;
x6=x7=x8=x9=rightloc-alpha/2;
y1=y6=h;
y2=y7=3/4h;
y3=y8=1/2h;
y4=y9=1/4h;
y5=0;
%  left column
draw_hdash(1,alpha);
draw_hdash(2,alpha);
draw_hdash(3,alpha);
% right column
draw_hdash(6,alpha);
draw_hdash(7,alpha);
labels(1,2,3,4,5,6,7,8,9); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{40}
%    The numeral \textit{40}.
%    \begin{macrocode}
cmchar "Linear B numeral sign 40";
beginglyph(oct"015",(2tenwd+tensep));
numeric alpha; alpha:=tensz*h;
x1=x2=x3=x4=x5=leftloc+alpha/2;
x6=x7=x8=x9=rightloc-alpha/2;
y1=y6=h;
y2=y7=3/4h;
y3=y8=1/2h;
y4=y9=1/4h;
y5=0;
%  left column
draw_hdash(1,alpha);
draw_hdash(2,alpha);
% right column
draw_hdash(6,alpha);
draw_hdash(7,alpha);
labels(1,2,3,4,5,6,7,8,9); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{30}
%    The numeral \textit{30}.
%    \begin{macrocode}
cmchar "Linear B numeral sign 30";
beginglyph(oct"014",(tenwd));
numeric alpha; alpha:=tensz*h;
x1=x2=x3=x4=x5=leftloc+alpha/2;
x6=x7=x8=x9=rightloc-alpha/2;
y1=y6=h;
y2=y7=3/4h;
y3=y8=1/2h;
y4=y9=1/4h;
y5=0;
%  left column
draw_hdash(1,alpha);
draw_hdash(2,alpha);
draw_hdash(3,alpha);
labels(1,2,3,4,5,6,7,8,9); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{20}
%    The numeral \textit{20}.
%    \begin{macrocode}
cmchar "Linear B numeral sign 20";
beginglyph(oct"013",(tenwd));
numeric alpha; alpha:=tensz*h;
x1=x2=x3=x4=x5=leftloc+alpha/2;
x6=x7=x8=x9=rightloc-alpha/2;
y1=y6=h;
y2=y7=3/4h;
y3=y8=1/2h;
y4=y9=1/4h;
y5=0;
%  left column
draw_hdash(1,alpha);
draw_hdash(2,alpha);
labels(1,2,3,4,5,6,7,8,9); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{10}
%    The numeral \textit{10}.
%    \begin{macrocode}
cmchar "Linear B numeral sign 10";
beginglyph(oct"012",(tenwd));
numeric alpha; alpha:=tensz*h;
x1=x2=x3=x4=x5=leftloc+alpha/2;
x6=x7=x8=x9=rightloc-alpha/2;
y1=y6=h;
y2=y7=3/4h;
y3=y8=1/2h;
y4=y9=1/4h;
y5=0;
%  left column
draw_hdash(1,alpha);
labels(1,2,3,4,5,6,7,8,9); endchar;

%    \end{macrocode}
% \end{routine}
%
%    The hundreds are composed of circles.
%
% \begin{routine}{900}
%    The numeral \textit{900}. 
%    \begin{macrocode}
cmchar "Linear B numeral sign 900";
beginglyph(oct"033",(5hunwd+4hunsep));
numeric diam, rad; diam:=hunsz*h; rad:=diam/2;
x1=x6=leftloc+rad; y1=y2=y3=y4=y5=h-rad;
x5=rightloc-rad;  y6=y7=y8=y9=rad;
x2=x7=1/4[x1,x5];
x3=x8=1/2[x1,x5];
x4=x9=3/4[x1,x5];
% top row
draw fullcircle scaled diam shifted z1;
draw fullcircle scaled diam shifted z2;
draw fullcircle scaled diam shifted z3;
draw fullcircle scaled diam shifted z4;
draw fullcircle scaled diam shifted z5;
% bottom row
draw fullcircle scaled diam shifted z6;
draw fullcircle scaled diam shifted z7;
draw fullcircle scaled diam shifted z8;
draw fullcircle scaled diam shifted z9;
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{800}
%    The numeral \textit{800}. 
%    \begin{macrocode}
cmchar "Linear B numeral sign 800";
beginglyph(oct"032",(4hunwd+3hunsep));
numeric diam, rad; diam:=hunsz*h; rad:=diam/2;
x1=x6=leftloc+rad; y1=y2=y3=y4=y5=h-rad;
x5=rightloc-rad;  y6=y7=y8=y9=rad;
x4=x9=rightloc-rad;
x2=x7=1/3[x1,x5];
x3=x8=2/3[x1,x5];
% top row
draw fullcircle scaled diam shifted z1;
draw fullcircle scaled diam shifted z2;
draw fullcircle scaled diam shifted z3;
draw fullcircle scaled diam shifted z4;
% bottom row
draw fullcircle scaled diam shifted z6;
draw fullcircle scaled diam shifted z7;
draw fullcircle scaled diam shifted z8;
draw fullcircle scaled diam shifted z9;
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{700}
%    The numeral \textit{700}. 
%    \begin{macrocode}
cmchar "Linear B numeral sign 700";
beginglyph(oct"031",(4hunwd+3hunsep));
numeric diam, rad; diam:=hunsz*h; rad:=diam/2;
x1=x6=leftloc+rad; y1=y2=y3=y4=y5=h-rad;
x5=rightloc-rad;  y6=y7=y8=y9=rad;
x4=x9=rightloc-rad;
x2=x7=1/3[x1,x5];
x3=x8=2/3[x1,x5];
% top row
draw fullcircle scaled diam shifted z1;
draw fullcircle scaled diam shifted z2;
draw fullcircle scaled diam shifted z3;
draw fullcircle scaled diam shifted z4;
% bottom row
draw fullcircle scaled diam shifted z6;
draw fullcircle scaled diam shifted z7;
draw fullcircle scaled diam shifted z8;
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
%
% \begin{routine}{600}
%    The numeral \textit{600}. 
%    \begin{macrocode}
cmchar "Linear B numeral sign 600";
beginglyph(oct"030",(3hunwd+2hunsep));
numeric diam, rad; diam:=hunsz*h; rad:=diam/2;
x1=x6=leftloc+rad; y1=y2=y3=y4=y5=h-rad;
x5=rightloc-rad;  y6=y7=y8=y9=rad;
x2=x7=1/2[x1,x5];
x3=x8=rightloc-rad;
x4=x9=rightloc-rad;
% top row
draw fullcircle scaled diam shifted z1;
draw fullcircle scaled diam shifted z2;
draw fullcircle scaled diam shifted z3;
% bottom row
draw fullcircle scaled diam shifted z6;
draw fullcircle scaled diam shifted z7;
draw fullcircle scaled diam shifted z8;
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{500}
%    The numeral \textit{500}. 
%    \begin{macrocode}
cmchar "Linear B numeral sign 500";
beginglyph(oct"027",(3hunwd+2hunsep));
numeric diam, rad; diam:=hunsz*h; rad:=diam/2;
x1=x6=leftloc+rad; y1=y2=y3=y4=y5=h-rad;
x5=rightloc-rad;  y6=y7=y8=y9=rad;
x2=x7=1/2[x1,x5];
x3=x8=rightloc-rad;
x4=x9=rightloc-rad;
% top row
draw fullcircle scaled diam shifted z1;
draw fullcircle scaled diam shifted z2;
draw fullcircle scaled diam shifted z3;
% bottom row
draw fullcircle scaled diam shifted z6;
draw fullcircle scaled diam shifted z7;
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
%
% \begin{routine}{400}
%    The numeral \textit{400}. 
%    \begin{macrocode}
cmchar "Linear B numeral sign 400";
beginglyph(oct"026",(2hunwd+hunsep));
numeric diam, rad; diam:=hunsz*h; rad:=diam/2;
x1=x6=leftloc+rad; y1=y2=y3=y4=y5=h-rad;
x5=rightloc-rad;  y6=y7=y8=y9=rad;
x2=x7=rightloc-rad;
x3=x8=rightloc-rad;
x4=x9=rightloc-rad;
% top row
draw fullcircle scaled diam shifted z1;
draw fullcircle scaled diam shifted z2;
% bottom row
draw fullcircle scaled diam shifted z6;
draw fullcircle scaled diam shifted z7;
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{300}
%    The numeral \textit{400}. 
%    \begin{macrocode}
cmchar "Linear B numeral sign 300";
beginglyph(oct"025",(2hunwd+hunsep));
numeric diam, rad; diam:=hunsz*h; rad:=diam/2;
x1=x6=leftloc+rad; y1=y2=y3=y4=y5=h-rad;
x5=rightloc-rad;  y6=y7=y8=y9=rad;
x2=x7=rightloc-rad;
x3=x8=rightloc-rad;
x4=x9=rightloc-rad;
% top row
draw fullcircle scaled diam shifted z1;
draw fullcircle scaled diam shifted z2;
% bottom row
draw fullcircle scaled diam shifted z6;
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{200}
%    The numeral \textit{200}. 
%    \begin{macrocode}
cmchar "Linear B numeral sign 200";
beginglyph(oct"024",hunwd);
numeric diam, rad; diam:=hunsz*h; rad:=diam/2;
x1=x6=leftloc+rad; y1=y2=y3=y4=y5=h-rad;
x5=rightloc-rad;  y6=y7=y8=y9=rad;
x2=x7=rightloc-rad;
x3=x8=rightloc-rad;
x4=x9=rightloc-rad;
% top row
draw fullcircle scaled diam shifted z1;
% bottom row
draw fullcircle scaled diam shifted z6;
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{100}
%    The numeral \textit{100}. 
%    \begin{macrocode}
cmchar "Linear B numeral sign 100";
beginglyph(oct"023",hunwd);
numeric diam, rad; diam:=hunsz*h; rad:=diam/2;
x1=x6=leftloc+rad; y1=y2=y3=y4=y5=h-rad;
x5=rightloc-rad;  y6=y7=y8=y9=rad;
x2=x7=rightloc-rad;
x3=x8=rightloc-rad;
x4=x9=rightloc-rad;
% top row
draw fullcircle scaled diam shifted z1;
labels(1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
%
% \begin{routine}{1000}
%    The numeral \textit{1000}. It is a circle with spikes.
%    \begin{macrocode}
cmchar "Linear B numeral sign 1000";
beginglyph(oct"034",1.0);
numeric diam, rad; diam:=h/2; rad:=diam/2;
x0=midloc; y0=h/2;   % circle center
x5=leftloc; x1=x0-rad; x3=x0+rad; x7=rightloc; y5=y1=y3=y7=y0;
x8=x4=x2=x6=x0; y8=0; y4=y0-rad; y2=y0+rad; y6=h;
draw fullcircle scaled diam shifted z0;
draw z5--z1; draw z6--z2; draw z7--z3; draw z8--z4;
labels(0,1,2,3,4,5,6,7,8,9); endchar;
 
%    \end{macrocode}
% \end{routine}
%
% \subsection{Weights and measures}
% 
%  Chadwick shows 9 glyphs for weight and volume measures: 5 for weights
% and 4 for volumes.
% \changes{v1.2}{2005/06/22}{Added 9 weights and measures glyphs}
%
% \begin{routine}{wta}
% The lowest weight unit. A shepherd's crook with a cross-bar.
%    \begin{macrocode}
cmchar "Linear B smallest weight (wta)";
beginglyph(oct"200",0.4);
x5=leftloc; x6=rightloc;
x1=x2=x4=1/2[x5,x6]; x3=x5;
y1=0; y4=h; y2=15/20[y1,y4]; y3=1/2[y2,y4]; y5=y6=15/20[y1,y2];
draw z1--z2{left}..z3{up}..{right}z4;
draw z5--z6;
labels(1,2,3,4,5,6,7); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{wtb}
% The second lowest weight unit. A reversed S with a slash and dots.
%    \begin{macrocode}
cmchar "Linear B second smallest weight (wtb)";
beginglyph(oct"201",0.4);
numeric alpha; alpha:=0.5*(rightloc-leftloc);
x1=x5=leftloc; x6=x4=x2=midloc; x7=x3=rightloc;
y6=0; y5=y7=y6+alpha; y4=h/2; y1=y3=y2-alpha; y2=h;
draw z1..z2..z3..z4..z5..z6..z7;
z11=1/2[z4,z1]; z12=1/2[z4,z7];
z13=1/2[z1,z3]; z14=1/2[z5,z7];
draw z11--z12; draw z13; draw z14;
labels(1,2,3,4,5,6,7,8,9); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{wtc}
% The third lowest weight unit. An octothorpe.
%    \begin{macrocode}
cmchar "Linear B third smallest weight(wtd)";
beginglyph(oct"202",1.0);
x1=x2=leftloc; x3=x4=rightloc;
y5=y7=0; y6=y8=h;
y1=y3=1/4[y5,y6]; y2=y4=3/4[y5,y6];
x5=x6=0.25[x1,x3]; x7=x8=3/4[x1,x3];
draw z1--z3; draw z2--z4;
draw z5--z6; draw z7--z8;
labels(1,2,3,4,5,6,7,8);
endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{wtd}
% The fourth lowest weight unit. Two reversed S's.
%    \begin{macrocode}
cmchar "Linear B fourth smallest weight (wtd)";
beginglyph(oct"203",0.2);
numeric alpha; alpha:=0.5*(rightloc-leftloc);
x1=x5=leftloc; x6=x4=x2=midloc; x7=x3=rightloc;
y6=11/20h; y2=h; y4=1/2[y6,y2];  y5=y7=1/2[y6,y4]; y1=y3=1/2[y4,y2];
draw z1..z2..z3..z4..z5..z6..z7;

x11=x15=x1; x16=x14=x12=x6; x17=x13=x7;
y16=0; y12=9/20h; y14=1/2[y16,y12];  y15=y17=1/2[y16,y14]; y11=y13=1/2[y14,y12];
draw z11..z12..z13..z14..z15..z16..z17;
labels(1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{talent}
% The symbol for weights; Chadwick suggests it might be a talent, the most 
% common weight in antiquity.
% A pair of scales.
%    \begin{macrocode}
cmchar "Linear B highest weight symbol (talent)";
beginglyph(oct"204",1.1);
numeric alpha; alpha:=(rightloc-leftloc);
numeric beta; beta:=0.2alpha;  % dash length
numeric gap; gap:=3/2tiny;
x0=x0'=midloc; y0=0; y0'=h;   % axis of symmetry
x1=leftloc; x3=x0-0.5gap; y1=y3=0;    % left base points
x2=0.5[x1,x3]; y2=0.9h;                  % top point
x4=x1+gap; x5=x3-gap; y4=y5=0;        % base line
%%x9=x10=0.5[x5,x3]; x6=x7=x8=0.5[(x2+0.5beta),x9];  % points for the 3
x9=x10=x3; x6=x7=x8=0.5[(x2+0.5beta),x9];  % points for the 3
y6=h; y7=y2; y7-y8=y6-y7;
y10=0.5[y6,y7]; y9=0.5[y7,y8];
z11=z1 reflectedabout (z0,z0');   % the symmetric right hand side
z12=z2 reflectedabout (z0,z0');
z13=z3 reflectedabout (z0,z0');
z14=z4 reflectedabout (z0,z0');
z15=z5 reflectedabout (z0,z0');
z16=z6 reflectedabout (z0,z0');
z17=z7 reflectedabout (z0,z0');
z18=z8 reflectedabout (z0,z0');
z19=z9 reflectedabout (z0,z0');
z20=z10 reflectedabout (z0,z0');
%%draw z1--z2--z3; draw z4--z5;         % triangle
draw z4--z2--z5--cycle;
draw_hdash(2,beta);                   % dash at the top
%%draw z6..z10..z7;                     % 3
%%draw z7..z9..z8;   
%%draw z11--z12--z13; draw z14--z15;    % and for the RHS
draw z14--z12--z15--cycle;
draw_hdash(12,beta);                 
%%draw z16..z20..z17;                  
%%draw z17..z19..z18;   
draw z2--z12;
x21=x22=1/2[x2,x12]; y21=0; y22=h;
draw z21--z22;                          % upright
labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22); endchar;

%    \end{macrocode}
% \end{routine}
%
%
% \begin{routine}{vola}
% The lowest volume unit. A cup.
%    \begin{macrocode}
cmchar "Linear B lowest volume unit (vola)";
beginglyph(oct"210",1.0);
x11=leftloc; x2=rightloc; x1=3/20[x11,x2]; x3=1/2[x1,x2];
y1=y2=1/3h; y3=0; y11=y1+1/2(x1-x11);
draw z1--z2..z3..cycle;
draw z1..z11..cycle;
labels(1,2,3,11); endchar;

%    \end{macrocode}
% \end{routine}
%
%
% \begin{routine}{volb}
% The second lowest volume unit. A triangular P.
%    \begin{macrocode}
cmchar "Linear B second lowest volume unit (volb)";
beginglyph(oct"211",0.6);
x1=x2=midloc; y1=0; y2=h;
x3=leftloc; x4=rightloc; y3=y4=0.6h;
z5=0.5[z1,z2]; z6=0.8[z1,z2];
x7=rightloc; y7=0.5[y5,y6];
draw z1--z2; %% draw z3--z4;
draw z5--z4; draw z6--z7;
labels(1,2,3,4,5,6,7,8); endchar;

%    \end{macrocode}
% \end{routine}
%
%
% \begin{routine}{volcd}
% The highest dry volume unit. A T.
%    \begin{macrocode}
cmchar "Linear B highest dry volume unit (volcd)";
beginglyph(oct"212",0.6);
x1=x3=leftloc; x4=midloc;  x6=x8=rightloc;    
y1=y6=3/4h; y3=y8=h; y4=0;
z2=0.5[z1,z3]; z7=0.5[z6,z8]; z5=0.5[z2,z7];
%%draw z1--z3;  % left vertical
draw z4--z5;  % centre vertical
%%draw z6--z8;  % right vertical
draw z2--z7;  % bar
labels(1,2,3,4,5,6,7,8); endchar;

%    \end{macrocode}
% \end{routine}
%
%
% \begin{routine}{volcf}
% The highest fluid volume unit. A turn left sign.
%    \begin{macrocode}
cmchar "Linear B highest fluid volume unit (volcf)";
beginglyph(oct"213",0.5);
x1=x2=rightloc; x4=leftloc; x3=2/3[x4,x2]; x5=x6=1/2[x4,x3];
y1=0; y4=y3=18/20h; y6=h; y2=y3 - (x2-x3); y4-y5=y6-y4;
draw z1--z2{up}..{left}z3--z4;      % stem
draw z5--z4--z6;          % arrowhead
labels(1,2,3,4,5,6,7); endchar;

%    \end{macrocode}
% \end{routine}
%
% \subsection{Commodities}
%
%  A selection of pictograms for commodities.
% \changes{v1.2}{2005/06/22}{Added 8 commodity glyphs}
%
%
% \begin{routine}{cloth}
% Cloth. Rectangle with four threads hanging down.
%    \begin{macrocode}
cmchar "Linear B cloth pictogram";
beginglyph(oct"220",0.8);
x1=x2=x3=leftloc; x6=x7=x8=rightloc;
y1=y6=0; y2=y7=1/4h; y3=y8=3/4h;
%x4=x5=midloc; y4=y1; y5=y2;
%y6=y1; y7=y2; y8=y3;
z11=1/3[z1,z6]; z13=2/3[z1,z6];
z12=1/3[z2,z7]; z14=2/3[z2,z7];
draw z2--z3--z8--z7--cycle;  % box
%draw z1--z2; draw z4--z5; draw z6--z7;  % legs
draw z1--z2; draw z11--z12; draw z13--z14; draw z6--z7;  % legs
labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14); endchar;

%    \end{macrocode}
% \end{routine}
%
%
% \begin{routine}{wool}
% Wool. A bit like an M with squiggles.
%    \begin{macrocode}
cmchar "Linear B wool pictogram";
beginglyph(oct"221",0.8);
numeric alpha, beta;
alpha:=0.2; beta:=tiny;
x1=leftloc; x2=midloc; x3=rightloc; y1=y3=h;
% y2=0;  % V
y2 = 2/10h;
path p[];
p1=z1{(1,-1)}...{down}z2;
p2=z3{(-1,-1)}...{down}z2;
z5 = point alpha of p1; 
z8 = point alpha of p2;
z4=z5 shifted (beta*(-1,-1)); z6=z5 shifted (beta*(1,1));
z7=z8 shifted (beta*(-1,1)); z9=z8 shifted (beta*(1,-1));
draw p1; draw p2;           % V
%%draw z4--z6; draw z7--z9;   % dashes
x15=x1; x18=x3; y15=y18=y2;
draw z5..{down}z15; draw z8..{down}z18;  % legs

x21=x5; x23=x8; x22=x2; y21=y23=y1; y22=y5;
draw z21--z22--z23;       % upper V

x31=x33=x5; y31=0; y33=y2;
draw z31{left}..{right}z33;

x41=x43=x8; y41=y31; y43=y33;
draw z41{right}..{left}z43;
labels(1,2,3,4,5,6,7,8,9,15,18,21,22,23,31,33,41,43); endchar;
 
%    \end{macrocode}
% \end{routine}
%
%
% \begin{routine}{wheat}
% Wheat. Upward pointing full arrow.
%    \begin{macrocode}
cmchar "Linear B wheat pictogram";
beginglyph(oct"222",0.6);
x1=x2=midloc; y1=0; y2=h;      % stem
x5=leftloc; x6=rightloc; y5=y6=13/20h;
%%x3=leftloc; x4=rightloc; y3=y4=1/4h;  % bar (original)
%%x3=0.2[x5,x6]; x4=0.2[x6,x5]; y3=y4=1/4h;  % bar (jurgen)
draw z1--z2;      % stem
%%draw z3--z4;      % bar
draw z5--z2--z6--cycle;  % arrowhead 
x11=leftloc; x12=rightloc; y11=y12=y2;
draw z11--z12;
labels(1,2,3,4,5,6); endchar;
 
%    \end{macrocode}
% \end{routine}
%
%
% \begin{routine}{barley}
% Barley. Sort of turn left sign.
%    \begin{macrocode}
cmchar "Linear B barley pictogram";
beginglyph(oct"223",0.4);
x7=leftloc; x4=rightloc; x6= 3/8[x7,x4]; x1=1/3[x6,x4];
y7=h; y1=0; y6=9/10h; y4=8/10h;
x2=x1; y2=1/3h; x5=7/8[x6,x4]; y5=y6;
draw z1--z2{up}..{up}z4..{left}z5..{left}z6; % stem
x14=leftloc; y14=h;
x11=1/3[x6,x4]; y6-y11 = 3/2(y14-y6);
x13=x14; y13=y6;
draw z14{down}..{right}z11; % C at top left of stem
labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14); endchar;

%    \end{macrocode}
% \end{routine}
%
%
% \begin{routine}{wine}
% Wine.
%    \begin{macrocode}
cmchar "Linear B wine pictogram";
beginglyph(oct"224",0.8);
x1=x3=leftloc; x7=x4=rightloc; y1=y7=0; y3=y4=h;
z2=3/4[z1,z3]; z8=3/4[z7,z4]; z5=1/2[z1,z7]; z6=1/2[z2,z8];
draw z1--z3--z4;
draw z2--z8--z7;
draw z5--z6;
%%%%% the dashes
x21=x22=1/4[x1,x5]; x23=x24=3/4[x1,x5];
y22=3/4[y1,y2]; y23=1/4[y1,y2];
y21=1/4[y23,y22]; y24=3/4[y23,y22];
draw z21--z23; draw z22--z24;
x31=x32=1/4[x5,x7]; x33=x34=3/4[x5,x7];
y31=y21; y32=y22; y33=y23; y34=y24;
draw z31--z33; draw z32--z34;
labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,21,22,23,24,31,32,33,34); endchar;

%    \end{macrocode}
% \end{routine}
%
%
% \begin{routine}{olive-oil}
% Olive oil. Question mark overlain with a reversed S.
%    \begin{macrocode}
cmchar "Linear B olive oil pictogram";
beginglyph(oct"225",0.4);
x6=x7=leftloc; x4=rightloc; x1=1/3[x6,x4];
y7=h; y1=0; y6=9/10h; y4=8/10h;
x2=x1; y2=1/3h; x5=7/8[x6,x4]; y5=y6;
draw z1--z2{up}..{up}z4..{left}z5--z6--z7;

x25=1/4[x6,x4]; y6-y25 = 3/2(y7-y6);
x21=1/2[x2,x4]; y21=3/4[y1,y2];
z23=1/2[z25,z21];
y24=1/2[y23,y25]; x24=x4 + (x4-x5);
x22=1/4[x6,x25]; y22=1/2[y21,y23];
draw z25{right}..z24..{left}z23..z22..{right}z21;
labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,21,22,23,24,25); endchar;

%    \end{macrocode}
% \end{routine}
%
%
% \begin{routine}{bronze}
% Bronze. Two boxes hung on a wall.
%    \begin{macrocode}
cmchar "Linear B bronze pictogram";
beginglyph(oct"226",0.6);
x1=x2=leftloc; y1=0; y2=h;
z3=1/4[z1,z2]; z4=1/2[z1,z2]; z5=3/4[z1,z2];
x6=x7=x8=rightloc; y6=y3; y7=y4; y8=y5;
draw z1--z2;   % wall
draw z3--z6--z8--z5; % box outside
draw z4--z7;         % box interior
labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14); endchar;

%    \end{macrocode}
% \end{routine}
%
%
% \begin{routine}{gold}
% Gold. Small folding table with a box on top.
%    \begin{macrocode}
cmchar "Linear B gold pictogram";
beginglyph(oct"227",0.6);
numeric alpha; 
x1=x4=leftloc; x3=x2=rightloc; y1=y3=0; y2=y4=9/10h;  % leg points
path p[];
p1=z1{up}..z2; p2=z3{up}..z4;
z0 = p1 intersectionpoint p2;
%%alpha:=0.5*(x0-x4);
alpha:=0.75*(x0-x4);
x5=x0-alpha; x7=x0+alpha; y5=y7=y0;
x6=x8=x0; y8=y0-alpha; y6=y0+alpha;
draw p1; draw p2;            % the legs
%%draw z5--z6--z7--z8--cycle;  % the square
p5=z5--z6; p7=z7--z6;
z15 = p5 intersectionpoint p2; z17 = p7 intersectionpoint p1;
draw z15--z5--z8--z7--z17;
draw z2--z4;  % table top
z21=1/4[z4,z2]; z24=3/4[z4,z2];
x22=x21; x23=x24; y22 = y23 = y21 + 1/2(x24-x21); 
draw z21--z22--z23--z24--cycle; % box
labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14); endchar;

%    \end{macrocode}
% \end{routine}
%
% \subsection{Vessels}
%
% Pictograms of various kinds of vessels for liquids.
% \changes{v1.2}{2005/06/22}{Added 8 jar/cup/cauldron glyphs}
%
%
% \begin{routine}{cup}
%    \begin{macrocode}
cmchar "Linear B cup";
beginglyph(oct"230",1.0);
x1=2/16[leftloc,rightloc]; x2=3/16[rightloc,leftloc];
y1=y2=13/20h;
y4=y6=0; y5=y7=8/20y1;
x4=6/20[x1,x2]; x6=6/20[x2,x1]; x5=2/8[x4,x6]; x7=2/8[x6,x4];
draw z5--z4--z6--z7;                         % stem
draw z1{down}..z5..z7..{up}z2; draw z1--z2;  % bowl
x21=x1; y21=8/20[y1,h]; draw z1{left}..{right}z21; % left handle
x22=rightloc; y22=y2; draw z2..{down}z22;          % right handle
labels(1,2,3,4,5,6,7,8,9,10,11,12,21,22); endchar;

%    \end{macrocode}
% \end{routine}
% 
% \begin{routine}{goblet}
%    \begin{macrocode}
cmchar "Linear B goblet";
beginglyph(oct"231",0.6);
x2=leftloc; x5=rightloc; x1=1/3[x2,x5]; x4=2/3[x2,x5]; x3=2/8[x2,x5]; x6=6/8[x2,x5];
y1=y4=0; y3=y6=17/20h; y2=y5=3/4[y1,y3];
draw z1{up}..z2; draw z2..{up}z3; draw z3--z6; draw z6{down}..z5; draw z5..{down}z4; draw z4--z1;
labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14); endchar;

%    \end{macrocode}
% \end{routine}
% 
%
% \begin{routine}{amphora}
%    \begin{macrocode}
cmchar "Linear B amphora";
beginglyph(oct"232",0.5);
x2=leftloc; x12=rightloc; x1=1/4[x2,x12]; x11=3/4[x2,x12]; x4=1/3[x2,x12]; x14=2/3[x2,x12];
x3=x4; x13=x14;
y1=y11=0; y4=y14=h;
y2=y12=5/8[y1,y4];
y3=y13=1/2[y2,y4];
draw z1..{up}z2..{up}z3..{up}z4; 
draw z11..{up}z12..{up}z13..{up}z14; 
draw z4--z14; draw z1--z11;
x5=x2; x15=x12;
y5=y15=1/2[y3,y4];
draw z3{left}..z5..{right}z4; draw z13{right}..z15..{left}z14;
labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); endchar;

%    \end{macrocode}
% \end{routine}
% 
%
% \begin{routine}{wine jar}
%    \begin{macrocode}
cmchar "Linear B wine jar";
beginglyph(oct"233",0.6);
x2=leftloc; x5=rightloc; x1=1/3[x2,x5]; x4=2/3[x2,x5]; x3=2/8[x2,x5]; x6=6/8[x2,x5];
y1=y4=0; y3=y6=17/20h; y2=y5=3/4[y1,y3];
draw z1{up}..z2; draw z2..{up}z3; draw z3--z6; draw z6{down}..z5; draw z5..{down}z4; draw z4--z1;
x12=x2; x15=x5; y12=y15=2/3[y2,y3];
draw z2..{left}z12..z2; draw z5..{left}z15..z5;
labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14); endchar;

%    \end{macrocode}
% \end{routine}
% 
%
% \begin{routine}{wine jar (3 handles)}
%    \begin{macrocode}
cmchar "Linear B 3 handled wine jar";
beginglyph(oct"234",0.8);
save P; P:=0.75;
x2=leftloc; x5=rightloc; x1=1/3[x2,x5]; x4=2/3[x2,x5]; x3=1/8[x2,x5]; x6=7/8[x2,x5];
y1=y4=0; y3=y6=17/20h; y2=y5=3/4[y1,y3];
draw z1{up}..z2; draw z2..{up}z3; draw z3--z6; draw z6{down}..z5; draw z5..{down}z4; draw z4--z1;
z11=1/2[z3,z6]; z12=2/3[z3,z6];
x13=x3; x16=x6; y13=y16=h;
z21=1/2[z13,z16]; z22=2/3[z13,z16];
draw_vloop(3, 13, P);
draw_vloop(11, 21, P);
draw_vloop(16, 6, P);
labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,21,22); endchar;

%    \end{macrocode}
% \end{routine}
% 
%
% \begin{routine}{wine jar (4 handles)}
%    \begin{macrocode}
cmchar "Linear B 4 handled wine jar";
beginglyph(oct"235",0.8);
save Q;
x2=leftloc; x5=rightloc; x1=1/3[x2,x5]; x4=2/3[x2,x5]; x3=1/8[x2,x5]; x6=7/8[x2,x5];
y1=y4=0; y3=y6=17/20h; y2=y5=3/4[y1,y3];
draw z1{up}..z2; draw z2..{up}z3; draw z3--z6; 
draw z6{down}..z5; draw z5..{down}z4; draw z4--z1;
z11=1/3[z3,z6]; z12=2/3[z3,z6];
x13=1/2[x2,x3]; x16=1/2[x6,x5]; y13=y16=h;
z21=1/3[z13,z16]; z22=2/3[z13,z16];
Q:=0.75;
draw_vloop(3,13,Q); draw_vloop(11,21,Q); 
draw_vloop(12,22,Q); draw_vloop(6,16,Q);
labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,21,22); endchar;

%    \end{macrocode}
% \end{routine}
% 
%
% \begin{routine}{cauldron type 1}
%    \begin{macrocode}
cmchar "Linear B cauldron type 1";
beginglyph(oct"236",1.0);
save Q; Q:=0.75;
path p[];
x1=1/16[leftloc,rightloc]; x2=15/16[leftloc,rightloc]; y1=y2=18/20h;
y6=0; y5=y7=10/20y1;
x6=10/20[x1,x2]; x5=9/20[x1,x2]; x7-x6=x6-x5;
p1 := z1{down}..z5..z7..{up}z2;
draw p1; draw z1--z2;   % bowl
draw z5--z6--z7;        % middle leg
x11=leftloc; y11=y12=h; x12=rightloc;
draw_vloop(1,11,Q); draw_vloop(2,12,Q);  % handles
z0=1/2[z1,z2];
x16=x1; y16=0; p2=z16--z0; z15=p2 intersectionpoint p1;
x17-x15=x5-x7; y17=y15;
draw z15--z16--z17;     % left leg
x26=x2; y26=0; p3=z26--z0; z25=p3 intersectionpoint p1;
x25-x27=x5-x7; y27=y25;
draw z25--z26--z27;     % right leg
labels(1,2,3,4,5,6,7,11,12,15,16,17,21,22,25,26,27); endchar;
%    \end{macrocode}
% \end{routine}
% 
%
% \begin{routine}{cauldron type 2}
%    \begin{macrocode}
cmchar "Linear B cauldron type 2";
beginglyph(oct"237",1.0);
save Q; Q:=0.75;
path p[];
x1=3/32[leftloc,rightloc]; x2=3/32[rightloc,leftloc]; y1=y2=18/20h;
y6=0; y5=y7=6/20y1;
x6=10/20[x1,x2]; x5=9/20[x1,x2]; x7-x6=x6-x5;
p1 := z1{down}..z5..z7..{up}z2;
%%draw p1; draw z1--z2;   % bowl
draw z5--z6--z7;        % middle leg
x11=leftloc; y11=y12=h; x12=rightloc;
draw_vloop(1,11,Q); draw_vloop(2,12,Q);  % handles
x21=x11; y11-y1=y1-y21; 
x22=x12; y12-y2=y2-y22; 
z31=z1; z32=z2;
draw_vloop(31,21,Q); draw_vloop(32,22,Q);  % second handles

z0=1/2[z1,z2];
x16=x1; y16=0; p2=z16--z0; z15=p2 intersectionpoint p1;
x17-x15=x5-x7; y17=y15;
draw z15--z16--z17;     % left leg
x26=x2; y26=0; p3=z26--z0; z25=p3 intersectionpoint p1;
x25-x27=x5-x7; y27=y25;
draw z25--z26--z27;     % right leg
z157=3/4[z17,z15]; z257=3/4[z27,z25];
draw z1{down}..z157..z5..z7..z257..{up}z2; draw z2--z1;  % bowl
labels(1,2,3,4,5,6,7,11,12,15,16,17,21,22,25,26,27,157,257); endchar;
%    \end{macrocode}
% \end{routine}
% 
% \subsection{Men and horses}
%
% \changes{v1.2}{2005/06/22}{Added 4 man, woman and horse glyphs}
%
%
% \begin{routine}{man}
%    \begin{macrocode}
cmchar "Linear B man";
beginglyph(oct"240",0.5);
x1=1/8[leftloc,rightloc]; x3=1/8[rightloc,leftloc]; y1=y3=16/20h;  % shoulders
z2=1/2[z1,z3]; x12=x2; y12=h;      % head
x4=1/10[leftloc,rightloc]; y4=0; z5= z4 reflectedabout (z2,z12); % feet
x6=leftloc; y6=1/3[y2,y4]; z7= z6 reflectedabout (z2,z12); % hands
draw z6--z1--z3--z7; % arms and shoulders
draw z1--z5; draw z3--z4;  % body
draw z2{left}..{right}z12..cycle;  % head
labels(1,2,3,4,5,6,7,8,9,10,11,12); endchar;

%    \end{macrocode}
% \end{routine}
% 
%
% \begin{routine}{woman}
%    \begin{macrocode}
cmchar "Linear B woman";
beginglyph(oct"241",0.5);
x1=1/8[leftloc,rightloc]; x3=1/8[rightloc,leftloc]; y1=y3=16/20h;  % shoulders
z2=1/2[z1,z3]; x12=x2; y12=h;      % head
x4=1/10[leftloc,rightloc]; y4=0; z5= z4 reflectedabout (z2,z12); % feet
x6=leftloc; y6=1/3[y2,y4]; z7= z6 reflectedabout (z2,z12); % hands
draw z6--z2--z7; % arms and shoulders
draw z4--z2--z5--cycle;;  % body
y13=1/2[y2,y12]; x13 - x2 = y13 - y2;
draw z2{left}..z12..z13;  % head
labels(1,2,3,4,5,6,7,8,9,10,11,12); endchar;

%    \end{macrocode}
% \end{routine}
% 
% \begin{routine}{horse}
%    \begin{macrocode}
cmchar "Linear B horse";
beginglyph(oct"244", 1.0);
numeric eye; eye = 1/30h;
pair mane; mane = (-8/40h, 6/40h);
x1=leftloc; y1=0; x17=1/2[leftloc,rightloc]; y17=0;  % base of neck
x10=rightloc; y10=1/4h;            % tip of nose
x4=1/4[x1,x10]; y4=h;              % top left ear
x15=1/3[x1,x10]; y15=9/20[y10,y4];  % neck/chin
x2=1/4[x1,x4]; y2=1/2[y1,y4]; x3=2/3[x1,x4]; y3 = 17/20h; % back of neck
x5-x4=x4-x3; x6-x5=1/2(x5-x4); x7-x6=x4-x3; x8-x7=x7-x6; % ears
y5=y6=y8=y3; y7=y4;
x9=2/3[x8,x10]; y9=2/3[y10,y8];
x13=1/3[x10,x15]; y13=y10;

x16=2/3[x3,x15]; y16=1/2[y17,y15]; % mid neck

x11=8/20[x10,x13]; y11=y10-1/20h;  % nose/mouth
x12=12/20[x10,x13]; y12=y11;
y23=y10 + 1/20h; x23=3/4[x11,x12]; % mouth
draw z11--z23--z12;

draw z1..z2..z3--z4--z5--z6--z7--z8..z9..{down}z10..z11..z12..z13..z15..z3;
draw z15..z16..z17;  % mouth
z30=1/2[z15,z8];
z31 = z30 shifted (-eye,eye); z32=z30 shifted (eye,-eye);
draw z31--z32;       % eye
z42=4/20[z2,z3]; z44=1/2[z2,z3]; z46=16/20[z2,z3];   % mane
z41=z42 shifted mane; z43=z44 shifted mane; z45 = z46 shifted mane;
draw z41--z42; draw z43--z44; draw z45--z46;
labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,30,31,32,41,42,43,44,45,46); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{foal}
%    \begin{macrocode}
cmchar "Linear B foal";
beginglyph(oct"245", 1.0);
numeric eye; eye = 1/30h;
pair mane; mane = (-4/40h, 3/40h);
x1=leftloc; y1=0; x17=1/2[leftloc,rightloc]; y17=0;  % base of neck
x10=rightloc; y10=1/4h;            % tip of nose
x4=1/4[x1,x10]; y4=h;              % top left ear
x15=1/3[x1,x10]; y15=9/20[y10,y4];  % neck/chin
x2=1/4[x1,x4]; y2=1/2[y1,y4]; x3=2/3[x1,x4]; y3 = 17/20h; % back of neck
x5-x4=x4-x3; x6-x5=1/2(x5-x4); x7-x6=x4-x3; x8-x7=x7-x6; % ears
y5=y6=y8=y3; y7=y4;
x9=2/3[x8,x10]; y9=2/3[y10,y8];
x13=1/3[x10,x15]; y13=y10;

x16=2/3[x3,x15]; y16=1/2[y17,y15]; % mid neck

x11=8/20[x10,x13]; y11=y10-1/20h;  % nose/mouth
x12=12/20[x10,x13]; y12=y11;
y23=y10 + 1/20h; x23=3/4[x11,x12]; % mouth
draw z11--z23--z12;

draw z1..z2..z3--z4--z5--z6--z7--z8..z9..{down}z10..z11..z12..z13..z15..z3;
draw z15..z16..z17;  % mouth
z30=1/2[z15,z8];
z31 = z30 shifted (-eye,eye); z32=z30 shifted (eye,-eye);
draw z31--z32;       % eye
%z42=1/4[z2,z3]; z44=1/2[z2,z3]; z46=3/4[z2,z3];  % mane
% z41=z42 shifted mane; z43=z44 shifted mane; z45 = z46 shifted mane;
%draw z41--z42; draw z43--z44; draw z45--z46;
labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,30,31,32,41,42,43,44,45,46); endchar;

%    \end{macrocode}
% \end{routine}
%
% \subsection{Livestock}
%
% \changes{v1.2}{2005/06/22}{Added 12 livestock glyphs}
%
% \begin{routine}{pig}
% This is also the \texttt{au} glyph but I have modified that slightly to get a 
% longer neck..
%    \begin{macrocode}
cmchar "Linear B pig";
beginglyph(oct"250",0.8);
numeric alpha; alpha:=0.1h;
x1=x2=x3=leftloc+alpha; y1=0; y2=8/20h; y3=h-2alpha;  % neck
x5=leftloc; y5=h-small;  % top of left ear
x4=0.5[x5,x3]; y4=0.5[y5,y3]-tiny;
x6=x5+small; y6=h;       % top of right ear
x8-x6=x3-x5; y6-y8=y5-y3;
x7=1/2[x8,x6]; y7=1/2[y8,y6] + tiny;
x9=x10=rightloc; y10=1/3[y2,y8]; y9=2/3[y2,y8];  % nose
x12=x8; y12=y3; x11=0.3[x8,x9]; y11=1/2[y10,y9]; % eye
draw z1--z3;           % neck
draw z3..z4..{up}z5;   % left ear
draw z6{right}..z7..z8;% right ear
draw z8--z9--z10--z2;  % head
draw z11--z12;         % eye
labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); endchar;

%    \end{macrocode}
% \end{routine}
% 
% \begin{routine}{boar}
% A male pig.
%    \begin{macrocode}
cmchar "Linear B boar";
beginglyph(oct"251",0.8);
numeric alpha; alpha:=0.1h;
x1=x2=x3=leftloc+alpha; y1=0;
y2=10/20h; y3=h-2alpha;  % neck
x5=leftloc; y5=h-small;  % top of left ear
x4=0.5[x5,x3]; y4=0.5[y5,y3]-tiny;
x6=x5+small; y6=h;       % top of right ear
x8-x6=x3-x5; y6-y8=y5-y3;
x7=1/2[x8,x6]; y7=1/2[y8,y6] + tiny;
x9=x10=rightloc; y10=1/3[y2,y8]; y9=2/3[y2,y8];  % nose
x12=x8; y12=y3; x11=0.3[x8,x9]; y11=1/2[y10,y9]; % eye
draw z1--z3;           % neck
draw z3..z4..{up}z5; draw z6{right}..z7..z8; % ears
draw z8--z9--z10--z2;  % head
draw z11--z12;         % eye
x21=x23=leftloc; y21=1/3[y1,y2]; y23=2/3[y1,y2];  % bars
z22=z21 reflectedabout (z1,z2);
z24=z23 reflectedabout (z1,z2);
draw z21--z22; draw z23--z24;
labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); endchar;

%    \end{macrocode}
% \end{routine}
% 
% \begin{routine}{sow}
% A female pig.
%    \begin{macrocode}
cmchar "Linear B sow";
beginglyph(oct"252",0.8);
numeric alpha; alpha:=0.1h;
x1=x2=x3=leftloc+alpha; y1=0;
y2=10/20h; y3=h-2alpha;  % neck
x5=leftloc; y5=h-small;  % left ear
x4=0.5[x5,x3]; y4=0.5[y5,y3]-tiny;
x6=x5+small; y6=h;       % right ear
x8-x6=x3-x5; y6-y8=y5-y3;
x7=1/2[x8,x6]; y7=1/2[y8,y6] + tiny;
x9=x10=rightloc; y10=1/3[y2,y8]; y9=2/3[y2,y8];  % nose
x12=x8; y12=y3; x11=0.3[x8,x9]; y11=1/2[y10,y9]; % eye
draw z2--z3;           % neck
draw z3..z4..{up}z5; draw z6{right}..z7..z8; % ears
draw z8--z9--z10--z2;  % head
draw z11--z12;         % eye
x21=leftloc; y21=0;    % female neck
z22 = z21 reflectedabout (z1,z2);
draw z21--z2--z22;
labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); endchar;

%    \end{macrocode}
% \end{routine}
% 
% \begin{routine}{ox}
% This is the same as the \texttt{mu} glyph.
%    \begin{macrocode}
cmchar "Linear B ox (mu)";
beginglyph(oct"253",0.8);
numeric rad; rad:=small;
x1=x2=leftloc+2rad; y1=0; y2=h-rad; % stem
x3=x5=leftloc+rad; y3=h; y5=y3-2rad;
x4=leftloc; y4=y2;
x6=x8=rightloc; y6=y5; y8=y3;   % bar and curve
x7=x6-rad; y7=0.5[y6,y8];
x9=x7-1/2rad; y9=y6;
x10=x9; y10=y9-2rad;
x11=x1; y11=y5;                % 
draw z1--z2{up}..z3{left}..z4{down}..{right}z5--z6;  % stem and bar
draw z6{left}..z7{up}..{right}z8;  % curve
draw z9--z10;
labels(1,2,3,4,5,6,7,8,9,10,11,12); endchar;

%    \end{macrocode}
% \end{routine}
% 
% \begin{routine}{bull}
% A male ox.
%    \begin{macrocode}
cmchar "Linear B bull";
beginglyph(oct"254",0.8);
numeric rad; rad:=small;
x1=x2=leftloc+2rad; y1=0; y2=h-rad; % stem
x3=x5=leftloc+rad; y3=h; y5=y3-2rad;
x4=leftloc; y4=y2;
x6=x8=rightloc; y6=y5; y8=y3;   % bar and curve
x7=x6-rad; y7=0.5[y6,y8];
x9=x7-1/2rad; y9=y6;
x10=x9; y10=y9-2rad;
x11=x1; y11=y5;                % 
draw z1--z2{up}..z3{left}..z4{down}..{right}z5--z6;  % stem and bar
draw z6{left}..z7{up}..{right}z8;  % curve
draw z9--z10;
x21=x23=leftloc; y21=1/3[y1,y11]; y23=2/3[y1,y11];
z22=z21 reflectedabout (z1,z11); z24=z23 reflectedabout (z1,z11);
draw z21--z22; draw z23--z24;
labels(1,2,3,4,5,6,7,8,9,10,11,12); endchar;

%    \end{macrocode}
% \end{routine}
% 
% \begin{routine}{cow}
% A female ox.
%    \begin{macrocode}
cmchar "Linear B cow (mu)";
beginglyph(oct"255",0.8);
numeric rad; rad:=small;
x1=x2=leftloc+2rad; y1=0; y2=h-rad; % stem
x3=x5=leftloc+rad; y3=h; y5=y3-2rad;
x4=leftloc; y4=y2;
x6=x8=rightloc; y6=y5; y8=y3;   % bar and curve
x7=x6-rad; y7=0.5[y6,y8];
x9=x7-1/2rad; y9=y6;
x10=x9; y10=y9-2rad;
x11=x1; y11=y5;                % 
draw z11--z2{up}..z3{left}..z4{down}..{right}z5--z6;  % stem and bar
draw z6{left}..z7{up}..{right}z8;  % curve
draw z9--z10;
x21=leftloc; y21=0;
z22=z21 reflectedabout (z1,z11); 
draw z21--z11--z22; 
labels(1,2,3,4,5,6,7,8,9,10,11,12); endchar;

%    \end{macrocode}
% \end{routine}
% 
%
% \begin{routine}{sheep}
%    \begin{macrocode}
cmchar "Linear B sheep";
beginglyph(oct"260",0.8);
x1=x2=16/20[leftloc,rightloc]; y1=0; y2=17/20h; % upright
x3=x8=rightloc; y8=h; y8-y2=y2-y3;  % tail
x5=leftloc; y5=y2;                  % nose
x6=x4=10/20[x2,x5]; y4=y8; y6=y3;   % middle of body
draw z1--z2;        % upright
draw z3..z2..z4..z5..z6..z2..z8;
labels(1,2,3,4,5,6,7,8); endchar;

%    \end{macrocode}
% \end{routine}
% 
%
% \begin{routine}{ram}
% Male sheep;
%    \begin{macrocode}
cmchar "Linear B ram";
beginglyph(oct"261",0.8);
x1=x2=16/20[leftloc,rightloc]; y1=0; y2=17/20h; % upright
x3=x8=rightloc; y8=h; y8-y2=y2-y3;  % tail
x5=leftloc; y5=y2;                  % nose
x6=x4=10/20[x2,x5]; y4=y8; y6=y3;   % middle of body
draw z1--z2;        % upright
draw z3..z2..z4..z5..z6..z2..z8;
x22=x24=rightloc; y22=1/3[y1,y2]; y24=2/3[y1,y2];
z21 = z22 reflectedabout (z1,z2);
z23 = z24 reflectedabout (z1,z2);
draw z21--z22; draw z23--z24;     % bars
labels(1,2,3,4,5,6,7,8); endchar;

%    \end{macrocode}
% \end{routine}
% 
%
% \begin{routine}{ewe}
% Female sheep;
%    \begin{macrocode}
cmchar "Linear B ewe";
beginglyph(oct"262",0.8);
x1=x2=16/20[leftloc,rightloc]; y1=0; y2=17/20h; % upright
x3=x8=rightloc; y8=h; y8-y2=y2-y3;  % tail
x5=leftloc; y5=y2;                  % nose
x6=x4=10/20[x2,x5]; y4=y8; y6=y3;   % middle of body
%draw z1--z2;        % upright
draw z3..z2..z4..z5..z6..z2..z8;
x22=rightloc; y22=0;
z21 = z22 reflectedabout (z1,z2);
draw z21--z2--z22;      % legs
labels(1,2,3,4,5,6,7,8); endchar;

%    \end{macrocode}
% \end{routine}
% 
%
% \begin{routine}{goat}
%    \begin{macrocode}
cmchar "Linear B goat";
beginglyph(oct"263",0.8);
x1=x2= 16/20[leftloc,rightloc]; y1=0; y2=20/20h; % upright
x3=rightloc; y3=17/20h;  % tail
x6=leftloc; y6=y3;
x5=1/3[x6,x2]; x4=2/3[x6,x2]; y5=h; y4=y6; 
draw z1--z2;        % upright
draw z3{left}..z2; draw z2..z4..z5..z6;
labels(1,2,3,4,5,6,7,8); endchar;

%    \end{macrocode}
% \end{routine}
% 
%
% \begin{routine}{billy}
% Male goat.
%    \begin{macrocode}
cmchar "Linear B billy";
beginglyph(oct"264",0.8);
x1=x2= 16/20[leftloc,rightloc]; y1=0; y2=20/20h; % upright
x3=rightloc; y3=17/20h;  % tail
x6=leftloc; y6=y3;
x5=1/3[x6,x2]; x4=2/3[x6,x2]; y5=h; y4=y6; 
draw z1--z2;        % upright
draw z3{left}..z2; draw z2..z4..z5..z6;
x22=x24=rightloc; y22=1/3[y1,y2]; y24=2/3[y1,y2];
z21 = z22 reflectedabout (z1,z2);
z23 = z24 reflectedabout (z1,z2);
draw z21--z22; draw z23--z24;     % bars
labels(1,2,3,4,5,6,7,8); endchar;

%    \end{macrocode}
% \end{routine}
% 
%
% \begin{routine}{nanny}
% Female goat.
%    \begin{macrocode}
cmchar "Linear B nanny";
beginglyph(oct"265",0.8);
x1=x2= 16/20[leftloc,rightloc]; y1=0; y2=20/20h; % upright
x3=rightloc; y3=17/20h;  % tail
x6=leftloc; y6=y3;
x5=1/3[x6,x2]; x4=2/3[x6,x2]; y5=h; y4=y6; 
%draw z1--z2;        % upright
draw z3{left}..z2; draw z2..z4..z5..z6;
x22=rightloc; y22=0;
z21 = z22 reflectedabout (z1,z2);
draw z21--z2--z22;      % legs
labels(1,2,3,4,5,6,7,8); endchar;

%    \end{macrocode}
% \end{routine}
% 
% \subsection{Weapons}
%
% \changes{v1.2}{2005/06/22}{Added 6 weapon glyphs}
%
%
% \begin{routine}{chariot}
%    \begin{macrocode}
cmchar "Linear B chariot";
beginglyph(oct"270", 1.2);
x1=leftloc; x2=1/20[rightloc,leftloc];   % chariot ends
y5=13/20h;   % chariot height
x3=x4=x5=1/3[x1,x2]; y3=0; y4=1/2[y3,y5]; % wheel locations
y1=y2=1/2[y4,y5];
draw z2..z5..z1..z4..z2;    % body
y13=1/2[y3,y4]; y14=1/2[y4,y5];
x3-x13=1/2(y4-y3); x14=x13;
z23=z13 reflectedabout (z3,z5); z24=z14 reflectedabout (z3,z5);
draw z3..z13..z4..z23..cycle; draw z3--z4; draw z13--z23; % lower wheel
draw z4..z14..z5..z24..cycle; draw z4--z5; draw z14--z24; % upper wheel
x32=rightloc; y32-y2 = y5-y24;  % upper harness
x31=x32; y2-y31=y32-y2; z200=z2;         % lower harness
draw_vloop(2,32,0.75); draw_vloop(200,31,0.75);  % harness
labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{chariot chassis}
%    \begin{macrocode}
cmchar "Linear B chariot chassis";
beginglyph(oct"271", 1.2);
x1=leftloc; x2=1/20[rightloc,leftloc];   % chariot ends
y5=13/20h;   % chariot height
x3=x4=x5=1/3[x1,x2]; y3=0; y4=1/2[y3,y5]; % wheel locations
y1=y2=1/2[y4,y5];
y13=1/2[y3,y4]; y14=1/2[y4,y5];
x3-x13=1/2(y4-y3); x14=x13;
x100=x3; y100=y13;
draw z2..z5..z1..z100..z2;    % body
draw z100--z5;
z23=z13 reflectedabout (z3,z5); z24=z14 reflectedabout (z3,z5);
%draw z3..z13..z4..z23..cycle; draw z3--z4; draw z13--z23; % lower wheel
%draw z4..z14..z5..z24..cycle; draw z4--z5; draw z14--z24; % upper wheel
x32=rightloc; y32-y2 = y5-y24;  % upper harness
x31=x32; y2-y31=y32-y2; z200=z2;         % lower harness
draw_vloop(2,32,0.75); draw_vloop(200,31,0.75);  % harness
labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,100); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{chariot wheel}
%    \begin{macrocode}
cmchar "Linear B wheel";
beginglyph(oct"272", 0.6);
x1=leftloc; x3=rightloc; y4=0; x0=x4=x2=1/2[x1,x3]; 
y0-y4=x0-x1; y1=y3=y0; y2-y0=y0-y4;
draw z1..z2..z3..z4..cycle;    % rim
draw z1--z3; draw z2--z4;      % 4 spokes
z11=z1 rotatedaround (z0,45); % draw z11--z0;
z12=z2 rotatedaround (z0,45); % draw z12--z0;
z13=z3 rotatedaround (z0,45); % draw z13--z0;
z14=z4 rotatedaround (z0,45); % draw z14--z0;
draw z11--z13; draw z12--z14;
labels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18); endchar;

%    \end{macrocode}
% \end{routine}
%
% \begin{routine}{sword}
%    \begin{macrocode}
cmchar "Linear B sword";
beginglyph(oct"273", 0.3);
x1=x2=midloc; y1=0; y2=h;
x3=x5=leftloc; x4=x7=rightloc; y3=y4=0; y5=y7=1/4h;
draw z3--z4;  % handle
draw z5--z2--z7--cycle; % blade
draw z1--z2;
labels(1,2,3,4,5,6,7); endchar;

%    \end{macrocode}
% \end{routine}
% 
%
% \begin{routine}{arrow}
%    \begin{macrocode}
cmchar "Linear B arrow";
beginglyph(oct"274", 0.8);
numeric alpha, beta; alpha=4/20h;
x1=leftloc+alpha; x3=rightloc; y1=y3=alpha;  % shaft
z2=5/20[z1,z3];
beta=x2-x1;
z11=(leftloc,0); x21=x11; y21-y1=y1-y11;     % fletches
z12=z11 shifted (beta,0); z22=z21 shifted (beta,0);
x13=x23 = x3-alpha; y13=y11; y23=y21;        % head
draw z1--z3; draw z11--z1--z21; draw z12--z2--z22; draw z13--z3--z23;
labels(1,2,3,11,12,13,21,22,23); endchar;

%    \end{macrocode}
% \end{routine}
% 
%
% \begin{routine}{spear}
%    \begin{macrocode}
cmchar "Linear B spear";
beginglyph(oct"275", 0.8);
numeric alpha; alpha=4/20h;
pair SH, HS;
z1=(leftloc,h); z2=(rightloc,0);             % shaft
SH = (x2-x1, y2-y1);
HS = (y2-y1, x1-x2);
z4=12/20[z1,z2];
x6=1/3[x4,x2]; y6=0;
z9 = 1/3[z4,z2]; z7=z9 shifted -0.1HS;
draw z1--z2;
draw z4..z6; draw z6..{SH}z2;
draw z4..z7..z2;
labels(1,2,3,4,4,6,7,8,9); endchar;

%    \end{macrocode}
% \end{routine}
% 
%
%    The end of this file
%    \begin{macrocode} 
end

%</up> 
%    \end{macrocode}
%
%
%
% \section{The font definition files} \label{sec:fd}
%
%    \begin{macrocode}
%<*fdot1>
\ProvidesFile{ot1linb.fd}[1999/06/20 v1.0 Linear B font definition]
\DeclareFontFamily{OT1}{linb}{}
  \DeclareFontShape{OT1}{linb}{m}{n}{ <-> linb10 }{}
  \DeclareFontShape{OT1}{linb}{bx}{n}{ <-> sub linb/m/n }{}
  \DeclareFontShape{OT1}{linb}{b}{n}{ <-> sub linb/m/n }{}
  \DeclareFontShape{OT1}{linb}{m}{sl}{ <-> sub linb/m/n }{}
  \DeclareFontShape{OT1}{linb}{m}{it}{ <-> sub linb/m/n }{}
%</fdot1>
%    \end{macrocode}
%
%
%    \begin{macrocode}
%<*fdt1>
\ProvidesFile{t1linb.fd}[1999/06/20 v1.0 Linear B font definition]
\DeclareFontFamily{T1}{linb}{}
  \DeclareFontShape{T1}{linb}{m}{n}{ <-> linb10 }{}
  \DeclareFontShape{T1}{linb}{bx}{n}{ <-> sub linb/m/n }{}
  \DeclareFontShape{T1}{linb}{b}{n}{ <-> sub linb/m/n }{}
  \DeclareFontShape{T1}{linb}{m}{sl}{ <-> sub linb/m/n }{}
  \DeclareFontShape{T1}{linb}{m}{it}{ <-> sub linb/m/n }{}
%</fdt1>
%    \end{macrocode}
%
% \section{The \Lpack{linearb} package code} \label{sec:code}
%
%    Announce the name and version of the package, which requires
% \LaTeXe{}.
%    \begin{macrocode}
%<*usc>
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{linearb}[2005/06/22 v1.2 package for Linear B font]
%    \end{macrocode}
%
%   We need to check the encoding default for the document.
% \begin{macro}{\Tienc}
%    \begin{macrocode}
\providecommand{\Tienc}{T1}
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\linbfamily}
%    Selects the Linear B font family in the T1 encoding if this
% is the document's default encoding. With the extended glyphs I think
% that T1 should be used in any case.
% \changes{v1.2}{2005/06/22}{Only select the T1 encoding}
%    \begin{macrocode}
%%%\ifx\Tienc\encodingdefault
%%%  \newcommand{\linbfamily}{\usefont{T1}{linb}{m}{n}}
%%%\else
%%%  \newcommand{\linbfamily}{\usefont{OT1}{linb}{m}{n}}
%%%\fi
\newcommand{\linbfamily}{\usefont{T1}{linb}{m}{n}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\textlinb}
%    Text command for the Linear B font family.
%    \begin{macrocode}
\DeclareTextFontCommand{\textlinb}{\linbfamily}
%    \end{macrocode}
% \end{macro}
%
%    The commands for the basic signs.
% \begin{macro}{\Ba}
% \begin{macro}{\Be}
% \begin{macro}{\Bi}
% \begin{macro}{\Bo}
% \begin{macro}{\Bu}
% The 5 vowels.
%    \begin{macrocode}
\chardef\Ba=`a
\chardef\Be=`e
\chardef\Bi=`i
\chardef\Bo=`o
\chardef\Bu=`u
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\Bda}
% \begin{macro}{\Bde}
% \begin{macro}{\Bdi}
% \begin{macro}{\Bdo}
% \begin{macro}{\Bdu}
% The 5 D syllables.
%    \begin{macrocode}
\chardef\Bda=`d
\chardef\Bde=`D
\chardef\Bdi=`f
\chardef\Bdo=`g
\chardef\Bdu=`x
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
%
% \begin{macro}{\Bja}
% \begin{macro}{\Bje}
% \begin{macro}{\Bjo}
% \begin{macro}{\Bju}
% The 4 J syllables.
%    \begin{macrocode}
\chardef\Bja=`j
\chardef\Bje=`J
\chardef\Bjo=`b
\chardef\Bju=`L
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
%
% \begin{macro}{\Bka}
% \begin{macro}{\Bke}
% \begin{macro}{\Bki}
% \begin{macro}{\Bko}
% \begin{macro}{\Bku}
% The 5 K syllables.
%    \begin{macrocode}
\chardef\Bka=`k
\chardef\Bke=`K
\chardef\Bki=`c
\chardef\Bko=`h
\chardef\Bku=`v
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
%
% \begin{macro}{\Bma}
% \begin{macro}{\Bme}
% \begin{macro}{\Bmi}
% \begin{macro}{\Bmo}
% \begin{macro}{\Bmu}
% The 5 M syllables.
%    \begin{macrocode}
\chardef\Bma=`m
\chardef\Bme=`M
\chardef\Bmi=`y
\chardef\Bmo=`A
\chardef\Bmu=`B
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
%
% \begin{macro}{\Bna}
% \begin{macro}{\Bne}
% \begin{macro}{\Bni}
% \begin{macro}{\Bno}
% \begin{macro}{\Bnu}
% The 5 N syllables.
%    \begin{macrocode}
\chardef\Bna=`n
\chardef\Bne=`N
\chardef\Bni=`C
\chardef\Bno=`E
\chardef\Bnu=`F
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\Bpa}
% \begin{macro}{\Bpe}
% \begin{macro}{\Bpi}
% \begin{macro}{\Bpo}
% \begin{macro}{\Bpu}
% The 5 P syllables.
%    \begin{macrocode}
\chardef\Bpa=`p
\chardef\Bpe=`P
\chardef\Bpi=`G
\chardef\Bpo=`H
\chardef\Bpu=`I
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
%
% \begin{macro}{\Bqa}
% \begin{macro}{\Bqe}
% \begin{macro}{\Bqi}
% \begin{macro}{\Bqo}
% The 4 Q syllables. 
%    \begin{macrocode}
\chardef\Bqa=`q
\chardef\Bqe=`Q
\chardef\Bqi=`X
\chardef\Bqo=`8
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
%
% \begin{macro}{\Bra}
% \begin{macro}{\Bre}
% \begin{macro}{\Bri}
% \begin{macro}{\Bro}
% \begin{macro}{\Bru}
% The 5 R syllables.
%    \begin{macrocode}
\chardef\Bra=`r
\chardef\Bre=`R
\chardef\Bri=`O
\chardef\Bro=`U
\chardef\Bru=`V
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\Bsa}
% \begin{macro}{\Bse}
% \begin{macro}{\Bsi}
% \begin{macro}{\Bso}
% \begin{macro}{\Bsu}
% The 5 S syllables.
%    \begin{macrocode}%
\chardef\Bsa=`s
\chardef\Bse=`S
\chardef\Bsi=`Y
\chardef\Bso=`1
\chardef\Bsu=`2
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\Bta}
% \begin{macro}{\Bte}
% \begin{macro}{\Bti}
% \begin{macro}{\Bto}
% \begin{macro}{\Btu}
% The 5 T syllables.
%    \begin{macrocode}
\chardef\Bta=`t
\chardef\Bte=`T
\chardef\Bti=`3
\chardef\Bto=`4
\chardef\Btu=`5
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\Bwa}
% \begin{macro}{\Bwe}
% \begin{macro}{\Bwi}
% \begin{macro}{\Bwo}
% The 4 W syllables.
%    \begin{macrocode}
\chardef\Bwa=`w
\chardef\Bwe=`W
\chardef\Bwi=`6
\chardef\Bwo=`7
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\Bza}
% \begin{macro}{\Bze}
% \begin{macro}{\Bzo}
% The 3 Z syllables.
%    \begin{macrocode}
\chardef\Bza=`z
\chardef\Bze=`Z
\chardef\Bzo=`9
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
%
% \begin{macro}{\Baii}
% \begin{macro}{\Baiii}
% \begin{macro}{\Bau}
% \begin{macro}{\Bdwe}
% \begin{macro}{\Bdwo}
% \begin{macro}{\Bnwa}
% \begin{macro}{\Bpaiii}
% \begin{macro}{\Bpuii}
% \begin{macro}{\Bpte}
% \begin{macro}{\Braii}
% \begin{macro}{\Braiii}
% \begin{macro}{\Boii}
% \begin{macro}{\Bswa}
% \begin{macro}{\Bswi}
% \begin{macro}{\Btaii}
% \begin{macro}{\Btwo}
%    The commands for the 16 optional characters.
%    \begin{macrocode}
\chardef\Baii='073
\chardef\Baiii='074
\chardef\Bau='075
\chardef\Bdwe='076
\chardef\Bdwo='077
\chardef\Bnwa='100
\chardef\Bpaiii='133
\chardef\Bpuii='134
\chardef\Bpte='135
\chardef\Braii='136
\chardef\Braiii='137
\chardef\Broii='140
\chardef\Bswa='173
\chardef\Bswi='174
\chardef\Btaii='175
\chardef\Btwo='176
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
%
% \begin{macro}{\BUi}
% \begin{macro}{\BUii}
% \begin{macro}{\BUiii}
% \begin{macro}{\BUiv}
% \begin{macro}{\BUv}
% \begin{macro}{\BUvi}
% \begin{macro}{\BUvii}
% \begin{macro}{\BUviii}
% \begin{macro}{\BUix}
% \begin{macro}{\BUx}
% \begin{macro}{\BUxi}
%    The commands for the 11 unidentified characters.
% \changes{v1.2}{2005/06/22}{Changed the macros for unidentified glyphs}
%    \begin{macrocode}
%%%\chardef\BUi='000
%%%\chardef\BUii='001
%%%\chardef\BUiii='002
%%%\chardef\BUiv='003
%%%\chardef\BUv='004
%%%\chardef\BUvi='005
%%%\chardef\BUvii='006
%%%\chardef\BUviii='007
%%%\chardef\BUix='010
%%%\chardef\BUx='011
%%%\chardef\BUxi='012
\chardef\BUi='035
\chardef\BUii='036
\chardef\BUiii='037
\chardef\BUiv='040
\chardef\BUv='041
\chardef\BUvi='042
\chardef\BUvii='043
\chardef\BUviii='044
\chardef\BUix='045
\chardef\BUx='046
\chardef\BUxi='047
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\BUxii}
% \begin{macro}{\Btwe}
%    My last unidentified character which \jurgen{} says is the \textit{twe}
% syllable.
%    \begin{macrocode}
\chardef\BUxii='177
\chardef\Btwe='177
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
%    Now the commands for numerals.
% \begin{macro}{\BNi}
% \begin{macro}{\BNii}
% \begin{macro}{\BNiii}
% \begin{macro}{\BNiv}
% \begin{macro}{\BNv}
% \begin{macro}{\BNvi}
% \begin{macro}{\BNvii}
% \begin{macro}{\BNviii}
% \begin{macro}{\BNix}
%    Commands for numbers from 1 to 9.
% \changes{v1.2}{2005/06/22}{Changed the macros for the numerals}
% 
%    \begin{macrocode}
%%%\chardef\BNi='013
%%%\chardef\BNii='014
%%%\chardef\BNiii='015
%%%\chardef\BNiv='016
%%%\chardef\BNv='017
%%%\chardef\BNvi='020
%%%\chardef\BNvii='021
%%%\chardef\BNviii='022
%%%\chardef\BNix='023
\chardef\BNi='001
\chardef\BNii='002
\chardef\BNiii='003
\chardef\BNiv='004
\chardef\BNv='005
\chardef\BNvi='006
\chardef\BNvii='007
\chardef\BNviii='010
\chardef\BNix='011
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\BNx}
% \begin{macro}{\BNxx}
% \begin{macro}{\BNxxx}
% \begin{macro}{\BNxl}
% \begin{macro}{\BNl}
% \begin{macro}{\BNlx}
% \begin{macro}{\BNlxx}
% \begin{macro}{\BNlxxx}
% \begin{macro}{\BNxc}
%    Commands for the tens, 10 to 90
%    \begin{macrocode}
%%%\chardef\BNx='024
%%%\chardef\BNxx='025
%%%\chardef\BNxxx='026
%%%\chardef\BNxl='027
%%%\chardef\BNl='030
%%%\chardef\BNlx='031
%%%\chardef\BNlxx='032
%%%\chardef\BNlxxx='033
%%%\chardef\BNxc='034
\chardef\BNx='012
\chardef\BNxx='013
\chardef\BNxxx='014
\chardef\BNxl='015
\chardef\BNl='016
\chardef\BNlx='017
\chardef\BNlxx='020
\chardef\BNlxxx='021
\chardef\BNxc='022
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\BNc}
% \begin{macro}{\BNcc}
% \begin{macro}{\BNccc}
% \begin{macro}{\BNcd}
% \begin{macro}{\BNd}
% \begin{macro}{\BNdc}
% \begin{macro}{\BNdcc}
% \begin{macro}{\BNdccc}
% \begin{macro}{\BNcm}
%    Commands for the hundreds, 100 to 900
%    \begin{macrocode}
%%%\chardef\BNc='035
%%%\chardef\BNcc='036
%%%\chardef\BNccc='037
%%%\chardef\BNcd='040
%%%\chardef\BNd='041
%%%\chardef\BNdc='042
%%%\chardef\BNdcc='043
%%%\chardef\BNdccc='044
%%%\chardef\BNcm='045
\chardef\BNc='023
\chardef\BNcc='024
\chardef\BNccc='025
\chardef\BNcd='026
\chardef\BNd='027
\chardef\BNdc='030
\chardef\BNdcc='031
\chardef\BNdccc='032
\chardef\BNcm='033
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\BNm}
%    Command for 1000.
%    \begin{macrocode}
%%\chardef\BNm='046
\chardef\BNm='034

%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\BPwta}
% \begin{macro}{\BPwtb}
% \begin{macro}{\BPwtc}
% \begin{macro}{\BPwtd}
% \begin{macro}{\BPtalent}
% \begin{macro}{\BPvola}
% \begin{macro}{\BPvolb}
% \begin{macro}{\BPvolcd}
% \begin{macro}{\BPvolcf}
%  Macros for the weights and measures pictograms.
% \changes{v1.2}{2005/06/22}{Added macros for weights and measures}
%    \begin{macrocode}
\chardef\BPwta='200
\chardef\BPwtb='201
\chardef\BPwtc='202
\chardef\BPwtd='203
\chardef\BPtalent='204
\chardef\BPvola='210
\chardef\BPvolb='211
\chardef\BPvolcd='212
\chardef\BPvolcf='213

%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{BPcloth}
% \begin{macro}{BPwool}
% \begin{macro}{BPwheat}
% \begin{macro}{BPbarley}
% \begin{macro}{BPwine}
% \begin{macro}{BPolive}
% \begin{macro}{BPbronze}
% \begin{macro}{BPgold}
% Macros for commodities.
% \changes{v1.2}{2005/06/22}{Added macros for commodities}
%    \begin{macrocode}
\chardef\BPcloth='220
\chardef\BPwool='221
\chardef\BPwheat='222
\chardef\BPbarley='223
\chardef\BPwine='224
\chardef\BPolive='225
\chardef\BPbronze='226
\chardef\BPgold='227

%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\BPcup}
% \begin{macro}{\BPgoblet}
% \begin{macro}{\BPamphora}
% \begin{macro}{\BPwineiih}
% \begin{macro}{\BPwineiiih}
% \begin{macro}{\BPwineivh}
% \begin{macro}{\BPcauldroni}
% \begin{macro}{\BPcauldronii}
% Macros for vessels for holding liquid.
% \changes{v1.2}{2005/06/22}{Added macros for vessels}
%    \begin{macrocode}
\chardef\BPcup='230
\chardef\BPgoblet='231
\chardef\BPamphora='232
\chardef\BPwineiih='233
\chardef\BPwineiiih='234
\chardef\BPwineivh='235
\chardef\BPcauldroni='236
\chardef\BPcauldronii='237

%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\BPman}
% \begin{macro}{\BPwoman}
% \begin{macro}{\BPhorse}
% \begin{macro}{\BPfoal}
% Macros for man, woman, and horses.
% \changes{v1.2}{2005/06/22}{Added macros for humans and horses}
%    \begin{macrocode}
\chardef\BPman='240
\chardef\BPwoman='241
\chardef\BPhorse='244
\chardef\BPfoal='245

%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\BPpig}
% \begin{macro}{\BPboar}
% \begin{macro}{\BPsow}
% \begin{macro}{\BPox}
% \begin{macro}{\BPbull}
% \begin{macro}{\BPcow}
% Macros for pigs and oxen.
% \changes{v1.2}{2005/06/22}{Added macros for livestock}
%    \begin{macrocode}
\chardef\BPpig='250
\chardef\BPboar='251
\chardef\BPsow='252
\chardef\BPox='253
\chardef\BPbull='254
\chardef\BPcow='255

%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\BPsheep}
% \begin{macro}{\BPram}
% \begin{macro}{\BPewe}
% \begin{macro}{\BPgoat}
% \begin{macro}{\BPbilly}
% \begin{macro}{\BPnanny}
% Macros for sheep and goats.
%    \begin{macrocode}
\chardef\BPsheep='260
\chardef\BPram='261
\chardef\BPewe='262
\chardef\BPgoat='263
\chardef\BPbilly='264
\chardef\BPnanny='265

%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\BPchariot}
% \begin{macro}{\BPchassis}
% \begin{macro}{\BPwheel}
% \begin{macro}{\BPsword}
% \begin{macro}{\BParrow}
% \begin{macro}{\BPspear}
% Weapons of war.
% \changes{v1.2}{2005/06/22}{Added macros for weapons}
%    \begin{macrocode}
\chardef\BPchariot='270
\chardef\BPchassis='271
\chardef\BPwheel='272
\chardef\BPsword='273
\chardef\BParrow='274
\chardef\BPspear='275

%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
%
% \begin{macro}{\translitlinbfont}
% \begin{macro}{\translitlinb}
%    |\translitlinb{|\meta{char-commands}|}| transliterates Linear B character
% commands into distinguished syllables; these are typeset using the 
% |\translitlinbfont| font specification.
%    \begin{macrocode}
\newcommand{\translitlinbfont}{\itshape}
\newcommand{\translitlinb}[1]{{%
  \@translitB\translitlinbfont #1}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\@translitB}
%    This macro redefines all the character producing commands for use
% in |\translitlinb|.
%
% Start with the 5 vowels. We have to make sure that there are no extraneous
% spaces within the command.
%    \begin{macrocode}
\newcommand{\@translitB}{%
\def\Ba{a-}\def\Be{e-}\def\Bi{i-}\def\Bo{o-}\def\Bu{u-}%
%    \end{macrocode}    
%
% The 5 D syllables.
%    \begin{macrocode}
\def\Bda{da-}\def\Bde{de-}\def\Bdi{di-}\def\Bdo{do-}\def\Bdu{du-}%
%    \end{macrocode}
%
% The 4 J syllables.
%    \begin{macrocode}
\def\Bja{ja-}\def\Bje{je-}\def\Bjo{jo-}\def\Bju{ju-}%
%    \end{macrocode}
%
% The 5 K syllables.
%    \begin{macrocode}
\def\Bka{ka-}\def\Bke{ke-}\def\Bki{ki-}\def\Bko{ko-}\def\Bku{ku-}%
%    \end{macrocode}
%
% The 5 M syllables.
%    \begin{macrocode}
\def\Bma{ma-}\def\Bme{me-}\def\Bmi{mi-}\def\Bmo{mo-}\def\Bmu{mu-}%
%    \end{macrocode}
%
% The 5 N syllables.
%    \begin{macrocode}
\def\Bna{na-}\def\Bne{ne-}\def\Bni{ni-}\def\Bno{no-}\def\Bnu{nu-}%
%    \end{macrocode}
%
% The 5 P syllables.
%    \begin{macrocode}
\def\Bpa{pa-}\def\Bpe{pe-}\def\Bpi{pi-}\def\Bpo{po-}\def\Bpu{pu-}%
%    \end{macrocode}
%
% The 4 Q syllables.
%    \begin{macrocode}
\def\Bqa{qa-}\def\Bqe{qe-}\def\Bqi{qi-}\def\Bqo{qo-}%
%    \end{macrocode}
%
% The 5 R syllables.
%    \begin{macrocode}
\def\Bra{ra-}\def\Bre{re-}\def\Bri{ri-}\def\Bro{ro-}\def\Bru{ru-}%
%    \end{macrocode}
%
% The 5 S syllables.
%    \begin{macrocode}
\def\Bsa{sa-}\def\Bse{se-}\def\Bsi{si-}\def\Bso{so-}\def\Bsu{su-}%
%    \end{macrocode}
%
% The 5 T syllables.
%    \begin{macrocode}
\def\Bta{ta-}\def\Bte{te-}\def\Bti{ti-}\def\Bto{to-}\def\Btu{tu-}%
%    \end{macrocode}
%
% The 4 W syllables.
%    \begin{macrocode}
\def\Bwa{wa-}\def\Bwe{we-}\def\Bwi{wi-}\def\Bwo{wo-}%
%    \end{macrocode}
%
% The 3 Z syllables.
%    \begin{macrocode}
\def\Bza{za-}\def\Bze{ze-}\def\Bzo{zo-}%
%    \end{macrocode}
%
% The 16 optional signs.
%    \begin{macrocode}
\def\Baii{a2-}\def\Baiii{a3-}\def\Bau{au-}%
\def\Bdwe{dwe-}\def\Bdwo{dwo-}%
\def\Bnwa{nwa-}%
\def\Bpaiii{pa3-}\def\Bpuii{pu2-}\def\Bpte{pte-}%
\def\Braii{ra2-}\def\Braiii{ra3-}\def\Broii{ro2-}%
\def\Bswa{swa-}\def\Bswi{swi-}%
\def\Btaii{ta2-}\def\Btwo{two-}%
%    \end{macrocode}
%
% The numbers.
%    \begin{macrocode}
\def\BNi{1-}\def\BNii{2-}\def\BNiii{3-}\def\BNiv{4-}\def\BNv{5-}%
  \def\BNvi{6-}\def\BNvii{7-}\def\BNviii{8-}\def\BNix{9-}%
\def\BNx{10-}\def\BNxx{20-}\def\BNxxx{30-}\def\BNxl{40-}\def\BNl{50-}%
  \def\BNlx{60-}\def\BNlxx{70-}\def\BNlxxx{80-}\def\BNxc{90-}%
\def\BNc{100-}\def\BNcc{200-}\def\BNccc{300-}\def\BNcd{400-}\def\BNd{500-}%
  \def\BNdc{600-}\def\BNdcc{700-}\def\BNdccc{800-}\def\BNcm{900-}%
\def\BNm{1000-}%
%    \end{macrocode}
%
% The 11 unidentified signs. These all map to `?-'.
%    \begin{macrocode}
\def\BUi{?-}\def\BUii{?-}\def\BUiii{?-}\def\BUiv{?-}\def\BUv{?-}\def\BUvi{?-}%
  \def\BUvii{?-}\def\BUviii{?-}\def\BUix{?-}\def\BUx{?-}\def\BUxi{?-}%
%    \end{macrocode}
%
% The unidentified sign looking like a B, which \jurgen says is the \textit{twe}
% syllable.
%    \begin{macrocode}
\def\BUxii{?-}\def\Btwe{twe-}%
%    \end{macrocode}
%
% Weights and measures.
%    \begin{macrocode}
\def\BPwta{ /weightA/ }\def\BPwtb{ /weightB/ }\def\BPwtc{ /weightC/ }%
\def\BPwtd{ /weightC/ }\def\BPtalent{ /talent/ }%
%    \end{macrocode}
% Volumetric measures.
%    \begin{macrocode}
\def\BPvola{ /volumeA/ }\def\BPvolb{ /volumeB/ }\def\BPvolcd{ /volumeC/ }%
\def\BPvolcf{ /volumeC/ }%
%    \end{macrocode}
%
% Commodities.
%    \begin{macrocode}
\def\BPcloth{ /cloth/ }\def\BPwool{ /wool/ }\def\BPwheat{ /wheat/ }%
\def\BPbarley{ /barley/ }\def\BPwine{ /wine/ }\def\BPolive{ /olive oil/ }%
\def\BPbronze{ /bronze/ }\def\BPgold{ /gold/ }%
%    \end{macrocode}
%
% Vessels
%    \begin{macrocode}
\def\BPcup{ /cup/ }\def\BPgoblet{ /goblet/ }\def\BPamphora{ /amphora/ }%
\def\BPwineiih{ /wine jar/ }\def\BPwineiiih{ /wine jar/ }\def\BPwineivh{ /wine jar/ }%
\def\BPcauldroni{ /cauldron/ }\def\BPcauldronii{ /cauldron/ }%
%    \end{macrocode}
%
% Humans and horses
%    \begin{macrocode}
\def\BPman{ /man/ }\def\BPwoman{ /woman/ }\def\BPhorse{ /horse/ }\def\BPfoal{ /foal/ }%
%    \end{macrocode}
%
% Livestock.
%    \begin{macrocode}
\def\BPpig{ /pig/ }\def\BPboar{ /boar/ }\def\BPsow{ /sow/ }%
\def\BPox{ /ox/ }\def\BPbull{ /bull/ }\def\BPcow{ /cow/ }%
\def\BPsheep{ /sheep/ }\def\BPram{ /ram/ }\def\BPewe{ /ewe/ }%
\def\BPgoat{ /goat/ }\def\BPbilly{ /billy/ }\def\BPnanny{ /nanny/ }%
%    \end{macrocode}
%
% Weapons
%    \begin{macrocode}
\def\BPchariot{ /chariot/ }\def\BPchassis{ /chassis/ }\def\BPwheel{ /wheel/ }%
\def\BPsword{ /sword/ }\def\BParrow{ /arrow/ }\def\BPspear{ /spear/ }%
%    \end{macrocode}
%
% Close the macro definition.
%    \begin{macrocode}
} % end of \@translitB
%    \end{macrocode}
% \end{macro}
%
%
%    The end of this package.
%    \begin{macrocode}
%</usc>
%    \end{macrocode}
%
% \section{Map file}
%
%    A short map file.
% \changes{v1.2}{2005/06/22}{Added map file}
%
%    \begin{macrocode}
%<*map>
linb10        Archaic-Linear-B      <linb10.pfb
%</map>
%    \end{macrocode}
%
%  That's it.
%
%
% \Finale
%
\endinput

%% \CharacterTable
%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%%   Digits        \0\1\2\3\4\5\6\7\8\9
%%   Exclamation   \!     Double quote  \"     Hash (number) \#
%%   Dollar        \$     Percent       \%     Ampersand     \&
%%   Acute accent  \'     Left paren    \(     Right paren   \)
%%   Asterisk      \*     Plus          \+     Comma         \,
%%   Minus         \-     Point         \.     Solidus       \/
%%   Colon         \:     Semicolon     \;     Less than     \<
%%   Equals        \=     Greater than  \>     Question mark \?
%%   Commercial at \@     Left bracket  \[     Backslash     \\
%%   Right bracket \]     Circumflex    \^     Underscore    \_
%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%%   Right brace   \}     Tilde         \~}


