diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /fonts/cmoefont |
Initial commit
Diffstat (limited to 'fonts/cmoefont')
-rw-r--r-- | fonts/cmoefont/cmoebx10.mf | 78 | ||||
-rw-r--r-- | fonts/cmoefont/cmoer10.mf | 80 | ||||
-rw-r--r-- | fonts/cmoefont/cmoesc10.mf | 111 | ||||
-rw-r--r-- | fonts/cmoefont/cmoesl10.mf | 77 | ||||
-rw-r--r-- | fonts/cmoefont/cmoeti10.mf | 78 | ||||
-rw-r--r-- | fonts/cmoefont/cmoett10.mf | 76 | ||||
-rw-r--r-- | fonts/cmoefont/oeit.mf | 61 | ||||
-rw-r--r-- | fonts/cmoefont/oeitl.mf | 86 | ||||
-rw-r--r-- | fonts/cmoefont/oerm.mf | 70 | ||||
-rw-r--r-- | fonts/cmoefont/oerml.mf | 128 | ||||
-rw-r--r-- | fonts/cmoefont/oermu.mf | 88 | ||||
-rw-r--r-- | fonts/cmoefont/oesc.mf | 44 | ||||
-rw-r--r-- | fonts/cmoefont/ogonek.mf | 17 | ||||
-rw-r--r-- | fonts/cmoefont/readme | 23 |
14 files changed, 1017 insertions, 0 deletions
diff --git a/fonts/cmoefont/cmoebx10.mf b/fonts/cmoefont/cmoebx10.mf new file mode 100644 index 0000000000..923eb22105 --- /dev/null +++ b/fonts/cmoefont/cmoebx10.mf @@ -0,0 +1,78 @@ + +% old english + +% Computer Modern Bold Extended Roman 10 point +if unknown cmbase: input cmbase fi + +font_identifier:="CMBX"; font_size 10pt#; + +u#:=23/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#:=70/36pt#; % depth of lowercase descenders + +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#:=17/36pt#; % lowercase hairline breadth +stem#:=41/36pt#; % lowercase stem breadth +curve#:=46/36pt#; % lowercase curve breadth +ess#:=38/36pt#; % breadth in middle of lowercase s +flare#:=45/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#:=13/36pt#; % vertical diameter of hairlines +notch_cut#:=10pt#; % 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)$ +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? + +generate oerm ; % switch to the driver file diff --git a/fonts/cmoefont/cmoer10.mf b/fonts/cmoefont/cmoer10.mf new file mode 100644 index 0000000000..7138803d67 --- /dev/null +++ b/fonts/cmoefont/cmoer10.mf @@ -0,0 +1,80 @@ + +% variant for old english letters + +% Computer Modern Roman 10 point +if unknown cmbase: input cmbase fi + +font_identifier:="CMR"; 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 + +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#:=87/36pt#; % height of crossbar in lowercase e +comma_depth#:=70/36pt#; % depth of comma below baseline +desc_depth#:=70/36pt#; % depth of lowercase descenders + +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#:=25/36pt#; % lowercase stem breadth +curve#:=30/36pt#; % lowercase curve breadth +ess#:=27/36pt#; % breadth in middle of lowercase s +flare#:=33/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)$ +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? +% oegen rather than roman +thorn_code := ASCII "t" ; Thorn_code := ASCII "T" ; edh_code := ASCII "d" ; +varthorn_code := ASCII "z" ; +generate oerm % switch to the driver file diff --git a/fonts/cmoefont/cmoesc10.mf b/fonts/cmoefont/cmoesc10.mf new file mode 100644 index 0000000000..26755dc417 --- /dev/null +++ b/fonts/cmoefont/cmoesc10.mf @@ -0,0 +1,111 @@ +% Computer Modern Roman Caps and Small Caps 10 point +%% for old english +if unknown cmbase: input cmbase fi + +font_identifier:="CMCSC"; font_size 10pt#; + +% first come parameters used to set the uppercase letters +% (including some for lowercase that aren't actually used) +u#:=21/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#:=5/36pt#; % extra space added to all sidebars + +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#:=87/36pt#; % height of crossbar in lowercase e +comma_depth#:=70/36pt#; % depth of comma below baseline +desc_depth#:=70/36pt#; % depth of lowercase descenders + +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#:=25/36pt#; % lowercase stem breadth +curve#:=30/36pt#; % lowercase curve breadth +ess#:=27/36pt#; % breadth in middle of lowercase s +flare#:=33/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)$ +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:=1; % 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? + +% now come replacements used to set the lowercase caps + +lower.u#:=16/36pt#; % unit width +lower.width_adj#:=0pt#; % width adjustment for certain characters +lower.cap_serif_fit#:=4/36pt#; % extra sidebar near uppercase serifs +lower.letter_fit#:=2.4/36pt#; % extra space added to all sidebars + +lower.body_height#:=200/36pt#; % height of tallest characters +lower.cap_height#:=185/36pt#; % height of caps +lower.x_height#:=116/36pt#; % height of lowercase without ascenders +lower.bar_height#:=65/36pt#; % height of crossbar in lowercase e +lower.comma_depth#:=52/36pt#; % depth of comma below baseline + +lower.flare#:=25/36pt#; % diameter of bulbs or breadth of terminals +lower.cap_hair#:=9.1/36pt#; % uppercase hairline breadth +lower.stem#:=21/36pt#; % lowercase stem breadth +lower.cap_stem#:=26/36pt#; % uppercase stem breadth +lower.cap_curve#:=31/36pt#; % uppercase curve breadth +lower.cap_ess#:=28/36pt#; % breadth in middle of uppercase s + +lower.cap_jut#:=26/36pt#; % protrusion of uppercase serifs +lower.beak_jut#:=7/36pt#; % horizontal protrusion of beak serifs +lower.beak#:=52/36pt#; % vertical protrusion of beak serifs +lower.slab#:=9.1/36pt#; % serif and arm thickness +lower.cap_bar#:=9.1/36pt#; % uppercase bar thickness +lower.cap_band#:=9.1/36pt#; % uppercase thickness above/below lobes +lower.cap_notch_cut#:=10pt#; % max breadth above/below uppercase notches + +lower.o#:=5/36pt#; % amount of overshoot for curves +lower.apex_o#:=4/36pt#; % amount of overshoot for diagonal junctions + +lower.fudge:=1; % factor applied to weights of heavy characters + +generate oesc % switch to the driver file diff --git a/fonts/cmoefont/cmoesl10.mf b/fonts/cmoefont/cmoesl10.mf new file mode 100644 index 0000000000..c434d10f03 --- /dev/null +++ b/fonts/cmoefont/cmoesl10.mf @@ -0,0 +1,77 @@ + +% Computer Modern Slanted Roman 10 point +%% variant for Old English font +if unknown cmbase: input cmbase fi + +font_identifier:="CMSL"; 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 + +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#:=87/36pt#; % height of crossbar in lowercase e +comma_depth#:=70/36pt#; % depth of comma below baseline +desc_depth#:=70/36pt#; % depth of lowercase descenders + +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#:=25/36pt#; % lowercase stem breadth +curve#:=30/36pt#; % lowercase curve breadth +ess#:=27/36pt#; % breadth in middle of lowercase s +flare#:=33/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)$ +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? + +generate oerm % switch to the driver file diff --git a/fonts/cmoefont/cmoeti10.mf b/fonts/cmoefont/cmoeti10.mf new file mode 100644 index 0000000000..bc12b766b8 --- /dev/null +++ b/fonts/cmoefont/cmoeti10.mf @@ -0,0 +1,78 @@ + +% Old English italic letters + +% Computer Modern Text Italic 10 point +if unknown cmbase: input cmbase fi + +font_identifier:="CMTI"; font_size 10pt#; + +u#:=18.4/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#:=9.2/36pt#; % extra space added to all sidebars + +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#:=87/36pt#; % height of crossbar in lowercase e +comma_depth#:=70/36pt#; % depth of comma below baseline +desc_depth#:=70/36pt#; % depth of lowercase descenders + +crisp#:=8/36pt#; % 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#:=11/36pt#; % lowercase hairline breadth +stem#:=23/36pt#; % lowercase stem breadth +curve#:=28/36pt#; % lowercase curve breadth +ess#:=27/36pt#; % breadth in middle of lowercase s +flare#:=29/36pt#; % diameter of bulbs or breadth of terminals +dot_size#:=38/36pt#; % diameter of dots +cap_hair#:=11/36pt#; % uppercase hairline breadth +cap_stem#:=29/36pt#; % uppercase stem breadth +cap_curve#:=34/36pt#; % uppercase curve breadth +cap_ess#:=31/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#:=30/36pt#; % protrusion of lowercase serifs +cap_jut#:=34/36pt#; % protrusion of uppercase serifs +beak_jut#:=9/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:=.25; % tilt ratio $(\Delta x/\Delta y)$ +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:=true; % 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? + +generate oeit % switch to the driver file diff --git a/fonts/cmoefont/cmoett10.mf b/fonts/cmoefont/cmoett10.mf new file mode 100644 index 0000000000..c654cc273f --- /dev/null +++ b/fonts/cmoefont/cmoett10.mf @@ -0,0 +1,76 @@ + +% Computer Modern Typewriter Text for use with 10 point +if unknown cmbase: input cmbase fi + +font_identifier:="CMTT"; font_size 10pt#; + +u#:=21/36pt#; % unit width +width_adj#:=0pt#; % width adjustment for certain characters +serif_fit#:=0pt#; % extra sidebar near lowercase serifs +cap_serif_fit#:=0pt#; % extra sidebar near uppercase serifs +letter_fit#:=0pt#; % extra space added to all sidebars + +body_height#:=250/36pt#; % height of tallest characters +asc_height#:=220/36pt#; % height of lowercase ascenders +cap_height#:=220/36pt#; % height of caps +fig_height#:=220/36pt#; % height of numerals +x_height#:=155/36pt#; % height of lowercase without ascenders +math_axis#:=110/36pt#; % axis of symmetry for math symbols +bar_height#:=79/36pt#; % height of crossbar in lowercase e +comma_depth#:=50/36pt#; % depth of comma below baseline +desc_depth#:=80/36pt#; % depth of lowercase descenders + +crisp#:=22/36pt#; % diameter of serif corners +tiny#:=22/36pt#; % diameter of rounded corners +fine#:=21/36pt#; % diameter of sharply rounded corners +thin_join#:=21/36pt#; % width of extrafine details +hair#:=25/36pt#; % lowercase hairline breadth +stem#:=25/36pt#; % lowercase stem breadth +curve#:=25/36pt#; % lowercase curve breadth +ess#:=22/36pt#; % breadth in middle of lowercase s +flare#:=32/36pt#; % diameter of bulbs or breadth of terminals +dot_size#:=36/36pt#; % diameter of dots +cap_hair#:=25/36pt#; % uppercase hairline breadth +cap_stem#:=25/36pt#; % uppercase stem breadth +cap_curve#:=25/36pt#; % uppercase curve breadth +cap_ess#:=25/36pt#; % breadth in middle of uppercase s +rule_thickness#:=25/36pt#; % thickness of lines in math symbols + +dish#:=0pt#; % amount erased at top or bottom of serifs +bracket#:=0pt#; % vertical distance from serif base to tangent +jut#:=34/36pt#; % protrusion of lowercase serifs +cap_jut#:=34/36pt#; % protrusion of uppercase serifs +beak_jut#:=0pt#; % horizontal protrusion of beak serifs +beak#:=34/36pt#; % vertical protrusion of beak serifs +vair#:=22/36pt#; % vertical diameter of hairlines +notch_cut#:=25/36pt#; % maximum breadth above or below notches +bar#:=22/36pt#; % lowercase bar thickness +slab#:=22/36pt#; % serif and arm thickness +cap_bar#:=22/36pt#; % uppercase bar thickness +cap_band#:=22/36pt#; % uppercase thickness above/below lobes +cap_notch_cut#:=25/36pt#; % max breadth above/below uppercase notches +serif_drop#:=0pt#; % vertical drop of sloped serifs +stem_corr#:=0pt#; % for small refinements of stem breadth +vair_corr#:=0pt#; % for small refinements of hairline height +apex_corr#:=10/36pt#; % 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)$ +fudge:=0.81; % factor applied to weights of heavy characters +math_spread:=-1; % extra openness of math symbols +superness:=1/sqrt2; % parameter for superellipses +superpull:=0; % extra openness inside bowls +beak_darkness:=0; % fraction of triangle inside beak serifs +ligs:=0; % level of ligatures to be included + +square_dots:=false; % should dots be square? +hefty:=true; % should we try hard not to be overweight? +serifs:=true; % should serifs and bulbs be attached? +monospace:=true; % should all characters have the same width? +variant_g:=false; % should an italic-style g be used? +low_asterisk:=true; % should the asterisk be centered at the axis? +math_fitting:=false; % should math-mode spacing be used? + +generate oerm % switch to the driver file diff --git a/fonts/cmoefont/oeit.mf b/fonts/cmoefont/oeit.mf new file mode 100644 index 0000000000..273e49a037 --- /dev/null +++ b/fonts/cmoefont/oeit.mf @@ -0,0 +1,61 @@ + +% Old English italic + +% The Computer Modern Text Italic family (by D. E. Knuth, 1979--1985) +mode_setup; font_setup; +slantfont slant4 ; + +input oeitl; % lower case (minuscules) +input ogonek ; % ogonek accent +%input italsp; % lowercase specials (dotless \i, ligature \ae, etc.) +%if ligs>1: font_coding_scheme:="TeX text"; +% spanish_shriek=oct"074"; spanish_query=oct"076"; +% input italig; % letter ligatures +%else: font_coding_scheme:=if ligs=0: "TeX typewriter text" +% else: "TeX text without f-ligatures" fi; +% spanish_shriek=oct"016"; spanish_query=oct"017"; fi + +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#; + letter_fit#:=letter_fit:=0; +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 oermu; % upper case (majuscules) +%input greeku; % upper case greek letters +%input itald; % numerals +%input italp; % ampersand, question marks, currency sign +%input romspu; % uppercase specials (\AE, \OE, \O) +%input punct; % punctuation symbols common to roman and italic text +%input accent; % accents common to roman and italic text +%if ligs>0: input comlig; fi % ligatures common with roman text +%if ligs<=1: input romsub; fi % substitutes for ligatures +% +%ligtable "!": "`" =: spanish_shriek; +%ligtable "?": "`" =: spanish_query; + +%if not monospace: +% k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#; % three degrees of kerning +% ligtable "d": "w": "l": "l" kern +u#; +% ligtable "F": "V": "o" kern kk#, "e" kern kk#, +% "u" kern kk#, "r" kern kk#, "a" kern kk#, "A" kern kkk#, +% "K": "X": "O" kern k#, "C" kern k#, "G" kern k#, "Q" kern k#; +% ligtable "T": "y" kern kk#, +% "Y": "e" kern kk#, "o" kern kk#, "r" kern kk#, "a" kern kk#, "u" kern kk#, +% "P": "W": "A" kern kk#; +% ligtable "O": "D": "X" kern k#, "W" kern k#, "A" kern k#, +% "V" kern k#, "Y" kern k#; +% ligtable "A": "R": "n" kern k#, "l" kern k#, "r" kern k#, "u" kern k#, +% "m" kern k#, "t" kern k#, "i" kern k#, "C" kern k#, "O" kern k#, "G" kern k#, +% "h" kern k#, "b" kern k#, "U" kern k#, "k" kern k#, "v" kern k#, "w" kern k#, +% "Q" kern k#, "L": "T" kern kk#, "Y" kern kk#, "V" kern kkk#, "W" kern kkk#, +% "b": "c": "e": "o": "p": "r": "e" kern -u#, "a" kern -u#, "o" kern -u#, +% "d" kern -u#, "c" kern -u#, "g" kern -u#, "q" kern -u#; +% ligtable "n": "'" kern kkk#; fi +% there are ligature/kern programs for |"f"| in the {\tt italig} file +% and for |"-"|, |"`"|, and |"'"| in the {\tt comlig} file +bye. diff --git a/fonts/cmoefont/oeitl.mf b/fonts/cmoefont/oeitl.mf new file mode 100644 index 0000000000..8edd4acc19 --- /dev/null +++ b/fonts/cmoefont/oeitl.mf @@ -0,0 +1,86 @@ + +cmchar "The letter yogh"; +beginchar("g",9u#,x_height#,desc_depth#); +italcorr x_height#*slant-.5serif_fit#-.3u#; +adjust_fit(0,0); +numeric arm_thickness,arm_thickness#,z_stem; +arm_thickness# = .7[hair#,stem#] ; +define_whole_vertical_blacker_pixels(arm_thickness) ; +z_stem = .1[vair,stem] ; +pickup tiny.nib; rt x1r=rt x2r=hround(w-1.2u); +top y1=h; y2=min(y1,h-2/3arm_thickness); +lft x3l = hround .45w ; y3 = .7bar_height ; +numeric alpha; alpha=diag_ratio(1,z_stem-tiny,y2-y3,x2r-x3l-slant*(y2-y3)); +penpos1(alpha*(z_stem-tiny),0); penpos2(alpha*(z_stem-tiny),0); +penpos3(alpha*(z_stem-tiny),0); +pair delta; delta=penoffset z3-z1 of currentpen; +fill top lft z1l--z1l+delta---z3l+delta..lft z3l + ..bot z3r--z3r-delta---rt z1r..top z1r + ---cycle; % diagonal +z99 = rt z1r ; z98 = z99 + (u,0) ; % for cutting away +z97 = z99 + 2u*(z3-z1) ; z96 = z97 + (u,0) ; +pickup crisp.nib; pos5(arm_thickness,90); pos6(hair,180); +top y5r=h; x5=x1; lft x6r=hround .75u; y6=good.y(y5l-beak/1.6)-eps; +arm(5,6,a,beak_darkness,-.4beak_jut); % upper arm and beak +% now cut away the excess arm +erase fill z99 --- z98 --- z96 --- z97 --- cycle ; +pickup fine.nib ; +pos10'(vair,90) ; pos11(curve,0) ; +pos12(.1[vair,curve],-90) ; +z10' - z3 = whatever*dir 30 ; +x10' = x3 + u ; x10 = x10' ; y10r = good.y y10'r ; pos10(vair,90) ; +bot y12r = -d-oo ; x12 = .5w ; +y11 = .5[y10,y12] ; rt x11r = hround(w-.9u) ; +z3' = z3 ; z3'l = z3r ; z3'r = z3l ; +filldraw stroke z3'e .. z10e{right} ; +filldraw stroke pulled_arc.e(10,11) & pulled_arc.e(11,12) ; +if serifs: pos13(hair,-180) ; y13=-.1d ; lft x13r = hround .8u ; + pos14(flare,-180) ; bulb(12,13,14) ; +else: pos13(5/7[vair,flare],angle(-3u,-h)) ; +lft x13r = hround .9u ; y13 = -.1d ; +x13l := good.x x13l ; y13l := good.y y13l ; +filldraw stroke term.e(12,13,left,1,4) ; fi +penlabels(1,2,3,4,5,6,7,8,10,11,12,13,14); endchar; + +cmchar "Italic letter edh"; +beginchar("d",9u#,asc_height#,0); +italcorr .7x_height#*slant+.5curve#-u# if math_fitting:-.5u# fi; +adjust_fit(0,0); pickup fine.nib; +pos1(vair,90); pos2(curve,180); pos3(vair,270); pos4(curve,360); +x1=x3=.5w; lft x2r=hround(1.5u-.5curve); x4=w-x2; +top y1r=vround(x_height)+oo; y2=y4=.5[y1,y3]; bot y3r=-oo; +y4' = y4 ; x4'l = x4l ; pos4'(hair,360) ; +filldraw stroke pulled_arc.e(1,2) & pulled_arc.e(2,3) + & pulled_arc.e(3,4) -- pulled_arc.e(4',1); % bowl +pickup crisp.nib ; +pos5(.5[hair,vair],40) ; z4'' = z4 ; pos4''(curve,360) ; +x5 = 3u ; top y5r = h ; +filldraw stroke z5e .. tension 1.1 and 0.9 .. z4''e{down} ; +path p ; +p = z5 .. tension 1.1 and 0.9 .. z4{down} ; +z6 = ((0,.6[x_height,asc_height]) -- (w,.5[x_height,asc_height])) + intersectionpoint p ; +pos6'(.5[vair,hair],-60) ; pos 6''(.5[vair,hair],-60) ; +top y6''l = vround .95h ; z6'' = z6 + whatever*dir30; +z6 = .5[z6',z6''] ; filldraw stroke z6'e -- z6''e ; +math_fit(-.3x_height#*slant+.5curve#-u#,ic#); penlabels(1,2,3,4); endchar; + +cmchar "Italic letter thorn"; +beginchar("t",8u#,asc_height#,desc_depth#); +italcorr .7x_height#*slant+.5curve# if math_fitting:-.5u# fi; +adjust_fit(0,0); pickup fine.nib; +x0=0; x2-.5stem=hround(1.5u-.5stem); y2 = 3/4x_height; pos2(stem,0) ; +pos4(hair,-180); pos5(vair,-90); pos6(curve,0); pos7(vair,90); +x4=x2; rt x6r=hround(w-1.5u+.5curve); x5=x7=.5[x4,x6]; +bot y5r=-oo; top y7r=vround(x_height)+oo; y4=y6=.5[y5,y7]; +filldraw stroke super_arc.e(4,5) & pulled_arc.e(5,6) + & pulled_arc.e(6,7) & super_arc.e(7,4); % bowl +pickup tiny.nib; pos2'(stem,0); pos3(stem,0); +z2=z2'; x3=x2; bot y3=-d; filldraw stroke z2'e--z3e; % stem +dish_serif(3,2',a,1/3,.75jut,b,1/3,jut); % serif +x10 = x2 ; pos10(stem,0) ; top y10 =h ; % and top of stem +filldraw stroke z10e -- z2e ; sloped_serif.l(10,2,c,1/3,jut,serif_drop) ; +math_fit(-min(2/3x_height#*slant-.5hair#-.5u#, + 2u#-.5stem#-desc_depth#*slant),ic#); +penlabels(0,1,2,3,4,5,6,7); endchar; + diff --git a/fonts/cmoefont/oerm.mf b/fonts/cmoefont/oerm.mf new file mode 100644 index 0000000000..3cce1d1f8b --- /dev/null +++ b/fonts/cmoefont/oerm.mf @@ -0,0 +1,70 @@ + +% old english driver + +% The Computer Modern Roman family of fonts (by D. E. Knuth, 1979--1985) + +if ligs>1: font_coding_scheme:="TeX text"; + spanish_shriek=oct"074"; spanish_query=oct"076"; +else: font_coding_scheme:=if ligs=0: "TeX typewriter text" + else: "TeX text without f-ligatures" fi; + spanish_shriek=oct"016"; spanish_query=oct"017"; fi + +mode_setup; font_setup; + +input oerml ; % old e +input oermu; % upper case (majuscules) +input ogonek ; % ogonek accent +%input romanl; % lower case (minuscules) +%input greeku; % upper case Greek letters +%input romand; % numerals +%input romanp; % ampersand, question marks, currency sign +%input romspl; % lowercase specials (dotless \i, ligature \ae, etc.) +%input romspu; % uppercase specials (\AE, \OE, \O) +%input punct; % punctuation symbols common to roman and italic text +%input accent; % accents common to roman and italic text +%if ligs>1: input romlig; fi % letter ligatures +%if ligs>0: input comlig; fi % ligatures common with italic text +%if ligs<=1: input romsub; fi % substitutes for ligatures + +%ligtable "!": "`" =: spanish_shriek; +%ligtable "?": "`" =: spanish_query; +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#; + k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#; % three degrees of kerning +% ligtable "k": if serifs: "v": "a" kern -u#, fi\\"w": "e" kern k#, +% "a" kern k#, "o" kern k#, "c" kern k#; +% ligtable "P": "A" kern kk#, +% "y": "o" kern k#, "e" kern k#, "a" kern k#, "." kern kk#, "," kern kk#; +% ligtable "F": "V": "W": if serifs: "o" kern kk#, "e" kern kk#, "u" kern kk#, +% "r" kern kk#, "a" kern kk#, "A" kern kkk#, +% else: "o" kern k#, "e" kern k#, "u" kern k#, +% "r" kern k#, "a" kern k#, "A" kern kk#, fi +% "K": "X": "O" kern k#, "C" kern k#, "G" kern k#, "Q" kern k#; +% ligtable "T": "y" kern if serifs: k# else: kk# fi, +% "Y": "e" kern kk#, "o" kern kk#, +% "r" kern kk#, "a" kern kk#, "A" kern kk#, "u" kern kk#; +% ligtable "O": "D": "X" kern k#, "W" kern k#, "A" kern k#, +% "V" kern k#, "Y" kern k#; +% if serifs: ligtable "h": "m": "n": +% "t" kern k#, "u" kern k#, "b" kern k#, "y" kern k#, "v" kern k#, "w" kern k#; +% ligtable "c": "h" kern k#, "k" kern k#; fi +% ligtable "o": "b": "p": "e" kern -k#, "o" kern -k#, "x" kern k#, +% "d" kern -k#, "c" kern -k#, "q" kern -k#, +% "a": if serifs: "v" kern k#, "j" kern u#, else: "r" kern k#, fi +% "t": "y" kern k#, +% "u": "w" kern k#; +% ligtable "A": if serifs: "R": fi\\ "t" kern k#, +% "C" kern k#, "O" kern k#, "G" kern k#, "U" kern k#, "Q" kern k#, +% "L": "T" kern kk#, "Y" kern kk#, "V" kern kkk#, "W" kern kkk#; +% ligtable "g": "j" kern -k#; % logjam +% ligtable "I": "I" kern -k#; % Richard III +fi +% % there are ligature/kern programs for |"f"| in the {\tt romlig} file +% % and for |"-"|, |"`"|, and |"'"| in the {\tt comlig} file +bye. diff --git a/fonts/cmoefont/oerml.mf b/fonts/cmoefont/oerml.mf new file mode 100644 index 0000000000..0506e0e1db --- /dev/null +++ b/fonts/cmoefont/oerml.mf @@ -0,0 +1,128 @@ + +cmchar "The letter thorn"; +beginchar("t",10u#+serif_fit#,asc_height#,desc_depth#); +italcorr .5x_height#*slant+min(.5curve#-u#,-.25u#); +adjust_fit(serif_fit#,0); +pickup tiny.nib; pos1(stem',0); pos2(stem,0); +pos0'(stem',0); pos0(stem,0); z0l=z0'l; x0'=x1; x0=x2; +lft x1l=hround(2.5u-.5stem'); top y1=h ; +numeric edge; edge=rt x2r; +pickup fine.nib; pos3(if hefty:thin_join else: hair fi,180); +pos4(vair',90); pos5(curve,0); pos6(vair,-90); penpos7(x3l-x3r,-180); +rt x3l=max(rt x3l-(lft x3r-tiny.lft x2l), 1/3[rt x2,edge]); +y3=1/8[bar_height,x_height]; +x4l=w-.5(w-serif_fit)+.5u; top y4r=x_height+oo; +rt x5r=hround min(w-1.35u+.5curve,w-.6u); y5=.5x_height; +x6l=x4l-.2u; bot y6r=-oo; +x7=x3; y7=min(y3,y6+y4-y3+.6vair); +(x,y4r)=whatever[z3l,z4l]; x4r:=min(x,.5[x5r,x4]); +(x',y6r)=whatever[z7l,z6l]; x6r:=min(x',.5[x5r,x6]); +filldraw stroke z3e{up}...{right}z4e&super_arc.e(4,5) + &super_arc.e(5,6)&z6e{left}...{up}z7e; % bowl +y0=ypart(((edge,h)--(edge,0))intersectionpoint(z3l{up}...{right}z4l)); +pickup tiny.nib; bot y2=-d; +filldraw stroke z1e--z0'e--z0e--z2e; % stem +pickup crisp.nib; pos8(hair,0); pos7'(stem,0); +z7'=z2; x8l=x7'l; bot y8=0; +filldraw stroke z7'e--z8e; % point +if serifs: sloped_serif.l(1,0',a,1/3,jut,serif_drop); % upper serif + dish_serif(2,0,b,1/3,jut,c,1/3,jut); fi % lower serif +penlabels(0,1,2,3,4,5,6,7,8); endchar; + + +cmchar "The letter edh"; +beginchar("d",9u#,asc_height#,0); +italcorr .7x_height#*slant + u# ; +adjust_fit(if monospace: .5u#,.5u# else: 0,0 fi); +oh := vround x_height ; +penpos1(vair,90); penpos3(vair',-90); +penpos2(curve,180); penpos4(curve,0); penpos4'(hair,0) ; +x2r=hround max(.5u,1.25u-.5curve); +x4r=w-x2r; x1=x3=.5w; y1r=oh + vround 1.5oo; y3r=-oo; +y2=y4=.5oh-vair_corr; y2l:=y4l:=.52oh; +x4'l = x4l ; y4 = y4' ; +penstroke pulled_arc.e(1,2) & pulled_arc.e(2,3) + & pulled_arc.e(3,4) -- pulled_arc.e(4',1) & cycle; % bowl +fill z4l -- z4r -- z4-(0,u) -- cycle ; % fill in a little gap! +penpos5(.5[vair,hair],40) ; +x5 = 3u ; top y5r = h ; +penstroke z5e .. tension 1.1 and 0.9 .. z4e{down} ; +path p ; +p = z5 .. tension 1.1 and 0.9 .. z4{down} ; +z6 = ((0,.6[x_height,asc_height]) -- (w,.5[x_height,asc_height])) + intersectionpoint p ; +penpos6'(.5[vair,hair],-60) ; penpos 6''(.5[vair,hair],-60) ; +top y6''l = h ; z6'' = z6 + whatever*dir30; +z6 = .5[z6',z6''] ; filldraw stroke z6'e -- z6''e ; +penlabels(1,2,3,4,5,6,6',6''); endchar; + + +cmchar "The letter yogh"; +beginchar("g",9u#,x_height#,desc_depth#); +italcorr x_height#*slant-.5serif_fit#-.3u#; +adjust_fit(0,0); +numeric arm_thickness,arm_thickness#,z_stem ; +arm_thickness# = .7[hair#,stem#] ; +define_whole_vertical_blacker_pixels(arm_thickness) ; +z_stem = .1[vair,stem] ; +pickup tiny.nib; rt x1r=rt x2r=hround(w-1.2u); +top y1=h; y2=min(y1,h-2/3arm_thickness); +lft x3l = hround .45w ; y3 = .7bar_height ; +numeric alpha; alpha=diag_ratio(1,z_stem-tiny,y2-y3,x2r-x3l-slant*(y2-y3)); +penpos1(alpha*(z_stem-tiny),0); penpos2(alpha*(z_stem-tiny),0); +penpos3(alpha*(z_stem-tiny),0); +pair delta; delta=penoffset z3-z1 of currentpen; +fill top lft z1l--z1l+delta---z3l+delta..lft z3l + ..bot z3r--z3r-delta---rt z1r..top z1r + ---cycle; % diagonal +z99 = rt z1r ; z98 = z99 + (u,0) ; % for cutting away +z97 = z99 + 2u*(z3-z1) ; z96 = z97 + (u,0) ; +pickup crisp.nib; pos5(arm_thickness,90); pos6(hair,180); +top y5r=h; x5=x1; lft x6r=hround .75u; y6=good.y(y5l-beak/1.6)-eps; +arm(5,6,a,beak_darkness,-.4beak_jut); % upper arm and beak +% now cut away the excess arm +erase fill z99 --- z98 --- z96 --- z97 --- cycle ; +pickup fine.nib ; +pos10'(vair,90) ; pos11(curve,0) ; +pos12(.1[vair,curve],-90) ; +z10' - z3 = whatever*dir 30 ; +x10' = x3 + u ; x10 = x10' ; y10r = good.y y10'r ; pos10(vair,90) ; +bot y12r = -d-oo ; x12 = .5w ; +y11 = .5[y10,y12] ; rt x11r = hround(w-.9u) ; +z3' = z3 ; z3'l = z3r ; z3'r = z3l ; +filldraw stroke z3'e .. z10e{right} ; +filldraw stroke pulled_arc.e(10,11) & pulled_arc.e(11,12) ; +if serifs: pos13(hair,-180) ; y13=-.1d ; lft x13r = hround .8u ; + pos14(flare,-180) ; bulb(12,13,14) ; +else: pos13(5/7[vair,flare],angle(-3u,-h)) ; +lft x13r = hround .9u ; y13 = -.1d ; +x13l := good.x x13l ; y13l := good.y y13l ; +filldraw stroke term.e(12,13,left,1,4) ; fi +penlabels(1,2,3,4,5,6,7,8,10,11,12,13,14); endchar; + +cmchar "Knuth's lowercase thorn"; +beginchar("u",10u#+serif_fit#,asc_height#,desc_depth#); +italcorr .5x_height#*slant+min(.5curve#-.85u#,-.1u#); +adjust_fit(serif_fit#,0); +pickup tiny.nib; pos1(stem',0); pos2(stem,0); +pos0'(stem',0); pos0(stem,0); z0l=z0'l; x0'=x1; x0=x2; +lft x1l=hround(2.5u-.5stem'); top y1=h; +numeric edge; edge=rt x2r; +pickup fine.nib; pos3(if hefty:thin_join else: hair fi,180); +pos4(vair',90); pos5(curve,0); pos6(vair,-90); +rt x3l=1/3[rt x2,edge]; y3=1/8[bar_height,x_height]; +x4l=w-.5(w-serif_fit)+.5u; top y4r=x_height+oo; +rt x5r=hround min(w-1.35u+.5curve,w-.6u); y5=.5x_height; +x6=x3; bot y6r=-oo; +(x,y4r)=whatever[z3l,z4l]; x4r:=min(x,.5[x5r,x4]); +filldraw stroke z3e{up}...{right}z4e&super_arc.e(4,5) + &z5e{down}...{5(x6-x5),y6-y5}z6e; % bowl +y0=ypart(((edge,h)--(edge,0))intersectionpoint(z3l{up}...{right}z4l)); +pickup tiny.nib; bot y2=-d; +filldraw stroke z1e--z0'e--z0e--z2e; % stem +pickup crisp.nib; pos8(hair,0); pos7'(stem,0); +z7'=z2; x8l=x7'l; bot y8=0; +filldraw stroke z7'e--z8e; % point +if serifs: sloped_serif.l(1,0',a,1/3,jut,serif_drop); % upper serif + dish_serif(2,0,b,1/3,jut,c,1/3,0); fi % lower serif +penlabels(0,1,2,3,4,5,6,8); endchar; diff --git a/fonts/cmoefont/oermu.mf b/fonts/cmoefont/oermu.mf new file mode 100644 index 0000000000..2a20280e23 --- /dev/null +++ b/fonts/cmoefont/oermu.mf @@ -0,0 +1,88 @@ +cmchar "The letter Yogh"; +beginchar("G",11u#,cap_height#,0); +italcorr cap_height#*slant-.5serif_fit#-.3u#; +adjust_fit(0,0); +numeric arm_thickness,arm_thickness#,z_stem; +arm_thickness# = .7[cap_hair#,cap_stem#] ; +define_whole_vertical_blacker_pixels(arm_thickness) ; +z_stem = .1[vair,cap_stem] ; +pickup tiny.nib; rt x1r=rt x2r=hround(w-1.2u); +top y1=h; y2=min(y1,h-2/3arm_thickness); +lft x3l = hround .45w ; bot y3 = vround .6h ; +numeric alpha; alpha=diag_ratio(1,z_stem-tiny,y2-y3,x2r-x3l-slant*(y2-y3)); +penpos1(alpha*(z_stem-tiny),0); penpos2(alpha*(z_stem-tiny),0); +penpos3(alpha*(z_stem-tiny),0); +pair delta; delta=penoffset z3-z1 of currentpen; +fill top lft z1l--z1l+delta---z3l+delta..lft z3l + ..bot z3r--z3r-delta---rt z1r..top z1r + ---cycle; % diagonal +z99 = rt z1r ; z98 = z99 + (u,0) ; % for cutting away +z97 = z99 + 2u*(z3-z1) ; z96 = z97 + (u,0) ; +pickup crisp.nib; pos5(arm_thickness,90); pos6(cap_hair,180); +top y5r=h; x5=x1; lft x6r=hround .75u; y6=good.y(y5l-beak/1.6)-eps; +arm(5,6,a,beak_darkness**.8,-.4beak_jut); % upper arm and beak +% now cut away the excess arm +erase fill z99 --- z98 --- z96 --- z97 --- cycle ; +pickup fine.nib ; +pos10'(vair,90) ; pos11(cap_curve,0) ; +pos12(.1[vair,cap_curve],-90) ; +z10' - z3 = whatever*dir 30 ; +x10' = x3 + u ; x10 = x10' ; y10r = good.y y10'r ; pos10(vair,90) ; +bot y12r = -o ; x12 = .5w ; +y11 = .5[y10,y12] ; rt x11r = hround(w-.9u) ; +z3' = z3 ; z3'l = z3r ; z3'r = z3l ; +filldraw stroke z3'e .. z10e{right} ; +filldraw stroke pulled_arc.e(10,11) & pulled_arc.e(11,12) ; +if serifs: pos13(hair,-180) ; y13=.8bar_height ; lft x13r = hround .8u ; + pos14(flare,-180) ; bulb(12,13,14) ; +else: pos13(5/7[vair,flare],angle(-3u,-h)) ; +lft x13r = hround .9u ; y13 = .8bar_height ; +x13l := good.x x13l ; y13l := good.y y13l ; +filldraw stroke term.e(12,13,left,1,4) ; fi +penlabels(1,2,3,4,5,6,7,8,10,11,12,13,14); endchar; + +cmchar "The letter Thorn" ; +beginchar("T",12u#,cap_height#,0); +italcorr .7cap_height#*slant-.5u#; +adjust_fit(cap_serif_fit#,0); +pickup tiny.nib; penpos1(cap_stem-tiny,0); penpos2(cap_stem-tiny,0); +pos0(cap_stem',0); pos0'(cap_stem,0); +pos8(cap_stem',0); pos8'(cap_stem,0); +lft x1l=hround max(2u,3u-.5cap_stem'); top y1=h; bot y2=0; +x1l=x2l=x0l=x0'l=x8l=x8'l; y0=y0'=y7; y8=y8'=y3; +penpos3(.5[vair,cap_band],90); penpos4(.5[vair,cap_band],90); +penpos5(cap_curve if hefty:-3stem_corr fi,0); +penpos6(.5[vair,cap_band],-90); penpos7(.5[vair,cap_band],-90); +y4=y3; y5=.5[y4l,y6l]; y6=y7; +x3=x1 ; .5[y3r, y7r]=vround .52h; y3r = vround 0.78h ; +x7=x2; x4=x6=.5w+.75u; x5r=hround(w-u); +x4l:=x6l:=x4-.25cap_curve; +filldraw stroke z1e--z8'e--z8e--z0e--z0'e--z2e; % stem +fill stroke z3e..pulled_arc.e(4,5) & pulled_arc.e(5,6)..z7e; % lobe +if serifs: dish_serif(1,0,a,1/3,cap_jut,b,1/3,cap_jut); % upper serif + dish_serif(2,0',c,1/3,cap_jut,d,1/3,cap_jut); fi % lower serif +math_fit(0,ic#-2.5u#); penlabels(0,1,2,3,4,5,6,7); endchar; + +cmchar "The letter Edh"; +beginchar("D",13.5u#,cap_height#,0); +italcorr .7cap_height#*slant-.5u#; +adjust_fit(cap_serif_fit#,0); +pickup tiny.nib; pos1(cap_stem',0); pos2(cap_stem',0); +lft x1l=lft x2l=hround max(2u,3u-.5cap_stem'); top y1=h; bot y2=0; +filldraw stroke z1e--z2e; % stem +penpos3(cap_band,90); penpos4(cap_band,90); +penpos5(cap_curve-stem_corr,0); +penpos6(cap_band,-90); penpos7(cap_band,-90); +z3r=top z1; y4=y3; y5=.51[y4,y6]; y6=y7; +z7r=bot z2; x4=x6=.5w+.25u; x5r=hround(w-u); +x4l:=x6l:=x4-.25cap_curve; +fill stroke z3e..pulled_arc.e(4,5) & pulled_arc.e(5,6)..z7e; % lobe +if serifs: nodish_serif(1,2,a,1/3,cap_jut,b,1/3,.5cap_jut); % upper serif + nodish_serif(2,1,c,1/3,cap_jut,d,1/3,.5cap_jut); fi % lower serif +pickup crisp.nib ; % now the edh bar +pos8(cap_band,90) ; pos9(cap_band,90) ; +top y8r = vround(.52h + .5cap_band) ; y9 = y8 ; +lft x8 = 0 ; x1 - x8 = x9 - x1 ; +filldraw stroke z8e --- z9e ; +math_fit(0,ic#-.5u#); penlabels(1,2,3,4,5,6,7); endchar; + diff --git a/fonts/cmoefont/oesc.mf b/fonts/cmoefont/oesc.mf new file mode 100644 index 0000000000..f59f3aad64 --- /dev/null +++ b/fonts/cmoefont/oesc.mf @@ -0,0 +1,44 @@ +% Caps and Small Caps in Computer Modern Roman +%%% changed for old english + +font_coding_scheme:=if ligs=0: "TeX typewriter text" + else: "TeX text without f-ligatures" fi; +spanish_shriek=oct"016"; spanish_query=oct"017"; + +mode_setup; font_setup; +input oermu; % upper case (majuscules) +%input greeku; % upper case greek letters +%input romand; % numerals +%input romanp; % ampersand, question marks, currency sign +%input romspu; % uppercase specials (\AE, \OE, \O) +%input punct; % punctuation symbols common to all roman and italic +%input accent; % accents common to roman and italic text +%input romsub; % substitutes for ligatures +input ogonek; % ogonek accent +%if ligs>0: input comlig; fi % ligatures common with italic + +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 + +%%% fine lower +forsuffixes $= u, width_adj, cap_serif_fit, letter_fit, + body_height, cap_height, x_height, bar_height, comma_depth, + flare, cap_hair, stem, cap_stem, cap_curve, cap_ess, + cap_jut, beak_jut, beak, slab, cap_bar, cap_band, cap_notch_cut, + o, apex_o: $.#:=lower.$.#; endfor +fudge:=lower.fudge; +font_setup; % now try again with |lower| settings +extra_endchar:=extra_endchar&"charcode:=charcode+code_offset"; +code_offset:=ASCII"a" - ASCII"A"; +input oermu; % majuscules (in lowercase positions) +%code_offset:=-3; +%input romspu; % \AE, \OE, \O\ (in positions of \ae, \oe, \o) +code_offset:=0; +%input cscspu; % substitutes for the remaining characters of romspl +bye. diff --git a/fonts/cmoefont/ogonek.mf b/fonts/cmoefont/ogonek.mf new file mode 100644 index 0000000000..64a2fca7e7 --- /dev/null +++ b/fonts/cmoefont/ogonek.mf @@ -0,0 +1,17 @@ +cmchar "ogonek accent" ; +beginchar("n",8u#,0,.875desc_depth#) ; +adjust_fit(0,0) ; +x1 = .5w+ 1.5u ; +if serifs: pickup crisp.nib; pos1(hair,-25); +pos2(.8[vair,stem],45) ; pos3(vair,140) ; +x1 = x2+.5u ; y2 = .8[y1,y5] ; + rt x3l = w ; y3 = .4[y5,y1] ; + x5 = 2/5[x2,x3] ; bot y5 =-d ; +pos5(.6[vair,stem],90) ; +bot y1 = o ; +lft x4l = hround(x1-u) ; y4 = .5[y1,y2] ; +pos4(.4[hair,stem],0) ; +filldraw stroke z1e ..tension 1.2 .. z4e ..z2e .. z5e ..tension 1.2 .. z3e ; +fi +penlabels(1,2,3,4,5); +endchar ; diff --git a/fonts/cmoefont/readme b/fonts/cmoefont/readme new file mode 100644 index 0000000000..30a2b57752 --- /dev/null +++ b/fonts/cmoefont/readme @@ -0,0 +1,23 @@ +This directory contains programs for Old English letters. + +The fonts created have: +D capital eth +d eth +T capital thorn +t thorn +G capital yogh +g yogh +n Polish ogonek accent + +The thorn is the style that looks like p and b combined. The roman derived +fonts (i.e. not cmoeti10) also have +u lower-case thorn with side bowl pointing top right (the traditional shape; + I happen to think that the other shape blends better with CM); this code + is Knuth's, from the cmman font. + + +To make the fonts, just run Metafont on cmoer10 etc; other sizes and styles +can be make by adapting the CM parameter and driver files in the obvious way. + +Julian Bradfield +jcb@lfcs.ed.ac.uk |