% \iffalse % universal.dtx %<*copyright> % universal font and macros for use with LaTeX, TeX and METAFONT % $Header: universal.dtx,v 1.0 97/12/24 14:43:14 sdc Exp $ %$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Copyright (C) 1997 Christian Holm. % % The universal package and font is free software; you can % redistribute it and/or modify it under the terms of the GNU % General Public License as published by the Free Software % Foundation; either version 2 of the License, or (at your option) % any later version. % % The universal package and font is distributed in the hope that it % will be useful, but WITHOUT ANY WARRANTY; without even the implied % warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. % See the GNU General Public License for more details. % % You should have received a copy of the GNU General Public License % along with this program; if not, write to the Free Software % Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% @LaTeX-style-file{ %% Author = "Christian Holm", %% Version = "1.0", %% Date = "1997/12/24", %% Time = "14:43:14", %% Filename = "universal.dtx", %% Address = "Niels Bohr Institute of Physics %% University of Copenhagen %% Denmark", %% Email = "cholm@fys.ku.dk (Internet)", %% CodeTable = "ISO/ASCII", %% Keywords = "LaTeX2e, universal, Herbert Bayer, bauhaus", %% Supported = "yes", %% Abstract = "LaTeX package for providing support for typesetting %% in Herbert Bayers universal font" %% } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %<*driver> \documentclass[twoside]{ltxdoc} \usepackage[titlepage]{universal} \usepackage{mflogo,a4wide} \usepackage[dvips]{graphicx,epsfig} \EnableCrossrefs \RecordChanges \CodelineIndex \typeout{Expect some Under- and overfull boxes} \begin{document} \DocInput{universal.dtx} \end{document} % % \fi % \CheckSum{189} % \def\fileversion{v1.0} % \def\filedate{97/12/24} % \def\docdate {january 16, 1997} % \def\bs{{\tt\char'134}} % \newcommand{\Lcs}[1]{{\bs\tt#1}} % \DoNotIndex{\@ne,\advance,\begin,\char,\closein,\def,\DeclareOption} % \DoNotIndex{\divide,\docdate,\else,\end,\fi,\filedate,\fileversion} % \DoNotIndex{\framebox,\global,\ifdim,\ifeof,\ifnum,\ifx,\let,\loop} % \DoNotIndex{\makebox,\mbox,\mutliply,\NeedsTeXFormat,\newcommand} % \DoNotIndex{\newcount,\newdim,\newenvironment,\newif,\newsavebox} % \DoNotIndex{\noindent,\openin,\PackageWarning,\par,\ProcessOptions} % \DoNotIndex{\ProvidesPackage,\put,\relax,\repeat,\RequirePackage} % \DoNotIndex{\rule,\savebox,\space,\tempa,\textsc,\tt,\undefined} % \DoNotIndex{\usebox,\vspace,\vfill,\newdimen,\newpage,\normalsize} % \DoNotIndex{\Large,\chardef,\clearpage,\begingroup,\endgroup} % \DoNotIndex{\font,\hspace,\thispagestyle} % \changes{v1.0}{97/12/24}{The creation of \textsf{``universal''} % font} % \date{\docdate} % \title{the universal package} % \author{christian holm} % \abstract{ % {\large experiment with simplified way of writing: % \begin{enumerate} % \item this way of writing is recommended by all typographic % designers as the future way of writing. % \item by writing in minuscules our writing looses nothing, % but is easier to read, considerably more economical. % \item why must you for one sound have two tokens, e.g.\ % A and a? why two alphabets for one word, why this double % set of signs, when the half is enough. % \end{enumerate} % \begin{flushright} % herbert bayer\\ % 1925\index{Bayer, Herbert} % \end{flushright}} % } % \maketitle % \tableofcontents % % \section{Introduction} % % This package contains the \MF{} source and driver files for the % ``universal'' font, designed by Herbert Bayer, a teacher at the % bauhaus school in Weimar.\index{Bayer, Herbert} % % The fonts name is ``universal'' and \emph{not} universal, since it % is not the exact design of Herbert Bayer, but rather based % on his design. All copyright on the original design goes % to Herbert Bayer or who ever may have it now. % % This source was implemented into \MF{} by Christian Holm, % based on a lot of (printed) samples of the original font. % % \section{The Font} % % The font uses \texttt{plain.base} and \emph{not} \texttt{cmbase.mf}, % so it should work on most systems (I have \emph{never} heard of any % one having \MF{} and without \textsf{Computer Modern} fonts, but who % knows!). % % ``universal'' is avaliable only in normal shape (no % \textit{italized}, \textbf{bold face}, \textsl{slanted}, or % \textsc{small caps}), since it wouldn't look good. % % The font is rather heavy, and therefore only suitable for graphical % pages (i.e. \emph{not} text pages), such as a title page etc. % An example of such a page is on page~\pageref{ex}. % % Shapes bold face, slanted, italized, and small caps % are substitued by the default for \textsf{Computer Modern Roman % Sans Serif} (\texttt{cmssxx.mf}), if you use the \LaTeXe{} package % provided. % % Different sizes (8, 9, 10, 12, 17pt) are avaliable, and others % may be generated by \MF{}. % % No \textbayer{f} ligatures is defined, since they should not be % used in this font. However, dotless i (\textbayer{\i}) and j % (\textbayer{\j}) is defined for use with accents. % % \textbayer{\{~\}~\|~\S}, are included, but at non-standard % (\TeX{}-wise) positions. To take care of this, \texttt{universal.sty} % contains the nessecary code for \TeX{} (and \LaTeX{}) to find them. % % \subsection{Modifications to the original design} % % However, some modifications has been made. Any deviations from % the original design is entirely of my doing, but please notice % I make no claim of consistency, compability or exactness. % % I have tried to keep as close as possible to the % original principle of Herbert Bayers design, as possible. Most % of the modifications are due to my conception of the basic % principles of this font, and are extra- an intrapolations based % on this conception. Some of the modifications are also based on % other conceptions of the original principle, for instance the % true type font ``bauhaus'' avaliable for % Windows95$^{\mbox{\sc tm}}$. % % Use this font if you like it, and if you think it deviate too % much from the original idea, don't use it, or let me know, so % that I might try to correct any mistakes. % % Below is summerized my modifications: % \begin{description} % \item[Upper Case letters:] % Upper case letters are avaliable in this implementation. Herbert % Bayer never designed any upper case letters, so those avaliable % here, is of my doing. % % \item[Numbers:] % I haven't been able to find any samples of Herbert Bayers original % design for numbers, (if he indeed made one) so those here present, % are extrapolations. % % \item[Punctuation Marks:] % Again, I have not found the original design, but have relied heavily % on other conceptions of Herbert Bayers design. % % \item[Accents:] % What I said on punctuation marks also goes for accents. % % \item[Odinary Symbols:] % Repeat the above! % % \item[Bauhaus Symbols:] % This where \emph{never} present in Herbert Bayers design, but I have % included them here, since I think they're beautiful, and who knows -- % maybe of some use. The face symbol could be used to indicate % fascination of the bauhaus school, or some thing like that! % \end{description} % % Table~\ref{font} shows all the ``characters'' of the font: % \par % \newcount\n\newcount\m\newcount\p\newdimen\dim % \def\oct#1{\hbox{\rm\'{}\kern-.2em\it#1\/\kern.05em}} % \def\hex#1{\hbox{\rm\H{}\tt#1}} % \def\setdigs#1"#2{\gdef\h{#2} % \m=\n \divide\m by 64 \xdef\0{\the\m}% % \multiply\m by-64 \advance\m by\n \divide\m by 8 \xdef\1{\the\m}} % \def\testrow{\setbox0=\hbox{\penalty 1\def\\{\char"\h}% % \\0\\1\\2\\3\\4\\5\\6\\7\\8\\9\\A\\B\\C\\D\\E\\F% % \global\p=\lastpenalty}} % \def\oddline{\cr % \noalign{\nointerlineskip} % \multispan{19}\hrulefill& % \setbox0=\hbox{\lower 2.3pt\hbox{\hex{\h x}}}\smash{\box0}\cr % \noalign{\nointerlineskip}} % \newif\ifskipping % \def\evenline{\loop\skippingfalse % \ifnum\n<256 \m=\n \divide\m 16 \chardef\next=\m % \expandafter\setdigs\meaning\next \testrow % \ifnum\p=1 \skippingtrue \fi\fi % \ifskipping \global\advance\n 16 \repeat % \ifnum\n=256 \let\next=\endchart\else\let\next=\morechart\fi % \next} % \def\morechart{\cr\noalign{\hrule\penalty5000} % \chartline \oddline \m=\1 \advance\m 1 \xdef\1{\the\m} % \chartline \evenline} % \def\chartline{&\oct{\0\1x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&} % \def\chartstrut{\lower4.5pt\vbox to14pt{}} % \def\Table{$$\global\n=0 % \halign to\hsize\bgroup % \chartstrut##\tabskip0pt plus10pt& % &\hfil##\hfil&\vrule##\cr % \lower6.5pt\null % &&&\oct0&&\oct1&&\oct2&&\oct3&&\oct4&&\oct5&&\oct6&&\oct7&\evenline} % \def\endchart{\cr\noalign{\hrule} % \raise11.5pt\null&&&\hex 8&&\hex 9&&\hex A&&\hex B& % &\hex C&&\hex D&&\hex E&&\hex F&\cr\egroup$$\par} % \def\:{\setbox0=\hbox{\char\n}% % \ifdim\ht0>7.5pt\reposition % \else\ifdim\dp0>2.5pt\reposition\fi\fi % \box0\global\advance\n 1 } % \def\reposition{ % \setbox0=\vbox{\kern2pt\box0}\dim=\dp0 % \advance\dim 2pt \dp0=\dim} % \def\centerlargechars{ % \def\reposition{\setbox0=\hbox{$\vcenter{\kern2pt\box0\kern2pt}$}}} % % \begin{figure} % \begingroup % \font\LARGEbayer=universal17 % \LARGEbayer % \Table % \endgroup % \caption{Letters and symbols in ``universal'' font.} % \label{font} % \end{figure} % % \newpage % \label{ex} % \begingroup % \font\HUGEbayer=universal17 at 80pt % \par\medskip\bayer\noindent % {\Huge der bauhaus schule am dessau, weimar und berlin 1919--1933}\\ % \rule{\textwidth}{.3cm} % \par\vspace{1cm}\par\noindent\hspace{.4\textwidth} % \rule{.1cm}{8cm} % \raisebox{3cm}{ % \begin{minipage}[l]{.5\textwidth} % the bauhaus school in germany originally located at dessau, % was a school for any kind of design, ranging from potery to % furniture, from painting to --- what was considered the prime % form of design --- architecture. many famous designers came % from, or taught at bauhaus, for example mies van der rhoe, % herbert bayer, kandinsky, walter gropius and gerrit rietveld. % the style ``die stjil'' was explored here, and painters like % mondrian made large contributions to what today is known as % ``the bauhaus style''. % \end{minipage}} % \par\vspace{1cm}\hspace{.25\textwidth}\rule{.1cm}{5cm} % \hspace{.5cm}\raisebox{2cm}{{\HUGEbayer \bauhead}} % \raisebox{3cm}{ % \begin{minipage}[l]{.4\textwidth} % this is one of the logos designed for the bauhaus schule, % and properly the most well--knowned. use it to show your % appriciation of bauhaus, or for decoration. % \end{minipage}} % \hspace{-.8\textwidth}\raisebox{1cm}{\rule{.75\textwidth}{.2cm}} % \endgroup % \index{Bayer, Herbert}\index{Rhoe, Mies van der} % \index{Gropius, Walter}\index{Rietveld, Gerrit} % \index{Kandinsky}\index{Mondrian}\index{die stjil} % \index{Bauhaus 1919--1933} % \newpage % % \section{\MF{} and this font} % % The \MF{} source files should be in % \begin{verbatim} % /usr/lib/texmf/local/fonts/source/bayer % \end{verbatim} % (for te\TeX{}), % or somewhere equivilante, where \MF{} can find them (on must % systems, where kpathsea can find them). Please notice the long % file names (\textsc{dos} users: change the names, both on disk % and in the files). In Table~\ref{mffiles} is a list of the \MF{} % source files: % \begin{table}[htbp] % \begin{tabular}{l l} % \texttt{accents.mf}& accents\\ % \texttt{digits.mf}& numbers (0 - 9)\\ % \texttt{extras.mf}& bauhaus symbols\\ % \texttt{ligatures.mf}& german \ss, \ae, \oe, \o, \AE, etc.\\ % \texttt{lowers.mf}& lower case letters (a--z)\\ % \texttt{punctuations.mf}& punctuation marks (. , ! : ; etc.)\\ % \texttt{specials.mf}& symbols (\$, ?, \texttt{\{ }, etc.)\\ % \texttt{universal.mf}& driver file (definitions)\\ % \texttt{universal8.mf}& driver file for 8pt \\ % \texttt{universal9.mf}& driver file for 9pt\\ % \texttt{universal10.mf}& driver file for 10pt \\ % \texttt{universal12.mf}& driver file for 12pt \\ % \texttt{universal17.mf}& driver file for 17pt \\ % \texttt{uppers.mf}& upper case letters (A--Z)\\ % \end{tabular} % \caption{\MF{} source files.} % \label{mffiles} % \end{table} % % \section{\LaTeX{} and this font} % % I have made a package for \LaTeX{} to use this font. Include it with: % \begin{verbatim} % \usepackage{universal} % \end{verbatim} % % \DescribeMacro{\title}\DescribeMacro{\author} % \DescribeMacro{\date}\DescribeMacro{\abstract} % \DescribeMacro{\maketitle} % The optional argument \texttt{titlepage} redefines the macros % \Lcs{title}, \Lcs{author} and \Lcs{date}, so that a special version % of \Lcs{maketitle} may be used. Also provided is the macro % \Lcs{abstract} to make a abstract suitable for the special kind % of titlepage. Notice, you can redefine the \Lcs{maketitle} macro % to suit your needs. In it's current definition, \Lcs{maketitle} % produces a title--page as the one of this document. % % \DescribeMacro{\bayer}\DescribeMacro{\textbayer} % To shift to ``universal'' font, do either \Lcs{bayer} (for global % change, or if in a local group, locally) or % \Lcs{textbayer\{}\textsl{your text}\texttt{\}} for % local change (the later takes up the largest block of \TeX{} memory, % so use \Lcs{bayer} as much as you can). % % The files should be in % \begin{verbatim} % /usr/lib/texmf/local/tex/latex/bayer/ % \end{verbatim} % (for te\TeX{}), or % something equvilant. Please notice the use of long file name % (\textsc{dos} users: Change the names, both on disk, and in files!). % The files are % \begin{table}[htbp] % \begin{tabular}{l l} % \texttt{universal.sty}& style file\\ % \texttt{ot1universal.fd}& font definition file % \end{tabular} % \end{table} % % \DescribeMacro{\{}\DescribeMacro{\}}\DescribeMacro{\|} % \DescribeMacro{\varQ} % You can accecs the symbols {\bayer\{ \} \|} through % \Lcs{{} \Lcs{}} \verb+\|+. This is \emph{not} standard \LaTeX{}. % A variant ``Q'' ({\bayer \varQ}) is defined, and can be accesed % by \Lcs{varQ}. A paragraph sign (\textbayer{\S}) is also avaliable, % and is accesed trhough the standard \LaTeX{} \Lcs{S}. % % \iffalse % \DescribeMacro{\bauplus}\DescribeMacro{\baudash} % \DescribeMacro{\bauequal}\DescribeMacro{\bautriangle} % \DescribeMacro{\baucircle}\DescribeMacro{\baucross} % \DescribeMacro{\bauwindow}\DescribeMacro{\bauhole} % \DescribeMacro{\baueclipse}\DescribeMacro{\bauquarter} % \DescribeMacro{\bauarrow}\DescribeMacro{\bauwhitearrow} % \DescribeMacro{\bauhead}\DescribeMacro{\bauface} % \DescribeMacro{\bauquestion}\DescribeMacro{\bauforms} % \DescribeMacro{\baupunct}\DescribeMacro{\bausquare} % \fi % % A number of macros are defined to accecs the special % bauhaus symbols. These are only avaliable in the ``universal'' font % (i.e. after a % \Lcs{bayer} or inside argument of \Lcs{textbayer}). % They are shown, along with thier corrosponding macros, in % Table~\ref{charmac}. % % \begin{table}[htbp] % \centering % \begin{tabular}{l l l l l l l l} % \Lcs{bauplus} &\textbayer{\bauplus}& % \Lcs{baudash} &\textbayer{\baudash}& % \Lcs{bauequal} &\textbayer{\bauequal}& % \Lcs{bautriangle} &\textbayer{\bautriangle}\\ % \Lcs{baucircle} &\textbayer{\baucircle}& % \Lcs{baucross} &\textbayer{\baucross}& % \Lcs{bauwindow} &\textbayer{\bauwindow}& % \Lcs{bauhole} &\textbayer{\bauhole}\\ % \Lcs{baueclipse} &\textbayer{\baueclipse}& % \Lcs{bauquarter} &\textbayer{\bauquarter}& % \Lcs{bauarrow} &\textbayer{\bauarrow}& % \Lcs{bauwhitearrow} &\textbayer{\bauwhitearrow}\\ % \Lcs{bauhead} &\textbayer{\bauhead}& % \Lcs{bauface} &\textbayer{\bauface}& % \Lcs{bauquestion} &\textbayer{\bauquestion}& % \Lcs{bausorms} &\textbayer{\bauforms}\\ % \Lcs{baupunct} &\textbayer{\baupunct}& % \Lcs{bausquare} &\textbayer{\bausquare}&&\\ % \end{tabular} % \caption{Extra bauhaus symbols in ``universal'' font.} % \label{charmac} % \end{table} % % \section{{\sc dos} Users}: % % You may have to run the files through some % \textsc{unix}--to--\textsc{dos} converter % (like \texttt{unix2dos}). % I suggest you make the following changes to the file names: % % \paragraph*{\MF{} files} % The files previously said to be in % \begin{verbatim} % /usr/lib/texmf/local/fonts/source/bayer % \end{verbatim} % should be in \texttt{\%MFINPUTS\%} and named as: % \begin{verbatim} % ligatures.mf => LIGATURE.MF % punctuations.m => PUNCTUAT.MF % universal.mf => UNIVERSA.MF % universal8.mf => UNIVER8.MF % universal9.mf => UNIVER9.MF % universal10.mf => UNIVER10.MF % universal12.mf => UNIVER12.MF % universal17.mf => UNIVER17.MF % \end{verbatim} % And in the file univarsal.mf make the same changes on every line % containg \texttt{input} \textsl{filename}. In the files % \texttt{universal}\textsl{xx}\texttt{.mf}, change % the line: % \begin{verbatim} % input universal => input UNIVERSA % \end{verbatim} % % \paragraph*{\LaTeX{} files} % The files previously said to be in % \begin{verbatim} % /usr/lib/texmf/local/fonts/source/bayer % \end{verbatim} % should be in \texttt{\%TEXINPUTS\%} and named as: % \begin{verbatim} % universal.sty => UNIVERSA.STY % ot1universal.fd => OT1UNIVE.FD % \end{verbatim} % In the file \texttt{UNIVERSA.STY}, change the following lines: % \begin{verbatim} % \usefont{OT1}{universal}{m}{n} => \usefont{OT1}{UNIVE}{m}{n} % \end{verbatim} % In file \texttt{OT1UNIVE.FD} change \emph{every} occurence of % \begin{verbatim} % universal => UNIVE % universal8 => UNIVER8 % universal9 => UNIVER9 % universal10 => UNIVER10 % universal12 => UNIVER12 % universal17 => UNIVER17 % \end{verbatim} % That should take care of that. % % \section{Bugs} % % I guess you were waiting for this! % % Although I have tried my best to make this font look good in any % maginification, it may come out bad if you use some non--standard % maginification. % % I have tried the font in various modes, and tried to make it % coherant on any printer, though I offer no garanty on this. % % The code is absurdly simple, and this may prove to be a bug, but % my familiarity with \MF{} is yet limitied to simple stuff. I % am no match for Donald E.\ Knuth (who is?), but I'm trying % (did I hear you laughing!).\index{Knuth, Donald E.\} % % \section{Final Comments} % % Please send me your suggestions, complaints (but don't flame me % for something I didn't know), or bug reports, and I will look into % it when I find the time \verb+:-)+ % % This font is avaliable from % \begin{verbatim} % http://www.fys.ku.dk/~cholm/V1/TeX/bayer.html % \end{verbatim} % and soon from any CTAN site. % % This font is distributed under GNU GENERAL PUBLIC LISCENCE. % Copyright \copyright{} 1997 Christian Holm. % % \noindent % Christian Holm\\ % E-Mail: \texttt{cholm@fys.ku.dk} % % \StopEventually{} % \iffalse %<*package> % \fi % % \section{\LaTeXe{} Files} % % Here is the sources for the \LaTeX{} files needed to use this % font. I have only made a font--definition for encoding ``OT1'', % since I beleiv this to be the most used. Others font--defintion % files should be easely made. % % \subsection{Package File (\texttt{universal.sty})} % % First some package identification, nothing special here. % \begin{macrocode} \def\fileversion{v1.0} \def\filedate{97/12/24} \ProvidesPackage{universal}[\filedate\space\fileversion\space universal package.] % \end{macrocode} % \begin{macro}{\ifBayer} % We provide a new \textsl{if}, to test for the ``universal'' font. % This could be used in macros etc. % \begin{macrocode} \newif\ifBayer \Bayerfalse % \end{macrocode} % \end{macro} % \begin{macro}{titlepage} % Next, a package option is defined. The definition of \Lcs{maketitle} % is only an example. % \begin{macrocode} \DeclareOption{titlepage}{ \newdimen\unidim \unidim1cm \renewcommand{\title}[1]{\def\unititle{#1}} \renewcommand{\author}[1]{\def\uniauthor{#1}} \renewcommand{\date}[1]{\def\unidate{#1}} \renewcommand{\abstract}[1]{\def\uniabst{#1}} \renewcommand{\maketitle}{ \clearpage \thispagestyle{empty} \noindent \begingroup {\Huge\bayer\unititle}\\ \rule{\textwidth}{.05\textwidth} \ifx\uniabst\undefined \vfill \else \vspace{.05\textwidth}\par\noindent \hspace{.2\textwidth}\rule{.01\textwidth}{.7\textwidth} \raisebox{.3\textwidth}{ \begin{minipage}[l]{.7\textwidth} {\bayer\normalsize\uniabst} \end{minipage} } \vfill \fi \begin{minipage}[l]{.3\textwidth} {\bayer\Large\uniauthor}\par\noindent {\large\bayer\MakeLowercase{\unidate}} \end{minipage}\hspace{.2\textwidth} \raisebox{-.05\textwidth}{\rule{.02\textwidth}{.4\textwidth}} \font\Hugebayer=universal17 at 80pt \hspace{.01\textwidth}{\Hugebayer\char"84}\\ \rule{.8\textwidth}{.01\textwidth} \endgroup \newpage } } \ProcessOptions\relax % \end{macrocode} % \end{macro} % \begin{macro}{\textbayer} % This is the command to change to ``universal'' font locally. It's % not very fancy --- it calls \Lcs{bayer} macro. % \begin{macrocode} \newcommand{\textbayer}[1]{ \begingroup \bayer #1 \endgroup } % \end{macrocode} % \end{macro} % \begin{macro}{\bayer} % Now for the global, and important, macro of this package. We set % \Lcs{Bayertrue}, so that macroes will know we currently use the % ``universal'' font. Secondly, it defines some character macros % to acces special symbols in the font. % \begin{macrocode} \newcommand{\bayer}{ \Bayertrue \chardef\{="80 \chardef\}="81 \chardef\|="0F \chardef\S="82 \chardef\varQ="83 \chardef\bauplus="00 \chardef\baudash="01 \chardef\bauequal="02 \chardef\bautriangle="03 \chardef\baucircle="04 \chardef\baucross="05 \chardef\bauwindow="06 \chardef\bauhole="07 \chardef\baueclipse="08 \chardef\bauquarter="09 \chardef\bauarrow="0A \chardef\bauwhitearrow="0B \chardef\bauhead="0C \chardef\bauface="0D \chardef\bauquestion="0E \chardef\bauforms="84 \chardef\baupunct="85 \chardef\bausquare="86 \usefont{OT1}{universal}{m}{n} } % \end{macrocode} % \end{macro} % \iffalse % % \fi % % \subsection{Font Definition File (\texttt{ot1universal.fd})} % % This file contains the nessesary definitions for using the % ``universal'' font. Notice the font is substitued for the % \textsf{Compute Modern Sans Serif} defaults in all other shapes % then normal upright. % \iffalse %<*fd> % \fi % \begin{macrocode} \ProvidesFile{ot1universal.fd} [1997/01/14 v2.5a Non standard LaTeX font definitions] \DeclareFontFamily{OT1}{universal}{\hyphenchar\font45 } % \end{macrocode} % {\bayer Normal upright}. % \begin{macrocode} \DeclareFontShape{OT1}{universal}{m}{n} { <5><6><7><8>universal8 <9>universal9 <10><10.95>universal10 <12><14.4>universal12 <17.28><20.74><24.88>universal17 }{} % \end{macrocode} % {\it Italized}, {\sl slanted}, {\sc small caps} is undefined, % therefore substituted. % \begin{macrocode} \DeclareFontShape{OT1}{universal}{m}{it}{<->ssub*cmss/m/sl}{} \DeclareFontShape{OT1}{universal}{m}{sl}{<->ssub*cmss/m/sl}{} \DeclareFontShape{OT1}{universal}{m}{sc}{<->ssub*cmr/m/sc}{} \DeclareFontShape{OT1}{universal}{m}{ui}{<->ssub*cmr/m/ui}{} % \end{macrocode} % Semibold condensed and bold extended series is undefined, % therefore substituted. % \begin{macrocode} \DeclareFontShape{OT1}{universal}{sbc}{n}{<->ssub*cmss/sbc/n}{} \DeclareFontShape{OT1}{universal}{bx}{n}{<->ssub*cmss/bx/n}{} \DeclareFontShape{OT1}{universal}{bx}{ui}{<->ssub*cmr/bx/ui}{} % \end{macrocode} % % End of file `ot1universal.fd'. % \iffalse % % \fi % % \section{The \MF{} Sources} % % Below follows the sources for the font and driver files. % These are in plain \MF{}, so you dont need Computer Modern % base file \texttt{cmbase.mf}, to use this file. However, the % files does to some extent follow the style of the Computer % Modern source files, in particular the divivsion of the sources % into files. % % The reason why I made the sources a part of this \texttt{.dtx} is % to ease the dsitribution, as well as the documentation. % % \subsection{Main driver file (\texttt{universal.mf})} % \iffalse %<*main> % \fi % \begin{macrocode} x_height# = 8u#; % height of lowercase without ascenders m_width# = 7/5x_height# ; % width of widest lowercase (1em) x_width# = x_height#+f_space#; % width of normal lowercase p_depth# = 3/5x_height# ; % depth of charactes accending baseline l_height# = 8/5x_height# ; % height of heighest characters p_thick# = 1/36x_height# ; % pen thickness f_space# = 2u#; % space added after fonts c_width# = 1x_width#-0.5x_width#*(1-cosd(35)); % width of "c" C_width# = l_height#-0.5l_height#*(1-cosd(35)); % width of "C" f_width# = 3/8l_height#+f_space#; % width of "f" A_width# = m_width# ; % width of normal upper case characters M_width# = 7/5A_width# ; % width of "M" define_pixels(u,m_width,x_width,x_height,p_depth,l_height,p_thick) ; define_pixels(f_space,A_width,C_width,M_width) ; define_corrected_pixels(p_depth) ; ligs:=2; font_coding_scheme:="TeX text"; spanish_shriek:=oct"074"; spanish_query:=oct"076"; mode_setup; font_x_height 8u#; font_quad m_width#; font_normal_space 6u#+f_space#; font_normal_stretch 3u#; font_normal_shrink 2u#; font_quad 18u#+4f_space#; font_extra_space 2u#; % \end{macrocode} % \begin{macro}{makebox} % We redefine the the macro \texttt{makebox}, so that the % proof--sheets contain more lines, and indicate baseline, if the % letter goes beyond this. % \begin{macrocode} def makebox(text rule) = % macro for hardcopy proofs rule((0,0)t_,(w,0)t_); rule((0,0.01)t_,(w,0.01)t_); for y=-d step u until h+u: % making addtional grid lines rule((0,y)t_,(w,y)t_); endfor % horizontals for x=0 step u until w+u: rule((x,-d)t_,(x,h)t_); endfor % verticals enddef; % \end{macrocode} % \end{macro} % The next couple of definitions, are more of mnemonic in nature, then % actual functions. % \begin{macrocode} def bauhauschar (expr name, width, height, depth, extra_width) = beginchar(name,width,height,depth); "The letter "&name; pickup pencircle scaled p_thick ; wi#:=width-f_space#+extra_width; define_pixels(wi); enddef; def bauhausnumb (expr name, width, height, depth, extra_width) = beginchar(name,width,height,depth); "The number "&name; pickup pencircle scaled p_thick ; wi#:=width-f_space#+extra_width; define_pixels(wi); enddef; def bauhaussymb (expr name, width, height, depth, extra_width) = beginchar(name,width,height,depth); pickup pencircle scaled p_thick ; wi#:=width-f_space#+extra_width; define_pixels(wi); enddef; def bauhausextra (expr number, name) = beginchar(number,l_height#+f_space#,l_height#,p_depth#); "The bauhaus symbol "&name; pickup pencircle scaled 1/10p_thick ; wi#:=l_height#; define_pixels(wi); enddef; picture e_pic, a_pic, o_pic, O_pic; % any where input uppers; % upper case (majuscules) input lowers; % lower case (minuscules) input digits; % numerals input specials ; % special symbols input ligatures; % ligaturres input punctuations; % punctuation symbols input accents; % accents input extras; % bauhaus extras ligtable "u": "h" kern u#; ligtable "f": "f" kern 0 , "l" kern 0 , "i" kern 0; ligtable "o": "l" kern u#; ligtable "?": "`" =: spanish_query; ligtable "!": "`" =: spanish_shriek; ligtable "-": "-"=:oct"173"; ligtable oct"173": "-"=:oct"174"; bye. % \end{macrocode} % \iffalse % % \fi % % \subsection{Driver file for 8 point(\texttt{universal8.mf})} % \iffalse %<*eight> % \fi % \begin{macrocode} font_identifier:="universal"; % name of the font font_size 8pt#; % design size of font. u# = 16/36pt#; % unit width (= 2/36*font_size) input universal % input driver file % \end{macrocode} % \iffalse % % \fi % % \subsection{Driver file for 9 point(\texttt{universal9.mf})} % \iffalse %<*nine> % \fi % \begin{macrocode} font_identifier:="universal"; % name of the font font_size 9pt#; % design size of font. u# = 18/36pt#; % unit width (= 2/36*font_size) input universal % input driver file % \end{macrocode} % \iffalse % % \fi % % \subsection{Driver file for 10 point(\texttt{universal10.mf})} % \iffalse %<*ten> % \fi % \begin{macrocode} font_identifier:="universal"; % name of the font font_size 10pt#; % design size of font. u# = 20/36pt#; % unit width (= 2/36*font_size) input universal % input driver file % \end{macrocode} % \iffalse % % \fi % % \subsection{Driver file for 12 point(\texttt{universal12.mf})} % \iffalse %<*twelve> % \fi % \begin{macrocode} font_identifier:="universal"; % name of the font font_size 12pt#; % design size of font. u# = 24/36pt#; % unit width (= 2/36*font_size) input universal % input driver file % \end{macrocode} % \iffalse % % \fi % % \subsection{Driver file for 17 point(\texttt{universal17.mf})} % \iffalse %<*seventeen> % \fi % \begin{macrocode} font_identifier:="universal"; % name of the font font_size 17pt#; % design size of font. u# = 34/36pt#; % unit width (= 2/36*font_size) input universal % input driver file % \end{macrocode} % \iffalse % % \fi % % \subsection{Majuscules (\texttt{uppers.mf})} % \iffalse %<*uppers> % \fi % \begin{macro}{A} % \begin{macrocode} bauhauschar("A",1A_width#,1l_height#,0,0); %"The letter A"; lft z1=(0,0); lft z2=(0,h-0.5wi); top z3=(0.5wi,h); rt z4=(wi,y2); rt z5=(wi,0); lft z6=(0,0.5h); rt z7=(wi,y6); cutdraw z1{up}--z2{up}..z3{right}..z4{down}--z5{down}; cutdraw z6{right}--z7{right}; penlabels(1,2,3,4,5,6,7); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{B} % \begin{macrocode} bauhauschar("B",1A_width#,1l_height#,0,0); %"The letter B"; lft bot z1 = (0,0); lft top z2 = (0,h); top z3 = (wi-0.25h,h); rt z4 = (wi,0.75h); z5 = (x3,0.5h); z6 = (p_thick,0.5h); rt z7 = (wi,0.25h); bot z8 = (x3,0); draw z1{(-1,1)}---z2{(1,1)}---z3{right}..z4{down}..z5{left}--z6{left}; draw z5{right}..z7{down}..z8{left}---z1{(-1,1)}; penlabels(1,2,3,4,5,6,7,8); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{C} % \begin{macrocode} bauhauschar("C",C_width#+f_space#,l_height#,0,0); rt z1 = bot z2 rotatedaround((0.5wi,0.5h),60); bot z2 = (0.5wi,0); lft z3 = (0,0.5h); top z4 = (0.5wi,h); rt z5 = top z4 rotatedaround((0.5wi,0.5h),-60); cutdraw z1..z2{left}..z3{up}..z4{right}..z5; penlabels(1,2,3,4,5); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{D} % \begin{macrocode} bauhauschar("D",A_width#,l_height#,0,0); lft bot z1 = (0,0); lft top z2 = (0,h); top z3 = (wi-.5h,h); rt z4 = (wi,0.5h); bot z5 = (x3,0); draw z2{right}---z3{right}..z4{down}..z5{left}---z1{left}---z2{up}; penlabels(1,2,3,4,5); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{E} % \begin{macrocode} bauhauschar("E",A_width#,l_height#,0,0); rt bot z1 = (wi,0); lft bot z2 = (0,0); lft top z3 = (0,h); rt top z4 = (wi,h); lft z5 = (0,0.5h); rt z6 = (wi,0.5h); cutdraw z1{left}---z2{(-1,1)}---z3{(1,1)}---z4{right}; cutdraw z5{left}--z6; penlabels(1,2,3,4,5,6); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{F} % \begin{macrocode} bauhauschar("F",A_width#,l_height#,0,0); lft bot z1 = (0,0); lft top z2 = (0,h); rt top z3 = (wi,h); lft z4 = (0,0.5h); rt z5 = (wi,0.5h); cutdraw z1{up}---z2{(1,1)}---z3{right}; cutdraw z4{left}--z5; penlabels(1,2,3,4,5); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{G} % \begin{macrocode} bauhauschar("G",l_height#+f_space#,l_height#,0,0); rt z1 = (wi,0.5h); bot z2 = (0.5wi,0); lft z3 = (0,0.5h); top z4 = (0.5wi,h); rt z5 = top z4 rotatedaround((0.5wi,0.5h),-60); rt z6 = (wi,0); cutdraw z1..z2{left}..z3{up}..z4{right}..z5; cutdraw z1{down}--z6; penlabels(1,2,3,4,5,6); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{H} % \begin{macrocode} bauhauschar("H",A_width#,l_height#,0,0); lft z1 = (0,0); lft z2 = (0,0.5h); lft z3 = (0,h); rt z4 = (wi,0); rt z5 = (wi,0.5h); rt z6 = (wi,h); cutdraw z1{up}--z3{up}; cutdraw z4{up}--z6{up}; cutdraw z2{left}--z5{left}; penlabels(1,2,3,4,5,6); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{I} % \begin{macrocode} bauhauschar("I",p_thick#+2f_space#,l_height#,0,0); lft z1 = (0,0); lft z2 = (0,h); cutdraw z1{up}--z2{up}; penlabels(1,2); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{J} % \begin{macrocode} bauhauschar("J",.5x_width#,l_height#,0,0); bot z1 = (0,0); bot rt z2 = (wi,0); rt z3 = (wi,h); cutdraw z1{right}---z2{(1,1)}---z3{up}; penlabels(1,2,3); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{K} % \begin{macrocode} bauhauschar("K",0.5l_height#+2f_space#,l_height#,0,0); lft z1 = (0,0); lft z2 = (0,0.5h); lft z3 = (0,h); rt z4 = (wi,0); rt z5 = (wi,h); cutdraw z1{up}--z3{up}; cutdraw z2{right}..z4{down}; cutdraw z2{right}..z5{up}; penlabels(1,2,3,4,5); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{L} % \begin{macrocode} bauhauschar("L",A_width#,l_height#,0,0); lft z1 = (0,h); lft bot z2 = (0,0); rt bot z3 = (wi,0); cutdraw z1{down}---z2{(1,-1)}---z3{right}; penlabels(1,2,3); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{M} % \begin{macrocode} bauhauschar("M",M_width#,l_height#,0,0); lft z1 = (0,0) ; lft z2 = (0,0.7h) ; top z3 = (0.5[x5,x1],h) ; z4 = (0.5wi,0.7h-0.25p_thick) ; z5 = (0.5wi,0) ; top z6 = (0.5[x8,x5],h) ; rt z7 = (wi,0.7h) ; rt z8 = (wi,0) ; cutdraw z1{up}--z2..z3{right}..z4{down}--z5 ; cutdraw z4{up}..z6{right}..z7--z8{down} ; penlabels(1,2,3,4,5,6,7,8); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{N} % \begin{macrocode} bauhauschar("N",A_width#,l_height#,0,0); lft z1 = (0,0); lft z2 = (0,0.6h) ; top z3 = (0.5wi,h) ; rt z4 = (wi,0.6h) ; rt z5 = (wi,0); cutdraw z1{up}--z2{up}..z3{right}..z4{down}--z5{down}; penlabels(1,2,3,4,5); endchar ; % \end{macrocode} % \end{macro} % \begin{macro}{O} % \begin{macrocode} bauhauschar("O",l_height#+f_space#,l_height#,0,0); top z1 = (.5wi,h) ; rt z2 = (wi,.5h) ; bot z3 = (.5wi,0) ; lft z4 = (0,.5h) ; draw z1{right}..z2{down}..z3{left}..z4{up}..cycle ; penlabels(1,2,3,4); O_pic = currentpicture; endchar ; % \end{macrocode} % \end{macro} % \begin{macro}{P} % \begin{macrocode} bauhauschar("P",A_width#,l_height#,0,0); lft z1 = (0,0) ; lft z2 = (0,h-.5wi) ; top z3 = (0.5wi,h) ; rt z4 = (wi,h-.5wi) ; bot z5 = (0.5wi,h-wi) ; draw z2{up}..z3{right}..z4{down}..z5{left}..cycle ; cutdraw z1{up}--z2{up}; penlabels(1,2,3,4,5); endchar ; % \end{macrocode} % \end{macro} % \begin{macro}{Q} % ``Q'' as an ``O'' with dash % \begin{macrocode} bauhauschar("Q",l_height#+f_space#,l_height#,2/3p_depth#,0); top z1 = (.5wi,h) ; rt z2 = (wi,.5h) ; bot z3 = (.5wi,0) ; lft z4 = (0,.5h) ; z5 = (.5wi,2d); z6 = (.5wi,-d); draw z1{right}..z2{down}..z3{left}..z4{up}..cycle ; cutdraw z5{down}--z6; penlabels(1,2,3,4,5,6); endchar ; % \end{macrocode} % \end{macro} % \begin{macro}{R} % \begin{macrocode} bauhauschar("R",A_width#,l_height#,0,0); lft z1 = (0,0); lft z2 = (0,h-.5wi); top z3 = (.5wi,h); rt z4 = (wi,h-.5wi); bot z5 = (0.5wi,h-wi); rt z6 = (wi,h-1.5wi); rt z7 = (wi,0); draw z2{up}..z3{right}..z4{down}..z5{left}..cycle; cutdraw z1{up}--z2{up}; cutdraw z5{right}..z7{down}; penlabels(1,2,3,4,5,6,7); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{S} % \begin{macrocode} bauhauschar("S",A_width#,l_height#,0,0); % lft z1 = (0,0.5[y6,y2]) ; bot z2 = (1/3wi,0) ; bot z3 = (2/3wi,0) ; rt z4 = (wi,0.5[y5,y3]) ; z5 = (2/3wi,0.5h) ; z6 = (1/3wi,0.5h) ; lft z7 = (0,0.5[y8,y6]) ; top z8 = (1/3wi,h); top z9 = (2/3wi,h) ; rt z10 = (wi,0.5[y8,y6]) ; cutdraw z1{down}..z2{right}--z3{right}..z4{up}..z5{left} --z6{left}..z7{up}..z8{right}--z9{right}..z10{down} ; penlabels(1,2,3,4,5,6,7,8,9,10); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{T} % \begin{macrocode} bauhauschar("T",A_width#,l_height#,0,0); top z1 = (0,h); top z2 = (wi,h); z3 = (.5wi,h); z4 = (0.5wi,0); cutdraw z1{right}--z2; cutdraw z3{up}--z4; penlabels(1,2,3,4); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{U} % \begin{macrocode} bauhauschar("U",A_width#,l_height#,0,0); lft z1 = (0,h); lft z2 = (0,0.4h) ; bot z3 = (0.5wi,0) ; rt z4 = (wi,0.4h) ; rt z5 = (wi,h); cutdraw z1{down}--z2{down}..z3{right}..z4{up}--z5{up}; penlabels(1,2,3,4,5); endchar ; % \end{macrocode} % \end{macro} % \begin{macro}{V} % \begin{macrocode} bauhauschar("V",A_width#,l_height#,0,0); lft z1 = (0,h); bot z2 = (0.5wi-0.5p_thick,0.5p_thick); bot z3 = (0.5wi,0); bot z4 = (0.5wi+0.5p_thick,0.5p_thick); rt z5 = (wi,h); draw z1{down}--z2..z3..z4--z5{up}; cutoff(z1,90); cutoff(z5,90); penlabels(1,2,3,4,5); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{W} % \begin{macrocode} bauhauschar("W",M_width#,l_height#,0,0); lft z1 = (0,h) ; lft z2 = (0,0.3h) ; bot z3 = (0.5[x5,x1],0) ; z4 = (0.5wi,0.3h+0.25p_thick) ; z5 = (0.5wi,h) ; bot z6 = (0.5[x8,x5],0) ; rt z7 = (wi,0.3h) ; rt z8 = (wi,h) ; cutdraw z1{down}--z2..z3{right}..z4{up}--z5 ; cutdraw z4{down}..z6{right}..z7--z8{down} ; penlabels(1,2,3,4,5,6,7,8); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{X} % \begin{macrocode} bauhauschar("X",l_height#+f_space#,l_height#,0,0); top z1 = (0,h); z2 = (0.5wi,0.5wi); bot z3 = (0,0); top z4 = (wi,h); bot z5 = (wi,0); cutdraw z1{right}..z2{down}..z3{left}; cutdraw z4{left}..z2{down}..z5{right}; penlabels(1,2,3,4,5); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{Y} % \begin{macrocode} bauhauschar("Y",A_width#,l_height#,0,0) ; rt z1 = (wi,0) ; lft z2 = (0,h) ; rt z3 = (wi,h) ; rt z4 = (wi,h-x5) ; bot z5 = (0.5wi,h-wi) ; lft z6 = (0,h-x5) ; cutdraw z1{up}--z3 ; cutdraw z3{up}--z4..z5{left}..z6{up}--z2{up} ; penlabels(1,2,3,4,5,6); endchar ; % \end{macrocode} % \end{macro} % \begin{macro}{Z} % \begin{macrocode} bauhauschar("Z",A_width#,l_height#,0,0) ; top z1 = (0,h); rt x2 = wi ; top y2 = h ; rt x3 = wi ; top y3 = y2; lft x4 = 0 ; bot y4 = y5 ; lft x5 = 0 ; bot y5 = 0 ; bot z6 = (wi,0); cutdraw z1{right}--z2..z3--z4..z5--z6 ; penlabels(1,2,3,4,5,6); endchar ; % \end{macrocode} % \end{macro} % \iffalse % % \fi % % \subsection{Minuscules (\texttt{lowers.mf})} % \iffalse %<*lowers> % \fi % \begin{macro}{a} % We save the letter ``a'' in a \textsl{picture} variable for % later use (in ligature \ae{}). % \begin{macrocode} bauhauschar("a",1x_width#,1x_height#,0,0); %"The letter a"; bot z1 = (7/16wi,0); lft z2 = lft z3 rotatedaround((0.5wi,0.5h),45); lft z3 = (0,0.5h); top z4 = (0.5wi,h); rt z5 = top z4 rotatedaround((0.5wi,0.5h),-45); rt z6 = (wi,0.5h+sind(15)); rt z7 = (wi,0); draw z6..z1{left}..z2..z3{up}..z4{right}..z5..z6{down}--z7 ; penlabels(1,2,3,4,5,6,7,8); cutoff(z7,-90); a_pic := currentpicture; endchar; % \end{macrocode} % \end{macro} % \begin{macro}{b} % \begin{macrocode} bauhauschar("b",1x_width#,l_height#,0,0); %"The letter b"; top y1=5/8h ; rt x2=wi ; bot y3=0 ; lft x4= lft x5 = lft x6 = 0 ; x1 = x3 = 0.5wi ; y2 = y4 = y5 = 5/16h ; y6 = h ; draw z1{right}..z2{down}..z3{left}..z4{up}..cycle ; cutdraw z5--z6 ; penlabels(1,2,3,4,5,6); endchar ; % \end{macrocode} % \end{macro} % \begin{macro}{c} % \begin{macrocode} bauhauschar("c",c_width#,1x_height#,0,1f_space#); %"The letter c"; rt z5 = top z4 rotatedaround((0.5wi,0.5h),-60); rt z1 = bot z2 rotatedaround((0.5wi,0.5h),60); bot y2=0; lft x3=0; top y4=h; x2 = x4 = 0.5wi; y3 = 0.5h ; cutdraw z1..z2{left}..z3{up}..z4{right}..z5; penlabels(1,2,3,4,5); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{d} % \begin{macrocode} bauhauschar("d",1x_width#,l_height#,0,0); %"The letter d"; top y1 = 5/8h ; rt x2 = rt x5 = rt x6 = wi ; bot y3 =0 ; lft x4 = 0 ; x1 = x3 = 0.5wi ; y2 = y4 = y5 = 5/16h ; y6 = h ; draw z1{right}..z2{down}..z3{left}..z4{up}..cycle ; cutdraw z5--z6 ; penlabels(1,2,3,4,5,6); endchar ; % \end{macrocode} % \end{macro} % \begin{macro}{e} % We save the letter ``e'' in a \textsl{picture} variable for % later use (in ligatures \ae{} \oe{}). % \begin{macrocode} bauhauschar("e",1x_width#,1x_height#,0,0) ; %"The letter e"; rt z1 = bot z2 rotatedaround((0.5wi,0.5h),60) ; bot y2 = 0 ; lft x3 = 0 ; top y4 = h ; rt x5 = rt x7 = wi ; x6 = p_thick; x2 = x4 = 0.5wi ; y3 = y5 = y6 = 0.5h ; y7 = y5 - 0.5p_thick ; cutdraw z5{up}..z4{left}..z3{down}..z2{right}..z1 ; cutdraw z5{down}--z7{down} ; draw z6{right}--z5{right}; penlabels(1,2,3,4,5,6,7); e_pic := currentpicture endchar; % \end{macrocode} % \end{macro} % \begin{macro}{f} % \begin{macrocode} bauhauschar("f",f_width#,l_height#,0,0); %"The letter f"; lft x1 = lft x2 = 0 ; y1 = 0 ; top y2 = top y5 = top y6 = 5/8h ; x4 = wi ; x5 = p_thick; x6 = wi; top y4 = h ; lft z3 = lft z2 rotatedaround((top z6),-45) ; cutdraw z1{up}--z2{up}..z3{(1,1)}..z4{right} ; cutdraw z5{right}--z6 ; penlabels(1,2,3,4,5,6,7); endchar ; % \end{macrocode} % \end{macro} % \begin{macro}{g} % \begin{macrocode} bauhauschar("g",1x_width#,1x_height#,p_depth#,0); %"The letter g"; rt z1 = top z2 rotatedaround((0.5wi,0.5h),-60) ; top z2 = (0.5wi,h) ; lft z3 = (0,0.5h) ; bot z4 = (0.5wi,0) ; rt z5 = (wi,0.5h) ; rt z6 = (wi,-d) ; cutdraw z1{(-cosd(60),sind(60))}..z2{left}..z3{down} ..z4{right}..z5{up} ; cutdraw z5{down}--z6 ; penlabels(1,2,3,4,5,6); endchar ; % \end{macrocode} % \end{macro} % \begin{macro}{h} % \begin{macrocode} bauhauschar("h",1x_width#,1l_height#,0,0) ; %"The letter h" ; lft z1 = (0,0) ; lft z2 = (0,h) ; rt z3 = (wi,0) ; rt z4 = (wi,x5) ; top z5 = (0.5wi,5/8h) ; lft z6 = (0,x5) ; cutdraw z1{up}--z2 ; cutdraw z3{up}--z4..z5{left}..z6 ; penlabels(1,2,3,4,5,6); endchar ; % \end{macrocode} % \end{macro} % \begin{macro}{i} % \begin{macrocode} bauhauschar("i",1/5x_height#+f_space#,l_height#,0,0); %"The letter i" ; lft z1 = (0,0) ; lft z2 = (0,5/8h) ; top z3 = (0.5wi,h) ; cutdraw z1{up}--z2 ; drawdot z3 ; penlabels(1,2,3); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{j} % \begin{macrocode} bauhauschar("j",1/5x_height#+f_space#,l_height#,p_depth#,0); %"The letter j" lft z1 = (0,-d) ; lft z2 = (0,5/8h) ; top z3 = (0.5wi,h) ; cutdraw z1{up}--z2 ; drawdot z3 ; penlabels(1,2,3); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{k} % \begin{macrocode} bauhauschar("k",0.8x_width#,1x_height#,0,0); %"The letter k" ; lft z1 = (0,0) ; lft z2 = (0,h) ; lft z3 = (0,0.5h) ; rt z4 = (wi,0) ; rt z5 = (wi,h) ; cutdraw z1{up}--z2 ; cutdraw z3{right}..z4{down} ; cutdraw z3{right}..z5{up} ; penlabels(1,2,3,4,5); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{l} % \begin{macrocode} bauhauschar("l",1/5x_height#+f_space#,l_height#,0,0);%"The letter l" ; lft z1 = (0,0) ; lft z2 = (0,h) ; cutdraw z1{up}--z2 ; penlabels(1,2,3); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{m} % \begin{macrocode} bauhauschar("m",1m_width#,1x_height#,0,0); %"The letter m"; lft z1 = (0,0) ; lft z2 = (0,0.7h) ; top z3 = (0.5[x5,x1],h) ; z4 = (0.5wi,0.7h-0.25p_thick) ; z5 = (0.5wi,0) ; top z6 = (0.5[x8,x5],h) ; rt z7 = (wi,0.7h) ; rt z8 = (wi,0) ; cutdraw z1{up}--z2..z3{right}..z4{down}--z5 ; cutdraw z4{up}..z6{right}..z7--z8{down} ; penlabels(1,2,3,4,5,6,7,8); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{n} % \begin{macrocode} bauhauschar("n",1x_width#,1x_height#,0,0); %"The letter n"; lft z1 = (0,0); lft z2 = (0,0.6h) ; top z3 = (0.5wi,h) ; rt z4 = (wi,0.6h) ; rt z5 = (wi,0); cutdraw z1{up}--z2{up}..z3{right}..z4{down}--z5{down}; penlabels(1,2,3,4,5); endchar ; % \end{macrocode} % \end{macro} % \begin{macro}{o} % We save the letter in a \textsl{picture} variable for later use % (for ligature \oe{}). % \begin{macrocode} bauhauschar("o",1x_width#,1x_height#,0,0); %"The letter o"; top y1=h ; rt x2=wi ; bot y3=0 ; lft x4=0 ; x1 = x3 = 0.5wi ; y2 = y4 = 0.5h ; draw z1{right}..z2{down}..z3{left}..z4{up}..cycle ; penlabels(1,2,3,4); o_pic := currentpicture; endchar ; % \end{macrocode} % \end{macro} % \begin{macro}{p} % \begin{macrocode} bauhauschar("p",1x_width#,1x_height#,p_depth#,0); %"The letter p"; lft z1 = (0,-d) ; lft z2 = (0,0.5h) ; top z3 = (0.5wi,h) ; rt z4 = (wi,0.5h) ; bot z5 = (0.5wi,0) ; draw z2{up}..z3{right}..z4{down}..z5{left}..cycle ; cutdraw z1{up}--z2{up}; penlabels(1,2,3,4,5); endchar ; % \end{macrocode} % \end{macro} % \begin{macro}{q} % \begin{macrocode} bauhauschar("q",1x_width#,1x_height#,p_depth#,0); %"The letter q"; rt z1 = (wi,-d) ; lft z2 = (0,0.5h) ; top z3 = (0.5wi,h) ; rt z4 = (wi,0.5h) ; bot z5 = (0.5wi,0) ; draw z2{up}..z3{right}..z4{down}..z5{left}..cycle ; cutdraw z1{up}--z4{up}; penlabels(1,2,3,4,5); endchar ; % \end{macrocode} % \end{macro} % \begin{macro}{r} % \begin{macrocode} bauhauschar("r",3/5x_height#+f_space#,1x_height#,0,0); %"The letter r"; lft z1 = (0,0) ; lft z2 = (0,h-wi); top z4 = (wi,h) ; lft z3 = lft z2 rotatedaround((x4,y2),-45); cutdraw z1{up}--z2{up}..z3{(1,1)}..z4{right}; penlabels(1,2,3,4); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{s} % \begin{macrocode} bauhauschar("s",0.8x_width#,1x_height#,0,0); %"The letter s"; lft z1 = (0,0.5[y6,y2]) ; bot z2 = (1/3wi,0) ; bot z3 = (2/3wi,0) ; rt z4 = (wi,0.5[y5,y3]) ; z5 = (2/3wi,0.5h) ; z6 = (1/3wi,0.5h) ; lft z7 = (0,0.5[y8,y6]) ; top z8 = (1/3wi,h); top z9 = (2/3wi,h) ; rt z10 = (wi,0.5[y8,y6]) ; cutdraw z1{down}..z2{right}--z3{right}..z4{up}.. z5{left}--z6{left}..z7{up}..z8{right}--z9{right}..z10{down} ; penlabels(1,2,3,4,5,6,7,8,9,10); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{t} % \begin{macrocode} bauhauschar("t",3/5x_height#+f_space#,1l_height#,0,0); %"The letter t"; z1 = (0.5wi,0); z2 = (0.5wi,h); cutdraw z1{up}--z2; top z3 = (0,5/8h); top z4 = (wi,5/8h); cutdraw z3--z4; penlabels(1,2,3,4); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{u} % \begin{macrocode} bauhauschar("u",1x_width#,1x_height#,0,0); %"The letter u"; lft z1 = (0,h); lft z2 = (0,0.4h) ; bot z3 = (0.5wi,0) ; rt z4 = (wi,0.4h) ; rt z5 = (wi,h); cutdraw z1{down}--z2{down}..z3{right}..z4{up}--z5{up}; penlabels(1,2,3,4,5); endchar ; % \end{macrocode} % \end{macro} % \begin{macro}{v} % \begin{macrocode} bauhauschar("v",1x_width#,1x_height#,0,0); %"The letter v"; lft z1 = (0,h); bot z2 = (0.5wi-0.5p_thick,0.5p_thick); bot z3 = (0.5wi,0); bot z4 = (0.5wi+0.5p_thick,0.5p_thick); rt z5 = (wi,h); draw z1{down}--z2..z3..z4--z5{up}; cutoff(z1,90); cutoff(z5,90); penlabels(1,2,3,4,5); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{w} % \begin{macrocode} bauhauschar("w",1m_width#,1x_height#,0,0); %"The letter w"; lft z1 = (0,h) ; lft z2 = (0,0.3h) ; bot z3 = (0.5[x5,x1],0) ; z4 = (0.5wi,0.3h+0.25p_thick) ; z5 = (0.5wi,h) ; bot z6 = (0.5[x8,x5],0) ; rt z7 = (wi,0.3h) ; rt z8 = (wi,h) ; cutdraw z1{down}--z2..z3{right}..z4{up}--z5 ; cutdraw z4{down}..z6{right}..z7--z8{down} ; penlabels(1,2,3,4,5,6,7,8); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{x} % \begin{macrocode} bauhauschar("x",1x_width#,1x_height#,0,0); %"The letter x"; top z1 = (0,h); z2 = (0.5wi,0.5wi); bot z3 = (0,0); top z4 = (wi,h); bot z5 = (wi,0); cutdraw z1{right}..z2{down}..z3{left}; cutdraw z4{left}..z2{down}..z5{right}; penlabels(1,2,3,4,5); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{y} % \begin{macrocode} bauhauschar("y",1x_width#,1x_height#,p_depth#,0) ; %"The letter y" ; rt z1 = (wi,-d) ; lft z2 = (0,h) ; rt z3 = (wi,h) ; rt z4 = (wi,x5) ; bot z5 = (0.5wi,0) ; lft z6 = (0,x5) ; cutdraw z1{up}--z3 ; cutdraw z3{up}--z4..z5{left}..z6{up}--z2{up} ; penlabels(1,2,3,4,5,6); endchar ; % \end{macrocode} % \end{macro} % \begin{macro}{z} % \begin{macrocode} bauhauschar("z",1x_width#,1x_height#,0,0) ; %"The letter z" ; top z1 = (0,h); rt x2 = wi ; top y2 = h ; rt x3 = wi ; top y3 = y2; lft x4 = 0 ; bot y4 = y5 ; lft x5 = 0 ; bot y5 = 0 ; bot z6 = (wi,0); cutdraw z1{right}--z2..z3--z4..z5--z6 ; penlabels(1,2,3,4,5,6); endchar ; % \end{macrocode} % \end{macro} % \iffalse % % \fi % % \subsection{Numerals (\texttt{digits.mf})} % \iffalse %<*digits> % \fi % \begin{macro}{0} % \begin{macrocode} bauhausnumb("0",A_width#,l_height#,0,0); lft z1 = (0,h-.5wi); top z2 = (.5wi,h); rt z3 = (wi,y1); rt z4 = (wi,.5wi); bot z5 = (.5wi,0); lft z6 = (0,y4); draw z1{up}..z2{right}..z3{down}---z4{down}..z5{left}..z6{up}---cycle; penlabels(1,2,3,4,5,6); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{1} % \begin{macrocode} bauhausnumb("1",3/8(A_width#-f_space#)+f_space#,l_height#,0,0); top z1 = (0,h); top z2 = (2/3wi,h); rt z3 = (wi,h-x2); rt z4 = (wi,0); cutdraw z1{right}---z2{right}..z3{down}---z4{down}; penlabels(1,2,3,4); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{2} % \begin{macrocode} bauhausnumb("2",A_width#,l_height#,0,0); lft z1 = (0,h-.5wi); top z2 = (.5wi,h); rt z3 = (wi,y1); lft bot z4 = (0,0); bot z5 = (wi,0); cutdraw z1{up}..z2{right}..z3{down}---z4{(-1,1)}---z5{right}; penlabels(1,2,3,4,5); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{3} % \begin{macrocode} bauhausnumb("3",A_width#,l_height#,0,0); rad = .25h; lft z1 = (0,h-rad); top z2 = (rad,h); top z3 = (wi-rad,h); rt z4 = (wi,h-rad); rt z5 = (wi-rad,.5h); rt z6 = (wi,rad); bot z7 = (wi-rad,0); bot z8 = (rad,0); lft z9 = (0,rad); cutdraw z1{up}..z2{right}---z3{right}..z4{down}..z5{left}; cutdraw z5{right}..z6{down}..z7{left}---z8{left}..z9{up}; penlabels(1,2,3,4,5,6,7,8,9); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{4} % \begin{macrocode} bauhausnumb("4",A_width#,l_height#,0,0); z1 = (.8wi,h); lft z2 = (0,h-x1); z3 = (wi,y2); z4 = (x1,0); z5 = (x1,h-.5x1); draw z1{(-1,-1)}---z2{(1,-1)}---z3{right}; cutoff(z1,90); cutoff(z3,0); cutdraw z4{up}--z5; penlabels(1,2,3,4,5); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{5} % \begin{macrocode} bauhausnumb("5",A_width#,l_height#,0,0); tmp=wi/(1+sind(60)); lft z1 = (0,tmp*(1-sind(30))); bot z2 = (wi-tmp,0); rt top z3 = (wi,tmp); top z4 = (x2,2y3); top lft z5 = (0,2y3); top lft z6 = (0,h); top z7 = (wi,h); cutdraw z1{dir(-60)}..z2{right}..z3{up}..z4{left}--- z5{(-1,1)}---z6{(1,1)}---z7{right}; penlabels(1,2,3,4,5,6,7); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{6} % \begin{macrocode} bauhausnumb("6",A_width#,l_height#,0,0); lft z1 = (0,.5wi); top z2 = (.5wi,wi); rt z3 = (wi,y1); bot z4 = (x2,0); lft z5 = (0,h-.5wi); top z6 = (x2,h); z7 = z6 rotatedaround((.5wi,h-.5wi),-60); draw z1{up}..z2{right}..z3{down}..z4{left}..z1{up}--- z5{up}..z6{right}..z7{dir(-60)}; cutoff(z7,-60); penlabels(1,2,3,4,5,6,7); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{7} % \begin{macrocode} bauhausnumb("7",A_width#,l_height#,0,0) ; top z1 = (0,h); rt top z2 = (wi,h); lft z3 = (0,0); draw z1{right}---z2{(1,-1)}---z3{z3-z1} ; cutoff(z1,180); cutoff(z3,angle(z3-z1)); penlabels(1,2,3); endchar ; % \end{macrocode} % \end{macro} % \begin{macro}{8} % \begin{macrocode} bauhausnumb("8",.5l_height#+p_thick#+f_space#,l_height#,0,0); top z1 = (.5wi,h); z3 = (x1,.5h); bot z6 = (x1,0); rt z2 = bot z3 rotatedaround(.5[z3,z1],90); lft z4 = bot z3 rotatedaround(.5[z3,z1],-90); rt z5 = top z3 rotatedaround(.5[z6,z3],-90); lft z7 = top z3 rotatedaround(.5[z6,z3],90); draw z1{right}..z2{down}..z3{left}..z4{up}..cycle; draw z3{right}..z5{down}..z6{left}..z7{up}..cycle; penlabels(1,2,3,4,5,6,7); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{9} % \begin{macrocode} bauhausnumb("9",A_width#,l_height#,0,0); rt z1 = (wi,h-.5wi); bot z2 = (.5wi,h-wi); lft z3 = (0,y1); top z4 = (x2,h); rt z5 = (wi,.5wi); bot z6 = (x2,0); z7 = z6 rotatedaround((.5wi,.5wi),-60); draw z1{down}..z2{left}..z3{up}..z4{right}.. z1{down}---z5{down}..z6{left}..z7{dir(120)}; cutoff(z7,120); penlabels(1,2,3,4,5,6,7); endchar; % \end{macrocode} % \end{macro} % \iffalse % % \fi % % \subsection{Symbols (\texttt{specials.mf})} % % Sources for special symmbols. Some of these are not part of a % normal Computer Modern font, but is included here for consitency. % \iffalse %<*specials> % \fi % \begin{macro}{|} % \begin{macrocode} bauhaussymb(hex"0F",p_thick#+f_space#,l_height#,p_depth#,0); "The symbol |"; lft z1 = (0,h); lft z2 = (0,-d); cutdraw z1{down}--z2{down}; penlabels(1,2); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\i} % \begin{macrocode} bauhaussymb(hex"10",p_thick#+f_space#,x_height#,0,0); "Dotless i"; lft z1 = (0,0); lft z2 = (0,h); cutdraw z1{up}--z2; penlabels(1,2); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\j} % \begin{macrocode} bauhaussymb(hex"11",p_thick#+f_space#,x_height#,p_depth#,0); "Dotless j"; lft z1 = (0,-d); lft z2 = (0,h); cutdraw z1{up}--z2; penlabels(1,2); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{$} % \begin{macrocode} bauhaussymb("$",x_width#,l_height#,0,0); "The symbol $"; lft z1 = (0,0.5[y6,y2]) ; bot z2 = (1/3wi,1/8h) ; bot z3 = (2/3wi,1/8h) ; rt z4 = (wi,0.5[y5,y3]) ; z5 = (2/3wi,0.5h) ; z6 = (1/3wi,0.5h) ; lft z7 = (0,0.5[y8,y6]) ; top z8 = (1/3wi,7/8h); top z9 = (2/3wi,7/8h) ; rt z10 = (wi,0.5[y8,y6]) ; z11 = (.5wi,0); z12 = (.5wi,h); cutdraw z1{down}..z2{right}--z3{right}..z4{up}..z5{left}-- z6{left}..z7{up}..z8{right}--z9{right}..z10{down}; cutdraw z11{up}--z12{up}; penlabels(1,2,3,4,5,6,7,8,9,10,11,12); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{&} % \begin{macrocode} bauhaussymb("&",.5l_height#+2p_thick#+f_space#,l_height#,0,0); "The symbol &"; top z1 = (3/8wi,h); bot z6 = (x1,1/8h); z3 = .5[z6,z1]; rt z2 = bot z3 rotatedaround(.5[z3,z1],90); lft z4 = bot z3 rotatedaround(.5[z3,z1],-90); rt z5 = top z3 rotatedaround(.5[z6,z3],-90); lft z7 = top z3 rotatedaround(.5[z6,z3],90); bot z8 = (wi,1/8h); z9 = (x5,0); draw z1{right}..z2{down}..z3{left}..z4{up}..cycle; cutdraw z8{left}---z6{left}..z7{up}..z3{right}..z5{down}---z9{down}; penlabels(1,2,3,4,5,6,7,8,9); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{?} % \begin{macrocode} bauhaussymb("?",x_width#,l_height#,0,0); "The symbol ?" ; lft z1 = (0,h-.5wi); top z2 = (.5wi,h); rt z3 = (wi,y1); z4 = (x2,h-wi); bot z6 = (x2,0); z5 = (x2,3y6); draw z1{up}..z2{right}..z3{down}..z4{left}--z5{down}; cutoff(z1,-90); cutoff(z5,-90); drawdot z6; penlabels(1,2,3,4,5,6); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{?`} % \begin{macrocode} bauhaussymb(spanish_query,x_width#,x_height#,p_depth#,0); "Spanish query"; lft z1 = (0,-d+.5wi); bot z2 = (.5wi,-d); rt z3 = (wi,y1); z4 = (x2,-d+wi); top z6 = (x2,h); z5 = (x2,h-3*(h-y6)); draw z3{down}..z2{left}..z1{up}..z4{right}--z5{up}; cutoff(z3,90); cutoff(z5,90); drawdot z6; penlabels(1,2,3,4,5,6); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{!`} % \begin{macrocode} bauhaussymb(spanish_shriek,p_thick#+f_space#,x_height#,p_depth#,0); "Spanish shriek"; lft top z1 = (0,h); lft z2 = (0,h-3*(h-y1)); lft z3 = (0,-d); drawdot z1; cutdraw z2{down}--z3; penlabels(1,2,3); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{right brace} % \begin{macrocode} bauhaussymb(hex"80",.7x_width#,l_height#,p_depth#,0); "The symbol {"; top z1 = (wi,h); top z2 = (1/2wi,h); lft z3 = (1/4wi,h-1/2wi); z4 = (x3,1/2(h-d)); z5 = (0,1/2(h-d)); z6 = (x3,1/2wi-d); bot z7 = (x2,-d); bot z8 = (wi,-d); cutdraw z1{left}..z3{down}---z4{down}--z5{left}; cutdraw z4{down}---z6{down}..z8{right}; penlabels(1,2,3,4,5,6,7,8); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{left brace} % \begin{macrocode} bauhaussymb(hex"81",.7x_width#,l_height#,p_depth#,0); "The symbol }"; top z1 = (0,h); top z2 = (1/2wi,h); rt z3 = (3/4wi,h-1/2wi); z4 = (x3,1/2(h-d)); z5 = (wi,1/2(h-d)); z6 = (x3,1/2wi-d); bot z7 = (x2,-d); bot z8 = (0,-d); cutdraw z1{right}..z3{down}---z4{down}--z5{right}; cutdraw z4{down}---z6{down}..z8{left}; penlabels(1,2,3,4,5,6,7,8); endchar; % \end{macrocode} % \end{macro} % \S{} is not normally avaliable as a character in Computer Modern % fonts but is included here for consistency. % \begin{macro}{\S} % \begin{macrocode} bauhaussymb(hex"82",.5l_height#+f_space#,l_height#,0,0); "Paragraph sign"; lft z1 = (0,.5h); top z2 = (.5wi,.5h+.5wi); rt z3 = (wi,0.5h); bot z4 = (.5wi,.5h-.5wi); lft z5 = (0,h-.5wi); top z6 = (.5wi,h); z7 = z6 rotatedaround((.5wi,y5),-60); rt z8 = (wi,.5wi); bot z9 = (.5wi,0); z10 = z9 rotatedaround((.5wi,y8),-60); draw z10{dir(-60)}..z9{right}..z8{up}--z3{up}; draw z7{dir(120)}..z6{left}..z5{down}--z1{down}; draw z1{up}..z2{right}..z3{down}..z4{left}..cycle; penlabels(1,2,3,4,5,6,7,8,9,10); cutoff(z10,120); cutoff(z7,-30); endchar; % \end{macrocode} % \end{macro} % "Q" as a reflected "P" % \begin{macro}{\varQ} % \begin{macrocode} bauhaussymb(hex"83",A_width#,l_height#,0,0); "variant letter Q"; rt z1 = (wi,0) ; lft z2 = (0,h-.5wi) ; top z3 = (0.5wi,h) ; rt z4 = (wi,h-.5wi) ; bot z5 = (0.5wi,h-wi) ; draw z2{up}..z3{right}..z4{down}..z5{left}..cycle ; cutdraw z1{up}--z4{up}; penlabels(1,2,3,4,5); endchar ; % \end{macrocode} % \end{macro} % \iffalse % % \fi % % \subsection{Ligatures (\texttt{ligatures})} % % Since I'm Danish, I insited on this ligatures, eventhough they are % a pain in the neck. % \iffalse %<*ligatures> % \fi % \begin{macro}{\ss} % \begin{macrocode} bauhaussymb(hex"19",2p_thick#+.5l_height#+f_space#,l_height#,0,0); "Ligature ss"; lft z1 = (wi-.5h,0); lft z2 = (wi-.5h,.75h); top z3 = (wi-.25h,h); rt z4 = (wi,y2); z5 = (wi-.25h,.5h); z6 = (0,.5h); rt z7 = (wi,.25h); bot z8 = (wi-.25h,0); cutdraw z1{up}---z2{up}..z3{right}..z4{down}..z5{left}---z6{left}; cutdraw z5{right}..z7{down}..z8{left}; penlabels(1,2,3,4,5,6,7,8); endchar; % \end{macrocode} % \end{macro} % Here we use the previously stored picture of ``a'' and ``e''. % \begin{macro}{\ae} % \begin{macrocode} bauhaussymb(hex"1A",2x_width#-p_thick#-2f_space#,x_height#,0,0); "Ligature ae"; currentpicture := a_pic + ( e_pic shifted (.5wi,0)); endchar; % \end{macrocode} % \end{macro} % Here we use the previously stored picture of ``o'' and ``e''. % \begin{macro}{\oe} % \begin{macrocode} bauhaussymb(hex"1B",2x_width#-p_thick#-2f_space#,x_height#,0,0); "Ligature oe"; currentpicture := o_pic + ( e_pic shifted (.5wi,0)); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\o} % Here we use the previously stored picture of ``o''. % \begin{macrocode} bauhaussymb(hex"1C",x_width#,x_height#,0,0); "Ligature o/"; lft z10 = (0,0); rt z11 = (wi,h); draw z10{(1,1)}--z11; cutoff(z10,-90); cutoff(z11,90); currentpicture := currentpicture + o_pic; endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\AE} % \begin{macrocode} bauhaussymb(hex"1D",M_width#,l_height#,0,0); "Ligature AE"; lft z1 = (0,0); lft z2 = (0,.5wi); top z3 = (.5wi,h); top z4 = (wi,h); lft z5 = (0,.5h); z6 = (wi,.5h); bot z7 = (wi,0); bot z8 = (.5wi,0); cutdraw z1{up}---z2{up}..z3{right}---z4{right}; draw z5{right}---z6{right}; cutoff(z6,0); cutdraw z7{left}---z8{(-1,1)}---z3{up}; penlabels(1,2,3,4,5,6,7,8); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\OE} % \begin{macrocode} bauhaussymb(hex"1E",.5l_height#+.5A_width#+.5f_space#,l_height#,0,0); "Ligature OE"; bot z1 = (wi,0); bot z2 = (.5h,0); lft z3 = (0,.5h); top z4 = (.5h,h); top z5 = (wi,h); z6 = .5[z2,z4]; z7 = .5[z1,z5]; cutdraw z1{left}---z2{left}..z3{up}..z4{right}---z5{right}; draw z2{up}--z4{up}; draw z6{right}--z7{right}; cutoff(z7,0); penlabels(1,2,3,4,5,6,7); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\O} % Here we use the previously stored picture of ``O''. % \begin{macrocode} bauhaussymb(hex"1F",l_height#+f_space#,l_height#,0,0); "Liguture O/"; lft z10 = (0,0); rt z11 = (wi,h); draw z10{(1,1)}--z11; cutoff(z10,-90); cutoff(z11,90); currentpicture := currentpicture + O_pic; endchar; % \end{macrocode} % \end{macro} % \iffalse % % \fi % % \subsection{Punctuation Marks (\texttt{punctuations.mf})} % % This is the source file for the punctuation marks in this font. % These programs are pretty straight--foreward. % \iffalse %<*punctuations> % \fi % \begin{macro}{!} % \begin{macrocode} bauhaussymb("!",p_thick#+f_space#,l_height#,0,0); "The punctuation !"; lft bot z1 = (0,0); lft z2 = (0,3y1); lft z3 = (0,h); drawdot z1; cutdraw z2{up}--z3; penlabels(1,2,3); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{(} % \begin{macrocode} bauhaussymb("(",.5x_width#,l_height#,p_depth#,0); "The punctuation ("; rt z1 = (wi,h); lft z3 = (0,.5(h-d)); rt z5 = (wi,-d); draw z1..z3..z5; cutoff(z1,90); cutoff(z5,-90); penlabels(1,3,5); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{)} % \begin{macrocode} bauhaussymb(")",.5x_width#,l_height#,p_depth#,0); "The punctuation )"; lft z1 = (0,h); rt z3 = (wi,.5(h-d)); lft z5 = (0,-d); draw z1..z3..z5; cutoff(z1,90); cutoff(z5,-90); penlabels(1,3,5); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{''} % \begin{macrocode} bauhaussymb(hex"22",3f_space#,l_height#,0,0); "The punctuation ''"; lft z1 = (3p_thick,h); lft z2 = (p_thick,h); lft z3 = (2p_thick,h-3p_thick); lft z4 = (0,h-3p_thick); draw z1--z3; draw z2--z4; cutoff(z1,90); cutoff(z2,90); cutoff(z3,-90); cutoff(z4,-90); penlabels(1,2,3,4); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{#} % \begin{macrocode} bauhaussymb("#",A_width#,l_height#,0,0); "The punctuation #"; lft top z1 = (0,3/4h); lft bot z2 = (0,1/4h); rt z3 = (wi,y1); rt z4 = (wi,y2); cutdraw z1{right}--z3{right}; cutdraw z2{right}--z4{right}; bot z5 = (1/5wi,0); bot z6 = (3/5wi,0); top z7 = (2/5wi,h); top z8 = (4/5wi,h); draw z5--z7; draw z6--z8; cutoff(z5,-90); cutoff(z6,-90); cutoff(z7,90); cutoff(z8,90); penlabels(1,2,3,4,5,6,7,8); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\%} % \begin{macrocode} bauhaussymb("%",A_width#,l_height#,0,0); "The punctuation %"; rt z1 = (wi,h); lft z2 = (0,0); draw z1--z2; cutoff(z1,90); cutoff(z2,-90); top z3 = (1/4wi,h); rt z4 = top z3 rotatedaround((x3,h-x3),-90); bot z5 = top z3 rotatedaround((x3,h-x3),-180); lft z6 = top z3 rotatedaround((x3,h-x3),-270); draw z3{right}..z4{down}..z5{left}..z6{up}..cycle; bot z7 = (3/4wi,0); lft z8 = bot z7 rotatedaround((x7,x3),-90); top z9 = bot z7 rotatedaround((x7,x3),-180); rt z10 = bot z7 rotatedaround((x7,x3),-270); draw z7{left}..z8{up}..z9{right}..z10{down}..cycle; penlabels(1,2,3,4,5,6,7,8,9,10,11,12); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{'} % \begin{macrocode} bauhaussymb("'",2f_space#,l_height#,0,0); "The punctuation '"; lft z1 = (p_thick,h); lft z2 = (0,h-3p_thick); draw z1--z2; cutoff(z1,90); cutoff(z2,-90); penlabels(1,2); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{*} % \begin{macrocode} bauhaussymb("*",x_width#,l_height#,0,0); "The punctuation *"; z1 = (0.5wi,h); z2 = z1 rotatedaround((.5wi,h-.5wi),-60); z3 = z1 rotatedaround((.5wi,h-.5wi),-120); z4 = z1 rotatedaround((.5wi,h-.5wi),-180); z5 = z1 rotatedaround((.5wi,h-.5wi),-240); z6 = z1 rotatedaround((.5wi,h-.5wi),-300); cutdraw z1--z4; cutdraw z2--z5; cutdraw z3--z6; penlabels(1,2,3,4,5,6); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{+} % \begin{macrocode} bauhaussymb("+",x_width#,x_height#,0,0); "The punctuation +"; z1 = (.5wi,h); z2 = (.5wi,0); z3 = (0,.5h); z4 = (wi,.5h); cutdraw z1{down}--z2; cutdraw z3{right}--z4; penlabels(1,2,3,4); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{,} % \begin{macrocode} bauhaussymb(",",p_thick#+f_space#,p_thick#,2/3p_depth#,0); "The punctuation ,"; lft bot z1 = (0,h); lft top z2 = (0,-d); cutdraw z1{down}--z2; penlabels(1,2); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{-} % \begin{macrocode} bauhaussymb("-",.7x_width#,x_height#,0,0); "The punctuation -"; z1 = (0,.5h); z2 = (wi,y1); cutdraw z1{right}--z2; penlabels(1,2); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{.} % \begin{macrocode} bauhaussymb(".",p_thick#+f_space#,p_thick#,0,0); "The punctuation ."; lft bot z1 = (0,0); drawdot z1; penlabels(1); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{/} % \begin{macrocode} bauhaussymb("/",2/3x_width#,l_height#,p_depth#,0); "The punctuation /"; lft z1 = (0,-d); rt z2 = (wi,h); draw z1--z2; cutoff(z1,-90); cutoff(z2,90); penlabels(1,2); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{:} % \begin{macrocode} bauhaussymb(":",p_thick#+f_space#,x_height#,0,0); "The punctuation :"; top lft z1 = (0,h); bot lft z2 = (0,0); drawdot z1; drawdot z2; penlabels(1,2); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{;} % \begin{macrocode} bauhaussymb(";",p_thick#+f_space#,x_height#,2/3p_depth#,0); "The punctuation ;"; lft bot z1 = (0,0); lft top z2 = (0,-d); lft top z3 = (0,h); cutdraw z1{down}--z2; drawdot z3; penlabels(1,2,3); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{=} % \begin{macrocode} bauhaussymb("=",.7x_width#,x_height#,0,0); "The punctuation ="; top z1 = (0,1/3h); z2 = (wi,y1); cutdraw z1{right}--z2; bot z3 = (0,2/3h); z4 = (wi,y3); cutdraw z3{right}--z4; penlabels(1,2,3,4); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{@} % \begin{macrocode} bauhaussymb("@",l_height#+f_space#,l_height#,0,0); "The punctuation @"; rt z1 = (wi,0); rt z2 = (wi,.5h); top z3 = (.5wi,h); lft z4 = (0,.5h); z5 = z4 rotatedaround((.5wi,.5h),60); rt z6 = (wi,1/3h); top z7 = (wi-1/3h,2/3h); lft z8 = (wi-2/3h,1/3h); bot z9 = (wi-1/3h,0); cutdraw z1{up}--z2{up}..z3{left}..z4{down}..z5{dir(-30)}; draw z6{up}..z7{left}..z8{down}..z9{right}..cycle; penlabels(1,2,3,4,5,6,7,8,9); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{[} % \begin{macrocode} bauhaussymb("[",.7x_width#,l_height#,p_depth#,0); "The punctuation ["; rt top z1 = (wi,h); lft top z2 = (0,h); lft bot z3 = (0,-d); rt bot z4 = (wi,-d); cutdraw z1{left}---z2{(-1,-1)}---z3{(1,-1)}---z4{right}; penlabels(1,2,3,4); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{``} % \begin{macrocode} bauhaussymb(hex"5C",3f_space#,l_height#,0,0); "The punctuation ``"; lft z1 = (0,h); lft z2 = (2p_thick,h); lft z3 = (p_thick,h-3p_thick); lft z4 = (3p_thick,h-3p_thick); draw z1--z3; draw z2--z4; cutoff(z1,90); cutoff(z2,90); cutoff(z3,-90); cutoff(z4,-90); penlabels(1,2,3,4); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{]} % \begin{macrocode} bauhaussymb("]",.7x_width#,l_height#,p_depth#,0); "The punctuation ]"; lft top z1 = (0,h); rt top z2 = (wi,h); rt bot z3 = (wi,-d); lft bot z4 = (0,-d); cutdraw z1{right}---z2{(1,-1)}---z3{(-1,-1)}---z4{left}; penlabels(1,2,3,4); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{`} % \begin{macrocode} bauhaussymb("`",2f_space#,l_height#,0,0); "The punctuation `"; lft z1 = (0,h); lft z2 = (p_thick,h-3p_thick); draw z1--z2; cutoff(z1,90); cutoff(z2,-90); penlabels(1,2); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{--} % \begin{macrocode} bauhaussymb(hex"7B",x_width#,x_height#,0,0); "The punctuation --"; z1 = (0,.5h); z2 = (wi,y1); cutdraw z1{right}--z2; penlabels(1,2); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{---} % \begin{macrocode} bauhaussymb(hex"7C",m_width#,x_height#,0,0); "The punctuation ---"; z1 = (0,.5h); z2 = (wi,y1); cutdraw z1{right}--z2; penlabels(1,2); endchar; % \end{macrocode} % \end{macro} % \iffalse % % \fi % % \subsection{Accents (\texttt{accents.mf})} % % Source file for accents. The ``tie--after'' \t{oo} (\Lcs{t}) % accent is not defined. % \iffalse %<*accents> % \fi % \begin{macro}{\`{}} % \begin{macrocode} bauhaussymb(hex"12",x_width#,l_height#,0,0); "The accent `"; top z1 = (0,h); bot z2 = (2.5p_thick,h-2.5p_thick); draw z1--z2; cutoff(z1,90); cutoff(z2,-90); penlabels(1,2); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\'{}} % \begin{macrocode} bauhaussymb(hex"13",x_width#,l_height#,0,0); "The accent '"; bot z1 = (0.5wi,h-2p_thick); top z2 = (.5wi+2p_thick,h); draw z1--z2; cutoff(z1,-90); cutoff(z2,90); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\v{}} % \begin{macrocode} bauhaussymb(hex"14",x_width#,l_height#,0,0); "The accent hachek"; bot z1 = (.5wi,h-2p_thick); top z2 = (.5wi-1.5p_thick,h); top z3 = (.5wi+1.5p_thick,h); draw z2---z1{right}---z3; cutoff(z2,90); cutoff(z3,90); penlabels(1,2,3); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\u{}} % \begin{macrocode} bauhaussymb(hex"15",x_width#,l_height#,0,0); "The accent breve"; bot z1 = (.5wi,h-2p_thick); top z2 = (.5wi-p_thick,h); top z3 = (.5wi+p_thick,h); cutdraw z2{down}..z1{right}..z3{up}; penlabels(1,2,3); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\={}} % \begin{macrocode} bauhaussymb(hex"16",x_width#,l_height#,0,0); "The accent bar"; top z1 = (.5wi-1.5p_thick,h); top z2 = (.5wi+1.5p_thick,h); cutdraw z1{right}--z2; penlabels(1,2); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\aa{}} % \begin{macrocode} bauhaussymb(hex"17",A_width#,l_height#,0,0); "The accent circle"; top z1 = (.5wi,h+p_thick); lft z2 = (.5wi-1.5p_thick,h-.5p_thick); bot z3 = (.5wi,h-2p_thick); rt z4 = (.5wi+1.5p_thick,h-.5p_thick); draw z1{left}..z2{down}..z3{right}..z4{up}..cycle; penlabels(1,2,3,4); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\c{}} % \begin{macrocode} bauhaussymb(hex"18",x_width#,l_height#,p_depth#,0); "The accent cidelia"; bot z1 = (.5wi,0); rt z2 = (.5wi+1.5p_thick,-.5p_thick); top z3 = (.5wi,-p_thick); cutdraw z1{right}..z2{down}..z3{left}; penlabels(1,2,3); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\l} % \begin{macrocode} bauhaussymb(hex"20",f_space#,l_height#,0,0); "The accent bar over l"; top z1 = (0,.5h); bot z2 = (3p_thick,.5h); cutdraw z1--z2; penlabels(1,2); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{^} % \begin{macrocode} bauhaussymb(hex"5E",x_width#,l_height#,0,0); "The accent hat"; top z1 = (.5wi,h); bot z2 = (.5wi-1.5p_thick,h-2p_thick); bot z3 = (.5wi+1.5p_thick,h-2p_thick); draw z2---z1{right}---z3; cutoff(z2,-90); cutoff(z3,-90); penlabels(1,2,3); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\.{}} % \begin{macrocode} bauhaussymb(hex"5F",x_width#,l_height#,0,0); "The accent dot"; top z1 = (.5wi,h); drawdot z1; penlabels(1,2,3); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\H{}} % \begin{macrocode} bauhaussymb(hex"7D",x_width#,l_height#,0,0); "The accent ''"; rt z1 = (.5wi,h); rt z2 = (.5wi-2p_thick,h-2p_thick); rt z3 = (.5wi+2p_thick,h); rt z4 = (.5wi,h-2p_thick); draw z1--z2; draw z3--z4; cutoff(z1,90); cutoff(z2,-90); cutoff(z3,90); cutoff(z4,-90); penlabels(1,2,3,4); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{tilde} % \begin{macrocode} bauhaussymb(hex"7E",x_width#,l_height#,0,0); "The accent ~"; bot z1 = (.5wi-1.5p_thick,h-1.5p_thick); top z2 = (.5wi-.75p_thick,h); bot z3 = (.5wi+.75p_thick,h-1.5p_thick); top z4 = (.5wi+1.5p_thick,h); cutdraw z1..z2{right}..z3{right}..z4; penlabels(1,2,3,4); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{umlaut} % \begin{macrocode} bauhaussymb(hex"7F",x_width#,l_height#,0,0); "The accent Ļ"; top rt z1 = (.5wi-.25p_thick,h); top lft z2 = (.5wi+.25p_thick,h); drawdot z1; drawdot z2; penlabels(1,2); endchar; % \end{macrocode} % \end{macro} % \iffalse % % \fi % % \subsection{Bauhaus symbols (\texttt{extras.mf})} % % This is the sources for the extra \textbayer{bauhaus} symbols. % Use them to add some spiece to your document, or as icons % indicating special sections, etc. % \iffalse %<*extras> % \fi % \begin{macro}{\bauplus} % This is \emph{not} --- I repeat \emph{NOT} --- a schwastica, but % an asymmetrical plus--sign. % \begin{macrocode} picture blackpic; bauhausextra(hex"00","bauplus")%\bauplus z1 = (0,0); z2 = (0,h); z3 = (wi,h); z4 = (wi,0); fill z1--z2--z3--z4--cycle; blackpic := currentpicture; inn=.9wi; sp=.05wi; z5 = (1/3inn+sp,h-sp); z6 = (.5(wi-sp),y5); z7 = (x6,.5(h+.sp)); z8 = (x5,y7); path square ; square = z5--z6--z7--z8--cycle; unfill square; unfill (square rotatedaround((.5wi,.5h),90)); unfill (square rotatedaround((.5wi,.5h),180)); unfill (square rotatedaround((.5wi,.5h),270)); penlabels(1,2,3,4,5,6,7,8); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\baudash} % Why not try making hyphonation dashes in a new way (it's only % a suggestion!). % \begin{macrocode} bauhausextra(hex"01","baudash")%\baudash currentpicture := currentpicture + blackpic; innn=.9wi; z5 = (sp,.5(h+sp)); z6 = (sp,1/6innn+.5h); z7 = (.5(wi-sp),y6); z8 = (x7,.y5); path square[] ; square1 = z5--z6--z7--z8--cycle; square2 = (square1 reflectedabout((.5wi,0),(.5wi,h))); unfill square1; unfill (square1 reflectedabout((0,.5h),(wi,.5h))); unfill square2 ; unfill (square2 reflectedabout((0,.5h),(wi,.5h))); penlabels(1,2,3,4,5,6,7,8); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\bauequal} % Well, sometimes things ARE what they may not seem. % \begin{macrocode} bauhausextra(hex"02","bauequal")%\bauequal currentpicture := currentpicture + blackpic; z1 = (sp,.5(h+sp)); z2 = (sp,1/6innn+.5h); z3 = (.5(wi-sp),y2); z4 = (x3,.y1); z5 = (sp,sp); z6 = (sp,1/6innn+sp); z7 = (.5(wi-sp),y6); z8 = (x7,.y5); path square[] ; square1 = z1--z2--z3--z4--cycle; square2 = (square1 reflectedabout((.5wi,0),(.5wi,h))); square3 = z5--z6--z7--z8--cycle; square4 = (square3 reflectedabout((.5wi,0),(.5wi,h))); unfill square1; unfill square2; unfill square3 ; unfill square4; penlabels(1,2,3,4,5,6,7,8); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\bautrangle} % The triangle was one of the main forms to the founder of % bauhaus school --- Walter Gropius, along with the circle and % the square. If you use the \textsf{color} package, you could % use a yellow trangle, red circle and blue square, to make a % compliment to Walter Gropius. \index{Gropius, Walter} % \begin{macrocode} bauhausextra(hex"03","bautriangle")%\bautriangle z1 = (0,0); z2 = (.5wi,h); z3 = (wi,0); fill z1--z2--z3--cycle; penlabels(1,2,3); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\baucircle} % Lets make thing round (but not quite). % \begin{macrocode} bauhausextra(hex"04","baucircle")%\baucircle currentpicture := currentpicture + blackpic; pickup pencircle scaled 1/4wi; top z1 = (.5wi,h); rt z2 = (wi,.5h); bot z3 = (.5wi,0); lft z4 = (0,.5h); undraw z1..z2..z3..z4..cycle; penlabels(1,2,3,4); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\baucross} % ``X'' marks the spot. % \begin{macrocode} bauhausextra(hex"05","baucross")%\baucross bot lft z1 = (0,0) ; top lft z2 = (0,h) ; top rt z3 = (wi,h) ; bot rt z4 = (wi,0) ; draw z1--z2--z3--z4--cycle; z5 = (0,1/4h) ; z6 = (1/4wi,.5h) ; z7 = (0,3/4h) ; z8 = (1/4wi,h) ; z9 = (.5wi,3/4h) ; z10 = (3/4wi,h) ; z11 = (wi,3/4h) ; z12 = (3/4wi,.5h) ; z13 = (wi,1/4h) ; z14 = (3/4wi,0) ; z15 = (.5wi,1/4h) ; z16 = (1/4wi,0) ; fill z1--z5--z6--z7--z2--z8--z9--z10--z3--z11--z12-- z13--z4--z14--z15--z16--cycle; penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\bauwindow} % This symbols resembles the Japaness sign for ``field'', but % to Europeans, I think it looks like a window. % \begin{macrocode} bauhausextra(hex"06","bauwindow")%\bauwindow bot lft z1 = (0,0) ; top lft z2 = (0,h) ; top rt z3 = (wi,h) ; bot rt z4 = (wi,0) ; draw z1--z2--z3--z4--cycle; top z5 = (.5wi,h) ; bot z6 = (.5wi,0) ; lft z7 = (0,.5h) ; rt z8 = (wi,.5h) ; draw z5--z6; draw z7--z8; penlabels(1,2,3,4,5,6,7,8); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\bauhole} % \begin{macrocode} bauhausextra(hex"07","bauhole")%\bauhole top z1 = (.5wi,h); rt z2 = (wi,.5h); bot z3 = (x1,0); lft z4 = (0,y2); draw z1..z2..z3..z4..cycle; z5 = (.5wi,9/10h); z6 = (9/10wi,.5h); z7 = (x5,1/10h); z8 = (1/10wi,y6); fill z5..z6..z7..z8..cycle; penlabels(1,2,3,4,5,6,7,8); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\baueclipse} % ``The sun ain't gonna shine anymore''. How's dat for a % quote\footnote{Slang --- what a dreadfull thing.}. % \begin{macrocode} bauhausextra(hex"08","baueclipse")%\baueclipse pickup pencircle scaled p_thick; top z1 = (.5wi,h); rt z2 = (wi,.5h); bot z3 = (x1,0); lft z4 = (0,y2); draw z1..z2..z3..z4..cycle; delta = .05wi; z5 = bot z1 - (0,delta); z6 = lft z2 - (delta,0); z7 = top z3 + (0,.9delta); z8 = rt z4 + (.9delta,0); fill z5..z6..z7..z8..cycle; penlabels(1,2,3,4,5,6,7,8); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\bauquarter} % Take a slice of this cake! % \begin{macrocode} bauhausextra(hex"09","bauquarter")%\bauquarter z1 = (.5wi,h); z2 = (.5wi,.5h); z3 = (wi,y2); z4 = (x1,0); z5 = (0,y2); top z7 = z1; rt z8 = z3; fill z4{left}..z5{up}..z1--z2--z3..cycle; draw z7{right}..z8{down}; penlabels(1,2,3,4,5,7,8); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\bauarrow} % An encircled black arrow. % \begin{macrocode} bauhausextra(hex"0A","bauarrow")%\bauarrow top z1 = (.5wi,h); rt z2 = (wi,.5h); bot z3 = (x1,0); lft z4 = (0,y2); draw z1..z2..z3..z4..cycle; z5 = (3/10wi,6/10h); z6 = (6/10wi,y5); z7 = (x6,y5+1/20wi); z8 = (x6+3/20wi,.5h); z9 = (x6,4/10h-1/20h); z10 = (x6,4/10h); z11 = (x5,y10); fill z5--z6--z7--z8--z9--z10--z11--cycle; penlabels(1,2,3,4,5,6,7,8,9,10,11); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\bauwhitearrow} % Much like above, only the arrow is hollow. % \begin{macrocode} bauhausextra(hex"0B","bauwhitearrow")%\bauwhitearrow top z1 = (.5wi,h); rt z2 = (wi,.5h); bot z3 = (x1,0); lft z4 = (0,y2); draw z1..z2..z3..z4..cycle; z5 = (3/10wi,6/10h); z6 = (6/10wi,y5); z7 = (x6,y5+1/20wi); z8 = (x6+3/20wi,.5h); z9 = (x6,4/10h-1/20h); z10 = (x6,4/10h); z11 = (x5,y10); draw z5--z6--z7--z8--z9--z10--z11--cycle; penlabels(1,2,3,4,5,6,7,8,9,10,11); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\bauhead} % The well--known logo for bauhaus. % We save some of this symbol picture \texttt{commonface}, since % this includes the points common to both this symbol and the next. % \begin{macrocode} bauhausextra(hex"0C","bauhead")%\bauhead % Vertical variables a1 = 0.702h ; a2 = 0.561h ; a3 = 0.491h ; a4 = 0.351h ; a5 = 0.272h ; a6 = 0.140h ; % horizontal variables b1 = 0.202wi ; b2 = 0.307wi ; b3 = 0.412wi ; b4 = 0.447wi ; b5 = 0.465wi ; b6 = 0.518wi ; b7 = 0.588wi ; b8 = 0.623wi ; % eye pickup pensquare scaled .009wi ; top lft z1 = (b1,a1) ; top rt z2 = (b2,a1) ; draw z1--z2; bot rt z3 = (b4,a3) ; top rt z4 = (b4,a2) ; draw z3--z4; z5 = (b2,a1) ; z6 = (b4,a1) ; z7 = (b4,a2) ; z8 = (b2,a2) ; fill z5--z6--z7--z8--cycle; % nostril lft bot z9 = (b4,a4) ; rt bot z10 = (b7,a4) ; draw z9--z10 ; % chin lft bot z11 = (b2,a6) ; rt bot z12 = (b6,a6) ; draw z11--z12; % lips pickup pensquare scaled 0.035wi ; lft top z13 = (b5,a5) ; rt top z14 = (b6,a5) ; draw z13--z14; % bottom of face z15 = (b6,a4) ; z16 = (b7,a4) ; z17 = (b7,a6) ; z18 = (b6,a6) ; fill z15--z16--z17--z18--cycle ; % save the common stuff picture commonface ; commonface := currentpicture ; % head with circle path noselft, nosert, necklft, neckrt ; path headcircle , parttop, partbot; z19 = (b7,a4) ; z20 = (b7,h) ; noselft = z19--z20 ; z21 = (b8,h) ; z22 = (b8,a4) ; nosert = z21--z22 ; z23 = (b3,a6) ; z24 = (b3,0) ; necklft = z23--z24 ; z25 = (b6,0) ; z26 = (b6,a6) ; neckrt = z25--z26 ; % circle pickup pencircle scaled .009wi; top z27 = (.5wi,h) ; rt z28 = (wi,.5h) ; bot z29 = (.5wi,0) ; lft z30 = (0,.5h) ; headcircle := z27..z28..z29..z30..cycle ; draw headcircle ; % nose/forhead z31 = noselft intersectiontimes headcircle ; z32 = nosert intersectiontimes headcircle ; parttop = subpath(y31,y32) of headcircle ; fill z19--parttop--z22--cycle ; % nose/forhead z33 = neckrt intersectiontimes headcircle ; z34 = necklft intersectiontimes headcircle ; partbot = subpath(y34,y33) of headcircle ; fill z23--partbot--z26--cycle ; penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20) ; penlabels(21,22,23,24,25,26,27,28,29,30); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\bauface} % This symbol is like the one above, but without the enclosing % circle. We reuse the saved picture \texttt{commonface}, since % this includes the points common to both symbols. % \begin{macrocode} bauhausextra(hex"0D","bauface");%\bauface % head without cicle path noselft, nosert, necklft, neckrt ; % nose/forhead z19 = (b7,a4) ; z20 = (b7,h) ; noselft = z19--z20 ; z21 = (b8,h) ; z22 = (b8,a4) ; nosert = z21--z22 ; fill noselft--nosert--cycle; % neck z23 = (b3,a6) ; z24 = (b3,0) ; necklft = z23--z24 ; z25 = (b6,0) ; z26 = (b6,a6) ; neckrt = z25--z26 ; fill necklft--neckrt--cycle; currentpicture := currentpicture + commonface ; endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\bauquestion} % This symbol didn't come out as I originally intended it to, but % all--in--all I'm quite contend with the outcome. % \begin{macrocode} beginchar(hex"0E",5/7l_height#+f_space#,l_height#,p_depth#); %\bauquestion "The bauhaus symbol bauquestion"; pickup pencircle scaled 1/10p_thick ; spp=.01wi; wi#:=2/3l_height#; define_pixels(wi); z1 = (0,0) ; z2 = (0,h) ; z3 = (wi,h) ; z4 = (wi,0) ; fill z1--z2--z3--z4--cycle; z5 = (1/2(.5wi-spp)+spp,spp); z6 = (.5wi,y5) ; z7 = (.5wi,x5); z8 = (x5,x5); unfill z5--z6--z7--z8--cycle; z9 = (x6+3/2(x5-spp),y7); z10 = (x9,y7+x9-x6) ; z11 = (x6,y10) ; unfill z7--z9--z10--z11--cycle; z12 = (x6,y11+.5(wi-spp)) ; z13 = (spp,y12) ; z14 = (spp,y10) ; unfill z11--z12--z13--z14--cycle ; penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\bauforms} % This is proberly the most complicated symbol of the entire font. % It is shown in 72pt in Figure~\ref{charforms}. % \begin{figure}[htbp] % \centering % \font\Hugebayer=universal17 at 72pt % \textbayer{\Hugebayer \bauforms} % \caption{\Lcs{bauforms} symbol.} % \label{charforms} % \end{figure} % % This symbol is, however proberly also the most interresting symbol % of the font, design--wise, since it uses the the three fundamental % forms: the circle, the trangle and the square. As stated elsewhere, % these forms was considered by Walter Gropius as three most important % figures in design.\index{Gropius, Walter} % % The task is to make a circle, in inside this make a triangle and % a square. However, the angles (in particular the right most) of % triangle should be so that the left--most down--stroke should % divide the square into two rectangles, twice has high as wide. % % One should think the square is an inscribed square of the circle % with center on the middle of the trangles down--stroke, with a % radius of the distance from this point to the outer circle. % This is \emph{not} the case! % % It is possible to determine analythical the vertex points of the % triangle and square as a function of the left most angle (in the % \MF{} program called \texttt{phi}), but I have found \emph{no} % anaytical expression for this angle, though I cannot prove no such % expression exists. If you have a proff of this, or found an % expression, please let me know, as I consider it a challenging % problem in geometry.\index{Problem in geometry} % % \begin{figure}[htbp] % \centering % \epsfig{file=forms.eps} % \caption{Geometrical problem \Lcs{bauforms}.} % \label{geometry} % \end{figure} % % Figure~\ref{geometry} shows the upper half of this symbol in terms % of point positions. Notice point $z_{ref}$ isnīt in the program for % \Lcs{bauforms} but is shown here to point out an important feature % of the numerical calculations. Also $w$ is called \texttt{wi} in the % \MF{} program. % % The analytical equations for $z_6=(a_3,a_4)$ and $z_8=(a_5,a_6)$ can % be determined as functions of $\phi$ as follows:\\ % From the problem, it is given, that % \begin{equation}a_3-a_5=a_6,\end{equation} % and since the angle $\phi$ at the edge of the circle is eguivivalent % to the angle $2\phi$ from the center of the circle. So there % resaults % \begin{eqnarray} % \sqrt{(a_3)^2+(a_4)^2}&=&w\cos\phi\nonumber\\ % &=&a_1\\ % a_3 &=&w\cos\phi\cos\phi\nonumber\\ % &=&w\cos^2\phi\\ % a_4 &=&w\cos\phi\sin\phi\quad. % \end{eqnarray} % Through some use of the relations of sine, and the fact that the % angle between the $x$--axis and the vector $z_8-(w/2,0)$ \emph{must} % be 45 degrees, we can calculate $a_5,a_6$ and there by $a_7$: % \begin{eqnarray} % a_2 &=&\frac{w\cos^2\phi}{\cos\phi+\sin\phi}\\ % a_5 &=&a_2\cos\phi\\ % a_6 &=&a_2\sin\phi\\ % a_7 &=&a_2(\cos\phi+2\sin\phi)\quad. % \end{eqnarray} % We have found the points $z_6,z_8,z_9$ \emph{but as functions of % $\phi$}, and since all properties of the problem at hand has been % fully explored, no more information can be drawn. So we still need a % way to determine the angle $\phi$. % % To solve this problem, I use an \emph{numerical} method of finding % the angle $\phi$. The points $z_6,z_8$ has been determined, so % that the down stroke divieds the square into two equal rectangles, % with double the width as the height. The last problem is to % determine the angle $\phi$, so that the point $z_9$ lies on the % circle. % % Therefore we calculate the point $z_{ref}$, which is the % point on the circle where $z_9$ should be, if it were to lie on the % circle with the current choice of $\phi$. $z_{ref}=(a_9,a_{10})$ is % given by: % \begin{eqnarray} % \theta&=&\tan^{-1}\left(\frac{a_7-w/2}{a_6}\right)\nonumber\\ % &=&a_8\\ % a_9 &=&\frac{w}{2}(1+\cos\theta)\\ % a_10 &=&\frac{w}{2}\sin\theta\quad. % \end{eqnarray} % Then we test to see if the point $z_9$ is reasonably close to % $z_ref$. If so, we use the current choice of $\phi$ to set all the % points. % \begin{macrocode} bauhausextra(hex"84","bauforms");%\bauforms pickup pencircle scaled 1/32 wi; top z1 = (.5wi,h); rt z2 = (wi,.5h); bot z3 = (.5wi,0); lft z4 = (0,.5h); draw z1..z2..z3..z4..cycle; for phi := 20 step 0.1 until 40 : a1 := 31/32wi*cosd(phi); a2 := (31/32wi*(cosd(phi)**2))/(cosd(phi)+sind(phi)); a3 := a1*cosd(phi); a4 := a1*sind(phi); a5 := a2*cosd(phi); a6 := a2*sind(phi); a7 := a2*(cosd(phi)+2*sind(phi)); a8 := angle(a7-31wi/64,a6); a9 := 31wi/64*(1+cosd(a8)); a10 := 31wi/64*sind(a8); if abs(a7 - a9)<.1 : exitif abs(a6 - a10)<.1 ; fi; endfor; pickup pencircle scaled 1/64wi; lft z5 = (1/32wi,.5h); top z6 = (a3,a4)+(0,.5h); bot z7 = (a3,.5h-a4); draw z5--z6--z7--z5; pickup pencircle scaled 1/24wi; top lft z8 = (a5,a6)+(0,.5h); top rt z9 = (a7,a6)+(0,.5h); bot rt z10 = (a7,.5h-a6); bot lft z11 = (a5,.5h-a6); z12 = (a9,a10)+(0,.5h); draw z8--z9--z10--z11--z8; penlabels(1,2,3,4,5,6,7,8,9,10,11,12); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\baupunct} % \begin{macrocode} bauhausextra(hex"85","baupunct");%\baupunct z1 = (.5wi,h); z2 = (wi,.5h); z3 = (.5wi,0); z4 = (0,.5h); fill z1..z2..z3..z4..cycle; penlabels(1,2,3,4); endchar; % \end{macrocode} % \end{macro} % \begin{macro}{\bausquare} % \begin{macrocode} bauhausextra(hex"86","bausquare");%\bausquare z1 = (0,h); z2 = (wi,h); z3 = (wi,0); z4 = (0,0); fill z1--z2--z3--z4--cycle; penlabels(1,2,3,4); endchar; % end of file "extras.mf" % \end{macrocode} % \end{macro} % \iffalse % % \fi % % \Finale % \PrintIndex % \PrintChanges