% blackboard typefaces by Anthony Phan. % file: mbbromxl.mf (extended roman lowercase) % last modification: 25.10.2001. % Crossed letters are no more generated (except `bbcross_d'). % They appear only with Cork encoding. def horizontal_rules_list= -body_depth,-desc_depth,0.5x_height,x_height,cap_height, asc_height,body_height enddef; use_rule1; numeric slash_width; slash_width=hround(3.8u+hthick+thin); beginchar(bbes_zet,8u#+2appr#,asc_height#,0); "German letter es-zet"; italcorr 0.5[x_height#,asc_height#]*slant-.5u#; pickup circle.nib; lft x1=lft x2=apprl; rt x4=w-apprr; rt x6=w-apprr+ho; x3=x5=0.5[x1,x4]; x8-x1=hthick; bot y1=0; top y3=h+oo; top y5=x_height; y2=y4=0.5[y5,y3]; y6=0.5[y7,y5]; if ab_down_factor>0: bot y7=-oo; x7=ab_down_factor[(x1+x6)/2,(x1+x4+2x6)/4]; y8=ab_down_factor[top 0,y5]; else: bot y7=bot y8=0; x7=0.5[x1,x6]; fi tmp_path:=z1..z2 up_to_right z3 right_to_down z4 down_to_left z5 &z5 right_to_down z6 down_to_left z7 if ab_down_factor>0: left_to_up else: .. fi z8; draw tmp_path; bbbowl(z5,z6,z7,hThick) tmp_path; bbbowl(z3,z4,z5,max(0,x4-x.bowl.mid)) tmp_path; hbbowl(z3,z2,z1,hthick) tmp_path; pickup square.nib; draw z1..z.bowl.bot; square_end5(left); labels(1,2,3,4,5,6,7,8); endchar; iff variant_a: beginchar(bbae,16u#+ho#-thin#-hThick#+2appr#,x_height#,0); "The letter ae"; italcorr 0.6x_height#*slant+ho#-.5u#; save tmp_path; path tmp_path[]; numeric t[]; % `a' part center_bar(5,4); x3=x4; lft x1=apprl+hround 0.2u; top y2=h+uo; bot y4=0; y3=0.3[y2+oo-uo,y4]; bot y1=vround max(0.72h,y3); tmp_path1:=z4..z3 & elliptic_arc(3,2,1); hbbowl(z2,z3,z4,hthick) tmp_path1; z5=z.bowl.bot; x11=x7=x5; lft x9=apprl-ho; x8=0.5[x9,0.5[x5,x4]]; if ab_down_factor>0: bot y8=-oo; y7=ab_down_factor[y4,bot h]; else: y8=y7=y4; fi top y11=min(vround 0.7h,top y3); slope:=(y11-y4)/16u; ellipse_set(8,9,10,11); tmp_path2=z7 if ab_down_factor>0: down_to_left else: .. fi z8 left_to_up z9...z10---z11; if straight_bowl: bbbowl(z11,z9,z8,hThick) tmp_path2; else: begingroup interim superness:=superbowl; draw 0.5[z10,z11]{z10-z11}...(x9+hThick,y9) down_to_right z8; endgroup; fi draw tmp_path1; draw tmp_path2; pickup square.nib; draw z4..z5; square_end1(z1-z1'); % `e' part pickup circle.nib; rt x14=w-apprr+ho; x5-x16=ho; x19=x4; x15=x17=0.5[x14,x16]; top y15=h+uo; bot y17=-oo; y14=y16=y19=good.y(0.5[y15,y17]); tmp_path3=superellipse(z14,z15,z16,z17,superness); t1=xpart(tmp_path3 intersectiontimes tmp_path1); t2=xpart(tmp_path3 intersectiontimes ((x4,y16)..(x4,y17))); t3=xpart(tmp_path3 intersectiontimes (bot(w/2,0.25[y17,y15])..bot(w,0.25[y17,y15]))); z18=point t3 of tmp_path3; draw subpath (0,t1) of tmp_path3; draw z4--subpath (t2,t3) of tmp_path3; hbbowl(z15,z14,z14,hThick) tmp_path3; x19r=x19l=x19; x14r=x14; x14m=x14l=rt x14; y19r=y14r=top y14; y14m=y14; y14l=y19l=bot y14; fill z14l--z14m--z14r--z19r--z19l--cycle; square_end18(direction t3 of tmp_path3); labels(range 1 thru 19,14m,14l,14r,19l,19r); endchar; iff not variant_a: beginchar(bbae,16u#+ho#-thin#-hThick#+2appr#,x_height#,0); "The letter ae"; italcorr 0.6x_height#*slant+ho#-.5u#; center_bar(17',17); begingroup save apprr; apprr=w-rt x17; complete_left_lower(ab_down_factor,ab_up_factor); endgroup; numeric t[]; pickup circle.nib; rt x12=w-apprr+ho; x17'-x14=ho; x13=x15=0.5[x12,x14]; top y13=h+uo; bot y15=-oo; y12=y14=y17=y17'=good.y(0.5[y13,y15]); tmp_path:=superellipse(z12,z13,z14,z15,superness); t1=xpart(tmp_path intersectiontimes ((x1,y14)..(x1,y13))); t2=xpart(tmp_path intersectiontimes ((x1,y14)..(x1,y15))); t3=xpart(tmp_path intersectiontimes (bot(w/2,0.25[y15,y13])..bot(w,0.25[y15,y13]))); z16=point t3 of tmp_path; draw subpath (0,t1) of tmp_path--z17; draw z17--subpath (t2,t3) of tmp_path; hbbowl(z13,z12,z12,hThick) tmp_path; x17r=x17l=x17; x12r=x12; x12m=x12l=rt x12; y17r=y12r=top y12; y12m=y12; y12l=y17l=bot y12; fill z12l--z12m--z12r--z17r--z17l--cycle; square_end16(direction t3 of tmp_path); labels(12,12m,12l,12r,13,14,15,16,17,17',17l,17r,18,19); endchar; beginchar(bboe,16u#+2ho#-thin#-hThick#+2appr#,x_height#,0); "The letter oe"; italcorr 0.6x_height#*slant+ho#-.5u#; numeric t; pickup circle.nib; top y2=top y6=h+uo; bot y4=bot y8=-oo; y1=y3=y5=y7=good.y(0.5[y2,y4]); lft x3=apprl-ho; rt x5=w-apprr+ho; x2=x4=0.5[x3,x1]; x6=x8=0.5[x7,x5]; x1-x3=x5-x7; x1-x7=hThick; tmp_path:=superellipse(z1,z2,z3,z4,superness); tmpp_path:=superellipse(z5,z6,z7,z8,superness); bbbowl(z2,z3,z4,hThick) tmp_path; t=xpart(tmpp_path intersectiontimes (bot(x8,0.25[y8,y6])..bot(w,0.25[y8,y6]))); z13=point t of tmpp_path; draw tmp_path; draw subpath (0,t) of tmpp_path; hbbowl(z6,z5,z5,hThick) tmpp_path; x1r=x1l=x1; x5r=x5; x5m=x5l=rt x5; y1r=y5r=top y5; y5m=y5; y5l=y1l=bot y5; fill z5l--z5m--z5r--z1r--z1l--cycle; square_end13(direction t of tmpp_path); labels(range 1 thru 16,5m,5l,5r,1l,1r); endchar; beginchar(bbslash_o,8u#+2appr#,x_height#+0.5desc_depth#,0.5desc_depth#); "The letter slash o"; italcorr 0.6x_height#*slant+ho#-.5u#;% not perfect at all... pickup circle.nib; bbcircle1(apprl-ho,w-apprr+ho,x_height+uo,-oo); draw last_path; bbbowl(z1b,z1a,z1d,hThick) last_path; z3=z.bowl.top; bbbowl(z1b,z1c,z1d,hThick) last_path; z2=z.bowl.bot; y4=-d; y5=h; z4=whatever[z2,z3]; z5=whatever[z2,z3]; penpos4(diag_width(thin,z3-z2),0); penpos5(diag_width(thin,z3-z2),0); penstroke z4e..z5e; penlabels(2,3,4,5); endchar; iff known bbcross_d: beginchar(bbcross_d,8u#+2appr#,asc_height#,0); "The letter crossed d"; italcorr asc_height#*slant-1.5u#; pickup circle.nib; top y1=top y2=h; bot y4=-oo; top y6=x_height if ab_up_factor>0: +oo fi; y3=0.4[y4,y2]; y5=0.5[y4,y6]; if ab_up_factor>0: y7=ab_up_factor[bot x_height, top 0]; else: y7=y6; fi lft x1=apprl+hround u; rt x3=w-apprr+ho; lft x5=apprl-ho; x3-x7=hThick; x4=x6=0.5[x5,x3]; x2=0.25[x1,x7]; tmp_path:=z1..z2 right_to_down z3 down_to_left z4 left_to_up z5 up_to_right z6; draw tmp_path; bbbowl(z6,z5,z4,hThick) tmp_path; hbbowl(z2,(x3,y7),(x3,y7),x3-x7) tmp_path; hbbowl(z4,(x3,y5),(x3,y7),x3-x7) tmp_path; draw z6 if ab_up_factor>0: right_to_down else: .. fi z7; x8=x1; rt x9=w-apprr-hround u; y9=y2; y8=good.y 0.3[y6,y1]; draw z8..z9; square_end1(left); square_end8(z8-z9); square_end9(z8-z9); labels(1,2,3,4,5,6,7,8,9); endchar; iff known bbeng: beginchar(bbeng,8u#+2appr#,x_height#,desc_depth#); "Lowercase eng"; italcorr 0.75x_height#*slant-.5u#; j_bar:=true; complete_n; endchar; iff known bbthorn: beginchar(bbthorn,8u#+2appr#,asc_height#,desc_depth#); "Lowercase thorn"; italcorr 0.6x_height#*slant+ho#-.5u#; complete_right_lower(lower_down_curve_factor,lower_up_curve_factor); endchar;