summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/fonts/source/public/eiad/eira.mf
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/fonts/source/public/eiad/eira.mf')
-rw-r--r--Master/texmf-dist/fonts/source/public/eiad/eira.mf140
1 files changed, 140 insertions, 0 deletions
diff --git a/Master/texmf-dist/fonts/source/public/eiad/eira.mf b/Master/texmf-dist/fonts/source/public/eiad/eira.mf
new file mode 100644
index 00000000000..46ad27b9abb
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/eiad/eira.mf
@@ -0,0 +1,140 @@
+% eira.mf: Irish diacritics and macros
+
+ailm_fada := oct"033"; Ailm_fada := oct"003";
+eabhadh_fada := oct"034"; Eabhadh_fada := oct"004";
+iodha_fada := oct"035"; Iodha_fada := oct"005";
+oir_fada := oct"036"; Oir_fada := oct"006";
+uwr_fada := oct"037"; Uwr_fada := oct"007";
+
+def fada(suffix $) =
+x.fad1-x.fad2=3u; .5[x.fad1,x.fad2]=x$;
+if serifs: pickup crisp.nib;
+ y.fad1+.5stem=h+eps;
+ y.fad2=max(2/3[h,x_height],x_height+o+hair,y$+o+.5tiny);
+ numeric theta; theta=angle(z.fad2-z.fad1)+90;
+ pos.fad1(stem,theta); pos.fad2(hair,theta);
+ filldraw circ_stroke z.fad1e--z.fad2e; % diagonal
+else: pickup fine.nib; pos.fad1(stem,0); pos.fad2(vair,0);
+ top y.fad1=h; bot y.fad2=max(vround 2/3[h,x_height],y$r+o+.5tiny);
+ filldraw stroke z.fad1e--z.fad2e; fi % diagonal
+penlabels(fad1,fad2); enddef;
+
+dot_diam# := max(dot_size#,cap_curve#);
+beith_h := oct"166"; Beith_h := oct"126";
+coll_h := oct"153"; Coll_h := oct"113";
+dair_h := oct"152"; Dair_h := oct"112";
+fearn_h := oct"161"; Fearn_h := oct"121";
+gort_h := oct"171"; Gort_h := oct"131";
+muin_h := oct"167"; Muin_h := oct"127";
+peith_bhog_h := oct"040"; Peith_Bhog_h := oct"000";
+sail_h := oct"172"; Sail_h := oct"132";
+teine_h := oct"170"; Teine_h := oct"130";
+agus_lig := oct"031";
+
+def gen_ponc (expr meawn) =
+pickup tiny.nib; pos.ponc1(dot_diam,0); pos.ponc2(dot_diam,90);
+x.ponc1=x.ponc2=meawn;
+top y.ponc2r=h+1;
+if bot y.ponc2l<x_height+o+slab:
+ y.ponc2l:=min(y.ponc2r-eps,x_height+o+slab+.5tiny); fi
+y.ponc1=.5[y.ponc2l,y.ponc2r]; dot(ponc1,ponc2); % dot
+penlabels(ponc1,ponc2); enddef;
+
+cmchar "Dot accent";
+numeric dot_diam#; dot_diam#=max(dot_size#,cap_curve#);
+beginchar(oct"032",5u#,min(old_asc_height#,10/7x_height#+.5dot_diam#),0);
+define_whole_blacker_pixels(dot_diam);
+italcorr h#*slant+.5dot_diam#-2u#;
+adjust_fit(0,0); gen_ponc (.5w); endchar;
+
+def aspirate(suffix $) = gen_ponc (x$); enddef;
+
+def trasnawn(suffix $,@)(expr jut) =
+ pickup crisp.nib; pos@1(hround(hair-stem_corr),0); pos@2(bar,90);
+ lft x@0=lft x@1l=tiny.lft x$l; top y@1=tiny.top y$r;
+ lft x@2=lft x@0-jut; y@2r=y@1-serif_drop;
+ y@0=y@2l-bracket-eps;
+ if serif_drop>0: erase fill z@1--top z@1
+ --(x@2r,top y@1)--z@2r--cycle; fi % erase excess at top
+ filldraw z@1l{down}...{left}z@2r--z@2l{right}
+ ...1/3[(x@0,y@2l),.5[z@2l,z@0] ]{z@0-z@2l}
+ ...{down}z@0--(x@1,y@0)--cycle; % sloped serif
+ z@3=(tiny.rt x$r,y@2);
+ erase fill top z@1r{right}...(x@3,y@2){down}--(x@3,top y@1r)--cycle;
+ labels(@0,@1,@2,@3); enddef;
+
+def guta_beag (expr ainm, achar) (suffix $) =
+ scantokens("cmchar") ainm;
+ beginchar (substring (0,1) of ainm, achar, x_height#, 0);
+ gen_letter;
+ endchar;
+ scantokens("cmchar") (ainm & " fada");
+ beginchar (scantokens (ainm & "_fada"),
+ achar, min(old_asc_height#,2x_height#), 0);
+ gen_letter; fada ($);
+ endchar;
+enddef;
+
+def guta_mowr (expr ainm, achar) (suffix $) =
+ scantokens("cmchar") ainm;
+ beginchar (substring (0,1) of ainm, achar, cap_height#, 0);
+ gen_letter;
+ endchar;
+ scantokens("cmchar") (ainm & " fada");
+ beginchar (scantokens (ainm & "_fada")-guta_offset,
+ achar, cap_asc_height#, 0);
+ gen_letter; fada ($);
+ endchar;
+enddef;
+
+def consan_beag (expr ainm, achar, doimh) (suffix $) =
+ scantokens("cmchar") ainm;
+ beginchar (substring (0,1) of ainm, achar, x_height#, doimh);
+ gen_letter;
+ endchar;
+ scantokens("cmchar") (ainm & " haitch");
+ beginchar (scantokens (ainm & "_h"), achar,
+ min(old_asc_height#,10/7x_height#+.5dot_diam#), doimh);
+ gen_letter; aspirate ($);
+ endchar;
+enddef;
+
+def consan_mowr (expr ainm, achar, doimh) (suffix $) =
+ scantokens("cmchar") ainm;
+ beginchar (substring (0,1) of ainm, achar, cap_height#, doimh);
+ gen_letter;
+ endchar;
+ scantokens("cmchar") (ainm & " haitch");
+ beginchar (scantokens (ainm & "_h"), achar, cap_asc_height#, doimh);
+ gen_letter; aspirate ($);
+ endchar;
+enddef;
+
+cmchar "agus";
+beginchar(agus_lig,8u#,x_height#,desc_depth#);
+italcorr x_height#*slant;
+adjust_fit(0,0);
+numeric arm_thickness, bot_width, top_shift, top_hair;
+if hefty: arm_thickness=Vround(slab+2stem_corr); top_shift=0;
+ bot_width=hround .51[curve,cap_curve]; top_hair=.4[thin_join,bot_width];
+else: arm_thickness=Vround .4[stem,cap_stem]; top_shift=.5u;
+ bot_width=flare; top_hair=cap_hair; fi
+if top_hair<tiny.breadth: top_hair:=tiny.breadth; fi
+pickup crisp.nib;
+if arm_thickness<=2currentbreadth: arm_thickness:=2currentbreadth+eps; fi
+pos2(.5arm_thickness,90); pos1(arm_thickness,70);
+top y1r=top y2r=h; rt x2=hround(w-.75u+top_shift);
+lft x1r=hround(.75u+.5top_shift);
+filldraw stroke z1e{x2l-x1r,2(y2l-y1r)} .. z2e;
+penpos2'(2epsilon,-90); z2'=z2r;
+pickup tiny.nib; pos4(top_hair,0);
+bot y4=max(h-arm_thickness,h-slab,bot y2l); rt x4r=crisp.rt x2;
+pos5(top_hair,0); y5=-d; lft x5l=hround(5.5u+top_shift-.5top_hair);
+if hefty: erase fill rt z4r--z4r...{down}z5r
+ --(rt x4r,y5)--cycle; % erase excess at top
+ filldraw stroke z4e...{down}z5e; % stroke
+else:
+ erase fill rt z4r--z4r--z5r--(rt x4r,y5)--cycle; % erase excess at top
+ filldraw stroke z4e---z5e; fi % stroke
+penlabels(1,2,4,5); endchar;
+