metafont
clone your own copy | download snapshot

Snapshots | iceberg

Inside this repository

klinz.mf
text/plain

Download raw (49.6 KB)

% (C)opyright 1993 by Karl Guenter Wuensch.
% This Font has been created by Karl G\"unter W\"unsch
%                               Eschenstr. 7
%                               Postbox 101129
%                               47476 Rheinberg
%                               Germany
% (Watch out, the address above lists the new postcode for my postbox
%  in Rheinberg, valid from 07/01/93 onwards and not before! The old one is
%  4134).
% It was created to resemble (but not to be identical) to the publicly
% available (in TrueType and Type 1) Klingon font. Since I had no means
% of really using the font in the the mentioned formats I had to do something
% about that and --- being a TeX-User --- I decided this was the time to
% learn something about \MF. So if there are some errors contained
% in here, let me know. My current E-Mail address is: 
%                hz225wu@unidui.uni-duisburg.de
%
% I don't want to make a fuzz of it, but I would like to get any changes you
% make to this font. So this may be freely copied and distributed under the
% restriction, that you 
% a) leave this commentary part including the copyright notice intact
% b) send me the changes you make to this source so that I can enhance
%    it further.    
% 
% This font contains a full set of upper- and lower-case Klingon characters
% including some additional things like punctuation, which were designed by 
% Micaela Pantke. Maybe someone from the Klingon Language Institue could 
% elaborate about the issue of the additional characters, but I'll use 
% them anyway.
%
% It should be compiled with plain \MF along the lines of the following
% example (where the mag-part of it may be left out and x stands for anything
% suitable as magstep (any magstep above 6 or 7 is ignored by some dvi-drivers 
% I know of): 
%       mf "\mode:=localfont;" "mag=magstep(x);" input klinz
% 
% I used an extensive scheme of ligatures to make the font look nice... Well
% it looks better than my TrueType example, because this had erratic character
% spacing and a too short space-length.
%
% Anyone who is wondering, why I even defined ligatures between lower- and 
% upper-case should take a look at the Klingon Dictionary by Mike Okrand. 
% The (s)he'll see that it is fairly common to have upper- and lower-case 
% characters mixed in a single word.

% Corner points are the visible edges of the corresponding character, wereas
% help points are those points on the curve between the corner points whose
% tangent has the same angle of ascent as the direct line between the corners.
% (Hint: look at the definition of the macro flex in the \MF book).
%
% There are some help points that have been inserted to act like corner points
% where the direct path is too complicated to be defined in one stroke.

mode_setup;

numeric body_height#, body_depth#, body_width#;
numeric u#;
u#=1pt#*scale;

design_size=10;
actual_size=9;
scale = actual_size/design_size;
body_height#=8.33333pt#*scale;
body_depth#=1.66667pt#*scale;
body_width#=7.8pt#*scale;

%
% Smallest size really useable on my printer which is a HP-Deskjet+
% (resolution 300 dpi). Otherwise some of the distances beween filled
% areas in the characters get too small. Maybe I will fix this some time 
% (If I ever correctly understand how the blacker value can be used to
% do the necessary corrections) but for now you'll have to live with it.
font_size 11pt#;

define_pixels(body_height);
t=body_height/3.5*0.97; % Umrechnungsgroesse von meiner Papier-Vorlage auf pt.

%
% Height and other parameters of upper case and symbols.
%
numeric uu#, body_heightu#, body_depthu#, body_witdhu#;
uu#=1pt#*scaleu;

design_sizeu=10;
actual_sizeu=11;
scaleu = actual_sizeu/design_sizeu;
body_heightu#=8.33333pt#*scaleu;
body_depthu#=1.66667pt#*scaleu;
body_widthu#=7.9pt#*scaleu;

define_pixels (body_heightu);
tu=body_heightu/3.5*0.97; % Umrechnungsgroesse von meiner Papier-Vorlage auf pt.

% Font dimensions 1--7

font_slant 0pt#;
font_normal_space 0.8body_width#;
font_normal_stretch body_width#/4;
font_normal_shrink 1pt#*scaleu;
font_x_height body_heightu#/2;
font_quad 2(body_widthu#-2.9pt#*scaleu);
font_extra_space body_width#/4;

%
% Definition of the klingon symbol of the empire (might be useful...) 
%
ts = 3tu; % size factor for symbols

beginchar ("@", 1.825*body_widthu#, 1.75*body_heightu#, 0.7*body_heightu#); "Klingon imperial symbol";
z1=(0,-0.55ts); z2=(1ts,-0.2ts); z3=(0.6ts,0.1ts); % corner points
z4=(1.1ts,-0.2ts); z5=(2.1ts,-0.55ts); z6=(1.45ts,0.1ts); % corner points
z7=(0.65ts,0.15ts); z8=(1.05ts,-0.125ts); z9=(1.4ts,0.15ts); % corner points
z10=(1.08ts,2.1ts); z11=(1.02ts,2.1ts); % corner points
z12=(0.5ts,-0.25ts); z13=(0.35ts,-0.075ts); z14=(1.5ts,-0.4ts); % help points
z15=(1.75ts,-0.25ts); z16=(1.15ts,1.05ts); z17=(1.05ts,2.125ts); % help points
z18=(0.95ts,1.05ts); % help points
pickup pencircle scaled (scaleu*0.23pt);
draw fullcircle scaled 1.3ts shifted (1.05ts,0.2ts);
fill flex(z1,z12,z2) & z2--z3 & flex(z3,z13,z1) & cycle;
fill flex(z4,z14,z5) & flex(z5,z15,z6) & z6--z4 & cycle;
fill z7--z8 & z8--z9 & flex(z9,z16,z10) & flex(z10,z17,z11) 
   & flex(z11,z18,z7) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18);
endchar;

beginchar ("a", body_width#-0.3pt#*scale, body_height#, 0pt#); "Klingon letter a";
z1=(0,0); z2=(0.55t,0); z3=(3.25t,0); z4=(2.35t,3.5t); % corner points
z5=(2.1t,3.625t); z6=(0.6t,3.4t); z7=(1.1t,2.3t); % corner points
z8=(1.625t,0.7t); z9=(1.55t,1.3t); z10=(0.95t,1.5t); % corner points
z11=(2.5t,1.9t); z12=(1.35t,3.3t); z13=(1.85t,2.7t); % help points
z14=(1.45t,2.75t); z15=(2.05t,1.1t); z16=(1.0t,2.875t); % help points
z17=(0.95t,0.3t); z18=(1.565t,1.0t); z19=(1.25t,1.35t); % help points
z20=(0.75t,0.8t); % Hilfspunkt
fill z2--z3 & flex(z3,z11,z4) & z4--z5 & flex(z5,z12,z6) 
   & flex(z6,z16,z7) & flex(z7,z14,z13) & flex(z13,z15,z2) & cycle;
fill flex(z1,z17,z8) & flex(z8,z18,z9) & flex(z9,z19,z10) 
   & flex(z10,z20,z1) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20);
endchar;

beginchar ("b", body_width#-0.6pt#*scale, body_height#, 0pt#); "Klingon letter b";
z1=(0.7t,0); z2=(2.9t,0); z3=(2.1t,1.7t); z4=(1.7t,0.675t); % corner points
z5=(0.45t,0.675t); z6=(1.02t,0.8t); z7=(1.65t,0.8t); % corner points
z8=(3.15t,3.3t); z9=(0.05t,3.6t); % corner points
z10=(0.65t,0.4t); z11=(2.35t,0.8t); z12=(1.85t,1.5t); % help points
z13=(1.6t,2.8t); z14=(1.15t,1.55t); z15=(0.15t,3.375t); % help points
fill z1--z2 & flex(z2,z11,z3) & z3--z4 & z4--z5 & flex(z5,z10,z1) & cycle;
fill z6--z7 & flex(z7,z12,z8) & flex(z8,z13,z9) & flex(z9,z15,z14,z6) & cycle;
penlabels (1,2,3,4,5,6,7,8,9);
endchar;

beginchar ("c", body_width#+0.4pt#*scale, body_height#, body_depth#); "Klingon letter c";
z1=(0,-0.6t); z2=(3.1t,-0.25t); z3=(3.025t,0.2t); % corner points
z4=(1.75t,2.3t); z5=(2.125t,2.475t); z6=(3.55t,-0.35t); % corner points
z7=(2.85t,3.35t); z8=(1.025t,3.625t); % corner points
z9=(1.45t,-0.05t); z10=(3.05t,0.14t); z11=(1.75t,1.3t); % help points
z12=(1.95t,2.4t); z13=(2.95t,2.6t); z14=(2.05t,3.0t); % help points
z15=(0.78t,1.35t); % help points
fill flex(z1,z9,z2) & flex(z2,z10,z3) & flex(z3,z11,z4) & flex(z4,z12,z5)
  & z5--z6 & flex(z6,z13,z7) & flex(z7,z14,z8) & flex(z8,z15,z1) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
endchar;

beginchar ("d", body_width#+0.3pt#*scale, body_height#, body_depth#); "Klingon letter d";
z1=(1.45t,-0.7t); z2=(3.5t,3.4t); z3=(0,3.4t); % corner points
z4=(0.25t,1.95t); z5=(1.3t,1.95t); % corner points
z6=(2.0t,1.4t); z7=(0.3t,2.83t); z8=(1.3t,0.5t); % help points
fill flex(z1,z6,z2) & z2--z3 & flex(z3,z7,z4) & z4--z5 & flex(z5,z8,z1) & cycle;
penlabels (1,2,3,4,5,6,7,8);
endchar;

beginchar ("e", body_width#-1.1pt#*scale, body_height#, 0pt#); "Klingon letter e";
z1=(0,0); z2=(2.9t,0); z3=(1.75t,3.6t); z4=(0.55t,1.6t); % corner points
z5=(2.25t,1.1t); z6=(1.2t,1.3t); z7=(1.55t,2.3t); % help points
z8=(0.85t,1.15t); % help points
fill z1--z2 & flex(z2,z5,z3) & flex(z3,z7,z6) & flex(z6,z8,z4) & z4--z1 & cycle;
penlabels (1,2,3,4,5,6,7);
endchar;

beginchar ("f", body_width#-0.55pt#*scale, body_height#, 0pt#); "Klingon letter f";
z1=(0,0); z2=(1.45t,0); z3=(1.05t,3.65t); z4=(1.675t,0); % corner points
z5=(3.15t,0); z6=(1.25t,3.2t); z7=(1.55t,0.7t); % corner points
z8=(0.75t,1.6t); z9=(2.65t,1.3t); z10=(1.325t,3.0t); % help points
z11=(1.25t,2.75t); z12=(1.85t,0.95t); z13=(1.65t,0.4t); % help points
fill z1--z2 & z2--z3 & flex(z3,z8,z1) & cycle;
fill z4--z5 & flex(z5,z9,z10,z6) & flex(z6,z11,z12,z7) & flex(z7,z13,z4) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13);
endchar;

beginchar ("g", body_width#-1.65pt#*scale, body_height#, 0pt#); "Klingon letter g";
z1=(0.525t,0); z2=(2.075t,0); z3=(2.65t,2.75t); z4=(2.65t,3.15t); %corner points
z5=(1.85t,3.6t); z6=(0.65t,1.7t); z7=(1.45t,3.3t); z8=(0,3.3t); %corner points
z9=(1.45t,1.75t); z10=(2.275t,3.25t); z11=(0.7t,1.35t); % help points
z12=(0.4t,2.8t); % help point
fill z1--z2 & flex(z2,z9,z3) & z3--z4 & flex(z4,z10,z5) & flex(z5,z11,z1) & cycle;
fill z6--z7 & z7--z8 & flex(z8,z12,z6) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12);
endchar;

beginchar ("h", body_width#-0.35pt#*scale, body_height#, body_depth#); "Klingon letter h";
z1=(1.1t,-0.6t); z2=(2.0t,2.45t); z3=(0.55t,1.75t); % corner points
z4=(0,1.7t); z5=(3.25t,3.35t); z6=(0.95t,3.35t); % corner points
z7=(1.45t,0.9t); z8=(2.55t,0.9t); z9=(0.8t,2.725t); % help points
fill flex(z1,z8,z2) & z2--z3 & flex(z3,z7,z1) & cycle;
fill z4--z5 & z5--z6 & flex(z6,z9,z4) & cycle;
penlabels (1,2,3,4,5,6,7,8,9);
endchar;

beginchar ("i", body_width#-0.85pt#*scale, body_height#, body_depth#); "Klingon letter i";
z1=(1.1t,-0.6t); z2=(2.3t,0); z3=(3.0t,1.4t); % corner points
z4=(1.675t,1.4t); z5=(0.725t,0); z6=(1.15t,0); % corner points
z7=(1.2t,3.6t); z8=(0t,1.0t); % corner points
z9=(1.7t,-0.15t); z10=(2.5t,0.85t); z11=(1.55t,0.65t); % help points
z12=(1.55t,1.65t); z13=(0.65t,1.825t); z14=(0.4t,0.7t); % help points
fill flex(z1,z9,z2) & flex(z2,z10,z3) & z3--z4 & flex(z4,z11,z1) & cycle;
fill z5--z6 & flex(z6,z12,z7) & flex(z7,z13,z8) & flex(z8,z14,z5) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14);
endchar;

beginchar ("j", body_width#-0.2pt#*scale, body_height#, 0pt#); "Klingon letter j";
z1=(0.55t,0); z2=(2.25t,0); z3=(2.65t,0.8t); z4=(1.67t, 0.8t); % corner points
z5=(0,3.6t); z6=(1.75t,1.0t); z7=(3.3t,3.6t); z8=(0.35t,3.4t); % corner points
z9=(2.35t,0.4t); z10=(0.05t,2.95t); z11=(0.55t,1.1t); % help points
z12=(2.25t,2.4t); z13=(1.75t,3.3t); % help points
fill z1--z2 & flex(z2,z9,z3) & z3--z4 & z4--z5 & flex(z5,z10,z11,z1) & cycle;
fill flex(z6,z12,z7) & flex(z7,z13,z8) & z8--z6 & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13);
endchar;

beginchar ("k", body_width#-0.6pt#*scale, body_height#, body_depth#); "Klingon letter k";
z1=(1.6t,-0.7t); z2=(2.1t,2.075t); z3=(1.45t,2.6t); z4=(0.95t,2.2t); % corner points
z5=(2.2t,2.2t); z6=(3.1t,2.95t); z7=(2.65t,3.4t); z8=(0,3.3t); % corner points
z9=(1.8t,0.85t); z10=(1.85t,2.3t); z11=(1.35t,2.425t); % help points
z12=(1.275t,1.2t); z13=(2.5t,2.55t); z14=(2.75t,3.3t); % help points
z15=(1.4t,3.25t); z16=(1.3t,2.8t); % help points
fill flex(z1,z9,z2) & flex(z2,z10,z3) & flex(z3,z11,z4) & flex(z4,z12,z1) & cycle;
fill flex(z5,z13,z6) & flex(z6,z14,z7) & flex(z7,z15,z8) & flex(z8,z16,z5) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16);
endchar;

beginchar ("l", body_width#-1.6pt#*scale, body_height#, 0pt#); "Klingon letter l";
z1=(0.6t,0); z2=(1.525t,0); z3=(0,1.85t); z4=(1.7t,0); % corner points
z5=(2.7t,0); z6=(1.85t,3.35t); z7=(0.85t,3.6t); % corner points
z8=(0.65t,2.3t); z9=(0.95t,0.8t); z13=(1.55t,2.35t); % corner points
z10=(0.55t,1.0t); z11=(1.45t,3.35t); z12=(0.75t,2.9t); % help points
z14=(1.1t,2.65t); z15=(1.55t,1.3t); z16=(1.4t,0.25t); % help points
fill z1--z2 & flex(z2,z10,z3) & z3--z1 & cycle; 
fill z4--z5 & z5--z6 & flex(z6,z11,z7) & flex(z7,z12,z8) & flex(z8,z14,z13)
  & flex(z13,z15,z9) & flex(z9,z16,z4) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16);
endchar;

beginchar ("m", body_width#, body_height#, body_depth#); "Klingon letter m";
z1=(1.225t,0.3t); z2=(1.6t,2.45t); z3=(0.55t,2.45t); % corner points
z4=(1.95t,-0.7t); z5=(3.35t,3.4t); z6=(0t,3.4t); % corner points
z7=(0.45t,2.6t); z8=(1.7t,2.6t); z9=(1.6t,0.5t); % corner points
z10=(1.35t,1.7t); z11=(0.15t,3.2t); z12=(1.85t,1.7t); % help points
fill flex(z1,z10,z2) & z2--z3 & z3--z1 & cycle;
fill z4--z5 & z5--z6 & flex(z6,z11,z7) & z7--z8 & flex(z8,z12,z9) 
  & z9--z4 & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12);
endchar;

beginchar ("n", body_width#+0.9pt#*scale, body_height#+0.4pt#*scale, body_depth#); "Klingon letter n";
turningcheck:=0;
z1=(0.225t,-0.7t); z2=(2.45t,-0.35t); z3=(0.55t,0.5t); % corner points
z4=(0,0.85t); z5=(3.85t,-0.7t); z6=(2.85t,3.2t); % corner points
z7=(1.75t,3.65t); % corner points
z8=(1.85t,0.05t); z9=(0.5t,-0.15t); z10=(2.05t,1.7t); % help points
z11=(2.35t,3.35t); z12=(1.2t,2.6t); z13=(1.7t,0.3t); % help points
fill z1--z2 & flex(z2,z8,z3) & flex(z3,z9,z1) & cycle; 
fill flex(z4,z13,z5) & flex(z5,z10,z6) & flex(z6,z11,z7) 
   & flex(z7,z12,z4) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13);
endchar;

beginchar ("o", body_width#-0.55pt#*scale, body_height#, body_depth#); "Klingon letter o";
z1=(2.45t,-0.7t); z2=(2.0t,2.1t); z3=(3.15t,3.35t); % corner points
z4=(0.55t,3.35t); z5=(0,2.55t); z6=(1.45t,2.55t); % corner points
z7=(0.1t,1.55t); % corner points
z8=(2.5t,0.8t); z9=(2.35t,2.4t); z10=(2.7t,3.1t); % help points
z11=(0.45t,2.95t); z12=(0.95t,1.9t); z13=(1.35t,1.1t); % help points
z14=(0.8t,1.35t); z15=(2.1t,0.2t); % help points
fill flex(z1,z8,z2) & flex(z2,z9,z10,z3) & z3--z4 & flex(z4,z11,z5)
  & z5--z6 & flex(z6,z12,z7) & flex(z7,z14,z13) & flex(z13,z15,z1) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
endchar;

beginchar ("p", body_width#-0.3pt#*scale, body_height#, body_depth#); "Klingon letter p";
z1=(2.25t,-0.7t); z2=(1.85t,3.4t); z3=(0.55t,3.65t); % corner points
z4=(0t,2.75t); z5=(2.2t,1.1t); z6=(3.25t,3.4t); % corner points
z7=(2.0t,3.4t); % corner points
z8=(1.15t,3.45t); z9=(0.35t,3.1t); z10=(1.85t,0.4t); % help points
z11=(2.45t,2.1t); % help points
fill z1--z2 & flex(z2,z8,z3) & flex(z3,z9,z4) & flex(z4,z10,z1) & cycle;
fill flex(z5,z11,z6) & z6--z7 & z7--z5 & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11);
endchar;

beginchar ("q", body_width#-1.2pt#*scale, body_height#, body_depth#); "Klingon letter q";
z1=(0.8t,-0.3t); z2=(1.4t,-0.2t); z3=(1.65t,1.05t); % corner points
z4=(2.85t,3.4t); z5=(0,3.4t); z6=(1.55t,-0.3t); % corner points
z7=(2.65t,0.2t); z8=(1.95t,1.9t); % corner points
z9=(1.55t,0.5t); z10=(1.55t,2.3t); z11=(2.25t,0.15t); % help points
z12=(2.25t,0.7t); z13=(1.75t,0.7t); % help points
fill z1--z2 & flex(z2,z9,z3) & flex(z3,z10,z4) & z4--z5 & z5--z1 & cycle;
fill flex(z6,z11,z7) & flex(z7,z12,z8) & flex(z8,z13,z6) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13);
endchar;

beginchar ("r", body_width#-1.9pt#*scale, body_height#, body_depth#); "Klingon letter r";
z1=(0.45t,0.15t); z2=(1.05t,-0.4t); z3=(2.55t,2.5t); % corner points
z4=(2.45t,3.4t); z5=(0,3.65t); z6=(1.25t,0); % corner points
z7=(2.35t,0); z8=(1.65t,1.7t); % corner points
z9=(0.75t,0); z10=(1.75t,2.35t); z11=(2.5t,2.85t); % help points
z12=(1.2t,3.2t); z13=(0.4t,2.1t); z14=(2t,0.6t); % help points
z15=(1.4t,0.75t); % help points
fill flex(z1,z9,z2) & flex(z2,z10,z3) & flex(z3,z11,z4) & flex(z4,z12,z5)
  & flex(z5,z13,z1) & cycle;
fill z6--z7 & flex(z7,z14,z8) & flex(z8,z15,z6) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
endchar;

beginchar ("s", body_width#+1.1pt#*scale, body_height#, body_depth#); "Klingon letter s";
z1=(0.95t,-0.7t); z2=(3.65t,3.4t); z3=(0,3.4t); % corner points
z4=(0.55t,1.9t); z5=(1.75t,1.9t); z6=(1.85t,0); % corner points
z7=(3.85t,0); z8=(3.6t,1.0t); z9=(3.2t,2.0t); % corner points
z10=(2.65t,1.35t); z11=(1.6t,0.8t); z12=(3.65t,0.3t); % help points
z13=(3.05t,0.6t); z14=(2.7t,1.1t); z15=(3.25t,0.6t); % help points
z16=(3.0t,0.9t); z17=(3.18t,1.75t); % help points
fill flex(z1,z10,z2) & z2--z3 & z3--z4 & z4--z5 & flex(z5,z11,z1) & cycle;
fill z6--z7 & flex(z7,z12,z8) & flex(z8,z15,z13) & flex(z13,z16,z17,z9) & flex(z9,z14,z6) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17);
endchar;

beginchar ("t", body_width#-1.5pt#*scale, body_height#, body_depth#); "Klingon letter t";
turningcheck:=0;
z1=(0,0); z2=(1.95t,0); z3=(1.1t,1.825t); % corner points
z4=(2.45t,-0.7t); z5=(2.75t,2.45t); z6=(2.2t,3.4t); % corner points
z7=(0.3t,3.4t); z8=(0t,2.6t); % corner points
z9=(1.5t,1.1t); z10=(0.75t,0.65t); z11=(2.25t,1.45t); % help points
z12=(2.25t,3.1t); z13=(0.25t,3.05t); z14=(1.15t,2.0t); % help points
z15=(0.7t,2.45t); z16=(1.65t,1.15t); % help points
fill z1--z2 & flex(z2,z9,z3) & flex(z3,z10,z1) & cycle;
fill flex(z4,z11,z5) & flex(z5,z12,z6) & z6--z7 & flex(z7,z13,z8) 
  & flex(z8,z15,z14) & flex(z14,z16,z4) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16);
endchar;

beginchar ("u", body_width#-1.65pt#*scale, body_height#, body_depth#); "Klingon letter u";
z1=(0.15t,0.3t); z2=(2.05t,-0.5t); z3=(2.45t,3.4t); % corner points
z4=(1.0t,3.65t); z5=(0,1.05t); z6=(2.05t,-0.35t); % corner points
z7=(2.65t,0.85t); z8=(2.4t,1.3t); z9=(1.3t,1.4t); % corner points
z10=(1.1t,1.4t); z11=(1.45t,3.45t); z12=(0.65t,2.0t); % help points
z13=(2.15t,0.4t); z14=(1.45t,0.5t); % help points
fill z1--z2 & flex(z2,z10,z3) & flex(z3,z11,z4) & flex(z4,z12,z5) 
  & z5--z1 & cycle;
fill flex(z6,z13,z7) & z7--z8 & z8--z9 & flex(z9,z14,z6) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14);
endchar;

beginchar ("v", body_width#-0.2pt#*scale, body_height#, 0pt#); "Klingon letter v";
z1=(0,0); z2=(1.6t,0); z3=(1.25t,2.4t); z4=(1.75t,0); % corner points
z5=(2.85t,0); z6=(3.3t,1.5t); z7=(1.2t,3.65t); % corner points
z8=(1.55t,1.45t); % corner points
z9=(0.7t,0.9t); z10=(2.95t,0.6t); z11=(1.25t,3.1t); % help points
z12=(1.95t,1.7t); % help points
fill z1--z2 & z2--z3 & flex(z3,z9,z1) & cycle;
fill z4--z5 & flex(z5,z10,z6) & z6--z7 & flex(z7,z11,z12,z8) & z8--z4 & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12);
endchar;

beginchar ("w", body_width#-0.2pt#*scale, body_height#, body_depth#); "Klingon letter w";
z1=(1.65t,-0.7t); z2=(2.95t,1.9t); z3=(3.3t,3.4t); % corner points
z4=(0,3.4t); z5=(1.8t,-0.1t); z6=(3.2t,1.2t); % corner points
z7=(2.05t,1.5t); % corner points
z8=(2.0t,1.9t); z9=(3.05t,2.65t); z10=(0.95t,1.55t); % help points
z11=(2.5t,0.75t); z12=(2.65t,1.3t); z13=(2.0t,1.3t); % help points
z14=(1.85t,1.6t); z15=(2.5t,2.1t); % help points
fill flex(z1,z14,z8) & flex(z8,z15,z2) & flex(z2,z9,z3) & z3--z4 
  & flex(z4,z10,z1) & cycle;
fill flex(z5,z11,z6) & flex(z6,z12,z7) & flex(z7,z13,z5) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
endchar;

beginchar ("x", body_width#-1.1pt#*scale, body_height#, body_depth#); "Klingon letter x";
z1=(1.25t,-0.7t); z2=(2.9t,2.5t); z3=(2.1t,3.6t); % corner points
z4=(0,3.3t); z5=(0.25t,2.35t); z6=(1.35t,0.15t); % corner points
z7=(2.6t,0.15t); z8=(2.05t,1.7t); % corner points
z9=(1.45t,1.2t); z10=(2.35t,3.1t); z11=(1.0t,3.2t); % help points
z12=(0.75t,1.9t); z13=(0.7t,-0.1t); z14=(2.15t,0.75t); % help points
z15=(1.55t,0.9t); % help points
fill flex(z1,z9,z2) & flex(z2,z10,z3) & flex(z3,z11,z4) & z4--z5 
  & flex(z5,z12,z13,z1) & cycle;
fill z6--z7 & flex(z7,z14,z8) & flex(z8,z15,z6) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
endchar;

beginchar ("y", body_width#-0.9pt#*scale, body_height#, 0pt#); "Klingon letter y";
z1=(0.5t,0); z2=(2.45t,0); z3=(2.95t,1.2t); z4=(0.45t,1.2t); % corner points
z5=(1.55t,2.45t); z6=(3.0t,1.4t); z14=(3.0t,1.45t); % corner points
z7=(2.25t,3.3t); z8=(1.05t,3.65t); z9=(0,1.3t); % corner points
z10=(1.05t,2.1t); z11=(2.15t,1.8t); z12=(2.35t,2.3t); % help points
z13=(1.45t,3.4t); % help points
fill z1--z2 & z2--z3 & z3--z4 & flex(z4,z10,z5) & flex(z5,z11,z6) 
  & z6--z14 & flex(z14,z12,z7) & flex(z7,z13,z8) & z8--z9 & z9--z1 & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13);
endchar;

beginchar ("z", body_width#-1pt#*scale, body_height#, 0pt#); "Klingon letter z";
z1=(0.55t,0); z2=(2.6t,0); z3=(2.95t,1.05t); z4=(1.25t,1.4t); % corner points
z5=(1.35t,3.6t); z6=(0,1.0t); z7=(1.4t,1.6t); % corner points
z8=(2.55t,2.8t); z9=(1.5t,3.1t); % corner points
z10=(2.65t,0.5t); z11=(1.75t,1.1t); z12=(0.35t,0.65t); % help points
z13=(1.95t,2.4t); z14=(2.0t,2.9t); % help points
fill z1--z2 & flex(z2,z10,z3) & flex(z3,z11,z4) & z4--z5 & z5--z6 
  & flex(z6,z12,z1) & cycle;
fill flex(z7,z13,z8) & flex(z8,z14,z9) & z9--z7 & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14);
endchar;

beginchar ("0", body_widthu#-0.95pt#*scaleu, body_heightu#-1.4pt#*scaleu, body_depthu#); "Klingon number 0";
z1=(1.35tu,-0.7tu); z2=(1.45tu,1.35tu); z3=(2.55tu,2.0tu); % corner points
z4=(2.95tu,2.7tu); z5=(0,2.7tu); z6=(1.5tu,0.05tu); % corner points
z7=(1.6tu,1.55tu); % corner points
z8=(1.8tu,2.1tu); z9=(2.65tu,2.4tu); z10=(0.8tu,1.1tu); % help points
z11=(2.15tu,1.3tu); % help points
fill z1--z2 & flex(z2,z8,z3) & flex(z3,z9,z4) & z4--z5 
  & flex(z5,z10,z1) & cycle;
fill flex(z6,z11,z7) & z7--z6 & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11);
endchar;

beginchar ("1", body_widthu#-1.45pt#*scaleu, body_heightu#-1.6pt#*scaleu, body_depthu#); "Klingon number 1";
z1=(1.25tu,-0.7tu); z2=(2.45tu,2.0tu); z3=(2.75tu,2.8tu); z4=(0,2.8tu); % corner points
z5=(1.35tu,1.55tu); z6=(1.3tu,0.6tu); z7=(1.7tu,2.2tu); % help points
z8=(2.5tu,2.3tu); z9=(0.75tu,1.1tu); % help points
fill flex(z1,z6,z5) & flex(z5,z7,z2) & flex(z2,z8,z3) & z3--z4 
  & flex(z4,z9,z1) & cycle;
penlabels (1,2,3,4,5,6,7,8,9);
endchar;

beginchar ("2", body_widthu#-2.15pt#*scaleu, body_heightu#-1.6pt#*scaleu, body_depthu#); "Klingon number 2";
z1=(1.75tu,-0.7tu); z2=(2.45tu,2.8tu); z3=(0,2.8tu); % corner points
z4=(2.2tu,0.5tu); z5=(1.5tu,1.65tu); % help points
fill flex(z1,z4,z2) & z2--z3 & flex(z3,z5,z1) & cycle;
penlabels (1,2,3,4,5);
endchar;

beginchar ("3", body_widthu#-1.7pt#*scaleu, body_heightu#, 0pt#); "Klingon number 3";
z1=(0,0); z2=(2.65tu,0); z3=(2.25tu,3.65tu); z4=(1.25tu,0.625tu); % corner points
z5=(0.4tu,0.625tu); z6=(1.25tu,1.25tu); z7=(1.65tu,2.8tu); % corner points
z8=(0.15tu,2.8tu); % corner points
z9=(2.05tu,1.25tu); z10=(1.6tu,2.3tu); z11=(0.35tu,0.4tu); % help points
z12=(1.3tu,1.6tu); z13=(0.95tu,2.2tu); % help points
fill z1--z2 & flex(z2,z9,z3) & flex(z3,z10,z4) & z4--z5 
  & flex(z5,z11,z1) & cycle;
fill flex(z6,z12,z7) & z7--z8 & flex(z8,z13,z6) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13);
endchar;

beginchar ("4", body_widthu#-1.3pt#*scaleu, body_heightu#-1.3pt#*scaleu, 0pt#); "Klingon number 4";
turningcheck:=0;
z1=(0.3tu,0); z2=(2.8tu,0); z3=(0.25tu,3.0tu); z4=(0.5tu,1.3tu); % corner points
z5=(0,1.0tu); z6=(1.45tu,1.65tu); z7=(2.35tu,2.8tu); % corner points
z8=(0.55tu,2.8tu); % corner points
z9=(1.4tu,1.4tu); z10=(0.25tu,2.15tu); z11=(0.45tu,0.95tu); % help points
z12=(0.25tu,0.55tu); z13=(1.65tu,2.2tu); z14=(1.2tu,1.9tu); % help points
fill z1--z2 & flex(z2,z9,z3) & flex(z3,z10,z4) & flex(z4,z11,z5)
  & flex(z5,z12,z1) & cycle;
fill flex(z6,z13,z7) & z7--z8 & flex(z8,z14,z6) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14);
endchar;

beginchar ("5", body_widthu#-1.8pt#*scaleu, body_heightu#-1.6pt#*scaleu, body_depthu#); "Klingon number 5";
z1=(0.6tu,-0.5tu); z2=(2.05tu,2.8tu); z3=(1.05tu,2.8tu); % corner points
z4=(1.65tu,2.1tu); z5=(1.5tu,1.5tu); z6=(0.75tu,2.2tu); % corner points
z7=(0.95tu,2.8tu); z8=(0.25tu,2.8tu); z9=(0.5tu,-0.5tu); % corner points
z10=(2.5tu,1.45tu); z11=(1.65tu,1.8tu); z12=(0.9tu,2.6tu); % help points
z13=(0,1.95tu); z14=(1.0tu,0.7tu); % help points
fill flex(z1,z10,z2) & z2--z3 & z3--z4 & flex(z4,z11,z5) & z5--z6 
  & flex(z6,z12,z7) & z7--z8 & flex(z8,z13,z14,z9) & z9--z1 & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14);
endchar;

beginchar ("6", body_widthu#-1.3pt#*scaleu, body_heightu#-1.2pt#*scaleu, 0pt#); "Klingon number 6";
turningcheck:=0;
z1=(0.95tu,0); z2=(1.95tu,0); z3=(2.8tu,0.6tu); z4=(2.5tu,2.8tu); % corner points
z5=(1.8tu,3.1tu); z6=(0,0.9tu); z7=(0.95tu,1.95tu); % corner points
z8=(1.5tu,2.8tu); z9=(0.4tu,2.8tu); z10=(1.55tu,1.1tu); % corner points
z11=(1.95tu,0.5tu); z12=(1.75tu,2.1tu); z13=(2.05tu,2.9tu); % help points
z14=(0.95tu,1.8tu); z15=(0.45tu,0.6tu); z16=(1.25tu,2.35tu); % help points
z17=(0.75tu,2.55tu); z18=(1.35tu,2.3tu); z19=(0.55tu,1.35tu); % help points
fill z1--z2 & z2--z3 & flex(z3,z11,z10) & flex(z10,z12,z4) & flex(z4,z13,z5)
  & flex(z5,z18,z14) & flex(z14,z19,z6) & flex(z6,z15,z1) & cycle;
fill flex(z7,z16,z8) & z8--z9 & flex(z9,z17,z7) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19);
endchar;

beginchar ("7", body_widthu#-1.5pt#*scaleu, body_heightu#-1.6pt#*scaleu, 0pt#); "Klingon number 7";
z1=(0.55tu,0); z2=(2.75tu,0); z3=(2.3tu,0.95tu); z4=(2.1tu,2.05tu); % corner points
z5=(2.05tu,2.8tu); z6=(1.15tu,2.8tu); z7=(0,0.7tu); % corner points 
z8=(2.45tu,0.4tu); z9=(1.25tu,1.35tu); z10=(1.7tu,0.85tu); % help points
z11=(1.45tu,2.15tu); z12=(2.05tu,2.35tu); z13=(0.65tu,1.8tu); % help points
z14=(0.35tu,0.4tu); % help points
fill z1--z2 & flex(z2,z8,z3) & flex(z3,z10,z9) & flex(z9,z11,z4) 
  & flex(z4,z12,z5) & z5--z6 & flex(z6,z13,z7) & flex(z7,z14,z1) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14);
endchar;

beginchar ("8", body_widthu#-2.15pt#*scaleu, body_heightu#-1.3pt#*scaleu, body_depthu#); "Klingon number 8";
z1=(1.45tu,-0.7tu); z2=(2.45tu,0.4tu); z3=(2.25tu,3.05tu); % corner points
z4=(0,3.15tu); z5=(1.6tu,1.45tu); % corner points
z6=(1.3tu,0.45tu); z7=(2.15tu,1.85tu); z8=(1.45tu,2.85tu); % help points
z9=(1.3tu,2.4tu); z10=(0.55tu,0.4tu); % help points
fill flex(z1,z6,z2) & flex(z2,z7,z3) & flex(z3,z8,z4) & flex(z4,z9,z5) 
  & flex(z5,z10,z1) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10);
endchar;

beginchar ("9", body_widthu#-1.4pt#*scaleu, body_heightu#-1.6pt#*scaleu, body_depthu#); "Klingon number 9";
z1=(0.75tu,-0.7tu); z2=(1.2tu,2.8tu); z3=(0,2.8tu); % corner points
z4=(1.65tu,0.1tu); z5=(2.75tu,0.8tu); z6=(2.15tu,0.8tu); % corner points
z7=(2.75tu,2.8tu); z8=(1.375tu,2.8tu); z9=(1.55tu,2.3tu); % corner points
z10=(1.45tu,0.75tu); z11=(0.9tu,0.75tu); z12=(2.2tu,0.5tu); % help points
z13=(2.55tu,1.5tu); z14=(1.85tu,1.7tu); % help points
fill flex(z1,z10,z2) & z2--z3 & flex(z3,z11,z1) & cycle;
fill flex(z4,z12,z5) & z5--z6 & flex(z6,z13,z7) & z7--z8 & z8--z9 
  & flex(z9,z14,z4) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14);
endchar;

beginchar ("A", body_widthu#-0.3pt#*scaleu, body_heightu#, 0pt#); "Klingon letter A";
z1=(0,0); z2=(0.55tu,0); z3=(3.25tu,0); z4=(2.35tu,3.5tu); % corner points
z5=(2.1tu,3.625tu); z6=(0.6tu,3.4tu); z7=(1.1tu,2.3tu); % corner points
z8=(1.625tu,0.7tu); z9=(1.55tu,1.3tu); z10=(0.95tu,1.5tu); % corner points
z11=(2.5tu,1.9tu); z12=(1.35tu,3.3tu); z13=(1.85tu,2.7tu); % help points
z14=(1.45tu,2.75tu); z15=(2.05tu,1.1tu); z16=(1.0tu,2.875tu); % help points
z17=(0.95tu,0.3tu); z18=(1.565tu,1.0tu); z19=(1.25tu,1.35tu); % help points
z20=(0.75tu,0.8tu); % Hilfspunkt
fill z2--z3 & flex(z3,z11,z4) & z4--z5 & flex(z5,z12,z6) 
   & flex(z6,z16,z7) & flex(z7,z14,z13) & flex(z13,z15,z2) & cycle;
fill flex(z1,z17,z8) & flex(z8,z18,z9) & flex(z9,z19,z10) 
   & flex(z10,z20,z1) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20);
endchar;

beginchar ("B", body_widthu#-0.6pt#*scaleu, body_heightu#, 0pt#); "Klingon letter B";
z1=(0.7tu,0); z2=(2.9tu,0); z3=(2.1tu,1.7tu); z4=(1.7tu,0.675tu); % corner points
z5=(0.45tu,0.675tu); z6=(1.02tu,0.8tu); z7=(1.65tu,0.8tu); % corner points
z8=(3.15tu,3.3tu); z9=(0.05tu,3.6tu); % corner points
z10=(0.65tu,0.4tu); z11=(2.35tu,0.8tu); z12=(1.85tu,1.5tu); % help points
z13=(1.6tu,2.8tu); z14=(1.15tu,1.55tu); z15=(0.15tu,3.375tu); % help points
fill z1--z2 & flex(z2,z11,z3) & z3--z4 & z4--z5 & flex(z5,z10,z1) & cycle;
fill z6--z7 & flex(z7,z12,z8) & flex(z8,z13,z9) & flex(z9,z15,z14,z6) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
endchar;

beginchar ("C", body_widthu#+0.4pt#*scaleu, body_heightu#, body_depthu#); "Klingon letter C";
z1=(0,-0.6tu); z2=(3.1tu,-0.25tu); z3=(3.025tu,0.2tu); % corner points
z4=(1.75tu,2.3tu); z5=(2.125tu,2.475tu); z6=(3.55tu,-0.35tu); % corner points
z7=(2.85tu,3.35tu); z8=(1.025tu,3.625tu); % corner points
z9=(1.45tu,-0.05tu); z10=(3.05tu,0.14tu); z11=(1.75tu,1.3tu); % help points
z12=(1.95tu,2.4tu); z13=(2.95tu,2.6tu); z14=(2.05tu,3.0tu); % help points
z15=(0.78tu,1.35tu); % help points
fill flex(z1,z9,z2) & flex(z2,z10,z3) & flex(z3,z11,z4) & flex(z4,z12,z5)
  & z5--z6 & flex(z6,z13,z7) & flex(z7,z14,z8) & flex(z8,z15,z1) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
endchar;

beginchar ("D", body_widthu#+0.3pt#*scaleu, body_heightu#, body_depthu#); "Klingon letter D";
z1=(1.45tu,-0.7tu); z2=(3.5tu,3.4tu); z3=(0,3.4tu); % corner points
z4=(0.25tu,1.95tu); z5=(1.3tu,1.95tu); % corner points
z6=(2.0tu,1.4tu); z7=(0.3tu,2.83tu); z8=(1.3tu,0.5tu); % help points
fill flex(z1,z6,z2) & z2--z3 & flex(z3,z7,z4) & z4--z5 & flex(z5,z8,z1) & cycle;
penlabels (1,2,3,4,5,6,7,8);
endchar;

beginchar ("E", body_widthu#-1.1pt#*scaleu, body_heightu#, 0pt#); "Klingon letter E";
z1=(0,0); z2=(2.9tu,0); z3=(1.75tu,3.6tu); z4=(0.55tu,1.6tu); % corner points
z5=(2.25tu,1.1tu); z6=(1.2tu,1.3tu); z7=(1.55tu,2.3tu); % help points
z8=(0.85tu,1.15tu); % help points
fill z1--z2 & flex(z2,z5,z3) & flex(z3,z7,z6) & flex(z6,z8,z4) & z4--z1 & cycle;
penlabels (1,2,3,4,5,6,7,8);
endchar;

beginchar ("F", body_widthu#-0.55pt#*scaleu, body_heightu#, 0pt#); "Klingon letter F";
z1=(0,0); z2=(1.45tu,0); z3=(1.05tu,3.65tu); z4=(1.675tu,0); % corner points
z5=(3.15tu,0); z6=(1.25tu,3.2tu); z7=(1.55tu,0.7tu); % corner points
z8=(0.75tu,1.6tu); z9=(2.65tu,1.3tu); z10=(1.325tu,3.0tu); % help points
z11=(1.25tu,2.75tu); z12=(1.85tu,0.95tu); z13=(1.65tu,0.4tu); % help points
fill z1--z2 & z2--z3 & flex(z3,z8,z1) & cycle;
fill z4--z5 & flex(z5,z9,z10,z6) & flex(z6,z11,z12,z7) & flex(z7,z13,z4) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13);
endchar;

beginchar ("G", body_widthu#-1.65pt#*scaleu, body_heightu#, 0pt#); "Klingon letter G";
z1=(0.525tu,0); z2=(2.075tu,0); z3=(2.65tu,2.75tu); z4=(2.65tu,3.15tu); %corner points
z5=(1.85tu,3.6tu); z6=(0.65tu,1.7tu); z7=(1.45tu,3.3tu); z8=(0,3.3tu); %corner points
z9=(1.45tu,1.75tu); z10=(2.275tu,3.25tu); z11=(0.7tu,1.35tu); % help points
z12=(0.4tu,2.8tu);
fill z1--z2 & flex(z2,z9,z3) & z3--z4 & flex(z4,z10,z5) & flex(z5,z11,z1) & cycle;
fill z6--z7 & z7--z8 & flex(z8,z12,z6) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12);
endchar;

beginchar ("H", body_widthu#-0.35pt#*scaleu, body_heightu#, body_depthu#); "Klingon letter H";
z1=(1.1tu,-0.6tu); z2=(2.0tu,2.45tu); z3=(0.55tu,1.75tu); % corner points
z4=(0,1.7tu); z5=(3.25tu,3.35tu); z6=(0.95tu,3.35tu); % corner points
z7=(1.45tu,0.9tu); z8=(2.55tu,0.9tu); z9=(0.8tu,2.725tu); % help points
fill flex(z1,z8,z2) & z2--z3 & flex(z3,z7,z1) & cycle;
fill z4--z5 & z5--z6 & flex(z6,z9,z4) & cycle;
penlabels (1,2,3,4,5,6,7,8,9);
endchar;

beginchar ("I", body_widthu#-0.85pt#*scaleu, body_heightu#, body_depthu#); "Klingon letter I";
z1=(1.1tu,-0.6tu); z2=(2.3tu,0); z3=(3.0tu,1.4tu); % corner points
z4=(1.675tu,1.4tu); z5=(0.725tu,0); z6=(1.15tu,0); % corner points
z7=(1.2tu,3.6tu); z8=(0tu,1.0tu); % corner points
z9=(1.7tu,-0.15tu); z10=(2.5tu,0.85tu); z11=(1.55tu,0.65tu); % help points
z12=(1.55tu,1.65tu); z13=(0.65tu,1.825tu); z14=(0.4tu,0.7tu); % help points
fill flex(z1,z9,z2) & flex(z2,z10,z3) & z3--z4 & flex(z4,z11,z1) & cycle;
fill z5--z6 & flex(z6,z12,z7) & flex(z7,z13,z8) & flex(z8,z14,z5) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14);
endchar;

beginchar ("J", body_widthu#-0.2pt#*scaleu, body_heightu#, 0pt#); "Klingon letter J";
z1=(0.55tu,0); z2=(2.25tu,0); z3=(2.65tu,0.8tu); z4=(1.67tu, 0.8tu); % corner points
z5=(0,3.6tu); z6=(1.75tu,1.0tu); z7=(3.3tu,3.6tu); z8=(0.35tu,3.4tu); % corner points
z9=(2.35tu,0.4tu); z10=(0.05tu,2.95tu); z11=(0.55tu,1.1tu); % help points
z12=(2.25tu,2.4tu); z13=(1.75tu,3.3tu); % help points
fill z1--z2 & flex(z2,z9,z3) & z3--z4 & z4--z5 & flex(z5,z10,z11,z1) & cycle;
fill flex(z6,z12,z7) & flex(z7,z13,z8) & z8--z6 & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13);
endchar;

beginchar ("K", body_widthu#-0.6pt#*scaleu, body_heightu#, body_depthu#); "Klingon letter K";
z1=(1.6tu,-0.7tu); z2=(2.1tu,2.075tu); z3=(1.45tu,2.6tu); z4=(0.95tu,2.2tu); % corner points
z5=(2.2tu,2.2tu); z6=(3.1tu,2.95tu); z7=(2.65tu,3.4tu); z8=(0,3.3tu); % corner points
z9=(1.8tu,0.85tu); z10=(1.85tu,2.3tu); z11=(1.35tu,2.425tu); % help points
z12=(1.275tu,1.2tu); z13=(2.5tu,2.55tu); z14=(2.75tu,3.3tu); % help points
z15=(1.4tu,3.25tu); z16=(1.3tu,2.8tu); % help points
fill flex(z1,z9,z2) & flex(z2,z10,z3) & flex(z3,z11,z4) & flex(z4,z12,z1) & cycle;
fill flex(z5,z13,z6) & flex(z6,z14,z7) & flex(z7,z15,z8) & flex(z8,z16,z5) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16);
endchar;

beginchar ("L", body_widthu#-1.6pt#*scaleu, body_heightu#, 0pt#); "Klingon letter L";
z1=(0.6tu,0); z2=(1.525tu,0); z3=(0,1.85tu); z4=(1.7tu,0); % corner points
z5=(2.7tu,0); z6=(1.85tu,3.35tu); z7=(0.85tu,3.6tu); % corner points
z8=(0.65tu,2.3tu); z9=(0.95tu,0.8tu); z13=(1.55tu,2.35tu); % corner points
z10=(0.55tu,1.0tu); z11=(1.45tu,3.35tu); z12=(0.75tu,2.9tu); % help points
z14=(1.1tu,2.65tu); z15=(1.55tu,1.3tu); z16=(1.4tu,0.25tu); % help points
fill z1--z2 & flex(z2,z10,z3) & z3--z1 & cycle; 
fill z4--z5 & z5--z6 & flex(z6,z11,z7) & flex(z7,z12,z8) & flex(z8,z14,z13)
  & flex(z13,z15,z9) & flex(z9,z16,z4) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16);
endchar;

beginchar ("M", body_widthu#, body_heightu#, body_depthu#); "Klingon letter M";
z1=(1.225tu,0.3tu); z2=(1.6tu,2.45tu); z3=(0.55tu,2.45tu); % corner points
z4=(1.95tu,-0.7tu); z5=(3.35tu,3.4tu); z6=(0tu,3.4tu); % corner points
z7=(0.45tu,2.6tu); z8=(1.7tu,2.6tu); z9=(1.6tu,0.5tu); % corner points
z10=(1.35tu,1.7tu); z11=(0.15tu,3.2tu); z12=(1.85tu,1.7tu); % help points
fill flex(z1,z10,z2) & z2--z3 & z3--z1 & cycle;
fill z4--z5 & z5--z6 & flex(z6,z11,z7) & z7--z8 & flex(z8,z12,z9) 
  & z9--z4 & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12);
endchar;

beginchar ("N", body_widthu#+0.9pt#*scaleu, body_heightu#+0.4pt#*scaleu, body_depthu#); "Klingon letter N";
z1=(0.225tu,-0.7tu); z2=(2.45tu,-0.35tu); z3=(0.55tu,0.5tu); % corner points
z4=(0,0.85tu); z5=(3.85tu,-0.7tu); z6=(2.85tu,3.2tu); % corner points
z7=(1.75tu,3.65tu); % corner points
z8=(1.85tu,0.05tu); z9=(0.5tu,-0.15tu); z10=(2.05tu,1.7tu); % help points
z11=(2.35tu,3.35tu); z12=(1.2tu,2.6tu); z13=(1.7tu,0.3tu); % help points
fill z1--z2 & flex(z2,z8,z3) & flex(z3,z9,z1) & cycle; 
fill flex(z4,z13,z5) & flex(z5,z10,z6) & flex(z6,z11,z7) & flex(z7,z12,z4) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13);
endchar;

beginchar ("O", body_widthu#-0.55pt#*scaleu, body_heightu#, body_depthu#); "Klingon letter O";
z1=(2.45tu,-0.7tu); z2=(2.0tu,2.1tu); z3=(3.15tu,3.35tu); % corner points
z4=(0.55tu,3.35tu); z5=(0,2.55tu); z6=(1.45tu,2.55tu); % corner points
z7=(0.1tu,1.55tu); % corner points
z8=(2.5tu,0.8tu); z9=(2.35tu,2.4tu); z10=(2.7tu,3.1tu); % help points
z11=(0.45tu,2.95tu); z12=(0.95tu,1.9tu); z13=(1.35tu,1.1tu); % help points
z14=(0.8tu,1.35tu); z15=(2.1tu,0.2tu); % help points
fill flex(z1,z8,z2) & flex(z2,z9,z10,z3) & z3--z4 & flex(z4,z11,z5)
  & z5--z6 & flex(z6,z12,z7) & flex(z7,z14,z13) & flex(z13,z15,z1) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
endchar;

beginchar ("P", body_widthu#-0.3pt#*scaleu, body_heightu#, body_depthu#); "Klingon letter P";
z1=(2.25tu,-0.7tu); z2=(1.85tu,3.4tu); z3=(0.55tu,3.65tu); % corner points
z4=(0tu,2.75tu); z5=(2.2tu,1.1tu); z6=(3.25tu,3.4tu); % corner points
z7=(2.0tu,3.4tu); % corner points
z8=(1.15tu,3.45tu); z9=(0.35tu,3.1tu); z10=(1.85tu,0.4tu); % help points
z11=(2.45tu,2.1tu); % help points
fill z1--z2 & flex(z2,z8,z3) & flex(z3,z9,z4) & flex(z4,z10,z1) & cycle;
fill flex(z5,z11,z6) & z6--z7 & z7--z5 & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11);
endchar;

beginchar ("Q", body_widthu#-1.2pt#*scaleu, body_heightu#, body_depthu#); "Klingon letter Q";
z1=(0.8tu,-0.3tu); z2=(1.4tu,-0.2tu); z3=(1.65tu,1.05tu); % corner points
z4=(2.85tu,3.4tu); z5=(0,3.4tu); z6=(1.55tu,-0.3tu); % corner points
z7=(2.65tu,0.2tu); z8=(1.95tu,1.9tu); % corner points
z9=(1.55tu,0.5tu); z10=(1.55tu,2.3tu); z11=(2.25tu,0.15tu); % help points
z12=(2.25tu,0.7tu); z13=(1.75tu,0.7tu); % help points
fill z1--z2 & flex(z2,z9,z3) & flex(z3,z10,z4) & z4--z5 & z5--z1 & cycle;
fill flex(z6,z11,z7) & flex(z7,z12,z8) & flex(z8,z13,z6) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13);
endchar;

beginchar ("R", body_widthu#-1.9pt#*scaleu, body_heightu#, body_depthu#); "Klingon letter R";
z1=(0.45tu,0.15tu); z2=(1.05tu,-0.4tu); z3=(2.55tu,2.5tu); % corner points
z4=(2.45tu,3.4tu); z5=(0,3.65tu); z6=(1.25tu,0); % corner points
z7=(2.35tu,0); z8=(1.65tu,1.7tu); % corner points
z9=(0.75tu,0); z10=(1.75tu,2.35tu); z11=(2.5tu,2.85tu); % help points
z12=(1.2tu,3.2tu); z13=(0.4tu,2.1tu); z14=(2tu,0.6tu); % help points
z15=(1.4tu,0.75tu); % help points
fill flex(z1,z9,z2) & flex(z2,z10,z3) & flex(z3,z11,z4) & flex(z4,z12,z5)
  & flex(z5,z13,z1) & cycle;
fill z6--z7 & flex(z7,z14,z8) & flex(z8,z15,z6) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
endchar;

beginchar ("S", body_widthu#+1.1pt#*scaleu, body_heightu#, body_depthu#); "Klingon letter S";
z1=(0.95tu,-0.7tu); z2=(3.65tu,3.4tu); z3=(0,3.4tu); % corner points
z4=(0.55tu,1.9tu); z5=(1.75tu,1.9tu); z6=(1.85tu,0); % corner points
z7=(3.85tu,0); z8=(3.6tu,1.0tu); z9=(3.2tu,2.0tu); % corner points
z10=(2.65tu,1.35tu); z11=(1.6tu,0.8tu); z12=(3.65tu,0.3tu); % help points
z13=(3.05tu,0.6tu); z14=(2.7tu,1.1tu); z15=(3.25tu,0.6tu); % help points
z16=(3.0tu,0.9tu); z17=(3.18tu,1.75tu); % help points
fill flex(z1,z10,z2) & z2--z3 & z3--z4 & z4--z5 & flex(z5,z11,z1) & cycle;
fill z6--z7 & flex(z7,z12,z8) & flex(z8,z15,z13) & flex(z13,z16,z17,z9) & flex(z9,z14,z6) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17);
endchar;

beginchar ("T", body_widthu#-1.5pt#*scaleu, body_heightu#, body_depthu#); "Klingon letter T";
z1=(0,0); z2=(1.95tu,0); z3=(1.1tu,1.825tu); % corner points
z4=(2.45tu,-0.7tu); z5=(2.75tu,2.45tu); z6=(2.2tu,3.4tu); % corner points
z7=(0.3tu,3.4tu); z8=(0tu,2.6tu); % corner points
z9=(1.5tu,1.1tu); z10=(0.75tu,0.65tu); z11=(2.25tu,1.45tu); % help points
z12=(2.25tu,3.1tu); z13=(0.25tu,3.05tu); z14=(1.15tu,2.0tu); % help points
z15=(0.7tu,2.45tu); z16=(1.65tu,1.15tu); % help points
fill z1--z2 & flex(z2,z9,z3) & flex(z3,z10,z1) & cycle;
fill flex(z4,z11,z5) & flex(z5,z12,z6) & z6--z7 & flex(z7,z13,z8) 
  & flex(z8,z15,z14) & flex(z14,z16,z4) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16);
endchar;

beginchar ("U", body_widthu#-1.65pt#*scaleu, body_heightu#, body_depthu#); "Klingon letter U";
z1=(0.15tu,0.3tu); z2=(2.05tu,-0.5tu); z3=(2.45tu,3.4tu); % corner points
z4=(1.0tu,3.65tu); z5=(0,1.05tu); z6=(2.05tu,-0.35tu); % corner points
z7=(2.65tu,0.85tu); z8=(2.4tu,1.3tu); z9=(1.3tu,1.4tu); % corner points
z10=(1.1tu,1.4tu); z11=(1.45tu,3.45tu); z12=(0.65tu,2.0tu); % help points
z13=(2.15tu,0.4tu); z14=(1.45tu,0.5tu); % help points
fill z1--z2 & flex(z2,z10,z3) & flex(z3,z11,z4) & flex(z4,z12,z5) 
  & z5--z1 & cycle;
fill flex(z6,z13,z7) & z7--z8 & z8--z9 & flex(z9,z14,z6) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14);
endchar;

beginchar ("V", body_widthu#-0.2pt#*scaleu, body_heightu#, 0pt#); "Klingon letter V";
z1=(0,0); z2=(1.6tu,0); z3=(1.25tu,2.4tu); z4=(1.75tu,0); % corner points
z5=(2.85tu,0); z6=(3.3tu,1.5tu); z7=(1.2tu,3.65tu); % corner points
z8=(1.55tu,1.45tu); % corner points
z9=(0.7tu,0.9tu); z10=(2.95tu,0.6tu); z11=(1.25tu,3.1tu); % help points
z12=(1.95tu,1.7tu); % help points
fill z1--z2 & z2--z3 & flex(z3,z9,z1) & cycle;
fill z4--z5 & flex(z5,z10,z6) & z6--z7 & flex(z7,z11,z12,z8) & z8--z4 & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12);
endchar;

beginchar ("W", body_widthu#-0.2pt#*scaleu, body_heightu#, body_depthu#); "Klingon letter W";
z1=(1.65tu,-0.7tu); z2=(2.95tu,1.9tu); z3=(3.3tu,3.4tu); % corner points
z4=(0,3.4tu); z5=(1.8tu,-0.1tu); z6=(3.2tu,1.2tu); % corner points
z7=(2.05tu,1.5tu); % corner points
z8=(2.0tu,1.9tu); z9=(3.05tu,2.65tu); z10=(0.95tu,1.55tu); % help points
z11=(2.5tu,0.75tu); z12=(2.65tu,1.3tu); z13=(2.0tu,1.3tu); % help points
z14=(1.85tu,1.6tu); z15=(2.5tu,2.1tu); % help points
fill flex(z1,z14,z8) & flex(z8,z15,z2) & flex(z2,z9,z3) & z3--z4 
  & flex(z4,z10,z1) & cycle;
fill flex(z5,z11,z6) & flex(z6,z12,z7) & flex(z7,z13,z5) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
endchar;

beginchar ("X", body_widthu#-1.1pt#*scaleu, body_heightu#, body_depthu#); "Klingon letter X";
z1=(1.25tu,-0.7tu); z2=(2.9tu,2.5tu); z3=(2.1tu,3.6tu); % corner points
z4=(0,3.3tu); z5=(0.25tu,2.35tu); z6=(1.35tu,0.15tu); % corner points
z7=(2.6tu,0.15tu); z8=(2.05tu,1.7tu); % corner points
z9=(1.45tu,1.2tu); z10=(2.35tu,3.1tu); z11=(1.0tu,3.2tu); % help points
z12=(0.75tu,1.9tu); z13=(0.7tu,-0.1tu); z14=(2.15tu,0.75tu); % help points
z15=(1.55tu,0.9tu); % help points
fill flex(z1,z9,z2) & flex(z2,z10,z3) & flex(z3,z11,z4) & z4--z5 
  & flex(z5,z12,z13,z1) & cycle;
fill z6--z7 & flex(z7,z14,z8) & flex(z8,z15,z6) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
endchar;

beginchar ("Y", body_widthu#-0.9pt#*scaleu, body_heightu#, 0pt#); "Klingon letter Y";
z1=(0.5tu,0); z2=(2.45tu,0); z3=(2.95tu,1.2tu); z4=(0.45tu,1.2tu); % corner points
z5=(1.55tu,2.45tu); z6=(3.0tu,1.4tu); z14=(3.0tu,1.45tu); % corner points
z7=(2.25tu,3.3tu); z8=(1.05tu,3.65tu); z9=(0,1.3tu); % corner points
z10=(1.05tu,2.1tu); z11=(2.15tu,1.8tu); z12=(2.35tu,2.3tu); % help points
z13=(1.45tu,3.4tu); % help points
fill z1--z2 & z2--z3 & z3--z4 & flex(z4,z10,z5) & flex(z5,z11,z6) 
  & z6--z14 & flex(z14,z12,z7) & flex(z7,z13,z8) & z8--z9 & z9--z1 & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13);
endchar;

beginchar ("Z", body_widthu#-1pt#*scaleu, body_heightu#, 0pt#); "Klingon letter Z";
z1=(0.55tu,0); z2=(2.6tu,0); z3=(2.95tu,1.05tu); z4=(1.25tu,1.4tu); % corner points
z5=(1.35tu,3.6tu); z6=(0,1.0tu); z7=(1.4tu,1.6tu); % corner points
z8=(2.55tu,2.8tu); z9=(1.5tu,3.1tu); % corner points
z10=(2.65tu,0.5tu); z11=(1.75tu,1.1tu); z12=(0.35tu,0.65tu); % help points
z13=(1.95tu,2.4tu); z14=(2.0tu,2.9tu); % help points
fill z1--z2 & flex(z2,z10,z3) & flex(z3,z11,z4) & z4--z5 & z5--z6 
  & flex(z6,z12,z1) & cycle;
fill flex(z7,z13,z8) & flex(z8,z14,z9) & z9--z7 & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14);
endchar;

beginchar ("'", 2pt#*scaleu, body_heightu#, 0pt#); "Klingon apostrophe '";
z1=(0.5tu,2.5tu); z2=(0.7tu,3.7tu); z3=(0,3.35tu); % corner points
z4=(0.7tu,3.2tu); z5=(0.5tu,3.4tu); z6=(0.35tu,2.85tu); % help points
fill flex(z1,z4,z2) & flex(z2,z5,z3) & flex(z3,z6,z1) & cycle;
penlabels (1,2,3,4,5,6);
endchar;

beginchar ("!", 2.6pt#*scaleu, body_heightu#, 0pt#); "Klingon exclamation mark !";
z1=(0.5tu,0); z2=(0.15tu,1tu); z3=(0,0.55tu); z4=(0.65tu,0.05tu); % corner points
z5=(1.1tu,2.25tu); z6=(0.4tu,3.7tu); z7=(0.45tu,2tu); z8=(0,1.5tu); % corner points
z9=(0.3tu,0.4tu); z10=(0.4tu,0.6tu); z11=(0.1tu,0.7tu); % help points
z12=(0.5tu,2.4tu); z13=(0,2.25tu); z14=(0.3tu,1.7tu); z15=(0.45tu,1.1tu); % help points
fill flex(z1,z10,z2) & flex(z2,z11,z3) & flex(z3,z9,z1) & cycle;
fill z4--z5 & flex(z5,z12,z6) & flex(z6,z13,z7) & flex(z7,z14,z8) 
  & flex(z8,z15,z4) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
endchar;

beginchar ("?", 2.6pt#*scaleu, body_heightu#, body_depthu#); "Klingon question mark ?";
z1=(0.8tu,-0.7tu); z2=(0.35tu,0.6tu); z3=(0,-0.1tu); z4=(0.7tu,0); % corner points
z5=(0.4tu,1.75tu); z6=(0.3tu,3.6tu); z7=(0.1tu,2.0tu); % corner points
z8=(0.4tu,-0.4tu); z9=(0.2tu,0.2tu); z10=(0.95tu,1.15tu); % help points
z11=(1.1tu,2.3tu); z12=(0.55tu, 2.55tu); % help points
fill z1--z2 & flex(z2,z9,z3) & flex(z3,z8,z1) & cycle;
fill flex(z4,z10,z5) & flex(z5,z11,z6) & flex(z6,z12,z7) & z7--z4 & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12);
endchar;

beginchar (",", 1.65pt#*scaleu, 3pt#*scaleu, body_depthu#); "Klingon comma ,";
z1=(0.25tu,-0.5tu); z2=(0.7tu,0.9tu); z3=(0,0.15tu); % corner points
z4=(0.6tu,0.05tu); z5=(0.45tu,0.4tu); z6=(0.2tu,-0.1tu); % help points
fill flex(z1,z4,z2) & flex(z2,z5,z3) & flex(z3,z6,z1) & cycle;
penlabels (1,2,3,4,5,6);
endchar;

beginchar (".", 1.65pt#*scaleu, 5pt#*scaleu, body_depthu#); "Klingon dot .";
z1=(0.25tu,-0.5tu); z2=(0.7tu,0.9tu); z3=(0,0.15tu); % corner points
z7=(0,0.3tu); z8=(0.65tu,1.2tu); z9=(0,1.7tu); % corner points
z4=(0.6tu,0.05tu); z5=(0.45tu,0.4tu); z6=(0.2tu,-0.1tu); % help points
z10=(0.4tu,0.6tu); z11=(0.25tu,1.3tu); z12=(0.1tu,0.95tu); % help points
fill flex(z1,z4,z2) & flex(z2,z5,z3) & flex(z3,z6,z1) & cycle;
fill flex(z7,z10,z8) & flex(z8,z11,z9) & flex(z9,z12,z7) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12);
endchar;

beginchar (";", 2.65pt#*scaleu, 5pt#*scaleu, body_depthu#); "Klingon semicolon ;";
z1=(0.3tu,-0.6tu); z2=(0.5tu,1.3tu); z3=(0,0.7tu); % corner points
z4=(0.55tu,0); z5=(1.15tu,0.7tu); z6=(0.6tu, 1.3tu); % corner points
z7=(0.4tu,0); z8=(0.5tu,0.75tu); z9=(0.3tu,1tu); % help points
z10=(0.2tu,0.1tu); z11=(0.8tu,0.35tu); z12=(0.7tu,0.75tu); % help points
z13=(0.55tu,0.2tu); % help points
fill flex(z1,z7,z8,z2) & flex(z2,z9,z3) & flex(z3,z10,z1) & cycle;
fill flex(z4,z11,z5) & z5--z6 & flex(z6,z12,z13,z4) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13);
endchar;

beginchar (":", 2.65pt#*scaleu, body_heightu#, body_depthu#); "Klingon double point :";
z1=(0.3tu,-0.6tu); z2=(0.5tu,1.3tu); z3=(0,0.7tu); % corner points
z4=(0.55tu,0.7tu); z5=(1.15tu,1.4tu); z6=(0.6tu,2tu); % corner points
z7=(0.4tu,0); z8=(0.5tu,0.75tu); z9=(0.3tu,1tu); % help points
z10=(0.2tu,0.1tu); z11=(0.8tu,1.05tu); z12=(0.7tu,1.45tu); % help points
z13=(0.55tu,0.9tu); % help points
fill flex(z1,z7,z8,z2) & flex(z2,z9,z3) & flex(z3,z10,z1) & cycle;
fill flex(z4,z11,z5) & z5--z6 & flex(z6,z12,z13,z4) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13);
endchar; 

beginchar ("-", body_widthu#-2.9pt#*scaleu, 6pt#*scaleu, 0pt#); "Klingon dash -";
z1=(0.1tu, 0.4tu); z2=(0.7tu,1.2tu); z3=(0,1.3tu); % corner points
z4=(0.1tu, 0.3tu); z5=(2.2tu,1.3tu); z6=(1.75tu,2.25tu); % corner points
z7=(0.3tu,1.1tu); z8=(0.1tu,0.8tu); z9=(1tu,1tu); % help points
z10=(1.8tu,1.6tu); % help points
fill z1--z2 & flex(z2,z7,z3) & flex(z3,z8,z1) & cycle;
fill flex(z4,z9,z5) & flex(z5,z10,z6) & z6--z4 & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10);
endchar;

beginchar (oct"173", 1.5(body_widthu#-2.9pt#*scaleu), 6pt#*scaleu, 0pt#); "Klingon en dash -";
z1=(0.15tu, 0.4tu); z2=(1.05tu,1.2tu); z3=(0,1.3tu); % corner points
z4=(0.15tu, 0.3tu); z5=(3.3tu,1.3tu); z6=(2.6tu,2.25tu); % corner points
z7=(0.45tu,1.1tu); z8=(0.15tu,0.8tu); z9=(1.5tu,1tu); % help points
z10=(2.7tu,1.6tu); % help points
fill z1--z2 & flex(z2,z7,z3) & flex(z3,z8,z1) & cycle;
fill flex(z4,z9,z5) & flex(z5,z10,z6) & z6--z4 & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10);
endchar;

beginchar (oct"174", 2(body_widthu#-2.9pt#*scaleu), 6pt#*scaleu, 0pt#); "Klingon em dash -";
z1=(0.2tu, 0.4tu); z2=(1.4tu,1.2tu); z3=(0,1.3tu); % corner points
z4=(0.2tu, 0.3tu); z5=(4.4tu,1.3tu); z6=(3.5tu,2.25tu); % corner points
z7=(0.6tu,1.1tu); z8=(0.2tu,0.8tu); z9=(2tu,1tu); % help points
z10=(3.6tu,1.6tu); % help points
fill z1--z2 & flex(z2,z7,z3) & flex(z3,z8,z1) & cycle;
fill flex(z4,z9,z5) & flex(z5,z10,z6) & z6--z4 & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10);
endchar;

beginchar ("(", 2.8pt#*scaleu, body_heightu#, 0pt#); "Klingon opening brace (";
z1=(0.4tu,1.2tu); z2=(0.4tu,2.5tu); z3=(0,1.75tu); % corner points
z4=(0.15tu,0); z5=(1.2tu,0); z6=(0.65tu,1.7tu); % corner points
z7=(0.65tu,1.8tu); z8=(1.2tu,3.6tu); z9=(0.15tu,3.6tu); % corner points
z10=(0.2tu,1.6tu); z11=(0.5tu,1.75tu); z12=(0.2tu,2tu); % help points
z13=(0.85tu,0.8tu); z14=(0.5tu,0.8tu); z15=(0.85tu,2.75tu); % help points
z16=(0.5tu,2.75tu); % help points
fill flex(z1,z11,z2) & flex(z2,z12,z3) & flex(z3,z10,z1) & cycle;
fill z4--z5 & flex(z5,z13,z6) & flex(z6,z14,z4) & cycle;
fill flex(z7,z15,z8) & z8--z9 & flex(z9,z16,z7) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16);
endchar;

beginchar (")", 2.8pt#*scaleu, body_heightu#, 0pt#); "Klingon closing brace )";
z1=(0,0); z2=(1.05tu,0); z3=(0.55tu,1.7tu); % corner points
z4=(0.55tu,1.8tu); z5=(1.05tu,3.6tu); z6=(0,3.6tu); % corner points
z7=(0.8tu,1.2tu); z8=(1.2tu,1.75tu); z9=(0.8tu,2.5tu); % corner points
z10=(1tu,1.6tu); z11=(1tu,2tu); z12=(0.7tu,1.75tu); % help points
z13=(0.7tu,0.8tu); z14=(0.35tu,0.8tu);  % help points
z15=(0.7tu,2.75tu); z16=(0.35tu,2.75tu); % help points
fill z1--z2 & flex(z2,z13,z3) & flex(z3,z14,z1) & cycle;
fill flex(z4,z15,z5) & z5--z6 & flex(z6,z16,z4) & cycle;
fill flex(z7,z10,z8) & flex(z8,z11,z9) & flex(z9,z12,z7) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16);
endchar;

beginchar (oct"042", 2.2pt#*scaleu, body_heightu#, 0pt#); "Klingon double quote";
z1=(0.45tu,0.35tu); z2=(0.6tu,1.45tu); z3=(0.25tu,2.2tu); % corner points
z4=(0.65tu,1.5tu); z5=(0.5tu,3.75tu); z6=(0.3tu,2.25tu); % corner points
z7=(0.3tu,0.9tu); z8=(0.05tu,1.2tu); z9=(0.9tu,2.7tu); % help points
z10=(0.55tu,3tu); % help points
fill flex(z1,z7,z2) & z2--z3 & flex(z3,z8,z1) & cycle; 
fill flex(z4,z9,z5) & flex(z5,z10,z6) & z6--z4 & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10);
endchar;

beginchar ("/", 2.75pt#*scaleu, body_heightu#, body_depthu#); "Klingon slash /";
z1=(0,-0.7tu); z2=(0.6tu,-0.5tu); z3=(0.9tu,1.3tu); % corner points
z4=(0.5tu,0.8tu); z5=(1.2tu,2.6tu); z6=(0.65tu,3.6tu); % corner points
z7=(0.2tu,-0.6tu); z8=(0.5tu,-0.2tu); z9=(0.9tu,0.9tu); % corner points
z10=(0.75tu,0.9tu); z11=(0.2tu,-0.2tu); z12=(0.8tu,1.3tu); % help points
z13=(0.9tu,2.8tu); z14=(0.75tu,2tu); % help points
fill flex(z1,z7,z2) & flex(z2,z8,z9,z3) & flex(z3,z10,z11,z1) & cycle;
fill flex(z4,z12,z5) & flex(z5,z13,z6) & flex(z6,z14,z4) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14);
endchar;

beginchar ("&", body_widthu#-3.2pt#*scaleu, body_heightu#, 0pt#); "Klingon ampersand &";
z1=(0,0); z2=(2tu,0); z3=(1.9tu,1.2tu); z4=(0.65tu,1.35tu); % corner points
z5=(1.1tu,0.75tu); z6=(1.85tu,1.6tu); z7=(1.2tu,2.8tu); % corner points
z8=(0.75tu,2.8tu); z9=(0.45tu,2.45tu); z10=(0.85tu,1.6tu); z11=(1tu,2.3tu); % corner points
z12=(1.8tu,0.4tu); z13=(1tu,0.6tu); z14=(0.3tu,0.5tu); % help points
z15=(1.7tu,1.2tu); z16=(0.8tu,2.1tu); z17=(1.5tu,1.6tu); % help points
fill z1--z2 & flex(z2,z12,z3) & flex(z3,z13,z4) & flex(z4,z14,z1) & cycle;
fill flex (z5,z15,z6) & z6--z7 & z7--z8 & z8--z9 & z9--z10
  & flex(z10,z16,z11) & flex(z11,z17,z5) & cycle;
penlabels (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17);
endchar;

input kligs;
end