summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/fonts/archaic/protosem.dtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-11 23:49:08 +0000
committerKarl Berry <karl@freefriends.org>2006-01-11 23:49:08 +0000
commit10e86525da5f0224078b5bb299e21166a36631fc (patch)
tree4ef035be3ffb624eac1de0eea79c4550a84d2d6c /Master/texmf-dist/source/fonts/archaic/protosem.dtx
parent7f97ebfa628c4d00c1d298daf8b8b5da3781fdb5 (diff)
trunk/Master/texmf-dist/source/fonts
git-svn-id: svn://tug.org/texlive/trunk@111 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/fonts/archaic/protosem.dtx')
-rw-r--r--Master/texmf-dist/source/fonts/archaic/protosem.dtx1528
1 files changed, 1528 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/fonts/archaic/protosem.dtx b/Master/texmf-dist/source/fonts/archaic/protosem.dtx
new file mode 100644
index 00000000000..5bbcb0b9c8c
--- /dev/null
+++ b/Master/texmf-dist/source/fonts/archaic/protosem.dtx
@@ -0,0 +1,1528 @@
+% \iffalse meta-comment
+%
+% protosem.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.
+%
+%<*driver>
+\documentclass[twoside]{ltxdoc}
+\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{protosem.dtx}
+\end{document}
+%</driver>
+%
+% \fi
+%
+% \CheckSum{389}
+%
+% \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/03/14}{First public release}
+% \changes{v1.1}{2000/09/30}{Minor changes to glyph encodings}
+% \changes{v1.2}{2005/03/18}{Updated details}
+%
+% \def\fileversion{v1.0} \def\filedate{1999/03/14}
+% \def\fileversion{v1.1} \def\filedate{2000/09/30}
+% \def\fileversion{v1.2} \def\filedate{2005/03/18}
+% \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{\thisfont}{Proto-Semitic}
+%
+% \title{The \Lpack{Proto-Semitic} fonts\thanks{This
+% file has version number \fileversion, last revised
+% \filedate.}}
+%
+% \author{%
+% Peter Wilson\thanks{\texttt{herries dot press at earthlink dot net}}\\
+% Herries Press }
+% \date{\filedate}
+% \maketitle
+% \begin{abstract}
+% The \Lpack{protosem} package provides a set of fonts for the
+% Proto-Semitic alphabet which was used around 1600~\BC{} in the Middle East.
+% \end{abstract}
+% \tableofcontents
+%
+%
+% \section{Introduction}
+%
+% The Phoenician alphabet and characters is a direct ancestor of our modern day
+% Latin alphabet and fonts.
+% The font presented here is one of a series of fonts intended to show how
+% the modern 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.
+% Later sections, if any, contain commented code for the fonts
+% and source code for the package.
+%
+% \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 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{protosem} package} \label{sec:usc}
+%
+% The Proto-Semitic alphabet provided by this package is probably
+% a precursor to the Phoenician alphabet. As far as I can make out
+% from Davies~\cite{DAVIES97}, Drucker~\cite{DRUCKER95} and
+% Healey~\cite{HEALEY90}, there may have been several proto- alphabets
+% being referred to as Proto-Siniatic or Proto-Canaanite for example.
+% I have taken what I can from the sources available to me and
+% produced a sort of generic Proto-Semitic font.
+%
+% The alphabet consisted of 23 letters, some of which came in two
+% different forms. The writing direction was normally left to right
+% but could also be vertical.
+%
+% \begin{table}
+% \begin{addtomargins}{-2in}
+% \centering
+% \caption{Names and meanings of \thisfont{} letters}\label{tab}
+% \begin{tabular}{cllclcl} \hline
+% & & & & & \multicolumn{2}{c}{Alternative} \\
+% Value & Name & Meaning & ASCII & command & ASCII & Command \\ \hline
+% \textit{a} & alpu & ox & ' a & |\Arq| |\Aa| |\Aaleph| & A & |\AAa| |\AAaleph| \\
+% \textit{b} & betu & house & b & |\Ab| |\Abeth| & B & |\AAb| |\AAbeth| \\
+% \textit{g} & & throw-stick? & g & |\Ag| |\Agimel| & & \\
+% \textit{d} & & fish & d & |\Ad| |\Adaleth| & D & |\AAd| |\AAdaleth| \\
+% \textit{h} & & man? & e & |\Ae| |\Ahe| & E & |\AAe| |\AAhe| \\
+% \textit{w} & wawwu & hook/peg & w & |\Aw| |\Avav| & & \\
+% \textit{z} & & & z & |\Az| |\Azayin| & & \\
+% \textit{\d{h}} & hotu & fence & h & |\Ahd| |\Aheth| & H & |\AAhd| |\AAheth| \\
+% \textit{\d{t}} & & twisted flax & T & |\Atd| |\Ateth| & & \\
+% \textit{y} & yadu & hand/arm & y & |\Ay| |\Ayod| & Y & |\AAy| |\AAyod| \\
+% \textit{k} & kappu & palm of hand & k & |\Ak| |\Akaph| & K & |\AAk| |\AAkaph| \\
+% \textit{l} & lamdu & ox goad/whip & l & |\Al| |\Alamed| & L & |\AAl| |\AAlamed| \\
+% \textit{m} & mayyuma? & water & m & |\Am| |\Amem| & & \\
+% \textit{n} & nahasu & snake & n & |\An| |\Anun| & & \\
+% \textit{o} & enu & eye & ` o & |\Alq| |\Ao| |\Aayin| & O & |\AAo| |\AAayin| \\
+% \textit{s} & & & s & |\As| |\Asamekh| & & \\
+% \textit{p} & & leg/foot? & p & |\Ap| |\Ape| & P & |\AAp| |\AApe| \\
+% \textit{\d{s}} & & plant? & x & |\Asd| |\Asade| & X & |\AAsd| |\AAsade| \\
+% \textit{q} & & knot? & q & |\Aq| |\Aqoph| & Q & |\AAq| |\AAqoph| \\
+% \textit{r} & rasu & head & r & |\Ar| |\Aresh| & R & |\AAr| |\AAresh| \\
+% \textit{\v{s}} & & lotus pool? & S & |\Asv| |\Ashin| & & \\
+% \textit{t} & tawwu & mark & t & |\At| |\Atav| & & \\
+% ??? & & & v & |\Av| |\Ahelmet| & V & |\AAv| |\AAhelmet| \\
+% \hline
+% \end{tabular}
+% \end{addtomargins}
+% \end{table}
+%
+% Table~\ref{tab} lists, in what I hope is the Proto-Semitic alphabetic order, the
+% transliterated values of the characters and, where I know it, the name and
+% meaning of the corresponding Proto-Semitic letter.
+% Several of the glyphs are obviously based on Egyptian hieroglyphs.
+% There seems to be general agreement that the glyphs I have coded as: \\
+% |a b g d e w H T y k l m n o r S t| \\
+% fall into this category.
+%
+%
+% \DescribeMacro{\protofamily}
+% This command selects the \thisfont{} font family. The family name is |proto|.
+%
+% \DescribeMacro{\textproto}
+% The command |\textproto{|\meta{text}|}| typesets \meta{text} in the
+% \thisfont{} font.
+%
+% I have provided two means of accessing the \thisfont{} glyphs:
+% (a) by ASCII characters, and (b) via commands. These are shown in
+% Table~\ref{tab}. The columns headed `Alternative' are for accessing
+% an alternative form of the glyph, if it exists.
+%
+% \DescribeMacro{\translitproto}
+% The command |\translitproto{|\meta{commands}|}| will typeset the
+% transliteration of the \thisfont{} character commands (those in the
+% fifth and seventh columns of Table~\ref{tab}).
+%
+% \DescribeMacro{\translitprotofont}
+% The font used for the transliteration is defined by this macro,
+% which is initialsed to an italic font (i.e., |\itshape|).
+%
+% \StopEventually{
+% \bibliographystyle{alpha}
+%
+% \begin{thebibliography}{GMS94}
+%
+% \bibitem[Dav97]{DAVIES97}
+% W. V. Davies.
+% \newblock \emph{Reading the Past: Egyptian Hieroglyphs}.
+% \newblock University of California Press/British Museum, 1997.
+% \newblock (ISBN 0-520-06287-6)
+%
+% \bibitem[Dru95]{DRUCKER95}
+% Johanna Drucker.
+% \newblock \emph{The Alphabetic Labyrinth}.
+% \newblock Thames and Hudson, 1995.
+%
+% \bibitem[Fir93]{FIRMAGE93}
+% Richard A.~Firmage.
+% \newblock \emph{The Alphabet Abecedarium}.
+% \newblock David R.~Goodine, 1993.
+%
+% \bibitem[GMS94]{GOOSSENS94}
+% Michel Goossens, Frank Mittelbach, and Alexander Samarin.
+% \newblock \emph{The LaTeX Companion}.
+% \newblock Addison-Wesley Publishing Company, 1994.
+%
+% \bibitem[Hea90]{HEALEY90}
+% John F.~Healey.
+% \newblock \emph{Reading the Past: The Early Alphabet}.
+% \newblock University of California Press/British Museum, 1990.
+% \newblock (ISBN 0-520-07309-6)
+%
+% \end{thebibliography}
+% }
+%
+%
+% \section{The Metafont code} \label{sec:mf}
+%
+% \subsection{The parameter file}
+%
+% We deal with the parameter file first, and start by announcing
+% what it is for.
+% \begin{macrocode}
+%<*up>
+%%% PROTO10.MF Computer Proto-Semitic font 10 point design size.
+
+% \end{macrocode}
+% Specify the font size.
+% \begin{macrocode}
+
+font_identifier:="protosem"; font_size 10pt#;
+
+% \end{macrocode}
+%
+%
+% \begin{macro}{u}
+% \begin{macro}{ht}
+% \begin{macro}{s}
+% \begin{macro}{o}
+% \begin{macro}{px}
+% \begin{macro}{font-normal-space}
+% \begin{macro}{font-normal-shrink}
+% \begin{macro}{font-x-height}
+% \begin{macro}{font-quad}
+% Define the very simple font parameters.
+% \begin{macrocode}
+u#:=.2pt#; % unit width
+ht#:=7pt#; % height of characters (CM cap-height is approx 6.8pt)
+s#:=1.5pt#; % width correction (right and left)
+o#:=1/20pt#; % overshoot
+px#:=.6pt#; % horizontal width of pen
+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}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% For a full font, the driver file would normally be called here.
+% In this case I have embedded it.
+% \begin{macrocode}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% end of parameters
+% start of driver code
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% \end{macrocode}
+%
+%
+% \subsection{The driver file}
+%
+% If there was a seperate driver file, this would be its contents.
+%
+% \begin{macrocode}
+
+font_coding_scheme:="Protosem glyphs";
+mode_setup;
+
+% \end{macrocode}
+%
+% \begin{macro}{ho}
+% \begin{macro}{leftloc}
+% \begin{macro}{py}
+% Perform additional setup.
+% \begin{macrocode}
+ho#:=o#; % horizontal overshoot
+leftloc#:=s#; % leftmost xcoord of character
+py#:=.8px#; % 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}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{midloc}
+% \begin{macro}{rightloc}
+% Variables for the middle xcoord and rightmost xcoord of a character.
+% \begin{macrocode}
+numeric midloc, rightloc;
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{stylus}
+% Define the pen.
+% \begin{macrocode}
+pickup pencircle xscaled px yscaled py;
+stylus:=savepen;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{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{macro}
+%
+% \begin{macro}{cmchar}
+% |cmchar| should precede each character
+% \begin{macrocode}
+let cmchar=\;
+
+% \end{macrocode}
+% \end{macro}
+%
+% That would be the end of a driver file, except for calling the glyph code.
+%
+%
+% \subsection{The glyph code}
+%
+% The following code generates the glyphs for the Proto-Semitic font.
+% The characters
+% are defined in the Phoenician alphabetic ordering.
+%
+% \begin{macrocode}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% end of driver code
+% start of glyph code
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \end{macrocode}
+%
+% \begin{macro}{'}
+% The Proto-Semitic letter \textit{alpu} (ox). Left profile of an oxhead.
+% \begin{macrocode}
+
+cmchar "Proto-Semitic letter ' (alpu)";
+beginglyph("'",0.8);
+numeric n[];
+n1 := rightloc-leftloc; % glyph width
+z1=(leftloc, 1/10h); % nose
+z5=(x1+y1,0);
+z3=(x1+7/8n1, 3/4h); % top of neck
+z4=(x3, 1/2y3); % bottom of neck
+z2=(1/2[x3,x1],y3); % top of forehead
+z6=(x1,h); z7=(rightloc,7/8[y2,y6]); % tips of horns
+z10=(1/4[x2,x3],2/3[y4,y3]); % eye
+z11=z10 shifted (px*down);
+draw z1--z2--z3--z4--z5--cycle; % head
+draw z10--z11; % eye
+draw z2{left}..z6{up}; % a horn
+draw z3..z7{up}; % other horn
+labels(1,2,3,4,,5,,6,7,10);
+endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{a}
+% The Proto-Semitic letter \textit{alpu} (ox). Left profile of an oxhead.
+% \begin{macrocode}
+
+cmchar "Proto-Semitic letter alpu (coded as a)";
+beginglyph("a",0.8);
+numeric n[];
+n1 := rightloc-leftloc; % glyph width
+z1=(leftloc, 1/10h); % nose
+z5=(x1+y1,0);
+z3=(x1+7/8n1, 3/4h); % top of neck
+z4=(x3, 1/2y3); % bottom of neck
+z2=(1/2[x3,x1],y3); % top of forehead
+z6=(x1,h); z7=(rightloc,7/8[y2,y6]); % tips of horns
+z10=(1/4[x2,x3],2/3[y4,y3]); % eye
+z11=z10 shifted (px*down);
+draw z1--z2--z3--z4--z5--cycle; % head
+draw z10--z11; % eye
+draw z2{left}..z6{up}; % a horn
+draw z3..z7{up}; % other horn
+labels(1,2,3,4,,5,,6,7,10);
+endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{A}
+% Alternate Proto-Semitic \textit{alpu} (ox). Right profile of an oxhead.
+% \begin{macrocode}
+
+cmchar "Alternate Proto-Semitic a";
+beginglyph("A",0.8);
+numeric n[];
+n1 := rightloc-leftloc; % glyph width
+z1=(rightloc, 1/10h); % nose
+z5=(x1-y1,0);
+z3=(x1-7/8n1, 3/4h); % top of neck
+z4=(x3, 1/2y3); % bottom of neck
+z2=(1/2[x3,x1],y3); % top of forehead
+z6=(x1,h); z7=(leftloc,7/8[y2,y6]); % tips of horns
+z10=(1/4[x2,x3],2/3[y4,y3]); % eye
+z11=z10 shifted (px*down);
+draw z1--z2--z3--z4--z5--cycle; % head
+draw z10--z11; % eye
+draw z2{right}..z6{up}; % a horn
+draw z3..z7{up}; % other horn
+labels(1,2,3,4,,5,,6,7,10);
+endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{b}
+% The Proto-Semitic \textit{betu} (house). A square with an opening.
+% \begin{macrocode}
+
+cmchar "Proto-Semitic letter b";
+beginglyph("b",0.8);
+z1=(leftloc, 0.2h); z3=(rightloc,0.8h);
+z2=(x1,y3); z4=(x3,y1);
+z5=1/3[z1,z4];
+draw z1--z2--z3--z4--z5;
+labels(1,2,3,4); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{B}
+% An alternative Proto-Semitic \textit{betu} (house), a square with a chimney.
+% \begin{macrocode}
+
+cmchar "Proto-Semitic alternate b";
+beginglyph("B",0.8);
+z1=(leftloc, 0.1h); z3=(rightloc,0.8h);
+z2=(x1,y3); z4=(x3,y1);
+z5=1/3[z2,z3]; z6=(x5,h);
+z7=2/3[z2,z3]; z8=(x7,y6);
+draw z8--z7--z3--z4--z1--z2--z5--z6;
+labels(1,2,3,4,5,6,7,8); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{g}
+% The Proto-Semitic G. Like a broken stick or a
+% throw-stick
+% \begin{macrocode}
+
+cmchar "Proto-Semitic letter g";
+beginglyph("g", 0.7);
+x1=leftloc; x3=rightloc;
+x2=3/8[x1,x3];
+y1=2/3h; y2=y3=1/3h;
+draw z1--z2--z3;
+labels(1,2,3,4); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{d}
+% The Proto-Semitic fish, facing right.
+% \begin{macrocode}
+
+cmchar "Proto-Semitic letter fish (d)";
+beginglyph("d",1.0);
+numeric alpha;
+alpha := 3/16h;
+%% body
+x1=x6=leftloc; x4=rightloc; x2=1/4[x1,x4];
+y2=y4=1/2h;
+x3=x5=1/2[x2,x4];
+y1=y5=y2-alpha; y6=y3=y2+alpha;
+%% fins
+z13=(x3-alpha,y3+alpha);
+z15=(x5-alpha,y5-alpha);
+draw z1..z2..z3{right}..z4; % body
+draw z4..z5{left}..z2..z6--z1;
+draw z3--z13; draw z5--z15; % fins
+labels(1,2,3,4,5,6,13,15); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{D}
+% Alternate Proto-Semitic fish, upright.
+% \begin{macrocode}
+
+cmchar "Alternate Proto-Semitic fish (d)";
+beginglyph("D",0.6);
+numeric n[];
+n1 := rightloc-leftloc; % glyph width
+numeric alpha;
+alpha := 3/8n1;
+%% body
+z4=(midloc,h);
+x1=x3=x4-alpha; x7=x5=x4+alpha;
+y1=y7=0;
+x2=1/4[x1,x7];
+x6=3/4[x1,x7];
+y2=y6=1/4h;
+y3=y5=1/2[y2,y4];
+%% fins
+z13=(leftloc,y3-alpha); z15=(rightloc,y13);
+draw z1..z2{up}..z3{up}..z4; % body
+draw z4..z5{down}..z6{down}..z7--z1;
+draw z3--z13; draw z5--z15; % fins
+labels(1,2,3,4,5,6,7,13,15); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{E}
+% The Proto-Semitic h?, stick man with upraised arms.
+% \begin{macrocode}
+
+cmchar "Proto-Semitic letter h? (E)";
+beginglyph("E",0.6);
+numeric alpha, beta;
+z1=(midloc,3/4h);
+alpha := 1/2(h-y1);
+beta := 24/16alpha; % 20/16 too small
+z2=(x1,1/2y1);
+z3=(leftloc, 1/2[y1,h]);
+z4=(x3,2/3[y2,y1]);
+z7=(rightloc,y3);
+z6=(x7,y4);
+z8=(x3,0);
+z9=(x7,y8);
+z10=(x1,h-alpha);
+draw z3--z4--z6--z7; % arms
+draw z8--z2--z9; % legs
+draw z1--z2; % body
+draw fullcircle scaled beta shifted z10; % head
+labels(1,2,3,4,5,6,7,8,9,10); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{e}
+% An alternate Proto-Semitic h?, abstract stick man
+% with upraised arms.
+% \begin{macrocode}
+
+cmchar "Proto-Semitic alternate h? (coded as e)";
+beginglyph("e",0.6);
+numeric alpha;
+z1=(midloc,h);
+alpha := 1/2(h-y1);
+z2=(x1,1/3y1);
+z3=(leftloc, y1);
+z4=(x3,2/3y1);
+z7=(rightloc,y3);
+z6=(x7,y4);
+z8=(x7,y2);
+z9=(x8,0);
+draw z3--z4--z6--z7; % arms
+draw z1--z2--z8--z9; % head, body, and leg
+labels(1,2,3,4,5,6,7,8,9,10); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{z}
+% Proto-Semitic letter z?. Two horizontal parallel lines.
+% \begin{macrocode}
+
+cmchar "Proto-Semitic letter z? (z)";
+beginglyph("z",0.8);
+numeric alpha;
+alpha:=0.2h;
+x1=x6=leftloc; x5=x10=rightloc;
+y1=y5=1/2h+alpha;
+y6=y10=1/2h-alpha;
+draw z1--z5; % top
+draw z6--z10; % bottom
+labels(1,2,3,4,5,6,7,8,9,10); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{H}
+% The Proto-Semitic \textit{hotu} (fence?) (h sub dot?). Looks like a fence.
+% \begin{macrocode}
+
+cmchar "Proto-Semitic letter hotu (h sub dot?) (coded as H)";
+beginglyph("H", 0.8);
+numeric alpha;
+alpha:=0.2h;
+x1=x6=leftloc; x5=x10=rightloc;
+y1=y2=y3=y4=y5=1/2h+alpha;
+y6=y7=y8=y9=y10=1/2h-alpha;
+x2=x7=1/4[x1,x5];
+x4=x9=3/4[x1,x5];
+x3=x8=1/2[x2,x4];
+draw z1--z5; % fence top
+draw z6--z10; % fence bottom
+draw z2--z7; draw z3--z8; draw z4--z9; % stakes
+labels(1,2,3,4,5,6,7,8,9,10); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{h}
+% An alternate Proto-Semitic \textit{hotu} (fence?). Looks like a vertical fence.
+% \begin{macrocode}
+
+cmchar "Alternate Proto-Semitic hotu (coded as h)";
+beginglyph("h", 0.4);
+numeric alpha;
+x1=x2=x3=x4=x5=leftloc;
+x7=x8=x9=rightloc;
+y1=0; y5=h;
+y2=y7=1/4h;
+y4=y9=3/4h;
+y3=y8=1/2[y2,y4];
+draw z1--z5; draw z7--z9; % verticals
+draw z2--z7; draw z3--z8; draw z4--z9; % horizontals
+labels(1,2,3,4,5,6,7,8,9,10); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{T}
+% The Proto-Semitic t sub dot?. Twisted flax hieroglyph.
+% \begin{macrocode}
+
+cmchar "Proto-Semitic letter t sub dot? (T)";
+beginglyph("T",0.4);
+x1=x8=x3=x6=leftloc; x9=x2=x7=x4=rightloc;
+x5=midloc;
+y1=y9=0; y5=h;
+y8=y2=3/12h;
+y6=y4=10/12h;
+y3=y7=1/2[y8,y6];
+z2'=1/2[z9,z2]; z8'=1/2[z1,z8];
+draw z1{(z2'-z1)}...z2{up}..z3{up}..z4{up}..z5{left}..
+ z6{down}..z7{down}..z8{down}...{(z9-z8')}z9;
+labels(1,2,3,4,5,6,7,8,9); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{y}
+% The Proto-Semitic \textit{yadu} (hand/arm).
+% \begin{macrocode}
+
+cmchar "Proto-Semitic letter y";
+beginglyph("y",1.0);
+numeric alpha,beta;;
+alpha := 3/8h;
+beta := 1/2alpha;
+%% the L
+x1=x2=leftloc; x3=rightloc;
+y1=1/2h+alpha; y2=y3=1/2h-alpha;
+%% the TV arial
+z4=1/2[z2,z3];
+z6=(x3,3/4[y2,y1]);
+z5=1/2[z4,z6];
+z4l=z4 shifted (beta*dir(135)); z4r=z4 shifted (beta*dir(-45));
+z5l=z5 shifted (beta*dir(135)); z5r=z5 shifted (beta*dir(-45));
+z6l=z6 shifted (beta*dir(135)); z6r=z6 shifted (beta*dir(-45));
+
+draw z1--z2--z3;
+draw z4--z6;
+draw z4l--z4r; draw z5l--z5r; draw z6l--z6r;
+labels(1,2,3,4,5,6); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{Y}
+% Alternate Proto-Semitic \textit{yadu} (hand/arm).
+% \begin{macrocode}
+
+cmchar "Alternate Proto-Semitic y";
+beginglyph("Y",1.0);
+z1=(leftloc,h); z3=(rightloc,0);
+z2=1/2[z1,z3];
+z4=(x2,y1); z5=(x3,y2);
+draw z1--z3;
+draw z4--z2--z5;
+labels(1,2,3,4,5,6); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{k}
+% The Proto-Semitic \textit{kappu} (palm of the hand).
+% \begin{macrocode}
+
+cmchar "Proto-Semitic letter k";
+beginglyph("k",0.8);
+numeric alpha;
+alpha:=0.8;
+numeric n[];
+n1 := rightloc-leftloc; % glyph width
+n2 := 1/8n1;
+z1=(leftloc+n2, h); z3=(rightloc-n2, y1);
+z11=(leftloc, 1/4h); z13=(rightloc,y11);
+z2=(midloc,0);
+z6=(1/3[x1,x3], y1); z7=(x6, 0.2h);
+z8=(2/3[x1,x3], y6); z9=(x8,y7);
+draw z1..{down}z11..z2..{up}z13..z3; % bowl
+draw z6--z7; draw z8--z9; % uprights
+labels(1,2,3,4,5,6,7,8,9,10,11,12,13); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{K}
+% An alternate Proto-Semitic \textit{kappu}.
+% \begin{macrocode}
+
+cmchar "Alternate Proto-Semitic k";
+beginglyph("K",0.8);
+numeric alpha;
+alpha:=0.8;
+numeric n[];
+n1 := rightloc-leftloc; % glyph width
+n2 := 1/8n1;
+z1=(leftloc+n2, h); z3=(rightloc-n2, y1);
+z11=(leftloc, 1/3h); z13=(rightloc,y11);
+z2=(midloc,0);
+z6=(x2, y1); z7=(x6, 0);
+z8=(2/3[x1,x3], y6); z9=(x8,y7);
+draw z1..{down}z11..z2..{up}z13..z3; % bowl
+draw z6--z7; %% draw z8--z9; % uprights
+labels(1,2,3,4,5,6,7,8,9,10,11,12,13); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{l}
+% The Proto-Semitic \textit{lamdu} (ox goad). A long spiral.
+% \begin{macrocode}
+
+cmchar "Proto-Semitic letter l";
+beginglyph("l",0.8);
+z1=(1/4[leftloc,rightloc], 2/3h);
+z3=(x1,h);
+z4=(leftloc,1/2[y1,y3]);
+z2=(1/2[leftloc,rightloc],y4);
+z6=(rightloc,0);
+z5=(1/2[x4,x3], 8/10[y6,y1]);
+draw z1{right}..z2{up}..z3{left}..z4{down}..z5..z6;
+labels(1,2,3,4,5,6); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{L}
+% Alternate Proto-Semitic \textit{lamdu} (ox goad). A long spiral.
+% \begin{macrocode}
+
+cmchar "Alternate Proto-Semitic l";
+beginglyph("L",0.8);
+z1=(1/4[rightloc,leftloc], 2/3h);
+z3=(x1,h);
+z4=(rightloc,1/2[y1,y3]);
+z2=(1/2[rightloc,leftloc],y4);
+z6=(leftloc,0);
+z5=(1/2[x4,x3], 8/10[y6,y1]);
+draw z1{left}..z2{up}..z3{right}..z4{down}..z5..z6;
+labels(1,2,3,4,5,6); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{m}
+% The Proto-Semitic \textit{mayyuma} (water). A jagged line.
+% \begin{macrocode}
+
+cmchar"Proto-Semitic letter m";
+beginglyph("m",1.0);
+numeric alpha;
+alpha := 1/16h;
+z1=(leftloc,1/2h-alpha);
+z10=(rightloc,1/2h+alpha);
+x2=1/7[x1,x10];
+x3=2/7[x1,x10];
+x4=3/7[x1,x10];
+x5=4/7[x1,x10];
+x6=5/7[x1,x10];
+x7=6/7[x1,x10];
+y2=y4=y6=y10;
+y3=y5=y7=y1;
+draw z1--z2--z3--z4--z5--z6--z7--z10;
+labels(1,2,3,4,5,6,7,8,9,10); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{n}
+% The Proto-Semitic \textit{nahasu} (snake). A wriggling cobra.
+% \begin{macrocode}
+
+cmchar "Proto-Semitic letter n";
+beginglyph("n",1.0);
+numeric alpha;
+alpha := 3/8h;
+z1=(leftloc,1/2h+alpha);
+z3=(1/4[leftloc,rightloc],1/2h);
+z5=(rightloc,y3-1/2alpha);
+z4=(3/4[leftloc,rightloc],y3);
+draw z1{dir(-20)}..{down}z3--z4{right}..z5;
+labels(1,2,3,4,5); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \begin{macro}{`}
+% The Proto-Semitic \textit{enu} (eye).
+% \begin{macrocode}
+
+cmchar "Proto-Semitic letter enu (`)";
+beginglyph("`",1.0);
+numeric alpha;
+path pth[];
+alpha := 3/16h;
+z1=(leftloc,1/2h);
+z3=(rightloc,y1);
+z2=(1/2[x1,x3],y1+alpha);
+z4=(x2,y1-alpha);
+pth1 := z1..z2..z3;
+pth2 := z1..z4..z3;
+z5 = point 0.75 of pth1;
+z7 = point 1.25 of pth1;
+z6=1/2[z1,z3];
+draw pth1; draw pth2; % the eye
+draw z5..z6..z7; % the pupil
+labels(1,2,3,4,5,6,7); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{o}
+% The Proto-Semitic \textit{enu} (eye).
+% \begin{macrocode}
+
+cmchar "Proto-Semitic letter enu (coded as o)";
+beginglyph("o",1.0);
+numeric alpha;
+path pth[];
+alpha := 3/16h;
+z1=(leftloc,1/2h);
+z3=(rightloc,y1);
+z2=(1/2[x1,x3],y1+alpha);
+z4=(x2,y1-alpha);
+pth1 := z1..z2..z3;
+pth2 := z1..z4..z3;
+z5 = point 0.75 of pth1;
+z7 = point 1.25 of pth1;
+z6=1/2[z1,z3];
+draw pth1; draw pth2; % the eye
+draw z5..z6..z7; % the pupil
+labels(1,2,3,4,5,6,7); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{O}
+% An alternative Proto-Semitic \textit{enu} (eye).
+% \begin{macrocode}
+
+cmchar "Alternative Proto-Semitic o";
+beginglyph("O",1.0);
+numeric alpha;
+path pth[];
+alpha := 3/16h;
+z1=(leftloc,1/2h);
+z3=(rightloc,y1);
+z2=(1/2[x1,x3],y1+alpha);
+z4=(x2,y1-alpha);
+pth1 := z1..z2..z3;
+pth2 := z1..z4..z3;
+%z5 = point 0.75 of pth1;
+%z7 = point 1.25 of pth1;
+%z6=1/2[z1,z3];
+draw pth1; draw pth2; % the eye
+%draw z5..z6..z7; % the pupil
+labels(1,2,3,4,5,6,7); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{s}
+% The Proto-Semitic letter s?. A box with a tail.
+% \begin{macrocode}
+
+cmchar "Proto-Semitic letter s? (s)";
+beginglyph("s", 1.0);
+numeric alpha;
+alpha := 0.1*(rightloc-leftloc);
+z1=(leftloc+alpha, h/2); z3=(rightloc,y1);
+z2=(1/2[x1,x3], h); z4=(x2,0);
+z5=(leftloc,1/2[y1,y4]);
+draw z1--z2--z3--z4--cycle;
+draw z1--z5;
+labels(1,2,3,4,5); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{q}
+% The Proto-Semitic q? figure of eight (a knot?).
+% \begin{macrocode}
+
+cmchar "Proto-semitic letter q? figure-of-eight (q)";
+beginglyph("q", 1.0);
+numeric alpha;
+alpha := 3/16h;
+z1=(leftloc,h/2); z6=(rightloc,y1);
+%% left oval
+z3=2/3[z1,z6];
+x4=x2=1/2[x1,x3]; y2=y1+alpha; y4=y1-alpha;
+%% right oval
+x5=x7=1/2[x3,x6]; y5=y1+3/4alpha; y7=y1-3/4alpha;
+draw z1..z2..z3..z4..cycle;
+draw z3..z5..z6..z7..cycle;
+labels(1,2,3,4,5,6,7); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{Q}
+% An alternate Proto-Semitic figure of eight (a knot?).
+% \begin{macrocode}
+
+cmchar "Alternate Proto-Semitic figure-of-eight (coded as Q)";
+beginglyph("Q", 0.5);
+numeric alpha;
+z1=(midloc,0); z6=(midloc,h);
+%% bottom oval
+z3=2/3[z1,z6];
+y4=y2=1/2[y1,y3]; x2=leftloc; x4=rightloc;
+%% top oval
+y5=y7=1/2[y3,y6]; x5=1/2[x2,x3]; x7=1/2[x3,x4];
+draw z1..z2..z3..z4..cycle;
+draw z3..z5..z6..z7..cycle;
+labels(1,2,3,4,5,6,7); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{w}
+% The Proto-Semitic \textit{wawwu} (hook/peg). Like a lamppost.
+% \begin{macrocode}
+
+cmchar "Proto-Semitic letter w";
+beginglyph("w",0.4);
+numeric alpha;
+x1=leftloc;
+x3=rightloc;
+alpha=0.5(x3-x1); % circle radius
+y2=h;
+y4=y2-2alpha;
+bot y5=-o;
+x2=x4=x5=midloc;
+y1=y3=h-alpha;
+draw z1..z2..z3..z4..cycle; % the circle
+draw z5--z4; % the upright
+labels(1,2,3,4,5); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{r}
+% The Proto-Semitic \textit{rasu} (head). It looks like a head in left
+% profile wearing a skull cap.
+% \begin{macrocode}
+
+cmchar "Proto-Semitic letter r";
+beginglyph("r", 0.8);
+numeric alpha,beta;
+alpha := 1/20w;
+pair vec[];
+z2=(leftloc,1/3h); % tip of nose
+z9=(rightloc,0); % base of back of neck
+z1=(1/3[leftloc,rightloc],0); % base of front of neck
+z3=(x1,3/4h); % front of hat
+z6=(1/2[x1,x9], 3/4[y1,y2]); % nape of neck
+z5=(1/2[x6,x9], 1/2[y2,y3]); % back of hat
+z4=(9/12[x3,x5], h); % top of head
+z10'=9/16[z2,z3]; % eye
+z10=(x10'+5/2alpha, y10');
+beta := angle(z5-z3);
+vec1 := dir(beta);
+vec2=(z3-z2);
+z11=z10 shifted (alpha*vec1);
+z9'=(x5,y9);
+draw z1{up}..z2; % chin
+draw z2--z3{vec2}..z4{right}..z5..z6..{down}z9'; % head
+draw z3--z5; % hat
+draw z10--z11; % eye
+labels(1,2,3,4,5,6,7,8,9,9',10,11); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{R}
+% An alternate Proto-Semitic \textit{rasu} (head). It looks like a head in
+% right profile.
+% \begin{macrocode}
+
+cmchar "Alternate Proto-Semitic r (coded as R)";
+beginglyph("R", 0.8);
+numeric alpha, beta;
+alpha := 1/20w;
+pair vec[];
+z2=(rightloc,1/3h); % tip of nose
+z9=(leftloc,0); % base of back of neck
+z1=(1/3[rightloc,leftloc],0); % base of front of neck
+z3=(x1,3/4h); % front of hat
+z6=(1/2[x1,x9], 3/4[y1,y2]); % nape of neck
+z5=(1/2[x6,x9], 1/2[y2,y3]); % back of hat
+z4=(9/12[x3,x5], 9/10h); % top of head
+z10'=11/16[z2,z3]; % eye
+z10=(x10'-5/2alpha, y10');
+beta := angle(z5-z3);
+vec1 := dir(angle(z5-z3));
+vec2=(z3-z2);
+z11=z10 shifted (alpha*vec1);
+z9'=(x5,y9);
+draw z1{up}..z2; % chin
+draw z2--z3{vec2}..z4{left}..z5..z6..{down}z9'; % head
+%%draw z3--z5; % hat
+draw z10--z11; % eye
+labels(1,2,3,4,5,6,7,8,9,9',10,11); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{S}
+% The Proto-Semitic letter s sup v. It's like a modern lowercase w.
+% \begin{macrocode}
+
+cmchar "Proto-Semitic letter s sup v (coded as S)";
+beginglyph("S", 1.0);
+z2=(leftloc,1/4h); z6=(rightloc,y2);
+z3=(1/4[x2,x6], 0); z5=(3/4[x2,x6], y3);
+z1=(x3,6/8h); z7=(x5,y1);
+z4=(1/2[x3,x5],y2);
+draw z1..z2{down}..z3{right}..{up}z4;
+draw z7..z6{down}..z5{left}..{up}z4;
+labels(1,2,3,4,5,6,7); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{t}
+% The Proto-Semitic \textit{tawwu} (mark). A cross.
+% \begin{macrocode}
+
+cmchar "Proto-Semitic letter t";
+beginglyph("t", 0.8);
+numeric alpha;
+alpha := midloc-leftloc;
+z10=(midloc,1/2h);
+z1=(leftloc,y10); z2=(rightloc,y1);
+z3=(x10,y10+alpha);
+z4=(x3,y10-alpha);
+draw z1--z2; % horizontal
+draw z3--z4; % vertical
+labels(1,2,3,4,10); endchar;
+
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{p}
+% The Proto-Semitic letter looking like a leg \& foot, p?.
+% \begin{macrocode}
+
+cmchar "Proto-Semitic letter like a leg & foot (p)";
+beginglyph("p", 0.8);
+x1=x2=leftloc; y1=17/20h; y2=3/20h;
+z3=(rightloc,y2);
+x6=1/4[x2,x3]; y6=y1;
+x5=x6; y5 = y2 + (x6-x1);
+x4=x3 -(y5-y2); y4=y5;
+draw z1--z2--z3;
+draw z6--z5--z4{right}..{down}z3;
+labels(1,2,3,4,5,6); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{P}
+% Alternate Proto-Semitic letter looking like a leg \& foot. Looks like an
+% elbow in this case.
+% \begin{macrocode}
+
+cmchar "Alternate Proto-Semitic letter like a leg & foot (coded as P)";
+beginglyph("P", 0.8);
+numeric alpha;
+alpha := 2/10(rightloc-leftloc);
+x1=rightloc; x2=leftloc; y1=17/20h; y2=3/20h;
+z5=(x1-alpha, y1);
+z6=(x2,y2+alpha);
+z0=(x1,y2); z10=(x2,y1);
+z3=3/20[z0,z10];
+z7=7/20[z0,z10];
+draw z1{down}..z3..{left}z2;
+draw z5{down}..z7..{left}z6;
+labels(1,2,3,4,5,6,7,8); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{x}
+% The Proto-Semitic letter looking like a plant. S sub dot?
+% \begin{macrocode}
+
+cmchar "Proto-Semitic letter like a plant, S sub dot? (coded as x)";
+beginglyph("x", 1.0);
+x1=x2=midloc;
+x3=leftloc; x4=rightloc;
+y1=0; y2=h;
+y3=y4=2/3h;
+draw z1--z2; % the stem
+draw z1{up}..z3; draw z1{up}..z4; % the leaves
+labels(1,2,3,4); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{X}
+% Alternate Proto-Semitic letter looking like a plant.
+% \begin{macrocode}
+
+cmchar "Alternate Proto-Semitic letter like a plant (X)";
+beginglyph("X", 0.8);
+x1=x2=midloc;
+x3=leftloc; x4=rightloc;
+y1=0; y2=h;
+z5=1/2[z1,z2];
+y3=y4=h;
+draw z1--z2; % the stem
+draw z5{up}..z3; draw z5{up}..z4; % the leaves
+labels(1,2,3,4); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{v}
+% Proto-Semitic letter looking like a viking helmet.
+% \begin{macrocode}
+
+cmchar "Proto-Semitic letter like a viking helmet (v)";
+beginglyph("v", 0.8);
+path pth[];
+%% helmet
+z1=(leftloc,0); z7=(rightloc,0);
+z4=(midloc,h);
+pth1 := z1{up}..{(1,2)}z4{(1,-2)}..z7{down};
+%% wings
+z3 = point 0.75 of pth1;
+z13=(leftloc,h);
+z5 = point 1.25 of pth1;
+z15=(rightloc,y13);
+draw pth1; draw z7--z1; % helmet
+draw z3--z13; draw z5--z15; % 2 wings
+labels(1,2,3,4,5,6,7,13,15,16); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{V}
+% Alternate Proto-Semitic letter looking like a viking helmet.
+% \begin{macrocode}
+
+cmchar "Alternate Proto-Semitic letter like a viking helmet (V)";
+beginglyph("V", 0.8);
+path pth[];
+%% helmet
+z1=(leftloc,0); z7=(rightloc,0);
+z4=(midloc,13/16h);
+y2=y6=3/4[y1,y4];
+x2=2/10[x1,x7]; x6=2/10[x7,x1];
+pth1 := z1--z2{(z2-z1)}..z4{right}..{(z7-z6)}z6--z7--cycle;
+pth2 := subpath (1,3) of pth1;
+%% wings
+z3 = point 0.5 of pth2;
+z13=(leftloc,h);
+z5 = point 1.5 of pth2;
+z15=(rightloc,y13);
+z16'=z6 shifted (h*(2,1));
+z16=whatever[z6,z16']; x16=rightloc;
+draw pth1; % helmet
+draw z3--z13; draw z5--z15; draw z6--z16; % 3 wings
+labels(1,2,3,4,5,6,7,13,15,16); endchar;
+
+% \end{macrocode}
+% \end{macro}
+%
+% The end of the glyphs and the file
+%
+% \begin{macrocode}
+
+end
+
+%</up>
+% \end{macrocode}
+%
+%
+%
+% \section{The font definition files} \label{sec:fd}
+%
+% \begin{macrocode}
+%<*fdot1>
+\DeclareFontFamily{OT1}{proto}{}
+ \DeclareFontShape{OT1}{proto}{m}{n}{ <-> proto10 }{}
+ \DeclareFontShape{OT1}{proto}{bx}{n}{ <-> sub proto/m/n }{}
+ \DeclareFontShape{OT1}{proto}{b}{n}{ <-> sub proto/m/n }{}
+ \DeclareFontShape{OT1}{proto}{m}{sl}{ <-> sub proto/m/n }{}
+ \DeclareFontShape{OT1}{proto}{m}{it}{ <-> sub proto/m/n }{}
+%</fdot1>
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+%<*fdt1>
+\DeclareFontFamily{T1}{proto}{}
+ \DeclareFontShape{T1}{proto}{m}{n}{ <-> proto10 }{}
+ \DeclareFontShape{T1}{proto}{bx}{n}{ <-> sub proto/m/n }{}
+ \DeclareFontShape{T1}{proto}{b}{n}{ <-> sub proto/m/n }{}
+ \DeclareFontShape{T1}{proto}{m}{sl}{ <-> sub proto/m/n }{}
+ \DeclareFontShape{T1}{proto}{m}{it}{ <-> sub proto/m/n }{}
+%</fdt1>
+% \end{macrocode}
+%
+% \section{The \Lpack{protosem} package code} \label{sec:code}
+%
+% Announce the name and version of the package, which requires
+% \LaTeXe{}.
+% \begin{macrocode}
+%<*usc>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{protosem}[2005/03/18 v1.2 package for Proto-Semitic fonts]
+% \end{macrocode}
+%
+%
+% \begin{macro}{\protofamily}
+% Selects the font family in the OT1 encoding.
+% \begin{macrocode}
+\newcommand{\protofamily}{\usefont{OT1}{proto}{m}{n}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\textproto}
+% Text command for the font family.
+% \begin{macrocode}
+\DeclareTextFontCommand{\textproto}{\protofamily}
+
+% \end{macrocode}
+% \end{macro}
+%
+% The commands for the signs.
+% \begin{macrocode}
+\chardef\Arq=`'
+\chardef\Aa=`a \chardef\Aaleph=`a
+\chardef\Ab=`b \chardef\Abeth=`b
+\chardef\Ag=`g \chardef\Agimel=`g
+\chardef\Ad=`d \chardef\Adaleth=`d
+\chardef\Az=`z \chardef\Azayin=`z
+\chardef\Ah=`e \chardef\Ahe=`e
+\chardef\Aw=`w \chardef\Avav=`w
+\chardef\Ahd=`H \chardef\Aheth=`H
+\chardef\Atd=`T \chardef\Ateth=`T
+\chardef\Ay=`y \chardef\Ayod=`y
+\chardef\Ak=`k \chardef\Akaph=`k
+\chardef\Al=`l \chardef\Alamed=`l
+\chardef\Am=`m \chardef\Amum=`m
+\chardef\An=`n \chardef\Anun=`n
+\chardef\Alq=``
+\chardef\Ao=`o \chardef\Aayin=`o
+\chardef\As=`s \chardef\Asamekh=`s
+\chardef\Ap=`p \chardef\Ape=`p
+\chardef\Asd=`x \chardef\Asade=`x
+\chardef\Aq=`q \chardef\Aqoph=`q
+\chardef\Ar=`r \chardef\Aresh=`r
+\chardef\Asv=`S \chardef\Ashin=`S
+\chardef\Av=`v \chardef\Ahelmet=`v
+\chardef\At=`t \chardef\Atav=`t
+
+\chardef\AAa=`A \chardef\AAaleph=`A
+\chardef\AAb=`B \chardef\AAbeth=`B
+\chardef\AAd=`D \chardef\AAdaleth=`D
+\chardef\AAh=`E \chardef\AAhe=`E
+\chardef\AAhd=`h \chardef\AAheth=`h
+\chardef\AAy=`Y \chardef\AAyod=`Y
+\chardef\AAk=`K \chardef\AAkaph=`K
+\chardef\AAl=`L \chardef\AAlamed=`L
+\chardef\AAo=`O \chardef\AAayin=`O
+\chardef\AAp=`P \chardef\AApe=`P
+\chardef\AAsd=`X \chardef\AAsade=`X
+\chardef\AAq=`Q \chardef\AAqoph=`Q
+\chardef\AAr=`R \chardef\AAresh=`R
+\chardef\AAv=`V \chardef\AAhelmet=`V
+
+% \end{macrocode}
+%
+% \begin{macro}{\translitproto}
+% \begin{macro}{\transliprotofont}
+% |\translitproto{|\meta{commands}|}| transliterates
+% \meta{commands} using the |\translitproto| font.
+% \begin{macrocode}
+\newcommand{\translitproto}[1]{{%
+ \@translitPS\translitprotofont #1}}
+\newcommand{\translitprotofont}{\itshape}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@translitPS}
+% This macro redefines all the character commands to produce
+% the transliterated value instead of the glyph. There must be no
+% spaces in the definition.
+% \begin{macrocode}
+\newcommand{\@translitPS}{%
+\def\Arq{'}%
+\def\Aa{'}\def\Aaleph{\Aa}\def\AAa{\Aa}\def\AAaleph{\Aa}%
+\def\Ab{b}\def\Abeth{\Ab}\def\AAb{\Ab}\def\AAbeth{\Ab}%
+\def\Ag{g}\def\Agimel{\Ag}%
+\def\Ad{d}\def\Adaleth{\Ad}\def\AAd{\Ad}\def\AAdaleth{\Ad}%
+\def\Ae{h}\def\Ahe{\Ae}\def\AAe{\Ae}\def\AAhe{\Ae}%
+\def\Az{z}\def\Azayin{\Az}%
+\def\Aw{w}\def\Avav{\Aw}%
+\def\Ahd{\d{h}}\def\Aheth{\Ahd}\def\AAhd{\Ahd}\def\AAheth{\Ahd}%
+\def\Atd{\d{t}}\def\Ateth{\Atd}%
+\def\Ay{y}\def\Ayod{\Ay}\def\AAy{\Ay}\def\AAyod{\Ay}%
+\def\Ak{k}\def\Akaph{\Ak}\def\AAk{\Ak}\def\AAkaph{\Ak}%
+\def\Al{l}\def\Alamed{\Al}\def\AAl{\Al}\def\AAlamed{\Al}%
+\def\Am{m}\def\Amem{\Am}%
+\def\An{n}\def\Anun{\An}%
+\def\Alq{`}%
+\def\Ao{`}\def\Aayin{\Ao}\def\AAo{\Ao}\def\AAayin{\Ao}%
+\def\As{s}\def\Asamekh{\As}%
+\def\Ap{p}\def\Ape{\Ap}\def\AAp{\Ap}\def\AApe{\Ap}%
+\def\Asd{\d{s}}\def\Asade{\Asd}\def\AAsd{\Asd}\def\AAsade{\Asd}%
+\def\Aq{q}\def\Aqoph{\Aq}\def\AAq{\Aq}\def\AAqoph{\Aq}%
+\def\Ar{r}\def\Aresh{\Ar}\def\AAr{\Ar}\def\AAresh{\Ar}%
+\def\Asv{\v{s}}\def\Ashin{\Asv}%
+\def\Av{?}\def\Ahelmet{\Av}\def\AAv{\Av}\def\AAhelmet{\Av}%
+\def\At{t}\def\Atav{\At}%
+}
+
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% The end of this package.
+% \begin{macrocode}
+%</usc>
+% \end{macrocode}
+%
+% \section{The Postscript Type1 map} \label{sec:map}
+%
+% Just one line.
+%
+% \begin{macrocode}
+%<*map>
+proto10 Archaic-ProtoSemitic <proto10.pfb
+%</map>
+% \end{macrocode}
+%
+% \Finale
+% \PrintIndex
+%
+\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 \~}
+
+