% Xucuri Punctuation `xucp.mf'
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Designed by Johannes Heinecke                                             %
%             <johannes.heinecke@wanadoo.fr>                                %
% This software is under the LaTeX Project Public License                   %
% Please send any improvements, corrections, suggestions, enhancements etc  %
% to the Author!                                                            %
%                                                                           %
% Version 0.1 as of 30th March 1997                                         %
%                                                                           %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%


def xuc_comma (suffix $) =
    pickup xuc_pcomma;
    rt z$a = (pdot, y$);
    z$b = (0, y$-.6mxlow);
    draw z$a{down}..{dir -135}z$b;
    labels($a, $b);
enddef;



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Character Definitions: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



%% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xucchar "+";
beginchar("+", mxzw#+mxone#, mxone#, 0);
    if known cmbase: adjust_fit(0,0); fi
    pickup xuc_dash;
    lft z1 = (0, .5mxone);
    z2 = (x1+mxone, y1);
    draw z1--z2;

    z3 = (.5[x1, x2], 0);
    z4 = (x3, mxone);
    draw z3--z4;

    penlabels(range 1 thru 4);
endchar;

%% = %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xucchar "Equals sign =";
beginchar("=", mxzw#+1.5mxone#, mxlittle#, 0);
    pickup xuc_dash;
    lft z1 = (0, 1.5mxthird);
    z2 = (x1+1.5mxone, y1);
    z3 = (x1, 2.5mxthird);
    z4 = (x2, y3);
    draw z1--z2;
    draw z3--z4;
    penlabels(range 1 thru 4);
endchar;

%% / %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xucchar "Slash /";
beginchar("/", mxzw#+1.5mxone#, mxlittle#, 0);
    pickup xuc_dash;
    z1 = (0,0);
    z2 = (1.5mxone, mxheight);
    draw z1--z2;
    penlabels(1,2);
endchar;

%% \ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xucchar "Backslash \ ";
beginchar("\", mxzw#+1.5mxone#, mxlittle#, 0);
    pickup xuc_dash;
    z1 = (0,mxheight);
    z2 = (1.5mxone, 0);
    draw z1--z2;
    penlabels(1,2);
endchar;



%% - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xucchar "-";
beginchar("-", mxzw#+mxone#, mxlittle#, 0);
    pickup xuc_dash;
    lft z1 = (0, mxmiddle);
    z2 = (x1+mxone, y1);
    draw z1--z2;
    penlabels(range 1 thru 2);
endchar;

%% -- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xucchar "-- (123)";
beginchar(123, mxzw#+1.5mxone#, mxlittle#, 0);
    pickup xuc_dash;
    lft z1 = (0, mxmiddle);
    z2 = (x1+1.5mxone, y1);
    draw z1--z2;
    penlabels(range 1 thru 2);
endchar;

%% --- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xucchar "--- (124)";
beginchar(124, mxzw#+2mxone#, mxlittle#, 0);
    pickup xuc_dash;
    lft z1 = (0, mxmiddle);
    z2 = (x1+2mxone, y1);
    draw z1--z2;
    penlabels(range 1 thru 2);
endchar;

%% . %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xucchar "Period .";
beginchar(".", mxzw#+mxhalf#, mxlittle#, 0);
    pickup xuc_dot;
    bot lft z1 = (0, 0);
    drawdot z1;
    penlabels(1);
endchar;

%% : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xucchar "Colon :";
beginchar(":", mxzw#+mxhalf#, mxlittle#, 0);
    pickup xuc_dot;
    lft z1 = (0, mxthird);
    lft z2 = (0, 2.5mxthird);
    drawdot z1;
    drawdot z2;
    penlabels(range 1 thru 2);
endchar;

%% ; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xucchar "Semicolon ;";
beginchar(";", mxzw#+pdot#, mxlittle#, .6mxlow#);
    pickup xuc_dot;
    bot lft z1 = (0, 0);
    z4 = (x1, y1+.5mxlittle);
    drawdot z1;
    drawdot z4;

    xuc_comma(1); 
    penlabels(range 1 thru 4);
endchar;


%% , %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xucchar "Comma ,";
beginchar(",", mxzw#+pdot#, mxlittle#, .6mxlow#);
    pickup xuc_dot;
    bot lft z1 = (0, 0);
    drawdot z1;
    xuc_comma(1); 
    penlabels(range 1 thru 3);
endchar;


%% ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xucchar "Apostroph '";
beginchar("'", mxzw#+pdot#, mxheight#, 0#);
    pickup xuc_dot;
    lft z1 = (0, mxheight);
    drawdot z1;

    xuc_comma(1); 
    penlabels(range 1 thru 3);
endchar;

%% ? %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xucchar "Question mark ?";
beginchar("?", mxzw#+mxone#, mxheight#, 0);
   pickup xuc_dot;
   bot z1 = (mxhalf, 0);
   drawdot z1;

   pickup xuc_punctpen;
   z2 = (0, mxheight-.5mxtop);
   z3 = (x1, mxheight);
   z4 = (mxone, y2);
   z5 = (x1, mxmiddle);
   z6 = (x5, 1.2mxthird);

   draw z2{up}..{right}z3..{down}z4..{down}z5--z6;
   penlabels(1,2,3,4,5);
endchar;

%% ! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xucchar "Exclamation mark !";
beginchar("!", mxzw#+.5mxhalf#, mxheight#, 0);
   pickup xuc_dot;
   bot lft z1 = (0, 0);
   drawdot z1;

   z2 = (x1, mxheight-.5pdot); penpos2(pdot, 0);
   drawdot z2;
   z3 = (x1, mxmiddle); penpos3(.18mxu, 0);
   penstroke z2e..z3e;
   penlabels(1,2,3);
endchar;

%% ( %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xucchar "Left parenthesis (";
beginchar("(", mxzw#+mxhalf#, 1.1mxheight#, .1mxheight#);
  z1 = (.5pdot+mxhalf, 1.1mxheight); penpos1(.18mxu, 0);
  z3 = (x1, -.1mxheight); penpos3(.18mxu, 0);
  z2 = (.5pdot, .5[y1, y3]); penpos2(pdot, 0);
  penstroke z1e..z2e..z3e;
  penlabels(range 1 thru 4);
endchar;


%% ) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xucchar "Right parenthesis )";
beginchar(")", mxzw#+mxhalf#, 1.1mxheight#, .1mxheight#);
  z1 = (0, 1.1mxheight); penpos1(.18mxu, 0);
  z3 = (x1, -.1mxheight); penpos3(.18mxu, 0);
  z2 = (mxhalf, .5[y1, y3]); penpos2(pdot, 0);
  penstroke z1e..z2e..z3e;
  penlabels(range 1 thru 4);
endchar;

%% [ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xucchar "Left bracket [";
beginchar("[", mxzw#+mxhalf#, 1.1mxheight#, .1mxheight#);
  pickup xuc_square;
  z1 = (mxhalf, -.1mxheight);
  z2 = (0, y1);
  z3 = (0, 1.1mxheight);
  z4 = (x1, y3);
  draw z1--z2--z3--z4;
  penlabels(range 1 thru 4);
endchar;

%% ] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xucchar "Right bracket ]";
beginchar("]", mxzw#+mxhalf#, 1.1mxheight#, .1mxheight#);
  pickup xuc_square;
  z1 = (0, -.1mxheight);
  z2 = (mxhalf, y1);
  z3 = (x2, 1.1mxheight);
  z4 = (0, y3);
  draw z1--z2--z3--z4;
  penlabels(range 1 thru 4);
endchar;


%endinput;