summaryrefslogtreecommitdiff
path: root/fonts/kixfont/kix.mf
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /fonts/kixfont/kix.mf
Initial commit
Diffstat (limited to 'fonts/kixfont/kix.mf')
-rw-r--r--fonts/kixfont/kix.mf121
1 files changed, 121 insertions, 0 deletions
diff --git a/fonts/kixfont/kix.mf b/fonts/kixfont/kix.mf
new file mode 100644
index 0000000000..8ac6038290
--- /dev/null
+++ b/fonts/kixfont/kix.mf
@@ -0,0 +1,121 @@
+% KIX, a font for typesetting snail mail zipcodes.
+%
+% The KIX code is a barcodish format used to encode country codes, zip codes
+% and street numbers in a machine-readable format. If printed below the
+% address line on bulk mailings, a discount can be obtained.
+%
+% This font is according to the Dutch specifications. The sizes are
+% optimal for printing on a printer with a resolution which is a multiple
+% of 150dpi. This optimisation means that the sizes in the TFM file for
+% this font match almost exactly on an integer number of pixels.
+%
+% Install this font in your TeX distribution and update any distro caches.
+% Include this file with \font\kix=kix and use it to format properly coded
+% KIX-information, for instance {\kix 1234AB56} for zipcode 1234AB and street
+% number 56. For more information on the data to encode in KIX, please refer
+% to the following site in Dutch:
+% http://www.tpgpostbusiness.nl/kix/
+% KIX is also used in a few other countries, but not worldwide.
+%
+% Metafont scripting by Rick van Rein, KIX-knowledge from Ivo Terhorst.
+%
+% Available for any purpose, no warranties.
+
+
+mode_setup;
+font_identifier "kix";
+
+
+% The bar in the code is barw# wide, spaces are #spcw wide
+% The sync portion is synch# high, plus additional stickh# to either side
+barw# := 0.508mm#;
+spcw# := 0.677mm#;
+synch# := 1.27mm#;
+stickh# := 2.08mm#;
+
+define_pixels (barw, spcw, synch, stickh);
+
+
+% Character dimensions:
+% wd, ht, dp
+
+wd# := 4 * (barw# + spcw#);
+ht# := synch# + stickh# + 2mm#;
+dp# := stickh#;
+
+define_pixels (wd, ht, dp)
+
+
+% Routine to start a character definition
+
+def defchar (expr ch) =
+ beginchar (ch, wd#, ht#, dp#);
+ x := 0;
+enddef;
+
+% Routine to draw a sync alone
+
+def sync =
+ fill (x,0)--(x+barw,0)--(x+barw,synch)--(x,synch)--cycle;
+ x := x + barw + spcw
+enddef;
+
+% Routine to draw a stick down
+
+def down =
+ fill (x,-stickh)--(x+barw,-stickh)--(x+barw,synch)--(x,synch)--cycle;
+ x := x + barw + spcw
+enddef;
+
+% Routine to draw a stick up
+
+def up =
+ fill (x,0)--(x+barw,0)--(x+barw,synch+stickh)--(x,synch+stickh)--cycle;
+ x := x + barw + spcw
+enddef;
+
+% Routine to draw a long line
+
+def updown =
+ fill (x,-stickh)--(x+barw,-stickh)--(x+barw,synch+stickh)--(x,synch+stickh)--cycle;
+ x := x + barw + spcw
+enddef;
+
+defchar ("1"); sync; down; up; updown; endchar;
+defchar ("2"); sync; down; updown; up; endchar;
+defchar ("3"); down; sync; up; updown; endchar;
+defchar ("4"); down; sync; updown; up; endchar;
+defchar ("5"); down; down; up; up; endchar;
+defchar ("6"); sync; up; down; updown; endchar;
+defchar ("7"); sync; updown; sync; updown; endchar;
+defchar ("8"); sync; updown; down; up; endchar;
+defchar ("9"); down; up; sync; updown; endchar;
+defchar ("0"); sync; sync; updown; updown; endchar;
+defchar ("A"); down; up; down; up; endchar;
+defchar ("B"); down; updown; sync; up; endchar;
+defchar ("C"); sync; up; updown; down; endchar;
+defchar ("D"); sync; updown; up; down; endchar;
+defchar ("E"); sync; updown; updown; sync; endchar;
+defchar ("F"); down; up; up; down; endchar;
+defchar ("G"); down; up; updown; sync; endchar;
+defchar ("H"); down; updown; up; sync; endchar;
+defchar ("I"); up; sync; down; updown; endchar;
+defchar ("J"); up; down; sync; updown; endchar;
+defchar ("K"); up; down; down; up; endchar;
+defchar ("L"); updown; sync; sync; updown; endchar;
+defchar ("M"); updown; sync; down; up; endchar;
+defchar ("N"); updown; down; sync; up; endchar;
+defchar ("O"); up; sync; updown; down; endchar;
+defchar ("P"); up; down; up; down; endchar;
+defchar ("Q"); up; down; updown; sync; endchar;
+defchar ("R"); updown; sync; up; down; endchar;
+defchar ("S"); updown; sync; updown; sync; endchar;
+defchar ("T"); updown; down; up; sync; endchar;
+defchar ("U"); up; up; down; down; endchar;
+defchar ("V"); up; updown; sync; down; endchar;
+defchar ("W"); up; updown; down; sync; endchar;
+defchar ("X"); updown; up; sync; down; endchar;
+defchar ("Y"); updown; up; down; sync; endchar;
+defchar ("Z"); updown; updown; sync; sync; endchar;
+
+end