%%
%% This is file `imajpunct.mf',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% inslrmaj.dtx  (with options: `punct')
%% 
%%  Copyright 1999 Peter R. Wilson
%% 
%%  This program is provided under the terms of the
%%  LaTeX Project Public License distributed from CTAN
%%  archives in directory macros/latex/base/lppl.txt.
%% 
%% Author: Peter Wilson (CUA)
%%         now at: peter.r.wilson@boeing.com
%% 


cmchar "Exclamation mark";
beginchar("!", 2sb#+hstretch*(thick#+trijut#),
               asc_height#, 0);
adjust_fit(0,0);
pcshiftx := sb;
pickup quill;
z1=(w/2,h);
z3=(x1, 1/2dot_size);
z2=(x1, y3+3/2dot_size);
draw z1--z2;
draw_pdot(3,dot_size);
penlabels(1,2,3);

endchar;  % end of "!"


cmchar "Question mark";
beginchar("?", 2sb#+hstretch*(x_height#),
               asc_height#, 0);
adjust_fit(0,0);
pcshiftx := sb;
numeric n[];
path pth[];
pickup quill;
n1 := w-2pcshiftx;     % actual character width
n2 := 1/3h;            % height of top bowl
n3 := n2;              % height of bottom bowl
%% top bowl
z1=(pcshiftx, h-n2);
obowl(1, n1, n2);
pth1 := obouter;
%% bottom bowl
z2=(x1,y1-n3);
obowl(2, n1, n3);
pth2 := obouter;
%% stem and dot
lft x4 = x1 + 4/4thick;
z5=(x4,1/2dot_size);
y4=y5+3/2dot_size;
z4o=(lft x4, y4); z4i=(rt x4, y4);
%%ductus:= true;
if ductus:
  pickup stylus;
  draw pth1; draw pth2;
  draw z2wt--z4;
  draw_pdot(5, dot_size);
else:
  fill z1maxlo{ppdir}..z1minlo{pdir}..z1maxro{-ppdir}..
%%       z1minro..z2maxli{-ppdir}..
       z2minli..
       {down}z4i--z4o{up}..
       z2minlo..
%%       z1minri..z1maxri{ppdir}..
       z1maxri{ppdir}..z1minli{-pdir}..z1maxli{-ppdir}--cycle;
  draw_pdot(5, dot_size);
fi
penlabels(1,2,3,4,5);
endchar;  % end of "?"


cmchar "Comma";
beginchar(",",2sb#+hstretch*(comma_width#+dot_size#),x_height#,0);
adjust_fit(0,0);
pcshiftx:=sb;
x1=w-pcshiftx-(0.5hstretch*dot_size); y1=h/2;
draw_pcomma(1,dot_size,comma_width);
penlabels(1);
endchar; % end of ","


cmchar "Period";
beginchar(".",2sb#+hstretch*(dot_size#),x_height#,0);
pcshiftx:=sb;
x1=w/2; y1=h/2;
draw_pdot(1,dot_size);
penlabels(1);
endchar; % end of "."


cmchar "Colon";
beginchar(":",2sb#+hstretch*(dot_size#),x_height#,0);
pcshiftx:=sb;
x1=x2=w/2; y1=2/3h; y2=1/3h;
draw_pdot(1,dot_size);
draw_pdot(2,dot_size);
penlabels(1,2);
endchar; % end ":"


cmchar "Semicolon";
beginchar(";",2sb#+hstretch*(comma_width#+dot_size#),x_height#,0);
adjust_fit(0,0);
pcshiftx:=sb;
x1=x2=w-pcshiftx-(0.5hstretch*dot_size); y1=2/3h; y2=1/3h;
draw_pdot(1,dot_size);
draw_pcomma(2,dot_size,comma_width);
penlabels(1,2);
endchar; % end of ";"


cmchar "Apostrophe";
beginchar("'",2sb#+hstretch*(comma_width#+dot_size#),4/3x_height#,0);
adjust_fit(0,0);
pcshiftx:=sb;
x1=w-pcshiftx-(0.5hstretch*dot_size); y1=h;
draw_pcomma(1,dot_size,comma_width);
penlabels(1);
endchar;  % end of "'"


cmchar "Reverse apostrophe";
beginchar("`",2sb#+hstretch*(comma_width#+dot_size#),4/3x_height#,0);
adjust_fit(0,0);
pcshiftx:=sb;
x1=pcshiftx+(0.5hstretch*dot_size); y1=h;
draw_plq(1,dot_size,comma_width);
penlabels(1);
endchar;  % end of "`"

