% Gislet Roman Uppercase letters if not known saveserifwd#: saveserifwd#=serifwd#; fi; begingroup save serifwd; serifwd#=1.2saveserifwd#; define_whole_blacker_pixels(serifwd); def letter_A = % # 6r % ### % 6l=3l ##3## % ##### % # #### % # #### % # #### % 7l ######### 8l % ##7r 8r#### % ## #### % ## #### % #### ###### % 2 4 % save alpha; numeric alpha; % Direction of stems; alpha=angle((w-uc_med)/2-U+ba,h+vo); diag_bl 2(U-ba,0,9/10uc_med,alpha-180); penpos3(uc_thin,alpha-90); diag_br 4(w-U+ba,0,uc_thick,-alpha); z6l=z3l; z6r=((w+uc_med)/2,h+vo); z3l=z2l+whatever*dir alpha; z6l=z4l+whatever*dir(180-alpha); align(z2l,z3l,z7l); % z7l on left of stem AND top of bar align(z3r,z2r-(1/20uc_med,0),z7r); y7l=0.45h=y7r+uc_thin=y8l=y8r+uc_thin; align(z4l,z6l,z8r); align(z4r,z6r,z8l); penstroke z2e..z7e..z3e; fill z4l--z6l--z6r--z4r--cycle; z7=1/2[z7l,z7r]; z8=1/2[z8l,z8r]; draw z7..z8; cutoff(z7,angle(z6l-z2l)+90); cutoff(z8,angle(z6r-z4r)-90); enddef; defchar("A", A_width#, cap#, 0, ucpen, -A_width#/2); letter_A; endchar; defchar(hex"C0", A_width#, cap#, 0, ucpen, -A_width#/2); letter_A; grave(w/2,h); endchar; defchar(hex"C1", A_width#, cap#, 0, ucpen, -A_width#/2); letter_A; acute(w/2,h); endchar; defchar(hex"C2", A_width#, cap#, 0, ucpen, -A_width#/2); letter_A; circumflex(w/2,h); endchar; defchar(hex"C3", A_width#, cap#, 0, ucpen, -A_width#/2); letter_A; tilde(w/2,h); endchar; defchar(hex"C4", A_width#, cap#, 0, ucpen, -A_width#/2); letter_A; umlaut(w/2,h); endchar; defchar(hex"C5", A_width#, cap#, 0, ucpen, -A_width#/2); letter_A; ring(w/2,h); endchar; defchar(hex"80", A_width#, cap#, 0, ucpen, -A_width#/2); letter_A; breve(w/2,h); endchar; defchar(hex"81", A_width#, cap#, 2lc_thick#, ucpen, -A_width#/2); letter_A; cedilla(x4l+1/2fine,0); endchar; defchar("B", B_width#, cap#, 0, ucpen, -U#); % % z6 % z3 ######## % #### ### % ### ### z4 % ### ### % z2 ####### % ### z8### % ### ### z5 % #### ### % z1 ######### % z7 % bot lft z1=(U,0); % Bottom of vertical stem top lft z3=(U,h); % Top of vertical stem draw z1--z3; % Vertical stem serif1(-serifwd,serifht); % Draw bottom left serif serif3(-serifwd,-serifht); % Draw top left serif pickup uccurvepen; lft z2=(rt x1+gap,uc_bar); rt z4=(w-U+ba-0.054h+ho,(uc_bar+h)/2); % Right tip of upper bowl rt z5=(w-U+ba+ho,1/2uc_bar); % Right tip of lower bowl top z6=(1/2[rt x3,x4],h); % Top of upper bowl bot z7=(1/2[rt x1,x5],0); % Bottom of lower bowl z8=(1/4[x2,x4],y2); draw z1---z7...z5...z8---z2; % Lower bowl draw z2---z8...z4...z6---z3; % Upper bowl endchar; def letter_C = % % z1 ##### # z10 % ### ### z4 % ### ## z5 % ### % z2 ### % ### % ### ## z6 % ### ### z7 % z3 ###### % path p; numeric s, t; top z1=(0.5w,h+vo); % Top lft z2=(U-ba-ho,h/2); % Left bot z3=(0.5w,-vo); % Bottom x5r=w-U+ba-0.027h+ho; penpos5(fine,90-inclination); y4r=h-0.12h; penpos4(serifht,90-inclination); y10r=h; penpos10(fine,90-inclination); z4r+(uc_thin+serifwd)*dir(-inclination)=z5r; z10r=whatever[z4r,z5r]; rt z6=(w-U+ba+ho,0.3xheight); pickup ucthinpen; lft z4'=z4l; p=z4'..z1{left}..z2..{right}z3..z6; s=directiontime (-dirpentilt) of (subpath (1,2) of p); t=directiontime (dirpentilt) of (subpath (3,4) of p); pickup uccurvepen; cutdraw subpath (1+s,3+t) of p; % Left half of C pickup ucthinpen; cutdraw subpath (0,1+s) of p; cutdraw subpath (3+t,4) of p; if unknown sans: fill z10l--z10r--z5r--z5l..{direction 0 of p}z4l--cycle; fi enddef; defchar("C", C_width#, cap#, 0, uccurvepen, -U#); letter_C; endchar; defchar(hex"C7", C_width#, cap#, 2lc_thick#, uccurvepen, -U#); letter_C; cedilla(w/2,0); endchar; defchar(hex"82", C_width#, cap#, 0, uccurvepen, -U#); letter_C; acute(w/2,h); endchar; defchar(hex"83", C_width#, cap#, 0, uccurvepen, -U#); letter_C; caron(w/2,h); endchar; def letter_D = % % 3 % 2 ####### % ### ## % ### ## % ### ### % ### ### 4 % ### ## % ### ## % 1 ####### % 5 % bot lft z1=(U,0); % Bottom of stem serif1(-serifwd,serifht); % Draw bottom left serif top lft z2=(U,h); % Top of stem serif2(-serifwd,-serifht); % Draw top left serif draw z1..z2; % Draw stem pickup uccurvepen; % Use curvepen for bowl rt z4=(w-U+ba+ho,h/2); % Tip of bowl bot z1'=(x1,0); % Almost z1 bot z5=(1/3[rt x1,x4],0); % Bottom of bowl top z2'=(x2,h); % Almost z2 top z3=(1/3[rt x2,x4],h); % Top of bowl; draw z2'{right}..z3{right}..z4..z5---z1'; enddef; defchar("D", D_width#, cap#, 0, ucpen, -1/3D_width#); letter_D; endchar; defchar(hex"84", D_width#, cap#, 0, ucpen, -1/3D_width#); letter_D; caron(w/2,h); endchar; def letter_E = % % 5 % 2 ########## % ### ## % ### # 9 % ### 7 # % ### ## % 3 ######## 4 % ### ## % ### 8 # % ### # 10 % ### ## % 1 ########## % 6 % top rt z5=(w-U+ba-0.027h,h); % Top right of E z9=top rt z5+whatever*dir(inclination); y9=top y5-(uc_thin+serifwd); z9'=z9+fine*left; % Tip is 'fine' wide if serifht