summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/fonts/source/public/ibygrk
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-09 23:38:21 +0000
committerKarl Berry <karl@freefriends.org>2006-01-09 23:38:21 +0000
commit215012a8d684889983ec2c0629e1c704e6853d9c (patch)
treeebf1271bd71869069824935ae8a5678745bf8bce /Master/texmf-dist/fonts/source/public/ibygrk
parent1af3d19d6dbcbf309667d9cb4aa3cdda914914a9 (diff)
trunk/Master/texmf-dist/fonts/source
git-svn-id: svn://tug.org/texlive/trunk@101 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/fonts/source/public/ibygrk')
-rw-r--r--Master/texmf-dist/fonts/source/public/ibygrk/abary4.mf14
-rw-r--r--Master/texmf-dist/fonts/source/public/ibygrk/cigma4.mf22
-rw-r--r--Master/texmf-dist/fonts/source/public/ibygrk/digamma4.mf28
-rw-r--r--Master/texmf-dist/fonts/source/public/ibygrk/ebary4.mf81
-rw-r--r--Master/texmf-dist/fonts/source/public/ibygrk/fibb84.mf83
-rw-r--r--Master/texmf-dist/fonts/source/public/ibygrk/fibb848.mf83
-rw-r--r--Master/texmf-dist/fonts/source/public/ibygrk/fibb849.mf83
-rw-r--r--Master/texmf-dist/fonts/source/public/ibygrk/fibo84.mf88
-rw-r--r--Master/texmf-dist/fonts/source/public/ibygrk/fibo848.mf88
-rw-r--r--Master/texmf-dist/fonts/source/public/ibygrk/fibo849.mf88
-rw-r--r--Master/texmf-dist/fonts/source/public/ibygrk/fibr84.mf89
-rw-r--r--Master/texmf-dist/fonts/source/public/ibygrk/fibr848.mf88
-rw-r--r--Master/texmf-dist/fonts/source/public/ibygrk/fibr849.mf88
-rw-r--r--Master/texmf-dist/fonts/source/public/ibygrk/hbary4.mf25
-rw-r--r--Master/texmf-dist/fonts/source/public/ibygrk/ibary4.mf15
-rw-r--r--Master/texmf-dist/fonts/source/public/ibygrk/ibyacc4.mf608
-rw-r--r--Master/texmf-dist/fonts/source/public/ibygrk/ibycus4.mf39
-rw-r--r--Master/texmf-dist/fonts/source/public/ibygrk/ibylig4.mf250
-rw-r--r--Master/texmf-dist/fonts/source/public/ibygrk/ibylwr4.mf195
-rw-r--r--Master/texmf-dist/fonts/source/public/ibygrk/ibypnct4.mf73
-rw-r--r--Master/texmf-dist/fonts/source/public/ibygrk/ibyupr4.mf54
-rw-r--r--Master/texmf-dist/fonts/source/public/ibygrk/koppa4.mf50
-rw-r--r--Master/texmf-dist/fonts/source/public/ibygrk/obary4.mf26
-rw-r--r--Master/texmf-dist/fonts/source/public/ibygrk/sampi4.mf27
-rw-r--r--Master/texmf-dist/fonts/source/public/ibygrk/ubary4.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/ibygrk/version4.mf1
-rw-r--r--Master/texmf-dist/fonts/source/public/ibygrk/wbary4.mf25
27 files changed, 2340 insertions, 0 deletions
diff --git a/Master/texmf-dist/fonts/source/public/ibygrk/abary4.mf b/Master/texmf-dist/fonts/source/public/ibygrk/abary4.mf
new file mode 100644
index 00000000000..c007564b560
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/ibygrk/abary4.mf
@@ -0,0 +1,14 @@
+savedpicture = barypicture; % it was cleared at the end of a.mf
+%% but the dimensions set in a.mf remain.
+
+cmchar "Lowercase alpha with rough breathing and grave";
+beginchar(a_asprbary,width#,acc_ht#,0);
+this_letter; spirit_grave(x_baryctr)<; endchar;
+
+cmchar "Lowercase alpha with smooth breathing and grave";
+beginchar(a_lenbary,width#,acc_ht#,0);
+this_letter; spirit_grave(x_baryctr)>; endchar;
+
+picture barypicture;
+picture pic.iota;
+picture savedpicture;
diff --git a/Master/texmf-dist/fonts/source/public/ibygrk/cigma4.mf b/Master/texmf-dist/fonts/source/public/ibygrk/cigma4.mf
new file mode 100644
index 00000000000..e8a87171ef3
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/ibygrk/cigma4.mf
@@ -0,0 +1,22 @@
+def dims=8u#,x_height#,desc_depth# enddef;
+def ital = 0 enddef;
+def fit_params = 0,0 enddef;
+
+def gen_letter =
+ pickup fine.nib;
+ pos4(hair,-180); y4=.5h; lft x4r=hround .75u; %left bulge
+ pos6(hair,-90); rt x6l=hround(w-.75u); %bottom right
+ top y3r=h+oo; x3+.5stem=rt x6l; pos3(stem,90); %top right
+ pos5(stem,-90); bot y5r=-o; x5=.5w; %low pt
+% bot y6r= top y5l;
+ bot y6 = 0; % The rise y5-y6 must be very slight.
+ % In some hands, it is even a drop.
+ filldraw double_circ_stroke %bowl
+ z6e...z5e{left}...z4e{up}...z3e{right};
+enddef;
+
+cmchar "Lowercase lunate sigma";
+beginchar(cigmalunate,dims);
+this_letter; penlabels(1,2,3,4,5,6,7,8); endchar;
+
+picture savedpicture; \ No newline at end of file
diff --git a/Master/texmf-dist/fonts/source/public/ibygrk/digamma4.mf b/Master/texmf-dist/fonts/source/public/ibygrk/digamma4.mf
new file mode 100644
index 00000000000..52f6ef979b3
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/ibygrk/digamma4.mf
@@ -0,0 +1,28 @@
+def dims = 7.5u#,x_height#,desc_depth# enddef;
+def ital = 0 enddef;
+def fit_params = -.25,0 enddef;
+
+% composed of a modified pi-bar and the tail of eta
+
+def gen_letter=
+ pickup fine.nib;
+ pos3(vstem,-90); rt x3=hround(w-.75u); top y3l=x_height; %top right
+ pos2(vstem,-90); y2=y3; x2=1/3w; %top left
+ x1-.5hair=hround1.75u; y1-.5hair=4/3[top y2l,bot y2r]; %tip of bar
+ numeric slope; slope=angle((z2-z1)yscaled 2); pos1(hair,slope-90);
+ forsuffixes e=l,r: z1'e=(z2e-z1e)yscaled 2; endfor
+ filldraw circ_stroke z1e{z1'e}...z2e---z3e; %bar
+ pos4(hair,0); z4=z1; %attachment
+ x5=x6; x6=x1-.5u;
+ y5=y6; bot y6l-.5stem=-d-o; pos5(stem,0); pos6(stem,90);
+ pos7(vstem,-90); rt x7=hround(w-.85u); top y7l=bar_height;
+ pos8(vstem,angle(z5-z1)); top y8l=bar_height; z8 = whatever[z5,z1];
+ filldraw circ_stroke z5e...z1e;
+ filldraw stroke z8e--z7e;
+enddef;
+
+cmchar "Lowercase digamma";
+beginchar(digamma,dims);
+this_letter; penlabels(1,2,3,5,7,8); endchar;
+
+picture savedpicture; \ No newline at end of file
diff --git a/Master/texmf-dist/fonts/source/public/ibygrk/ebary4.mf b/Master/texmf-dist/fonts/source/public/ibygrk/ebary4.mf
new file mode 100644
index 00000000000..05e5598eace
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/ibygrk/ebary4.mf
@@ -0,0 +1,81 @@
+savedpicture = barypicture; % it was cleared at the end of e.mf
+%% but the dimensions set in e.mf remain.
+
+% The acute and grave accents are lifted above the normal position and
+% are also shortened slightly, with the reduction at the bottom of the
+% accent. This is because epsilon has a much larger overshoot than
+% other rounded characters, and the accent tends to bleed into it.
+
+
+def eps_grave(expr center) =
+if serifs: x22-x21=1/4w; x21-.5stem=hround(center-2/3(x22-x21)-.5stem);
+else: lft x21l=hround (1/4w-.5stem); rt x22r=hround(center+.25u+.5vair); fi
+ begingroup;
+ numeric saved_h;
+ numeric saved_x_height;
+ saved_x_height = x_height;
+ saved_h=h;
+ save h;
+ save x_height;
+ h=saved_h + .75vair;
+ x_height = saved_x_height + vair;
+generate_grave; penlabels(21,22);
+ endgroup;
+enddef;
+
+def eps_acute(expr center) =
+if serifs: x21-x22=1/4w; x21+.5stem=hround(center+2/3(x21-x22)+.5stem);
+else: rt x21r=hround (3/4w+.5stem); lft x22l=hround(center-.25u-.5vair); fi
+ begingroup;
+ numeric saved_h;
+ numeric saved_x_height;
+ saved_x_height = x_height;
+ saved_h=h;
+ save h;
+ save x_height;
+ h:=saved_h+.75vair;
+ x_height = saved_x_height + vair;
+generate_grave; penlabels(21,22);
+ endgroup;
+enddef;
+
+cmchar "Lowercase epsilon with adjusted grave";
+beginchar(e_bary,width#,acc_ht#,0);
+this_letter; eps_grave(x_baryctr);
+endchar;
+
+cmchar "Lowercase epsilon with adjusted acute";
+beginchar(e_oxy,width#,acc_ht#,0);
+this_letter; eps_acute(x_baryctr); endchar;
+
+%cmchar "Lowercase epsilon with rough breathing and acute";
+%beginchar(e_asproxy,width#,acc_ht#,0);
+%this_letter; spirit_acute(x_baryctr)<; endchar;
+
+%cmchar "Lowercase epsilon with smooth breathing and acute";
+%beginchar(e_lenoxy,width#,acc_ht#,0);
+%this_letter; spirit_acute(x_baryctr)>; endchar;
+
+cmchar "Lowercase epsilon with rough breathing and grave";
+beginchar(e_asprbary,width#,acc_ht#,0);
+this_letter; spirit_grave(x_baryctr)<; endchar;
+
+cmchar "Lowercase epsilon with smooth breathing and grave";
+beginchar(e_lenbary,width#,acc_ht#,0);
+this_letter; spirit_grave(x_baryctr)>; endchar;
+
+cmchar "Lowercase epsilon with circumflex (Attic)";
+beginchar(e_peri,width#,acc_ht#,0);
+this_letter; circumflex(x_baryctr); endchar;
+
+cmchar "Lowercase epsilon with rough breathing and circumflex (Attic)";
+beginchar(e_asprperi,width#,Circ_ht#,0);
+this_letter; spirit_circumflex(x_baryctr)<; endchar;
+
+cmchar "Lowercase epsilon with smooth breathing and circumflex (Attic)";
+beginchar(e_lenperi,width#,Circ_ht#,0);
+this_letter; spirit_circumflex(x_baryctr)>; endchar;
+
+picture barypicture;
+picture pic.iota;
+picture savedpicture;
diff --git a/Master/texmf-dist/fonts/source/public/ibygrk/fibb84.mf b/Master/texmf-dist/fonts/source/public/ibygrk/fibb84.mf
new file mode 100644
index 00000000000..f4eae460d54
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/ibygrk/fibb84.mf
@@ -0,0 +1,83 @@
+% Ibycus4 Greek Bold (Levy Bold) 10 point
+if unknown cmbase: input cmbase fi
+if unknown grbase: input grbase fi
+
+font_identifier:="IBY4B"; font_size 10pt#;
+
+u#:=22/36pt#; % unit width
+width_adj#:=11/36pt#; % width adjustment for certain characters
+serif_fit#:=0pt#; % extra sidebar near lowercase serifs
+cap_serif_fit#:=7/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#:=247/36pt#; % height of caps
+fig_height#:=232/36pt#; % height of numerals
+x_height#:=160/36pt#; % height of lowercase without ascenders
+math_axis#:=90/36pt#; % axis of symmetry for math symbols
+bar_height#:=85/36pt#; % height of crossbar in lowercase e
+comma_depth#:=70/36pt#; % depth of comma below baseline
+desc_depth#:=90/36pt#; % depth of lowercase descenders %was 70
+acc_ht#:=250/36pt#;
+circ_ht#:=230/36pt#;
+Circ_ht#:=250/36pt#;
+iota_dp#:=72/36pt#;
+
+crisp#:=0pt#; % diameter of serif corners
+tiny#:=13/36pt#; % diameter of rounded corners
+fine#:=10/36pt#; % diameter of sharply rounded corners
+thin_join#:=10/36pt#; % width of extrafine details
+hair#:=13/36pt#; % lowercase hairline breadth (was 17)
+stem#:=38/36pt#; % lowercase stem breadth (was 41)
+curve#:=41/36pt#; % lowercase curve breadth (was 46)
+ess#:=38/36pt#; % breadth in middle of lowercase s
+flare#:=41/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=56/36pt#; % diameter of dots
+cap_hair#:=19/36pt#; % uppercase hairline breadth
+cap_stem#:=51/36pt#; % uppercase stem breadth
+cap_curve#:=55/36pt#; % uppercase curve breadth
+cap_ess#:=53/36pt#; % breadth in middle of uppercase s
+rule_thickness#:=.6pt#; % thickness of lines in math symbols
+
+dish#:=1/36pt#; % amount erased at top or bottom of serifs
+bracket#:=10/36pt#; % vertical distance from serif base to tangent
+jut#:=25/36pt#; % protrusion of lowercase serifs
+cap_jut#:=39/36pt#; % protrusion of uppercase serifs
+beak_jut#:=11/36pt#; % horizontal protrusion of beak serifs
+beak#:=70/36pt#; % vertical protrusion of beak serifs
+vair#:=11/36pt#; % vertical diameter of hairlines (was 13)
+notch_cut#:=10/36pt#; % maximum breadth above or below notches
+bar#:=17/36pt#; % lowercase bar thickness
+slab#:=17/36pt#; % serif and arm thickness
+cap_bar#:=17/36pt#; % uppercase bar thickness
+cap_band#:=17/36pt#; % uppercase thickness above/below lobes
+cap_notch_cut#:=10pt#; % max breadth above/below uppercase notches
+serif_drop#:=3/36pt#; % vertical drop of sloped serifs
+stem_corr#:=2/36pt#; % for small refinements of stem breadth
+vair_corr#:=1.5/36pt#; % for small refinements of hairline height
+apex_corr#:=0pt#; % extra width at diagonal junctions
+
+o#:=4/36pt#; % amount of overshoot for curves
+apex_o#:=3/36pt#; % amount of overshoot for diagonal junctions
+
+slant:=0; % tilt ratio $(\Delta x/\Delta y)$
+otilt:=.2; % tilt of inner bowl for the letter omicron
+fudge:=1; % factor applied to weights of heavy characters
+math_spread:=.5; % extra openness of math symbols
+superness:=8/11; % parameter for superellipses
+superpull:=1/8; % extra openness inside bowls
+beak_darkness:=.4; % 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?
+straight:=false; % should stems, etc. be straight?
+monowidth:=false; % are stem and hair more or less the same width?
+
+generate ibycus4;
diff --git a/Master/texmf-dist/fonts/source/public/ibygrk/fibb848.mf b/Master/texmf-dist/fonts/source/public/ibygrk/fibb848.mf
new file mode 100644
index 00000000000..8dbfd1327c9
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/ibygrk/fibb848.mf
@@ -0,0 +1,83 @@
+% Ibycus4 Greek Bold (Levy Bold) 8 point
+if unknown cmbase: input cmbase fi
+if unknown grbase: input grbase fi
+
+font_identifier:="IBY4B"; font_size 8pt#;
+
+u#:=17.6/36pt#; % unit width
+width_adj#:=9/36pt#; % width adjustment for certain characters
+serif_fit#:=0pt#; % extra sidebar near lowercase serifs
+cap_serif_fit#:=5.6/36pt#; % extra sidebar near uppercase serifs
+letter_fit#:=0pt#; % extra space added to all sidebars
+
+body_height#:=216.0/36pt#; % height of tallest characters
+asc_height#:=200.0/36pt#; % height of lowercase ascenders
+cap_height#:=197.6/36pt#; % height of caps
+fig_height#:=185.6/36pt#; % height of numerals
+x_height#:=128.0/36pt#; % height of lowercase without ascenders
+math_axis#:=72.0/36pt#; % axis of symmetry for math symbols
+bar_height#:=68.0/36pt#; % height of crossbar in lowercase e
+comma_depth#:=56.0/36pt#; % depth of comma below baseline
+desc_depth#:=54.0/36pt#; % depth of lowercase descenders
+acc_ht#:=200.0/36pt#;
+circ_ht#:=184.0/36pt#;
+Circ_ht#:=200.0/36pt#;
+iota_dp#:=57.6/36pt#;
+
+crisp#:=0pt#; % diameter of serif corners
+tiny#:=104.0/36pt#; % diameter of rounded corners
+fine#:=70.0/36pt#; % diameter of sharply rounded corners
+thin_join#:=70.0/36pt#; % width of extrafine details
+hair#:=11.7/36pt#; % lowercase hairline breadth
+stem#:=34.2/36pt#; % lowercase stem breadth
+curve#:=32.8/36pt#; % lowercase curve breadth
+ess#:=34.2/36pt#; % breadth in middle of lowercase s
+flare#:=36.9/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=44.8/36pt#; % diameter of dots
+cap_hair#:=17.1/36pt#; % uppercase hairline breadth
+cap_stem#:=40.8/36pt#; % uppercase stem breadth
+cap_curve#:=44.0/36pt#; % uppercase curve breadth
+cap_ess#:=42.4/36pt#; % breadth in middle of uppercase s
+rule_thickness#:=0.54pt#; % thickness of lines in math symbols
+
+dish#:=1/36pt#; % amount erased at top or bottom of serifs
+bracket#:=8.0/36pt#; % vertical distance from serif base to tangent
+jut#:=20.0/36pt#; % protrusion of lowercase serifs
+cap_jut#:=31.2/36pt#; % protrusion of uppercase serifs
+beak_jut#:=8.8/36pt#; % horizontal protrusion of beak serifs
+beak#:=56.0/36pt#; % vertical protrusion of beak serifs
+vair#:=8.8/36pt#; % vertical diameter of hairlines
+notch_cut#:=10/36pt#; % maximum breadth above or below notches
+bar#:=15.3/36pt#; % lowercase bar thickness
+slab#:=15.3/36pt#; % serif and arm thickness
+cap_bar#:=15.3/36pt#; % uppercase bar thickness
+cap_band#:=15.3/36pt#; % uppercase thickness above/below lobes
+cap_notch_cut#:=8.00pt#; % max breadth above/below uppercase notches
+serif_drop#:=2.4/36pt#; % vertical drop of sloped serifs
+stem_corr#:=2.0/36pt#; % for small refinements of stem breadth
+vair_corr#:=1.5/36pt#; % for small refinements of hairline height
+apex_corr#:=0pt#; % extra width at diagonal junctions
+
+o#:=3.2/36pt#; % amount of overshoot for curves
+apex_o#:=2.4/36pt#; % amount of overshoot for diagonal junctions
+
+slant:=0; % tilt ratio $(\Delta x/\Delta y)$
+otilt:=.2; % tilt of inner bowl for the letter omicron
+fudge:=1; % factor applied to weights of heavy characters
+math_spread:=.5; % extra openness of math symbols
+superness:=8/11; % parameter for superellipses
+superpull:=1/8; % extra openness inside bowls
+beak_darkness:=.4; % 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?
+straight:=false; % should stems, etc. be straight?
+monowidth:=false; % are stem and hair more or less the same width?
+
+generate ibycus4;
diff --git a/Master/texmf-dist/fonts/source/public/ibygrk/fibb849.mf b/Master/texmf-dist/fonts/source/public/ibygrk/fibb849.mf
new file mode 100644
index 00000000000..82a47a1ad71
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/ibygrk/fibb849.mf
@@ -0,0 +1,83 @@
+% Ibycus4 Greek Bold (Levy Bold) 9 point
+if unknown cmbase: input cmbase fi
+if unknown grbase: input grbase fi
+
+font_identifier:="IBY4B"; font_size 9pt#;
+
+u#:=19.8/36pt#; % unit width
+width_adj#:=10.0/36pt#; % width adjustment for certain characters
+serif_fit#:=0pt#; % extra sidebar near lowercase serifs
+cap_serif_fit#:=6.3/36pt#; % extra sidebar near uppercase serifs
+letter_fit#:=0pt#; % extra space added to all sidebars
+
+body_height#:=243.0/36pt#; % height of tallest characters
+asc_height#:=225.0/36pt#; % height of lowercase ascenders
+cap_height#:=222.3/36pt#; % height of caps
+fig_height#:=208.8/36pt#; % height of numerals
+x_height#:=144.0/36pt#; % height of lowercase without ascenders
+math_axis#:=81.0/36pt#; % axis of symmetry for math symbols
+bar_height#:=76.5/36pt#; % height of crossbar in lowercase e
+comma_depth#:=63.0/36pt#; % depth of comma below baseline
+desc_depth#:=72.0/36pt#; % depth of lowercase descenders %was 70
+acc_ht#:=225.0/36pt#;
+circ_ht#:=207.0/36pt#;
+Circ_ht#:=225.0/36pt#;
+iota_dp#:=64.8/36pt#;
+
+crisp#:=0pt#; % diameter of serif corners
+tiny#:=58.5/36pt#; % diameter of rounded corners
+fine#:=40.0/36pt#; % diameter of sharply rounded corners
+thin_join#:=40.0/36pt#; % width of extrafine details
+hair#:=12.3/36pt#; % lowercase hairline breadth (was 17)
+stem#:=36.1/36pt#; % lowercase stem breadth (was 41)
+curve#:=36.9/36pt#; % lowercase curve breadth (was 46)
+ess#:=36.1/36pt#; % breadth in middle of lowercase s
+flare#:=39.0/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=50.4/36pt#; % diameter of dots
+cap_hair#:=18.1/36pt#; % uppercase hairline breadth
+cap_stem#:=45.9/36pt#; % uppercase stem breadth
+cap_curve#:=49.5/36pt#; % uppercase curve breadth
+cap_ess#:=47.7/36pt#; % breadth in middle of uppercase s
+rule_thickness#:=0.57pt#; % thickness of lines in math symbols
+
+dish#:=1/36pt#; % amount erased at top or bottom of serifs
+bracket#:=9.0/36pt#; % vertical distance from serif base to tangent
+jut#:=22.5/36pt#; % protrusion of lowercase serifs
+cap_jut#:=35.1/36pt#; % protrusion of uppercase serifs
+beak_jut#:=9.9/36pt#; % horizontal protrusion of beak serifs
+beak#:=63.0/36pt#; % vertical protrusion of beak serifs
+vair#:=9.9/36pt#; % vertical diameter of hairlines (was 13)
+notch_cut#:=10/36pt#; % maximum breadth above or below notches
+bar#:=16.1/36pt#; % lowercase bar thickness
+slab#:=16.1/36pt#; % serif and arm thickness
+cap_bar#:=16.1/36pt#; % uppercase bar thickness
+cap_band#:=16.1/36pt#; % uppercase thickness above/below lobes
+cap_notch_cut#:=9.00pt#; % max breadth above/below uppercase notches
+serif_drop#:=2.7/36pt#; % vertical drop of sloped serifs
+stem_corr#:=2.0/36pt#; % for small refinements of stem breadth
+vair_corr#:=1.5/36pt#; % for small refinements of hairline height
+apex_corr#:=0pt#; % extra width at diagonal junctions
+
+o#:=3.6/36pt#; % amount of overshoot for curves
+apex_o#:=2.7/36pt#; % amount of overshoot for diagonal junctions
+
+slant:=0; % tilt ratio $(\Delta x/\Delta y)$
+otilt:=.2; % tilt of inner bowl for the letter omicron
+fudge:=1; % factor applied to weights of heavy characters
+math_spread:=.5; % extra openness of math symbols
+superness:=8/11; % parameter for superellipses
+superpull:=1/8; % extra openness inside bowls
+beak_darkness:=.4; % 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?
+straight:=false; % should stems, etc. be straight?
+monowidth:=false; % are stem and hair more or less the same width?
+
+generate ibycus4;
diff --git a/Master/texmf-dist/fonts/source/public/ibygrk/fibo84.mf b/Master/texmf-dist/fonts/source/public/ibygrk/fibo84.mf
new file mode 100644
index 00000000000..b6d6861c1c1
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/ibygrk/fibo84.mf
@@ -0,0 +1,88 @@
+% Ibycus 4 Greek Obliqued (Levy Regular) 10 point
+if unknown cmbase: input cmbase fi
+if unknown grbase: input grbase fi
+
+font_identifier:="IBY4SL"; 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
+
+% circ_ht is raised to allow more roll to circumflex
+% iota subscript is brought down to the bottom shoulder.
+% more or less proportions of the OCT Porson hand. Asked
+% for by editor of Classical Antiquity (U.C.Berkeley)
+
+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#:=82/36pt#; % height of crossbar in lowercase e
+comma_depth#:=70/36pt#; % depth of comma below baseline
+desc_depth#:=90/36pt#; % depth of lowercase descenders
+acc_ht#:=250/36pt#;
+circ_ht#:=235/36pt#; % x_height# + 16/19(asc_height#-x_height#)
+Circ_ht#:=270/36pt#; % move circumflex over breathing up to top shoulder
+iota_dp#:=110/36pt#; % right on the bottom shoulder
+
+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#:=27/36pt#; % lowercase stem breadth
+curve#:=30/36pt#; % lowercase curve breadth
+ess#:=27/36pt#; % breadth in middle of lowercase s
+flare#:=27/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:=1/6; % tilt ratio $(\Delta x/\Delta y)$
+otilt:=.2; % tilt of inner bowl for the letter omicron
+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?
+straight:=false; % should stems, etc. be straight?
+monowidth:=false; %are stem and hair more or less the same width?
+
+generate ibycus4;
diff --git a/Master/texmf-dist/fonts/source/public/ibygrk/fibo848.mf b/Master/texmf-dist/fonts/source/public/ibygrk/fibo848.mf
new file mode 100644
index 00000000000..2366f06d0fd
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/ibygrk/fibo848.mf
@@ -0,0 +1,88 @@
+% Ibycus 4 Greek Obliqued (Levy Regular) 8 point
+if unknown cmbase: input cmbase fi
+if unknown grbase: input grbase fi
+
+font_identifier:="IBY4SL"; font_size 8pt#;
+
+u#:=17/36pt#; % unit width
+width_adj#:=0pt#; % width adjustment for certain characters
+serif_fit#:=0pt#; % extra sidebar near lowercase serifs
+cap_serif_fit#:=4.1/36pt#; % extra sidebar near uppercase serifs
+letter_fit#:=0pt#; % extra space added to all sidebars
+
+% circ_ht is raised to allow more roll to circumflex
+% iota subscript is brought down to the bottom shoulder.
+% more or less proportions of the OCT Porson hand. Asked
+% for by editor of Classical Antiquity (U.C.Berkeley)
+
+body_height#:=216/36pt#; % height of tallest characters
+asc_height#:=200/36pt#; % height of lowercase ascenders
+cap_height#:=196.8/36pt#; % height of caps
+fig_height#:=185.6/36pt#; % height of numerals
+x_height#:=124/36pt#; % height of lowercase without ascenders
+math_axis#:=72/36pt#; % axis of symmetry for math symbols
+bar_height#:=69.6/36pt#; % height of crossbar in lowercase e
+comma_depth#:=56/36pt#; % depth of comma below baseline
+desc_depth#:=56/36pt#; % depth of lowercase descenders
+acc_ht#:=210/36pt#;
+circ_ht#:=188/36pt#; % x_height# + 16/19(asc_height#-x_height#)
+Circ_ht#:=216/36pt#; % move circumflex over breathing up to top shoulder
+iota_dp#:=72/36pt#; % right on the bottom shoulder
+
+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#:=8/36pt#; % lowercase hairline breadth
+stem#:=24/36pt#; % lowercase stem breadth
+curve#:=25.5/36pt#; % lowercase curve breadth
+ess#:=23/36pt#; % breadth in middle of lowercase s
+flare#:=23/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=32/36pt#; % diameter of dots
+cap_hair#:=9.5/36pt#; % uppercase hairline breadth
+cap_stem#:=26.5/36pt#; % uppercase stem breadth
+cap_curve#:=30/36pt#; % uppercase curve breadth
+cap_ess#:=27/36pt#; % breadth in middle of uppercase s
+rule_thickness#:=.36pt#; % thickness of lines in math symbols
+
+dish#:=1/36pt#; % amount erased at top or bottom of serifs
+bracket#:=16/36pt#; % vertical distance from serif base to tangent
+jut#:=22/36pt#; % protrusion of lowercase serifs
+cap_jut#:=29/36pt#; % protrusion of uppercase serifs
+beak_jut#:=8.4/36pt#; % horizontal protrusion of beak serifs
+beak#:=56/36pt#; % vertical protrusion of beak serifs
+vair#:=6.6/36pt#; % vertical diameter of hairlines
+notch_cut#:=8pt#; % maximum breadth above or below notches
+bar#:=9.5/36pt#; % lowercase bar thickness
+slab#:=9.5/36pt#; % serif and arm thickness
+cap_bar#:=9.5/36pt#; % uppercase bar thickness
+cap_band#:=9.5/36pt#; % uppercase thickness above/below lobes
+cap_notch_cut#:=8pt#; % max breadth above/below uppercase notches
+serif_drop#:=3.2/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#:=6/36pt#; % amount of overshoot for curves
+apex_o#:=6/36pt#; % amount of overshoot for diagonal junctions
+
+slant:=1/6; % tilt ratio $(\Delta x/\Delta y)$
+otilt:=.2; % tilt of inner bowl for the letter omicron
+fudge:=1; % factor applied to weights of heavy characters
+math_spread:=0.4; % 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?
+straight:=false; % should stems, etc. be straight?
+monowidth:=false; %are stem and hair more or less the same width?
+
+generate ibycus4;
diff --git a/Master/texmf-dist/fonts/source/public/ibygrk/fibo849.mf b/Master/texmf-dist/fonts/source/public/ibygrk/fibo849.mf
new file mode 100644
index 00000000000..1732b895a62
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/ibygrk/fibo849.mf
@@ -0,0 +1,88 @@
+% Ibycus 4 Greek Obliqued (Levy Regular) 9 point
+if unknown cmbase: input cmbase fi
+if unknown grbase: input grbase fi
+
+font_identifier:="IBY4SL"; font_size 9pt#;
+
+u#:=18.5/36pt#; % unit width
+width_adj#:=0pt#; % width adjustment for certain characters
+serif_fit#:=0pt#; % extra sidebar near lowercase serifs
+cap_serif_fit#:=4.5/36pt#; % extra sidebar near uppercase serifs
+letter_fit#:=0pt#; % extra space added to all sidebars
+
+% circ_ht is raised to allow more roll to circumflex
+% iota subscript is brought down to the bottom shoulder.
+% more or less proportions of the OCT Porson hand. Asked
+% for by editor of Classical Antiquity (U.C.Berkeley)
+
+body_height#:=243.0/36pt#; % height of tallest characters
+asc_height#:=225.0/36pt#; % height of lowercase ascenders
+cap_height#:=221.4/36pt#; % height of caps
+fig_height#:=208.8/36pt#; % height of numerals
+x_height#:=139.5/36pt#; % height of lowercase without ascenders
+math_axis#:=81.0/36pt#; % axis of symmetry for math symbols
+bar_height#:=75.8/36pt#; % height of crossbar in lowercase e
+comma_depth#:=63.0/36pt#; % depth of comma below baseline
+desc_depth#:=73.0/36pt#; % depth of lowercase descenders
+acc_ht#:=230.0/36pt#;
+circ_ht#:=211.5/36pt#; % x_height# + 16/19(asc_height#-x_height#)
+Circ_ht#:=243.0/36pt#; % move circumflex over breathing up to top shoulder
+iota_dp#:=91/36pt#; % right on the bottom shoulder
+
+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#:=8.5/36pt#; % lowercase hairline breadth
+stem#:=25.5/36pt#; % lowercase stem breadth
+curve#:=27.8/36pt#; % lowercase curve breadth
+ess#:=25.0/36pt#; % breadth in middle of lowercase s
+flare#:=25.0/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=35.0/36pt#; % diameter of dots
+cap_hair#:=10.3/36pt#; % uppercase hairline breadth
+cap_stem#:=29.3/36pt#; % uppercase stem breadth
+cap_curve#:=33.5/36pt#; % uppercase curve breadth
+cap_ess#:=31.0/36pt#; % breadth in middle of uppercase s
+rule_thickness#:=0.38pt#; % thickness of lines in math symbols
+
+dish#:=1/36pt#; % amount erased at top or bottom of serifs
+bracket#:=18.0/36pt#; % vertical distance from serif base to tangent
+jut#:=25.0/36pt#; % protrusion of lowercase serifs
+cap_jut#:=33.0/36pt#; % protrusion of uppercase serifs
+beak_jut#:=9.2/36pt#; % horizontal protrusion of beak serifs
+beak#:=63.0/36pt#; % vertical protrusion of beak serifs
+vair#:=7.3/36pt#; % vertical diameter of hairlines
+notch_cut#:=9.00pt#; % maximum breadth above or below notches
+bar#:=10.3/36pt#; % lowercase bar thickness
+slab#:=10.3/36pt#; % serif and arm thickness
+cap_bar#:=10.3/36pt#; % uppercase bar thickness
+cap_band#:=10.3/36pt#; % uppercase thickness above/below lobes
+cap_notch_cut#:=9.00pt#; % max breadth above/below uppercase notches
+serif_drop#:=3.6/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#:=7.0/36pt#; % amount of overshoot for curves
+apex_o#:=7.0/36pt#; % amount of overshoot for diagonal junctions
+
+slant:=1/6; % tilt ratio $(\Delta x/\Delta y)$
+otilt:=.2; % tilt of inner bowl for the letter omicron
+fudge:=1; % factor applied to weights of heavy characters
+math_spread:=0.20; % 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?
+straight:=false; % should stems, etc. be straight?
+monowidth:=false; %are stem and hair more or less the same width?
+
+generate ibycus4;
diff --git a/Master/texmf-dist/fonts/source/public/ibygrk/fibr84.mf b/Master/texmf-dist/fonts/source/public/ibygrk/fibr84.mf
new file mode 100644
index 00000000000..cc64c8638ff
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/ibygrk/fibr84.mf
@@ -0,0 +1,89 @@
+% Ibycus 4 Greek (Levy Regular) 10 point
+if unknown cmbase: input cmbase fi
+if unknown grbase: input grbase fi
+
+font_identifier:="IBY4R"; 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
+
+% circ_ht is raised to allow more roll to circumflex
+% iota subscript is brought down to the bottom shoulder.
+% more or less proportions of the OCT Porson hand. Asked
+% for by editor of Classical Antiquity (U.C.Berkeley)
+
+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#:=82/36pt#; % height of crossbar in lowercase e
+comma_depth#:=70/36pt#; % depth of comma below baseline
+desc_depth#:=90/36pt#; % depth of lowercase descenders
+acc_ht#:=250/36pt#;
+circ_ht#:=235/36pt#; % give the circumflex a lot more roll
+Circ_ht#:=270/36pt#; % move circumflex over breathing up to top shoulder
+iota_dp#:=110/36pt#; % get the hook of iota subscript right on the
+ % bottom shoulder.
+
+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#:=27/36pt#; % lowercase stem breadth
+curve#:=30/36pt#; % lowercase curve breadth
+ess#:=27/36pt#; % breadth in middle of lowercase s
+flare#:=27/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)$
+otilt:=.2; % tilt of inner bowl for the letter omicron
+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?
+straight:=false; % should stems, etc. be straight?
+monowidth:=false; %are stem and hair more or less the same width?
+
+generate ibycus4;
diff --git a/Master/texmf-dist/fonts/source/public/ibygrk/fibr848.mf b/Master/texmf-dist/fonts/source/public/ibygrk/fibr848.mf
new file mode 100644
index 00000000000..a685e963624
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/ibygrk/fibr848.mf
@@ -0,0 +1,88 @@
+% Ibycus 4 Greek (Levy Regular) 8 point
+if unknown cmbase: input cmbase fi
+if unknown grbase: input grbase fi
+
+font_identifier:="IBY4R"; font_size 8pt#;
+
+u#:=17/36pt#; % unit width
+width_adj#:=0pt#; % width adjustment for certain characters
+serif_fit#:=0pt#; % extra sidebar near lowercase serifs
+cap_serif_fit#:=4.1/36pt#; % extra sidebar near uppercase serifs
+letter_fit#:=0pt#; % extra space added to all sidebars
+
+% circ_ht is raised to allow more roll to circumflex
+% iota subscript is brought down to the bottom shoulder.
+% more or less proportions of the OCT Porson hand. Asked
+% for by editor of Classical Antiquity (U.C.Berkeley)
+
+body_height#:=216/36pt#; % height of tallest characters
+asc_height#:=200/36pt#; % height of lowercase ascenders
+cap_height#:=196.8/36pt#; % height of caps
+fig_height#:=185.6/36pt#; % height of numerals
+x_height#:=124/36pt#; % height of lowercase without ascenders
+math_axis#:=72/36pt#; % axis of symmetry for math symbols
+bar_height#:=69.6/36pt#; % height of crossbar in lowercase e
+comma_depth#:=56/36pt#; % depth of comma below baseline
+desc_depth#:=56/36pt#; % depth of lowercase descenders
+acc_ht#:=210/36pt#;
+circ_ht#:=188/36pt#; % x_height# + 16/19(asc_height#-x_height#)
+Circ_ht#:=216/36pt#; % move circumflex over breathing up to top shoulder
+iota_dp#:=72/36pt#; % right on the bottom shoulder
+
+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#:=8/36pt#; % lowercase hairline breadth
+stem#:=24/36pt#; % lowercase stem breadth
+curve#:=25.5/36pt#; % lowercase curve breadth
+ess#:=23/36pt#; % breadth in middle of lowercase s
+flare#:=23/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=32/36pt#; % diameter of dots
+cap_hair#:=9.5/36pt#; % uppercase hairline breadth
+cap_stem#:=26.5/36pt#; % uppercase stem breadth
+cap_curve#:=30/36pt#; % uppercase curve breadth
+cap_ess#:=27/36pt#; % breadth in middle of uppercase s
+rule_thickness#:=.36pt#; % thickness of lines in math symbols
+
+dish#:=1/36pt#; % amount erased at top or bottom of serifs
+bracket#:=16/36pt#; % vertical distance from serif base to tangent
+jut#:=22/36pt#; % protrusion of lowercase serifs
+cap_jut#:=29/36pt#; % protrusion of uppercase serifs
+beak_jut#:=8.4/36pt#; % horizontal protrusion of beak serifs
+beak#:=56/36pt#; % vertical protrusion of beak serifs
+vair#:=6.6/36pt#; % vertical diameter of hairlines
+notch_cut#:=8pt#; % maximum breadth above or below notches
+bar#:=9.5/36pt#; % lowercase bar thickness
+slab#:=9.5/36pt#; % serif and arm thickness
+cap_bar#:=9.5/36pt#; % uppercase bar thickness
+cap_band#:=9.5/36pt#; % uppercase thickness above/below lobes
+cap_notch_cut#:=8pt#; % max breadth above/below uppercase notches
+serif_drop#:=3.2/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#:=6/36pt#; % amount of overshoot for curves
+apex_o#:=6/36pt#; % amount of overshoot for diagonal junctions
+
+slant:=0; % tilt ratio $(\Delta x/\Delta y)$
+otilt:=.2; % tilt of inner bowl for the letter omicron
+fudge:=1; % factor applied to weights of heavy characters
+math_spread:=0.4; % 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?
+straight:=false; % should stems, etc. be straight?
+monowidth:=false; %are stem and hair more or less the same width?
+
+generate ibycus4;
diff --git a/Master/texmf-dist/fonts/source/public/ibygrk/fibr849.mf b/Master/texmf-dist/fonts/source/public/ibygrk/fibr849.mf
new file mode 100644
index 00000000000..13da345708e
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/ibygrk/fibr849.mf
@@ -0,0 +1,88 @@
+% Ibycus 4 Greek (Levy Regular) 9 point
+if unknown cmbase: input cmbase fi
+if unknown grbase: input grbase fi
+
+font_identifier:="IBY4R"; font_size 9pt#;
+
+u#:=18.5/36pt#; % unit width
+width_adj#:=0pt#; % width adjustment for certain characters
+serif_fit#:=0pt#; % extra sidebar near lowercase serifs
+cap_serif_fit#:=4.5/36pt#; % extra sidebar near uppercase serifs
+letter_fit#:=0pt#; % extra space added to all sidebars
+
+% circ_ht is raised to allow more roll to circumflex
+% iota subscript is brought down to the bottom shoulder.
+% more or less proportions of the OCT Porson hand. Asked
+% for by editor of Classical Antiquity (U.C.Berkeley)
+
+body_height#:=243.0/36pt#; % height of tallest characters
+asc_height#:=225.0/36pt#; % height of lowercase ascenders
+cap_height#:=221.4/36pt#; % height of caps
+fig_height#:=208.8/36pt#; % height of numerals
+x_height#:=139.5/36pt#; % height of lowercase without ascenders
+math_axis#:=81.0/36pt#; % axis of symmetry for math symbols
+bar_height#:=75.8/36pt#; % height of crossbar in lowercase e
+comma_depth#:=63.0/36pt#; % depth of comma below baseline
+desc_depth#:=73.0/36pt#; % depth of lowercase descenders
+acc_ht#:=230.0/36pt#;
+circ_ht#:=211.5/36pt#; % x_height# + 16/19(asc_height#-x_height#)
+Circ_ht#:=243.0/36pt#; % move circumflex over breathing up to top shoulder
+iota_dp#:=91/36pt#; % right on the bottom shoulder
+
+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#:=8.5/36pt#; % lowercase hairline breadth
+stem#:=25.5/36pt#; % lowercase stem breadth
+curve#:=27.8/36pt#; % lowercase curve breadth
+ess#:=25.0/36pt#; % breadth in middle of lowercase s
+flare#:=25.0/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=35.0/36pt#; % diameter of dots
+cap_hair#:=10.3/36pt#; % uppercase hairline breadth
+cap_stem#:=29.3/36pt#; % uppercase stem breadth
+cap_curve#:=33.5/36pt#; % uppercase curve breadth
+cap_ess#:=31.0/36pt#; % breadth in middle of uppercase s
+rule_thickness#:=0.38pt#; % thickness of lines in math symbols
+
+dish#:=1/36pt#; % amount erased at top or bottom of serifs
+bracket#:=18.0/36pt#; % vertical distance from serif base to tangent
+jut#:=25.0/36pt#; % protrusion of lowercase serifs
+cap_jut#:=33.0/36pt#; % protrusion of uppercase serifs
+beak_jut#:=9.2/36pt#; % horizontal protrusion of beak serifs
+beak#:=63.0/36pt#; % vertical protrusion of beak serifs
+vair#:=7.3/36pt#; % vertical diameter of hairlines
+notch_cut#:=9.00pt#; % maximum breadth above or below notches
+bar#:=10.3/36pt#; % lowercase bar thickness
+slab#:=10.3/36pt#; % serif and arm thickness
+cap_bar#:=10.3/36pt#; % uppercase bar thickness
+cap_band#:=10.3/36pt#; % uppercase thickness above/below lobes
+cap_notch_cut#:=9.00pt#; % max breadth above/below uppercase notches
+serif_drop#:=3.6/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#:=7.0/36pt#; % amount of overshoot for curves
+apex_o#:=7.0/36pt#; % amount of overshoot for diagonal junctions
+
+slant:=0; % tilt ratio $(\Delta x/\Delta y)$
+otilt:=.2; % tilt of inner bowl for the letter omicron
+fudge:=1; % factor applied to weights of heavy characters
+math_spread:=0.20; % 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?
+straight:=false; % should stems, etc. be straight?
+monowidth:=false; %are stem and hair more or less the same width?
+
+generate ibycus4;
diff --git a/Master/texmf-dist/fonts/source/public/ibygrk/hbary4.mf b/Master/texmf-dist/fonts/source/public/ibygrk/hbary4.mf
new file mode 100644
index 00000000000..f18b66a3e80
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/ibygrk/hbary4.mf
@@ -0,0 +1,25 @@
+savedpicture = barypicture; % it was cleared at the end of h.mf
+%% but the dimensions set in h.mf remain.
+
+% The opened out accent clusters make an adjustment of "center"
+% necessary.
+
+cmchar "recentered Lowercase eta with rough breathing and acute";
+beginchar(h_asproxy,width#,acc_ht#,desc_depth#);
+this_letter; spirit_acute(x_baryctr -.75u)<; endchar;
+
+cmchar "recentered Lowercase eta with smooth breathing and acute";
+beginchar(h_lenoxy,width#,acc_ht#,desc_depth#);
+this_letter; spirit_acute(x_baryctr -.75u)>; endchar;
+
+cmchar "Lowercase eta with rough breathing and grave";
+beginchar(h_asprbary,width#,acc_ht#,desc_depth#);
+this_letter; spirit_grave(x_baryctr -.75u)<; endchar;
+
+cmchar "Lowercase eta with smooth breathing and grave";
+beginchar(h_lenbary,width#,acc_ht#,desc_depth#);
+this_letter; spirit_grave(x_baryctr -.75u)>; endchar;
+
+picture barypicture;
+picture pic.iota;
+picture savedpicture;
diff --git a/Master/texmf-dist/fonts/source/public/ibygrk/ibary4.mf b/Master/texmf-dist/fonts/source/public/ibygrk/ibary4.mf
new file mode 100644
index 00000000000..1bcead5dd7c
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/ibygrk/ibary4.mf
@@ -0,0 +1,15 @@
+savedpicture = barypicture; % it was cleared at the end of i.mf
+%% but the dimensions set in i.mf remain.
+
+cmchar "Lowercase iota with rough breathing and grave";
+beginchar(i_asprbary,width#,acc_ht#,0);
+this_letter; spirit_grave(x_baryctr)<; endchar;
+
+cmchar "Lowercase iota with smooth breathing and grave";
+beginchar(i_lenbary,width#,acc_ht#,0);
+this_letter; spirit_grave(x_baryctr)>; endchar;
+
+picture barypicture;
+picture pic.iota;
+picture savedpicture;
+
diff --git a/Master/texmf-dist/fonts/source/public/ibygrk/ibyacc4.mf b/Master/texmf-dist/fonts/source/public/ibygrk/ibyacc4.mf
new file mode 100644
index 00000000000..a8acfae64d3
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/ibygrk/ibyacc4.mf
@@ -0,0 +1,608 @@
+% Make sure the macros we want to replace are loaded
+if unknown gen_acc : readfrom("gen_acc") fi
+numeric doing_u; doing_u=0; % flag to position diaeresis
+
+def rough(suffix $,@)(expr dot_size,depth,shear) =
+ pickup fine.nib; pos$(dot_size,90);
+ if square_dots: pos$'(dot_size,180); z$'=z$; dot($',$); % squarish dot
+ comma_join_:=max(fine.breadth,floor .7dot_size);
+ comma_bot_:=max(fine.breadth,floor .5dot_size);
+ pos@0(comma_join_,180); pos@1(comma_join_,180);
+ pos@2(comma_bot_,180); y@0=y$; y@1=y$l; y@2=y@1+dot_size-depth;
+ x@0r=x@1r=x$'r; lft x@2r=good.x(x$-eps);
+ filldraw stroke z@0e--z@1e..z@2e; % tail
+ else: pos@1(vair,90); pos@2(vair,180); pos@3(vair,-90);
+ z@1r=z$r; y@1l:=y$; lft x@2r=hround(x$-.5depth+.5shear);
+ x@3+.5vair=x$+.5dot_size+shear;
+ y@2=.5[y@1,y@3]; bot y@3r=vround(top y@1r-depth);
+ % position a vertical path through the left side of the bulb
+ x@1'=x@1-.5dot_size;
+ % At the intersection of that path with SL's tail, get the direction
+ pair d@@; d@@=( direction
+ (xpart( (z@2{down}...z@3) intersectiontimes ((x@1',0){up}--(x@1',y@1))))
+ of (z@2{down}...z@3));
+ % Tilt a pen at a right angle to that direction
+ pos@3'(vair,angle(d@@)-90);
+ % Place it at the intersection. This will be the new end of the tail.
+ z@3'=directionpoint d@@ of(z@2{down}...z@3);
+ y_:=ypart((z@1{left}...z@2{down}...z@3)
+ intersectiontimes (z$l{left}..{right}z$r)); if y_<0: y_:=1; fi
+ filldraw z$r{right}..subpath (0,y_) of (z$l{left}..{right}z$r)--cycle; % dot
+ filldraw stroke z@1e{left}...z@2e{down}...{d@@}z@3'e; fi % tail
+ penlabels(@1,@2,@3); enddef;
+
+def smooth(suffix $,@)(expr dot_size,depth,shear) =
+ pickup fine.nib; pos$(dot_size,90);
+ if square_dots: pos$'(dot_size,0); z$'=z$; dot($',$); % squarish dot
+ comma_join_:=max(fine.breadth,floor .7dot_size);
+ comma_bot_:=max(fine.breadth,floor .5dot_size);
+ pos@0(comma_join_,0); pos@1(comma_join_,0);
+ pos@2(comma_bot_,0); y@0=y$; y@1=y$l; y@2=y@1+dot_size-depth;
+ x@0r=x@1r=x$'r; rt x@2r=good.x(x$-eps);
+ filldraw stroke z@0e--z@1e..z@2e; % tail
+ else: pos@1(vair,90); pos@2(vair,0); pos@3(vair,-90);
+ z@1r=z$r; y@1l:=y$; rt x@2r=hround(x$+.5depth+.5shear);
+ x@3-.5vair=hround(x$-.5dot_size+shear);
+ y@2=.5[y@1,y@3]; bot y@3r=vround(top y@1r-depth);
+ path pp; pp = (z@2{down}...z@3);
+ % position a vertical path through the right side of the bulb
+ x@1'=x@1+.5dot_size;
+ % At the intersection of that path with SL's tail, get the direction
+ pair d@@; d@@=( direction
+ (xpart( (z@2{down}...z@3) intersectiontimes ((x@1',0){up}--(x@1',y@1))))
+ of (z@2{down}...z@3));
+ % Tilt a pen at a right angle to that direction
+ pos@3'(vair,angle(d@@)+90);
+ % Place it at the intersection. This will be the new end of the tail.
+ z@3'=directionpoint d@@ of(z@2{down}...z@3);
+ y_:=ypart((z@1{right}...z@2{down}...z@3)
+ intersectiontimes (z$l{right}..{left}z$r)); if y_<0: y_:=1; fi
+ filldraw z$r{left}..subpath (0,y_) of (z$l{right}..{left}z$r)--cycle; % dot
+ filldraw stroke z@1e{right}...z@2e{down}...{d@@}z@3'e; fi % tail
+ penlabels(@1,@2,@3); enddef;
+
+
+% Improve spacing with sprit plus accent groups.
+% The original spacing was governed by the placement of the accent.
+% One of the variables set the position of the accent bottom .5stem
+% to the right of center (plus other adjustments). By increasing this
+% to 1.2stem, we get the accent still within the set-width, but far enough
+% right that the breathings (which are placed relative to the bottom
+% of the accent) can be pulled to the left by .7stem.
+% This ensures that there will be more than a stem width between
+% any element of breathing and any element of either acute or
+% grave.
+
+vardef spirit_acute(expr center) text type =
+numeric sp_bottom, sp_height;
+sp_bottom=h-sp_height=max(.8[h,x_height],x_height+o+separator);
+numeric dot_diam#; dot_diam# = 3/4dot_size#;
+define_whole_blacker_pixels(dot_diam);
+dot_diam:=max(fine.breadth,min(dot_diam,floor(2/3sp_height)));
+if serifs: x21-x22=1/6w;
+ x21+.5stem=hround(center+.25u+.5vair+(x21-x22)+1.2stem); %lft x22r ~ center+.25u
+else: rt x21r=hround (4/5w+.5stem); lft x22l=hround(center+.25u); fi
+ begingroup;
+ numeric saved_h;
+ numeric saved_x_height;
+ saved_x_height = x_height;
+ saved_h=h;
+ save h;
+ save x_height;
+ h=saved_h + .75vair;
+ x_height = saved_x_height + .3vair;
+generate_grave; penlabels(21,22);
+ endgroup;
+if 1type0: %spirit and accent separated by .1u (rough) or .25u (smooth)
+ x31=hround(lft x22 if serifs:r-.5sp_height else:l-.5dot_diam fi -.7stem -.25u);
+else: x31+.5dot_diam=hround(lft x22 if serifs:r else: l fi -.7stem-.1u); fi
+y31+.5dot_diam=h;
+if1type0:smooth else:rough fi (31,a,dot_diam,sp_height,0);
+enddef;
+
+
+vardef spirit_grave(expr center) text type =
+numeric sp_bottom, sp_height;
+sp_bottom=h-sp_height=max(.8[h,x_height],x_height+o+separator);
+numeric dot_diam#; dot_diam# = 3/4dot_size#;
+define_whole_blacker_pixels(dot_diam);
+dot_diam:=max(fine.breadth,min(dot_diam,floor(2/3sp_height)));
+% x22 is set to the right of x21 by 1/6w. The tilt is only 1/6w here.
+% x21 is set out to the right of the midpoint by the sum of .5stem and
+% .25u. Let's try a full stem width
+%if serifs: x22-x21=1/6w; x21-.5stem=hround(center+.25u);
+if serifs: x22-x21=1/6w; x21-1.2stem=hround(center+.25u);
+else: rt x22r=hround (4/5w+.5stem); lft x21l=hround(center+.25u); fi
+ begingroup;
+ numeric saved_h;
+ numeric saved_x_height;
+ saved_x_height = x_height;
+ saved_h=h;
+ save h;
+ save x_height;
+ h=saved_h + .75vair;
+ x_height = saved_x_height + .3vair;
+generate_grave; penlabels(21,22);
+ endgroup;
+% In the original, the following spacing adjustments tracked |spirit_acute|.
+% This was wrong way round. When the accent is barytone, lft x21l is nowhere
+% near the left edge of the picture, and the crowding effect is the reverse
+% of what it is with the oxytone accent. Added an extra .15u to make
+% up for the first problem, and an extra .45u to relieve the crowding
+% against the smooth breathing. But the more general widening set up
+% above is more significant. PAM, 10 May, 1997
+% remember that "type" is a macro replaced by either < or >
+if 1type0: %spirit and accent separated by .65u (rough) or .85u (smooth)
+ x31=hround(lft x21l-.5 if serifs:sp_height else:dot_diam fi -.7stem -.45u);
+else: x31+.5dot_diam=hround(lft x21l - .7stem -.65u); fi
+y31+.5dot_diam=h;
+%y31+dot_diam=h;
+if1type0:smooth else:rough fi (31,a,dot_diam,sp_height,0);
+enddef;
+
+% Reshape the iota subscript, but only for resolutions above 600
+% Thin it out so that it can have a slight hook.
+% Lengthen both the simple and the refined form, so that the
+% simple form drops as low as the tail of eta, and the refined form
+% drops to the bottom of the shoulder. Since we only make it up
+% three times, we do not save the picture, but this means that
+% all the necessary values must be known when the three iota
+% subscript characters are written. The iota subscript under
+% eta will be made shorter to open a larger space under the
+% right vertical stroke of eta.
+
+def iota_sub(expr pos_stem) =
+if known pic.iota:
+ addto currentpicture also pic.iota shifted (hround(pos_stem),0);
+else:
+ picture temp_picture; temp_picture=currentpicture; clearit;
+ pickup fine.nib;
+ x51=0; pos51(stem,180); top y51=vround(-o-2separator);
+ x52=x51; pos52(stem,180);
+ % Use the original simple subscript for lower resolutions.
+ if ( ((pixels_per_inch / mag) < 599) or (pixels_per_inch < 420) ) :
+ bot y52=-desc_depth;
+ filldraw circ_stroke z52e--z51e;
+ else :
+ % longer iota subscript with narrower tapering stem and slight hook
+ bot y52=-iota_dp;
+ pos51'(.6[hair,stem],180); pos51''(.3[hair,stem],180);
+ pos52'(.3[hair,stem],270); pos53'(.2[hair,stem],0);
+ x51'r = x51''r = x51r;
+ bot y52'r = -iota_dp; x53'r = x51l+hair; x52' = 1/2[x51',x53'];
+ y51' = y51-separator; top y53' = 5/6[y51,y52];
+ y51'' = -desc_depth; % y51'' = y53';
+ filldraw double_circ_stroke z51'e--z51''e..z52'e..z53'e;
+ fi;
+% Need to make sure that this is drawn each time (it's only four times).
+%%%%% if not working_hard : picture pic.iota; pic.iota=currentpicture; fi
+ currentpicture:=currentpicture shifted (hround(pos_stem),0);
+ addto currentpicture also temp_picture;
+fi;
+enddef;
+
+% Rewrite the width and height management of circumflex
+% Put limit on horizontal spread, and give the plain
+% circumflex more roll (depends on parameter circ_ht# in parameter file.)
+% change the shape to supply points at the ends and a thickening at the
+% center. This is more traditional and gives more shape to the
+% squeezed variant. The ends are set to vair, and the middle to
+% mid_width + vair. (Silvio Levy's mid_width is actually quite small and
+% is used at the ends as well as the mid-point. I use it at the intermediate
+% points. The result harmonizes well with other proportions.
+
+def generate_circumflex(expr center,squeeze)=
+numeric mid_width; mid_width=if squeeze:.1 else: .5 fi [vair,stem];
+if serifs:
+%pickup fine.nib; pos21(hround(mid_width-eps),180); pos22(vair,90);
+% pos23(mid_width,90); pos24(vair,90); pos25(hround(mid_width-eps),180);
+pickup fine.nib; pos21(hround(vair-eps),180); pos22(mid_width,90);
+ pos23(mid_width+vair,90); pos24(mid_width,90); pos25(hround(vair-eps),180);
+ % limit spread of circumflex while retaining scaling for narrow characters.
+ lft x21r=w-rt x25l=hround (center-if(w<9u):w/3 else:3u fi);
+ x22-x21=x23-x22=x24-x23=x25-x24;
+ % The "squeezed" circumflex tops out at body_height.
+ bot y21=bot y24l=vround(if squeeze:.75else:.6fi[x_height,h]-vair);
+ top y22r=top y25=h; y23=.5[y22,y24];
+ filldraw stroke z21e{up}...z22e{right}..z23e..{right}z24e...{up}z25e; % stroke
+else:
+ pos21(vair,-180); pos23(vair,0); y21=y23;
+ lft x21r=hround(center-w/3); rt x23r=hround(center+w/3);
+ bot y23=vround max(x_height+o+separator,
+ if squeeze: 2/3 else: 1/3 fi [x_height,h]-.5mid_width);
+ x22=center; pos22(mid_width,90); top y22r=h;
+ filldraw stroke z21e{up}...z22e...{down}z23e;
+fi
+enddef;
+
+% The spirit_circumflex height ( Circ_ht#) has been raised
+% to give more room to the breathing under it
+% Also rewrite the position of x31 below
+
+vardef spirit_circumflex(expr center) text type=
+generate_circumflex(center,true); %variable `squeeze'
+numeric sp_bottom, sp_height, sp_top, box_top;
+box_top=bot if serifs: y21l else: y22l fi;
+sp_top=sp_bottom+sp_height=vround(.15[box_top,x_height]);
+sp_top+sp_bottom=box_top+x_height;
+numeric dot_diam#; dot_diam# = 5/8dot_size#;
+define_whole_blacker_pixels(dot_diam);
+pickup fine.nib;
+dot_diam:=max(fine.breadth,min(dot_diam,floor(2/3sp_height-eps)));
+x31 if1type0:+.5dot_diam fi=hround(center);
+% The code that was here was equivalent to x31=hround(center);
+% By shifting x31 leftward only for the smooth breathing, we move the
+% "optical center" of the smooth breathing to about where
+% the "optical center" of the rough breathing is. This relieves
+% the crowding under the downcurve of the circumflex.
+y31+.5dot_diam=vround(sp_top);
+if1type0:smooth else:rough fi (31,a,dot_diam,sp_height,0);
+penlabels(31);
+enddef;
+
+% Spread out the accented diareses; pull acute a bit to the left
+% and shove grave a bit to the right (1/8u in both instances).
+% Raise the accent slightly, and shorten it by changing
+% h and x_height within a save group. 10 May, 1997.
+% The angle of the accent is governed by the width of iota, since
+% this gives the cleanest association of accent and diaeresis.
+% The older calculation depended on the width of the underlying character,
+% which flattens out the angle and makes the accent crowd the dot it
+% is closest to.
+% An adjustment is required to raise the dots away from the tips
+% of the upsilon. Once they are spaced out, they bleed into the
+% character. This undoes much of the effect of the raising of
+% the accent mentioned above, but since prau+ is about the only
+% even slightly common root with a upsilon diaeresis, this does not
+% too much matter.
+
+vardef diaeresis_acute(expr center)=
+ if serifs: x21-x22=1.25u; x21+.5stem=hround(center+5/6(x21-x22)+.5stem-1/8u);
+ else: rt x21r=hround (3.75u+.5stem); lft x22l=hround(center-.5vair); fi
+ begingroup;
+ numeric saved_h;
+ numeric saved_x_height;
+ saved_x_height = x_height;
+ saved_h=h;
+ save h;
+ save x_height;
+ h=Circ_ht;
+ x_height = saved_x_height + 1.5(h - saved_h);
+ generate_grave; penlabels(21,22);
+ endgroup;
+ generate_diaeresis(center,.9dot_size,2.25dot_size,
+ if doing_u > 0: .35 else : .5 fi [h,x_height],x_height+separator);
+enddef;
+
+vardef diaeresis_grave(expr center)=
+ if serifs: x22-x21=1.25u; x21-.5stem=hround(center-5/6(x22-x21)-.5stem+1/8u);
+ else: lft x21l=hround (1.25u-.5stem); rt x22r=hround(center+.5vair); fi
+ begingroup;
+ numeric saved_h;
+ numeric saved_x_height;
+ saved_x_height = x_height;
+ saved_h=h;
+ save h;
+ save x_height;
+ h=Circ_ht;
+ x_height = saved_x_height + 1.5(h - saved_h);
+ generate_grave; penlabels(21,22);
+ endgroup;
+ generate_diaeresis(center,.9dot_size,2.25dot_size,
+ if doing_u > 0: .35 else : .5 fi [h,x_height],x_height+separator);
+enddef;
+
+vardef generate_underdot(expr center,base)=
+ pickup tiny.nib;
+ pos31(dot_diam,0); pos32(dot_diam,90);
+ x31l=hround(center+(x31l-x31)); x31=x32;
+ y32l=vround(base); y31=y32; dot(31,32);
+ penlabels(31,32);
+enddef;
+
+% Set up remapping of Grave and Acute, Asper and Lenis.
+% This allows a more natural setting of single quotes, apostrophe
+% and angle brackets.
+% Move two accents out of the way of Ibycus
+% Xi and digamma. Correct height of "Smooth breathing
+% with grave" and "Rough breathing with circumflex"
+% composites.
+% Slight redesign of freestanding "Iota subscript".
+% Reposition Breve and Macron, but these will usually
+% be got from the prosody font anyway.
+%
+def selectaccent expr t =
+ currenttitle:= t;
+ if t = "Grave accent" :
+ code_offset := bary_tone - ASCII"`" ; let next_ = use_it_
+ elseif t = "Acute accent" :
+ code_offset := oxy_tone - ASCII"'" ; let next_ = use_it_
+ elseif t = "Rough breathing" : let next_ = lose_it_
+ elseif t = "Smooth breathing" : let next_ = lose_it_
+ elseif t = "Rough breathing with acute" : let next_ = lose_it_
+ elseif t = "Rough breathing with grave" : let next_ = lose_it_
+ elseif t = "Rough breathing with circumflex" : let next_ = lose_it_
+ elseif t = "Smooth breathing with acute" : let next_ = lose_it_
+ elseif t = "Smooth breathing with grave" : let next_ = lose_it_
+ elseif t = "Smooth breathing and circumflex" : let next_ = lose_it_
+ elseif t = "Diaeresis with circumflex" : let next_ = lose_it_
+ elseif t = "Iota subscript" : let next_ = lose_it_
+ elseif t = "Breve accent" :
+ code_offset := breve - oct"036" ; let next_ = use_it_
+ elseif t = "Macron (bar) accent" :
+ code_offset := longum - oct"037"; let next_ = use_it_
+ else: code_offset := 0 ; let next_ = use_it_ fi; next_ enddef;
+
+def selectaspirate expr t =
+ currenttitle:= t;
+ if t = "Italic letter h" :
+ code_offset := aspirate - ASCII"h" ; let next_ = use_it_
+ else: let next_ = lose_it_ fi; next_ enddef;
+
+let cmchar = selectaspirate;
+
+input itall
+
+code_offset:=0;
+let cmchar = relax;
+
+% Use adjust fit to kern the accents that go with
+% uppercase out a bit to the left so that accented uppercase does not
+% take more than its proper letterspace. Should have been applied
+% to trailing side bearing too, but there is too much water under
+% the bridge now. Silvio Levy's accents have no
+% adjust_fit, and a character with no adjust_fit picks up
+% the values of the previous character.
+
+cmchar "Rough breathing";
+beginchar(asper_glyph,9u#,acc_ht#,0);
+adjust_fit(-4u#,0);
+spirit(.5w)<;
+endchar;
+
+cmchar "Smooth breathing";
+beginchar(lenis_glyph,9u#,acc_ht#,0);
+adjust_fit(-5u#,0);
+spirit(.5w)>;
+endchar;
+
+cmchar "Rough breathing with acute";
+beginchar(asper_oxy,9u#,acc_ht#,0);
+adjust_fit(-3u#,0);
+spirit_acute(.5w)<;
+endchar;
+
+cmchar "Rough breathing with grave";
+beginchar(asper_bary,9u#,acc_ht#,0);
+adjust_fit(-3u#,0);
+spirit_grave(.5w)<;
+endchar;
+
+% Do asper_perispomenon with corrected heights.
+cmchar "Rough breathing with circumflex";
+beginchar(asper_peri,9u#,Circ_ht#,0);
+adjust_fit(-3u#,0);
+spirit_circumflex(.5w)<;
+endchar;
+
+cmchar "Smooth breathing with acute";
+beginchar(lenis_oxy,9u#,acc_ht#,0);
+adjust_fit(-3u#,0);
+spirit_acute(.5w)>;
+endchar;
+
+% Do lenis_barytone with corrected height.
+cmchar "Smooth breathing with grave";
+beginchar(lenis_bary,9u#,acc_ht#,0);
+adjust_fit(-3u#,0);
+spirit_grave(.5w)>;
+endchar;
+
+cmchar "Smooth breathing and circumflex";
+beginchar(lenis_peri,9u#,Circ_ht#,0);
+adjust_fit(-3u#,0);
+spirit_circumflex(.5w)>;
+endchar;
+
+% Provide an alternative for the depth of iota subscript.
+
+cmchar "Iota subscript";
+beginchar("|",9u#,0,
+ if ( ((pixels_per_inch / mag) < 599) or (pixels_per_inch < 420)) :
+ desc_depth#
+ else :
+ iota_dp#
+ fi );
+adjust_fit(0,0); % Don't omit this---see note following.
+iota_sub(.5w);
+endchar;
+
+% The adjust_fit macro really ought to be used with all characters,
+% because if it isn't, the chardx value (pixel displacement in the
+% gf file) will not be recalculated, but will be picked up from
+% the last character that did have an adjust_fit line. Here, I
+% leave the sloppy side-effect in place because I know I want
+% the few affected accents to have the same 9u width.
+%
+
+let cmchar = selectaccent;
+
+readfrom("graccent");
+
+code_offset:=0;
+let cmchar = relax;
+
+
+% Zero-width space
+% Takes the place of "Diaeresis with circumflex", which cannot occur.
+% iota and upsilon only affected by diaeresis when short.
+% This is useful for deligaturing sigma. with the "s|" digraph.
+% Besides, it can often help to have a zero-width character available.
+% But you can't draw the box so proofing and displaying must be off.
+%
+% Adjust_fit has to be used to get a true zero-width. A curious side-effect
+% of setting the character width to eps is that the u value is recalculated
+% to a colossal negative value. It is not worth the trouble to discover
+% why, since a saved u value will obviate the errors and oversized
+% shift values that happen with the recalculated u. The effect noted here
+% is absent from proof mode calculations. It is only a problem when
+% usable rasters are being laid down.
+%
+begingroup;
+numeric saved_u; saved_u:=u;
+save u;
+save proofing; proofing:=0;
+save displaying; displaying:=0;
+
+cmchar "Zero-width Space";
+beginchar(null_space, eps,0,0); % The adjust-fit calculation
+adjust_fit(-eps,0); % does a division, so w must be > 0.
+endchar; % canceling it out with "-eps" is
+ % unnecessary, but it feels better.
+
+numeric dot_diam#; dot_diam#=max(dot_size#,cap_curve#);
+
+
+beginchar(doti,eps,0,desc_depth#);
+define_whole_blacker_pixels(dot_diam);
+adjust_fit(-eps,0);
+generate_underdot(-2.5saved_u, -d);
+endchar;
+
+beginchar(dotI,eps,0,desc_depth#);
+define_whole_blacker_pixels(dot_diam);
+adjust_fit(-eps,0);
+generate_underdot(-3.25saved_u, -d);
+endchar;
+
+beginchar(dote,eps,0,desc_depth#);
+define_whole_blacker_pixels(dot_diam);
+adjust_fit(-eps,0);
+generate_underdot(-3.75saved_u, -d);
+endchar;
+
+beginchar(dotbt,eps,0,desc_depth#);
+define_whole_blacker_pixels(dot_diam);
+adjust_fit(-eps,0);
+generate_underdot(-4saved_u, -d);
+endchar;
+
+beginchar(dotJdlmnpqu,eps,0,desc_depth#);
+define_whole_blacker_pixels(dot_diam);
+adjust_fit(-eps,0);
+generate_underdot(-4.5saved_u, -d);
+endchar;
+
+beginchar(dotkos,eps,0,desc_depth#);
+define_whole_blacker_pixels(dot_diam);
+adjust_fit(-eps,0);
+generate_underdot(-5.25saved_u, -d);
+endchar;
+
+beginchar(dotGZ,eps,0,desc_depth#); % Also upper case Koppa
+define_whole_blacker_pixels(dot_diam);
+adjust_fit(-eps,0);
+generate_underdot(-5.5saved_u, -d);
+endchar;
+
+beginchar(dotchjz,eps,0,desc_depth# + dot_diam#);
+define_whole_blacker_pixels(dot_diam);
+adjust_fit(-eps,0);
+generate_underdot(-5.5saved_u, -d);
+endchar;
+
+beginchar(dotCEVaw,eps,0,desc_depth#);
+define_whole_blacker_pixels(dot_diam);
+adjust_fit(-eps,0);
+generate_underdot(-6saved_u, -d);
+endchar;
+
+beginchar(dotBFLNPRSTW,eps,0,desc_depth#);
+define_whole_blacker_pixels(dot_diam);
+adjust_fit(-eps,0);
+generate_underdot(-6.5saved_u, -d);
+endchar;
+
+beginchar(dotH,eps,0,desc_depth#);
+define_whole_blacker_pixels(dot_diam);
+adjust_fit(-eps,0);
+generate_underdot(-6.75saved_u, -d);
+endchar;
+
+beginchar(dotAOQUXY,eps,0,desc_depth#);
+define_whole_blacker_pixels(dot_diam);
+adjust_fit(-eps,0);
+generate_underdot(-7.25saved_u, -d);
+endchar;
+
+beginchar(dotDK,eps,0,desc_depth#);
+define_whole_blacker_pixels(dot_diam);
+adjust_fit(-eps,0);
+generate_underdot(-7.5saved_u, -d);
+endchar;
+
+beginchar(dotM,eps,0,desc_depth#);
+define_whole_blacker_pixels(dot_diam);
+adjust_fit(-eps,0);
+generate_underdot(-8.75saved_u, -d);
+endchar;
+
+beginchar(dotgx,eps,0,desc_depth# + 1.5dot_diam#);
+define_whole_blacker_pixels(dot_diam);
+adjust_fit(-eps,0);
+generate_underdot(-5.5saved_u, -d);
+endchar;
+
+beginchar(dotr,eps,0,desc_depth# + 1.5dot_diam#);
+define_whole_blacker_pixels(dot_diam);
+adjust_fit(-eps,0);
+generate_underdot(-4.5saved_u, -d);
+endchar;
+
+beginchar(dotfy,eps,0,desc_depth# + 2dot_diam#);
+define_whole_blacker_pixels(dot_diam);
+adjust_fit(-eps,0);
+generate_underdot(-5.75saved_u, -d);
+endchar;
+
+beginchar(dotkoppa,eps,0,desc_depth# + 2dot_diam#);
+define_whole_blacker_pixels(dot_diam);
+adjust_fit(-eps,0);
+generate_underdot(-5saved_u, -d);
+endchar;
+
+% The three positions for iota subscript
+% Equivalent to Times Ten Greek's /iotasubscripta etc., except that these
+% are designed as postpositives kerned strongly to the left. Setwidth 0
+% but I am not sure that the type1 version can get away with that
+
+% /iotasubscripta
+beginchar(a_isub,eps,0,iota_dp#);
+adjust_fit(-eps,0);
+iota_sub(-5saved_u);
+endchar;
+
+% The top position of iota subscript under eta is dropped to
+% provide better spacing between the letter and the subscript.
+%
+% /iotasubscripte
+beginchar(h_isub,eps,0,iota_dp#);
+adjust_fit(-eps,0);
+begingroup;
+numeric saved_o;
+saved_o = o;
+save o;
+o = 3saved_o;
+iota_sub(-6.85saved_u);
+endgroup;
+endchar;
+
+% /iotasubscripto
+beginchar(w_isub,eps,0,iota_dp#);
+adjust_fit(-eps,0);
+iota_sub(-6saved_u);
+endchar;
+
+endgroup;
+
+
diff --git a/Master/texmf-dist/fonts/source/public/ibygrk/ibycus4.mf b/Master/texmf-dist/fonts/source/public/ibygrk/ibycus4.mf
new file mode 100644
index 00000000000..1261eee1f09
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/ibygrk/ibycus4.mf
@@ -0,0 +1,39 @@
+mode_setup;
+font_setup;
+
+font_coding_scheme:="Ibycus4 /based on TLG/";
+input ibycus4.map; % File which can be read by both TeX and MF
+picture barypicture;
+string currenttitle;
+string subtitle;
+extra_endchar:=extra_endchar&"charcode:=charcode+code_offset";
+% Add _ to the macro names used by iff to avoid confusion.
+def use_it_ =
+ if unknown barypicture:
+ if known savedpicture: barypicture := savedpicture; fi fi
+ enddef;
+def lose_it_ = let endchar = fi; let ; = fix_ semi_
+ if false: enddef;
+% redefine readfrom, to take advantage of path searching
+% This requires a METAFONT compiled with Karl Berry's kpathsea
+def readfrom(expr filename) =
+ scantokens ("input " & filename); enddef;
+input ibyupr4
+input ibyacc4
+input ibylwr4
+input romand
+input ibypnct4
+input ibylig4
+
+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
+
+input version4
+bye.
diff --git a/Master/texmf-dist/fonts/source/public/ibygrk/ibylig4.mf b/Master/texmf-dist/fonts/source/public/ibygrk/ibylig4.mf
new file mode 100644
index 00000000000..9334cd88992
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/ibygrk/ibylig4.mf
@@ -0,0 +1,250 @@
+% Version 4.3. 7 July, 1998. Response to a bug report. The wrong
+% angle was in the line for ligtable angleright: ">" =: guillemotright;
+% All tfm files corrected to reflect this change.
+
+% Version 4.2. 18 July, 1997. Small adjustments to the space between
+% accent clusters and Uppercase H and I. A little more space after
+% accented iota and before taller consonants.
+
+% Version 4.1. 28 April, 1996. Sevaral kerns for iota changed
+% before p t and u to avoid crowding. Medial sigma is default
+% before <> [] and other non standard symbols. (Final
+% at word end, sentence punctuation, and parentheses).
+%
+% Ligature table for ibycus4 Version 4.0 using the \bang
+% character as the postpositive indication of a dot under
+% any letter or letter-and-accent combination except for
+% iota subscript composites.
+
+% CAUTION: With this arrangement the exclamation point must
+% set with \sfcode`\!=1000 or you get very odd spacing.
+% This setting is supplied in ibycus4.tex
+
+ligtable "-": "-" =: endash; % en-dash
+ligtable endash: "-" =: emdash; % em-dash
+ligtable quotesnglleft: quotesnglleft =: quotedblleft;
+ligtable quotesnglright: quotesnglright =: quotedblright;
+% The Adobe names guillemotleft and guillemotright (\it sic})
+% are retained.
+ligtable angleleft: "<" =: guillemotleft;
+ligtable angleright: ">" =: guillemotright;
+
+k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#; % three degrees of back kerning
+i#:=.5u#; ii#:=1.5u#; iii#:=2u#; % three degrees of forward kerning
+%
+% the glyphs for the breathings (spiritus) and the acute and
+% grave accents are not in the same code location as the digraph
+% input characters "'" "`" "=" ")" "(", and "`" "'" are pretty
+% well available for normal use when not immediately contiguous to
+% accentable characters. This is achieved by a change from
+% Silvio Levy's mapping to modified TLG Betacode.
+%
+ligtable "(": "(" =: ASCII"(", peri_spomenon =: asper_peri,
+ quotesnglright =: asper_oxy, quotesnglleft =: asper_bary,
+ "A" =:| asper_glyph, "E" =:| asper_glyph, "H" =:| asper_glyph,
+ "O" =:| asper_glyph, "W" =:| asper_glyph, "I" =:| asper_glyph,
+ "U" =:| asper_glyph, "R" =:| asper_glyph;
+ligtable ")": ")" =: ASCII")", peri_spomenon =: lenis_peri,
+ quotesnglright =: lenis_oxy, quotesnglleft =: lenis_bary,
+ "A" =:| lenis_glyph, "E" =:| lenis_glyph, "H" =:| lenis_glyph,
+ "O" =:| lenis_glyph, "W" =:| lenis_glyph, "I" =:| lenis_glyph,
+ "U" =:| lenis_glyph, "R" =:| lenis_glyph;
+%
+ligtable asper_glyph:
+ "A" kern -7u#, "E" kern -3u#, "H" kern -3u#, "R" kern -3u#,
+ "O" kern -3.5u#, "W" kern -2.5u#, "I" kern -3u#, "U" kern -3u#;
+ligtable lenis_glyph:
+ "A" kern -6u#, "E" kern kkk#, "H" kern kkk#, "R" kern kkk#,
+ "O" kern -2.5u#, "W" kern kkk#, "I" kern kkk#, "U" kern kkk#;
+ligtable asper_oxy: lenis_oxy:
+ "A" kern -6u#, "E" kern -1u#, "H" kern -1u#,
+ "O" kern -2.5u#, "W" kern kk#, "I" kern -1u#, "U" kern kk#;
+ligtable asper_bary: lenis_bary:
+ "A" kern -5u#, "E" kern kk#, "H" kern kk#,
+ "O" kern kkk#, "W" kern -1u#, "I" kern kkk#, "U" kern -1u#;
+ligtable asper_peri:
+ "A" kern -6.5u#, "E" kern kkk#, "H" kern kkk#, "I" kern kkk#,
+ "O" kern -3u#, "W" kern -3u#, "U" kern kkk#;
+ligtable lenis_peri:
+ "A" kern -6.5u#, "E" kern kkk#, "H" kern kkk#, "I" kern kkk#,
+ "O" kern -3u#, "W" kern -2.5u#, "U" kern kkk#;
+
+ligtable "a": quotesnglleft =: a_bary, quotesnglright =: a_oxy,
+ peri_spomenon =: a_peri, iotasubscript |=: a_isub, dubious |=: dotCEVaw,
+ "(" =: a_aspr, ")" =: a_len, "i" kern i#; % Post-positive breathings
+ligtable "h": "+" =: aspirate, quotesnglleft =: h_bary, quotesnglright =: h_oxy,
+ peri_spomenon =: h_peri, iotasubscript |=: h_isub, dubious |=: dotchjz,
+ "(" =: h_aspr, ")" =: h_len, "i" kern ii#,
+ i_bary kern ii#, i_oxy kern ii#, i_peri kern ii#,
+ i_asproxy kern ii#, i_asprbary kern ii#, i_asprperi kern ii#,
+ i_lenoxy kern ii#, i_lenbary kern ii#, i_lenperi kern ii#;
+ligtable "w": quotesnglleft =: w_bary, quotesnglright =: w_oxy,
+ peri_spomenon =: w_peri, iotasubscript |=: w_isub, dubious |=: dotCEVaw,
+ "(" =: w_aspr, ")" =: w_len, "i" kern i#, "n" kern k#;
+ligtable "e": quotesnglleft =: e_bary, quotesnglright =: e_oxy,
+ peri_spomenon =: e_peri,
+ "(" =: e_aspr, ")" =: e_len, dubious |=: dote, "i" kern i#;
+ligtable "o": quotesnglleft =: o_bary, quotesnglright =: o_oxy,
+ peri_spomenon =: o_peri,
+ "(" =: o_aspr, ")" =: o_len, dubious |=: dotkos,
+ "n" kern k#, "h" kern k#, "l" kern k#;
+ligtable "i": quotesnglleft =: i_bary, quotesnglright =: i_oxy,
+ peri_spomenon =: i_peri, dubious |=: doti,
+ "(" =: i_aspr, ")" =: i_len, dieresis =: i_diaer,
+ "c" kern k#, "d" kern k#, "f" kern k#, "g" kern -1u#, "h" kern k#,
+ "k" kern k#, "l" kern k#, "n" kern kk#, "o" kern k#, "p" kern k#,
+ "q" kern k#, "s" kern k#, "t" kern -1u#,
+ "u" kern -1u#, "w" kern k#, "x" kern k#, "y" kern k#;
+ligtable "u": quotesnglleft =: u_bary, quotesnglright =: u_oxy,
+ peri_spomenon =: u_peri, dubious |=: dotJdlmnpqu,
+ "(" =: u_aspr, ")" =: u_len, dieresis =: u_diaer, "i" kern i#;
+ligtable "r": "(" =: r_aspr, ")" =: r_len,
+ r_aspr: r_len: dubious |=: dotr, "i" kern i#;
+
+ligtable a_aspr: quotesnglright =: a_asproxy, quotesnglleft =: a_asprbary,
+ peri_spomenon =: a_asprperi, iotasubscript |=: a_isub, dubious |=: dotCEVaw,
+ "i" kern i#;
+ligtable h_aspr: quotesnglright =: h_asproxy, quotesnglleft =: h_asprbary,
+ peri_spomenon =: h_asprperi, iotasubscript |=: h_isub, dubious |=: dotchjz,
+ "i" kern ii#;
+ligtable w_aspr: quotesnglright =: w_asproxy, quotesnglleft =: w_asprbary,
+ peri_spomenon =: w_asprperi, iotasubscript |=: w_isub, dubious |=: dotCEVaw,
+ "n" kern k#;
+ligtable e_aspr: quotesnglright =: e_asproxy, quotesnglleft =: e_asprbary,
+ peri_spomenon =: e_asprperi, dubious |=: dote;
+ligtable o_aspr: quotesnglright =: o_asproxy, quotesnglleft =: o_asprbary,
+ peri_spomenon =: o_asprperi, dubious |=: dotkos, "n" kern k#, "h" kern k#;
+ligtable i_aspr: quotesnglright =: i_asproxy, quotesnglleft =: i_asprbary,
+ peri_spomenon =: i_asprperi, dubious |=: doti,
+ "c" kern k#, "d" kern k#, "f" kern k#, "g" kern -1u#, "h" kern k#,
+ "k" kern k#, "l" kern k#, "n" kern kk#, "o" kern k#, "p" kern k#,
+ "q" kern k#, "s" kern k#, "t" kern -1u#,
+ "u" kern -1u#, "w" kern k#, "x" kern k#, "y" kern k#;
+ligtable u_aspr: quotesnglright =: u_asproxy, quotesnglleft =: u_asprbary,
+ peri_spomenon =: u_asprperi, dubious |=: dotJdlmnpqu;
+
+ligtable a_len: quotesnglright =: a_lenoxy, quotesnglleft =: a_lenbary,
+ dubious |=: dotCEVaw,
+ peri_spomenon =: a_lenperi, iotasubscript |=: a_isub;
+ligtable h_len: quotesnglright =: h_lenoxy, quotesnglleft =: h_lenbary, dubious |=: dotchjz,
+ peri_spomenon =: h_lenperi, iotasubscript |=: h_isub, "i" kern ii#;
+ligtable w_len: quotesnglright =: w_lenoxy, quotesnglleft =: w_lenbary,
+ dubious |=: dotCEVaw,
+ peri_spomenon =: w_lenperi, iotasubscript |=: w_isub, "n" kern k#;
+ligtable e_len: quotesnglright =: e_lenoxy, quotesnglleft =: e_lenbary,
+ peri_spomenon =: e_lenperi, dubious |=: dote;
+ligtable o_len: quotesnglright =: o_lenoxy, quotesnglleft =: o_lenbary,
+ peri_spomenon =: o_lenperi, dubious |=: dotkos, "n" kern k#, "h" kern k#;
+ligtable i_len: quotesnglright =: i_lenoxy, quotesnglleft =: i_lenbary,
+ peri_spomenon =: i_lenperi, dubious |=: doti,
+ "c" kern k#, "d" kern k#, "f" kern k#, "g" kern -1u#, "h" kern k#,
+ "k" kern k#, "l" kern k#, "n" kern kk#, "o" kern k#, "p" kern k#,
+ "q" kern k#, "s" kern k#, "t" kern -1u#,
+ "u" kern -1u#, "w" kern k#, "x" kern k#, "y" kern k#;
+ligtable u_len: quotesnglright =: u_lenoxy, quotesnglleft =: u_lenbary,
+ peri_spomenon =: u_lenperi, dubious |=: dotJdlmnpqu;
+
+ligtable "K": "+" =: Koppa, dubious |=: dotDK; % Uppercase Koppa
+ligtable Koppa: dubious |=: dotGZ;
+
+% The curve of o and the hook at the top of h make kerns with
+% m desirable
+ligtable "m": dubious |=: dotJdlmnpqu,
+ "o" kern k#, o_oxy kern k#, o_bary kern k#,
+ "h" kern k#, h_oxy kern k#, h_bary kern k#, h_peri kern k#,
+ h_isub kern k#;
+
+% backward kerns for letters following accented iota
+ligtable dieresis: quotesnglright =: diaeroxy, quotesnglleft =: diaerbary;
+
+ligtable i_diaer: quotesnglright =: i_diaeroxy, quotesnglleft =: i_diaerbary;
+ligtable i_bary: dieresis=: i_diaerbary, i_oxy: dieresis=:i_diaeroxy, dubious |=: doti,
+ "c" kern k#, "d" kern k#, "f" kern k#, "g" kern -1u#, "h" kern k#,
+ "k" kern k#, "l" kern k#, "n" kern kk#, "o" kern k#, "p" kern k#,
+ "q" kern k#, "s" kern k#, "t" kern -1u#,
+ "u" kern -1u#, "w" kern k#, "x" kern k#, "y" kern k#;
+% The widely spaced accent clusters on iota need more space before many
+% consonants. Particularly lambda and ksi.
+ligtable i_peri: i_asproxy: i_asprbary: i_asprperi:
+ i_lenoxy: i_lenbary: i_lenperi: i_diaerbary: i_diaeroxy: dubious |=: doti,
+ "d" kern k#, "f" kern k#, "g" kern -1u#, "h" kern k#,
+ "n" kern kk#, "o" kern k#, "p" kern k#,
+ "q" kern k#, "s" kern k#, "t" kern k#,
+ "u" kern -1u#, "w" kern k#, "x" kern k#;
+% all needed forward kerns except for vowels, rho and sigma
+% also a back kern for dh, but only when h is unaccented.
+ligtable "k": "+" =: koppa, dubious |=: dotkos, "i" kern i#;
+ligtable "A": dubious |=: dotAOQUXY, "E": dubious |=: dotCEVaw,
+ "W": dubious |=: dotBFLNPRSTW, "i" kern i#;
+ligtable "n": "p": "q": dubious |=: dotJdlmnpqu, "t": dubious |=: dotbt,
+ "f": "y": dubious |=: dotfy, h_isub:
+ "i" kern i#;
+ligtable "d": dubious |=: dotJdlmnpqu, "i" kern i#, "h" kern k#;
+ligtable "b": dubious |=: dotbt,
+ "i" kern ii#;
+ligtable dotbt: "i" kern i#;
+
+% forward kerns for accented upsilon and epsilon
+ligtable o_oxy: o_bary: "h" kern k#, "l" kern k#, "n" kern k#,
+ o_asproxy: o_lenoxy: o_asprbary: o_lenbary: o_asprperi: o_lenperi:
+ dubious |=: dotkos;
+ligtable u_diaer: quotesnglright =: u_diaeroxy, quotesnglleft =: u_diaerbary;
+ligtable u_bary: dieresis =: u_diaerbary;
+ligtable u_oxy: dieresis =: u_diaeroxy,
+ u_asprbary: u_asproxy: u_lenoxy: u_lenbary:
+ u_peri: u_asprperi: u_lenperi:
+ u_diaeroxy: u_diaerbary: dubious |=: dotJdlmnpqu,
+ e_oxy: e_asproxy: e_lenoxy: e_bary: e_lenbary: e_asprbary:
+ e_peri: e_asprperi: e_lenperi: dubious |=: dote,
+ "i" kern i#;
+
+% iota subscripts and forward kerns for alpha, eta and omega
+ligtable a_bary: iotasubscript |=: a_isub,
+ dubious |=: dotCEVaw, "i" kern
+i#;
+% iota after simple barytone unused nught be iota adscript.
+ligtable a_oxy: a_asproxy: a_lenoxy: a_asprbary: a_peri: a_asprperi:
+ a_lenperi: a_lenbary:
+ iotasubscript |=: a_isub, dubious |=: dotCEVaw, "i" kern i#;
+
+ligtable h_bary: h_asprbary: h_oxy: h_asproxy: h_lenoxy: h_lenbary:
+ h_peri: h_asprperi: h_lenperi:
+ iotasubscript |=: h_isub, dubious |=: dotchjz, "i" kern i#;
+
+ligtable w_bary: w_asprbary: w_oxy: w_asproxy: w_lenoxy: w_lenbary:
+ w_peri: w_asprperi: w_lenperi:
+ iotasubscript |=: w_isub, dubious |=: dotCEVaw, "i" kern i#, "n" kern k#;
+
+
+ligtable "C": "+" =: Cigmalunate, Cigmalunate: dubious |=: dotCEVaw;
+ligtable "c": "+" =: cigmalunate, cigmalunate: "z": dubious |=: dotchjz;
+ligtable sigmafinal: dubious |=: dotchjz;
+
+% One ligature for (lowercase only) sampi, one kern with lowercase iota
+% and all practicable arrangements for final sigma.
+% It is assumed that sigma before a punctuation mark such as . , ; ?
+% and probably ) should be final but before > ] } it is more likely
+% to be medial. The treatment of ( matches ) and of { [ < matches
+% > ] } (anything elxe would be more confusing.
+% Final sigma can always be forced by using the letter "j"
+% The last ligature s| is the way to force medial sigma at word end.
+% Note the trick at the end which allows a dot under a forced medial
+% sigma.
+ligtable "s": "+" =: sampi, "i" kern i#,
+ boundarychar =: sigmafinal,
+ "." =:| sigmafinal, "," =:| sigmafinal, "?" =:| sigmafinal,
+ ":" =:| sigmafinal, ";" =:| sigmafinal, "(" =:| sigmafinal,
+ ")" =:| sigmafinal, "|" |=: null_space, null_space: dubious |=: dotkos;
+
+ligtable "l": dubious |=: dotJdlmnpqu;
+ligtable "g": "x": dubious |=: dotgx;
+ligtable "v": dubious |=: doti;
+ligtable koppa: dubious |=: dotkoppa;
+ligtable "I": dubious |=: dotI;
+ligtable "G": "Z": dubious |=: dotGZ;
+ligtable "V": dubious |=: dotCEVaw;
+ligtable "B": "F": "L": "N": "P": "R": "S": "T": dubious |=: dotBFLNPRSTW;
+ligtable "H": dubious |=: dotH;
+ligtable "O": "Q": "U": "X": "Y": dubious |=: dotAOQUXY;
+ligtable "D": dubious |=: dotDK;
+ligtable "M": dubious |=: dotM; \ No newline at end of file
diff --git a/Master/texmf-dist/fonts/source/public/ibygrk/ibylwr4.mf b/Master/texmf-dist/fonts/source/public/ibygrk/ibylwr4.mf
new file mode 100644
index 00000000000..5d12a74ee74
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/ibygrk/ibylwr4.mf
@@ -0,0 +1,195 @@
+def selectlower expr t =
+ currenttitle:= t;
+ subtitle := substring(0,27) of currenttitle;
+ if subtitle = "Lowercase sigma followed by" : let next_ = lose_it_
+% Four composites need corrected heights. See abary4.mf and wbary4.mf
+ elseif t =
+ "Lowercase alpha with grave and iota subscript":
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase alpha with rough breathing and iota subscript":
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase alpha with smooth breathing and iota subscript":
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase alpha with acute and iota subscript":
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase alpha with rough breathing, acute and iota subscript":
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase alpha with smooth breathing and acute and iota subscript":
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase alpha with circumflex and iota subscript":
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase alpha with rough breathing, circumflex and iota subscript" :
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase alpha with smooth breathing, circumflex and iota subscript" :
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase alpha with iota subscript":
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase epsilon with grave":
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase epsilon with acute":
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase eta with rough breathing and acute":
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase eta with smooth breathing and acute":
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase eta with grave and iota subscript":
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase eta with rough breathing and iota subscript":
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase eta with smooth breathing and iota subscript":
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase eta with acute and iota subscript":
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase eta with rough breathing, acute and iota subscript":
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase eta with smooth breathing and acute and iota subscript":
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase eta with circumflex and iota subscript":
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase eta with rough breathing, circumflex and iota subscript" :
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase eta with smooth breathing, circumflex and iota subscript" :
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase eta with iota subscript":
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase upsilon with smooth breathing":
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase upsilon with rough breathing and acute":
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase upsilon with smooth breathing and acute":
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase omega with rough breathing and acute":
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase omega with smooth breathing and acute":
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase omega with grave and iota subscript":
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase omega with rough breathing and iota subscript":
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase omega with smooth breathing and iota subscript":
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase omega with acute and iota subscript":
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase omega with rough breathing, acute and iota subscript":
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase omega with smooth breathing and acute and iota subscript":
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase omega with circumflex and iota subscript":
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase omega with rough breathing, circumflex and iota subscript" :
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase omega with smooth breathing, circumflex and iota subscript" :
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase omega with iota subscript":
+ let next_ = lose_it_
+% diaeresis occurs only on short iota and upsilon, so never with circumflex
+ elseif t =
+ "Lowercase iota with diaeresis and circumflex" :
+ let next_ = lose_it_
+ elseif t =
+ "Lowercase upsilon with diaeresis and circumflex" :
+ let next_ = lose_it_
+% Remapping to BetaCode
+ elseif t = "Lowercase theta" :
+ code_offset := ASCII"q" - ASCII"j"; let next_ = use_it_
+ elseif t = "Lowercase chi" :
+ code_offset := ASCII"x" - ASCII"q"; let next_ = use_it_
+ elseif t = "Lowercase xi" :
+ code_offset := ASCII"c" - ASCII"x"; let next_ = use_it_
+ elseif t = "Final lowercase sigma" :
+ code_offset := ASCII"j" - ASCII"s"; let next_ = use_it_
+ elseif t = "Initial and medial lowercase sigma" :
+ code_offset := ASCII"s" - ASCII"c"; let next_ = use_it_
+ else: code_offset := 0; let next_ = use_it_ fi; next_ enddef;
+
+let cmchar = selectlower;
+
+readfrom("a")
+input abary4
+readfrom("e")
+input ebary4
+readfrom("h")
+input hbary4
+readfrom("i")
+input ibary4
+readfrom("o")
+input obary4
+doing_u:=1;
+readfrom("u")
+input ubary4
+doing_u:=0;
+readfrom("w")
+input wbary4
+readfrom("b")
+readfrom("g")
+readfrom("d")
+readfrom("z")
+readfrom("j")
+readfrom("k")
+readfrom("l")
+readfrom("m")
+readfrom("n")
+readfrom("x")
+readfrom("p")
+readfrom("r")
+readfrom("s")
+readfrom("t")
+readfrom("f")
+readfrom("q")
+readfrom("y")
+
+code_offset:=0; % let's be really sure of this
+
+def selectkoppa expr t =
+ currenttitle:= t;
+ if t =
+ "Lowercase koppa" : let next_ = use_it_
+ else: let next_ = lose_it_ fi; next_ enddef;
+let cmchar = selectkoppa;
+
+input koppa4
+
+let cmchar = relax;
+input cigma4
+input digamma4
+input sampi4
+
+
diff --git a/Master/texmf-dist/fonts/source/public/ibygrk/ibypnct4.mf b/Master/texmf-dist/fonts/source/public/ibygrk/ibypnct4.mf
new file mode 100644
index 00000000000..34b285ba67c
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/ibygrk/ibypnct4.mf
@@ -0,0 +1,73 @@
+def selectpunct expr t =
+ currenttitle:= t;
+ if t = "Hash mark (number sign)" : let next_ = lose_it_
+ elseif t = "At sign" : let next_ = lose_it_
+ elseif t = "Semicolon" :
+ code_offset := ASCII"?" - ASCII";"; let next_ = use_it_
+ elseif t = "Apostrophe" :
+ code_offset := quotesnglright - ASCII"'"; let next_ = use_it_
+ elseif t = "Reverse apostrophe" :
+ code_offset := quotesnglleft - ASCII"`"; let next_ = use_it_
+ else: code_offset := 0; let next_ = use_it_ fi; next_ enddef;
+
+def remapcomlig expr t =
+ currenttitle:= t;
+ if t = "Closing quotes" :
+ code_offset := quotedblright - oct"42"; let next_ = use_it_
+ elseif t = "Opening quotes" :
+ code_offset := quotedblleft - oct"134"; let next_ = use_it_
+ elseif t = "En dash" :
+ code_offset := endash - oct"173"; let next_ = use_it_
+ elseif t = "Em dash" :
+ code_offset := emdash - ASCII"|"; let next_ = use_it_
+ else: code_offset := 0; let next_ = use_it_ fi; next_ enddef;
+
+% Get a good set of critical edition marks for this font.
+
+def selectsym expr t =
+ currenttitle:= t;
+ if t = "Left curly brace" :
+ code_offset := braceleft - oct"146"; let next_ = use_it_
+ elseif t = "Right curly brace" :
+ code_offset := braceright - oct"147"; let next_ = use_it_
+ elseif t = "Left floor bracket" :
+ code_offset := bracketleftbt - oct"142"; let next_ = use_it_
+ elseif t = "Right floor bracket" :
+ code_offset := bracketrightbt - oct"143"; let next_ = use_it_
+ elseif t = "Left angle bracket" :
+ code_offset := angleleft - oct"150"; let next_ = use_it_
+ elseif t = "Right angle bracket" :
+ code_offset := angleright - oct"151"; let next_ = use_it_
+ elseif t = "Dagger mark" :
+ code_offset := dagger - oct"171"; let next_ = use_it_
+ elseif t = "Double dagger mark" :
+ code_offset := daggerdbl - oct"172"; let next_ = use_it_
+ else: let next_ = lose_it_ fi; next_ enddef;
+
+% Use Computer modern characters for as many signs as possible.
+
+let cmchar = selectpunct;
+input punct
+let ligtable_ = ligtable;
+def ligtable text t = enddef;
+let cmchar = remapcomlig;
+input comlig
+let cmchar = relax;
+let ligtable = ligtable_;
+let cmchar = selectsym;
+input symbol
+
+code_offset := 0;
+
+% Special Greek punctuation from Silvio Levy's src/punct.mf.
+
+def selectgrpunct expr t =
+ currenttitle:= t;
+ if t = "'Anw tele'ia" : let next_ = use_it_
+ elseif t = "Open quotes (eisagwgik'a)" : let next_ = use_it_
+ elseif t = "Close quotes (eisagwgik'a)" : let next_ = use_it_
+ else: code_offset := 0; let next_ = lose_it_ fi; next_ enddef;
+
+let cmchar = selectgrpunct;
+readfrom("grpunct");
+
diff --git a/Master/texmf-dist/fonts/source/public/ibygrk/ibyupr4.mf b/Master/texmf-dist/fonts/source/public/ibygrk/ibyupr4.mf
new file mode 100644
index 00000000000..080298bbcc1
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/ibygrk/ibyupr4.mf
@@ -0,0 +1,54 @@
+def selectupper expr t =
+ currenttitle:= t;
+ if t = "The letter C" :
+ code_offset := Cigmalunate - ASCII"C"; let next_ = use_it_
+ elseif t = "The letter D" : let next_ = lose_it_
+ elseif t = "The letter F" :
+ code_offset := Digamma - ASCII"F"; let next_ = use_it_
+ elseif t = "The letter G" : let next_ = lose_it_
+ elseif t = "The letter J" : let next_ = lose_it_
+ elseif t = "The letter L" : let next_ = lose_it_
+ elseif t = "The letter Q" : let next_ = lose_it_
+ elseif t = "The letter R" : let next_ = lose_it_
+ elseif t = "The letter S" : let next_ = lose_it_
+ elseif t = "The letter U" : let next_ = lose_it_
+ elseif t = "The letter V" : let next_ = lose_it_
+ elseif t = "The letter W" : let next_ = lose_it_
+ elseif t = "The letter Y" : let next_ = lose_it_
+ elseif t = "The letter P" :
+ code_offset := ASCII"R" - ASCII"P"; let next_ = use_it_
+ else: code_offset := 0; let next_ = use_it_ fi; next_ enddef;
+
+def recodeupper expr t =
+ currenttitle:= t;
+ if t = "Uppercase Greek Xi" : code_offset := ASCII"C" - oct"004";
+ elseif t = "Uppercase Greek Delta" : code_offset := ASCII"D" - oct"001";
+ elseif t = "Uppercase Greek Phi" : code_offset := ASCII"F" - oct"010";
+ elseif t = "Uppercase Greek Gamma" : code_offset := ASCII"G" - oct"000";
+ elseif t = "Uppercase Greek Lambda" : code_offset := ASCII"L" - oct"003";
+ elseif t = "Uppercase Greek Pi" : code_offset := ASCII"P" - oct"005";
+ elseif t = "Uppercase Greek Theta" : code_offset := ASCII"Q" - oct"002";
+ elseif t = "Uppercase Greek Sigma" : code_offset := ASCII"S" - oct"006";
+ elseif t = "Uppercase Greek Upsilon" : code_offset := ASCII"U" - oct"007";
+ elseif t = "Uppercase Greek Omega" : code_offset := ASCII"W" - oct"012";
+ elseif t = "Uppercase Greek Psi" : code_offset := ASCII"Y" - oct"011";
+ else: code_offset := 0; fi; next_ enddef;
+
+let cmchar = selectupper;
+input romanu
+let cmchar = recodeupper;
+input greeku
+
+code_offset := 0;
+
+def selectkoppa expr t =
+ currenttitle:= t;
+ if t =
+ "Uppercase koppa" : let next_ = use_it_
+ else: let next_ = lose_it_ fi; next_ enddef;
+let cmchar = selectkoppa;
+
+input koppa4
+
+let cmchar = relax;
+
diff --git a/Master/texmf-dist/fonts/source/public/ibygrk/koppa4.mf b/Master/texmf-dist/fonts/source/public/ibygrk/koppa4.mf
new file mode 100644
index 00000000000..7a2d04e6372
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/ibygrk/koppa4.mf
@@ -0,0 +1,50 @@
+cmchar "Uppercase koppa";
+beginchar(Koppa,11u#,cap_height#,0);
+italcorr .5cap_height#*slant-.5u#;
+adjust_fit(0,0);
+numeric shaved_stem,light_curve;
+shaved_stem=cap_stem-hround 2stem_corr;
+light_curve=cap_curve-hround stem_corr;
+pickup tiny.nib; pos1(shaved_stem,0); pos2(shaved_stem,0);
+lft x1l=lft x2l=hround(.5w-.5cap_stem); y1=y5; bot y2=0;
+penpos3(vair,90); penpos5(vair,-90);
+penpos4(light_curve,180); penpos6(light_curve,0);
+x4r=hround u; x6r=w-x4r; x3=x5=.5w;
+y3r=vround(h+o); y4=y6=.5[y3,y5];
+y5r=vround(.30h if serifs:+slab fi);
+penstroke pulled_arc.e(3,4) & pulled_arc.e(4,5)
+ & pulled_arc.e(5,6) & pulled_arc.e(6,3) & cycle; % bowl
+if serifs: dish_serif(2,1,c,1/3,1.25cap_jut,d,1/3,1.25cap_jut); fi
+filldraw stroke z1e--z2e; % stem
+math_fit(-.5cap_height#*slant-.5u#,ic#); penlabels(1,2,3,4,5,6); endchar;
+
+def dims = 9.5u#,x_height#,desc_depth# enddef;
+def ital = 0 enddef;
+def fit_params = 0,0 enddef;
+
+% Elements borrowed from phi and tail of eta
+def gen_letter =
+ pickup fine.nib;
+ lft x4r=w-rt x8r=hround .75u; y4r=y8r=.5h;
+ x6r=.5[x4r,x8r]; bot y6r=-oo;
+ numeric tilt; tilt:=min(2*otilt,.5);
+ filldraw stroke gr_arc.e(6,7,8)(vair,stem,tilt) ;
+% filldraw stroke gr_arc.e(4,5,6)(vair,.4[vair,stem],tilt) ;
+ filldraw stroke gr_arc.e(4,5,6)(vair,stem,tilt) ;
+ top y2r = h + o; x2r=x6r;
+% filldraw stroke gr_arc.e(2,3,4)(vair,.4[vair,stem],tilt) ;
+% Can't remember why I lightened up the northwest side of this.
+% It doesn't seem like a good idea now.
+ filldraw stroke gr_arc.e(2,3,4)(vair,stem,tilt) ;
+ filldraw stroke gr_arc.e(8,1,2)(vair,stem,tilt) ;
+ pos10(stem,180); pos11(.4[vair,stem],180); % Thicken a bit at join
+ y10-.5stem=-d-o; y11=y6; x10=x11=x6;
+ filldraw circ_stroke z10e..z11e{up};
+enddef;
+
+cmchar "Lowercase koppa";
+beginchar(koppa,dims);
+this_letter; penlabels(1,2,3,4,5,6,7,8,9,10,11,12,20,21); endchar;
+
+picture savedpicture; % erase it
+
diff --git a/Master/texmf-dist/fonts/source/public/ibygrk/obary4.mf b/Master/texmf-dist/fonts/source/public/ibygrk/obary4.mf
new file mode 100644
index 00000000000..ca0ef25a8ff
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/ibygrk/obary4.mf
@@ -0,0 +1,26 @@
+savedpicture = barypicture; % it was cleared at the end of o.mf
+%% but the dimensions set in o.mf remain.
+
+cmchar "Lowercase omicron with rough breathing and grave";
+beginchar(o_asprbary,width#,acc_ht#,0);
+this_letter; spirit_grave(x_baryctr)<; endchar;
+
+cmchar "Lowercase omicron with smooth breathing and grave";
+beginchar(o_lenbary,width#,acc_ht#,0);
+this_letter; spirit_grave(x_baryctr)>; endchar;
+
+cmchar "Lowercase omicron with circumflex (Attic)";
+beginchar(o_peri,width#,acc_ht#,0);
+this_letter; circumflex(x_baryctr); endchar;
+
+cmchar "Lowercase omicron with rough breathing and circumflex (Attic)";
+beginchar(o_asprperi,width#,Circ_ht#,0);
+this_letter; spirit_circumflex(x_baryctr)<; endchar;
+
+cmchar "Lowercase omicron with smooth breathing and circumflex (Attic)";
+beginchar(o_lenperi,width#,Circ_ht#,0);
+this_letter; spirit_circumflex(x_baryctr)>; endchar;
+
+picture barypicture;
+picture pic.iota;
+picture savedpicture;
diff --git a/Master/texmf-dist/fonts/source/public/ibygrk/sampi4.mf b/Master/texmf-dist/fonts/source/public/ibygrk/sampi4.mf
new file mode 100644
index 00000000000..a4e1e111b6c
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/ibygrk/sampi4.mf
@@ -0,0 +1,27 @@
+% Rather mechanical design. A tipped
+% close parenthesis, with two legs near
+% the center.
+cmchar "sampi";
+beginchar(sampi,10u# ,asc_height#,desc_depth#);
+italcorr body_height#*slant-.5u#;
+adjust_fit(0,0); pickup fine.nib;
+pos1(vair,0); pos2(.75[hair,stem],0); pos3(vair,0);
+rt x1r=rt x3r=hround(u); lft x2l=hround(x1+4u);
+top y1=h-u; y2=.5[y1,y3]=math_axis;
+numeric sampi_tilt;
+x4 = w-2u; y4=y3; sampi_tilt=angle(z4-z1)+90;
+pos6(vstem,90); pos7(vstem,90);
+pos2'(.75[hair,stem],sampi_tilt); pos3'(vair,sampi_tilt);
+forsuffixes $=6,7,8,9:
+ pos$'(vstem,90+sampi_tilt); endfor
+x5=3(x2-x1); x6l=x7l=x2l;
+y5=y6l+.15(y1-y3)=y7r-.15(y1-y3)=y2;
+x8=x9=.2(x2-x1); y8=y6;y9=y7;
+forsuffixes $=2,3,5,6,7,8,9:
+ z$'=z$ rotatedaround(z1,sampi_tilt); endfor
+y5':=min(y5',y1-eps);
+filldraw stroke z1e{z5'-z1}...z2'e
+ ...{z3'-z5'}z3'e; % arc
+filldraw stroke z6'e--z8'e; filldraw stroke z7'e--z9'e;
+penlabels(1,forsuffixes $=2,3,6,7,8,9:$',endfor 4); endchar;
+
diff --git a/Master/texmf-dist/fonts/source/public/ibygrk/ubary4.mf b/Master/texmf-dist/fonts/source/public/ibygrk/ubary4.mf
new file mode 100644
index 00000000000..3944e2652f6
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/ibygrk/ubary4.mf
@@ -0,0 +1,29 @@
+savedpicture = barypicture; % it was cleared at the end of u.mf
+%% but the dimensions set in u.mf remain.
+
+% The opened out accent clusters make an adjustment of "center"
+% necessary. This helps with the smooth breathing too.
+
+cmchar "recentered Lowercase upsilon with smooth breathing";
+beginchar(u_len,width#,acc_ht#,0);
+this_letter; spirit(x_baryctr -.75u)>; endchar;
+
+cmchar "recentered Lowercase upsilon with rough breathing and acute";
+beginchar(u_asproxy,width#,acc_ht#,0);
+this_letter; spirit_acute(x_baryctr -.75u)<; endchar;
+
+cmchar "recentered Lowercase upsilon with smooth breathing and acute";
+beginchar(u_lenoxy,width#,acc_ht#,0);
+this_letter; spirit_acute(x_baryctr -.75u)>; endchar;
+
+cmchar "Lowercase upsilon with rough breathing and grave";
+beginchar(u_asprbary,width#,acc_ht#,0);
+this_letter; spirit_grave(x_baryctr-.75u)<; endchar;
+
+cmchar "Lowercase upsilon with smooth breathing and grave";
+beginchar(u_lenbary,width#,acc_ht#,0);
+this_letter; spirit_grave(x_baryctr-.75u)>; endchar;
+
+picture barypicture;
+picture pic.iota;
+picture savedpicture;
diff --git a/Master/texmf-dist/fonts/source/public/ibygrk/version4.mf b/Master/texmf-dist/fonts/source/public/ibygrk/version4.mf
new file mode 100644
index 00000000000..e1d318e7eb2
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/ibygrk/version4.mf
@@ -0,0 +1 @@
+special "Ibycus Polytonic Greek. Version 4.2";
diff --git a/Master/texmf-dist/fonts/source/public/ibygrk/wbary4.mf b/Master/texmf-dist/fonts/source/public/ibygrk/wbary4.mf
new file mode 100644
index 00000000000..d3140cddced
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/ibygrk/wbary4.mf
@@ -0,0 +1,25 @@
+savedpicture = barypicture; % it was cleared at the end of w.mf
+%% but the dimensions set in w.mf remain.
+
+% The opened out accent clusters make an adjustment of "center"
+% necessary.
+
+cmchar "recentered Lowercase omega with rough breathing and acute";
+beginchar(w_asproxy,width#,acc_ht#,0);
+this_letter; spirit_acute(x_baryctr -.75u)<; endchar;
+
+cmchar "recentered Lowercase omega with smooth breathing and acute";
+beginchar(w_lenoxy,width#,acc_ht#,0);
+this_letter; spirit_acute(x_baryctr -.75u)>; endchar;
+
+cmchar "Lowercase omega with rough breathing and grave";
+beginchar(w_asprbary,width#,acc_ht#,0);
+this_letter; spirit_grave(x_baryctr -.75u)<; endchar;
+
+cmchar "Lowercase omega with smooth breathing and grave";
+beginchar(w_lenbary,width#,acc_ht#,0);
+this_letter; spirit_grave(x_baryctr -.75u)>; endchar;
+
+picture barypicture;
+picture pic.iota;
+picture savedpicture;