summaryrefslogtreecommitdiff
path: root/fonts/barcodes
diff options
context:
space:
mode:
Diffstat (limited to 'fonts/barcodes')
-rw-r--r--fonts/barcodes/vulis/barcodes.mf269
-rw-r--r--fonts/barcodes/willadt/README82
-rw-r--r--fonts/barcodes/willadt/barcodes.dtx2590
-rw-r--r--fonts/barcodes/willadt/barcodes.ins55
-rw-r--r--fonts/barcodes/willadt/changes7
-rw-r--r--fonts/barcodes/willadt/codean.pl492
-rw-r--r--fonts/barcodes/willadt/eandoc.pdfbin0 -> 118806 bytes
-rw-r--r--fonts/barcodes/willadt/install.bat108
-rw-r--r--fonts/barcodes/willadt/wlcdb.vpl231
-rw-r--r--fonts/barcodes/willadt/wlcf39.vpl1334
-rw-r--r--fonts/barcodes/willadt/wlitf.vpl1363
11 files changed, 6531 insertions, 0 deletions
diff --git a/fonts/barcodes/vulis/barcodes.mf b/fonts/barcodes/vulis/barcodes.mf
new file mode 100644
index 0000000000..1e9f1fe679
--- /dev/null
+++ b/fonts/barcodes/vulis/barcodes.mf
@@ -0,0 +1,269 @@
+%NAME: barcodes.mf
+% 10-Nov-87 14:05:55-PST,10055;000000000000
+% Return-Path: <CLDLV%NASAGISS.BITNET@forsythe.stanford.edu>
+% Date: Tue, 10 Nov 87 15:46:49 EDT
+% From: Dimitri Vulis <CLDLV%NASAGISS.BITNET@forsythe.stanford.edu>
+% Subject: Foo (bar codes)
+%
+% Dear Malcolm: I believe that the following file would of general
+% interest, but I think it's too long for the digest:
+%
+% I was amazed to find out that business people pay enormous money for the
+% ability to produce bar codes. This ought to be TRIVIAL with \TeX.
+% So, I got hold of a public domain BASIC program that supposedly does that and
+% lifted the codes and put them into METAFONT (it was EASY). Caveat(s): I have
+% never tested these codes with an OCR. The BASIC program said it used `3 of 9'
+% encoding. I presume it's not the same as UPC. The sizes may be off---I
+% took them from the BASIC program that used HP LJ's 100dpi graphics mode.
+% Disclaimer: I haven't tested these codes. Use them at your own risk.
+% Remarks:
+% 1) White space is a displayable character.
+% 2) There are 9 significant strips, bwbwbwbwb; 3 of them are wide.
+% 3) The white_naro; at the end of each code is the inter-code spacing.
+% Credits: the original BASIC program was written by `Bill Wood Mil., WI' and
+% later re-written by `Bill Baines, Enfield, CT.'. METAFONT version is by
+% `Dimitri Vulis CLDLV@NASAGISS.BITNET'
+mode_setup;
+font_identifier "DVBar"; font_size .35in#;
+naro#:=.01in#; % narrow strip width
+wide#:=3naro#; % wide strip width
+wdth#:=3wide#+7naro#; % common width of all codes
+hght#:=.35in#; % common height of all codes
+define_pixels(naro,wide,wdth,hght);
+def white_naro=
+ wid:=wid+naro;
+enddef;
+def black_naro=
+ filldraw (wid,0)--(wid,hght)--(wid+naro,hght)--(wid+naro,0)--cycle;
+ wid:=wid+naro;
+enddef;
+def white_wide=
+ wid:=wid+wide;
+enddef;
+def black_wide=
+ filldraw (wid,0)--(wid,hght)--(wid+wide,hght)--(wid+wide,0)--cycle;
+ wid:=wid+wide;
+enddef;
+beginchar("1",wdth#,hght#,0);
+wid:=0;
+black_wide; white_naro; black_naro; white_wide; black_naro;
+white_naro; black_naro; white_naro; black_wide; white_naro;
+endchar;
+beginchar("2",wdth#,hght#,0);
+wid:=0;
+black_naro; white_naro; black_wide; white_wide; black_naro;
+white_naro; black_naro; white_naro; black_wide; white_naro;
+endchar;
+beginchar("3",wdth#,hght#,0);
+wid:=0;
+black_wide; white_naro; black_wide; white_wide; black_naro;
+white_naro; black_naro; white_naro; black_naro; white_naro;
+endchar;
+beginchar("4",wdth#,hght#,0);
+wid:=0;
+black_naro; white_naro; black_naro; white_wide; black_wide;
+white_naro; black_naro; white_naro; black_wide; white_naro;
+endchar;
+beginchar("5",wdth#,hght#,0);
+wid:=0;
+black_wide; white_naro; black_naro; white_wide; black_wide;
+white_naro; black_naro; white_naro; black_naro; white_naro;
+endchar;
+beginchar("6",wdth#,hght#,0);
+wid:=0;
+black_naro; white_naro; black_wide; white_wide; black_wide;
+white_naro; black_naro; white_naro; black_naro; white_naro;
+endchar;
+beginchar("7",wdth#,hght#,0);
+wid:=0;
+black_naro; white_naro; black_naro; white_wide; black_naro;
+white_naro; black_wide; white_naro; black_wide; white_naro;
+endchar;
+beginchar("8",wdth#,hght#,0);
+wid:=0;
+black_wide; white_naro; black_naro; white_wide; black_naro;
+white_naro; black_wide; white_naro; black_naro; white_naro;
+endchar;
+beginchar("9",wdth#,hght#,0);
+wid:=0;
+black_naro; white_naro; black_wide; white_wide; black_naro;
+white_naro; black_wide; white_naro; black_naro; white_naro;
+endchar;
+beginchar("0",wdth#,hght#,0);
+wid:=0;
+black_naro; white_naro; black_naro; white_wide; black_wide;
+white_naro; black_wide; white_naro; black_naro; white_naro;
+endchar;
+beginchar("A",wdth#,hght#,0);
+wid:=0;
+black_wide; white_naro; black_naro; white_naro; black_naro;
+white_wide; black_naro; white_naro; black_wide; white_naro;
+endchar;
+beginchar("B",wdth#,hght#,0);
+wid:=0;
+black_naro; white_naro; black_wide; white_naro; black_naro;
+white_wide; black_naro; white_naro; black_wide; white_naro;
+endchar;
+beginchar("C",wdth#,hght#,0);
+wid:=0;
+black_wide; white_naro; black_wide; white_naro; black_naro;
+white_wide; black_naro; white_naro; black_naro; white_naro;
+endchar;
+beginchar("D",wdth#,hght#,0);
+wid:=0;
+black_naro; white_naro; black_naro; white_naro; black_wide;
+white_wide; black_naro; white_naro; black_wide; white_naro;
+endchar;
+beginchar("E",wdth#,hght#,0);
+wid:=0;
+black_wide; white_naro; black_naro; white_naro; black_wide;
+white_wide; black_naro; white_naro; black_naro; white_naro;
+endchar;
+beginchar("F",wdth#,hght#,0);
+wid:=0;
+black_naro; white_naro; black_wide; white_naro; black_wide;
+white_wide; black_naro; white_naro; black_naro; white_naro;
+endchar;
+beginchar("G",wdth#,hght#,0);
+wid:=0;
+black_naro; white_naro; black_naro; white_naro; black_naro;
+white_wide; black_wide; white_naro; black_wide; white_naro;
+endchar;
+beginchar("H",wdth#,hght#,0);
+wid:=0;
+black_wide; white_naro; black_naro; white_naro; black_naro;
+white_wide; black_wide; white_naro; black_naro; white_naro;
+endchar;
+beginchar("I",wdth#,hght#,0);
+wid:=0;
+black_naro; white_naro; black_wide; white_naro; black_naro;
+white_wide; black_wide; white_naro; black_naro; white_naro;
+endchar;
+beginchar("J",wdth#,hght#,0);
+wid:=0;
+black_naro; white_naro; black_naro; white_naro; black_wide;
+white_wide; black_wide; white_naro; black_naro; white_naro;
+endchar;
+beginchar("K",wdth#,hght#,0);
+wid:=0;
+black_wide; white_naro; black_naro; white_naro; black_naro;
+white_naro; black_naro; white_wide; black_wide; white_naro;
+endchar;
+beginchar("L",wdth#,hght#,0);
+wid:=0;
+black_naro; white_naro; black_wide; white_naro; black_naro;
+white_naro; black_naro; white_wide; black_wide; white_naro;
+endchar;
+beginchar("M",wdth#,hght#,0);
+wid:=0;
+black_wide; white_naro; black_wide; white_naro; black_naro;
+white_naro; black_naro; white_wide; black_naro; white_naro;
+endchar;
+beginchar("N",wdth#,hght#,0);
+wid:=0;
+black_naro; white_naro; black_naro; white_naro; black_wide;
+white_naro; black_naro; white_wide; black_wide; white_naro;
+endchar;
+beginchar("O",wdth#,hght#,0);
+wid:=0;
+black_wide; white_naro; black_naro; white_naro; black_wide;
+white_naro; black_naro; white_wide; black_naro; white_naro;
+endchar;
+beginchar("P",wdth#,hght#,0);
+wid:=0;
+black_naro; white_naro; black_wide; white_naro; black_wide;
+white_naro; black_naro; white_wide; black_naro; white_naro;
+endchar;
+beginchar("Q",wdth#,hght#,0);
+wid:=0;
+black_naro; white_naro; black_naro; white_naro; black_naro;
+white_naro; black_wide; white_wide; black_wide; white_naro;
+endchar;
+beginchar("R",wdth#,hght#,0);
+wid:=0;
+black_wide; white_naro; black_naro; white_naro; black_naro;
+white_naro; black_wide; white_wide; black_naro; white_naro;
+endchar;
+beginchar("S",wdth#,hght#,0);
+wid:=0;
+black_naro; white_naro; black_wide; white_naro; black_naro;
+white_naro; black_wide; white_wide; black_naro; white_naro;
+endchar;
+beginchar("T",wdth#,hght#,0);
+wid:=0;
+black_naro; white_naro; black_naro; white_naro; black_wide;
+white_naro; black_wide; white_wide; black_naro; white_naro;
+endchar;
+beginchar("U",wdth#,hght#,0);
+wid:=0;
+black_wide; white_wide; black_naro; white_naro; black_naro;
+white_naro; black_naro; white_naro; black_wide; white_naro;
+endchar;
+beginchar("V",wdth#,hght#,0);
+wid:=0;
+black_naro; white_wide; black_wide; white_naro; black_naro;
+white_naro; black_naro; white_naro; black_wide; white_naro;
+endchar;
+beginchar("W",wdth#,hght#,0);
+wid:=0;
+black_wide; white_wide; black_wide; white_naro; black_naro;
+white_naro; black_naro; white_naro; black_naro; white_naro;
+endchar;
+beginchar("X",wdth#,hght#,0);
+wid:=0;
+black_naro; white_wide; black_naro; white_naro; black_wide;
+white_naro; black_naro; white_naro; black_wide; white_naro;
+endchar;
+beginchar("Y",wdth#,hght#,0);
+wid:=0;
+black_wide; white_wide; black_naro; white_naro; black_wide;
+white_naro; black_naro; white_naro; black_naro; white_naro;
+endchar;
+beginchar("Z",wdth#,hght#,0);
+wid:=0;
+black_naro; white_wide; black_wide; white_naro; black_wide;
+white_naro; black_naro; white_naro; black_naro; white_naro;
+endchar;
+beginchar("-",wdth#,hght#,0); % minus
+wid:=0;
+black_naro; white_wide; black_naro; white_naro; black_naro;
+white_naro; black_wide; white_naro; black_wide; white_naro;
+endchar;
+beginchar(".",wdth#,hght#,0); %period
+wid:=0;
+black_wide; white_wide; black_naro; white_naro; black_naro;
+white_naro; black_wide; white_naro; black_naro; white_naro;
+endchar;
+beginchar(" ",wdth#,hght#,0); %white space
+wid:=0;
+black_naro; white_wide; black_wide; white_naro; black_naro;
+white_naro; black_wide; white_naro; black_naro; white_naro;
+endchar;
+beginchar("*",wdth#,hght#,0); %ascii asterisk
+wid:=0;
+black_naro; white_wide; black_naro; white_naro; black_wide;
+white_naro; black_wide; white_naro; black_naro; white_naro;
+endchar;
+beginchar("$",wdth#,hght#,0); %dollar sign
+wid:=0;
+black_naro; white_wide; black_naro; white_wide; black_naro;
+white_wide; black_naro; white_naro; black_naro; white_naro;
+endchar;
+beginchar("/",wdth#,hght#,0); %forward slash
+wid:=0;
+black_naro; white_wide; black_naro; white_wide; black_naro;
+white_naro; black_naro; white_wide; black_naro; white_naro;
+endchar;
+beginchar("+",wdth#,hght#,0); %plus
+wid:=0;
+black_naro; white_wide; black_naro; white_naro; black_naro;
+white_wide; black_naro; white_wide; black_naro; white_naro;
+endchar;
+beginchar("%",wdth#,hght#,0); %percent sign
+wid:=0;
+black_naro; white_naro; black_naro; white_wide; black_naro;
+white_wide; black_naro; white_wide; black_naro; white_naro;
+endchar;
+end; %all done
+
+
diff --git a/fonts/barcodes/willadt/README b/fonts/barcodes/willadt/README
new file mode 100644
index 0000000000..4a55530975
--- /dev/null
+++ b/fonts/barcodes/willadt/README
@@ -0,0 +1,82 @@
+This package consists of
+ BCFAQ.TEX (* Some more documentation)
+ BARCODES.STY (* some macros for barcoding)
+ CODE39.TEX (* macros in TeX for producing code 39 barcode,
+ documented in itself)
+ CODEAN.PL ( Preprocessor for EAN, code 93 and code 128 (Perl code))
+ EANDOC.TEX (* Documentation for WLEAN.MF and CODEAN.PL)
+ EXAMPLES.TEX (* demo sheet showing the use of all barcode fonts)
+ INSTALL.BAT ( installation routine for dos/windows TDS systems)
+ WLC128.MF (* Raw Code 128 in Metafont format)
+ WLC39.MF (* Metafont source for Code 39)
+ WLC93.MF (* Metafont source for Code 93)
+ WLC11.MF (* Metafont source for Code 11)
+ WLEAN.MF (* Metafont source for EAN)
+ WLCR39.MF (* Metafont source for Code 39 rotated running down)
+ WLCDB.VPL ( virtual font for codabar barcode)
+ WLITF.VPL ( virtual font for ITF barcode---interleaved
+ 2 of 5)
+ WLCF39.VPL ( virtual full ascii code 39)
+ CHANGES ( text file listing the changes made)
+ README ( this file)
+ BARCODES.INS ( run this through TeX to make the files
+ ( marked above with a star*)
+ BARCODES.DTX ( required by barcodes.ins)
+
+Dos/windows users may run install.bat and skip the next two statements.
+
+At first you should run barcodes.ins through TeX to obtain the files
+marked above with an asterisk.
+
+To use wlitf and/or wlcdb, run it through vptovf, move the tfm and vf
+files, then in TeX say, e.g.
+
+\font\bcfont=wlitf scaled 2000
+{\bcfont+1234-}
+
+for ITF. The second line will print 1234 as ITF barcode.
++ and - make the itf start and stop sign, respectively. Please note
+that ITF requires an even number of digits.
+
+For Code 39, you may use something like
+
+\font\bcfont=wlc39 scaled 2000
+{\bcfont @Hello\char32{}12345@}
+
+This will yield the word Hello, a space and the digits from one to five.
+Please note that the @ is used as start/stop sign in this font.
+
+Code 128 requires wlc128.mf to be copied to a place where metafont can
+find it. Also you should use codean.pl to preprocess your input.
+Read the docs, code 128 is somewhat complicated.
+
+One last example:
+
+\font\bcfont=wlcdb scaled 2000
+{\bcfont a5678t \qquad b2345n \qquad c6789* \qquad d1234e}
+
+The last two code lines show the use of codabar.
+Please note that the start/stop signs for codabar get decoded, too.
+
+Usage ist freely permitted, comments are welcome, any warranty is
+void. If you may find any inconveniences, bugs, or improvements, do
+not hesitate to tell me.
+
+Please note, the package is still far from complete.
+Especially, barcodes.sty needs lots of refinement and some documentation.
+Also, code 93 is not thoroughly tested.
+
+May, 2003
+Peter Willadt
+(email: Willadt@t-online.de)
+
+Legal Notice
+
+This package may be distributed accoring to the terms in the
+LaTeX Project Public License, with the following two additions:
+
+1. If you distribute this package, you must make the LaTeX Project
+Public License available, too.
+
+2. If you find the barcode package useful, please support TUG or
+your local TeX user group.
diff --git a/fonts/barcodes/willadt/barcodes.dtx b/fonts/barcodes/willadt/barcodes.dtx
new file mode 100644
index 0000000000..d86058a657
--- /dev/null
+++ b/fonts/barcodes/willadt/barcodes.dtx
@@ -0,0 +1,2590 @@
+% \iffalse meta-comment
+%
+% This is part of the barcode package.
+% You should run
+% tex barcodes.ins
+% instead of reading/running this file.
+% Among other things, you will then get a documentation.
+% I guess you need some, or you wouldn't look here.
+% \fi
+%
+%% \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 \~}
+%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % EAN documentation starts here %%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%<*eandoc>
+\documentclass{article}
+\begin{document}
+\author{Peter Willadt}
+\title{EAN Barcodes by \TeX{} an Metafont}
+\date{1998-01-24}
+\maketitle
+\begin{abstract}
+This article documents the use of the font {\tt wlean.mf}. With the font,
+there also comes an auxiliary Perl file for preprocessing TeX source.
+Its use is also documented here.
+\end{abstract}
+
+\section{Legal Restrictions and Introduction}
+
+All the files in this package are subject to the \LaTeX\ Project Public
+License. Also I got a special wish: If you find this package useful,
+support TUG or your local \TeX\ user group.
+
+The complete contents of this package is
+described in the file {\tt README}. That file also contains some
+information about the use of the other barcode fonts that are
+contained. For more information about these other files you may want
+to read an article that has appeared in the december, 1997 issue of
+{\em TUGboat}. Please see also the remarks in the section {\em
+Address} later in this file.
+
+\section{About {\sc ean}}
+
+In stores, {\sc upc} and {\sc ean} codes are widely used for automatic
+identification, pricing etc. {\sc ean} consist of either eight or
+thirteen digits. Twelve digit {\sc upc} codes are like thirteen digit
+{\sc ean} with the first digit equal to zero. {\sc ean} specifications
+do not only
+require bars, also the encoded number has to be written in plain text,
+in case a reader is defective or the code is too hard to read. {\sc
+ean} is a high-density code, and so it is highly vulnerable.
+
+\subsection{Coding}
+
+The last digit of an {\sc ean} is a weighted mod 10 checksum. Digits
+are alternatingly multiplied by 1 or 3. The so calculated sum over all
+digits has to be divisible by ten without any remainder.
+
+There are three different {\sc ean} character sets labeled A, B, and
+C. Eight digit {\sc ean} codes use character sets A and C, {\sc ean}
+codes with thirteen digits use all three character sets---see below.
+
+\begin{verse}
+{\sc ean} with eight digits consists of:\\
+a sidebar\\
+the first four digits (coded in character set A),\\
+the middle separator,\\
+the other four digits (coded in character set C)\\
+another sidebar.
+\end{verse}
+
+The first half of an {\sc ean} code with thirteen digits is coded in
+the character sets A and B, the second half in character set C. The
+coding of the very first digit is hidden in the varying use of the
+character sets A and B. A C programmer might use the following table
+and algorithm to decide which character set to use for digits 2--7:
+
+\begin{verbatim}
+static UBYTE abtab[10][6]={
+ {0,0,0,0,0,0}, /* 0 */
+ {0,0,1,0,1,1}, /* 1 */
+ {0,0,1,1,0,1}, /* 2 */
+ {0,0,1,1,1,0}, /* 3 */
+ {0,1,0,0,1,1}, /* 4 */
+ {0,1,1,0,0,1}, /* 5 */
+ {0,1,1,1,0,0}, /* 6 */
+ {0,1,0,1,0,1}, /* 7 */
+ {0,1,0,1,1,0}, /* 8 */
+ {0,1,1,0,1,0} /* 9 */
+};
+
+char eancode[18];
+char eansource[14]="4025700001030";
+
+eancode[0]=eansource[0];
+eancode[1]=' ';
+eancode[2]='+';
+for(i=1;i<7;i++)
+ eancode[i+2]='A'+eansource[i]-'0'
+ +abtab[eansource[0]-'0'][i-1]*('a'-'A');
+/* then the middle separator, digits 7--13,
+ * and the final + sign */
+\end{verbatim}
+
+
+A zero means to use character set A and a one means to use character
+set B for the respective digit. The printed code of an {\sc ean} 13
+consist of the following elements, from left to right:
+
+\begin{verse}
+The first digit in human-readable form\\
+an {\sc ean} sidebar\\
+six digits in character sets A or B\\
+the {\sc ean} middle separator\\
+six digits in character set C\\
+another {\sc ean} sidebar
+\end{verse}
+
+Magazines or codes with pricing have a so called extension following
+the main code with some fixed distance. This extension consists of one
+sidebar and two or five digits. As I have no full {\sc ean}
+documentation at hand at the time of this writing, I am sorry that I
+am not able to tell you more about this.
+
+The {\sc ean} digits themselves obey to the following rules: Each
+digit takes seven units of space. Some of the seven elements are
+white, others are black. Digits from character set A always are white
+at the left edge and black at the right, and they always have an odd numer
+of black elements. Digits from character set B are quit similiar, but
+they have an even number of black elements. Digits from Character set C
+always start with a black element and have an even number of
+black elements. The rightmost element in character set C is always white.
+The sidebars are three elements wide, the middle separator takes five
+elements.
+
+\subsection{What {\sc ean} numbers may I use?}
+
+For inhouse use, you may use any 13-digit {\sc ean} that starts with a
+2. If you want to have your products sold elsewhere, you have to buy a
+set of {\sc ean} numbers from the organisation in your country that
+holds these numbers. For germany, this organisation is the {\em
+Zentrale f\"ur Coorganisation} in Cologne. Almost any country has a
+similiar organisation.
+
+The first digit or sometimes the first two digits code the country of
+origin, the next five to six digits code the manufacturer, the eigth
+to twelfth digits are for free use by the manufacturer. The
+thirteenth digit is, as explained above, a checksum. {\sc ean} do not
+contain any qualifiers, so if you get an {\sc ean} from somewhere, you
+may find out about the country of origin and about the manufacturer of
+the product, but if you want to know more, you have to contact the
+manufacturer.
+
+\section{Using {\tt wlean.mf}}
+
+{\tt wlean.mf} is rather raw. It contains all three {\sc ean}
+character sets within one single font, but at different places.
+The character sets A, B, C, and the digits are
+featured through the following characters:
+
+\begin{verse}
+0 to 9 yield the digits from 0 to 9\\
+A to J yield the codes from character set A\\
+a to j yield the codes from character set B\\
+K to T yield the codes from character set C\\
++ makes the left and right sidebar and\\
+- makes the middle sign
+\end{verse}
+
+So, to code the number {\tt 2099993098253}, you have to write\\
+\verb*|{\eanfont2 +AJjjJd-KTSMPN+}|. The space is necessary to separate
+the leading 2 from the barcode.
+
+{\tt wlean.mf} does not use true {\sc ocr} digits, as it should. As
+the digits will not be used for {\sc ocr}, I do not consider this as
+a serious restriction. If you really need {\sc ocr} digits, there is
+an {\sc ocr} font on {\sc ctan}. And in {\em TUGboat}, there has been
+a publication about {\sc ean}, where \TeX{} draws the bars and
+the {\sc ocr} font prints the digits, see [1].
+
+{\tt wlean.mf} uses the normal {\sc ean} dimensions. If you would like
+lower bars---in contradiction to the {\sc ean} rules---you have to edit
+the source. The rules also make recommendations about the scaling. To
+be fully compatible, this font may be scaled 0.8, 0.9, 1, 1.2, 1.4,
+1.5, 1.7, 1.85, or 2 times the original size. With a 300 dpi printer,
+I do not recommend using sizes$<1.0$.
+
+\subsection{Installation}
+
+The installation itself is pretty mundane, like with any plain font.
+Just copy {\tt wlean.mf} to a location where Metafont can find
+it. Then invoke Metafont to create a {\sc tfm} file. Move this {\sc
+tfm} file where \TeX{} can find it. Type in the example at the end of
+this file and run it through \TeX{}. Then call Metafont again to
+produce a font suitable for your printer or previewer and move this
+font to an appropriate location. You may also want to edit {\tt
+codean.pl} to run on your shell. For this purpose you have to read
+your system's documentation or the documentation that comes with Perl.
+
+\subsection{Making readable output}
+
+Don't make {\sc ean} too small. With a 300 dpi printer, you should not
+use this font with magnification$<1$; {\tt scaled 1200} will be okay.
+If you want to do mass production, go to somebody with a barcode
+reader and check your output, {\em before} you loose money. You also
+should consider changes in the blackness that may be caused by
+production printing devices. And, of course, you should only use
+colours that can be used with barcode reading devices. Especially, do
+not use red and watch for much contrast between the colour you print
+and the colour of the paper.
+
+\subsection{Coding the numbers}
+
+You will perhaps not want to write something as ugly and error-prone
+as \verb*|{\eanfont2 +AJjjJd-KTSMPN+}| manually. So you have to use a
+preprocessor\footnote{See bcfaq.tex for \TeX{} code to go without
+preprocessing. It is very fine.}. With {\tt wlean.mf} there comes a
+tiny Perl program ({\tt codean.pl}) that does preprocessing within
+your \TeX{} sources\footnote{codean.pl in the meantime also handles
+code 128. See bcfaq.tex}.
+
+The \TeX{} file to be filtered may contain any number of lines
+that have one of the following commands starting at the leftmost position.
+
+\begin{itemize}
+\item \verb|\ean{|{\em12 or 13 digit number}\verb|}|
+The number will be coded as {\sc ean}. If it is only 12 digits long, the
+checksum will be calculated, too.
+
+\item \verb|\embed{|{\em12 or 13 digit number}\verb|}|
+The number is used as a base for embedding article numbers \&c.\
+within an {\sc ean}.
+
+\item \verb|\eean{|{\em number with at most 11 digits}\verb|}|
+This number is to be embedded within an {\sc ean}.
+
+\item \verb|\isbn{|{\em valid ISBN}\verb|}| An {\sc isbn} to
+make an embedded {\sc ean} of.
+\end{itemize}
+
+Let's look at an example: You want the {\sc isbn} {\tt0-201-13448-9}
+to be embedded. So you write \verb|\isbn{0201134489}|, but you might
+also use the embedding method and write
+\verb|\embed{9780000000000}| and, somewhere later in the file,
+\verb|\eean{020113448}|. In this latter case you have to omit the last digit,
+as {\sc isbn} loose their check digit in favour of the {\sc ean} check digit.
+Anyway you do it, you get your command replaced by
+\verb|\EAN{|{\em13-digit-number-coded-strange}\verb|}| in the output
+file.
+
+But embedding is especially useful if you also write the program that
+reads the barcodes. This program might then extract your article
+number from an {\sc ean} starting with {\tt20}, eg.
+
+What you have to do is, of course, to use stub definitions for the
+three macros mentioned above---as they shall never actually be
+typeset---and to use a valid definition for \verb|\EAN|. Then you run
+your \TeX{} source through {\tt codean.pl}. This program takes as
+first parameter the name of your original file and as second parameter
+the name of your destination file. If you omit the parameters, you will
+be asked for them.
+
+You may of course also peek the source of {\tt codean.pl} to see how
+{\sc ean} checksums are calculated, and so on.
+
+\subsection{Example}
+
+Here is a full example.
+Use this \TeX{} source:
+
+\begin{verbatim}
+\font\eanfont=WLEAN
+\def\ean#1{\message{Call codean.pl}}
+\def\eean#1{\message{Call codean.pl}}
+\def\isbn#1{\message{Call codean.pl}}
+\def\embed#1{}
+\def\EAN#1{\vbox{\vskip10pt\eanfont#1\vskip10pt}}
+ Now, something to do:
+\ean{4025700001030} % or, without checksum:
+\ean{402570000103}
+\embed{2500000000000}
+\eean{123}
+\isbn{0201134489}
+\end{verbatim}
+
+
+
+Having run your file through {\tt codean.pl}, the lines after the percent
+sign look like this:
+
+\begin{verbatim}
+ Now, something to do:
+\EAN{4 +AcFHaa-KKLKNK+} % or, without checksum: %(4025700001030)
+\EAN{4 +AcFHaa-KKLKNK+} %(402570000103)
+\embed{2500000000000}
+\EAN{2 +FAaaAa-KKLMNT+} % embedded(123)
+\EAN{9 +HiaCaB-LNOOSN+} % ISBN(0201134489)
+\end{verbatim}
+
+
+Running this file through \TeX{}, you get {\sc dvi} output containig
+{\sc ean} barcodes. Perhaps you wonder why there is not even a
+single {\sc ean} contained within this documentation. The reason is
+quite simple: You should be able to read the docs {\em before} you
+have installed the font. But now is the right time to try the example
+on your own. Better yet, you may code an {\sc ean} where you have
+taken the number from something like your favourite candy and then,
+having printed it, you may compare the bars. This is a nice way to
+spend your evenings. I actually started deciphering {\sc ean} codes in
+this way, several years ago.
+
+\section{The End}
+
+\subsection{Address}
+
+Just in case you want to write to me, here is my address---but
+please note: I am not the {\sc ean} guru.
+
+\begin{verbatim}
+Peter Willadt
+75177 Pforzheim
+Germany
+email: Willadt@t-online.de
+\end{verbatim}
+
+I also would appreciate if only one version of the material contained
+in this package is distributed. So if you have any corrections,
+suggestions, \&c., please do not hesitate to send them to me to
+incorporate them within this package.
+
+\subsection{Acknowledgement}
+
+I want to express my special thanks to Barbara Beeton for proofreading
+and making valuable suggestions. If there are still any typos or
+illegibilities, that is due to the fact that I had to change some
+things later on.
+
+\begin{thebibliography}{1}
+
+\bibitem{bc:ean}
+Peter Ol{\v{s}}ak.
+\newblock The {\sc ean} barcodes by {\TeX}.
+\newblock {\em TUGboat}, 15(4):459--464, 1994.
+
+\end{thebibliography}
+
+\end{document}
+%</eandoc>
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % EAN documentation ends here %%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % general documentation starts here %%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%<*bcfaq>
+% this file contains answers to frequently asked questions (FAQ)
+% about barcodes and---to some extent---VPL files.
+\documentclass[a4paper]{article}
+\bibliographystyle{alpha}
+
+% macros for the examples
+% These are documented within the text.
+
+% Barcode fonts
+\font\itf=wlitf scaled 1200
+
+% barcodes with depth
+\def\bcbox#1{\lower3pt\hbox{\itf +#1-}}
+
+% barcodes made taller
+\newbox\bsavebox
+\newdimen\bcboxdepth
+\bcboxdepth=4pt
+\def\bdbox#1{\setbox\bsavebox\hbox{\itf +#1-}
+\vbox{\hsize=\wd\bsavebox\offinterlineskip%
+ \copy\bsavebox%
+ \vskip-\ht\bsavebox\vskip\bcboxdepth%
+ \box\bsavebox\vskip-\bcboxdepth}}
+\def\bebox#1{\setbox\bsavebox\hbox{\itf +#1-}
+\vbox{\hsize=\wd\bsavebox\offinterlineskip%
+ \copy\bsavebox%
+ \copy\bsavebox%
+ \vskip-\ht\bsavebox\vskip\bcboxdepth%
+ \box\bsavebox\vskip-\bcboxdepth}}
+
+\def\tbs{{\tt\char92}}
+% makes a typewriter backslash
+\begin{document}
+\title{Barcodes-FAQ}
+\author{Peter Willadt}
+\date{2003-05-24}
+\maketitle
+\begin{abstract}
+
+This file deals with questions about barcode fonts created for
+\TeX{}. Its purpose is not to replace the regular documents, but to add
+informations that may be of no interest for the casual reader.
+
+\end{abstract}
+
+\section{Changelog}
+
+\subsection{Changes of the barcode package in general}
+\begin{tabular}{ll}
+\em Date & \em Change\\
+2003-05-24 & new release with some corrections to codean.pl\\
+ & Thanks to Jacek Ruzycka (uv\_centcom@yahoo.com)\\
+1999-05-29 & added license note to README\\
+1999-05-29 & added install.bat\\
+1998-11-28 & included wlcr39, wlcf39, and wlc93\\
+1998-04-21 & fixed wlitf bug\\
+1998-04-10 & switched partially to docstrip archive\\
+ & added support for code 11\\
+1998-01-24 & added code 128 in MF format, changed codean.pl\\
+1997-11-08 & changed metrics of {\sc itf} start/stop chars\\
+1997-10-09 & released first version of the barcode package
+\end{tabular}
+
+\subsection{Changes within this document}
+
+\begin{tabular}{ll}
+\em Date & \em Change\\
+1999-05-29 & added short info about install.bat\\
+1998-11-28 & added docs about code 93\\
+1998-04-10 & added docs about code 11\\
+1998-01-24 & added information about code 128\\
+1997-12-08 & added contributions to {\sc ean} coding by Kalvis M. Jansons\\
+ & changed section on plessey\\
+1997-11-09 & added several items, rearranged sections\\
+1997-11-08 & started writing first version
+\end{tabular}
+
+\section{Introduction}
+
+The barcode package itself can be found on {\tt ctan} in the
+subdirectory\\ {\tt fonts/barcodes/willadt}. It contains---among
+others---several fonts in {\sc vpl} format, so your {\sc dvi} driver
+should be able to handle virtual fonts. If it doesn't, you may perhaps
+use {\em dvicopy} to resolve the references to virtual fonts, or you
+may perhaps upgrade to a more modern \TeX{} package.
+
+\section{What about docs?}
+
+\subsection{Docs about barcodes}
+
+With the barcode package, there comes documentation about {\sc ean}
+fonts. In the README file, there are short examples of the use of
+the other fonts, too. Also the files {\tt examples.tex} shows the look
+and basic usage of the barcodes.
+
+In {\sl TUGboat}, barcoding has been covered in several
+articles \cite{bc:ean,bc:sauter,bc:vulis}. The barcode package itself
+is covered in an article that has appeared in the december issue,
+1997, of {\sl TUGboat}. As TUGboat is making the elder articles available
+online, I recommend looking for it.
+
+\subsection{Some information about code 128}
+
+Code 128 is able to print all 128 ascii chars. There are a little more
+than a hundred glyphs that are interpreted in three different
+ways. Some of the glyphs are used as shift chars to determine which
+interpretation to use. A checksum is mandatory. To use it, you must
+install {\tt wlc128.mf}.
+
+The preprocessing---switching among the different character sets,
+coding efficiently, calculating the checksum---is handled by the
+newer versions of codean.pl. This is perhaps not as pleasing as to do
+it with \TeX{} alone, but, alas, it works.
+
+The way to run the preprocessor is described in {\tt eandoc.tex}. To
+use code 128, you have to write a line starting with {\tt\tbs cxxviii\{}
+followed by the characters you want to code and followed by a closing
+brace. Non-printing seven-bit ascii characters may be specified in hex
+in C or \TeX{} style, like {\tt\tbs x3f} or \verb|^^3f|. Anything up to
+the rightmost closing brace in this line will be coded---there is no
+brace matching. But you will get a warning message if your text
+includes a right brace. So you may want to code braces in hex form to
+avoid this message. Please note that {\tt codean.pl} does almost no
+checking for errors, so if you intend to produce garbage, there are
+lots of ways. If you need code 128 escape characters, they may be
+included as hex characters with codes starting at 0x80.
+
+\begin{tabular}{lllll}
+\em Input Code & \em C128 number &\multicolumn{3}{c}{\em meaning}\\
+\em(hex) & \em(dec.) & \em Set A & \em Set B & \em Set C\\
+0x80 & 96 & FNC3 & FNC3 & 96\\
+0x81 & 97 & FNC2 & FNC2 & 97\\
+0x82 & 98 & SHIFT & SHIFT & 98\\
+0x83 & 99 & CODE C& CODE C& 99\\
+0x84 & 100 & CODE B& FNC4 & CODE B\\
+0x85 & 101 & FNC4 & CODE A& CODE A\\
+0x86 & 102 & FNC1 & FNC1 & FNC1\\
+0x87 & 103 & START A& START A& START A\\
+0x88 & 104 & START B& START B& START B\\
+0x89 & 105 & START C& START C& START C\\
+0x8a & 106 & STOP & STOP & STOP
+\end{tabular}
+
+But please keep in mind that {\tt codean.pl} does almost anything for you,
+you should not have the need to insert start/stop codes and the
+like. Only if you use EAN128, you will need {\tt FNC1}. Just to make
+it clear: For your barcode to include {\tt FNC1} you have to write
+\verb|^^86| before preprocessing.
+
+{\tt codean.pl} will insert a sequence of hex digits; the original
+text will be appended to the line as a comment.
+Also, your \TeX{} file has to define some macros. They look like
+this:
+
+\begin{verbatim}
+\font\fntcxx=wlc128 scaled \magstep3
+\def\CXXVIII{\bgroup\fntcxx\let\next\hexchar\next}
+\def\cxxviii{\message{OOPS, use codean.pl}}
+\def\hexchar#1#2{\if#1@
+ \global\let\next\egroup
+ \else\char"#1#2\fi\next}
+\end{verbatim}
+
+If you do not like end recursion, you might use other ones. If
+you dislike the hex format produced by {\tt codean.pl}, you are free to
+change it---as long as you don't redistribute.
+
+\subsection{A little bit about code 11}
+
+Code 11 is a numeric-only barcode. It is almost as space-efficient as
+{\sc itf}, and it comes with a checksum. The checksum should be
+swallowed by the reading device. The checksum is a weighted mod-11
+checksum. There are apparently two kinds of checksum in use: such with
+one checkdigit and such with two checkdigits.
+
+To use code 11, you should include {\tt barcode.sty}. \TeX{} will
+calculate the checksum on its own. If you need two check digits, you
+should say\\
+{\tt\tbs codexichecksumktrue}.\\
+How many check digits you
+actually need should be made clear in the documentation to your
+reading device\footnote{You may also want to check the documentation
+to find out if your reading device supports code 11 at all; code 11 is
+not that common.}. You may code the digits 0--9, and the minus
+sign. The start and stop sign is mapped to the @ character. Here is a
+full example. {Please note: If you do not use \LaTeX{}, you may
+have to supply a definition for {\tt\tbs makeatletter}
+and {\tt\tbs makeatother}}:
+
+\begin{verbatim}
+\input barcodes.sty
+%% with two check digits
+\codexichecksumktrue
+\codxi{12-1234}
+
+%% with only one check digit.
+\codexichecksumkfalse
+\codxi{12-1234}
+\bye
+\end{verbatim}
+
+\subsection{Which Code 39 should I use, there are different versions?}
+
+Well, you may \verb|\input code39| in your \TeX\ document to get the
+macro version. It is absolutely flexible in repect of barcode size and
+so on, but it is made of \TeX\ macros and there are probably
+situations where you may prefer a {\em real} font. So there is {\tt
+wlc39.mf} as a real font, {\tt wlcr39.mf} as a font running sideways,
+and{\tt wlcf39.vpl} as a full ascii code 39 in vpl format. The
+ltter two fonts are experimental, that means, they are not that much
+tested as the others.
+
+I recommend using either the \TeX\ macro or {\tt wlc39.mf}. The others
+are too special for normal use, rotation by the graohics driver is
+mor robust than building towers of letters, and full ascii code~39 is
+less than optimal.
+
+\subsection{About code 93}
+
+Code 93 is a little bit more compact than code 39 (as it uses also the
+gap between the characters), but in other aspects it is quite
+similiar. A checksum with two digits is mandatory. As with code 11,
+checksumming works by weighing the characters different depending on
+their position within the barcode.
+
+The version of code 93 that is included within the package resorts to
+uppercase ascii, digits, and to some other signs. Start and stop sign
+are mapped to {\tt<} and {\tt>}, respectively.
+
+Full ascii works similiar to full ascii with code 39 (that means with
+escape characters), but fortunately the escape characters are
+different from ordinary characters, so that you can hardly be
+misunderstood. Unfortunately the escape characters are named (\$),
+(\%), (/), and (+), so I decided to map them to opening and closing
+parentheses and brackets, respectively. This may not seem very clever
+when it comes to full ascii, but these characters may also appear as
+checksum characters, so we need them when doing uppercase ascii,
+too. For full ascii, it would be clever to redo the font in a
+completely different way and to map start sign, stop sign and the four
+escape characters to positions above 128, so that any 7 bit ascii
+character can be input directly.
+
+Code 93 is supported by codean.pl in the same way as ean or code 128
+are. You have to write {\tt\tbs xciii\{YOUR DATA 123\}}, run the file
+through {\tt codean.pl}, then you'll get\\
+{\tt\tbs XCIII\{YOUR DATA 123NN\}\%Code93(YOUR DATA 123)}
+
+The NN make up the two check characters. Normally, they are different,
+but in this example they are equal, by incident.
+
+\subsection{Docs about VPL Files}
+
+VPL files are documented in the files {\tt VPtoVF.WEB} and {\tt
+VFtoVP.WEB}. Both files can be found on {\sc ctan} under {\tt
+SYSTEMS/KNUTH}. {\em WEAVE} may be used to produce \TeX{} files. The
+documentation about the VPL/VF file formats is covered within the
+first few sections.
+
+\section{I want other metrics etc.}
+
+\subsection{My barcodes should have depth}
+
+You have got several possibilities to obtain depth. The most simple
+approach may be to set the barcodes with the regular barcode fonts into an
+{\tt\tbs hbox} and then to {\tt\tbs lower} this hbox.
+
+Let's look at an example:
+
+\begin{verbatim}
+\font\itf=wlitf scaled 1200
+\def\bcbox#1{\lower3pt\hbox{\itf +#1-}}
+ Example:
+{\sc itf} barcode looks like \quad\bcbox{1009}\quad
+for 1009, e.g.
+\end{verbatim}
+
+This code yields the following result:
+
+{\sc itf} barcode looks like \quad\bcbox{1009}\quad for 1009, e.g.
+
+Another approach is to edit the font sources. In case of {\sc vpl}
+files, this is quite painful. Rules in {\sc vpl} files do not have
+depth, so you have to change the characters mapping in a way that you
+add a {\em movedown} before you draw, and a {\em moveup} afterwards.
+You may see the changes for an arbitrary character from {\tt
+WLITF.VPL}:
+
+\begin{verbatim}
+(CHARACTER D48
+ (COMMENT from WLITF.VPL}
+ (CHARWD D 14) (CHARHT R 10)
+ (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+\end{verbatim}
+
+This character may be lowered by four units by editing in a way that the
+following lines result. Please note that there were not only the {\em
+moveup} and {\em movedown} commands added, but also the height an
+depth have been changed.
+
+\begin{verbatim}
+(CHARACTER D48
+ (COMMENT Lowered to give some depth)
+ (CHARWD D 14) (CHARHT R 10)
+ (CHARDP R 4) (CHARIC R 0.0)
+ (MAP
+ (MOVEDOWN R 4)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (MOVEUP R 4)
+ )
+ )
+\end{verbatim}
+
+\subsection{My barcodes are too tall}
+
+For the sake of the person who has to scan the barcodes, barcodes just
+can't be tall enough. If the complete code is as tall as wide, the
+reading device can be twisted against the code at an angle of 45
+degrees. If they are half as high, the angle reduces to 26 degrees.
+
+If you really want short codes, you have to edit the sources. In the
+{\sc vpl} file, you have to change the {\em charht} and the first parameter
+to the {\em setrule} command at well. You also should change the {\em
+designsize} parameter.
+
+For the EAN font, search for {\tt bheight\#} and change {\tt22.85
+mm\#} to the height you need. To get an EAN font without the digits
+(bars only), you also have to edit the character definitions by
+leaving out the last lines (saying {\tt nuller;}, e.g. and you have to
+change the formula for calculating {\tt totheight} to not include the
+height of the digits any more, also you should remove any references
+to {\tt klotz}.
+
+\subsection{My barcodes are not tall enough}
+
+You may also change the sources, like described in the previous
+subsection. But there is another solution that is perhaps more
+practical. The idea is simple that double black is still black and
+that you may overlay several printouts of the same barcode. Here is
+the example code (it may be made taller by adding more copies of the
+barcode box, of course). There is an extra dimension {\em bcboxdepth}
+added to yield depth for the barcodes.
+
+\begin{verbatim}
+\newbox\bsavebox
+\newdimen\bcboxdepth
+\bcboxdepth=4pt
+\def\bdbox#1{\setbox\bsavebox\hbox{\itf +#1-}
+\vbox{\hsize=\wd\bsavebox\copy\bsavebox%
+ \vskip-\ht\bsavebox\vskip\bcboxdepth%
+ \box\bsavebox\vskip-\bcboxdepth}}
+\def\bebox#1{\setbox\bsavebox\hbox{\itf +#1-}
+\vbox{\hsize=\wd\bsavebox\copy\bsavebox%
+ \vskip0pt\copy\bsavebox%
+ \vskip-\ht\bsavebox\vskip\bcboxdepth%
+ \box\bsavebox\vskip-\bcboxdepth}}
+ Example:
+Tall {\sc itf} barcode looks like \quad\bdbox{1009}\quad
+or (still taller) \quad\bebox{1009}\quad for 1009, e.g.
+\end{verbatim}
+
+And here is the result, you may compare it with the output of the
+previous example:
+
+Tall {\sc itf} barcode looks like \quad\bdbox{1009}\quad or (still
+taller) \quad\bebox{1009}\quad for 1009, e.g.
+
+\subsection{My barcodes are too wide/too narrow}
+
+Perhaps you should change the barcode size (by changing
+{\tt\tbs magnification}) and then read the subsections above about too
+tall bars and bars that are not tall enough.
+
+\subsection{My barcodes should run vertically}
+
+Vertically oriented barcode is a good idea for cans, bottles and
+similiar things.
+
+It just depends on your {\sc dvi} driver. Perhaps there is a
+possibility to handle rotation via {\tt\tbs special}, as with {\em
+dvips} and the {\em rotate} macros. For experimantal purposes I have
+included a code 39 version running down instead right ({\tt
+wlcr39.mf}). You may perhaps use it with {\tt\tbs shortstack} or
+similiar. Here is some code I used (successfully) with plain \TeX:
+
+\begin{verbatim}
+\font\testfont=wlcr39 scaled 1200
+\def\bcbax{\let\next\bcbox\vbox\bgroup
+ \offinterlineskip\testfont\setbox0\hbox{@}\hsize=\wd0
+ \noindent{}@\hfil\break\next}
+\def\fertig{@\hfil\break\egroup}
+\def\bcbox#1{\if @#1\let\next\fertig\else#1\hfil\break\fi\next}
+
+Look buddy, this is \bcbax1406632@ code 39
+stacked and running downwards.
+\end{verbatim}
+
+\subsection{I heard something about full ascii code 39}
+
+Well, umh, now that you ask\dots The truth is: You may perhaps be able to
+configure your reading device to accept full ascii code~39. Then you may
+code any 7~bit character you may think of. The bad news is that most of
+the symbols have to be coded by two
+characters -- and as code 39 has already low density, you should not
+expect to get much use of it. Perhaps you might want to try code 128
+instead---it features full 7-bit ascii without any compromise.
+
+Another anti-feature is that switching to reading full-ascii code~39
+may lead to some bad reads of `normal' code~39. In full ascii, the lower
+case letters, e.g., are made by prepending the uppercase letters with a
+plus sign, so {\tt+A} is read as {\tt a}. So, if you have got regular
+code~39 that contains such character sequences, and you have switched
+your reading device to full ascii, you may get bad results.
+
+But, now that you want it: With the barcode package there comes a font
+{\tt wlcf39.vpl}. You may install it like the other vpl files. It has got
+132 characters and has already taken all the coding for full ascii, so
+when you typ {\tt e,\$4+A}, it will silently be mapped to what you
+would have typed as {\tt+E/L/D/KA}, if you would use the plain code~39
+format\footnote{Please take note: 6 characters are blown up to 9,
+think again about using another code}. In my version of full ascii
+code~39, the start/stop sign is mapped to @@ (or \verb|\char128|). So
+you actually had to add @@ to the front and the end of the example
+string. If you can not exclude that the character sequence @@ appears
+within the text you want to code, you have to avoid ligature
+processing. You may do that like this:
+
+\begin{verbatim}
+\font\fullas=wlcf39 scaled 1728
+\def\alphanolig{\char64\kern0pt}
+\def\printacode#1{{\fullas@@{\catcode`\@=\active%
+ \let @=\alphanolig#1}@@}}
+\end{verbatim}
+
+You also have to escape or circumscribe special characters to make
+them really printable, of course, so that when you wanted a backspace,
+a tab, a space, a dollar sign, a percent sign, and a bell character to
+be coded, you would type something like
+
+\begin{verbatim}
+{\fullas @@\char8\char9\char32\$\%\char7}
+\end{verbatim}
+
+\section{Troubleshooting}
+
+\subsection{My barcodes can't be decoded}
+
+At the very, very first, check if you really have added start and stop
+codes. If you haven't, you're lost. Then check if you have enabled
+decoding of your special barcodes within your reading device. With
+modern scanners, you can disable almost any coding scheme.
+
+At first, try to make them larger. If that does't help, make them
+larger, again. If that will not help, obtain fonts in \TeX{} or
+Metafont format and make them brighter. Or, perhaps better, obtain a
+better printer.
+
+You also should check the contrast between bars and background,
+especially when using a dot matrix printer or coloured background
+or---still worse---red bars.
+
+\subsection{My decoder reads extra digits, sometimes}
+
+I guess you use {\sc itf} barcode with a number of digits that is
+sometimes even and sometimes odd. As {\sc itf} always codes two digits
+at once, you should take care just to code an even number of digits at
+any time. If an excess zero at the beginning of your number is not
+acceptable, you might try another kind of barcode instead of {\sc
+itf}.
+
+\subsection{Can't run pdf\TeX\ with barcode fonts}
+
+Get a later version of pdf\TeX, and you're done.
+
+\section{Missing items}
+
+\subsection{I am missing two-of-five}
+
+I got specs for two-of-five (three bars). If you want it, let me know;
+I might implement it. For other kinds of two-of-five, I haven't got
+complete specs.
+
+\subsection{I am missing plessey}
+
+I got the specs but I haven't yet got the time to implement them. With
+plessey, there also rise several questions due to the fact that
+plessey has never been officialy standardized. The only thing that is
+absolutely sure about plessey is how binary ones and zeros are
+encoded. There are codes that are more wide-spread. Several modern
+barcode readers can't cope with plessey code.
+
+\subsection{I am missing \dots{} some other barcode}
+
+I have checked out several two-dimensional barcodes. But for most of
+them, support by \TeX{} seems to be rather pointless. Perhaps Metafont
+could be called any time you have to code something to draw the
+symbols, but you might as well use a custom drawing program that comes
+from the barcode vendor. Also, most two-dimensional barcodes (and
+other barcodes not mentioned here) are proprietary. Last not least the
+reading devices I have access to can deal only with a finite range of
+barcodes.
+
+I am sorry, but I haven't got the specs for further barcodes
+not mentioned here. If you could be so kind as to send them to me, I
+might perhaps implement them.
+
+\section{Contributions}
+
+\subsection{EAN without preprocessing}
+
+The following code is due to Kalvis M. Jansons.
+
+It handles printing of {\sc ean} without having to run a
+preprocessor. Not only are the {\sc ean} bars drawn, also the checksum
+checksum is checked. It can be easily
+adapted to non-\LaTeX{} use by omitting anything before \verb|\font|
+
+\begin{verse}
+Kalvis M. Jansons
+
+eMail: \verb|<kalvis@math.ucl.ac.uk>|
+
+\end{verse}
+
+An easy way to use the barcode fonts in \LaTeX{}:
+
+\begin{verbatim}
+\documentclass[a4paper]{article}
+
+\pagestyle{empty}
+
+\setlength{\oddsidemargin}{0pt}
+\setlength{\textwidth}{\paperwidth}
+\addtolength{\textwidth}{-2in}
+\setlength{\marginparwidth}{0pt}
+
+\setlength{\textheight}{\paperheight}
+\addtolength{\textheight}{-2.5in}
+\setlength{\topmargin}{0pt}
+
+\font\eanfont=WLEAN scaled 2000
+\def\ean#1{\vbox{\vskip20pt\eanfont#1\vskip20pt}}
+\newcount\num
+\def\a#1{\num=#1 \advance\num by `A \char\num}
+\def\b#1{\num=#1 \advance\num by `a \char\num}
+\def\c#1{\num=#1 \advance\num by `K \char\num}
+\def\C#1#2#3#4#5#6{\c#1\c#2\c#3\c#4\c#5\c#6}
+
+\def\A#1#2#3#4#5#6#7{\ifcase #7
+{\a#1\a#2\a#3\a#4\a#5\a#6}%
+\or {\a#1\a#2\b#3\a#4\b#5\b#6}%
+\or {\a#1\a#2\b#3\b#4\a#5\b#6}%
+\or {\a#1\a#2\b#3\b#4\b#5\a#6}%
+\or {\a#1\b#2\a#3\a#4\b#5\b#6}%
+\or {\a#1\b#2\b#3\a#4\a#5\b#6}%
+\or {\a#1\b#2\b#3\b#4\a#5\a#6}%
+\or {\a#1\b#2\a#3\b#4\a#5\b#6}%
+\or {\a#1\b#2\a#3\b#4\b#5\a#6}%
+\or {\a#1\b#2\b#3\a#4\b#5\a#6}%
+\fi}
+
+\newcount\cha
+\newcount\chb
+\makeatletter
+\long\def\for{\@for}
+\makeatother
+\gdef\mysix#1#2#3#4#5#6{,#1#2,#3#4,#5#6}
+\gdef\mywork#1#2{\advance\cha by #1 \advance\chb by #2}
+\gdef\barch#1.#2.#3.{
+\xdef\mylist{0#1\mysix#2\mysix#3}
+\cha=0
+\chb=0
+\for \x:=\mylist\do{\expandafter\mywork\x}
+\multiply\cha by 3
+\advance\chb by \cha
+\cha=\chb
+\divide\cha by 10
+\multiply\cha by -10
+\advance\chb by \cha}
+\def\bar#1.#2.#3.{\barch#1.#2.#3.
+ \ifnum\chb>0 #1#2#3 has a bad check sum!\\[20pt]
+ \else \ean{#1 +\A#2#1-\C#3+}\fi}
+\begin{document}
+
+ Examples
+
+\bar3.034325.106199.
+
+\bar4.074400.410000.
+
+\bar5.449000.055521.
+
+\bar5.010027.522336.
+
+\bar8.410005.421052.
+
+\bar9.780192.828941.
+
+\end{document}
+\end{verbatim}
+
+\section{Installation}
+
+Installation is described within the README file, in short.
+Here I assume that you have a TDS compliant \TeX{} installation
+already running.
+
+Installation consists of several steps:
+
+\begin{enumerate}
+ \item unpack barcodes.dtx by running barcodes.ins through \TeX (I
+guess you have already done that, lest you would not be able to read
+this text), like {\tt tex barcodes.ins}
+\item run {\tt vptovf} on all the vpl files, e.g. type something like
+ {\tt vptovf wlitf.vpl wlitf.vf wlitf.tfm}
+\item if your \TeX\ system does not support automatic generation of
+{\tt tfm} files, run mf on all the .mf files.
+\item move all the files to appropriate locations
+\item install codean.pl for use with Perl
+\item run the documentation through \LaTeX{}
+\item clean up
+\end{enumerate}
+
+Items 1,2,4,6, and part of 7 can be automatically executed on ms-dos or
+ms windows systems by running {\tt install.bat}. If you do not supply
+any parameters, {\tt install} will install to {\tt C:\char92TeXMF}. If
+you do supply a parameter, it should be the path to your TEXMF tree
+(no trailing backslash, please).
+
+Here are the appropriate locations mentioned above -- all of them
+in the TEXMF tree:
+
+\begin{tabular}{ll}
+\em move & \em to\\
+\tt *.mf & \tt fonts/source/public/misc\\
+\tt *.tfm & \tt fonts/tfm/public/misc\\
+\tt *.vf & \tt fonts/vf/public\\
+\tt code39.tex &\tt tex/generic/misc\\
+\tt barcodes.sty &\tt tex/latex/misc\\
+\end{tabular}
+
+Of course other locations might also work, but to me it seems fine
+this way.
+
+Running plain \TeX{} on {\tt examples.tex} is the ultimate test: This
+will only work when all the installation is well done.
+
+The installation of Perl programs is beyond the scope of this
+documentation. If you do not need code 128, you can go without
+{\tt codean.pl}, especially if you use the macros described above.
+
+\bibliography{bcfaq}
+
+\end{document}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % general documentation ends here %%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%</bcfaq>
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % bibliography for general documentation %%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%<*bcfaqbbl>
+\begin{thebibliography}{Sau92}
+
+\bibitem[Ol{\v{s}}94]{bc:ean}
+Peter Ol{\v{s}}ak.
+\newblock The ean barcodes by {\TeX}.
+\newblock {\em TUGboat}, 15(4):459--464, 1994.
+
+\bibitem[Sau92]{bc:sauter}
+John Sauter.
+\newblock Postnet codes using metafont.
+\newblock {\em TUGboat}, 13(4):472--476, 1992.
+
+\bibitem[Vul91]{bc:vulis}
+Dimitri Vulis.
+\newblock {\TeX} and envelopes.
+\newblock {\em TUGboat}, 12(2):279--284, 1991.
+
+\end{thebibliography}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % end of bibliography for general documentation %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%</bcfaqbbl>
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % example sheet starts here %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%<*example>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% This file documents look and use of
+%% the barcodes this package belongs to.
+%% It may be freely used without any
+%% further permission.
+%% You should have received this file as part of
+%% the barcode package.
+%%
+%% Author: Peter Willadt
+%% Date: 1997-11-29
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% Note:
+%% 1. This file has already been run through codean.pl
+%%
+%% 2. You need to have the fonts installed, of course.
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Fonts
+%%
+\font\xlix=wlc39 scaled 2000
+\font\itf=wlitf scaled 2000
+\font\cdb=wlcdb scaled 2000
+\font\eanfont=WLEAN scaled 1200
+\font\fntcxx=wlc128 scaled \magstep3
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Inputs
+%%
+\input code39.tex
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Def's
+%%
+%% for EAN
+\def\ean#1{\message{Call codean.pl}}
+\def\eean#1{\message{Call codean.pl}}
+\def\isbn#1{\message{Call codean.pl}}
+\def\embed#1{}
+\def\EAN#1{\vbox{\hsize=0.4\hsize\vskip10pt\eanfont#1\vskip10pt}}
+%% for Code 128
+\def\CXXVIII{\bgroup\fntcxx\let\next\hexchar\next}
+\def\hexchar#1#2{\if#1@\global\let\next\egroup\else\char"#1#2\fi\next}
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Here we go
+\parindent0pt
+Hello, this is a test sheet of the barcode fonts.
+
+At first, we deal with code 39. Code 39 is represented in this package
+both in form of a native font (Metafont-source) and in form of
+\TeX{}-macros. code 39 features low-density alphanumeric encoding.
+
+Here you may see how HELLO looks like in code 39 (the start and stop
+sign is mapped to @, if you're curious, so in the source to this sheet
+I have written {\tt@HELLO@} after having selected the proper
+font). This first example uses the font.
+
+{\xlix@HELLO@}
+
+Another approach is to use \TeX{} macros to make up bars. Here is the
+same HELLO with macros: Please note that for the macro version, you
+have to use the underbar if you want to have a space coded.
+
+\begincodethirtynine{HELLO}\endcodethirtynine
+
+Interleaved two-of-five (ITF for short) features high-density
+numerical-only encoding. Your code has to have an even number of
+digits. The start sign is mapped to $+$, the end sign to $-$.
+So, to code 0123456789, you type {\tt+0123456789-}, and the result
+looks like this:
+
+{\itf+0123456789-}
+
+If you still have not got enough of barcoding, here is codabar. Here
+you got four sets of start/stop signs that get decoded together with
+the numbers. The start/stop sign pairs are a/t, b/n, c/*, and d/e. So
+{\tt a12345t} looks like this:\bigskip
+
+{\cdb a12345t}
+
+Now you should have a look at code 128. The bars itself look sometimes
+disrupted; this is due to the fact that the widest elements are four
+times as wide as the narrowest. Code 128 enables you to code any 7-bit
+ascii character. With digits only, it is as efficent as itf. The bad
+news is the preprocessing required, so you have to read the docs. The
+following bars mean {\tt Hallo123456}\bigskip
+
+\CXXVIII 6828414C4C4F630C2238506A@@ % Code128(Hallo123456)
+
+
+And, last and perhaps most important, the EAN font. Read {\tt
+eandoc.tex} to find out how these are coded, here is just the output
+of the example code mentioned there:
+\embed{2500000000000}
+
+\line{
+\EAN{4 +AcFHaa-KKLKNK+} % or, without checksum: %(4025700001030)
+\hfil
+\EAN{4 +AcFHaa-KKLKNK+} %(402570000103)
+}
+\line{
+\EAN{2 +FAaaAa-KKLMNT+} % embedded(123)
+\hfil
+\EAN{9 +HiaCaB-LNOOSN+} % ISBN(0201134489)
+}
+
+And that's all. Perhaps you may think that this is not a beautiful
+document---but barcodes aren't beautiful. As long as reading devices
+do not have \ae{}sthetic feelings, I don't regard this as a problem.
+\bye
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % example sheet ends here %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%</example>
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % style file starts here %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%<*bcsty>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Options for using barcodes %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% documented in bcfaq.tex %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% itf stuff
+%% general
+\font\xlix=wlc39 scaled 2000
+\font\fntxciii=wlc93 scaled 2000
+\font\itf=wlitf scaled 2000
+\font\cdb=wlcdb scaled 2000
+\font\eanfont=wlean scaled 1200
+\font\fntcxx=wlc128 scaled \magstep3
+%% barcodes with depth
+\def\bcbox#1{\lower3pt\hbox{\itf +#1-}}
+%% barcodes made taller
+\newbox\bsavebox
+\newdimen\bcboxdepth
+\bcboxdepth=4pt
+\def\bdbox#1{\setbox\bsavebox\hbox{\itf +#1-}
+\vbox{\hsize=\wd\bsavebox\offinterlineskip%
+ \copy\bsavebox%
+ \vskip-\ht\bsavebox\vskip\bcboxdepth%
+ \box\bsavebox\vskip-\bcboxdepth}}
+\def\bebox#1{\setbox\bsavebox\hbox{\itf +#1-}
+\vbox{\hsize=\wd\bsavebox\offinterlineskip%
+ \copy\bsavebox%
+ \copy\bsavebox%
+ \vskip-\ht\bsavebox\vskip\bcboxdepth%
+ \box\bsavebox\vskip-\bcboxdepth}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Code 128 stuff
+\font\fntcxx=wlc128 scaled \magstep3
+\def\XCIII#1{\bgroup\fntxciii #1}
+\def\CXXVIII{\bgroup\fntcxx\let\next\hexchar\next}
+\def\cxxviii{\message{OOPS, use codean.pl}}
+\def\hexchar#1#2{\if#1@
+ \global\let\next\egroup
+ \else\char"#1#2\fi\next}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Code 11 stuff
+\font\codxifnt=wlc11 scaled\magstep2
+%% relies on counters \cha and \chb defined below
+\newif\ifcodexichecksumk
+\codexichecksumkfalse
+\makeatletter
+\def\check@xichar{%
+ \ifcodexichecksumk%
+ {\count0=\cha\count1=\count0\divide\count1by11%
+ \multiply\count1by11\advance\count0by-\count1%
+ \ifnum10=\count0-\else\relax\the\count0\fi%
+ \global\advance\chb by\count0\global\advance\cha by\chb%
+ }\fi
+ \chb=\cha\divide\chb by11%
+ \multiply\chb by11\advance\cha by-\chb%
+ \ifnum10=\cha-\else\the\cha\fi%
+}
+\def\csumxi#1{%
+ \if @#1%
+ \let\next\check@xichar%
+ \else \if-#1\advance\chb by10%
+ \else\advance\chb by#1%
+ \fi%
+ \advance\cha by\chb%
+ #1%
+ \fi%
+ \next%
+}
+\makeatother
+\def\codxi#1{{
+ \codxifnt
+ \cha=0\chb=0%
+ @\let\next\csumxi\expandafter\expandafter\expandafter\csumxi#1@@
+}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% misc things
+\font\codtnfnt=wlc39 scaled\magstep2
+\def\codxxxix#1{{\codtnfnt @#1@}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EAN stuff
+%% this code comes from Kalvis M. Jansons
+%% eMail: <kalvis@math.ucl.ac.uk>
+%%
+\font\eanfont=WLEAN scaled 2000
+\def\ean#1{\vbox{\vskip20pt\eanfont#1\vskip20pt}}
+\newcount\num
+\def\a#1{\num=#1 \advance\num by `A \char\num}
+\def\b#1{\num=#1 \advance\num by `a \char\num}
+\def\c#1{\num=#1 \advance\num by `K \char\num}
+\def\C#1#2#3#4#5#6{\c#1\c#2\c#3\c#4\c#5\c#6}
+\def\A#1#2#3#4#5#6#7{\ifcase #7
+{\a#1\a#2\a#3\a#4\a#5\a#6}%
+\or {\a#1\a#2\b#3\a#4\b#5\b#6}%
+\or {\a#1\a#2\b#3\b#4\a#5\b#6}%
+\or {\a#1\a#2\b#3\b#4\b#5\a#6}%
+\or {\a#1\b#2\a#3\a#4\b#5\b#6}%
+\or {\a#1\b#2\b#3\a#4\a#5\b#6}%
+\or {\a#1\b#2\b#3\b#4\a#5\a#6}%
+\or {\a#1\b#2\a#3\b#4\a#5\b#6}%
+\or {\a#1\b#2\a#3\b#4\b#5\a#6}%
+\or {\a#1\b#2\b#3\a#4\b#5\a#6}%
+\fi}
+\newcount\cha
+\newcount\chb
+\makeatletter
+\long\def\for{\@for}
+\makeatother
+\gdef\mysix#1#2#3#4#5#6{,#1#2,#3#4,#5#6}
+\gdef\mywork#1#2{\advance\cha by #1 \advance\chb by #2}
+\gdef\barch#1.#2.#3.{
+\xdef\mylist{0#1\mysix#2\mysix#3}
+\cha=0
+\chb=0
+\for \x:=\mylist\do{\expandafter\mywork\x}
+\multiply\cha by 3
+\advance\chb by \cha
+\cha=\chb
+\divide\cha by 10
+\multiply\cha by -10
+\advance\chb by \cha}
+\def\bar#1.#2.#3.{\barch#1.#2.#3.
+ \ifnum\chb>0 #1#2#3 has a bad check sum!\\[20pt]
+ \else \ean{#1 +\A#2#1-\C#3+}\fi}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % style file ends here %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%</bcsty>
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % code 39 macro file starts here %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%<*code39mac>
+%%% ====================================================================
+%%% @TeX-file{
+%%% author = "Peter Willadt",
+%%% version = "1",
+%%% date = "16 August 1997",
+%%% time = "10:00:00 GMT",
+%%% filename = "code39.tex",
+%%% address = "Peter Willadt
+%%% 75177 Pforzheim
+%%% Germany",
+%%% email = "Willadt@t-online.de",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "Barcode, Code39, TeX",
+%%% abstract = "This file contains macros to support the inclusion
+%%% of code 39 barcode in TeX documents.",
+%%% }
+%%% ====================================================================
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% This code supports barcodes in Code 39
+%% Usage:
+%% For alphanumerical barcodes:
+%% \begincodethirtynine followed by
+%% the stuff to code,
+%% ended with \endcodethirtynine
+%% For numerical only code:
+%% modify the code for pharamceuticals
+%% For german pharmaceutics:
+%% \pzncode1234562@ when 1234562 is the
+%% number to be coded as -1234562.
+%% this will also verify the checksum
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% This file may be freely used without any
+%% further permission.
+%% It comes with absolutely no warranty.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% this is the common stuff
+\newdimen\dick
+\newdimen\duenn
+\newdimen\duennbar
+\newdimen\dickbar
+\newdimen\antibleed
+\dick=1mm
+\duenn=0.5mm
+\antibleed=0mm
+\dickbar=\dick
+\advance\dickbar by -\antibleed
+\duennbar=\duenn
+\advance\duennbar by -\antibleed
+% b means bar
+\def\b{\vrule width\duennbar}
+\def\B{\vrule width\dickbar}
+% s means space
+\def\s{\hskip\duenn\hskip\antibleed}
+\def\S{\hskip\dick\hskip\antibleed}
+%%
+ \def\tnzero{\b\s\b\S\B\s\B\s\b\s}
+ \def\tnone{\B\s\b\S\b\s\b\s\B\s}
+ \def\tntwo{\b\s\B\S\b\s\b\s\B\s}
+\def\tnthree{\B\s\B\S\b\s\b\s\b\s}
+ \def\tnfour{\b\s\b\S\B\s\b\s\B\s}
+ \def\tnfive{\B\s\b\S\B\s\b\s\b\s}
+ \def\tnsix{\b\s\B\S\B\s\b\s\b\s}
+\def\tnseven{\b\s\b\S\b\s\B\s\B\s}
+\def\tneight{\B\s\b\S\b\s\B\s\b\s}
+ \def\tnnine{\b\s\B\S\b\s\B\s\b\s}
+ \def\tninestart{\b\S\b\s\B\s\B\s\b\s}
+ \def\tnineminus{\b\S\b\s\b\s\B\s\B\s}
+ \def\tnineplus{\b\S\b\s\b\S\b\S\b\s}
+\def\tninedollar{\b\S\b\S\b\S\b\s\b\s}
+ \def\tnineslash{\b\S\b\S\b\s\b\S\b\s}
+ \def\tninedot{\B\S\b\s\b\s\B\s\b\s}
+\def\tninepercnt{\b\s\b\S\b\S\b\S\b\s}
+ \def\tninespace{\b\S\B\s\b\s\B\s\b\s}
+\def\tninelettera{\B\s\b\s\b\S\b\s\B\s}
+\def\tnineletterb{\b\s\B\s\b\S\b\s\B\s}
+\def\tnineletterc{\B\s\B\s\b\S\b\s\b\s}
+\def\tnineletterd{\b\s\b\s\B\S\b\s\B\s}
+\def\tninelettere{\B\s\b\s\B\S\b\s\b\s}
+\def\tnineletterf{\b\s\B\s\B\S\b\s\b\s}
+\def\tnineletterg{\b\s\b\s\b\S\B\s\B\s}
+\def\tnineletterh{\B\s\b\s\b\S\B\s\b\s}
+\def\tnineletteri{\b\s\B\s\b\S\B\s\b\s}
+\def\tnineletterj{\b\s\b\s\B\S\B\s\b\s}
+\def\tnineletterk{\B\s\b\s\b\s\b\S\B\s}
+\def\tnineletterl{\b\s\B\s\b\s\b\S\B\s}
+\def\tnineletterm{\B\s\B\s\b\s\b\S\b\s}
+\def\tninelettern{\b\s\b\s\B\s\b\S\B\s}
+\def\tninelettero{\B\s\b\s\B\s\b\S\b\s}
+\def\tnineletterp{\b\s\B\s\B\s\b\S\b\s}
+\def\tnineletterq{\b\s\b\s\b\s\B\S\B\s}
+\def\tnineletterr{\B\s\b\s\b\s\B\S\b\s}
+\def\tnineletters{\b\s\B\s\b\s\B\S\b\s}
+\def\tninelettert{\b\s\b\s\B\s\B\S\b\s}
+\def\tnineletteru{\B\S\b\s\b\s\b\s\B\s}
+\def\tnineletterv{\b\S\B\s\b\s\b\s\B\s}
+\def\tnineletterw{\B\S\B\s\b\s\b\s\b\s}
+\def\tnineletterx{\b\S\b\s\B\s\b\s\B\s}
+\def\tninelettery{\B\S\b\s\B\s\b\s\b\s}
+\def\tnineletterz{\b\S\B\s\B\s\b\s\b\s}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% this is the code for 39 mode
+\def\activatethemall{
+ \catcode`\A=\active \catcode`\B=\active
+ \catcode`\C=\active \catcode`\D=\active
+ \catcode`\E=\active \catcode`\F=\active
+ \catcode`\G=\active \catcode`\H=\active
+ \catcode`\I=\active \catcode`\J=\active
+ \catcode`\K=\active \catcode`\L=\active
+ \catcode`\M=\active \catcode`\N=\active
+ \catcode`\O=\active \catcode`\P=\active
+ \catcode`\Q=\active \catcode`\R=\active
+ \catcode`\S=\active \catcode`\T=\active
+ \catcode`\U=\active \catcode`\V=\active
+ \catcode`\W=\active \catcode`\X=\active
+ \catcode`\Y=\active \catcode`\Z=\active
+ \catcode`+=\active \catcode`-=\active
+ \catcode`\_=\active \catcode`.=\active
+ \catcode`\$=\active \catcode`\%=\active
+ \catcode`\/=\active
+ \catcode`\0=\active \catcode`\1=\active
+ \catcode`\2=\active \catcode`\3=\active
+ \catcode`\4=\active \catcode`\5=\active
+ \catcode`\6=\active \catcode`\7=\active
+ \catcode`\8=\active \catcode`\9=\active
+}
+{\activatethemall
+\gdef\begincodethirtynine{
+ \bgroup\activatethemall\strut\tninestart
+ \letA=\tninelettera \letB=\tnineletterb
+ \letC=\tnineletterc \letD=\tnineletterd
+ \letE=\tninelettere \letF=\tnineletterf
+ \letG=\tnineletterg \letH=\tnineletterh
+ \letI=\tnineletteri \letJ=\tnineletterj
+ \letK=\tnineletterk \letL=\tnineletterl
+ \letM=\tnineletterm \letN=\tninelettern
+ \letO=\tninelettero \letP=\tnineletterp
+ \letQ=\tnineletterq \letR=\tnineletterr
+ \letS=\tnineletters \letT=\tninelettert
+ \letU=\tnineletteru \letV=\tnineletterv
+ \letW=\tnineletterw \letX=\tnineletterx
+ \letY=\tninelettery \letZ=\tnineletterz
+ \let+=\tnineplus \let-=\tnineminus
+ \let_=\tninespace \let.=\tninedot
+ \let$=\tninedollar \let%=\tninepercnt
+ \let/=\tnineslash
+ \let0=\tnzero \let1=\tnone
+ \let2=\tntwo \let3=\tnthree
+ \let4=\tnfour \let5=\tnfive
+ \let6=\tnsix \let7=\tnseven
+ \let8=\tneight \let9=\tnnine
+}
+}
+\def\endcodethirtynine{
+ \tninestart\egroup
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% this code is used for german pharmaceutics
+\newcount\ziffern
+\newcount\checksum
+\newcount\multreg
+\def\tndigit#1{%
+ \ifcase#1\tnzero\or\tnone%
+ \or\tntwo\or\tnthree%
+ \or\tnfour\or\tnfive%
+ \or\tnsix\or\tnseven%
+ \or\tneight\or\tnnine%
+ \fi}
+\def\endtncode{%
+ \tninestart%
+ \ifnum\ziffern=9
+ \else\message{wrong digit count}
+ \fi%
+ \ifnum\checksum=0
+ \else\message{wrong checksum}
+ \fi%
+ \egroup}
+\def\nexttn#1{%
+ \advance\ziffern by1
+ \if@#1\let\next\endtncode
+ \else
+ \tndigit#1%
+% begin checksum stuff
+ \ifnum\ziffern=8
+ \multreg=\checksum
+ \divide\multreg by 11
+ \multiply\multreg by 11
+ \advance\checksum by-\multreg
+ \multreg=#1
+ \advance\checksum by-\multreg
+ \ifnum\checksum=10
+ \checksum=0
+ \fi
+ \else
+ \multreg=#1
+ \multiply\multreg by\ziffern
+ \advance\checksum by\multreg
+ \fi%
+ \fi%
+% end checksum stuff
+ \next}
+\def\pzncode{
+ \bgroup
+ \let\next\nexttn
+ \ziffern=1\checksum=0\multreg=0
+ \strut
+ \tninestart\tnineminus%
+ \next%
+}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % code 39 macro file ends here %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%</code39mac>
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % MetaFont Code for Code 11 starts here %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%<*code11mf>
+%% Code 11 in Metafont format
+%% Peter Willadt 1998-04-10
+%% For copyright and the like see the documentation
+%% to the barcode package, from which this file is part of.
+%% If you received only this file,
+%% then maybe someone fooled you.
+%%
+%% Code 11 requires one or two check digits.
+%% These check digtis are calculated using a weighted mod 11-checksum.
+%% You have to see the docs.
+%% Start and stop chars are mapped to @,
+%% codeable are 0--9 and the minus sign.
+
+mode_setup;
+
+bheight#:=5mm#;
+
+% high res: .264 mm#
+% med res: .33 mm#
+bwidth# :=.33 mm#;
+
+designsize :=bheight#;
+font_slant :=0;
+font_normal_space :=8*bwidth#;
+font_extra_space :=0;
+font_normal_stretch:=0;
+font_normal_shrink :=0;
+font_quad :=15*bwidth#;
+
+define_pixels(bheight, bwidth);
+
+def CODExichar(expr charnum, spex) =
+ numeric mywid, asval, i;
+ mywid=6;
+ for i= 0 upto 4:
+ asval:=ASCII(substring(i,i+1) of spex);
+ asval:=asval-ASCII("0");
+ mywid:=mywid+asval;
+ endfor;
+ beginchar(charnum, mywid*bwidth#,bheight#,0);
+ y1=y2=0;
+ y3=y4=bheight;
+ numeric myright,myleft,barweight,spcweight;
+ myright:=0;myleft:=0;barweight:=0;spcweight:=0;
+ for i=0 upto 4:
+ asval:=ASCII(substring(i,i+1) of spex);
+ asval:=asval-ASCII("0");
+ myright:=myright+(asval+1)*bwidth;
+ if not odd (i):
+ % actual drawing
+ x1:=myleft-blacker;
+ x4:=x1;
+ x2:=myright+blacker;
+ x3:=x2;
+ fill (z1)--(z2)--(z3)--(z4)--cycle;
+ fi
+ myleft:=myright;
+ endfor;
+ endchar;
+enddef;
+
+CODExichar("-","00100");
+CODExichar("0","00001");
+CODExichar("1","10001");
+CODExichar("2","01001");
+CODExichar("3","11000");
+CODExichar("4","00101");
+CODExichar("5","10100");
+CODExichar("6","01100");
+CODExichar("7","00011");
+CODExichar("8","10010");
+CODExichar("9","10000");
+CODExichar("@","00110");
+
+end;% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % MetaFont Code for Code 11 ends here %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%</code11mf>
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % MetaFont Code for Code 39 starts here %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%<*code39mf>
+%% Code 39, in Metafont mode
+%% Willadt 1997-08-17
+mode_setup;
+
+bheight#:=5mm#;
+
+%% high res .2 mm,
+%% med res .3 mm,
+%% lo res .4 mm.
+
+bwidth# :=.3mm#;
+
+designsize :=bheight#;
+font_slant :=0;
+font_normal_space :=13*bwidth#;
+font_extra_space :=0;
+font_normal_stretch:=0;
+font_normal_shrink :=0;
+font_quad :=13*bwidth#;
+
+define_pixels(bheight, bwidth);
+
+def thirtyninechar(expr charnum, spex) =
+ beginchar(charnum, 13*bwidth#,bheight#,0);
+ numeric myright,myleft;
+ numeric asval, i;
+ myright:=0;myleft:=0;
+ y1=y2=0;y3=y4=bheight;
+ for i=0 upto 11:
+ asval:=ASCII(substring(i,i+1) of spex);
+ exitif asval=-1;
+ asval:=asval-ASCII("0");
+ myright:=myright+asval*bwidth;
+ if not odd (i):
+ % actual drawing
+ x1:=myleft-blacker;
+ x4:=x1;
+ x2:=myright+blacker;
+ x3:=x2;
+ fill (z1)--(z2)--(z3)--(z4)--cycle;
+ fi
+ myleft:=myright;
+ endfor;
+ endchar;
+enddef;
+
+\thirtyninechar("0")("1112212111");
+\thirtyninechar("1")("2112111121");
+\thirtyninechar("2")("1122111121");
+\thirtyninechar("3")("2122111111");
+\thirtyninechar("4")("1112211121");
+\thirtyninechar("5")("2112211111");
+\thirtyninechar("6")("1122211111");
+\thirtyninechar("7")("1112112121");
+\thirtyninechar("8")("2112112111");
+\thirtyninechar("9")("1122112111");
+\thirtyninechar( 64)("1211212111"); % start = @
+\thirtyninechar("-")("1211112121");
+\thirtyninechar("+")("1211121211");
+\thirtyninechar("$")("1212121111");
+\thirtyninechar("/")("1212111211");
+\thirtyninechar(".")("2211112111");
+\thirtyninechar( 37)("1112121211"); % percent
+\thirtyninechar( 32)("1221112111"); % space
+\thirtyninechar("A")("2111121121");
+\thirtyninechar("B")("1121121121");
+\thirtyninechar("C")("2121121111");
+\thirtyninechar("D")("1111221121");
+\thirtyninechar("E")("2111221111");
+\thirtyninechar("F")("1121221111");
+\thirtyninechar("G")("1111122121");
+\thirtyninechar("H")("2111122111");
+\thirtyninechar("I")("1121122111");
+\thirtyninechar("J")("1111222111");
+\thirtyninechar("K")("2111111221");
+\thirtyninechar("L")("1121111221");
+\thirtyninechar("M")("2121111211");
+\thirtyninechar("N")("1111211221");
+\thirtyninechar("O")("2111211211");
+\thirtyninechar("P")("1121211211");
+\thirtyninechar("Q")("1111112221");
+\thirtyninechar("R")("2111112211");
+\thirtyninechar("S")("1121112211");
+\thirtyninechar("T")("1111212211");
+\thirtyninechar("U")("2211111121");
+\thirtyninechar("V")("1221111121");
+\thirtyninechar("W")("2221111111");
+\thirtyninechar("X")("1211211121");
+\thirtyninechar("Y")("2211211111");
+\thirtyninechar("Z")("1221211111");
+
+\end;
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % MetaFont Code for Code 39 ends here %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%</code39mf>
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % MetaFont Code for Code 128 starts here %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%<*code128mf>
+%% Code 128, in Metafont mode
+%% This gives a raw font, that should be mapped properly
+%% so read the docs!
+%% Willadt 1997-08-17
+
+mode_setup;
+
+bheight#:=5mm#;
+
+%% high res: .264 mm#
+%% med res: .33 mm#
+bwidth# :=.33 mm#;
+
+designsize :=bheight#;
+font_slant :=0;
+font_normal_space :=11*bwidth#;
+font_extra_space :=0;
+font_normal_stretch:=0;
+font_normal_shrink :=0;
+font_quad :=11*bwidth#;
+
+define_pixels(bheight, bwidth);
+
+def CXXVIIIchar(expr charnum, spex) =
+ numeric mywid, asval, i;
+ mywid=0;
+% for i = 0 upto 8:
+% asval:=ASCII(substring(i,i+1) of spex);
+% exitif asval=-1;
+% asval:=asval-ASCII("0");
+% mywid:=mywid+asval;
+% endfor
+% beginchar(charnum, mywid*bwidth#,bheight#,0);
+ beginchar(charnum, 11*bwidth#,bheight#,0);
+ y1=y2=0;
+ y3=y4=bheight;
+ numeric myright,myleft,barweight,spcweight;
+ myright:=0;myleft:=0;barweight:=0;spcweight:=0;
+ for i=0 upto 8:
+ asval:=ASCII(substring(i,i+1) of spex);
+ exitif asval=-1;
+ asval:=asval-ASCII("0");
+ myright:=myright+asval*bwidth;
+ if not odd (i):
+% check for typos
+% barweight:=barweight+asval;
+ % actual drawing
+ x1:=myleft-blacker;
+ x4:=x1;
+ x2:=myright+blacker;
+ x3:=x2;
+ fill (z1)--(z2)--(z3)--(z4)--cycle;
+% check for typos
+% else:
+% spcweight:=spcweight+asval;
+ fi
+ myleft:=myright;
+ endfor;
+% check for typos
+% if not odd(spcweight): message "error in spc cnt";
+% fi
+% if odd(barweight): message "error in bar cnt";
+% fi
+ endchar;
+enddef;
+
+CXXVIIIchar(107,"212222"); % Ersatz fuer Null
+CXXVIIIchar( 0,"212222");
+CXXVIIIchar( 1,"222122");
+CXXVIIIchar( 2,"222221");
+CXXVIIIchar( 3,"121223");
+CXXVIIIchar( 4,"121322");
+CXXVIIIchar( 5,"131222");
+CXXVIIIchar( 6,"122213");
+CXXVIIIchar( 7,"122312");
+CXXVIIIchar( 8,"132212");
+CXXVIIIchar( 9,"221213");
+CXXVIIIchar( 10,"221312");
+CXXVIIIchar( 11,"231212");
+CXXVIIIchar( 12,"112232");
+CXXVIIIchar( 13,"122132");
+CXXVIIIchar( 14,"122231");
+CXXVIIIchar( 15,"113222");
+CXXVIIIchar( 16,"123122");
+CXXVIIIchar( 17,"123221");
+CXXVIIIchar( 18,"223211");
+CXXVIIIchar( 19,"221132");
+CXXVIIIchar( 20,"221231");
+CXXVIIIchar( 21,"213212");
+CXXVIIIchar( 22,"223112");
+CXXVIIIchar( 23,"312131");
+CXXVIIIchar( 24,"311222");
+CXXVIIIchar( 25,"321122");
+CXXVIIIchar( 26,"321221");
+CXXVIIIchar( 27,"312212");
+CXXVIIIchar( 28,"322112");
+CXXVIIIchar( 29,"322211");
+CXXVIIIchar( 30,"212123");
+CXXVIIIchar( 31,"212321");
+CXXVIIIchar( 32,"232121");
+CXXVIIIchar( 33,"111323");
+CXXVIIIchar( 34,"131123");
+CXXVIIIchar( 35,"131321");
+CXXVIIIchar( 36,"112313");
+CXXVIIIchar( 37,"132113");
+CXXVIIIchar( 38,"132311");
+CXXVIIIchar( 39,"211313");
+CXXVIIIchar( 40,"231113");
+CXXVIIIchar( 41,"231311");
+CXXVIIIchar( 42,"112133");
+CXXVIIIchar( 43,"112331");
+CXXVIIIchar( 44,"132131");
+CXXVIIIchar( 45,"113123");
+CXXVIIIchar( 46,"113321");
+CXXVIIIchar( 47,"133121");
+CXXVIIIchar( 48,"313121");
+CXXVIIIchar( 49,"211331");
+CXXVIIIchar( 50,"231131");
+CXXVIIIchar( 51,"213113");
+CXXVIIIchar( 52,"213311");
+CXXVIIIchar( 53,"213131");
+CXXVIIIchar( 54,"311123");
+CXXVIIIchar( 55,"311321");
+CXXVIIIchar( 56,"331121");
+CXXVIIIchar( 57,"312113");
+CXXVIIIchar( 58,"312311");
+CXXVIIIchar( 59,"332111");
+CXXVIIIchar( 60,"314111");
+CXXVIIIchar( 61,"221411");
+CXXVIIIchar( 62,"431111");
+CXXVIIIchar( 63,"111224");
+CXXVIIIchar( 64,"111422");
+CXXVIIIchar( 65,"121124");
+CXXVIIIchar( 66,"121421");
+CXXVIIIchar( 67,"141122");
+CXXVIIIchar( 68,"141221");
+CXXVIIIchar( 69,"112214");
+CXXVIIIchar( 70,"112412");
+CXXVIIIchar( 71,"122114");
+CXXVIIIchar( 72,"122411");
+CXXVIIIchar( 73,"142112");
+CXXVIIIchar( 74,"142211");
+CXXVIIIchar( 75,"241211");
+CXXVIIIchar( 76,"221114");
+CXXVIIIchar( 77,"413111");
+CXXVIIIchar( 78,"241112");
+CXXVIIIchar( 79,"134111");
+CXXVIIIchar( 80,"111242");
+CXXVIIIchar( 81,"121142");
+CXXVIIIchar( 82,"121241");
+CXXVIIIchar( 83,"114212");
+CXXVIIIchar( 84,"124112");
+CXXVIIIchar( 85,"124211");
+CXXVIIIchar( 86,"411212");
+CXXVIIIchar( 87,"421112");
+CXXVIIIchar( 88,"421211");
+CXXVIIIchar( 89,"212141");
+CXXVIIIchar( 90,"214121");
+CXXVIIIchar( 91,"412121");
+CXXVIIIchar( 92,"111143");
+CXXVIIIchar( 93,"111341");
+CXXVIIIchar( 94,"131141");
+CXXVIIIchar( 95,"114113");
+CXXVIIIchar( 96,"114311");
+CXXVIIIchar( 97,"411113");
+CXXVIIIchar( 98,"411311");
+CXXVIIIchar( 99,"113141");
+CXXVIIIchar(100,"114131");
+CXXVIIIchar(101,"311141");
+CXXVIIIchar(102,"411131");
+CXXVIIIchar(103,"211412");
+CXXVIIIchar(104,"211214");
+CXXVIIIchar(105,"211232");
+CXXVIIIchar(106,"2331112");
+
+end;
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % MetaFont Code for Code 128 ends here %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%</code128mf>
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % MetaFont Code for EAN starts here %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%<*codeeanmf>
+%% Font for printing EAN Code
+%% For small sizes (on the Deskjet, < 1,0) you have to be
+%% very careful and test if the font is still machine readable.
+%% On write-black-printers, it may be necessary to reduce
+%% the width of black bars by fiddling with
+%% the definition of fb().
+%% For producing EAN Add-ons or codes with variable height,
+%% it would be a good idea to shorten the height of the bars and
+%% to leave the numbers out of the bars-definition, so that you
+%% could stack several bars above each other.
+%% Flexibility would increase, but---on the other hand---
+%% TeX macros for setting EAN code would become even more complicated.
+%
+%% Peter Willadt 1997, September, 21
+%
+% For more information about EAN-Codes, you may consult the Centrale
+% f\"ur Coorganisation in K\"oln, Germany, or one of the associated
+% organisations in your country. The complete EAN-Handbook costs
+% about a hundred german marks.
+%
+% Just some information:
+% EAN-Digits consist of seven elements that are either black or white.
+% Each element has the same width.
+% Fonts A, B, and C are differently coded.
+% The first half of the EAN-number is coded in fonts A and B, the second
+% half is coded in font C. The first digit of the EAN-number is not
+% directly coded but will be taken from the alternate uses of characters
+% from font A and font B for the first half.
+% This strange coding is a direct consequence of
+% the ancestry of the EAN-code---it is derived from the american UPC-code
+% (12 digits)---and there had to be a way of compatibly expanding the UPC.
+%
+% The first two digits of the EAN-number code the country of origin of
+% the product, the next five digits (mostly) code the manufacturer, the
+% remaining digits (with the exception of the last) code the product.
+% The last digit of the EAN-number is a checksum.
+% For In-House-Use, you may use EAN starting with 20 to 29.
+%
+% EAN numbers do not contain any qualifiers. From a number, you cannot say
+% which kind of product is coded, unless you contact the manufacturer.
+%
+% Eight digit EAN numbers consist of four digits from font A and four digits
+% from font C.
+%
+% UPC is EAN with the first digit equal to zero.
+%
+% Here is a table that shows which code to use for the digits 2 to 7
+% depending on the first digit.
+% The number on the right shows the first digit.
+% A zero in the array means to choose font A, a one means to choose font B.
+%
+% static UBYTE abtab[10][6]={
+% {0,0,0,0,0,0}, /* 0 */
+% {0,0,1,0,1,1}, /* 1 */
+% {0,0,1,1,0,1}, /* 2 */
+% {0,0,1,1,1,0}, /* 3 */
+% {0,1,0,0,1,1}, /* 4 */
+% {0,1,1,0,0,1}, /* 5 */
+% {0,1,1,1,0,0}, /* 6 */
+% {0,1,0,1,0,1}, /* 7 */
+% {0,1,0,1,1,0}, /* 8 */
+% {0,1,1,0,1,0} /* 9 */
+% };
+% This font is coded in a way that requires extensive preprocessing.
+% 0 to 9 yield the digits from 0 to 9
+% A to J yield the codes from charset A
+% a to j yield the codes from charset B
+% K to T yield the codes from charset C
+% + makes the start and stop sign and - the middle sign
+% So, to code the number 2099993098253, you have to write
+% {\eanfont2 +AJjjJd-KTSMPN+}. Please note that the last
+% digit is a checksum.
+% This font is free to be used without any further permission;
+% it comes with no warranty. I strongly recommend to test
+% the readability of barcodes before going into mass production.
+%
+% There should be a Perl routine delivered together with this font
+% that takes a TeX file and replaces EAN numbers by their encoded
+% equivalent. There also should be a file called EANDOC.TEX
+% that tells you more about that.
+%
+%% Author
+%% Peter Willadt
+%% 75177 Pforzheim
+%% Germany
+%% email: Willadt@t-online.de
+%
+
+mode_setup;
+
+%% EAN size 1 (100%)
+%
+bheight#:=22.85mm#;
+bdepth#:=1.65mm#;
+bwidth#:=0.33mm#;
+digheight#:=2.75mm#;
+numgap#=1mm#;
+digdiam#=0.9pt#;
+lgap#:= bwidth#+0.5 digdiam#;
+totheight#=bheight#+digheight#+numgap#;
+ndheight#:=totheight#-bheight#-bdepth#;
+define_pixels(ndheight,digheight,numgap,lgap,bwidth);
+define_blacker_pixels(bheight,totheight,digdiam);
+
+font_normal_space=7*bwidth#;
+font_size 10pt#;
+
+def fb(expr posn) =
+ x20:=(posn-1)*bwidth;
+ x21:=x20;
+ x22:=posn*bwidth;
+ x23:=x22;
+ y20:=y22:=digheight+numgap;
+ y21:=y23:=h;
+ fill z20--z21--z23--z22--cycle;
+enddef;
+
+def klotz(expr posn) =
+ x1:=(posn-1)*bwidth;x2:=posn*bwidth;
+ x3:=x2;x4:=x1;
+ y1:=y2:=ndheight;
+ y3:=y4:=digheight+numgap;
+ fill z1--z2--z3--z4--cycle;
+enddef;
+
+def nuller =
+ x1=0.5w;
+ y1=digheight;
+ x2=lgap;
+ y2=0.8y1;
+ x3=x2;
+ y3-y4=y1-y2;
+ y4=0;
+ x4=x1;
+ x5=w-x3;
+ y5=y3;
+ x6=x5;
+ y6=y2;
+ pickup pencircle scaled digdiam;
+ draw z1..{down}z2--z3{down}..z4..{up}z5--z6{up}..cycle;
+enddef;
+
+def einser =
+ x1=x2=0.5w+lgap;
+ x3=2*lgap;
+ y1=0;
+ y2=digheight;
+ y3=0.8digheight;
+ pickup pencircle scaled digdiam;
+ draw z1--z2--z3;
+enddef;
+
+def zweier =
+ x1=w-lgap;
+ x2=lgap;
+ y1=y2=0;
+ x3=x2;
+ y3=0.15 digheight;
+ x4=w-lgap;
+ y4=0.6 digheight;
+ x5=x4;
+ y5=0.9 digheight;
+ x6=0.5w;
+ y6=digheight;
+ x7=x2;
+ y7=y5;
+ pickup pencircle scaled digdiam;
+ draw z1--z2{up}..z3..z4..z5..z6..z7;
+enddef;
+
+def dreier =
+ x1=lgap;
+ w-x2=x1;
+ y1=y2=digheight;
+ x3=0.5w;
+ y3=0.6digheight;
+ y4=0.5y3;
+ x4=x2;
+% y5=0.5digdiam;
+ y5=0;
+ x5=0.5w;
+ x6=x1;
+ y6=0.2 digheight;
+ pickup pencircle scaled digdiam;
+ draw z1--z2--z3{right}..z4..z5..z6;
+enddef;
+
+def vierer =
+ x1=0.6w;y1=digheight;
+ x2=lgap;
+ y2=0.3digheight;
+ y3=y2;
+ w-x3=x2;
+% w-x4=x4-x1;
+ x4=0.5[x1,x3];
+ x5=x4;
+ y4=0.5digheight;
+ y5=0;
+ pickup pencircle scaled digdiam;
+ draw z1--z2--z3;
+ draw z4--z5;
+enddef;
+
+def fuenfer =
+ x2=lgap;
+ x2=w-x1;
+ y1=y2=digheight;
+ x3=x2;
+ y3=0.7digheight;
+ x4=x1;
+ y3-y4=y4;
+ x5=x2;
+ y5=0;
+ pickup pencircle scaled digdiam;
+ draw z1--z2--z3{right}..z4..{left}z5;
+enddef;
+
+def sechser =
+ x1=0.6w;
+ y1=digheight;
+ x2=lgap;
+ x4=w-x2;
+% y2=y4=0.3digheight;
+ y2=y4=0.5y5;
+ x3=x5=0.5w;
+ y3=0;
+% y5=0.6 digheight;
+ y5=x4-x2;
+ pickup pencircle scaled digdiam;
+ draw z2..z3..z4..z5..cycle;
+ draw z1..{down}z2;
+enddef;
+def siebener =
+ x1=lgap;
+ x2=w-x1;
+ y1=y2=digheight;
+ x3=x4=0.5w;
+ y3=0.3digheight;
+ y4=0;
+ pickup pencircle scaled digdiam;
+ draw z1--z2;
+ draw z2..z3...z4;
+enddef;
+def achter =
+ x1=x3=x5=0.5w;
+ y1=digheight;
+ y3=0.6digheight;
+ y5=0;
+ x2=w-x7;
+ x4=w-x6;
+ y2=y7=0.5[y1,y3];
+ y4=y6=0.5[y3,y5];
+ x2=1.5lgap;
+ x4=w-lgap;
+ pickup pencircle scaled digdiam;
+ draw z1..z2..z3..z7..cycle;
+ draw z3..z4..z5..z6..cycle;
+enddef;
+def neuner =
+ x1=0.4w;
+ y1=0;
+ x2=w-lgap;
+ x4=w-x2;
+% y2=y4=0.7digheight;
+ y2=y4=0.5[y5,y3];
+ x3=x5=0.5w;
+ y3=digheight;
+ y5=0.4 digheight;
+ pickup pencircle scaled digdiam;
+ draw z1..{up}z2;
+ draw z2..z3..z4..z5..cycle;
+enddef;
+beginchar("+",3*bwidth#,totheight#,0); "Das Randzeichen";
+ fb(1); fb(3);
+ klotz(1);
+ klotz(3);
+endchar;
+beginchar("-",5*bwidth#,totheight#,0); "Das Mittenzeichen";
+ fb(2); fb(4);
+ klotz(2);
+ klotz(4);
+endchar;
+
+beginchar("0",7*bwidth#,digheight#,0);
+ nuller;
+endchar;
+
+beginchar("1",7*bwidth#,digheight#,0);
+ einser;
+endchar;
+
+beginchar("2",7*bwidth#,digheight#,0);
+ zweier;
+endchar;
+
+beginchar("3",7*bwidth#,digheight#,0);
+ dreier;
+endchar;
+
+beginchar("4",7*bwidth#,digheight#,0);
+ vierer;
+endchar;
+
+beginchar("5",7*bwidth#,digheight#,0);
+ fuenfer;
+endchar;
+
+beginchar("6",7*bwidth#,digheight#,0);
+ sechser;
+endchar;
+
+beginchar("7",7*bwidth#,digheight#,0);
+ siebener;
+endchar;
+
+beginchar("8",7*bwidth#,digheight#,0);
+ achter;
+endchar;
+
+beginchar("9",7*bwidth#,digheight#,0);
+ neuner;
+endchar;
+
+% Zeichensatz A
+
+beginchar("A",7*bwidth#,totheight#,0); "Die Null (A)";
+ fb(4);fb(5);fb(7);
+ nuller;
+endchar;
+
+beginchar("B",7*bwidth#,totheight#,0); "Die Eins (A)";
+ fb(3);fb(4);fb(7);
+ einser;
+endchar;
+
+beginchar("C",7*bwidth#,totheight#,0); "Die Zwei (A)";
+ fb(3);fb(6);fb(7);
+ zweier;
+endchar;
+beginchar("D",7*bwidth#,totheight#,0); "Die Drei (A)";
+ fb(2);fb(3);fb(4);fb(5);fb(7);
+ dreier;
+endchar;
+beginchar("E",7*bwidth#,totheight#,0); "Die Vier (A)";
+ fb(2);fb(6);fb(7);
+ vierer;
+endchar;
+beginchar("F",7*bwidth#,totheight#,0); "Die Fuenf (A)";
+ fb(2);fb(3);fb(7);
+ fuenfer;
+endchar;
+beginchar("G",7*bwidth#,totheight#,0); "Die Sechs (A)";
+ fb(2);fb(4);fb(5);fb(6);fb(7);
+ sechser;
+endchar;
+beginchar("H",7*bwidth#,totheight#,0); "Die Sieben (A)";
+ fb(2);fb(3);fb(4);fb(6);fb(7);
+ siebener;
+endchar;
+
+beginchar("I",7*bwidth#,totheight#,0); "Die Acht (A)";
+ fb(2);fb(3);fb(5);fb(6);fb(7);
+ achter;
+endchar;
+
+beginchar("J",7*bwidth#,totheight#,0); "Die Neun (A)";
+ fb(4);fb(6);fb(7);
+ neuner;
+endchar;
+
+% Zeichensatz B
+
+beginchar("a",7*bwidth#,totheight#,0); "Die Null (B)";
+ fb(2);fb(5);fb(6);fb(7);
+ nuller;
+endchar;
+
+beginchar("b",7*bwidth#,totheight#,0); "Die Eins (B)";
+ fb(2);fb(3);fb(6);fb(7);
+ einser;
+endchar;
+
+beginchar("c",7*bwidth#,totheight#,0); "Die Zwei (B)";
+ fb(3);fb(4);fb(6);fb(7);
+ zweier;
+endchar;
+beginchar("d",7*bwidth#,totheight#,0); "Die Drei (B)";
+ fb(2);fb(7);
+ dreier;
+endchar;
+beginchar("e",7*bwidth#,totheight#,0); "Die Vier (B)";
+ fb(3);fb(4);fb(5);fb(7);
+ vierer;
+endchar;
+beginchar("f",7*bwidth#,totheight#,0); "Die Fuenf (B)";
+ fb(2);fb(3);fb(4);fb(7);
+ fuenfer;
+endchar;
+beginchar("g",7*bwidth#,totheight#,0); "Die Sechs (B)";
+ fb(5);fb(7);
+ sechser;
+endchar;
+beginchar("h",7*bwidth#,totheight#,0); "Die Sieben (B)";
+ fb(3);fb(7);
+ siebener;
+endchar;
+
+beginchar("i",7*bwidth#,totheight#,0); "Die Acht (B)";
+ fb(4);fb(7);
+ achter;
+endchar;
+
+beginchar("j",7*bwidth#,totheight#,0); "Die Neun (B)";
+ fb(3);fb(5);fb(6);fb(7);
+ neuner;
+endchar;
+
+% Zeichensatz C
+
+beginchar("K",7*bwidth#,totheight#,0); "Die Null (C)";
+ fb(1);fb(2);fb(3);fb(6);
+ nuller;
+endchar;
+
+beginchar("L",7*bwidth#,totheight#,0); "Die Eins (C)";
+ fb(1);fb(2);fb(5);fb(6);
+ einser;
+endchar;
+
+beginchar("M",7*bwidth#,totheight#,0); "Die Zwei (C)";
+ fb(1);fb(2);fb(4);fb(5);
+ zweier;
+endchar;
+beginchar("N",7*bwidth#,totheight#,0); "Die Drei (C)";
+ fb(1);fb(6);
+ dreier;
+endchar;
+beginchar("O",7*bwidth#,totheight#,0); "Die Vier (C)";
+ fb(1);fb(3);fb(4);fb(5);
+ vierer;
+endchar;
+beginchar("P",7*bwidth#,totheight#,0); "Die Fuenf (C)";
+ fb(1);fb(4);fb(5);fb(6);
+ fuenfer;
+endchar;
+beginchar("Q",7*bwidth#,totheight#,0); "Die Sechs (C)";
+ fb(1);fb(3);
+ sechser;
+endchar;
+beginchar("R",7*bwidth#,totheight#,0); "Die Sieben (C)";
+ fb(1);fb(5);
+ siebener;
+endchar;
+
+beginchar("S",7*bwidth#,totheight#,0); "Die Acht (C)";
+ fb(1);fb(4);
+ achter;
+endchar;
+
+beginchar("T",7*bwidth#,totheight#,0); "Die Neun (C)";
+ fb(1);fb(2);fb(3);fb(5);
+ neuner;
+endchar;
+
+end;
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % MetaFont Code for EAN ends here %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%</codeeanmf>
+%<*wlcr39mf>
+% Code 39, in Metafont mode
+% $90^0$ rotated to the right,
+% make Barcodes run down instead of across.
+% Willadt 1998-04-28
+mode_setup;
+
+bwidth#:=5mm#;
+
+% high res .2 mm,
+% med res .3 mm,
+% lo res .4 mm.
+
+bheight# :=.3mm#;
+
+designsize :=13*bheight#;
+font_slant :=0;
+font_normal_space :=bwidth#;
+font_extra_space :=0;
+font_normal_stretch:=0;
+font_normal_shrink :=0;
+font_quad :=bwidth#;
+
+define_pixels(bheight, bwidth);
+
+def thirtyninechar(expr charnum, spex) =
+ beginchar(charnum, bwidth#,12*bheight#,bheight#);
+ numeric mytop,mybot;
+ numeric asval, i;
+ mytop:=12*bheight;mybot:=mytop;
+ x1=x2=0;x3=x4=bwidth;
+ for i=0 upto 11:
+ asval:=ASCII(substring(i,i+1) of spex);
+ exitif asval=-1;
+ asval:=asval-ASCII("0");
+ mybot:=mybot-asval*bheight;
+ if not odd (i):
+ % actual drawing
+ y1:=mytop+blacker;
+ y4:=y1;
+ y2:=mybot-blacker;
+ y3:=y2;
+ fill (z1)--(z2)--(z3)--(z4)--cycle;
+ fi
+ mytop:=mybot;
+ endfor;
+ endchar;
+enddef;
+
+\thirtyninechar("0")("1112212111");
+\thirtyninechar("1")("2112111121");
+\thirtyninechar("2")("1122111121");
+\thirtyninechar("3")("2122111111");
+\thirtyninechar("4")("1112211121");
+\thirtyninechar("5")("2112211111");
+\thirtyninechar("6")("1122211111");
+\thirtyninechar("7")("1112112121");
+\thirtyninechar("8")("2112112111");
+\thirtyninechar("9")("1122112111");
+\thirtyninechar( 64)("1211212111"); % start = @
+\thirtyninechar("-")("1211112121");
+\thirtyninechar("+")("1211121211");
+\thirtyninechar("$")("1212121111");
+\thirtyninechar("/")("1212111211");
+\thirtyninechar(".")("2211112111");
+\thirtyninechar( 37)("1112121211"); % percent
+\thirtyninechar( 32)("1221112111"); % space
+\thirtyninechar("A")("2111121121");
+\thirtyninechar("B")("1121121121");
+\thirtyninechar("C")("2121121111");
+\thirtyninechar("D")("1111221121");
+\thirtyninechar("E")("2111221111");
+\thirtyninechar("F")("1121221111");
+\thirtyninechar("G")("1111122121");
+\thirtyninechar("H")("2111122111");
+\thirtyninechar("I")("1121122111");
+\thirtyninechar("J")("1111222111");
+\thirtyninechar("K")("2111111221");
+\thirtyninechar("L")("1121111221");
+\thirtyninechar("M")("2121111211");
+\thirtyninechar("N")("1111211221");
+\thirtyninechar("O")("2111211211");
+\thirtyninechar("P")("1121211211");
+\thirtyninechar("Q")("1111112221");
+\thirtyninechar("R")("2111112211");
+\thirtyninechar("S")("1121112211");
+\thirtyninechar("T")("1111212211");
+\thirtyninechar("U")("2211111121");
+\thirtyninechar("V")("1221111121");
+\thirtyninechar("W")("2221111111");
+\thirtyninechar("X")("1211211121");
+\thirtyninechar("Y")("2211211111");
+\thirtyninechar("Z")("1221211111");
+
+\end;
+%</wlcr39mf>
+%<*code93mf>
+% not complete, yet
+%% Code 93 in Metafont format
+%% Peter Willadt 1998-04-21
+%% For copyright and the like see the documentation
+%% to the barcode package, from which this file is part of.
+%% If you received only this file,
+%% then maybe someone fooled you.
+%%
+%% Code 93 requires one or two check digits.
+%% These check digtis are calculated using a weighted mod 11-checksum.
+%% You have to see the docs.
+%% Start and stop chars are mapped to < and >, respectively.
+%% codeable are 0--9 , A-Z, -,+, space, dot, $, /, and percent.
+%% To print full ascii, ordinary characters have to be preceeded with
+%% on of four shift characters. Thes shift characters are
+%% ($) mapped to =
+%% (%) mapped to [
+%% (/) mapped to |
+%% (+) mapped to ]
+
+mode_setup;
+
+bheight#:=5mm#;
+
+% high res: .264 mm#
+% med res: .33 mm#
+bwidth# :=.33 mm#;
+
+designsize :=bheight#;
+font_slant :=0;
+font_normal_space :=9*bwidth#;
+font_extra_space :=0;
+font_normal_stretch:=0;
+font_normal_shrink :=0;
+font_quad :=10*bwidth#;
+
+define_pixels(bheight, bwidth);
+
+def CODExciiichar(expr charnum, spex) =
+ numeric mywid, asval, i;
+ mywid=0;
+ for i= 0 upto 5:
+ asval:=ASCII(substring(i,i+1) of spex);
+ asval:=asval-ASCII("0");
+ mywid:=mywid+asval;
+ endfor;
+ beginchar(charnum, mywid*bwidth#,bheight#,0);
+ y1=y2=0;
+ y3=y4=bheight;
+ numeric myright,myleft,barweight,spcweight;
+ myright:=0;myleft:=0;barweight:=0;spcweight:=0;
+ for i=0 upto 5:
+ asval:=ASCII(substring(i,i+1) of spex);
+ asval:=asval-ASCII("0");
+ myright:=myright+asval*bwidth;
+ if not odd (i):
+ % actual drawing
+ x1:=myleft-blacker;
+ x4:=x1;
+ x2:=myright+blacker;
+ x3:=x2;
+ fill (z1)--(z2)--(z3)--(z4)--cycle;
+ fi
+ myleft:=myright;
+ endfor;
+ endchar;
+enddef;
+
+CODExciiichar("0","131112");
+CODExciiichar("1","111213");
+CODExciiichar("2","111312");
+CODExciiichar("3","111411");
+CODExciiichar("4","121113");
+CODExciiichar("5","121212");
+CODExciiichar("6","121311");
+CODExciiichar("7","111114");
+CODExciiichar("8","131211");
+CODExciiichar("9","141111");
+CODExciiichar("A","211113");
+CODExciiichar("B","211212");
+CODExciiichar("C","211311");
+CODExciiichar("D","221112");
+CODExciiichar("E","221211");
+CODExciiichar("F","231111");
+CODExciiichar("G","112113");
+CODExciiichar("H","112212");
+CODExciiichar("I","112311");
+CODExciiichar("J","122112");
+CODExciiichar("K","132111");
+CODExciiichar("L","111123");
+CODExciiichar("M","111222");
+CODExciiichar("N","111321");
+CODExciiichar("O","121122");
+CODExciiichar("P","131121");
+CODExciiichar("Q","212112");
+CODExciiichar("R","212211");
+CODExciiichar("S","211122");
+CODExciiichar("T","211221");
+CODExciiichar("U","221121");
+CODExciiichar("V","222111");
+CODExciiichar("W","112122");
+CODExciiichar("X","112221");
+CODExciiichar("Y","122121");
+CODExciiichar("Z","123111");
+CODExciiichar("-","121131");
+CODExciiichar(".","311112");
+CODExciiichar( 32,"311211");% space
+CODExciiichar( 36,"321111");% dollar
+CODExciiichar("/","112131");
+CODExciiichar("+","113121");
+CODExciiichar( 37,"211131");% percent
+% % the four escape characters
+CODExciiichar("(","121221");% ought to be ($)
+CODExciiichar(")","312111");% ought to be (%)
+CODExciiichar("[","311121");% ought to be (/)
+CODExciiichar("]","122211");% ought to be (+)
+CODExciiichar("<","111141");% start sign
+CODExciiichar(">","1111411");% stop sign has extra bar
+
+end;
+%</code93mf>
diff --git a/fonts/barcodes/willadt/barcodes.ins b/fonts/barcodes/willadt/barcodes.ins
new file mode 100644
index 0000000000..ddccd09ea8
--- /dev/null
+++ b/fonts/barcodes/willadt/barcodes.ins
@@ -0,0 +1,55 @@
+\input docstrip
+% Preamble gives hints for where the files come from
+\declarepreamble\foo
+As this is a generated file, you may perhaps not want to edit it.
+This file belongs to the barcode package.
+It may be of no great use without the rest of the barcode package.
+\endpreamble
+
+% empty postamble
+\declarepostamble\istpost
+\endpostamble
+% install without talking too much
+\keepsilent
+
+% All the \TeX files are contained within one source archive.
+\usepreamble\foo
+\generate{\file{bcfaq.tex}{\from{barcodes.dtx}{bcfaq}}
+ \file{bcfaq.bbl}{\from{barcodes.dtx}{bcfaqbbl}}
+ \file{barcodes.sty}{\from{barcodes.dtx}{bcsty}}
+ \file{eandoc.tex}{\from{barcodes.dtx}{eandoc}}
+ \file{examples.tex}{\from{barcodes.dtx}{example}}
+ \file{code39.tex}{\from{barcodes.dtx}{code39mac}}
+ \file{wlc11.mf}{\from{barcodes.dtx}{code11mf}}
+ \file{wlc39.mf}{\from{barcodes.dtx}{code39mf}}
+ \file{wlc128.mf}{\from{barcodes.dtx}{code128mf}}
+ \file{wlean.mf}{\from{barcodes.dtx}{codeeanmf}}
+ \file{wlcr39.mf}{\from{barcodes.dtx}{wlcr39mf}}
+ \file{wlc93.mf}{\from{barcodes.dtx}{code93mf}}
+}
+
+\ifToplevel{
+\Msg{***********************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the following}
+\Msg{* files into a directory searched by TeX:}
+\Msg{*}
+\Msg{* \space\space barcodes.sty \space\space code39.tex}
+\Msg{*}
+\Msg{* You also have to move the following files into a}
+\Msg{* directory searched by MetaFont:}
+\Msg{*}
+\Msg{* \space\space wlc11.mf \space\space wlc39.mf}
+\Msg{* \space\space wlc128.mf \space wlean.mf}
+\Msg{* \space\space wlcr39.mf \space wlc93.mf}
+\Msg{*}
+\Msg{* For the more clumsy barcodes, you also need Perl and}
+\Msg{* you need to install the following perl script:}
+\Msg{*}
+\Msg{* \space\space codean.pl}
+\Msg{*}
+\Msg{***********************************************************}
+}
+
+
+\endbatchfile
diff --git a/fonts/barcodes/willadt/changes b/fonts/barcodes/willadt/changes
new file mode 100644
index 0000000000..48b0bf5cec
--- /dev/null
+++ b/fonts/barcodes/willadt/changes
@@ -0,0 +1,7 @@
+This file documents changes to the barcode package.
+Its purpose is to make updating easier.
+
+2003-05-22 corrections to documentation, fixed codean.pl
+1999-05-28 added install.bat
+1999-05-28 added license
+1998-04-21 fixed wlitf bug
diff --git a/fonts/barcodes/willadt/codean.pl b/fonts/barcodes/willadt/codean.pl
new file mode 100644
index 0000000000..0e3cd01015
--- /dev/null
+++ b/fonts/barcodes/willadt/codean.pl
@@ -0,0 +1,492 @@
+# your shell command goes here
+#
+# Hacking EAN numbers to a form usable with WLEAN.MF.
+#
+# September 3, 1997
+# Peter Willadt
+#
+# Added hacking any text for coding with code 128
+# 1998-01-24
+#
+# Added checksumming for code 93
+# 1998-11-29
+#
+# 2003-05-24
+# cleaned up the code in several places and
+# corrected code 93 checksumming due to a hint by
+# Jacek Ruzyczka <uv_centcom@yahoo.com>
+#
+# 2003-05-24
+# removed an error introduced the same day
+#
+# This file is free to use without any further permissions.
+# This file comes with no warranty of any kind.
+#
+# The TeX file to be filtered may contain any number of lines
+# that have one of the following commands
+# starting at the leftmost position.
+#
+# \ean{12 or 13 digit number}
+# the number gets coded as EAN,
+# if it is only 12 digits long, the checksum gets calculated
+#
+# \embed{number}
+# the number is used as a base for embedding article numbers & c.
+# \eean{number}
+# a number to be embedded with an ean.
+#
+# \isbn{number}
+# an isbn to make an embedded ean of.
+#
+# \cxxviii{any 7 bit ascii values}
+# code as barcode 128 (see rules below!)
+#
+# \xciii{uppercase text or number}
+# text to be coded as code 128
+#
+# example:
+# You want the isbn 0-201-13448-9 to be embedded.
+# so you say \isbn{0201134489},
+# but you may also say \embed{9780000000000} and,
+# somewhere later in the file, \eean{020113448}
+# In this case you have to leave the last digit out,
+# as isbn loose their check digit in favour of the
+# ean check digit.
+# anyway you do it, you get your command replaced by
+# \EAN{13-digit-number-coded-strange}
+# in the output file.
+#
+#
+# code 128 rules:
+# you write a line starting with \cxxviii{
+# followed by arbitrary 7 bit characters, delimited by a right brace}.
+# as perl is greedy, it will be the rightmost right brace (no fence matching),
+# but as perl is also nice, you will be warned if there is another
+# right brace. Please note that even the percent character % will be
+# included. So it is better to write the \cxxviii{...} statement onto
+# a line of its own. You may replace any character by ^^00 and
+# similiar codes, preferably you will do this to non-printable ascii
+# characters, or right braces and the like. This routine will try to find
+# an efficent way to make code 128 (sorry, not necessarily the most
+# efficient way) out of your input and then it will
+# insert a line like \CXXVIII{3a 70 12 ... @@} in the output file.
+# The code 128 special characters can be included by the following codes:
+# ^^80 FNC3
+# ^^81 FNC2
+# ^^82 SHIFT
+# ^^83 CODE C/CODE C/99
+# ^^84 CODE B/FNC4/CODE B
+# ^^85 FNC4/CODE A/CODE A
+# ^^86 FNC1
+# ^^87 START A
+# ^^88 START B
+# ^^89 START C
+# ^^8a STOP
+
+use strict;
+
+use vars qw ( @ABTAB $ifname $ofname );
+# code switch table for ean
+
+@ABTAB=(0,0,0,0,0,0, #0
+ 0,0,1,0,1,1, #1
+ 0,0,1,1,0,1, #2
+ 0,0,1,1,1,0, #3
+ 0,1,0,0,1,1, #4 and so on
+ 0,1,1,0,0,1,
+ 0,1,1,1,0,0,
+ 0,1,0,1,0,1,
+ 0,1,0,1,1,0,
+ 0,1,1,0,1,0,
+ );
+
+# command line processing: Need input file
+
+if($ARGV[0]){
+ $ifname=$ARGV[0];
+}else{
+ print "Enter name of file to be processed: ";
+ $ifname = <>;
+ chomp($ifname);
+}
+
+# command line processing: need output file
+
+if($ARGV[1]){
+ $ofname=">$ARGV[1]";
+}else{
+ print "Enter name of output file: ";
+ $ofname = <>;
+ chomp($ofname);
+ $ofname = '>' . $ofname;
+}
+
+# make an ean
+
+sub eancod{
+ my ($i, $j, $checksum, $disone);
+ my $srcstr=shift;
+ # first digits first
+ my $precod=substr($srcstr,0,1);
+ # Starting output string
+ my $eastring=$precod . " +";
+ # digits 2--7
+ for($i=0;$i<6;$i++){
+ my $disone=substr($srcstr,$i+1,1);
+ $disone =~ tr/0123456789/ABCDEFGHIJ/;
+ $disone= lc ($disone) if( @ABTAB[$precod*6 + $i]==1);
+ $eastring .=$disone;
+ }$eastring .= "-";
+ # digits 8--13
+ for($i=0;$i<6;$i++){
+ # if checksum misses, do your own
+ if(($i==5) && (length($srcstr)==12)){
+ for($j=0,$checksum=0;$j<12;$j++){
+ $checksum+=substr($srcstr,$j,1)*(1+($j&1)*2);
+ };
+ $checksum%=10;
+ $checksum=10-$checksum;
+ $checksum%=10;
+ $disone="$checksum";
+ }else {
+ $disone=substr($srcstr,$i+7,1);
+ }
+ $disone =~ tr/0123456789/KLMNOPQRST/;
+ $eastring .=$disone;
+ }$eastring .="+";
+ return $eastring;
+}
+
+##################################################
+# here starts the code 128 stuff
+#
+##################################################
+# get the numerical value of a hex character,
+# e.g. 65 from 41
+#
+sub hexchar{
+ my $src=shift;
+ my ($i, $j, $result);
+ $src =~ tr/a-f/A-F/;
+ $i=ord(substr($src,0,1));
+ $j=ord(substr($src,1,1));
+ if($i >= ord("A")){
+ $i += (10-ord('A'));
+ }else{
+ $i -= ord("0");
+ }
+ if($j >= ord("A")){
+ $j += (10-ord("A"));
+ }else{
+ $j -= ord("0");
+ }
+ $result=16*($i)+$j;
+ return $result;
+}
+
+
+# globals:
+# @cxxchars holds the characters the user wants to code
+# @cxxlength is the size of this array
+# @ctbl holds the possible codings for these chars
+# @cxxout holds the codes to be output for code 128
+# @cxxoutout holds the codes to be output for code 128
+
+use vars qw ( @cxxchars $cxxlength @ctbl @cxxout @cxxoutout);
+
+##################################################
+# build up the switching table for code 128
+
+sub makectbl{
+ # locals
+ my $i;
+ for($i=0;$i < $cxxlength; $i++){
+ if(($cxxchars[$i] >= ord("0"))&&($cxxchars[$i] <= ord("9"))){
+ # digits
+ $ctbl[$i]=7;
+ }elsif(($cxxchars[$i] >= ord(" "))&&($cxxchars[$i] <= ord("_"))){
+ # common Chars
+ $ctbl[$i]=3;
+ }elsif($cxxchars[$i] < ord(" ")){
+ # ascii control chars
+ $ctbl[$i]=1;
+ }elsif(($cxxchars[$i] >=ord("`"))&&($cxxchars[$i] <= ord("\x7f"))){
+ # lowercase
+ $ctbl[$i]=2;
+ if($cxxchars[$i] == ord("}")){
+ print "Encountered right brace in argument to cxxviii\n";
+ }
+ }else{ # Function Codes
+ $ctbl[$i] =7;
+ }
+ }
+ $ctbl[$i]=0; # makes a stop.
+}
+
+##################################################
+# make a character array from a string
+# looking like aBc\x41def^^41 or so.
+#
+sub unhex{
+ my ($i, $j, $b);
+ my $srcstr=shift;
+ $j=0;
+ for($i=0;($b=ord(substr($srcstr,$i,1))) > 0;$i++){
+ if($b == ord("\\")){
+ if(substr($srcstr,$i+1,1) =~ /[xX]/){ # hex input
+ $cxxchars[$j] = hexchar(substr($srcstr,$i+2,2));
+ $i += 3;
+ }else{
+ $cxxchars[$j] = ord("\\");
+ }
+ }elsif($b == ord("^")){
+ if(ord(substr($srcstr,$i+1,1)) == ord("^")){ # hex input
+ $cxxchars[$j] = hexchar(substr($srcstr,$i+2,2));
+ $i += 3;
+ }else{
+ $cxxchars[$j] = ord("^");
+ }
+ }else{
+ $cxxchars[$j] = $b;
+ }
+ $j++;
+ }
+ return $j;
+}
+
+##################################################
+# write out a chunk of code 128 in hex symbols
+#
+sub cxxchunk{
+ my $j=shift;
+ my ($i, $sum, $k);
+ $sum=7;
+ for($i=0;$sum & $ctbl[$j+$i]; $i++){
+ $sum &= $ctbl[$j+$i];
+ }
+ if($sum==1){
+ $cxxout[$j]=101;
+ }else{
+ $cxxout[$j]=100;
+ }
+ for($k=0;$k<$i;$k++){
+ if(($sum==1)&&($cxxchars[$j+$k] < ord(" "))){
+ $cxxout[$j+$k+1]=$cxxchars[$j+$k] + 64;
+ }else{
+ $cxxout[$j+$k+1]=$cxxchars[$j+$k] - ord(" ");
+ }
+ }
+ $k++;
+ return $k;
+}
+
+##################################################
+# consecutive digits may perhaps be efficiently
+# coded with charset C
+#
+sub pastedigits{
+ my $digitcount=shift;
+ my $j=shift;
+ my $firstdigit=shift;
+ my $lastset=shift;
+ my $k;
+ if($digitcount==0){ # nothing to do
+ return $j;
+ }elsif($digitcount<4){
+ # digits here, but unfortunately not enough digits.
+ # so just copy them
+ for($k=0;$k<$digitcount;$k++){
+ $cxxoutout[$j] = $cxxout[$firstdigit+$k];
+ $j++;
+ }
+ return $j;
+ }else{
+ # is there an odd number of digits?
+ if(($digitcount & 1)==1){
+ $cxxoutout[$j] = $cxxout[$firstdigit];
+ $firstdigit++;
+ $digitcount--;
+ $j++;
+ }elsif(($cxxout[$j-1]>=99)&&($cxxout[$j-1]<=101)){
+ # Switched immediately before digits.
+ # so overwrite the switch
+ $j--;
+ }
+ $cxxoutout[$j] = 99; # switch to set C
+ $j++;
+ # copy digits in compressed format
+ for($k=0;$k<$digitcount;$k+=2){
+ $cxxoutout[$j] = ($cxxout[$firstdigit+$k]-16)*10
+ +$cxxout[$firstdigit+$k+1]-16;
+ $j++;
+ }
+ # reset char set, if you have to
+ if($lastset > 0){
+ $cxxoutout[$j] = $lastset;
+ $j++;
+ }
+ }
+ return $j;
+}
+
+sub digitoptimize{
+ # change to charset C if there are at least four numbers in a row.
+ # copy to @cxxoutout
+ my ($lastset, $firstdigit, $digitcount, $i,$j,$k);
+ $lastset =0;
+ $firstdigit=0;
+ $digitcount=0;
+ $j=0;
+ for($i = 0; $i < $cxxlength; $i++){
+ if(($cxxout[$i]>=16)&&($cxxout[$i]<=25)){
+ # it's a number
+ if($digitcount == 0){
+ $firstdigit=$i;
+ }
+ $digitcount++;
+ next;
+ }
+ if($digitcount >0){
+ $j=pastedigits($digitcount,$j,$firstdigit,$lastset);
+ $digitcount=0;
+ }
+ $cxxoutout[$j] = $cxxout[$i];
+ $j++;
+ if(($cxxout[$i]>=99)&&($cxxout[$i]<=101)){
+ # it's a code switch
+ $lastset=$cxxout[$i];
+ }else {
+ $lastset=0;
+ }
+ }
+ # $lastset is zero here, as there is no further need
+ # to switch the char set any more - we're at the end
+ $j=pastedigits($digitcount,$j,$firstdigit, 0);
+ return $j;
+}
+
+##################################################
+# code 128 is a little complicated
+# if you have read till here, you already know.
+#
+sub codcxxviii{
+ # locals
+ my ($i, $j, $sum);
+ my $srcstr=shift;
+ # first step: unhexing
+ $cxxlength = unhex($srcstr);
+ # @cxxchars now holds the characters the user wants
+ makectbl();
+ # @ctbl now contains the possible tables for the chars in $j;
+ for($i =0; $i < $cxxlength;){
+ $i += cxxchunk($i);
+ }
+ # change codeset switch to start
+ $cxxlength=$i;
+ $j=digitoptimize();
+ # Start symbols are different from switch symbols
+ if($cxxoutout[0]==99){
+ $cxxoutout[0]=105;
+ }elsif($cxxoutout[0]==100){
+ $cxxoutout[0]=104;
+ }else{
+ $cxxoutout[0]=103;
+ }
+ # calculate checksum and build output string
+ for($i=1,$sum=$cxxoutout[0];$i<$j;$i++){
+ $sum+=$cxxoutout[$i]*$i;
+ }
+ $sum %=103;
+ $cxxoutout[$j]=$sum;
+ $j++;
+ $cxxoutout[$j]=106; #stop sign
+ $srcstr="";
+ for($i=0;$i<($j+1);$i++){
+ $srcstr .= sprintf "%02X", $cxxoutout[$i];
+ }
+ $srcstr .= "@@";
+ return $srcstr;
+}
+
+##################################################
+# do code 93 -- it's easy
+##################################################
+sub codxciii{
+ my $srcstr=shift;
+ my $cstbl='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%()[]';
+ my ($i, $j, $sumc, $sumh, $checkchar);
+ $sumc=$sumh=0;
+ for ($i=0;$i<length($srcstr);$i++){
+ $j=index($cstbl, substr($srcstr,$i,1),0);
+ # $j is the check value of the character.
+ $sumh=$sumh+$j;
+ $sumc=$sumc+$sumh;
+ }
+ $srcstr=$srcstr . substr($cstbl,$sumc%47,1);
+ $sumc=$sumc+$sumh+($sumc%47);
+ $checkchar=substr($cstbl,$sumc%47,1);
+ $srcstr = $srcstr . $checkchar;
+ $srcstr =~ s/\$/\\\$/g;
+ $srcstr =~ s/%/\\%/g;
+ $srcstr =~ s/ /\\char\'040/g;
+ return $srcstr;
+}
+
+##################################################
+# we got both input and output file,
+# we defined all subroutines,
+# so here we go...
+#
+use vars qw ( $line $embedded $embtmp $mycod $eastring);
+
+open(EINGABE, $ifname) or die "No file";
+open(AUSGABE, $ofname) or die "Can't open output file";
+while($line=<EINGABE>){
+ # save 0.0005 (est.) % running time
+ unless ($line =~ /^\\/){
+ print AUSGABE $line;
+ next;
+ }
+ if($line =~ /^\\embed{(\d+)\}/){
+ $embedded=$1;
+ print AUSGABE $line;
+ }elsif($line =~ /^\\eean\{(\d+)\}(.*)/){
+ # embedded EAN
+ $embtmp=substr($embedded,0,12-length($1));
+ $mycod=$embtmp . $1;
+ $eastring=eancod($mycod);
+ print AUSGABE "\\EAN{$eastring}$2 % embedded($1)\n";
+ }elsif ($line =~ /^\\ean\{(\d+)\}(.*)/){
+ # normal ean
+ $eastring=eancod($1);
+ print AUSGABE "\\EAN{$eastring}$2 %($1)\n";
+ }elsif($line =~ /^\\isbn\{([\dxX]+)\}(.*)/){
+ # isbn to be embedded
+ $embtmp=substr($1,0,9);
+ $mycod='978' . $embtmp;
+ $eastring=eancod($mycod);
+ print AUSGABE "\\EAN{$eastring}$2 % ISBN($1)\n";
+ }elsif($line =~ /^\\cxxviii\{(.+)\}(.*)/){
+ # code 128
+ $eastring=codcxxviii($1);
+ print AUSGABE "\\CXXVIII $eastring $2 % Code128($1)\n";
+ }elsif($line =~ /^\\xciii\{(.+)\}(.*)/){
+ # code 93
+ $eastring=codxciii($1);
+ print AUSGABE "\\XCIII{$eastring}$2 % Code93($1)\n";
+ }else {
+ print AUSGABE $line;
+ }
+}
+
+##################################################
+# we're done, so we do some cleanup and quit.
+close (EINGABE);
+close (AUSGABE);
+print "Done.\n";
+
+##################################################
+# what we do here is called
+# 'falling off the edge of the world'
+# in the camel book.
+##################################################
diff --git a/fonts/barcodes/willadt/eandoc.pdf b/fonts/barcodes/willadt/eandoc.pdf
new file mode 100644
index 0000000000..5903a0c508
--- /dev/null
+++ b/fonts/barcodes/willadt/eandoc.pdf
Binary files differ
diff --git a/fonts/barcodes/willadt/install.bat b/fonts/barcodes/willadt/install.bat
new file mode 100644
index 0000000000..3713d0e24a
--- /dev/null
+++ b/fonts/barcodes/willadt/install.bat
@@ -0,0 +1,108 @@
+@echo off
+echo off
+rem Installation of the barcode fonts
+rem willadt 1999-05-29
+rem you have to set the following variable
+rem according to your system
+set TEXMF=C:\TEXMF
+rem further down, you need not change anything
+rem *******************************************
+rem under your TEXMF directory, there should be
+rem /fonts/source/public
+rem /fonts/tfm/public
+rem /fonts/vf/public
+rem /tex/generic/misc
+rem /tex/latex/misc
+rem plain TeX should be run by 'tex filename'
+rem latex2e should be run by 'latex filename'
+rem vptovf should be run by 'vptovf x y z'
+cls
+IF NOT %1a==a SET TEXMF=%1
+echo We are going to install the barcode fonts
+echo to the directory branch %TEXMF%
+echo If you don't want that,
+echo or if this is not correct, press CTRL-BREAK now,
+echo else
+pause
+echo Ok, we're going...
+echo *****************************************************
+echo checking/making directories..........................
+echo ...VF dir
+if not exist %TEXMF%\fonts\vf\public\NUL md %TEXMF%\fonts\vf\public
+if not exist %TEXMF%\fonts\vf\public\NUL goto error
+echo ...MF dir
+if not exist %TEXMF%\fonts\source\public\NUL md %TEXMF%\fonts\source\public
+if not exist %TEXMF%\fonts\source\public\misc\NUL md %TEXMF%\fonts\source\public\misc
+if not exist %TEXMF%\fonts\source\public\misc\NUL goto error
+echo ...TFM dir
+if not exist %TEXMF%\fonts\tfm\public\NUL md %TEXMF%\fonts\tfm\public
+if not exist %TEXMF%\fonts\tfm\public\misc\NUL md %TEXMF%\fonts\tfm\public\misc
+if not exist %TEXMF%\fonts\tfm\public\misc\NUL goto error
+echo ...sty dir
+if not exist %TEXMF%\tex\latex\misc\NUL md %TEXMF%\tex\latex\misc
+if not exist %TEXMF%\tex\latex\misc\NUL goto error
+echo ...tex (generic) dir
+if not exist %TEXMF%\tex\generic\misc\NUL md %TEXMF%\tex\generic\misc
+if not exist %TEXMF%\tex\generic\misc\NUL goto error
+echo *****************************************************
+echo Unpacking............................................
+call tex barcodes.ins
+rem *******************
+rem * at first the vf's
+echo *****************************************************
+echo Making and moving VF files...........................
+FOR %%a IN (wlcdb wlcf39 wlitf) DO vptovf %%a.vpl %%a.vf %%a.tfm
+copy *.vf %TEXMF%\fonts\vf\public
+del wl*.vf
+rem *******************
+rem * then the mf's
+echo *****************************************************
+echo Moving MF files......................................
+copy *.mf %TEXMF%\fonts\source\public\misc
+rem *******************
+rem * then the tfm's
+echo *****************************************************
+echo Moving tfm files.....................................
+copy *.tfm %TEXMF%\fonts\tfm\public\misc
+rem *******************
+rem * TeX files
+echo *****************************************************
+echo Moving .sty files....................................
+copy *.sty %TEXMF%\tex\latex\misc
+rem *******************
+rem * TeX files
+echo *****************************************************
+echo Moving TeX files.....................................
+copy code39.tex %TEXMF%\tex\generic\misc
+rem *******************
+rem * documentation
+echo *****************************************************
+echo Now running LaTeX on the documentation...............
+call latex bcfaq
+call latex bcfaq
+call latex eandoc
+call latex eandoc
+echo *****************************************************
+echo now comes the hardest part:
+echo running the examples file through TeX................
+call tex examples
+goto ende
+:error
+echo *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
+echo There was an error, sorry.
+echo Please install by hand.
+echo *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
+goto schluss
+:ende
+cls
+echo *****************************************************
+echo We're done. Have fun.
+echo You should update your filename database, by the way.
+echo and you will perhaps want to install codean.pl.
+echo If you do not want to have temporary files removed,
+echo press CTRL-BREAK now!
+echo else
+pause
+for %%a in (*.log wl*.vf wl*.tfm) do del %%a
+echo perhaps you can do more cleanup, I'm really done now.
+:schluss
diff --git a/fonts/barcodes/willadt/wlcdb.vpl b/fonts/barcodes/willadt/wlcdb.vpl
new file mode 100644
index 0000000000..6beb186f4a
--- /dev/null
+++ b/fonts/barcodes/willadt/wlcdb.vpl
@@ -0,0 +1,231 @@
+(FAMILY BARCODE)
+(DESIGNSIZE D 12)
+(DESIGNUNITS D 14)
+(COMMENT written by Peter Willadt August 16, 1997)
+(COMMENT Sorry, e,n,t and star not coded)
+(COMMENT Use @ as delimiter)
+(FONTDIMEN
+ (SLANT R 0)
+ (SPACE D 10)
+ (SHRINK D 0)
+ (STRETCH D 0)
+ (XHEIGHT R 10)
+ (QUAD D 10)
+ )
+(CHARACTER C 0
+ (CHARWD D 10) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ (SETRULE R 16 R 1)(MOVERIGHT R 2)
+ (SETRULE R 16 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C 1
+ (CHARWD D 10) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ (SETRULE R 16 R 2)(MOVERIGHT R 2)
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C 2
+ (CHARWD D 10) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ (SETRULE R 16 R 1)(MOVERIGHT R 2)
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ (SETRULE R 16 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C 3
+ (CHARWD D 10) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 16 R 2)(MOVERIGHT R 2)
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C 4
+ (CHARWD D 10) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ (SETRULE R 16 R 2)(MOVERIGHT R 1)
+ (SETRULE R 16 R 1)(MOVERIGHT R 2)
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C 5
+ (CHARWD D 10) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 16 R 2)(MOVERIGHT R 1)
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ (SETRULE R 16 R 1)(MOVERIGHT R 2)
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C 6
+ (CHARWD D 10) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 16 R 1)(MOVERIGHT R 2)
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ (SETRULE R 16 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C 7
+ (CHARWD D 10) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 16 R 1)(MOVERIGHT R 2)
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ (SETRULE R 16 R 2)(MOVERIGHT R 1)
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C 8
+ (CHARWD D 10) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 16 R 1)(MOVERIGHT R 2)
+ (SETRULE R 16 R 2)(MOVERIGHT R 1)
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C 9
+ (CHARWD D 10) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 16 R 2)(MOVERIGHT R 1)
+ (SETRULE R 16 R 1)(MOVERIGHT R 2)
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 45 (COMMENT Minus Sign)
+ (CHARWD D 10) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ (SETRULE R 16 R 1)(MOVERIGHT R 2)
+ (SETRULE R 16 R 2)(MOVERIGHT R 1)
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 36 (COMMENT Dollar)
+ (CHARWD D 10) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ (SETRULE R 16 R 2)(MOVERIGHT R 2)
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 58 (COMMENT Colon)
+ (CHARWD D 11) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 16 R 2)(MOVERIGHT R 1)
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ (SETRULE R 16 R 2)(MOVERIGHT R 1)
+ (SETRULE R 16 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 47 (COMMENT Slash)
+ (CHARWD D 11) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 16 R 2)(MOVERIGHT R 1)
+ (SETRULE R 16 R 2)(MOVERIGHT R 1)
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ (SETRULE R 16 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 46 (COMMENT Dot)
+ (CHARWD D 11) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 16 R 2)(MOVERIGHT R 1)
+ (SETRULE R 16 R 2)(MOVERIGHT R 1)
+ (SETRULE R 16 R 2)(MOVERIGHT R 1)
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 43 (COMMENT Plus Sign)
+ (CHARWD D 11) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ (SETRULE R 16 R 2)(MOVERIGHT R 1)
+ (SETRULE R 16 R 2)(MOVERIGHT R 1)
+ (SETRULE R 16 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C a (COMMENT Start a)
+ (CHARWD D 11) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ (SETRULE R 16 R 2)(MOVERIGHT R 2)
+ (SETRULE R 16 R 1)(MOVERIGHT R 2)
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C b (COMMENT Start b)
+ (CHARWD D 11) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 16 R 1)(MOVERIGHT R 2)
+ (SETRULE R 16 R 1)(MOVERIGHT R 2)
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ (SETRULE R 16 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C c (COMMENT Start c)
+ (CHARWD D 11) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ (SETRULE R 16 R 1)(MOVERIGHT R 2)
+ (SETRULE R 16 R 1)(MOVERIGHT R 2)
+ (SETRULE R 16 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C d (COMMENT Start d)
+ (CHARWD D 11) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ (SETRULE R 16 R 1)(MOVERIGHT R 2)
+ (SETRULE R 16 R 2)(MOVERIGHT R 2)
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C t (COMMENT Stop t)
+ (CHARWD D 11) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ (SETRULE R 16 R 2)(MOVERIGHT R 2)
+ (SETRULE R 16 R 1)(MOVERIGHT R 2)
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C n (COMMENT Stop n)
+ (CHARWD D 11) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 16 R 1)(MOVERIGHT R 2)
+ (SETRULE R 16 R 1)(MOVERIGHT R 2)
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ (SETRULE R 16 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 42 (COMMENT Stop Star)
+ (CHARWD D 11) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ (SETRULE R 16 R 1)(MOVERIGHT R 2)
+ (SETRULE R 16 R 1)(MOVERIGHT R 2)
+ (SETRULE R 16 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C e (COMMENT Stop e)
+ (CHARWD D 11) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ (SETRULE R 16 R 1)(MOVERIGHT R 2)
+ (SETRULE R 16 R 2)(MOVERIGHT R 2)
+ (SETRULE R 16 R 1)(MOVERIGHT R 1)
+ )
+ )
+
diff --git a/fonts/barcodes/willadt/wlcf39.vpl b/fonts/barcodes/willadt/wlcf39.vpl
new file mode 100644
index 0000000000..d81f877a55
--- /dev/null
+++ b/fonts/barcodes/willadt/wlcf39.vpl
@@ -0,0 +1,1334 @@
+(COMMENT Code 39, full ascii version)
+(COMMENT written by Peter Willadt, 1998-04-22)
+(COMMENT Start-Stop sign is character 128, also mapped to @@)
+(FAMILY BARCODE)
+(DESIGNSIZE D 12)
+(DESIGNUNITS D 13)
+(CODINGSCHEME ASCII)
+(SEVENBITSAFEFLAG FALSE)
+(FONTDIMEN
+ (SLANT R 0)
+ (SPACE D 14)
+ (SHRINK D 0)
+ (STRETCH D 0)
+ (XHEIGHT R 10)
+ (QUAD D 14)
+ )
+(MAPFONT D 0 (FONTNAME wlcf39))
+(LIGTABLE
+ (LABEL C @)
+ (LIG C @ D 128)
+ (STOP)
+ (LABEL C $)
+ (LIG/> C A D 129) (COMMENT replace by char 129 if followed by A)
+ (LIG/> C B D 129) (COMMENT replace by char 129 if followed by B)
+ (LIG/> C C D 129)
+ (LIG/> C D D 129)
+ (LIG/> C E D 129)
+ (LIG/> C F D 129)
+ (LIG/> C G D 129)
+ (LIG/> C H D 129)
+ (LIG/> C I D 129)
+ (LIG/> C J D 129)
+ (LIG/> C K D 129)
+ (LIG/> C L D 129)
+ (LIG/> C M D 129)
+ (LIG/> C N D 129)
+ (LIG/> C O D 129)
+ (LIG/> C P D 129)
+ (LIG/> C Q D 129)
+ (LIG/> C R D 129)
+ (LIG/> C S D 129)
+ (LIG/> C T D 129)
+ (LIG/> C U D 129)
+ (LIG/> C V D 129)
+ (LIG/> C W D 129)
+ (LIG/> C X D 129)
+ (LIG/> C Y D 129)
+ (LIG/> C Z D 129)
+ (STOP)
+ (LABEL C /)
+ (LIG/> C A D 130) (COMMENT replace by char 130 if followed by A)
+ (LIG/> C B D 130) (COMMENT replace by char 130 if followed by B)
+ (LIG/> C C D 130)
+ (LIG/> C D D 130)
+ (LIG/> C E D 130)
+ (LIG/> C F D 130)
+ (LIG/> C G D 130)
+ (LIG/> C H D 130)
+ (LIG/> C I D 130)
+ (LIG/> C J D 130)
+ (LIG/> C K D 130)
+ (LIG/> C L D 130)
+ (LIG/> C M D 130)
+ (LIG/> C N D 130)
+ (LIG/> C O D 130)
+ (LIG/> C P D 130)
+ (LIG/> C Q D 130)
+ (LIG/> C R D 130)
+ (LIG/> C S D 130)
+ (LIG/> C T D 130)
+ (LIG/> C U D 130)
+ (LIG/> C V D 130)
+ (LIG/> C W D 130)
+ (LIG/> C X D 130)
+ (LIG/> C Y D 130)
+ (LIG/> C Z D 130)
+ (STOP)
+ (LABEL C +)
+ (LIG/> C A D 131) (COMMENT replace by char 131 if followed by A)
+ (LIG/> C B D 131) (COMMENT replace by char 131 if followed by B)
+ (LIG/> C C D 131)
+ (LIG/> C D D 131)
+ (LIG/> C E D 131)
+ (LIG/> C F D 131)
+ (LIG/> C G D 131)
+ (LIG/> C H D 131)
+ (LIG/> C I D 131)
+ (LIG/> C J D 131)
+ (LIG/> C K D 131)
+ (LIG/> C L D 131)
+ (LIG/> C M D 131)
+ (LIG/> C N D 131)
+ (LIG/> C O D 131)
+ (LIG/> C P D 131)
+ (LIG/> C Q D 131)
+ (LIG/> C R D 131)
+ (LIG/> C S D 131)
+ (LIG/> C T D 131)
+ (LIG/> C U D 131)
+ (LIG/> C V D 131)
+ (LIG/> C W D 131)
+ (LIG/> C X D 131)
+ (LIG/> C Y D 131)
+ (LIG/> C Z D 131)
+ (STOP)
+ (LABEL C %)
+ (LIG/> C A D 132) (COMMENT replace by char 132 if followed by A)
+ (LIG/> C B D 132) (COMMENT replace by char 132 if followed by B)
+ (LIG/> C C D 132)
+ (LIG/> C D D 132)
+ (LIG/> C E D 132)
+ (LIG/> C F D 132)
+ (LIG/> C G D 132)
+ (LIG/> C H D 132)
+ (LIG/> C I D 132)
+ (LIG/> C J D 132)
+ (LIG/> C K D 132)
+ (LIG/> C L D 132)
+ (LIG/> C M D 132)
+ (LIG/> C N D 132)
+ (LIG/> C O D 132)
+ (LIG/> C P D 132)
+ (LIG/> C Q D 132)
+ (LIG/> C R D 132)
+ (LIG/> C S D 132)
+ (LIG/> C T D 132)
+ (LIG/> C U D 132)
+ (LIG/> C V D 132)
+ (LIG/> C W D 132)
+ (LIG/> C X D 132)
+ (LIG/> C Y D 132)
+ (LIG/> C Z D 132)
+ (STOP)
+ )
+(CHARACTER D 0
+ (COMMENT NUL made from percent U)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 37)
+ (SETCHAR C U )
+ )
+ )
+(CHARACTER D 1
+ (COMMENT SOH made from dollar A)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 36)
+ (SETCHAR C A )
+ )
+ )
+(CHARACTER D 2
+ (COMMENT STX made from dollar B)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 36)
+ (SETCHAR C B )
+ )
+ )
+(CHARACTER D 3
+ (COMMENT ETX made from dollar C)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 36)
+ (SETCHAR C C )
+ )
+ )
+(CHARACTER D 4
+ (COMMENT EOT made from dollar D)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 36)
+ (SETCHAR C D )
+ )
+ )
+(CHARACTER D 5
+ (COMMENT ENQ made from dollar E)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 36)
+ (SETCHAR C E )
+ )
+ )
+(CHARACTER D 6
+ (COMMENT ACK made from dollar F)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 36)
+ (SETCHAR C F )
+ )
+ )
+(CHARACTER D 7
+ (COMMENT BEL made from dollar G)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 36)
+ (SETCHAR C G )
+ )
+ )
+(CHARACTER D 8
+ (COMMENT BS made from dollar H)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 36)
+ (SETCHAR C H )
+ )
+ )
+(CHARACTER D 9
+ (COMMENT Tab made from dollar I)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 36)
+ (SETCHAR C I )
+ )
+ )
+(CHARACTER D 10
+ (COMMENT LF made from dollar J)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 36)
+ (SETCHAR C J )
+ )
+ )
+(CHARACTER D 11
+ (COMMENT VTAB made from dollar K)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 36)
+ (SETCHAR C K )
+ )
+ )
+(CHARACTER D 12
+ (COMMENT FF made from dollar L)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 36)
+ (SETCHAR C L )
+ )
+ )
+(CHARACTER D 13
+ (COMMENT CR made from dollar M)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 36)
+ (SETCHAR C M )
+ )
+ )
+(CHARACTER D 14
+ (COMMENT SO made from dollar N)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 36)
+ (SETCHAR C N )
+ )
+ )
+(CHARACTER D 15
+ (COMMENT SI made from dollar O (O like Oppossum, not like zerO))
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 36)
+ (SETCHAR D 79)
+ )
+ )
+(CHARACTER D 16
+ (COMMENT DLE made from dollar P)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 36)
+ (SETCHAR C P )
+ )
+ )
+(CHARACTER D 17
+ (COMMENT DC1 made from dollar Q)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 36)
+ (SETCHAR C Q )
+ )
+ )
+(CHARACTER D 18
+ (COMMENT DC2 made from dollar R)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 36)
+ (SETCHAR C R )
+ )
+ )
+(CHARACTER D 19
+ (COMMENT DC3 made from dollar S)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 36)
+ (SETCHAR C S )
+ )
+ )
+(CHARACTER D 20
+ (COMMENT DC4 made from dollar T)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 36)
+ (SETCHAR C T )
+ )
+ )
+(CHARACTER D 21
+ (COMMENT NAK made from dollar U)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 36)
+ (SETCHAR C U )
+ )
+ )
+(CHARACTER D 22
+ (COMMENT SY made from dollar V)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 36)
+ (SETCHAR C V )
+ )
+ )
+(CHARACTER D 23
+ (COMMENT EB made from dollar W)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 36)
+ (SETCHAR C W )
+ )
+ )
+(CHARACTER D 24
+ (COMMENT CN made from dollar X)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 36)
+ (SETCHAR C X )
+ )
+ )
+(CHARACTER D 25
+ (COMMENT EM made from dollar Y)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 36)
+ (SETCHAR C Y )
+ )
+ )
+(CHARACTER D 26
+ (COMMENT SB made from dollar Z)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 36)
+ (SETCHAR C Z )
+ )
+ )
+(CHARACTER D 27
+ (COMMENT ESC made from percent A)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 37)
+ (SETCHAR C A )
+ )
+ )
+(CHARACTER D 28
+ (COMMENT FS made from percent B)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 37)
+ (SETCHAR C B )
+ )
+ )
+(CHARACTER D 29
+ (COMMENT GS made from percent C)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 37)
+ (SETCHAR C C )
+ )
+ )
+(CHARACTER D 30
+ (COMMENT RS made from percent D)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 37)
+ (SETCHAR C D )
+ )
+ )
+(CHARACTER D 31
+ (COMMENT US made from percent E)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 37)
+ (SETCHAR C E )
+ )
+ )
+(CHARACTER D 32
+ (COMMENT SPC)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 33
+ (COMMENT exclamation made from slash A)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 47)
+ (SETCHAR C A )
+ )
+ )
+(CHARACTER D 34
+ (COMMENT double quotes made from slash B)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 47)
+ (SETCHAR C B )
+ )
+ )
+(CHARACTER D 35
+ (COMMENT number sign made from slash C)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 47)
+ (SETCHAR C C )
+ )
+ )
+(CHARACTER D 36
+ (COMMENT dollar)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 37
+ (COMMENT percent)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 38
+ (COMMENT ampersand made from slash F)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 47)
+ (SETCHAR C F )
+ )
+ )
+(CHARACTER D 39
+ (COMMENT quote made from slash G)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 47)
+ (SETCHAR C G )
+ )
+ )
+(CHARACTER D 40
+ (COMMENT open brace made from slash H)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 47)
+ (SETCHAR C H )
+ )
+ )
+(CHARACTER D 41
+ (COMMENT close brace made from slash I)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 47)
+ (SETCHAR C I )
+ )
+ )
+(CHARACTER D 42
+ (COMMENT asterisk made from slash J)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 47)
+ (SETCHAR C J )
+ )
+ )
+(CHARACTER D 43
+ (COMMENT plus)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 44
+ (COMMENT comma made from slash L)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 47)
+ (SETCHAR C L )
+ )
+ )
+(CHARACTER D 45
+ (COMMENT minus)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 46
+ (COMMENT dot)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 2)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 47
+ (COMMENT slash)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 48
+ (COMMENT Digit 0)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 49
+ (COMMENT digit 1)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 50
+ (COMMENT digit 2)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 51
+ (COMMENT digit 3)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 52
+ (COMMENT digit 4)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 53
+ (COMMENT digit 5)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 54
+ (COMMENT digit 6)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 2)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 55
+ (COMMENT digit 7)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 56
+ (COMMENT digit 8)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 57
+ (COMMENT digit 9)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 58
+ (COMMENT colon made from slash Z)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 47)
+ (SETCHAR C Z )
+ )
+ )
+(CHARACTER D 59
+ (COMMENT semicolon made from percent F)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 37)
+ (SETCHAR C F )
+ )
+ )
+(CHARACTER D 60
+ (COMMENT less made from percent G)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 37)
+ (SETCHAR C G )
+ )
+ )
+(CHARACTER D 61
+ (COMMENT equal made from percent H)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 37)
+ (SETCHAR C H )
+ )
+ )
+(CHARACTER D 62
+ (COMMENT greater made from percent I)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 37)
+ (SETCHAR C I )
+ )
+ )
+(CHARACTER D 63
+ (COMMENT question mark made from percent J)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 37)
+ (SETCHAR C J )
+ )
+ )
+(CHARACTER D 64
+ (COMMENT @ made from percent V)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 37)
+ (SETCHAR C V )
+ )
+ )
+(CHARACTER C A
+ (COMMENT uppercase letter)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C B
+ (COMMENT uppercase letter)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C C
+ (COMMENT uppercase letter)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C D
+ (COMMENT uppercase letter)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C E
+ (COMMENT uppercase letter)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C F
+ (COMMENT uppercase letter)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C G
+ (COMMENT uppercase letter)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C H
+ (COMMENT uppercase letter)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C I
+ (COMMENT uppercase letter)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C J
+ (COMMENT uppercase letter)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 2)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C K
+ (COMMENT uppercase letter)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C L
+ (COMMENT uppercase letter)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C M
+ (COMMENT uppercase letter)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C N
+ (COMMENT uppercase letter)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C O
+ (COMMENT uppercase letter O like in Oppossum, not zerO)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C P
+ (COMMENT uppercase letter)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C Q
+ (COMMENT uppercase letter)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 2)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C R
+ (COMMENT uppercase letter)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C S
+ (COMMENT uppercase letter)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C T
+ (COMMENT uppercase letter)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C U
+ (COMMENT uppercase letter)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 2)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C V
+ (COMMENT uppercase letter)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C W
+ (COMMENT uppercase letter)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 2)(MOVERIGHT R 2)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C X
+ (COMMENT uppercase letter)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C Y
+ (COMMENT uppercase letter)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 2)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER C Z
+ (COMMENT uppercase letter)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 91
+ (COMMENT open bracket made from percent K)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 37)
+ (SETCHAR C K )
+ )
+ )
+(CHARACTER D 92
+ (COMMENT backslash made from percent L)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 37)
+ (SETCHAR C L )
+ )
+ )
+(CHARACTER D 93
+ (COMMENT close bracket made from percent M)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 37)
+ (SETCHAR C M )
+ )
+ )
+(CHARACTER D 94
+ (COMMENT hat made from percent N)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 37)
+ (SETCHAR C N )
+ )
+ )
+(CHARACTER D 95
+ (COMMENT underbar made from percent Oh (like in Oppossum, not like zero))
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 37)
+ (SETCHAR C O )
+ )
+ )
+(CHARACTER D 96
+ (COMMENT open single quote made from percent W)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 37)
+ (SETCHAR C W )
+ )
+ )
+(CHARACTER C a
+ (COMMENT lowercase letter made from + and uppercase letter)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR C +)
+ (SETCHAR C A)
+ )
+ )
+(CHARACTER C b
+ (COMMENT lowercase letter made from + and uppercase letter)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR C +)
+ (SETCHAR C B)
+ )
+ )
+(CHARACTER C c
+ (COMMENT lowercase letter made from + and uppercase letter)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR C +)
+ (SETCHAR C C)
+ )
+ )
+(CHARACTER C d
+ (COMMENT lowercase letter made from + and uppercase letter)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR C +)
+ (SETCHAR C D)
+ )
+ )
+(CHARACTER C e
+ (COMMENT lowercase letter made from + and uppercase letter)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR C +)
+ (SETCHAR C E)
+ )
+ )
+(CHARACTER C f
+ (COMMENT lowercase letter made from + and uppercase letter)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR C +)
+ (SETCHAR C F)
+ )
+ )
+(CHARACTER C g
+ (COMMENT lowercase letter made from + and uppercase letter)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR C +)
+ (SETCHAR C G)
+ )
+ )
+(CHARACTER C h
+ (COMMENT lowercase letter made from + and uppercase letter)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR C +)
+ (SETCHAR C H)
+ )
+ )
+(CHARACTER C i
+ (COMMENT lowercase letter made from + and uppercase letter)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR C +)
+ (SETCHAR C I)
+ )
+ )
+(CHARACTER C j
+ (COMMENT lowercase letter made from + and uppercase letter)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR C +)
+ (SETCHAR C J)
+ )
+ )
+(CHARACTER C k
+ (COMMENT lowercase letter made from + and uppercase letter)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR C +)
+ (SETCHAR C K)
+ )
+ )
+(CHARACTER C l
+ (COMMENT lowercase letter made from + and uppercase letter)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR C +)
+ (SETCHAR C L)
+ )
+ )
+(CHARACTER C m
+ (COMMENT lowercase letter made from + and uppercase letter)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR C +)
+ (SETCHAR C M)
+ )
+ )
+(CHARACTER C n
+ (COMMENT lowercase letter made from + and uppercase letter)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR C +)
+ (SETCHAR C N)
+ )
+ )
+(CHARACTER C o
+ (COMMENT lowercase letter made from + and uppercase letter)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR C +)
+ (SETCHAR C O)
+ )
+ )
+(CHARACTER C p
+ (COMMENT lowercase letter made from + and uppercase letter)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR C +)
+ (SETCHAR C P)
+ )
+ )
+(CHARACTER C q
+ (COMMENT lowercase letter made from + and uppercase letter)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR C +)
+ (SETCHAR C Q)
+ )
+ )
+(CHARACTER C r
+ (COMMENT lowercase letter made from + and uppercase letter)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR C +)
+ (SETCHAR C R)
+ )
+ )
+(CHARACTER C s
+ (COMMENT lowercase letter made from + and uppercase letter)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR C +)
+ (SETCHAR C S)
+ )
+ )
+(CHARACTER C t
+ (COMMENT lowercase letter made from + and uppercase letter)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR C +)
+ (SETCHAR C T)
+ )
+ )
+(CHARACTER C u
+ (COMMENT lowercase letter made from + and uppercase letter)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR C +)
+ (SETCHAR C U)
+ )
+ )
+(CHARACTER C v
+ (COMMENT lowercase letter made from + and uppercase letter)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR C +)
+ (SETCHAR C V)
+ )
+ )
+(CHARACTER C w
+ (COMMENT lowercase letter made from + and uppercase letter)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR C +)
+ (SETCHAR C W)
+ )
+ )
+(CHARACTER C x
+ (COMMENT lowercase letter made from + and uppercase letter)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR C +)
+ (SETCHAR C X)
+ )
+ )
+(CHARACTER C y
+ (COMMENT lowercase letter made from + and uppercase letter)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR C +)
+ (SETCHAR C Y)
+ )
+ )
+(CHARACTER C z
+ (COMMENT lowercase letter made from + and uppercase letter)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR C +)
+ (SETCHAR C Z)
+ )
+ )
+(CHARACTER D 123
+ (COMMENT open curly made from percent P)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 37)
+ (SETCHAR C P)
+ )
+ )
+(CHARACTER D 124
+ (COMMENT pipeline made from percent Q)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 37)
+ (SETCHAR C Q)
+ )
+ )
+(CHARACTER D 125
+ (COMMENT close curly made from percent R)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 37)
+ (SETCHAR C R)
+ )
+ )
+(CHARACTER D 126
+ (COMMENT tilde made from percent S)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 37)
+ (SETCHAR C S)
+ )
+ )
+(CHARACTER D 127
+ (COMMENT DEL made from percent T)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR D 37)
+ (SETCHAR C T)
+ )
+ )
+(CHARACTER D 128
+ (COMMENT start/stop sign)
+ (CHARWD D 13) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETRULE R 13 R 1)(MOVERIGHT R 2)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 2)(MOVERIGHT R 1)
+ (SETRULE R 13 R 1)(MOVERIGHT R 1)
+ )
+ )
+(COMMENT the following characters are used instead of the
+ real characters by the ligature program if use of the real
+ characters would lead to a misinterpretation)
+(CHARACTER D 129
+ (COMMENT dollar made from slash D)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR C /)
+ (SETCHAR C D)
+ )
+ )
+(CHARACTER D 130
+ (COMMENT slash made from slash O (O like oppossum, not like zerO))
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR C /)
+ (SETCHAR C O)
+ )
+ )
+(CHARACTER D 131
+ (COMMENT plus made from slash K)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR C /)
+ (SETCHAR C K)
+ )
+ )
+(CHARACTER D 132
+ (COMMENT percent made from slash E)
+ (CHARWD D 26) (CHARHT D 13) (CHARDP R 0) (CHARIC R 0)
+ (MAP
+ (SETCHAR C /)
+ (SETCHAR C E)
+ )
+ )
+(COMMENT EndOfFile)
diff --git a/fonts/barcodes/willadt/wlitf.vpl b/fonts/barcodes/willadt/wlitf.vpl
new file mode 100644
index 0000000000..fe1e42ac6b
--- /dev/null
+++ b/fonts/barcodes/willadt/wlitf.vpl
@@ -0,0 +1,1363 @@
+(FAMILY BARCODE)
+(DESIGNSIZE D 12)
+(DESIGNUNITS D 14)
+(COMMENT written by Peter Willadt August 16, 1997)
+(COMMENT updated 1997-11-08 shrunk start/stop-signs)
+(COMMENT updated 1998-04-21 fixed 06 - 07 bug)
+(FONTDIMEN
+ (SLANT R 0)
+ (SPACE D 14)
+ (SHRINK D 0)
+ (STRETCH D 0)
+ (XHEIGHT R 10)
+ (QUAD D 14)
+ )
+(LIGTABLE
+ (LABEL C 0)
+ (LIG C 0 D 1)
+ (LIG C 1 D 2)
+ (LIG C 2 D 3)
+ (LIG C 3 D 4)
+ (LIG C 4 D 5)
+ (LIG C 5 D 6)
+ (LIG C 6 D 7)
+ (LIG C 7 D 8)
+ (LIG C 8 D 9)
+ (LIG C 9 D 10)
+ (STOP)
+ (LABEL C 1)
+ (LIG C 0 D 11)
+ (LIG C 1 D 12)
+ (LIG C 2 D 13)
+ (LIG C 3 D 14)
+ (LIG C 4 D 15)
+ (LIG C 5 D 16)
+ (LIG C 6 D 17)
+ (LIG C 7 D 18)
+ (LIG C 8 D 19)
+ (LIG C 9 D 20)
+ (STOP)
+ (LABEL C 2)
+ (LIG C 0 D 21)
+ (LIG C 1 D 22)
+ (LIG C 2 D 23)
+ (LIG C 3 D 24)
+ (LIG C 4 D 25)
+ (LIG C 5 D 26)
+ (LIG C 6 D 27)
+ (LIG C 7 D 28)
+ (LIG C 8 D 29)
+ (LIG C 9 D 30)
+ (STOP)
+ (LABEL C 3)
+ (LIG C 0 D 31)
+ (LIG C 1 D 32)
+ (LIG C 2 D 33)
+ (LIG C 3 D 34)
+ (LIG C 4 D 35)
+ (LIG C 5 D 36)
+ (LIG C 6 D 37)
+ (LIG C 7 D 38)
+ (LIG C 8 D 39)
+ (LIG C 9 D 40)
+ (STOP)
+ (LABEL C 4)
+ (LIG C 0 D 61)
+ (LIG C 1 D 62)
+ (LIG C 2 D 63)
+ (LIG C 3 D 64)
+ (LIG C 4 D 65)
+ (LIG C 5 D 66)
+ (LIG C 6 D 67)
+ (LIG C 7 D 68)
+ (LIG C 8 D 69)
+ (LIG C 9 D 70)
+ (STOP)
+ (LABEL C 5)
+ (LIG C 0 D 71)
+ (LIG C 1 D 72)
+ (LIG C 2 D 73)
+ (LIG C 3 D 74)
+ (LIG C 4 D 75)
+ (LIG C 5 D 76)
+ (LIG C 6 D 77)
+ (LIG C 7 D 78)
+ (LIG C 8 D 79)
+ (LIG C 9 D 80)
+ (STOP)
+ (LABEL C 6)
+ (LIG C 0 D 81)
+ (LIG C 1 D 82)
+ (LIG C 2 D 83)
+ (LIG C 3 D 84)
+ (LIG C 4 D 85)
+ (LIG C 5 D 86)
+ (LIG C 6 D 87)
+ (LIG C 7 D 88)
+ (LIG C 8 D 89)
+ (LIG C 9 D 90)
+ (STOP)
+ (LABEL C 7)
+ (LIG C 0 D 91)
+ (LIG C 1 D 92)
+ (LIG C 2 D 93)
+ (LIG C 3 D 94)
+ (LIG C 4 D 95)
+ (LIG C 5 D 96)
+ (LIG C 6 D 97)
+ (LIG C 7 D 98)
+ (LIG C 8 D 99)
+ (LIG C 9 D 100)
+ (STOP)
+ (LABEL C 8)
+ (LIG C 0 D 101)
+ (LIG C 1 D 102)
+ (LIG C 2 D 103)
+ (LIG C 3 D 104)
+ (LIG C 4 D 105)
+ (LIG C 5 D 106)
+ (LIG C 6 D 107)
+ (LIG C 7 D 108)
+ (LIG C 8 D 109)
+ (LIG C 9 D 110)
+ (STOP)
+ (LABEL C 9)
+ (LIG C 0 D 111)
+ (LIG C 1 D 112)
+ (LIG C 2 D 113)
+ (LIG C 3 D 114)
+ (LIG C 4 D 115)
+ (LIG C 5 D 116)
+ (LIG C 6 D 117)
+ (LIG C 7 D 118)
+ (LIG C 8 D 119)
+ (LIG C 9 D 120)
+ (STOP)
+ )
+(CHARACTER D 1
+ (COMMENT 0 and 0)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 2
+ (COMMENT 0 and 1)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 3
+ (COMMENT 0 and 2)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 4
+ (COMMENT 0 and 3)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 5
+ (COMMENT 0 and 4)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 6
+ (COMMENT 0 and 5)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 7
+ (COMMENT 0 and 6)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 8
+ (COMMENT 0 and 7)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 9
+ (COMMENT 0 and 8)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 10
+ (COMMENT 0 and 9)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 11
+ (COMMENT 1 and 0)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 12
+ (COMMENT 1 and 1)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 13
+ (COMMENT 1 and 2)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 14
+ (COMMENT 1 and 3)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 15
+ (COMMENT 1 and 4)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 16
+ (COMMENT 1 and 5)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 17
+ (COMMENT 1 and 6)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 18
+ (COMMENT 1 and 7)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 19
+ (COMMENT 1 and 8)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 20
+ (COMMENT 1 and 9)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 21
+ (COMMENT 2 and 0)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 22
+ (COMMENT 2 and 1)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 23
+ (COMMENT 2 and 2)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 24
+ (COMMENT 2 and 3)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 25
+ (COMMENT 2 and 4)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 26
+ (COMMENT 2 and 5)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 27
+ (COMMENT 2 and 6)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 28
+ (COMMENT 2 and 7)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 29
+ (COMMENT 2 and 8)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 30
+ (COMMENT 2 and 9)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 31
+ (COMMENT 3 and 0)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 32
+ (COMMENT 3 and 1)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 33
+ (COMMENT 3 and 2)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 34
+ (COMMENT 3 and 3)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 35
+ (COMMENT 3 and 4)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 36
+ (COMMENT 3 and 5)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 37
+ (COMMENT 3 and 6)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 38
+ (COMMENT 3 and 7)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 39
+ (COMMENT 3 and 8)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 40
+ (COMMENT 3 and 9)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 43
+ (COMMENT Start+)
+ (CHARWD D 5) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 45
+ (COMMENT Stop-)
+ (CHARWD D 5) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D48
+ (COMMENT Fake numeric 0 for LIG Processing)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D49
+ (COMMENT Fake numeric 1 for LIG Processing)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D50
+ (COMMENT Fake numeric 2 for LIG Processing)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D51
+ (COMMENT Fake numeric 3 for LIG Processing)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D52
+ (COMMENT Fake numeric 4 for LIG Processing)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D53
+ (COMMENT Fake numeric 5 for LIG Processing)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D54
+ (COMMENT Fake numeric 6 for LIG Processing)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D55
+ (COMMENT Fake numeric 7 for LIG Processing)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D56
+ (COMMENT Fake numeric 8 for LIG Processing)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D57
+ (COMMENT Fake numeric 9 for LIG Processing)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 61
+ (COMMENT 4 and 0)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 62
+ (COMMENT 4 and 1)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 63
+ (COMMENT 4 and 2)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 64
+ (COMMENT 4 and 3)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 65
+ (COMMENT 4 and 4)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 66
+ (COMMENT 4 and 5)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 67
+ (COMMENT 4 and 6)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 68
+ (COMMENT 4 and 7)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 69
+ (COMMENT 4 and 8)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 70
+ (COMMENT 4 and 9)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 71
+ (COMMENT 5 and 0)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 72
+ (COMMENT 5 and 1)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 73
+ (COMMENT 5 and 2)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 74
+ (COMMENT 5 and 3)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 75
+ (COMMENT 5 and 4)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 76
+ (COMMENT 5 and 5)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 77
+ (COMMENT 5 and 6)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 78
+ (COMMENT 5 and 7)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 79
+ (COMMENT 5 and 8)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 80
+ (COMMENT 5 and 9)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 81
+ (COMMENT 6 and 0)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 82
+ (COMMENT 6 and 1)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 83
+ (COMMENT 6 and 2)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 84
+ (COMMENT 6 and 3)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 85
+ (COMMENT 6 and 4)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 86
+ (COMMENT 6 and 5)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 87
+ (COMMENT 6 and 6)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 88
+ (COMMENT 6 and 7)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 89
+ (COMMENT 6 and 8)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 90
+ (COMMENT 6 and 9)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 91
+ (COMMENT 7 and 0)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 92
+ (COMMENT 7 and 1)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 93
+ (COMMENT 7 and 2)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 94
+ (COMMENT 7 and 3)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 95
+ (COMMENT 7 and 4)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 96
+ (COMMENT 7 and 5)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 97
+ (COMMENT 7 and 6)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 98
+ (COMMENT 7 and 7)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 99
+ (COMMENT 7 and 8)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 100
+ (COMMENT 7 and 9)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 101
+ (COMMENT 8 and 0)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 102
+ (COMMENT 8 and 1)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 103
+ (COMMENT 8 and 2)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 104
+ (COMMENT 8 and 3)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 105
+ (COMMENT 8 and 4)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 106
+ (COMMENT 8 and 5)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 107
+ (COMMENT 8 and 6)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 108
+ (COMMENT 8 and 7)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 109
+ (COMMENT 8 and 8)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 110
+ (COMMENT 8 and 9)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 111
+ (COMMENT 9 and 0)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 112
+ (COMMENT 9 and 1)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 113
+ (COMMENT 9 and 2)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 114
+ (COMMENT 9 and 3)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 115
+ (COMMENT 9 and 4)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 116
+ (COMMENT 9 and 5)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 117
+ (COMMENT 9 and 6)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 118
+ (COMMENT 9 and 7)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ )
+ )
+(CHARACTER D 119
+ (COMMENT 9 and 8)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 2)
+ (SETRULE R 14 R 2)(MOVERIGHT R 1)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(CHARACTER D 120
+ (COMMENT 9 and 9)
+ (CHARWD D 14) (CHARHT R 14) (CHARDP R 0) (CHARIC R 0.0)
+ (MAP
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ (SETRULE R 14 R 2)(MOVERIGHT R 2)
+ (SETRULE R 14 R 1)(MOVERIGHT R 1)
+ )
+ )
+(COMMENT EndOfFile)