% blackboard typefaces by Anthony Phan. % file: mbbdrivr.mf (driver file) % last modification: 25.10.2001. font_coding_scheme "Unknown"; mode_setup; font_setup; font_coding_scheme:="Unknown"; % skewchar:=hex"7F"; % hypenchar:=hex"60"; % roman bblig_ct :=hex"09"; bblig_st :=hex"0A"; bblig_ff :=hex"0B"; bblig_fi :=hex"0C"; bblig_fl :=hex"0D"; bblig_ffi :=hex"0E"; bblig_ffl:=hex"0F"; bbdotless_i:=hex"10"; bbdotless_j:=hex"11"; % roman extension bbes_zet:=hex"19"; bbae :=hex"1A"; bboe:=hex"1B"; bbslash_o:=hex"1C"; bbAE :=hex"1D"; bbOE:=hex"1E"; bbslash_O:=hex"1F"; % bbcross_d:=hex"F8"; % bbEng:=hex"F4"; bbeng:=hex"FC"; % bbThorn:=hex"F5"; bbthorn:=hex"FD"; % accents bbgrave :=hex"12"; bbacute :=hex"13"; bbhacheck :=hex"14"; bbbreve :=hex"15"; bbmacron :=hex"16"; bbcirc_accent:=hex"17"; bbcedilla :=hex"18"; bbcircumflex :=hex"5E"; bbdotaccent:=hex"5F"; bblong_umlaut:=hex"7D"; bbtilde :=hex"7E"; bbumlaut :=hex"7F"; % bbleft_slanted_cross:=hex"20";% polish % bbogonek:=hex"22";% Polish % greek accents % bbstraight_accent:=hex"C8"; % bbrough:=hex"C9"; bbsmooth:=hex"CA"; % bbgreek_tilde:=hex"CB"; % bbrough_tilde:=hex"CC"; bbsmooth_tilde:=hex"CD"; % bbsubscript_iota:=hex"CE"; % punctuation bbnormal_space :=hex"20"; bbasterisk :=hex"2A"; bbcomma :=hex"2C"; bbperiod :=hex"2E"; bbcolon :=hex"3A"; bbsemicolon :=hex"3B"; bbquestion_mark :=hex"3F"; bbexclamation_point :=hex"21"; bbspanish_shriek:=hex"07"; bbspanish_query :=hex"08"; bbslash :=hex"2F"; bbback_slash :=hex"5C"; parenthesis_left:=hex"28"; parenthesis_right :=hex"29"; bracket_left :=hex"5B"; bracket_right :=hex"5D"; brace_left :=hex"DB"; vertical :=hex"DC" ; brace_right:=hex"DD"; angle_left :=hex"DE"; angle_right :=hex"DF"; bbfso_quotes :=hex"00"; bbfsc_quotes :=hex"01"; bbfdo_quotes :=hex"02"; bbfdc_quotes :=hex"03"; bbapostrophe :=hex"27"; bbreverse_apostrophe:=hex"60"; bbopening_quotes:=hex"04"; bbclosing_quotes :=hex"05"; % bbgerman_opening_comma:=hex""; bbgerman_opening_quotes:=hex"06"; bbstraight_quotes:=hex"22"; % ASCII location bbdash:=hex"2D"; bben_dash:=hex"7B"; bbem_dash:=hex"7C"; % bbvariant_dash:=hex"";% centered dash. % bbunderscore:=hex""; % blackboard symbols plus_sign :=hex"2B"; equal_sign :=hex"3D"; hash_sign :=hex"23"; inferior_sign :=hex"3C"; superior_sign :=hex"3E"; % bbhash_mark :=hex"23"; bbdollar :=hex"24"; bbpercent :=hex"25"; bbampersand :=hex"26"; bbat_sign :=hex"40"; bbpartial :=hex"A0"; bbWeierstrass_p:=hex"80"; % bbperthousand :=hex"E8"; % bbpertenthousand:=hex"E9"; bbeuro :=hex"FB"; bbpound :=hex"FC"; bbcent :=hex"FD"; bbyen :=hex"FE"; % bbshereq :=hex"FF"; % bbestimated :=hex"EE"; % bbbar_h :=hex"F7"; % bbcross_h :=hex"FF"; ligtable inferior_sign: inferior_sign=:bbfdo_quotes; ligtable superior_sign: superior_sign=:bbfdc_quotes; ligtable bbdash: bbdash=:bben_dash; ligtable bben_dash: bbdash=:bbem_dash; ligtable bbreverse_apostrophe: bbreverse_apostrophe=:bbopening_quotes; ligtable bbapostrophe: bbapostrophe=:bbclosing_quotes; ligtable bbcomma: bbcomma=:bbgerman_opening_quotes; ligtable bbexclamation_point: bbreverse_apostrophe=:bbspanish_shriek; ligtable bbquestion_mark: bbreverse_apostrophe=:bbspanish_query; % greek uppercase bbAlpha:=hex"81"; bbBeta :=hex"82"; bbGamma :=hex"83"; bbDelta:=hex"84"; bbEpsilon:=hex"85"; bbZeta :=hex"86"; bbEta :=hex"87"; bbTheta :=hex"88"; bbIota :=hex"89"; bbKappa:=hex"8A"; bbLambda :=hex"8B"; bbMu :=hex"8C"; bbNu :=hex"8D"; bbXi :=hex"8E"; bbOmicron:=hex"8F"; bbPi :=hex"90"; bbRho :=hex"91"; bbSigma :=hex"92"; bbTau :=hex"93"; bbUpsilon:=hex"94"; bbPhi :=hex"95"; bbChi :=hex"96"; bbPsi :=hex"97"; bbOmega :=hex"98"; % varUpsilon:=hex""; % greek like symbols bbnabla :=hex"9A"; bbcoprod :=hex"9B"; bbmho:=hex"9C"; bbslash_Sigma:=hex"9D"; bbslash_nabla:=hex"9E"; % ionian uppercase % bbDigamma:=hex"C0"; bbKoppa:=hex"C1"; bbSampi:=hex"C2"; % greek lowercase bbalpha:=hex"A1"; bbbeta :=hex"A2"; bbgamma :=hex"A3"; bbdelta:=hex"A4"; bbepsilon:=hex"A5"; bbzeta :=hex"A6"; bbeta :=hex"A7"; bbtheta :=hex"A8"; bbiota :=hex"A9"; bbkappa:=hex"AA"; bblambda :=hex"AB"; bbmu :=hex"AC"; bbnu :=hex"AD"; bbxi :=hex"AE"; bbomicron:=hex"AF"; bbpi :=hex"B0"; bbrho :=hex"B1"; bbsigma :=hex"B2"; bbtau :=hex"B3"; bbupsilon:=hex"B4"; bbphi :=hex"B5"; bbchi :=hex"B6"; bbpsi :=hex"B7"; bbomega :=hex"B8"; % variants %bbvarbeta:=hex"9F"; bbvarepsilon:=hex"B9"; bbvartheta:=hex"BA"; bbvarkappa :=hex"BB"; bbvarpi :=hex"BC"; bbvarrho :=hex"BD"; bbvarsigma:=hex"BE"; bbvarphi :=hex"BF"; % greek like letters bbslash_lambda:=hex"9F"; % ionian lowercase % bbdigamma:=hex"C3"; bbkoppa:=hex"C4"; bbsampi:=hex"C5"; bbvardigamma:=hex"99"; % bbvarkoppa:=hex"C7"; % Activate to allow characters with undefined code. % (for proof mode compilation) % let iff=always_iff; % let the show begin : input mbbromup; input mbbromlo; input mbbromlg; input mbbromxu; input mbbromxl; input mbbaccnt; input mbbdigit; input mbbsymbl; input mbbpunct; input mbbgrkup; input mbbgrklo; % input mbbextra; %% ligtable's funny examples: %% || is the left boundary character that precede every word. %% Defining is ligtable allows to produce automatic replacements %% such as for beta (or hebrew letters with final forms). %% {\it boundarychar\/} is an internal variable which has to be %% set to a value between 0 and 255. The corresponding character %% plays the symmetric role of ||. % boundarychar:=0; % ligtable ||:bbvarbeta=:bbbeta; % ligtable "u": boundarychar=:bbSigma; % parameters for TFM files. font_slant=slant; font_x_height=x_height#; font_normal_stretch=3u#; font_normal_shrink=2u#; font_quad=18u#+4letter_fit#; font_extra_space=2u#; font_normal_space=6u#+2letter_fit#; k#:=-.25u#; kk#:=-0.5u#; kkk#:=-0.75u#; kkkk#:=-u#;% 4 degrees of kerning ligtable "f" : "f" =: bblig_ff, "i" =: bblig_fi, "l"=:bblig_fl, "f" =: bblig_ff, bbapostrophe kern 1.25u#, bbquestion_mark kern 1.25u#, bbexclamation_point kern 1.25u#, parenthesis_right kern 1.25u#, bracket_right kern 1.25u#, brace_right kern 1.25u#, skipto 1; ligtable bblig_ff : "i" =: bblig_ffi, "l" =: bblig_ffl, bbapostrophe kern 1.25u#, bbquestion_mark kern 1.25u#, bbexclamation_point kern 1.25u#, parenthesis_right kern 1.25u#, bracket_right kern 1.25u#, brace_right kern 1.25u#, skipto 1; %ligtable "c" : "t"=: bblig_ct; %ligtable "s" : "t"=: bblig_st; ligtable "e" : "o" : "b" : "p" : bbae: bboe: bbslash_o: bbdelta: bbomicron: bbphi: bbvarphi: bbrho: bbvarrho: bbomega: "x" kern kkk#, "v" kern kk#, "w" kern k#, "z" kern kk#, bbgamma kern kk#, bblambda kern kk#, bbtau kern kk#, bbchi kern kkk#, bbvarkappa kern kkk#; ligtable 1:: "v" : "z" : bbgamma: bblambda: bbtau: "a" kern kk#, "e" kern kk#, "o" kern kk#, "c" kern kk#, "d" kern kk#, "g" kern kk#, "q" kern kk#, bbae kern kk#, bboe kern kk#, bbslash_o kern kk#, bbalpha kern kk#, bbepsilon kern kk#, bbdelta kern kk#, bbphi kern kk#, bbvarphi kern kk#, bbomega kern kk#; ligtable "r" : "w" : "a" kern k#, "e" kern k#, "o" kern k#, "c" kern k#, "d" kern k#, "g" kern k#, "q" kern k#, bbae kern k#, bboe kern k#, bbslash_o kern k#, bbalpha kern k#, bbepsilon kern k#, bbdelta kern k#, bbphi kern k#, bbvarphi kern k#, bbomega kern k#; ligtable "k" : "x" : bbxi: bbzeta: bbkappa: bbchi: bbvarkappa: "a" kern kkk#, "e" kern kkk#, "o" kern kkk#, "c" kern kkk#, "d" kern kkk#, "g" kern kkk#, "q" kern kkk#, bbae kern kkk#, bboe kern kkk#, bbslash_o kern kkk#, bbalpha kern kkk#, bbepsilon kern kkk#, bbdelta kern kkk#, bbphi kern kkk#, bbvarphi kern kkk#, bbomega kern kkk#; % hebrew encoding numeric bbhebr[];%bbhebvow[],bbhebmas[]; for i=0 upto 26: bbhebr[i]=hex"C0"+i; endfor% can go up to 31 % ligtable bbhebr[5]: bbhebr[5]=:bbhebr[27]; % ligtable bbhebr[9]:bbhebr[5]=:bbhebr[28],bbhebr[9]=:bbhebr[29]; % for i=0 upto 31: bbhebmas[i]=hex"A0"+i; endfor % for i=0 upto 20: bbhebvow[i]=hex"C0"+i; endfor input mbbhebrw; dagesh_accent:=hex"FF"; ligtable dagesh_accent: bbhebr[0]=:bbhebr[0]+32, bbhebr[1]=:bbhebr[1]+32, bbhebr[2]=:bbhebr[2]+32, bbhebr[3]=:bbhebr[3]+32, bbhebr[4]=:bbhebr[4]+32, bbhebr[5]=:bbhebr[5]+32, bbhebr[6]=:bbhebr[6]+32, bbhebr[7]=:bbhebr[7]+32, bbhebr[8]=:bbhebr[8]+32, bbhebr[9]=:bbhebr[9]+32, bbhebr[10]=:bbhebr[10]+32, bbhebr[11]=:bbhebr[11]+32, bbhebr[12]=:bbhebr[12]+32, bbhebr[13]=:bbhebr[13]+32, bbhebr[14]=:bbhebr[14]+32, bbhebr[15]=:bbhebr[15]+32, bbhebr[16]=:bbhebr[16]+32, bbhebr[17]=:bbhebr[17]+32, bbhebr[18]=:bbhebr[18]+32, bbhebr[19]=:bbhebr[19]+32, bbhebr[20]=:bbhebr[20]+32, bbhebr[21]=:bbhebr[21]+32, bbhebr[22]=:bbhebr[22]+32, bbhebr[23]=:bbhebr[23]+32, bbhebr[24]=:bbhebr[24]+32, bbhebr[25]=:bbhebr[25]+32, bbhebr[26]=:bbhebr[26]+32; dagesh_mark:=true; for i=0 upto 26: bbhebr[i]:=hex"E0"+i; endfor input mbbhebrw; % input mbbhebvw; % input mbbhebma; % ligtable "A": "L": bbDelta : bbLambda : % "T" kern -2u#, "V" kern -2u#, "W" kern -2u#, "Y" kern -2u#, % bbTau kern -2u#, bbUpsilon kern -2u#; % ligtable "T" : "V" : "W" : "Y" : bbTau : bbUpsilon : % "a" kern -2u#, "c" kern -2u#, "d" kern -2u#, "e" kern -2u#, % "g" kern -2u#, "m" kern -2u#, "n" kern -2u#, "o" kern -2u#, % "q" kern -2u#,"r" kern -2u#,"s" kern -2u#,"u" kern -2u#, % "v" kern -2u#,"w" kern -2u#,"x" kern -2u#,"y" kern -2u#, % "y" kern -2u#, % bbalpha kern -2u#, bbgamma kern -2u#, bbepsilon kern -2u#, % bbvarepsilon kern -2u#, bbeta kern -2u#, bbiota kern -2u#, % bbkappa kern -2u#, bbvarkappa kern -2u#, bbmu kern -2u#, % bbnu kern -2u#, bbomicron kern -2u#, bbpi kern -2u#, % bbvarpi kern -2u#, bbrho kern -2u#, bbvarrho kern -2u#, % bbsigma kern -2u#, bbvarsigma kern -2u#, % bbtau kern -2u#, bbupsilon kern -2u#, bbphi kern -2u#, % bbchi kern -2u#, bbpsi kern -2u#, bbomega kern -2u#, % "A" kern -2u#, bbDelta kern -2u#,bbLambda kern -2u#; end.