diff options
Diffstat (limited to 'Master/texmf-dist/fonts/source/public/mathabx/mathcall.mf')
-rw-r--r-- | Master/texmf-dist/fonts/source/public/mathabx/mathcall.mf | 1464 |
1 files changed, 1464 insertions, 0 deletions
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathcall.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathcall.mf new file mode 100644 index 00000000000..54c2c06236e --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathcall.mf @@ -0,0 +1,1464 @@ +% mathematical symbols by Anthony Phan. +% file: mathcall.mf (calligraphic font) +% last modification: May 16, 2005. + +% +% LOWERCASE +% +% design, metrics and italic corrections checked (nov. 28, 2002). +% + +cmchar "Calligraphic a"; +beginchar("a", 9u#, x_height#, 0); + italcorr max(0.15x_height#*slant+0.5lower_cal_width#, + x_height#*slant+0.5lower_cal_width#-2u#) if math_fitting: -0.5u# fi; + adjust_fit(0, 0); + % + pickup lower_cal.nib; + top y1 = vround 0.98h; x1 = x2 = good.x(w-2.5u); x4 = w; + draw z1..hook_out(2, 3, 4); + top y6 = x_height+oo; bot y8 = -oo; y5 = y7 = 0.5[y6, y8]; + x5 = x1; x7 = good.x(1.25u); x6 = x8 = 0.5[x5, x7]; + draw z5 up_to_left z6 left_to_down z7 + down_to_right z8 right_to_up z5; + math_fit(-.3x_height#*slant+0.5curve#-u#, ic#); + labels(1, 2, 3, 4, 5, 6, 7, 8); +endchar; + +cmchar "Calligraphic b"; +beginchar("b", 8u#, asc_height#, 0); + italcorr .75x_height#*slant+0.5curve#-u# if math_fitting: -0.5u# fi; + adjust_fit(0, 0); + % + pickup lower_cal.nib; + top y1 = h; y2 = 0.5x_height; bot y3 = -oo; + y4 = 0.5x_height; top y5 = x_height+oo; + x1 = x2 = good.x 1.5u; x3 = 0.5[x2, x4]; + x4 = good.x(w-1.25u); x5 = 0.5[x2, x4]; + draw z1-cal.extension--z1..z2{down} + ...z3{right}...z4{up}...z5{left}...z2{down}; + % + math_fit(-.3x_height#*slant+0.5curve#-u#, ic#); + labels(1, 2, 3, 4, 5); +endchar; + +cmchar "Calligraphic c"; +beginchar("c", 8u#, x_height#, 0); + italcorr max(0.25x_height#*slant+0.5lower_cal_width#, + 0.85x_height#*slant+0.5lower_cal_width#-1.1u#); + adjust_fit(0, 0); + % + pickup lower_cal.nib; + x2-x1 = hround u; rt x2 = hround(w-1.1u); + if x2 > w-1.25u: x2 := good.x w-1.25u; fi + x3 = 0.6[x4, x2]; x4 = good.x 1.25u; + x5 = 0.5[x4, x6]; x6 = good.x w; + top y3 = h+oo; y4 = .5h; bot y5 = -oo; + y1 = good.y 0.65[y5, y3]; y2 = .8[y5, y3]; + y6 = good.y 1/4x_height; + draw z1 ... z2 up_to_left z3 left_to_down + z4 down_to_right z5...z6; + % + math_fit(-.3x_height#*slant+0.5curve#-u#, ic#); + labels(1, 2, 3, 4, 5, 6); +endchar; + +cmchar "Calligraphic d"; +beginchar("d", 9u#, asc_height#, 0); + italcorr max(0.15x_height#*slant+0.5lower_cal_width#, + h#*slant+0.5lower_cal_width#-2u#) if math_fitting: -0.5u# fi; + adjust_fit(0, 0); + % + pickup lower_cal.nib; + top y1 = h; x1 = x2 = good.x(w-2.5u); x4 = w; + draw z1-cal.extension--z1---hook_out(2, 3, 4); + top y6 = x_height+oo; bot y8 = -oo; y5 = y7 = 0.5[y6, y8]; + x5 = x1; x7 = good.x(1.25u); x6 = x8 = 0.5[x5, x7]; + draw z5 up_to_left z6 left_to_down z7 + down_to_right z8 right_to_up z5; + % + math_fit(-.3x_height#*slant+0.5curve#-u#, ic#); + labels(1, 2, 3, 4, 5, 6, 7, 8); +endchar; + +cmchar "Calligraphic e"; +beginchar("e", 8u#, x_height#, 0); + italcorr max(0.25x_height#*slant+0.5lower_cal_width#, + 0.85x_height#*slant+0.5lower_cal_width#-1.1u#); + adjust_fit(0, 0); + % + pickup lower_cal.nib; + rt x1 = hround(w-1.1u); x2 = 0.6[x3, x1]; + if x1 > w-1.25u: x1 := good.x w-1.25u; fi + x3 = good.x 1.25u; x4 = 0.5[x3, x5]; x5 = good.x w; + y1 = 0.8[y4, y2]; top y2 = h+oo; y3 = .5h; bot y4 = -oo; + y5 = good.y 1/4x_height; + draw z3 right_to_up z1 up_to_left z2 + left_to_down z3 down_to_right z4...z5; + % + math_fit(-.3x_height#*slant+0.5curve#-u#, ic#); + labels(1, 2, 3, 4, 5); +endchar; + +cmchar "Calligraphic f"; +beginchar("f", 5.5u#, asc_height#, desc_depth#); + italcorr asc_height#*slant+.75u#; + adjust_fit(0, 0); + % + pickup lower_cal.nib; + z88 = (0.5w-0.5u, h); z89 = (0.5w+0.5u, -d); + top y2 = h+oo; bot y5 = -d-oo; top y8 = top y9 = x_height; + y2-y0 = y6-y5 = vround 0.35min(d, h-x_height); + y1 = 0.5[y0, y2]; y6 = 0.5[y5, y7]; + y3 = 0.25[x_height, y2]; y4 = 0.5[y5, y3]; + rt x1-w = -lft x6 = hround 0.25u; x7-x6 = hround 0.5u; + x0 = x1; x2 = 0.4[x1, x3]; x5 = 0.4[x6, x4]; + z3 = whatever[z88, z89]; z4 = whatever[z88, z89]; + lft x8 = hround(lft x3-0.5stem-1.25u); + rt x9 = hround(rt x3+0.5stem+1.7u); + draw (z0--z1) softjoin (z1 up_to_left z2....z3 + ---z4....z5{left}...z6);%...z7); + draw z8..z9; + % + math_fit(desc_depth#*slant+u#, x_height#*slant); + labels(1, 2, 3, 4, 5, 6, 7, 8); +endchar; + +cmchar "Calligraphic g"; +beginchar("g", 8u#, x_height#, desc_depth#); + italcorr x_height#*slant+0.5lower_cal_width#-u#; + adjust_fit(0, 0); + % + pickup lower_cal.nib; + top y1 = vround 0.98h; + top y6 = x_height+oo; bot y8 = -oo; y5 = y7 = 0.5[y6, y8]; + x1 = x2 = x5 = good.x(w-1.5u); x4 = 1.5u; + x7 = good.x(1.25u); x6 = x8 = 0.5[x5, x7]; + draw z1..desc_curve(2, 3, 4); + draw z5 up_to_left z6 left_to_down z7 + down_to_right z8 right_to_up z5; + % + math_fit(-min(.3x_height#*slant+0.5curve#-u#, + 1.5u#-desc_depth#*slant), ic#-1/3x_height#*slant); + labels(1, 2, 3, 4, 5, 6, 7, 8); +endchar; + +cmchar "Calligraphic h"; +beginchar("h", 9u#, asc_height#, 0); + italcorr max(0.15x_height#*slant+0.5lower_cal_width#, + 0.75x_height#*slant+0.5lower_cal_width#-2u#); + adjust_fit(0, 0); + % + pickup lower_cal.nib; + top y1 = h; bot y2 = -oo; + x1 = x2 = good.x 1.5u; + x4 = w-2.45u; x5 = w-2.80u; x7 = w; + draw z1-cal.extension--z1--z2 + --ital_arch(2, 3, 4)...hook_out(5, 6, 7); + % + math_fit(0, ic#); + labels(1, 2, 3, 4, 5, 6, 7); +endchar; + +cmchar "Calligraphic i"; +beginchar("i", 5u#, min(10/7x_height#+0.5flare#, asc_height#), 0); + italcorr max(0.15x_height#*slant+0.5lower_cal_width#, + (h#-0.5flare#)*slant + -2.5u#-0.4(h#-x_height#)*slant+0.5flare#+0.5u#); + adjust_fit(0, 0); + % + pickup lower_cal.nib; + x1 = 0; x3 = good.x(0.5w+0.30u); + x4 = good.x(0.5w-0.30u); x6 = w; + draw hook_in(1, 2, 3)...hook_out(4, 5, 6); + % + pickup fine_cal.nib; + cal_dot7(0.5w-0.4(h-x_height)*slant, h+1-0.5flare, flare); + % + math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#); + labels(1, 2, 3, 4, 5, 6); penlabels(7, 7'); +endchar; + +cmchar "Calligraphic j"; +beginchar("j", 5u#, min(10/7x_height#+0.5flare#, asc_height#), desc_depth#); + italcorr max(0.8x_height#*slant+0.5lower_cal_width#-u#, + (h#-0.5flare#)*slant + -1.5u#+0.5lower_cal_width#-0.6(h#-x_height#)*slant+0.5u#); + adjust_fit(0, 0); + % + pickup lower_cal.nib; + x1 = 0; x3 = x4 = good.x(w-1.5u); + x6 = good.x 0; x0 = rt x3; + draw hook_in(1, 2, 3)..desc_curve(4, 5, 6); + % + pickup fine_cal.nib; + cal_dot7(x0-0.5flare-0.6(h-x_height)*slant, h+1-0.5flare, flare); + % + math_fit(desc_depth#*slant, x_height#*slant+0.5stem#-u#); + labels(1, 2, 3, 4, 5, 6); penlabels(7, 7'); +endchar; + +cmchar "Calligraphic k"; +beginchar("k", 8.5u#, asc_height#, 0); + italcorr max(0.2x_height#*slant+0.1w#, + 0.95x_height#*slant-0.1w#+0.5u#); + adjust_fit(0, 0); + % + pickup lower_cal.nib; + top y1 = h; bot y2 = -oo; x1 = x2 = good.x 1.5u; + draw z1-cal.extension--z1--z2; + % + rt x4 = .9w; x5 = x4-.1w; x7 = .8w; rt x8 = 1.1w; + y4 = .9x_height; top y5 = x_height+oo; bot y7 = -oo; y8 = .2x_height-oo; + (lft z6)t_ = (x2, 0.4x_height).t_+penoffset up of pen_[lower_cal.nib]; + draw z4{up}...{left}z5..tension atleast 2..{down}z6 + ..tension atleast 3 and atleast 2..z7{right}...{up}z8; % diagonals + % + math_fit(0, 1/3x_height#*slant+0.5hair#+0.5u#); + labels(1, 2, 3, 4, 5, 6, 7, 8); +endchar; + +cmchar "Calligraphic l"; +beginchar("l", 4.5u#, asc_height#, 0); + italcorr max(0.15x_height#*slant+0.5lower_cal_width#, + asc_height#*slant+0.5lower_cal_width#-2.1u#) if math_fitting: +0.5u# fi; + adjust_fit(0, 0); + % + pickup lower_cal.nib; + top y1 = h; x1 = x2 = good.x 1.9u; x4 = w; + draw z1-cal.extension--z1---hook_out(2, 3, 4); + % + math_fit(-0.5u#, 1/3x_height#*slant+0.5hair#+u#); + labels(1, 2, 3, 4, 5, 6, 7); +endchar; + +cmchar "Calligraphic m"; +beginchar("m", 15u#, x_height#, 0); + italcorr max(0.15x_height#*slant+0.5lower_cal_width#, + 0.75x_height#*slant+0.5lower_cal_width#-2u#); + adjust_fit(0, 0); + % + pickup lower_cal.nib; + x1 = 0; x3 = x4 = good.x 2.5u; x6 = x7 = good.x 0.5w; + x9 = good.x(w-2.45u); x10 = good.x(w-2.80u); x12 = w; + bot y4 = bot y7 = -oo; + draw hook_in(1, 2, 3)---z4; + draw ital_arch(4, 5, 6)---z7; + draw ital_arch(7, 8, 9)...hook_out(10, 11, 12); + % + math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#); + labels(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12); +endchar; + +cmchar "Calligraphic n"; +beginchar("n", 10u#, x_height#, 0); + italcorr max(0.15x_height#*slant+0.5lower_cal_width#, + 0.75x_height#*slant+0.5lower_cal_width#-2u#); + adjust_fit(0, 0); + % + pickup lower_cal.nib; + x1 = 0; x3 = x4 = good.x 2.5u; bot y4 = -oo; + x6 = good.x(w-2.45u); x7 = good.x(w-2.80u); + x9 = w; + draw hook_in(1, 2, 3)---z4; + draw ital_arch(4, 5, 6)...hook_out(7, 8, 9); + % + math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#); + labels(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); +endchar; + +cmchar "Calligraphic o"; +beginchar("o", 9u#, x_height#, 0); + italcorr .7x_height#*slant+0.5lower_cal_width#-u# + if math_fitting: -0.5u# fi; + adjust_fit(0, 0);%(-0.25u#, -0.25u#); + % + pickup lower_cal.nib; + top y1 = h+oo; bot y3 = -oo; y2 = y4 = 0.5[y1, y3]; + x2 = good.x 1.25u; x4 = good.x(w-1.25u); x1 = x3 = 0.5[x2, x4]; + draw z1 left_to_down z2 down_to_right + z3 right_to_up z4 up_to_left z1; + % not good +% x5 = good.x 0.75[x2, x1]; x6 = 0.5[x5, x7]; x7 = good.x w; +% y5 = 0.75[y6, y1]; y6 = good.y 0.6[y3, y1]; y7 = good.y 3/4x_height; +% draw z1{left}...z5 down_to_right z6...z7; + % + math_fit(-.3x_height#*slant+0.5curve#-u#, ic#); + labels(1, 2, 3, 4, 5, 6, 7); +endchar; + +cmchar "Calligraphic p"; +beginchar("p", 9u#, x_height#, desc_depth#); + italcorr .7x_height#*slant+0.5lower_cal_width#-u# + if math_fitting: -0.5u# fi; + adjust_fit(0, 0); + % + pickup lower_cal.nib; + x1 = 0; x3 = x4 = good.x 2.5u; bot y4 = -d-eps; + draw hook_in(1, 2, 3)..z4; + top y6 = x_height+oo; bot y8 = -oo; y5 = y7 = 0.5[y6, y8]; + x5 = good.x(w-1.25u); x7 = x3; x6 = x8 = 0.5[x5, x7]; + draw z5 up_to_left z6 left_to_down z7 + down_to_right z8 right_to_up z5; + % + math_fit(-min(2/3x_height#*slant-0.5hair#-0.5u#, + 2u#-0.5stem#-desc_depth#*slant), ic#); + labels(1, 2, 3, 4, 5, 6, 7, 8); +endchar; + +cmchar "Calligraphic q"; +beginchar("q", 8u#, x_height#, desc_depth#); + italcorr x_height#*slant+0.5lower_cal_width#-u#; + adjust_fit(0, 0); + % + pickup lower_cal.nib; + top y1 = vround 0.98h; bot y2 = -d-eps; + x1 = x2 = good.x(w-1.5u); + draw z1--z2--z2+cal.extension; + top y6 = x_height+oo; bot y8 = -oo; y5 = y7 = 0.5[y6, y8]; + x5 = x1; x7 = good.x(1.25u); x6 = x8 = 0.5[x5, x7]; + draw z5 up_to_left z6 left_to_down z7 + down_to_right z8 right_to_up z5; + % + math_fit(-.3x_height#*slant+0.5curve#-u#, ic#-1/3x_height#*slant); + labels(1, 2, 3, 4, 5, 6, 7, 8); +endchar; + +cmchar "Calligraphic r"; +beginchar("r", 7.25u#, x_height#, 0); + italcorr 0.8x_height#*slant+0.5lower_cal_width#-0.15u#; + adjust_fit(0, 0); + % + pickup lower_cal.nib; + x1 = 0; x3 = x4 = good.x 2.5u; bot y4 = -oo; + draw hook_in(1, 2, 3)---z4; + y5 = y2; y7 = good.y 0.65[y4, y5]; y6 = .8[y4, y5]; + x6 = good.x(w-0.65u); x6-x7 = hround 0.75u; x5 = 0.75[x4, x6]; + draw z4{up}...z5 right_to_down z6...z7; + % + math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#-0.5u#); + labels(1, 2, 3, 4, 5, 6, 7); +endchar; + +cmchar "Calligraphic s"; +beginchar("s", 5.25u#+1.75u#, x_height#, 0); + italcorr 0.9x_height#*slant-0.05w#+0.5u#; + adjust_fit(0, 0); + pickup lower_cal.nib; + rt x0 = rt x1 = .95w; x2 = .5[x3, x1]; lft x3 = .15w; x4 = .5[x6, x2]; + rt x5 = w; x6 = .5w; lft x7 = 0; lft x8 = .075w; + y0 = .8h; y1 = .9h; top y2 = h+o; y3 = .55[y4, y2]; y4 = .55[y6, y2]; + y5 = .45[y6, y4]; bot y6 = -o; y7 = .2h; y8 = .35h; + draw\\(z0--z1) softjoin (z1...z2{left}...z3{down}...z4...z5{down} + ...z6{left}...z7) softjoin (z7{up}...{right}z8); % stroke + math_fit(0, ic#); + labels(0, 1, 2, 3, 4, 5, 6, 7, 8); +endchar; + +cmchar "Calligraphic t"; +beginchar("t", 5.5u#, min(asc_height#, 10/7x_height#), 0); + italcorr max(0.15x_height#*slant+0.5lower_cal_width#, + x_height#*slant-.25u#); + adjust_fit(0, 0); + % + pickup lower_cal.nib; + top y1 = h; x1 = x2 = good.x 2u; x4 = w; + draw z1---hook_out(2, 3, 4); + lft x5 = hround -0.75u; rt x6 = hround(w-0.65u); + top y5 = top y6 = x_height; + draw z5..z6; + % + math_fit(1.25u#-x_height#*slant, ic#); + labels(1, 2, 3, 4, 5, 6); +endchar; + +cmchar "Calligraphic u"; +beginchar("u", 9.5u#, x_height#, 0); + italcorr max(0.15x_height#*slant+0.5lower_cal_width#, + x_height#*slant+0.5lower_cal_width#-2u#); + adjust_fit(0, 0); + % + pickup lower_cal.nib; + x1 = 0; x3 = good.x(2.80u); x4 = good.x(2.3u); + x5 = 0.5[x4, x6]; x6 = x7 = x8 = good.x(w-2.5u); x10 = w; + y4 = 0.7[y5, y6]; bot y5 = -oo; y6 = 0.57h; top y7 = h; + draw hook_in(1, 2, 3)...z4 down_to_right z5...z6{up}; + draw z7..hook_out(8, 9, 10); + % + math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#); + labels(1, 2, 3, 4, 6, 7, 8, 9, 10); +endchar; + +%cmchar "Calligraphic v"; +% beginchar("v", 8u#, x_height#, 0); +% italcorr 0.8x_height#*slant; +% adjust_fit(0, 0.5u#); +% % +% pickup lower_cal.nib; +% x1 = 0; top y1 = h; z3 = (.48w, 0); +% z0.t_ = z2.t_+penoffset down of currentpen +% = z3.t_+penoffset down of pen_[tilted.nib]; +% draw z1{right}..tension atleast 1 and infinity..z2; % left diagonal +% pickup tilted.nib; +% rt x4 = w; x5 = x4-.2w; top y4 = .8h; top y5 = h; +% path p; p = z3..tension atleast 3 and 1..{up}z4; +% erase fill z0--(x0, y0-0.5h)--(x4, y0-0.5h)--(x4+eps, y4)--reverse p--cycle; +% draw p...{left}z5; % right diagonal +% % +% math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, 2/3ic#); +% labels(0, 1, 2, 3, 4, 5); +% endchar; + +cmchar "Calligraphic v"; +beginchar("v", 8.75u#, x_height#, 0); + italcorr .7x_height#*slant+0.5lower_cal_width#-u# + if math_fitting: -0.5u# fi; % same as "o" + adjust_fit(0, 0); + % + pickup lower_cal.nib; + x1 = 0; x3 = good.x(2.80u); x4 = good.x(2.3u); + x5 = 0.5[x4, x6]; x6 = good.x(w-1.25u); x7 = good.x(w-2.25u); + y4 = 0.7[y5, y6]; bot y5 = -oo; y6 = 0.57h; top y7 = h+oo; + draw hook_in(1, 2, 3)...z4 down_to_right z5...z6{up}...z7; + % + math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#); + labels(1, 2, 3, 4, 5, 6, 7); +endchar; + +cmchar "Calligraphic w"; +% beginchar("w", 12.3u#, x_height#, 0); +% italcorr 0.8x_height#*slant; +% adjust_fit(0.2u#, 0.5u#); +% % +% pickup lower_cal.nib; +% x1 = 0; x3 = .5[x1, x6]; x6 = .52w; +% x9 = .58[x6, x10]; y3 = y9 = 0; top y1 = top y6 = h; +% z7 = .5[z8, z6]+bend; z4 = .5[z3, z5]+bend; +% (z0)t_ = (z2)t_+penoffset down of currentpen +% = (z3)t_+penoffset down of pen_[tilted.nib]; +% (z20)t_ = (z8)t_+penoffset down of currentpen +% = (z9)t_+penoffset down of pen_[tilted.nib]; +% draw z1{right}..tension atleast 1 and infinity..z2; % first diagonal +% pickup tilted.nib; +% x5 = x6; rt x10 = w; +% x11 = x10-.1w; top y5 = h; top y10 = .8h; top y11 = h; +% erase fill z0--(x0, y0-0.5h)--(x5, y0-0.5h)--z5..z4..z3--cycle; +% draw z3..z4..z5; % second diagonal +% pickup lower_cal.nib; +% erase fill\\(.3w, bot y6)--(w, bot y6)--(w, top y6)--(.3w, top y6)--cycle; +% draw z6..z7..z8; % third diagonal +% pickup tilted.nib; +% path p; p = z9..tension atleast 3 and 1..{up}z10; +% erase fill z20--(x20, y20-0.5h)--(x10, y20-0.5h)--(x10+eps, y10) +% --reverse p--cycle; +% draw p..{left}z11; % fourth diagonal +% % +% math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, 3/4ic#); +% labels(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 20); +% endchar; + +cmchar "Calligraphic w"; +beginchar("w", 12.5u#, x_height#, 0); + italcorr .7x_height#*slant+0.5lower_cal_width#-u# + if math_fitting: -0.5u# fi; % same as "o" + adjust_fit(0, 0); + % + pickup lower_cal.nib; + x1 = 0; x3 = good.x(2.80u); x4 = good.x(2.3u); + x5 = 0.5[x4, x6]; x6 = x7 = good.x 0.5[2.5u,w-1.5u]; x8 = 0.5[x6,x9]; + x9 = good.x(w-1.25u); x10 = good.x(w-2.25u); + y4 = 0.7[y5, y6]; bot y5 = bot y8 = -oo; y6 = y9 = 0.57h; + top y7 = top y10 = h+oo; + draw hook_in(1, 2, 3)...z4 down_to_right z5...z6---z7; + draw z6 down_to_right z8...z9{up}...z10; + % + math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#); + labels(1, 2, 3, 4, 5, 6, 7); +endchar; + +cmchar "Calligraphic x"; +beginchar("x", 8.25u#, x_height#, 0); + italcorr max(1/9x_height#*slant, 0.9x_height#*slant+.5u#); + adjust_fit(0, 0.25u#); + % + pickup lower_cal.nib; + lft x1 = .08w; lft x2 = .2w; x4-x3 = x2-x1; rt x4 = w; + h-y1 = y4 = 1/9h; top y2 = h; bot y3 = 0; + draw z1{up}....z2{right} + ... .2[z2+(.1w, 0), z3-(.1w, 0)]---.8[z2+(.1w, 0), z3-(.1w, 0)] + ...{right}z3....{up}z4; % left diagonal + x5 = x6-u; rt x6 = w; lft x7 = 0; x8 = x7+u; + top y5 = h; y6 = .85h; y7 = h-y6; bot y8 = 0; + draw z5{right}...z6{down} + ..tension atleast 3..{down}z7...{right}z8; % right diagonal + % + math_fit(0, ic#); + labels(1, 2, 3, 4, 5, 6, 7, 8); +endchar; + +cmchar "Calligraphic y"; +beginchar("y", 8.5u#, x_height#, desc_depth#); + italcorr x_height#*slant+0.5lower_cal_width#-0.5u#; + adjust_fit(0, 0); + % + pickup lower_cal.nib; + x1 = 0; x3 = good.x(2.80u); x4 = x10 = good.x(2.3u); + x5 = 0.5[x4, x6]; x6 = x7 = x8 = good.x(w-1.5u); + y4 = 0.7[y5, y6]; bot y5 = -oo; y6 = 0.57h; top y7 = h; + draw hook_in(1, 2, 3)...z4 down_to_right z5...z6{up}; + draw z7..desc_curve(8, 9, 10); + % + math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#-1/3x_height#*slant); + labels(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); +endchar; + +cmchar "Calligraphic z"; +beginchar("z", 5.5u#+max(1.5u#, stem#), x_height#, 0);%desc_depth#); + italcorr x_height#*slant+0.5lower_cal_width#; + adjust_fit(0, 0); + % + pickup lower_cal.nib; + y1 = good.y 3/4x_height; + top y2 = h+oo; top y3 = vround 0.98h+eps; + bot y4 = -oo; bot y5 = -oo; + y6 = good.y 1/4x_height; + x1 = x4 = good.x u; x6 = good.x w; x6-x3 = hround 0.5u; + x2 = 0.25[x1, x3]; x5 = 0.25[x6, x4]; + draw z1 ... z2{right}..{z3-z4}z3 + --z4{z3-z4}..z5{right}... z6; + % + math_fit(0, 1/3x_height#*slant+0.5hair#+0.5u#); + labels(1, 2, 3, 5, 6); +endchar; + +% +% LATIN EXTENSION +% +% the three first have been checked: design, metrics +% and italic corrections (nov. 28, 2002). +% + +cmchar "Calligraphic dotless i"; +beginchar(hex"10", 5u#, x_height#, 0);% height + italcorr max(0.15x_height#*slant+0.5lower_cal_width#, + 0.8x_height#*slant+0.5lower_cal_width#-1.7u#); + italcorr 1/3x_height#*slant+0.5hair#+0.5u#; + adjust_fit(0, 0); + % + pickup lower_cal.nib; + x1 = 0; x3 = good.x(0.5w+0.30u); + x4 = good.x(0.5w-0.30u); x6 = w; + draw hook_in(1, 2, 3)...hook_out(4, 5, 6); + % + math_fit(0, 0); + labels(1, 2, 3, 4, 5, 6, 7); +endchar; + +cmchar "Calligraphic dotless j"; +beginchar(hex"11", 5u#, x_height#, desc_depth#); + italcorr max(0.8x_height#*slant+0.5lower_cal_width#-u#, + 0.8x_height#*slant+0.5lower_cal_width#-0.5u#); + adjust_fit(0, 0); + % + pickup lower_cal.nib; + x1 = 0; x3 = x4 = good.x(w-1.5u); + x6 = good.x 0; + draw hook_in(1, 2, 3)..desc_curve(4, 5, 6); + % + math_fit(0, 0); + labels(1, 2, 3, 4, 5, 6); +endchar; + +cmchar "Calligraphic es-zet"; +beginchar(oct"31", 8u#, asc_height#, desc_depth#); + italcorr max(.8h#*slant-.1w#, .5x_height#*slant)+.5u#; + adjust_fit(0, 0); + % + pickup lower_cal.nib; + x1 = x3 = good.x 1.5u; x4 = .6[x2, x5]; rt x5 = .9w; x6 = .4w; + rt x7 = w; + x8 = .4[x9, x7]; lft x9 = rt x3; + top y1 = x_height+oo; bot y3 = -d-eps; z2 = .3[z3, z1]+bend; + top y4 = h+oo; y5 = .6[y6, y4]; y6 = .55h; y7 = .45[y8, y6]; + bot y8 = -oo; y9 = .1h; + draw z1-cal.extension--flex(z1, z2, z3); % stem + draw z2{up}...z4...z5{down}...{dir 200}z6{dir 10} + ...z7{down}...z8{left}...z9; % lobes + % + math_fit(.5u#, .3h#*slant+.5u#); + labels(1, 2, 3, 4, 5, 6, 7, 8, 9); +endchar; + +cmchar "Calligraphic ae"; +beginchar(oct"32", 13u#, x_height#, 0); + italcorr max(0.25x_height#*slant+0.5lower_cal_width#, + 0.85x_height#*slant+0.5lower_cal_width#-1.1u#); + adjust_fit(0, 0); + % + pickup lower_cal.nib; + top y1 = h+oo; bot y3 = -oo; y2 = y4 = 0.5[y1, y3]; + x2 = good.x 1.25u; x4 = good.x 0.5w; + x1 = 0.5[x2, x4]; x3 = 0.5[x2, x4]; + draw z1 left_to_down z2 down_to_right + z3 right_to_up z4 up_to_left z1; + % + rt x5 = hround(w-1.1u); x6 = 0.6[x7, x5]; + if x5 > w-1.25u: x5 := good.x w-1.25u; fi + x7 = x4; x8 = 0.5[x7, x9]; x9 = good.x w; + y5 = 0.8[y8, y6]; top y6 = h+oo; y7 = .5h; bot y8 = -oo; + y9 = good.y 1/4x_height; + draw z7 right_to_up z5 up_to_left z6 + left_to_down z7 down_to_right z8...z9; + % + top y10=vround 0.98h; bot y11=0; + x10=x11=x4; draw z10..z11; + % + math_fit(-.3x_height#*slant+0.5curve#-u#, ic#); + labels(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); +endchar; + +cmchar "Calligraphic oe"; +beginchar(oct"33", 13u#, x_height#, 0); + italcorr max(0.25x_height#*slant+0.5lower_cal_width#, + 0.85x_height#*slant+0.5lower_cal_width#-1.1u#); + adjust_fit(0, 0); + % + pickup lower_cal.nib; + top y1 = h+oo; bot y3 = -oo; y2 = y4 = 0.5[y1, y3]; + x2 = good.x 1.25u; x4 = good.x 0.5w; x1 = x3 = 0.5[x2, x4]; + draw z1 left_to_down z2 down_to_right + z3 right_to_up z4 up_to_left z1; + % + rt x5 = hround(w-1.1u); x6 = 0.6[x7, x5]; + if x5 > w-1.25u: x5 := good.x w-1.25u; fi + x7 = x4; x8 = 0.5[x7, x9]; x9 = good.x w; + y5 = 0.8[y8, y6]; top y6 = h+oo; y7 = .5h; bot y8 = -oo; + y9 = good.y 1/4x_height; + draw z7 right_to_up z5 up_to_left z6 + left_to_down z7 down_to_right z8...z9; + % + math_fit(-.3x_height#*slant+0.5curve#-u#, ic#); + labels(1, 2, 3, 4, 5, 6, 7, 8, 9); +endchar; + +cmchar "Calligraphic o/slash"; +beginchar(oct"34", 9u#, x_height#+0.5desc_depth#, 0.5desc_depth#); + italcorr .7x_height#*slant+0.5lower_cal_width#-u# + if math_fitting: -0.5u# fi; + adjust_fit(0, 0);%(-0.25u#, -0.25u#); + % + pickup lower_cal.nib; + top y1 = x_height+oo; bot y3 = -oo; y2 = y4 = 0.5[y1, y3]; + x2 = good.x 1.25u; x4 = good.x(w-1.25u); x1 = x3 = 0.5[x2, x4]; + draw z1 left_to_down z2 down_to_right + z3 right_to_up z4 up_to_left z1; + % + pickup fine_cal.nib; + x5=good.x x4; x6=good.x x2; top y5=h+eps; bot y6=-d-eps; draw z5..z6; + % + math_fit(-.3x_height#*slant+0.5curve#-u#, ic#); + labels(1, 2, 3, 4, 5, 6); +endchar; + +cmchar "Calligraphic AE"; +beginchar(oct"35",18u#,cap_height#,0); + italcorr max(h#*slant-.1w#,.2h#*slant)+.5u#; + adjust_fit(0,0); pickup cal.nib; + w':=hround 8.5u; + x1=.9[x3,x2]; rt x2=.9w'+w-w'; x3=.6[x4,x2]; lft x4=.05w'+w-w'; + x5=.7[x6,x2]; lft x6=w-w'; x7=.5[x6,x8]; rt x8=w; + y1=y2-.1h; y2=.9h+o; top y3=h+o; y4=.5[y5,y3]; + y5=.55h; y6=.6[y5,y7]; bot y7=-o; y8=.2h; + % + pickup tilted.nib; + lft x4'=.05w'+w-w'; + w':=hround 14.4u; + lft x1'=.05w'; x2'=.2w'; + y1'=y2'+.1h; bot y2'=bot_flourish_line; + y3'=y6; z3'=whatever[z2',z4]+2bend; y4'=y4; + draw\\(z1'..tension 1.2..{right}z2') softjoin (z2'...z3'...z4'{up}); +% left diagonal + pickup cal.nib; + draw\\(z1{2(x2-x1),y2-y1}...z2) + softjoin (z2...z3{left}...z4{down}...{right}z5); % upper arc + draw z5{left}...z6{down}...z7{right}...z8; % lower arc + draw rt z3'--z6; % bar + math_fit(.5u#-.2h#*slant,.2h#*slant+.5u#); + labels(1',2',3',4',1,2,3,4,5,6,7,8); +endchar; + +cmchar "Calligraphic OE"; +beginchar(oct"36",16u#,cap_height#,0); + italcorr max(h#*slant-.1w#,.2h#*slant)+.5u#; + adjust_fit(0,0); pickup cal.nib; + w':=hround 8.5u; + x1=.9[x3,x2]; rt x2=.9w'+w-w'; x3=.6[x4,x2]; lft x4=.05w'+w-w'; + x5=.7[x6,x2]; lft x6=w-w'; x7=.5[x6,x8]; rt x8=w; + y1=y2-.1h; y2=.9h+o; top y3=h+o; y4=.5[y5,y3]; + y5=.55h; y6=.6[y5,y7]; bot y7=-o; y8=.2h; + draw\\(z1{2(x2-x1),y2-y1}...z2) + softjoin (z2...z3{left}...z4{down}...{right}z5); % upper arc + draw z5{left}...z6{down}...z7{right}...z8; % lower arc + % + w':=hround 12.6u; + x1'=.3w'; lft x2'=0; x3'=0.6[x2',x6]; x5'=0.75[x2',x4]; + lft x6'=.27w'; + top y1'=top y5'=h+o; y2'=.55h; bot y3'=-o; y6'=y2'; + draw z1'...z2'{down}...z3'{right}...z6{up}; + save p; path p; p = z4{up}...z5'{left}...{down}z6'; + draw subpath (0,1.8) of p; + math_fit(.5u#-.2h#*slant,.2h#*slant+.5u#); + labels(1',2',3',5',6',1,2,3,4,5,6,7,8); +endchar; + +cmchar "Calligraphic O/slash"; +beginchar(oct"37",12.6u#,cap_height#+0.25desc_depth#, 0.25desc_depth#); + italcorr .7h#*slant+.5u#; + adjust_fit(0,0); pickup cal.nib; + x1=.3w; lft x2=0; x3=.5w; rt x4=w; x5=.6w; lft x6=.27w; + top y1=top y5=cap_height+o; y2=.55cap_height; + bot y3=-o; y4=.5cap_height; y6=y2; + path p; p=z1...z2{down}...z3{right}...z4{up}...z5{left}...{down}z6; + draw subpath(0,4.8) of p; % bowl +% pickup .nib; + top y7= vround(h+0.25desc_depth)+eps; bot y8=-hround(0.25desc_depth)-eps; + x7 = good.x x4; x8 = good.x 0.1[x2, x6]; draw z7..z8; + math_fit(.5u#-.3h#*slant,ic#-.5u#); + labels(1,2,3,4,5,6); +endchar; + +% +% DIGITS +% + +beginchar("0", 9u#, fig_height#, 0); + "The digit 0"; + italcorr fig_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup lower_cal.nib; + numeric a; a = min(0.25h, 0.5(x_height-o)); + top y1 = h+o; bot y3 = -o; y2 = y4 = 0.5[y1, y3]; + lft x2 = hround max(0.7u, lft 1.45u); x4 = w-x2; + x1 = x3 = 0.5[x2, x4]; + draw z1 left_to_down z2 down_to_right z3 + right_to_up z4 up_to_left z1; + labels(1, 2, 3, 4); + math_fit(0, 0.5ic#); +endchar; + +beginchar("1", 9u#, fig_height#, 0); + "The digit 1"; + italcorr fig_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup lower_cal.nib; + top y2 = h+o; bot y3 = -max(hround(0.05h)+eps, oo); y1 = good.y 0.35[y2, y3]; + rt x2-lft x1 = hround 4.875u; rt x2 = w-hround 2.125u; + rt x3 = w-hround 3.75u; + draw z1{x2-x1, 0.5(y2-y1)}...z2 & z2{x3-x2, 0.4(y3-y2)}...{down}z3; + labels(1, 2, 3); + math_fit(0, 0.5ic#); +endchar; + +beginchar("2", 9u#, fig_height#, 0); + "The digit 2"; + italcorr fig_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup lower_cal.nib; + top y2 = h+o; bot y5 = bot y6 = 0; y1 = y3 = good.y 0.75h; + lft x1 = lft x5+eps = hround u; rt x3 = rt x6-eps = w-hround u; + x2 = x4 = 0.5[x1, x3]; y4 = 0.4[y5, y3]; + draw z1 up_to_right z2 right_to_down z3...z4---z5--z6; + labels(1, 2, 3, 4, 5, 6); + math_fit(0, 0.5ic#); +endchar; + +% beginchar("3", 9u#, fig_height#, 0); +% "The digit 3"; +% italcorr fig_height#*slant-0.5u#; +% adjust_fit(0, 0); +% pickup lower_cal.nib; +% bot y2 = -o; top y5 = top y6 = x_height; +% y1 = good.y 1/4x_height; +% y3 = a; y5-y4 = y3-y2; top y7 = top y8 = h; +% rt x3 = w-hround u; x3 = x4 = x7+hround 0.5u-eps; +% lft x1 = hround u; x1+hround 0.5u-eps = x8; +% lft x6 = hround 3u-eps; +% x2 = x5 = 0.5[x1, x3]; +% draw z1 ... z2 right_to_up z3..z4 up_to_left z5--z6--z7--z8; +% labels(1, 2, 3, 4, 5, 6, 7, 8); +% math_fit(0, 0.5ic#); +% endchar; + +beginchar("3", 9u#,fig_height#,0); + "The digit 3"; + italcorr fig_height#*slant-0.5u#; + adjust_fit(0,0); pickup lower_cal.nib; + lft x2 = hround 1.25u; x3=.46[x2,x4]; x4=good.x(w-2u); + x5=.7[x6,x2]; x6= good.x(w-1.25u); x7=.5[x6,x8]; lft x8 = hround u; + x1=good.x 0.6[x5, x2]; + %y1=y2-.1h; + y2=.85h+oo; top y3=h+oo; y4=.5[y5,y3]; + y5=good.y .55h; y6=.5[y5,y7]; bot y7=-oo; y8=good.y 1/4x_height; + y1 = good.y 0.55[y5, y3]; + draw\\(z1{2(x2-x1),y2-y1}...z2) + softjoin (z2...z3 right_to_down z4...{left}z5); % upper arc + draw z5 right_to_down z6...z7{left}...z8; % lower arc + math_fit(.5u#-.2h#*slant,.2h#*slant+.5u#); + labels(1,2,3,4,5,6,7,8); +endchar; + +beginchar("4", 9u#, fig_height#, 0); + "The digit 4"; + italcorr fig_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup lower_cal.nib; + top y1 = h+o; bot y5 = -max(hround(0.05h)+eps, oo); top y4 = x_height+eps; + y2 = y3 = good.y(0.5x_height); + rt x3 = w-hround 0.1u+eps; + lft x2 = hround 0.5u-eps; + x1 = good.x 0.33[x2, x3]; + x4 = good.x 0.725[x2, x3]; + x5 = good.x 0.475[x2, x3]; + draw z1{down}...z2--z3; draw z4{x5-x4, 0.45(y5-y4)}..z5{down}; + labels(1, 2, 3, 4, 5); + math_fit(0, 0.5ic#); +endchar; + +beginchar("5", 9u#, fig_height#, 0); + "The digit 5"; + italcorr fig_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup lower_cal.nib; + bot y2 = -o; top y4 = x_height+eps; y1 = good.y 1/4x_height; + y3 = 0.5[y2, y4]; y5 = good.y 0.2[y4, y2]; top y6 = top y7 = h; + rt x3 = w-hround u; x3 = x7+hround 0.5u-eps; + lft x1 = hround u; x1+hround 0.5u = x5 = x6; + x2 = x4 = 0.5[x1, x3]; + draw z1 ... z2 right_to_up z3 + up_to_left z4 ... z5&z5..{0.5(x6-x4), y6-y4}z6&z6..{x7-x5, 0.5(y7-y5)}z7; + labels(1, 2, 3, 4, 5, 6, 7); + math_fit(0, 0.5ic#); +endchar; + +beginchar("6", 9u#, fig_height#, 0); + "The digit 6"; + italcorr fig_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup lower_cal.nib; + top y2 = h+o; bot y4 = -o; y1 = good.y(h-0.2x_height); + top y6 = x_height+eps; y3 = 0.45[y4, y2]; y5 = 0.5[y4, y6]; + lft x3 = hround max(0.7u, lft 1.45u); x5 = w-x3; + rt x1 = w-hround u; x2 = 0.6[x3, x1]; x4 = x6 = 0.5[x3, x5]; + draw z1 ... z2{left} ... z3 down_to_right z4 + right_to_up z5 up_to_left z6 ...z3; + labels(1, 2, 3, 4, 5, 6); + math_fit(0, 0.5ic#); +endchar; + +beginchar("7", 9u#, fig_height#, 0); + "The digit 7"; + italcorr fig_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup lower_cal.nib; + top y2 = top y3 = h+o; bot y4 = -max(hround(0.05h)+eps, oo); + y1 = good.y 0.3[y2, y4]; + lft x1 = lft x2 = hround 0.75u; rt x3 = w-hround 0.25u; + x4 = good.x 0.4[x2, x3]; + draw z1{0.2(x3-x1), y3-y1}..z2 & z2{x4-x2, 0.2(y4-y2)}..z3 + &z3{x4-x3, 0.4(y4-y3)}..z4; + labels(1, 2, 3, 4); + math_fit(0, 0.5ic#); +endchar; + +beginchar("8", 9u#, fig_height#, 0); + "The digit 8"; + italcorr fig_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup lower_cal.nib; + bot y1 = vround 0.5h; bot y4 = -o; + y1-y2 = y1-y6 = y3-y4; y3 = y5 = a; + lft x2 = lft x3 = hround u; + rt x5 = rt x6 = w-hround u; + x1 = x4 = x7 = 0.5[x2, x6]; + top y7 = h+o; y8 = y9 = 0.5[y7, y1]; + lft x8 = w-rt x9 = hround 1.4u-eps; + draw z1 left_to_down z2..z3 down_to_right z4 right_to_up z5..z6 + up_to_left z1; draw superellipse(z9, z7, z8, z1, superness); + labels(1, 2, 3, 4, 5, 6, 7, 8, 9); + math_fit(0, 0.5ic#); +endchar; + +beginchar("9", 9u#, fig_height#, 0); + "The digit 9"; + italcorr fig_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup lower_cal.nib; + bot y2 = -o; top y4 = h+o; y1 = good.y 0.2x_height; + bot y6 = h-x_height-eps; y3 = 0.45[y4, y2]; y5 = 0.5[y4, y6]; + lft x5 = hround max(0.7u, lft 1.45u); x3 = w-x5; + lft x1 = hround u; x2 = 0.6[x3, x1]; x4 = x6 = 0.5[x3, x5]; + draw z1 ... z2{right}... z3 up_to_left z4 + left_to_down z5 down_to_right z6 ...z3; + labels(1, 2, 3, 4, 5, 6, 7, 8, 9); + math_fit(0, 0.5ic#); +endchar; + +% +% PUNCTUATION +% + +call_spanish_query:=0; +call_spanish_shriek:=1; +call_laquo:=2; +call_raquo:=3; + +vardef complete_quote@#(expr $,$$)= + pickup lower_cal.nib; + bot y@#.c=hround 0.06h; y@#.b=good.y 0.5h; y@#.a-y@#.b=y@#.b-y@#.c; + if $$<0: lft x@#.a=lft x@#.c=rt x@#.b-(hround 4u+2eps)=$; + else: rt x@#.a=rt x@#.c=lft x@#.b+(hround 4u+2eps)=$; fi + draw z@#.a{(z@#.b-z@#.a) yscaled 3}..z@#.b + &z@#.b..{(z@#.c-z@#.b) yscaled 3}z@#.c; + labels(@#.a,@#.b,@#.c); +enddef; + +beginchar("<",8u#,x_height#,0); + "French single opening quote"; + complete_quote1(w-hround 2u+eps,1); +endchar; + +beginchar(">",8u#,x_height#,0); + "French single closing quote"; + complete_quote1(hround 2u-eps,-1); +endchar; + +beginchar(call_laquo,10u#,x_height#,0); + "French double opening quote"; + complete_quote1(w-hround u+eps,1); + complete_quote2(w-hround 4u+eps,1); +endchar; + +beginchar(call_raquo,10u#,x_height#,0); + "French double closing quote"; + complete_quote1(hround u-eps,-1); + complete_quote2(hround 4u-eps,-1); +endchar; + +cmchar "Hash mark (number sign)"; +spread#:=math_spread[0.45x_height#,0.55x_height#]; +spread:=2ceiling(spread#*hppp/2)+eps; +beginchar("#",15u#,asc_height#,asc_depth#); + italcorr (math_axis#+.5(spread#+rth1#))*slant-.5u#; + adjust_fit(0,0); + pickup lower_cal.nib; lft x1=hround u-eps; x3=x1; x2=x4=w-x1; + y1=y2; y3=y4; y1-y3=spread; .5[y1,y3]=math_axis; + draw z1--z2; % upper bar + draw z3--z4; % lower bar + lft x6=hround 3u; rt x7=hround(w-3u); x5-x6=x7-x8; + x8=good.x .5\\w; + top y5=top y7=h+eps; bot y6=bot y8=-d-eps; + y15=y1; z15=whatever[z5,z6]; y36=y3; z36=whatever[z5,z6]; + y27=y2; z27=whatever[z7,z8]; y48=y4; z48=whatever[z7,z8]; + draw z5--if x5>x6+1:(good.x(x15+.5),y1)--(good.x(x15-.5),y1) + --(good.x(x36+.5),y3)--(good.x(x36-.5),y3)--fi\\z6; % left diagonal + draw z7--if x7>x8+1:(good.x(x27+.5),y2)--(good.x(x27-.5),y2) + --(good.x(x48+.5),y4)--(good.x(x48-.5),y4)--fi\\z8; % right diagonal + labels(1,2,3,4,5,6,7,8,15,27,36,48); +endchar; + +cmchar "Plus sign"; +beginchar("+",arithmetic_bounds); + pickup lower_cal.nib; + x1=x2=good.x .5w; top y1=h+eps; .5[y1,y2]=math_axis; + lft x3=hround u-eps; x4=w-x3; y3=y4=math_axis; + draw z1--z2; % stem + draw z3--z4; % crossbar + labels(1,2,3,4); +endchar; + +beginchar("*",9u#,body_height#,0); + "Asterisk"; + italcorr body_height#*slant-u#; + pickup lower_cal.nib; + top y1=h+eps; bot y2=h-x_height-eps; + x1=x2=good.x 0.5w; + x3=good.x (x1-3u*cosd 30); + x1-x3=x1-x6=x5-x1=x4-x1; + y3=good.y (0.5[y1,y2]+3u*sind 30); + y1-y3=y1-y5=y4-y2=y6-y2; + draw z1..z2; draw z3..z4; draw z5..z6; + labels(1,2,3,4,5,6); +endchar; + +cmchar "Virgule (slash)"; +beginchar("/",9u#,body_height#,paren_depth#); + italcorr body_height#*slant-.5u#; + pickup fine_cal.nib; + rt x1=hround(w-u)+eps; top y1=h+eps; + lft x2=hround u-eps; bot y2=-d-eps; + draw z1--z2; % diagonal + labels(1,2); +endchar; + +beginchar("=",14u#,v_center(spread#+rth1#)); + italcorr h#*slant-.5u#; + adjust_fit(0,0); pickup lower_cal.nib; + lft x1=hround u-eps; x3=x1; x2=x4=w-x1; + y1=y2; y3=y4; y1-y3=spread; .5[y1,y3]=math_axis; + draw z1--z2; % upper bar + draw z3--z4; % lower bar + labels(1,2,3,4); +endchar; + +cmchar "Calligraphic dot"; +beginchar(".", 5u#, dtsz#, 0); + italcorr 0.5u#; + adjust_fit(0, 0); + pickup fine_cal.nib; + cal_dot1(0.5w, 0.5dtsz, dtsz); + math_fit(0, 0); + penlabels(1, 1'); +endchar; + +cmchar "Calligraphic comma"; +beginchar(", ", 5u#, dtsz#, comma_depth#); + italcorr 0.5u#; + adjust_fit(0, 0); + cal_comma1(0.5w, 0.5dtsz, 1, -comma_depth); + math_fit(0, 0); +endchar; + +cal_apostrophe=hex"27"; cal_reverse_apostrophe=hex"60"; +cal_opening_quotes=hex"5C"; cal_closing_quotes=hex"22"; + +cmchar "Calligraphic apostrophe"; +beginchar(cal_apostrophe, 5u#, asc_height#, 0); + italcorr 0.5u#; + adjust_fit(0, 0); + cal_comma1(0.5w, h-0.5dtsz, 1, h-comma_depth-dtsz); + math_fit(0, 0); +endchar; + +cmchar "Calligraphic reverse apostrophe"; +beginchar(cal_reverse_apostrophe, 5u#, asc_height#, 0); + italcorr 0.5u#; + adjust_fit(0, 0); + cal_comma1(0.5w, h-0.5dtsz-comma_depth, + -1, h); + math_fit(0, 0); +endchar; + +cmchar "Calligraphic opening quotes"; +beginchar(cal_opening_quotes, 7u#+max(2u#, dtsz#), + asc_height#, 0); + italcorr 0.5u#; + adjust_fit(0, 0); + cal_comma1(w-0.6u-0.5dtsz, + h-0.5dtsz-comma_depth, -1, h); + cal_comma2(w-0.6u-0.5dtsz-1.5u-max(2u, dtsz), + h-0.5dtsz-comma_depth, -1, h); + math_fit(0, 0); +endchar; + +cmchar "Calligraphic closing quotes"; +beginchar(cal_closing_quotes, 7u#+max(2u#, dtsz#), + asc_height#, 0); + italcorr 0.5u#; + adjust_fit(0, 0); + cal_comma1(0.6u+0.5dtsz, + h-0.5dtsz, 1, h-dtsz-comma_depth); + cal_comma2(0.6u+0.5dtsz+1.5u+max(2u, dtsz), + h-0.5dtsz, 1, h-dtsz-comma_depth); + math_fit(0, 0); +endchar; + +cmchar "Calligraphic semicolon"; +beginchar(";", 5u#, x_height#, comma_depth#); + italcorr 0.5u#; + adjust_fit(0, 0); + pickup fine_cal.nib; + cal_dot1(0.5w, h-0.5dtsz, dtsz); + cal_comma2(0.5w, 0.5dtsz, 1, -comma_depth); + math_fit(0, 0); +endchar; + +cmchar "Calligraphic colon"; +beginchar(":", 5u#, x_height#, 0); + italcorr 0.5u#; + adjust_fit(0, 0); + pickup fine_cal.nib; + cal_dot1(0.5w, 0.5dtsz, dtsz); + cal_dot2(0.5w, h-0.5dtsz, dtsz); + math_fit(0, 0); + penlabels(1, 1', 2, 2'); +endchar; + +cmchar "Calligraphic hyphen"; +beginchar("-", 6u#, x_height#, 0); + italcorr 0.5x_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup lower_cal.nib; + y1 = y3 = good.y 0.5h; + lft x1 = hround 0.2u-eps; rt x3 = hround(w-u)+eps; + z2 = 0.5[z1, z3]; + draw z1{w, h}...z2{w, -0.5h}...z3{w, h}; + math_fit(0, 0); + labels(1, 2, 3); +endchar; + +cmchar "Calligraphic en-dash"; +beginchar(oct"173", 9u#, x_height#, 0); + italcorr 0.61803x_height#*slant+0.5u#; + adjust_fit(0, 0); + pickup lower_cal.nib; + y1 = y2 = good.y 0.61803h; lft x1 = -eps; rt x2 = w+eps; + draw z1..z2; math_fit(0, 0); labels(1, 2); +endchar; + +cmchar "Calligraphic em-dash"; +beginchar(oct"174", 18u#, x_height#, 0); + italcorr 0.61803x_height#*slant+0.5u#; + adjust_fit(letter_fit#, letter_fit#); + pickup lower_cal.nib; + y1 = y2 = good.y 0.61803h; lft x1 = -eps; rt x2 = w+eps; + draw z1..z2; math_fit(0, 0); labels(1, 2, 3); +endchar; + +beginchar("(", 6u#, asc_height#, desc_depth#); + italcorr asc_height#*slant; + adjust_fit(0, 0); + pickup med_cal.nib; + top y1 = h; bot y3 = -d; y2 = 0.5(y1+y3); + rt x1 = rt x3 = hround(w-0.5u); lft x2 = hround u; + draw z1{x2-x1, 0.5(y2-y1)}...z2{down}...{x3-x2, 0.5(y3-y2)}z3; + labels(1, 2, 3); + endchar; + + beginchar(")", 6u#, asc_height#, desc_depth#); + italcorr asc_height#*slant; + adjust_fit(0, 0); + pickup med_cal.nib; + top y1 = h; bot y3 = -d; y2 = 0.5(y1+y3); + lft x1 = lft x3 = hround(0.5u); rt x2 = hround(w-u); + draw z1{x2-x1, 0.5(y2-y1)}...z2{down}...{x3-x2, 0.5(y3-y2)}z3; + labels(1, 2, 3); +endchar; + +beginchar("[", 6u#, asc_height#, desc_depth#); + italcorr asc_height#*slant; + adjust_fit(0, 0); + pickup med_cal.nib; + top y1 = top y2 = h; bot y4 = bot y5 = -d; y3 = 0.5[y1, y5]; + rt x1 = rt x5 = hround(w-0.25u); lft x2 = lft x4 = hround 1.25u; + lft x3 = hround 1.5u; + draw z1--z2...z3{down}...z4--z5; + labels(1, 2, 3, 4, 5); +endchar; + +beginchar("]", 6u#, asc_height#, desc_depth#); + italcorr asc_height#*slant; + adjust_fit(0, 0); + pickup med_cal.nib; + top y1 = top y2 = h; bot y4 = bot y5 = -d; y3 = 0.5[y1, y5]; + lft x1 = lft x5 = hround(0.25u); rt x2 = rt x4 = hround(w-1.25u); + rt x3 = hround(w-1.5u); + draw z1--z2...z3{down}...z4--z5; + labels(1, 2, 3, 4, 5); +endchar; + +beginchar("!", 5u#, asc_height#, 0); + "Exclamation point"; + italcorr asc_height#*slant-2u#+0.5curve#; + adjust_fit(0, 0); + pickup med_cal.nib; + x1=x2=good.x 0.5w; + top y2= h+eps; + cal_dot3(0.5w, 0.5dtsz, dtsz); + bot y1=ceiling 0.25[top y3.b, x_height]-eps; + draw z1..z2; labels(1, 2); +endchar; + +beginchar(call_spanish_shriek, 5u#, asc_height#-desc_depth#, desc_depth#); + "Spanish shriek"; + italcorr (charht-0.5dtsz#)*slant-2u#+0.5dtsz#; + adjust_fit(0, 0); + pickup med_cal.nib; + x1=x2=good.x 0.5w; + bot y2=-d-eps; + cal_dot3(0.5w, h-0.5dtsz, dtsz); + top y1=floor 0.25[bot y3.d, h-x_height]+eps; + draw z1..z2; labels(1, 2); +endchar; + +cmchar "Question mark"; +beginchar("?", 9u#, asc_height#, 0); + italcorr 0.8asc_height#*slant-0.5u#; + pickup med_cal.nib; + cal_dot9(0.5w, 0.5dtsz, dtsz); + top y4 = h+oo; bot y7=ceiling 0.25[top y9.b, x_height]-eps; + y2=good.y 0.5[y7, y4]; y3=y5=0.5[y2,y4]; y1= good.y 0.4[y2,y3]; + y6=1/9[y7,y4]; y8 = good.y 0.8[y7, y6]; + x3=good.x 1.5u; x5=good.x(w-1.25u); x4=0.55[x3,x5]; x7=0.5w; + x1=good.x 0.5[x3,x5]; x2=0.25[x3,x5]; x6=good.x 2/3[x3,x4]; + x8=good.x 0.5[x7,x5]; + draw z1...z2 left_to_up z3 ...z4 right_to_down z5...z6 down_to_right z7...z8; + labels(1, 2, 3, 4, 5, 6,7,8); +endchar; + +beginchar(call_spanish_query, 9u#, asc_height#-desc_depth#, desc_depth#); + "Spanish query"; + pickup med_cal.nib; + cal_dot9(0.5w, h-0.5dtsz, dtsz); + bot y4 = -d-oo; top y7=ceiling 0.25[bot y9.d, h-x_height]+eps; + y2=good.y 0.5[y7, y4]; y3=y5=0.5[y2,y4]; y1=good.y 0.4[y2,y3]; + y6=1/9[y7,y4]; y8 = good.y 0.8[y7,y6]; + x3=good.x(w-1.5u); x5=good.x 1.25u; x4=0.55[x3,x5]; x7=0.5w; + x1=good.x 0.5[x3,x5]; x2=0.25[x3,x5]; x6=good.x 2/3[x3,x4]; + x8=good.x 0.5[x7,x5]; + draw z1...z2 right_to_down z3 ...z4 left_to_up z5...z6 up_to_left z7...z8; + labels(1, 2, 3, 4, 5, 6,7,8); +endchar; + +% just look at italic corection and math fitting +cmchar "Calligraphic ampersand"; +beginchar(oct"46", 14u#, asc_height#, 0); + italcorr max(0.15x_height#*slant+0.5lower_cal_width#, + x_height#*slant+0.5lower_cal_width#-2u#) if math_fitting: -0.5u# fi; + adjust_fit(0, 0); + % + pickup lower_cal.nib; + top y1 = vround 0.98x_height; + bot y2 = bot y7 = -oo; + top y5 = h+oo; + y3 = 0.5[y2, x_height]; y4 = y6 = 0.6[x_height, y5]; + y8 = good.y 7/8[x_height, y7]; + x1 = x7 = good.x(w-2.5u); + x3 = good.x 1.25u; x6 = good.x 3u; + x8 = good.x w; x2 = 5u; x4-x6=hround 3u; x5=0.6[x6,x4]; + draw z1{down}...z2 left_to_up z3...z4 up_to_left z5 left_to_down z6 + ...z7{right}...z8; + % + math_fit(-.3x_height#*slant+0.5curve#-u#, ic#); + labels(1, 2, 3, 4, 5, 6, 7, 8); +endchar; + +% +% ACCENTS +% + +cmchar "Calligraphic grave accent"; +beginchar(oct"22", 9u#, min(asc_height#, 2x_height#), 0); + italcorr asc_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup pencircle xscaled stem yscaled hair; + top y1 = h+eps; bot y2 = vround 1/3[x_height, h]-eps; + lft x1 = hround 1.75u; rt x2 = hround 2/3[x1, w-x1]; + draw z1{x2-x1, 2(y2-y1)}..z2; + labels(1, 2); +endchar; + +cmchar "Calligraphic acute accent"; +beginchar(oct"23", 9u#, min(asc_height#, 2x_height#), 0); + italcorr asc_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup pencircle xscaled stem yscaled hair; + top y1 = h+eps; bot y2 = vround 1/3[x_height, h]-eps; + rt x1 = w-hround 1.75u; lft x2 = hround 2/3[x1, w-x1]; + draw z1{x2-x1, 2(y2-y1)}..z2; + labels(1, 2); +endchar; + +% HUM +cmchar "Calligraphic tilde accent"; +beginchar(oct"176", 9u#, + min(asc_height#, 10/7x_height#+0.5flare#), 0); + italcorr asc_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup lower_cal.nib; + bot y4 = vround 1/3[x_height, h]-eps; + top y2 = h+eps; y1 = y3 = y5 = good.y 0.5[y2, y4]; + lft x1 = w-rt x5 = hround 1.25u; + x2 = 0.25[x1, x5]; x3 = 0.5[x1, x5]; x4 = 0.75[x1, x5]; + draw z1{(z2-z1) yscaled 2}...z2{right}... + z3{(z4-z3)yscaled 2}...z4{right} ...{(z5-z4) yscaled 2}z5; + labels(1, 2, 3, 4, 5); +endchar; + +cmchar "Calligraphic circumflex accent"; +beginchar(oct"136", 9u#, min(asc_height#, 2x_height#), 0); + italcorr asc_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup pencircle xscaled stem yscaled hair; + top y2 = h+eps; bot y1 = bot y3 = vround 1/3[x_height, h]-eps; + lft x1 = w-rt x3 = hround 1.75u; x2 = good.x 0.5[x1, x3]; + draw z1..{x2-x1, 2(y2-y1)}z2 + &z2{x3-x2, 2(y3-y2)}..z3; + labels(1, 2, 3); +endchar; + +cmchar "Calligraphic hacheck accent"; +beginchar(oct"24", 9u#, min(asc_height#, 2x_height#), 0); + italcorr asc_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup pencircle xscaled stem yscaled hair; + top y1 = top y3 = h+eps; bot y2 = vround 1/3[x_height, h]-eps; + lft x1 = w-rt x3 = hround 1.75u; x2 = good.x 0.5[x1, x3]; + draw z1..{x2-x1, 2(y2-y1)}z2 + &z2{x3-x2, 2(y3-y2)}..z3; + labels(1, 2, 3); +endchar; + +cmchar "Calligraphic breve accent"; +beginchar(oct"25", 9u#, min(asc_height#, 2x_height#), 0); + "Breve accent"; + italcorr asc_height#*slant-0.5u#; + adjust_fit(0, 0); +% pickup pencircle xscaled stem yscaled hair; + pickup lower_cal.nib; + top y1 = top y3=h+eps; bot y2=vround 1/3[x_height, h]-eps; + lft x1 = w-rt x3=hround 1.5u; x2=0.5[x1, x3]; + draw z1 down_to_right z2 right_to_up z3; labels(1, 2, 3); +endchar; + +cmchar "Calligraphic macron accent"; +beginchar(oct"26", 9u#, 0.4[x_height#, asc_height#]+0.5hair#, 0); + italcorr charht*slant-0.5u#; + adjust_fit(0, 0); + pickup lower_cal.nib; top y1 = top y2 = h; + lft x1 = w-rt x2 = hround 1.25u; + draw z1..z2; labels(1, 2); +endchar; + +cmchar "Calligraphic circ accent"; +beginchar(oct"27", 14.4u# + +4/3(asc_height#-x_height#)*slant+1.5u#, + asc_height#, 0); + italcorr asc_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup fine_cal.nib; + numeric a, b; b = vround(1/3[x_height, h]); + a = round max(3.6u, h+o-b); + top y2 = b+a+eps; bot y4 = b-eps; + y0 = y1 = y3 = 0.5[y4, y2]; x0 = x2 = x4 = 0.5w; + lft x3 = hround(x0-0.5a)-eps; x1-x0 = x0-x3; + draw superellipse(z1, z2, z3, z4, superness); + labels(1, 2, 3, 4, 0); +endchar; + +cmchar "Calligraphic cedilla accent"; +beginchar(oct"30", 9u#, 0, desc_depth#); + italcorr asc_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup lower_cal.nib; + bot y1 = -oo; top y2 = -vround max(o, -d/6); + bot y4 = -d; y3 = 0.5[y2, y4]; y5 = good.y 0.4[y4, y3]; + x1 = x2 = x4 = good.x 0.5w; + lft x5 = w-rt x3 = hround 1.5u-eps; + draw z1--z2 right_to_down z3 down_to_left + z4 ... z5; + labels(1, 2, 3, 4, 5); +endchar; + +cmchar "Calligraphic dot accent"; +beginchar(oct"137", 9u#, + min(asc_height#, 10/7x_height#+0.5flare#), 0); + adjust_fit(0, 0); + pickup fine_cal.nib; + cal_dot1(0.5w, h-0.5flare, flare); + math_fit(0, 0); + penlabels(1, 1'); +endchar; + +cmchar "Calligraphic umlaut accent"; +beginchar(oct"177", 9u#, + min(asc_height#, 10/7x_height#+0.5flare#), 0); + adjust_fit(0, 0); + pickup fine_cal.nib; + cal_dot1(2.75u, h-0.5flare, flare); + cal_dot2(w-2.75u, h-0.5flare, flare); + math_fit(0, 0); + penlabels(1, 1', 2, 2'); +endchar; + +cmchar "Calligraphic long umlaut accent"; +beginchar(oct"175", 9u#, min(asc_height#, 2x_height#), 0); + adjust_fit(0, 0); + pickup pencircle xscaled stem yscaled hair; + top y1 = top y3 = h+eps; + bot y2 = bot y4 = vround 1/3[x_height, h]-eps; + lft x4 = hround 2.25u; rt x1 = w-hround 1.5u; + x1-x3 = x2-x4 = hround 3u; + draw z1{x2-x1, 2(y2-y1)}..z2; + draw z3{x4-x3, 2(y4-y3)}..z4; + labels(1, 2, 3, 4); +endchar; + +beginchar("@", 15u#, asc_height#, 0); + "The at sign"; + italcorr 0.7asc_height#*slant-0.5u#; + adjust_fit(0, 0); + pickup lower_cal.nib; + top y1 = 0.75h+eps; bot y3 = vround 0.25h-eps; y4 = 0.333[y3, y5]; + top y5 = h+o; y6 = 0.5[y5, y7]; bot y7 = -o; y8 = good.y 0.15h; + y2 = 0.2[y3, y1]; + rt x4 = rt x8 = w-hround u+eps; lft x6 = hround u-eps; + x5 = x7 = 0.5[x4, x6]; + x1 = x2 = good.x(0.7[x6, x4]); x3 = 0.333[x2, x4]; + draw z1..z2 down_to_right z3 right_to_up z4 up_to_left z5 + left_to_down z6 down_to_right z7...z8; + % + y9b = good.y(0.73[y7, y5]); y9d = good.y(0.27[y7, y5]); + 0.5[y9b, y9d] = y9a = y9c; + y9a-y9e = 0.4*(y9b-y9e); + x9a = x1; x9c = good.x 0.71[x4, x6]; + x9b = x9d = 0.5[x9a, x9c]; + draw z9a up_to_left z9b...z9c down_to_right + z9d right_to_up z9a; + labels(1, 2, 3, 4, 5, 6, 7, 8, 9a, 9b, 9c, 9d); + math_fit(0, 0); +endchar; + +skewchar=oct"060"; skew#=.5u#; + +ligtable cal_reverse_apostrophe: cal_reverse_apostrophe=: cal_opening_quotes; +ligtable cal_apostrophe: cal_apostrophe=: cal_closing_quotes; +ligtable "!": cal_reverse_apostrophe =: call_spanish_shriek; +ligtable "?": cal_reverse_apostrophe =: call_spanish_query; +ligtable "<": "<" =: call_laquo; +ligtable ">": ">" =: call_raquo; + +ligtable "-" : "-" =: oct"173"; +ligtable oct"173" : "-" =: oct"174"; + +ligtable "I": "T": "V": skewchar kern skew#; +ligtable "D": "R": "U": "W": "Y": skewchar kern 3skew#; +ligtable "E": "G": "O": "Q": skewchar kern 4skew#; +ligtable "B": "C": "L": "S": "X": "Z": skewchar kern 5skew#; +ligtable "J": skewchar kern 6skew#; +ligtable "A": skewchar kern 7skew#; + +ligtable "F": skewchar kern 4skew#, +"a" kern -2u#, "e" kern -2u#, "o" kern -2u#, "r" kern -u#; + +ligtable "H": skewchar kern 4skew#, +"a" kern -u#, "e" kern -u#, "o" kern -u#; + +ligtable "K": skewchar kern 2skew#, +"a" kern -u#, "e" kern -u#, "o" kern -u#; + +ligtable "M": skewchar kern 5skew#, +"a" kern -u#, "e" kern -u#, "o" kern -u#, "r" kern -u#; + +ligtable "N": skewchar kern 3skew#, +"a" kern -u#, "e" kern -u#, "o" kern -u#; + +ligtable "P": skewchar kern 3skew#, +"a" kern -u#, "e" kern -u#, "o" kern -u#; + +ligtable "f": "a" kern -0.5u#, "e" kern -0.5u#, "o" kern -0.5u#; +ligtable "h": "m": "n": "t": "x": +"a" kern -0.25u#, "e" kern -0.25u#, "o" kern -0.25u#, +"d" kern -0.25u#, "g" kern -0.25u#, "q" kern -0.25u#; +ligtable "o": "x" kern -0.25u#; + +endinput. |