diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-09 23:38:21 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-09 23:38:21 +0000 |
commit | 215012a8d684889983ec2c0629e1c704e6853d9c (patch) | |
tree | ebf1271bd71869069824935ae8a5678745bf8bce /Master/texmf-dist/fonts/source/public/ibygrk | |
parent | 1af3d19d6dbcbf309667d9cb4aa3cdda914914a9 (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')
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; |