% Blackboard bold punctuation, Alan Jeffrey, 13--18 Dec 1989. % ------------------------------------------------------------------- bbcap ("!") (biggap#, tiny#, biggap#); fatsymmetric; "Exclamation mark `!'"; % The vertical. draw fatten Top~Middle -- (Bottom + space + fatness)~Middle; % The dot. draw splodge above Bottom~Middle endchar; % ------------------------------------------------------------------- bbchar ("#") (medgap#, arithmetic#, medgap#) (ATop#, gBottom#); "The hash sign `#'"; % The top line. draw (Horizon + space)~Left -- (Horizon + space)~Right; % The bottom line. draw (Horizon - space)~Left -- (Horizon - space)~Right; % The right vertical. draw rightof Top~(Middle + space) -- rightof Bottom~(Middle + space); % The left vertical. outline fatten rightof Top~(Middle - space) -- rightof Bottom~(Middle - space) endchar; % ------------------------------------------------------------------- bbchar ("$") (medgap#, smallcap#, medgap#) (ATop# + jut#, aBottom# - jut#); fatsymmetric; "Dollar sign `$'"; % The path of the S. draw (Top - CCurl)~Right .. ATop~Middle {left} .. (ATop -+- BBar)~Left {down} .. BBar~Middle {right} .. (BBar -+- aBottom)~Right {down} .. aBottom~Middle {left} .. (Bottom + CCurl)~Left; % The vertical. outline fatten Bottom~Middle -- Top~Middle endchar; % ------------------------------------------------------------------- bbchar ("%") (medgap#, smallcap#, medgap#) (bracketTop#, aBottom# + aTop# - bracketTop#); fatsymmetric; "Per cent sign `%'"; % The dot at top left. draw splodge below rightof Top~Left; % The dot at bottom right. draw splodge above leftof Bottom~Right; % The diagonal. draw fatten rightof Bottom~Left -- leftof Top~Right endchar; % ------------------------------------------------------------------- bbchar ("&") (medgap#, arithmetic#, medgap#) (ATop#, aBottom#); "Ampersand `&'"; % z1 is the top point at which the curls cross. It is somewhere % between the top point and the bottom point, and is at aTop. z1 = whatever[leftof Top~Middle, Bottom~(Left -+- Middle)]; y1 = aTop; % The curve. var (path) ampersandpath; ampersandpath = (Bottom + cCurl)~Right .. obelow Bottom~(Right - jut) {left} ... z1 .. oabove leftof Top~Middle {right} .. z1 .. aMiddle~Left {down} .. obelow Bottom~(Left -+- Middle) {right} .. aMiddle~(Right - space); % The emphasis. draw fatcliptwice (obelow rightof Bottom~Left -- rightof Top~Left) (ampersandpath); % The curve. draw ampersandpath endchar; % ------------------------------------------------------------------- bbchar ("'") (medgap#, tiny#, medgap#) (bTop#, bTop# - tiny# - comma_depth#); fatsymmetric; "Apostrophe `''"; % The dot and tail. draw splodger below Top~Middle .. Bottom~Left endchar; % ------------------------------------------------------------------- bbchar ("(") (biggap#, tiny# + jut#, smallgap#) (bracketTop#, bracketBottom#); "Left bracket `('"; % The emphasis. draw fatcliptwice (rightof Bottom~Left -- rightof Top~Left) (Bottom~Right {left} .. Horizon~Left .. Top~Right {right}); % The curve. draw Bottom~Right {left} .. Horizon~Left .. Top~Right {right} endchar; % ------------------------------------------------------------------- bbchar (")") (smallgap#, tiny# + jut#, biggap#) (bracketTop#, bracketBottom#); "Right bracket `)'"; % The emphasis. draw fatcliptwice (leftof Bottom~Right -- leftof Top~Right) (Bottom~Left {right} .. Horizon~Right .. Top~Left {left}); % The curve. draw Bottom~Left {right} .. Horizon~Right .. Top~Left {left} endchar; % ------------------------------------------------------------------- bbchar ("*") (medgap#, (sqrt3)/2 * arithmetic#, medgap#) (math_axis# + 1/2arithmetic#, math_axis# - 1/2arithmetic#) fatsymmetric; "Star `*'"; % The distance from the top of the character to the top of the diagonals. var (numeric) adistance; adistance = round ((Top - Horizon) / 2); % The NW diagonal. draw (Bottom + adistance)~Right -- (Top - adistance)~Left; % The NE diagonal. draw (Bottom + adistance)~Left -- (Top -adistance)~Right; % The vertical, fattened. outline fatten Bottom~Middle -- Top~Middle endchar; % ------------------------------------------------------------------- bbchar ("+") (medgap#, arithmetic#, medgap#) (math_axis# + 1/2arithmetic#, math_axis# - 1/2arithmetic#) "Plus sign `+'"; % The horizontal line. draw Horizon~Left -- Horizon~Right; % The vertical, fattened. outline fatten Bottom~Middle -- Top~Middle endchar; % ------------------------------------------------------------------- bbchar (",") (medgap#, tiny#, medgap#) (aBottom# + tiny#, aBottom# - comma_depth#); fatsymmetric; "Comma `,'"; % The dot and tail. draw splodger above aBottom~Middle .. Bottom~Left endchar; % ------------------------------------------------------------------- bbchar ("-") (smallgap#, smalllower#, medgap#) (aTop#, aBottom#); "Hyphen `-'"; % The line. draw Horizon~Left -- Horizon~Right endchar; % ------------------------------------------------------------------- bbchar (".") (medgap#, tiny#, medgap#) (aBottom# + tiny#, aBottom#); fatsymmetric; "Full stop `.'"; % The dot. draw splodge above Bottom~Middle endchar; % ------------------------------------------------------------------- bbchar ("/") (smallgap#, smallcap#, smallgap#) (bracketTop#, bracketBottom#); "Virgule (slash) `/'"; % The line. draw fatten rightof Bottom~Left -- leftof Top~Right endchar; % ------------------------------------------------------------------- bbchar (":") (medgap#, tiny#, medgap#) (aTop#, aBottom#); fatsymmetric; "Colon `:'"; % The top dot. draw splodge below Top~Middle; % The bottom dot. draw splodge above Bottom~Middle endchar; % ------------------------------------------------------------------- bbchar (";") (medgap#, tiny#, medgap#) (aTop#, aBottom# - comma_depth#); fatsymmetric; "Semicolon `;'"; % The upper dot. draw splodge below Top~Middle; % The lower dot and tail. draw splodger above aBottom~Middle .. Bottom~Left endchar; % ------------------------------------------------------------------- beginblacker 1.5; bbchar ("<") (biggap#, arithmetic#, biggap#) (math_axis# + 1/2lessthan#, math_axis# - 1/2lessthan#); "Less than sign `<'"; % The top diagonal. draw Top~Right --- Horizon~Left; % The bottom diagonal, fattened, and clipped by the top. % We need to carry on the diagonal past where it started, % so we extend it up to the top of the character. draw fatcliponce (leftof Bottom~Right --- rightof Horizon~Left .. farrightof Top~(2Left - Right)) (Top~Right -- Horizon~Left) endchar; endblacker; % ------------------------------------------------------------------- bbchar ("=") (medgap#, tiny#, medgap#) (math_axis# + 1/2tiny#, math_axis# - 1/2tiny#); fatsymmetric; "Centred dot"; % The dot. draw splodge above Bottom~Middle endchar; % ------------------------------------------------------------------- beginblacker 1.5; bbchar (">") (biggap#, arithmetic#, biggap#) (math_axis# + 1/2lessthan#, math_axis# - 1/2lessthan#); "Greater than sign `>'"; % The top diagonal. draw Top~Left --- Horizon~Right; % The bottom diagonal, fattened, and clipped by the top. % We need to carry on the diagonal past where it started, % so we extend it up to the top of the character. draw fatcliponce (rightof Bottom~Left --- leftof Horizon~Right .. farleftof Top~(2Right - Left)) (Top~Left -- Horizon~Right) endchar; endblacker; % ------------------------------------------------------------------- bbcap ("?") (medgap#, smallcap#, medgap#); fatsymmetric; "Question mark `?'"; % The height of the bottom of the curl. var (numeric) curlBottom; curlBottom = Bottom + fatness + space; % The curl. var (path) questionpath; questionpath = (Top - CCurl)~Left .. oabove Top~Middle {right} .. (1/3[Top, curlBottom])~Right {down} .. rightof (2/3[Top, curlBottom])~Middle {left} .. leftof curlBottom~Middle {down}; draw questionpath; % The emphasis, clipped with the bottom bit of the question path. draw fatcliponce (curlBottom~Middle -- oabove Top~Middle) (subpath (2, infinity) of questionpath); % The dot. draw splodge above Bottom~Middle endchar; % ------------------------------------------------------------------- bbchar ("@") (medgap#, tiny# + 2fatness#, medgap#) (ATop#, aBottom#); "At sign `@'"; % The curl. var (path) atpath; atpath = (Bottom + CCurl)~Right .. obelow Bottom~Middle {left} .. Horizon~Left {up} .. oabove Top~Middle {right} .. splodger leftof Horizon~Right; % The emphasis. draw fatcliptwice (obelow rightof Bottom~Left -- oabove rightof Top~Left) (atpath); % The curl. draw atpath endchar; % ------------------------------------------------------------------- bbchar ("[") (biggap#, tiny# + jut#, smallgap#) (bracketTop#, bracketBottom#); "Left square bracket `['"; % The vertical. draw fatten rightof Bottom~Left -- rightof Top~Left; % The top line. draw Top~Left -- Top~Right; % The bottom line. draw Bottom~Left -- Bottom~Right endchar; % ------------------------------------------------------------------- bbchar ("\") (smallgap#, smallcap#, smallgap#) (bracketTop#, bracketBottom#); "Reverse slash `\'"; % The line. draw fatten leftof Bottom~Right -- rightof Top~Left endchar; % ------------------------------------------------------------------- bbchar ("]") (smallgap#, tiny# + jut#, biggap#) (bracketTop#, bracketBottom#); "Right square bracket `]'"; % The vertical. draw fatten leftof Bottom~Right -- leftof Top~Right; % The top line. draw Top~Left -- Top~Right; % The bottom line. draw Bottom~Left -- Bottom~Right endchar; % ------------------------------------------------------------------- beginblacker 1.25; bbchar ("^") (biggap#, tiny# + jut#, smallgap#) (bracketTop#, bracketBottom#); "Left angle bracket"; % The emphasis, clipped by the bracket. draw fatcliptwice (rightof Bottom~Left -- rightof Top~Left) (Bottom~Right -- Horizon~Left -- Top~Right); % The bracket. draw Bottom~Right -- Horizon~Left -- Top~Right endchar; endblacker; % ------------------------------------------------------------------- beginblacker 1.25; bbchar ("_") (smallgap#, tiny# + jut#, biggap#) (bracketTop#, bracketBottom#); "Right angle bracket"; % The emphasis, clipped by the bracket. draw fatcliptwice (leftof Bottom~Right -- leftof Top~Right) (Bottom~Left -- Horizon~Right -- Top~Left); % The bracket. draw Bottom~Left -- Horizon~Right -- Top~Left endchar; endblacker; % ------------------------------------------------------------------- bbchar ("`") (medgap#, tiny#, medgap#) (bTop#, bTop# - tiny# - comma_depth#); fatsymmetric; "Reverse apostrophe ``'"; % The dot and tail. draw splodgel above Bottom~Middle .. Top~Right endchar; % ------------------------------------------------------------------- bbchar ("|") (biggap#, tiny#, biggap#) (bracketTop#, bracketBottom#); "Vertical bar `|'"; % The line. draw fatten Bottom~Middle -- Top~Middle endchar; % -------------------------------------------------------------------