% Card suit symbols (Spades, Hearts, Diamonds, Clubs) % filled and unfilled if unknown cmbase: input cmbase fi font_identifier:="SUITSYMBOLS"; font_size 10pt#; u#:=20/36pt#; % unit width width_adj#:=0pt#; % width adjustment for certain characters serif_fit#:=0pt#; % extra sidebar near lowercase serifs cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs letter_fit#:=0pt#; % extra space added to all sidebars body_height#:=270/36pt#; % height of tallest characters asc_height#:=250/36pt#; % height of lowercase ascenders cap_height#:=246/36pt#; % height of caps fig_height#:=232/36pt#; % height of numerals x_height#:=155/36pt#; % height of lowercase without ascenders math_axis#:=90/36pt#; % axis of symmetry for math symbols bar_height#:=87/36pt#; % height of crossbar in lowercase e comma_depth#:=70/36pt#; % depth of comma below baseline desc_depth#:=70/36pt#; % depth of lowercase descenders crisp#:=0pt#; % diameter of serif corners tiny#:=8/36pt#; % diameter of rounded corners fine#:=7/36pt#; % diameter of sharply rounded corners thin_join#:=7/36pt#; % width of extrafine details hair#:=9/36pt#; % lowercase hairline breadth stem#:=25/36pt#; % lowercase stem breadth curve#:=30/36pt#; % lowercase curve breadth ess#:=27/36pt#; % breadth in middle of lowercase s flare#:=33/36pt#; % diameter of bulbs or breadth of terminals dot_size#:=38/36pt#; % diameter of dots cap_hair#:=11/36pt#; % uppercase hairline breadth cap_stem#:=32/36pt#; % uppercase stem breadth cap_curve#:=37/36pt#; % uppercase curve breadth cap_ess#:=35/36pt#; % breadth in middle of uppercase s rule_thickness#:=.4pt#; % thickness of lines in math symbols dish#:=1/36pt#; % amount erased at top or bottom of serifs bracket#:=20/36pt#; % vertical distance from serif base to tangent jut#:=28/36pt#; % protrusion of lowercase serifs cap_jut#:=37/36pt#; % protrusion of uppercase serifs beak_jut#:=10/36pt#; % horizontal protrusion of beak serifs beak#:=70/36pt#; % vertical protrusion of beak serifs vair#:=8/36pt#; % vertical diameter of hairlines notch_cut#:=10pt#; % maximum breadth above or below notches bar#:=11/36pt#; % lowercase bar thickness slab#:=11/36pt#; % serif and arm thickness cap_bar#:=11/36pt#; % uppercase bar thickness cap_band#:=11/36pt#; % uppercase thickness above/below lobes cap_notch_cut#:=10pt#; % max breadth above/below uppercase notches serif_drop#:=4/36pt#; % vertical drop of sloped serifs stem_corr#:=1/36pt#; % for small refinements of stem breadth vair_corr#:=1/36pt#; % for small refinements of hairline height apex_corr#:=0pt#; % extra width at diagonal junctions o#:=8/36pt#; % amount of overshoot for curves apex_o#:=8/36pt#; % amount of overshoot for diagonal junctions slant:=0; % tilt ratio $(\Delta x/\Delta y)$ fudge:=1; % factor applied to weights of heavy characters math_spread:=0; % extra openness of math symbols superness:=1/sqrt2; % parameter for superellipses superpull:=1/6; % extra openness inside bowls beak_darkness:=11/30; % fraction of triangle inside beak serifs ligs:=2; % level of ligatures to be included square_dots:=false; % should dots be square? hefty:=false; % should we try hard not to be overweight? serifs:=true; % should serifs and bulbs be attached? monospace:=false; % should all characters have the same width? variant_g:=false; % should an italic-style g be used? low_asterisk:=false; % should the asterisk be centered at the axis? math_fitting:=false; % should math-mode spacing be used? if ligs>1: font_coding_scheme:="TeX text"; else: font_coding_scheme:=if ligs=0: "TeX typewriter text" else: "TeX text without f-ligatures" fi; fi mode_setup; font_setup; cmchar "Club suit"; beginchar(oct"001",14u#,asc_height#,2/3desc_depth#); adjust_fit(0,0); pickup rule.nib; autorounded; x1=x4=x30=x33=good.x .5w; center_on(x1); x2=good.x(x1-.5u)-eps; lft x1-rt x10=hround .5pt; lft x12=hround .5u; x11=.6[x12,x10]; x13=.5[x12,x10]=x5; x32-x31=x1-.5u-x12; x2+x3=x5+x6=x10+x20=x11+x21=x12+x22=x13+x23=x31+x32=2x1; top y30=h+o+oo; bot y11=bot y21=-o; top y13=top y23=vround .53h; y30-y33=y13-y11; y31=y32=y4=.5[y30,y33]; y12=y22=.5[y11,y13]; y1=y10=y20=good.y .1h; bot y5=bot y6=y1+.75; bot y2=bot y3=-d; filldraw z30{left}...z31{down}...z33{right}...z32{up}...cycle; % top bowl filldraw z13{left}...z12{down}...z11{right}...z10{up}...cycle; % left bowl filldraw z23{left}...z20{down}...z21{right}...z22{up}...cycle; % right bowl filldraw z1{down}...{2(x2-x1),y2-y1}z2--z3{2(x1-x3),y1-y3} ...{up}cycle; % stem filldraw z4--z5--z6--cycle; % filling labels(1,2,3,4,5,6,10,11,12,13,20,21,22,23,30,31,32,33); endchar; cmchar "Diamond suit"; beginchar(oct"002",14u#,asc_height#,2/3desc_depth#); adjust_fit(0,0); pickup rule.nib; autorounded; x1=x4=good.x .5w; center_on(x1); lft x2=hround u; x3=w-x2; top y1=h+o+oo; bot y4=-d-o-oo; y2=y3=.5[y1,y4]; draw z1{x3-x1,1.5(y3-y1)}...z3{1.5(x3-x1),y3-y1}; % upper right diagonal draw z1{x2-x1,1.5(y2-y1)}...z2{1.5(x2-x1),y2-y1}; % upper left diagonal draw z4{x2-x4,1.5(y2-y4)}...z2{1.5(x2-x4),y2-y4}; % lower left diagonal draw z4{x3-x4,1.5(y3-y4)}...z3{1.5(x3-x4),y3-y4}; % lower right diagonal labels(1,2,3,4); endchar; cmchar "Heart suit"; beginchar(oct"003",14u#,asc_height#,2/3desc_depth#); adjust_fit(0,0); pickup rule.nib; autorounded; x1=x5=good.x .5w; center_on(x1); lft x7=hround u; x8=4u; x2+x8=x3+x7=x4+x6=w; y1=good.y .77h; top y2=h+o; y3=.7h; y4=.2h; bot y5=-o-oo; y2=y8; y3=y7; y4=y6; z4=whatever[z3,z5]; x0=x9=w; y0=1.5h; y9=.6h; draw z1{x2-x1,8(y2-y1)}...z2{right}....z3{down}...{z4-z9}z4 ...{z5-z0}z5; % right half bowl draw z1{x8-x1,8(y8-y1)}...z8{left}....z7{down}...{(z4-z9)xscaled-1}z6 ...{(z5-z0)xscaled-1}z5; % left half bowl labels(0,1,2,3,4,5,6,7,8,9); endchar; cmchar "Spade suit"; beginchar(oct"004",14u#,asc_height#,2/3desc_depth#); adjust_fit(0,0); pickup rule.nib; autorounded; x1=x10=good.x .5w; center_on(x1); x2=good.x(x1-.5u)-eps; lft x1-rt x6=hround .5pt; x5=x6; x7=.5[x8,x6]; lft x8=hround u; x2+x3=x5+x15=x6+x14=x7+x13=x8+x12=x9+x11=2x10; top y10=h+o+oo; y9=y11=.7h; y8=y12=.3h; y1=y6=y14=good.y .1h; bot y5=bot y15=y1+.75; bot y7=bot y13=-o; bot y2=bot y3=-d; z9=whatever[z8,z10]; filldraw z10{-w,-3h}...z9{-w,-h}...z8{down}...z7{right}...z6---z5 --z15---z14...{right}z13...{up}z12...{-w,h}z11 ...{-w,3h}cycle; % filled bowl filldraw z1{down}...{2(x2-x1),y2-y1}z2--z3{2(x1-x3),y1-y3} ...{up}cycle; % stem labels(1,2,3,5,6,7,8,9,10,11,12,13,14,15); endchar; cmchar "Diamond suit filled"; beginchar(oct"005",14u#,asc_height#,2/3desc_depth#); adjust_fit(0,0); pickup rule.nib; autorounded; x1=x4=x5=good.x .5w; center_on(x1); lft x2=hround u; x3=w-x2; top y1=h+o+oo; bot y4=-d-o-oo; y2=y3=y5=.5[y1,y4]; filldraw z1{x3-x1,1.5(y3-y1)}...z3{1.5(x3-x1),y3-y1}--z5--cycle; % upper right diagonal filldraw z1{x2-x1,1.5(y2-y1)}...z2{1.5(x2-x1),y2-y1}--z5--cycle; % upper left diagonal filldraw z4{x2-x4,1.5(y2-y4)}...z2{1.5(x2-x4),y2-y4}--z5--cycle; % lower left diagonal filldraw z4{x3-x4,1.5(y3-y4)}...z3{1.5(x3-x4),y3-y4}--z5--cycle; % lower right diagonal labels(1,2,3,4); endchar; cmchar "Heart suit filled"; beginchar(oct"006",14u#,asc_height#,2/3desc_depth#); adjust_fit(0,0); pickup rule.nib; autorounded; x1=x5=good.x .5w; center_on(x1); lft x7=hround u; x8=4u; x2+x8=x3+x7=x4+x6=w; y1=good.y .77h; top y2=h+o; y3=.7h; y4=.2h; bot y5=-o-oo; y2=y8; y3=y7; y4=y6; z4=whatever[z3,z5]; x0=x9=w; y0=1.5h; y9=.6h; filldraw z1{x2-x1,8(y2-y1)}...z2{right}....z3{down}...{z4-z9}z4 ...{z5-z0}z5--cycle; % right half bowl filldraw z1{x8-x1,8(y8-y1)}...z8{left}....z7{down}...{(z4-z9)xscaled-1}z6 ...{(z5-z0)xscaled-1}z5--cycle; % left half bowl labels(0,1,2,3,4,5,6,7,8,9); endchar; font_slant slant; font_x_height x_height#; if monospace: font_normal_space 9u#; % no stretching or shrinking font_quad 18u#; font_extra_space 9u#; else: font_normal_space 6u#+2letter_fit#; font_normal_stretch 3u#; font_normal_shrink 2u#; font_quad 18u#+4letter_fit#; font_extra_space 2u#; fi bye.