%% SEMAPHORE ALPHABET FONT, METAFONT driver file "semaf.mf" %% %% Font znaku semaforove abecedy, ridici soubor pro METAFONT. %% %% Copyright (C) 1998 Vit ZYKA, zyka@cmp.felk.cvut.cz %% %% This program is free software; you can redistribute it and/or %% modify it under the terms of the GNU General Public License %% as published by the Free Software Foundation; either version 2 %% of the License, or (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; if not, see web page %% http://www.gnu.org/copyleft/fdl.html or write to the Free Software %% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. %% % ----------------------------------------------------------------------- CODE L#:=4.75u#; % left width C#:=1u#; % center width R#:=4.75u#; % right width H#:=10u#; % character height HC#:=H#/2; % center height %% |width#|, |height#|, |WC#|, |HC#| (center width, height) %% is evaluated in macro |beginchar| define_pixels(u,C); % ----------------------------------------------------------------------- BASE def base_empty= pickup pencircle scaled (series*1*u); drawdot origin slanted slant; enddef; def base_pillar= pickup pencircle scaled (series*1*u); drawdot origin slanted slant; pickup pencircle scaled (series*.2*u); draw (origin--(0,-HC)) slanted slant; draw ((-C,-HC)--(C,-HC)) slanted slant; enddef; def base_person= pickup pencircle scaled (series*1.2*u); drawdot (0,.4*HC) slanted slant; pickup pencircle scaled (series*.2*u); draw ((0,.4*HC)--(0,-.2*HC)) slanted slant; draw ((-.7C,-HC)--(0,-.2*HC)--(.7C,-HC)) slanted slant; enddef; % ---------------------------------------------------------------------- FLAG r:=if proportional: 4.5u else: 4.3u fi; % flag radius a:=1.5u; % flag width b:=1.8u; % flag height def flag= pickup pencircle scaled (series*.5*u); draw (origin--(r,0)) withweight 2; pickup pencircle scaled (series*.3*u); unfill ((r,0)--(r-a,0)--(r-a,b)--cycle); draw ((r-a,0)--(r-a,b)--(r,b)--(r,0)); fill ((r,0)--(r-a,b)--(r,b)--cycle); enddef; def flagL(expr angel)= begingroup; save currenttransform; transform currenttransform; currenttransform:= identity rotated angel slanted slant; flag; endgroup; enddef; def flagR(expr angel)= begingroup; save currenttransform; transform currenttransform; currenttransform:= identity reflectedabout ((0,0),(1,0)) rotated angel slanted slant; flag; endgroup; enddef; uu:=0.95; % upper portion of |L#| (|R#|) bb:=0.8; % botton dd:=0.55; % character d def charA= if SL#<(uu*L#): SL#:= bb*L# fi; flagL(-135); enddef; def charB= SL#:= L#; flagL(180); enddef; def charC= if SL#>"$", endfor skipto 1; ligtable for i=digits_tr: i: endfor for i=chars: i|=:|>>"#", endfor 1|=:|"#", skipto 1; ligtable 1:: if proportional: for i=bl: i kern-1u#, endfor fi " " kern 0u#; ligtable for i=chars_br: i: endfor for i=digits: i|=:|>>"$", endfor skipto 2; ligtable for i=digits_br: i: endfor for i=chars: i|=:|>>"#", endfor 1|=:|"#", skipto 2; ligtable 2:: if proportional: for i=tl: i kern-1u#, endfor for i=td: i kern-.5u#, endfor fi " " kern 0u#; ligtable for i=chars_nr: i: endfor for i=digits: i|=:|>>"$", endfor " "|=:>" "; ligtable for i=digits_nr: i: endfor for i=chars: i|=:|>>"#", endfor 1|=:|"#"; ligtable ||: for i=digits: i|=:|>>"$", endfor " "|=:>" "; endinput;