diff options
Diffstat (limited to 'fonts/cyrillic/bashkirian')
-rw-r--r-- | fonts/cyrillic/bashkirian/bashfont.mf | 119 | ||||
-rw-r--r-- | fonts/cyrillic/bashkirian/bashital.mf | 93 | ||||
-rw-r--r-- | fonts/cyrillic/bashkirian/bashitest.tex | 10 | ||||
-rw-r--r-- | fonts/cyrillic/bashkirian/bashlig.mf | 11 | ||||
-rw-r--r-- | fonts/cyrillic/bashkirian/bashtest.tex | 10 | ||||
-rw-r--r-- | fonts/cyrillic/bashkirian/jkbash.rme | 83 | ||||
-rw-r--r-- | fonts/cyrillic/bashkirian/jkbash10.mf | 111 | ||||
-rw-r--r-- | fonts/cyrillic/bashkirian/jkbashc.mf | 127 | ||||
-rw-r--r-- | fonts/cyrillic/bashkirian/jkbashi.mf | 175 | ||||
-rw-r--r-- | fonts/cyrillic/bashkirian/jkbashi10.mf | 77 | ||||
-rw-r--r-- | fonts/cyrillic/bashkirian/jkbashl.mf | 69 | ||||
-rw-r--r-- | fonts/cyrillic/bashkirian/jkbashu.mf | 77 |
12 files changed, 962 insertions, 0 deletions
diff --git a/fonts/cyrillic/bashkirian/bashfont.mf b/fonts/cyrillic/bashkirian/bashfont.mf new file mode 100644 index 0000000000..974d7582bb --- /dev/null +++ b/fonts/cyrillic/bashkirian/bashfont.mf @@ -0,0 +1,119 @@ +% Driver for WNCYR Washington Computer Modern Cyrillic +% including the bashkirian letters by J. Knappen + +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; + +def cyrspread := 1.25dot_size enddef; + +numeric cyrflwd; cyrflwd=2hair; +numeric cyrflht; if (designsize < 8pt): cyrflht=2slab; else: cyrflht=4slab; fi + +input cyrmax.mf; %input macro file +input cyrilu; % input common shapes +input cyrspu; % and special uppercase forms +input cyrpunc; % and puctuation etc. +input serb; % serbian & other chars +input serbspu; +input cyrspl; % and lowercase specials +input jkbashc; % bashkirian common +input jkbashu; % and upper +input jkbashl; % and lower + +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 +def lowerfit = -.15u enddef; +def cyrspread = 1.125dot_size enddef; +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"; +numeric cyrflwd; cyrflwd=2hair; +numeric cyrflht; cyrflht=4slab; + +% now input for lowercase of common shapes +input cyrilu; % majuscules (in lowercase positions) + +code_offset:=8; +input serb; % serbs and other chars +input jkbashc;% bashkirian + + k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2.5u#; % three degrees of kerning +input bashlig; % ligtable for bashkirian +ligtable "K": "H"=:"H", "h"=:"H", + oct"021": "H": oct"025" kern k#, + "F" kern k#, "O" kern k#, "S" kern k#; +ligtable "T": "S"=:"C", "s"=:"C", + oct"024": "G": "U": "A" kern kkk#, + "D" kern kkk#, "L" kern kk#, "C" kern kk#, "a" kern kk#, + "d" kern kk#, "e" kern kk#, "f" kern kk#, "o" kern kk#, + oct"005" kern kk#, oct"015" kern kk#, oct"025" kern kk#, + oct"035" kern kk#, "." kern kk#, "," kern kk#, ";" kern kk#; +ligtable "'": "'"=:oct"042"; +ligtable "-": "-"=:oct"173"; +ligtable oct"173": "-"=:oct"174"; +ligtable "6": "h"=:"W", "H"=:"W"; +ligtable "7": "h"=:"w"; +ligtable "A": oct"136": oct"137": oct"024" kern kk#, + oct"006" kern kk#, oct"007" kern kk#, "Q" kern kk#, oct"137" kern +kk#; +ligtable "C": "H"=:"Q", "h"=:"Q"; +ligtable "E": "0"=:oct"023", "1"=:oct"007"; +ligtable "I": "0"=:oct"022", "1"=:oct"004"; +ligtable "J": "1"=:oct"027", "2"=:oct"020"; +ligtable "N": "0"=:oct"175", "1"=:oct"000", "J"=:oct"000", "j"=:oct"000"; +ligtable "O": oct"007": "F": "O" kern -k#, "F" kern -k#, oct"004" kern -k#, + oct"025": "H" kern k#, "A" kern k#, "U" kern k#, oct"024" kern k#, + "T" kern k#; +ligtable "P": "1"=:oct"136", "2"=:oct"137"; +ligtable "t": "s"=:"c", + "R": oct"025" kern k#, + oct"034": "g": "u": oct"035" kern k#, + "a" kern k#, "d" kern k#, "e" kern k#, "f" kern k#, + "l" kern k#, "o" kern k#, "s" kern k#, oct"015" kern k#, + oct"035" kern k#, "." kern kk#, "," kern kk#, ";" kern kk#; + +ligtable "S": "H"=:"X", "h"=:"X"; +ligtable "X": "Q"=:"W", "q"=:"W", "C"=:"6", "c"=:"6"; +ligtable "Y": "A"=:oct"027", "a"=:oct"027", "U"=:oct"020", "u"=:oct"020"; +ligtable "Z": "1"=:oct"021", "H"=:oct"021", "h"=:oct"021"; +ligtable "[": "["=:oct"074"; +ligtable "]": "]"=:oct"076"; +ligtable "`": "`"=:oct"134"; +ligtable "e": "0"=:oct"033", "1"=:oct"017", + "b": "o": "r": "f": "h" kern k#; +% "b": "o": "r": "f": "o" kern -k#, "f" kern -k#, "e" kern -k#, "c" kern -k#, +ligtable "c": "h"=:"q"; +ligtable "i": "0"=:oct"032"; +ligtable "j": "1"=:oct"037", "2"=:oct"030"; +ligtable "k": "h"=:"h"; +ligtable "p": "1"=:oct"176", "2"=:oct"177"; +ligtable "x": "q"=:"w", "c"=:"7"; +ligtable "y": "a"=:oct"037", "u"=:oct"030"; +ligtable "z": "1"=:oct"031", "h"=:oct"031"; +ligtable "s": "h"=:"x", + "m": "w": oct"032" kern -k#, "c" kern -k#, + "g" kern -k#, "i" kern -k#, "k" kern -k#, "m" kern -k#, + "n" kern -k#, "p" kern -k#, "r" kern -k#, "v" kern -k#, "w" kern -k#, + "x" kern -k#, "y" kern -k#, oct"176" kern -k#, oct"177" kern-k#; +bye. +[End of file] + + diff --git a/fonts/cyrillic/bashkirian/bashital.mf b/fonts/cyrillic/bashkirian/bashital.mf new file mode 100644 index 0000000000..cde901b815 --- /dev/null +++ b/fonts/cyrillic/bashkirian/bashital.mf @@ -0,0 +1,93 @@ +%bashital.mf by Joerg Knappen, Bitnet: knappen @dmznat51 + +mode_setup; font_setup; +font_coding_scheme:="TeX text without f-ligatures"; + +def cyrspread = 1.125dot_size enddef; +numeric cyrflwd; cyrflwd=1.5hair; +numeric cyrflht; cyrflht=3slab; + +input cyrmax; +altaccent:=true; +input jkbashc; % common shapes to upper and lower case +input jkbashu; % special upper shapes +def cyrspread = 1.125dot_size enddef; +input jkbashi; % lower case (minuscules) +input extrai; % varianten zu cyrti, aus neugier + +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 BASHLIG; + k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2.5u#; % three degrees of kerning +ligtable "K": "H"=:"H", "h"=:"H", + oct"021": "H": oct"005" kern k#, oct"025" kern k#, + "F" kern k#, "O" kern k#, "S" kern k#; +ligtable "T": "S"=:"C", "s"=:"C", + oct"024": "G": "U": "A" kern kkk#, + "D" kern kkk#, "L" kern kk#, "C" kern kk#, "a" kern kk#, + "d" kern kk#, "e" kern kk#, "f" kern kk#, "o" kern kk#, + oct"005" kern kk#, oct"015" kern kk#, oct"025" kern kk#, + oct"035" kern kk#, "." kern kk#, "," kern kk#, ";" kern kk#; +ligtable "'": "'"=:oct"042"; +ligtable "-": "-"=:oct"173"; +ligtable oct"173": "-"=:oct"174"; +ligtable "6": "h"=:"W", "H"=:"W"; +ligtable "7": "h"=:"w"; +ligtable "A": oct"000": oct"001": oct"136": oct"137": oct"024" kern kk#, + oct"006" kern kk#, oct"007" kern kk#, "Q" kern kk#, oct"137" kern kk#; +ligtable "C": "1"=:oct"007", "H"=:"Q", "h"=:"Q"; +ligtable "D": "1"=:oct"006", "2"=:oct"002", "3"=:oct"026", + "J"=:oct"006", "j"=:oct"006"; +ligtable "E": "0"=:oct"023", "1"=:oct"003", "2"=:oct"005"; +ligtable "I": "0"=:oct"022", "1"=:oct"004"; +ligtable "J": "1"=:oct"027", "2"=:oct"020"; +ligtable "L": "1"=:oct"001", "J"=:oct"001", "j"=:oct"001"; +ligtable "N": "0"=:oct"175", "1"=:oct"000", "J"=:oct"000", "j"=:oct"000"; +ligtable "O": oct"003": "F": "O" kern -k#, "F" kern -k#, oct"005" kern -k#, + oct"025": "H" kern k#, "A" kern k#, "U" kern k#, oct"024" kern k#, + "T" kern k#; +ligtable "P": "1"=:oct"136", "2"=:oct"137"; +ligtable "t": "s"=:"c", + "R": oct"005" kern k#, oct"025" kern k#, + oct"034": "g": "u": oct"035" kern k#, + "a" kern k#, "d" kern k#, "e" kern k#, "f" kern k#, + "l" kern k#, "o" kern k#, "s" kern k#, oct"015" kern k#, + oct"035" kern k#, "." kern kk#, "," kern kk#, ";" kern kk#; + +ligtable "S": "H"=:"X", "h"=:"X"; +ligtable "X": "Q"=:"W", "q"=:"W", "C"=:"6", "c"=:"6"; +ligtable "Y": "A"=:oct"027", "a"=:oct"027", "U"=:oct"020", "u"=:oct"020"; +ligtable "Z": "1"=:oct"021", "H"=:oct"021", "h"=:oct"021"; +ligtable "[": "["=:oct"074"; +ligtable "]": "]"=:oct"076"; +ligtable "`": "`"=:oct"134"; +ligtable "e": "0"=:oct"033", "1"=:oct"013", "2"=:oct"015", + "b": "o": "r": "f": "o" kern -k#, "f" kern -k#, "e" kern -k#, + "c" kern -k#, "h" kern k#; +ligtable "c": "1"=:oct"017", "h"=:"q"; +ligtable "d": "1"=:oct"016", "2"=:oct"012", "3"=:oct"036", "j"=:oct"016"; +ligtable "i": "0"=:oct"032", "1"=:oct"014"; +ligtable "j": "1"=:oct"037", "2"=:oct"030"; +ligtable "k": "h"=:"h"; +ligtable "l": "1"=:oct"011", "j"=:oct"011"; +ligtable "n": "1"=:oct"010", "j"=:oct"010"; +ligtable "p": "1"=:oct"176", "2"=:oct"177"; +ligtable "x": "q"=:"w", "c"=:"7"; +ligtable "y": "a"=:oct"037", "u"=:oct"030"; +ligtable "z": "1"=:oct"031", "h"=:oct"031"; +ligtable "s": "h"=:"x", + "m": "w": oct"012" kern -k#, oct"032" kern -k#, "c" kern -k#, + "g" kern -k#, "i" kern -k#, "k" kern -k#, "m" kern -k#, + "n" kern -k#, "p" kern -k#, "r" kern -k#, "v" kern -k#, + "w" kern -k#, + "x" kern -k#, "y" kern -k#, oct"176" kern -k#, oct"177" kern -k#; + + +bye. diff --git a/fonts/cyrillic/bashkirian/bashitest.tex b/fonts/cyrillic/bashkirian/bashitest.tex new file mode 100644 index 0000000000..1ae3932cd7 --- /dev/null +++ b/fonts/cyrillic/bashkirian/bashitest.tex @@ -0,0 +1,10 @@ +\font\cyr=jkbashi10 +\cyr +BAX"KORT ALFABITE -- BAXKIRSKII0 ALFABIT -- {\it THE BASHKIRIAN ALFABET} + +ABVG"GD{\it\c{\cyr Z}}EE0ZHII0K"KLMN"NO"OPRS{\it\c{\cyr S}}TU"UFH"HCQWXP2YP1% +E1"EYUYA + +abvg"gd{\it\c{\cyr z}}ee0zhii0k"klmn"no"oprs{\it\c{\cyr s}}tu"ufh"hcqwxp2% +yp1e1"eyuya +\endinput diff --git a/fonts/cyrillic/bashkirian/bashlig.mf b/fonts/cyrillic/bashkirian/bashlig.mf new file mode 100644 index 0000000000..26866e3c02 --- /dev/null +++ b/fonts/cyrillic/bashkirian/bashlig.mf @@ -0,0 +1,11 @@ +ligtable oct"042": "G"=:oct"000", "H"=:oct"005", "K"=:oct"001", "N"=:oct"002", + "O"=:oct"003", "U"=:oct"004", "E"=:oct"006", + "g"=:oct"010", "h"=:oct"015", "k"=:oct"011", "n"=:oct"012", + "o"=:oct"013", "u"=:oct"014", "e"=:oct"016"; +ligtable oct"001": "F" kern k#, "O" kern k#, "S" kern k#, + oct"003" kern k#, oct"006" kern k#; +ligtable oct"003": oct"006": "O" kern -k#, "F" kern -k#, oct"005" kern -k#, + "H" kern k#, "A" kern k#, "U" kern k#, oct"024" kern k#, + "T" kern k#; +ligtable oct"013": oct"016": "h" kern k#; +endinput; diff --git a/fonts/cyrillic/bashkirian/bashtest.tex b/fonts/cyrillic/bashkirian/bashtest.tex new file mode 100644 index 0000000000..299fa20c46 --- /dev/null +++ b/fonts/cyrillic/bashkirian/bashtest.tex @@ -0,0 +1,10 @@ +\font\cyr=jkbash10 +\cyr +BAX"KORT ALFABITE -- BAXKIRSKII0 ALFABIT -- {\rm THE BASHKIRIAN ALFABET} + +ABVG"GD{\rm\c{\cyr Z}}EE0ZHII0K"KLMN"NO"OPRS{\rm\c{\cyr S}}TU"UFH"HCQWXP2YP1% +E1"EYUYA + +abvg"gd{\rm\c{\cyr z}}ee0zhii0k"klmn"no"oprs{\rm\c{\cyr s}}tu"ufh"hcqwxp2% +yp1e1"eyuya +\endinput diff --git a/fonts/cyrillic/bashkirian/jkbash.rme b/fonts/cyrillic/bashkirian/jkbash.rme new file mode 100644 index 0000000000..c79d5b06bf --- /dev/null +++ b/fonts/cyrillic/bashkirian/jkbash.rme @@ -0,0 +1,83 @@ +jkbash.rme by Joerg Knappen 5. Dec. 1991 + +Bashkirian extra letters to use together with the cyrillic font wncyr. + +Why Bashkirian extra letters in a Metafont? + +The now available cyrillic fonts are heavily russian oriented, ignoring that +there are many languages (most of them in the USSR) written in cyrillic. So +it looks natural to design the special characters for many of these +languages. That my first attempt fell on Bashkirian happened by the chance +of finding a source for the typeshapes, including italics. (It was a +bashkirian to russian dictionary by ...). As far as I know, these letters +are also sufficent for the writing of mongolian in cyrillic. + +Which files are there? + +jkbashc.mf including shapes common to upper and lower case +jkbashl.mf lowercase shapes +jkbashu.mf uppercase shapes +jkbashi.mf lowercase italics +bashlig.mf an addendum to the ligtable + +How to use the files? + +As mentioned, the bashkirian extra letters are designed to go with the +wncyr washington cyrillic font. They are available from all good +TeX-servers. + + +I propose following way of use: +Copy the parameter file you want to use (e.g. wncyr10.mf) and rename it. +This is not to confuse it with the original one. Change the +generate cyrfont +into +generate bashfont +(cyrfont and bashfont are just examples). Then copy *cyrfont.mf* to +*bashfont.mf* and do the following changes: +Insert after the first block of input (ending with input cyrspl;) +input jkbashc; +input jkbashu; +input jkbashl; +Insert after the block {code_offset:=8; + input serb; } +input jkbashc; +And, at last, insert a line before the bye +input bashlig; + +Things are only going well with TeX3... and Metafont2... because there are +more then 128 characters in the font. Things went (and go) even well with +the old TeX 2.xx and METAFONT 1.xxx since the new features are not really +used. + +What's new in the bashkirian font? + +I made the following seven letters (more or less stealing together what I +needed): +A crossed Ge (looking like an F), a K with a handle, an N with descender +like Shcha, an O-Umlaut (looking like Theta), an U-Umlaut (really looking +like Y, in fact, being one), a Ha (looking like h), and a variant E +(looking like an e rotated 180 degrees). +This characters are placed on the octal codes from 200 to 207, the +lowercase ones are placed on the octal codes from 210 to 217. +They can be accessed as ligatures as following: +"G,"K,"O,"U,"H,"E,"g,"k,"o,"u,"h,"e. + +What's missing? + +A Cedilla accent (sigh), which occurs in bashkirian on S and Z. One has to +use the latin one. This is quite a mess, e.g. {\rm\c{\cyr Z}} does the job. +The octal codes are arbitrarily choosen just not to get +in conflict to any other character. No coding is provided. +The kerning table is not polished. Maybe it will be usefull to change this. + +Contact: +Joerg Knappen +Barbarossaring 43 +D-6500 Mainz 1 +R.F.A. + +Internet: knappen@vkpmzd.kph.uni-mainz.de + +Note, that I do not have a bitnet address any longer! The bitnet address in +the file headers does not work no more! diff --git a/fonts/cyrillic/bashkirian/jkbash10.mf b/fonts/cyrillic/bashkirian/jkbash10.mf new file mode 100644 index 0000000000..8a9853e015 --- /dev/null +++ b/fonts/cyrillic/bashkirian/jkbash10.mf @@ -0,0 +1,111 @@ +% jkbash10.mf +if unknown cmbase: input cmbase fi + +font_identifier:="jkbash"; 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#:=14/36pt#; % unit width +lower.width_adj#:=0pt#; % width adjustment for certain characters +lower.cap_serif_fit#:=3/36pt#; % extra sidebar near uppercase serifs +lower.letter_fit#:=5/36pt#; % extra space added to all sidebars + +lower.body_height#:=170/36pt#; % height of tallest characters +lower.cap_height#:=155/36pt#; % height of caps +lower.x_height#:=98/36pt#; % height of lowercase without ascenders +lower.bar_height#:=55/36pt#; % height of crossbar in lowercase e +lower.comma_depth#:=44/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 %might be reduced to 7 +lower.stem#:=21/36pt#; % lowercase stem breadth +lower.cap_stem#:=25/36pt#; % uppercase stem breadth +lower.cap_curve#:=30/36pt#; % uppercase curve breadth +lower.cap_ess#:=27/36pt#; % breadth in middle of uppercase s + +lower.cap_jut#:=28/36pt#; % protrusion of uppercase serifs +lower.beak_jut#:=6.3/36pt#; % horizontal protrusion of beak serifs +lower.beak#:=44/36pt#; % vertical protrusion of beak serifs +lower.slab#:=11/36pt#; % serif and arm thickness +lower.cap_bar#:=11/36pt#; % uppercase bar thickness +lower.cap_band#:=11/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 bashfont % switch to the driver file +bye diff --git a/fonts/cyrillic/bashkirian/jkbashc.mf b/fonts/cyrillic/bashkirian/jkbashc.mf new file mode 100644 index 0000000000..3ff302d563 --- /dev/null +++ b/fonts/cyrillic/bashkirian/jkbashc.mf @@ -0,0 +1,127 @@ + %jkbashc.mf by Joerg Knappen, bitnet: knappen@dmznat51 + % Version: 8. June 1990 + % Bashkirian letters with common shapes for upper and lower case + +cmchar "The bashkirian letter crossed Ge (looking like F)"; +beginchar(oct"200",11.5u#-width_adj#,cap_height#,0); +italcorr cap_height#*slant-beak_jut#-.25u#; +adjust_fit(cap_serif_fit#,0); +h:=vround(h-stem_corr); +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 +pickup crisp.nib; pos3(slab,90); pos4(hair,0); +top y3r=h; x3=x1; rt x4r=hround(w-.75u); y4=good.y(y3l-beak)-eps; +arm(3,4,e,beak_darkness,beak_jut); % upper arm and beak +pos5(cap_bar,-90); pos6(hair,0); +top y5l=vround(.5[y2,y1]+.5cap_bar); x5=x1; +pos0(cap_bar,90); pos7(hair,0); +z0=z5; x6=x7; y6-y5l=y0l-y7; +if serifs: rt x6r=hround(w-4u+.5hair); y6=good.y(y5l+.6beak)+eps; + rt x9r=hround(w-.5u); +else: rt x6r=hround(w-1.5u); y6=y5l+eps; rt x9r=hround(w-.75u); fi +arm(5,6,f,beak_darkness,0); arm(0,7,g,beak_darkness,0); % middle arm and serif +if serifs: nodish_serif(1,2,a,1/3,cap_jut,b,1/3,.5cap_jut); % upper serif + dish_serif(2,1,c,1/3,cap_jut,d,1/3,1.25cap_jut); fi % lower serif +math_fit(0,ic#-2.5u#); penlabels(0,1,2,3,4,5,6,7,8,9); endchar; + +cmchar "The Bashkirian letter variant KA"; +beginchar(oct"201",12u#,cap_height#,0); +italcorr cap_height#*slant-.5u#; +adjust_fit(if serifs: 4 else: 2 fi u#,.25u#); +pickup tiny.nib; pos1(fudged.cap_stem,0); pos2(fudged.cap_stem,0); +lft x1l=lft x2l=hround max(2u,3u-.5fudged.cap_stem); top y1=h; bot y2=0; +filldraw stroke z1e--z2e; % stem +if serifs: dish_serif(1,2,a,1/3,cap_jut,b,1/3,cap_jut); % upper stem serif + dish_serif(2,1,c,1/3,cap_jut,d,1/3,cap_jut); % lower stem serif + pickup fine.nib; pos3(vair,90); x3=x1; y3=.55h; z3'=z3; pos3'(varwid,90); + pos4(varwid,90); x4=w-.75flare-.125u; top y4r=h+oo; %original x4=w-2u + x41=x4; y41=y3'; x42=x4-2u; y42=y4; + filldraw stroke z3'e..controls z41 and z42..z4e; % upper diagonal + pos5(hair,0); pos6(flare,0); +rt x5r=hround(w-.125u); y5+.5flare=vround(top y4r-hair)+1;%original bot y4l-.03h + top y4'r=top y4r; x4'=x4; pos4'(hair,90); + bulb(4',5,6); % bulb + pos7(stem,0); pos8(varwid,90); pos9(hair,180); + x9+.5hair=hround(w+.5hair-eps); y9=1/3x_height; + lft x7l=hround(w-2.75u-.5stem); y7=1/2y3; x8=w-1.2u; bot y8l=-oo; + filldraw stroke z3e{right}...z7e{down} + ...z8e{right}...{up}z9e; % lower diagonal +else: + numeric right_jut,stem[],alpha[]; + right_jut=.4tiny; + pickup tiny.nib; + stem2=max(tiny.breadth,fudged.cap_stem-3stem_corr); + stem1=max(tiny.breadth,fudged.hair if hefty:-3stem_corr fi); + top y3=h; rt x3r=hround(r-letter_fit-u-right_jut); + bot y6=0; rt x6r=hround(r-letter_fit-.75u-right_jut); + x4=x1; y4=1/3h; + alpha1=diag_ratio(1,.5(stem1-tiny),y3-y4,x3r-x4); + penpos3(alpha1*(stem1-tiny),0); penpos4(whatever,-90); + alpha2=diag_ratio(1,.5(stem2-tiny),y1-y6,x6r-x1); + penpos6(alpha2*(stem2-tiny),0); + forsuffixes $=l,r: y3'$=h; y6'$=0; z4$=z3'$+whatever*(z3-z4); + z5$=z6'$+whatever*(z1-z6)=whatever[z3,z4]; endfor + z5=.5[z5l,z5r]; + z3'r=z3r+penoffset z3-z4 of currentpen+whatever*(z3-z4); + z6'r=z6r+penoffset z1-z6 of currentpen+whatever*(z1-z6); + z6'l=z6l+penoffset z6-z1 of currentpen+whatever*(z1-z6); + fill z4r--diag_end(4r,3'r,1,.5,3'l,4l)--z4l--cycle; % upper diagonal + fill z5l--diag_end(5l,6'l,.5,1,6'r,5r)--z5r--cycle; % lower diagonal +fi +pickup crisp.nib; +top y55r=h; x55=x1; pos55(slab,90); pos56(hair,180); + x56=x1-if serifs: 6 else: 3 fi u; +y56=good.y(y55l-beak)-eps; +arm(55,56,q,beak_darkness**.8,-.4beak_jut); +math_fit(0,.5ic#); penlabels(1,2,3,4,5,6); endchar; + +cmchar "The Bashkirian letter variant EN (looks like H with leg)"; +beginchar(oct"202",13u#+width_adj#,cap_height#,0); +italcorr cap_height#*slant-cap_serif_fit#+cap_jut#-2.5u#+min(.5cap_stem#,u#); +adjust_fit(cap_serif_fit#,cap_serif_fit#); +pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0); +pos3(cap_stem,0); pos4(cap_stem,0); +lft x1l=lft x2l=hround max(2u,3u-.5cap_stem); x3=x4=w-x1; +top y1=top y3=h; bot y2=bot y4=0; +filldraw stroke z1e--z2e; % left stem +filldraw stroke z3e--z4e; % right stem +penpos5(cap_bar,90); penpos6(cap_bar,90); +x5=x1; x6=x3; y5=y6=.52h; +fill stroke z5e--z6e; % bar +if serifs: numeric inner_jut; + if rt x1r+cap_jut+.5u+1<=lft x3l-cap_jut: inner_jut=cap_jut; + else: rt x1r+inner_jut+.5u+1=lft x3l-inner_jut; fi + dish_serif(1,2,a,1/3,cap_jut,b,1/3,inner_jut); % upper left serif + dish_serif(2,1,c,1/3,cap_jut,d,1/3,inner_jut); % lower left serif + dish_serif(3,4,e,1/3,inner_jut,f,1/3,cap_jut); % upper right serif + r_cyr_serif(4,3,g,1/3,inner_jut,h,1/3,cap_jut); % lower right serif +else: + lcyrsanserif(4); lft x2'= lft x2l; bot y2'l=0; pos2'(slab,90); + rt x4'=rt x4r; y4'=y2'; pos4'(slab,90); filldraw stroke z2'e--z4'e; +fi +math_fit(0,.5ic#); penlabels(1,2,3,4,5,6); endchar; + + +cmchar "The Bashkirian letter flipped e"; +beginchar(oct"206",14u#-width_adj#,cap_height#,0); +italcorr .7cap_height#*slant-.5u#; +adjust_fit(0,0); +penpos1(vair',90); penpos3(vround(vair+1.5vair_corr),-90); +penpos2(cap_curve,180); penpos4(cap_curve,0); +if monospace: x2r=hround 1.5u; + interim superness:=sqrt superness; % make |"O"|, not |"0"| +else: x2r=hround u; fi +x4r=w-x2r; x1=x3=.5w; y1r=h+o; y3r=-o; +y2=y4=.5h-vair_corr; y2l:=y4l:=.52h; +penstroke pulled_super_arc.e(1,2)(.5superpull) + & pulled_super_arc.e(2,3)(.5superpull) + & pulled_super_arc.e(3,4)(.5superpull) + & pulled_super_arc.e(4,1)(.5superpull) & cycle; % bowl %now we have an O +y9r-y9l=y10r-y10l=cap_band; x9r=x9l=x2; x10r=x10l=x4; y9r=y10r=top y2; +penstroke z9e--z10e; % bar +bot y6=bot y7=top y9r; top y5=top y8=min(.675h,bot y1l-eps); +lft x6=lft x5=0; rt x7=rt x8=.5w; +unfill z5--z6--z7--z8--cycle; cullit; % erase extra arc +math_fit(-.3cap_height#*slant-.5u#,ic#-.5u#); penlabels(1,2,3,4); endchar; + \endinput diff --git a/fonts/cyrillic/bashkirian/jkbashi.mf b/fonts/cyrillic/bashkirian/jkbashi.mf new file mode 100644 index 0000000000..002c7711b3 --- /dev/null +++ b/fonts/cyrillic/bashkirian/jkbashi.mf @@ -0,0 +1,175 @@ + % jkbashi.mf by Joerg Knappen, Bitnet: knappen@dmznat51 + % Version 14. June 1990 + % Bashkirian special letters, lowercase italics + % Additional information at the end of this file + +cmchar "Italic Bashkirian letter ghe-barred"; +beginchar(oct"210",7u#,x_height#,0); +italcorr max(1/3x_height#*slant+.5hair#+.5u#,h#*slant+.5flare#-2u#); +adjust_fit(if monospace:u#,u# else: 0,0 fi); pickup fine.nib; +x0=0; x5=w; x2=.5w+1.5u; x3=.5w-1.5u; +hook_in(0,1,2)(skewed); hook_out(3,4,5)(skewed); % hooks +filldraw stroke z2e{down}...{down}z3e; % stem +pickup crisp.nib; +top y6r=top y7r=bar_height;lft x6=lft x0;rt x7=rt x5; +pos6(bar,90); pos7(bar,90); +filldraw stroke z6e--z7e; % bar +penlabels(0,1,2,3,4,5,6,7); endchar; + +cmchar "Italic Bashkirian letter variant ka"; +beginchar(oct"211",8u#,x_height#,0); +italcorr x_height#*slant-.5u#; +adjust_fit(u#,.25u#); +pickup tiny.nib; pos1(fudged.stem,0); pos2(fudged.stem,0); +lft x1l=lft x2l=hround max(1.3u,2u-.5fudged.stem); top y1=h; bot y2=0; +filldraw stroke z1e--z2e; % stem +if serifs: dish_serif(1,2,a,1/3,jut,b,1/3,jut); % upper stem serif + dish_serif(2,1,c,1/3,jut,d,1/3,jut); % lower stem serif + pickup fine.nib; pos3(vair,90); x3=x1; y3=.55h; z3'=z3; pos3'(varwid,90); + pos4(varwid,90); x4=w-.75flare-.08u; top y4r=h+oo; %original x4=w-2u + x41=x4; y41=y3'; x42=x4-2u; y42=y4; + filldraw stroke z3'e..controls z41 and z42..z4e; % upper diagonal + pos5(hair,0); pos6(flare,0); +rt x5r=hround(w-.08u); y5+.5flare=vround(top y4r-hair)+1;%original bot y4l-.03h + top y4'r=top y4r; x4'=x4; pos4'(hair,90); + bulb(4',5,6); % bulb + pos7(stem,0); pos8(varwid,90); pos9(hair,180); + x9+.5hair=hround(w+.5hair-eps); y9=1/3x_height; + lft x7l=hround(w-1.8u-.5stem); y7=1/2y3; x8=w-.8u; bot y8l=-oo; + filldraw stroke z3e{right}...z7e{down} + ...z8e{right}...{up}z9e; % lower diagonal +else: + numeric right_jut,stem[],alpha[]; + right_jut=.4tiny; + pickup tiny.nib; + stem2=max(tiny.breadth,fudged.stem-3stem_corr); + stem1=max(tiny.breadth,fudged.hair if hefty:-3stem_corr fi); + top y3=h; rt x3r=hround(r-letter_fit-.67u-right_jut); + bot y6=0; rt x6r=hround(r-letter_fit-.5u-right_jut); + x4=x1; y4=1/3h; + alpha1=diag_ratio(1,.5(stem1-tiny),y3-y4,x3r-x4); + penpos3(alpha1*(stem1-tiny),0); penpos4(whatever,-90); + alpha2=diag_ratio(1,.5(stem2-tiny),y1-y6,x6r-x1); + penpos6(alpha2*(stem2-tiny),0); + forsuffixes $=l,r: y3'$=h; y6'$=0; z4$=z3'$+whatever*(z3-z4); + z5$=z6'$+whatever*(z1-z6)=whatever[z3,z4]; endfor + z5=.5[z5l,z5r]; + z3'r=z3r+penoffset z3-z4 of currentpen+whatever*(z3-z4); + z6'r=z6r+penoffset z1-z6 of currentpen+whatever*(z1-z6); + z6'l=z6l+penoffset z6-z1 of currentpen+whatever*(z1-z6); + fill z4r--diag_end(4r,3'r,1,.5,3'l,4l)--z4l--cycle; % upper diagonal + fill z5l--diag_end(5l,6'l,.5,1,6'r,5r)--z5r--cycle; % lower diagonal +fi +pickup crisp.nib; +top y55r=h; x55=x1; pos55(slab,90); pos56(hair,180); + x56=x1-if serifs: 4 else: 2 fi u; +y56=good.y(y55l-beak)-eps; +arm(55,56,q,beak_darkness**.8,-.4beak_jut); +math_fit(0,.5ic#); penlabels(1,2,3,4,5,6); endchar; + + +cmchar "Italic Bashkirian letter variant en"; +beginchar(oct"212",10u#,x_height#,desc_depth#); +italcorr 1/3x_height#*slant+.5hair#+.5u#; +adjust_fit(0,.25u#); pickup fine.nib; +x0=0; x2=x3; pos3(stem,-180); lft x3r=hround(2.5u-.5stem); +hook_in(0,1,2); % opening hook + y3-.5stem=-oo; z2'=z2; pos2'(stem,-180); + filldraw circ_stroke z3e--z2'e; %left stem +x10=x3l; y10=y11=.55h; pos10(hair,90); pos11(hair,90); +pos6(stem,0); rt x6r=hround(w-2.5u+.5stem); y6+.5stem=h; +x7=x6; x9=w; hook_out(7,8,9); %closing hook + z7'=z7; pos7'(stem,0); +filldraw circ_stroke z6e--z7'e; x11=x6l; % right stem + filldraw stroke z10e{1,1}...{1,1}z11e; % bar +pickup crisp.nib; +y30=0; x30=x8-.1u; y32=-d; x32=x8-.75u; z31=.5[z30,z32]; +pos30(hair,90); pos31(1.25stem,135); +filldraw stroke z8{down}...z30e...z31e--z32; % descender +endchar; + +cmchar "Italic Bashkirian letter o-umlaut"; +beginchar(oct"213",9u#,x_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=h+oo; y2=y4=.5[y1,y3]; bot y3r=-oo; +filldraw stroke pulled_arc.e(1,2) & pulled_arc.e(2,3) + & pulled_arc.e(3,4) & pulled_arc.e(4,1); % bowl +z90=z2l; x91=x4l; y91=y90; pos90(bar,90); pos91(bar,90); +if serifs: z92=.5[z90,z91]; pos92(if serifs: 2.5 fi bar,90); + filldraw stroke z90e{1,1}..{1,-1}z92e..{1,1}z91e; % tilde-like bar +else: filldraw stroke z90e--z91e; fi % bar +math_fit(-.3x_height#*slant+.5curve#-u#,ic#); penlabels(1,2,3,4); endchar; + +cmchar "The italic Bashkirian letter u-umlaut"; % I put the gamma in here +beginchar(oct"214",10u#,x_height#,desc_depth#); +italcorr x_height#*slant-.5u#; +adjust_fit(0,0); pickup fine.nib; +pos1(hair,180); pos2(vstem+dw,90); +pos4(hair,0); pos5(vair,-90); pos6(hair,-180); pos7(hair,-180); +bot y1=.5772156649h; top y2r=h+oo; y4=y6=-.5d; +bot y5r=-d-o; top y7=h; +lft x1r=hround(.5u-.5hair); x2=3u; rt x4r=hround(w-2u); x5=.5[x4,x6]; +rt x4r-lft x6r=hround 1/3[hair,stem]+eps; rt x7l=hround(w-u); +if x4l<x6l: x4l:=x6l:=x5; fi +pos3(hair,angle(z4-z2)+90); x3=superness[x2,x4]; y3=superness[y4,y2]; +filldraw stroke z1e{up}...z2e{right}...z3e{z4-z2} + ...z4e{down}...{left}z5e; % arc +filldraw stroke z5e{left}...z6e{up}..{2(x7-x6),y7-y6}z7e; % stem +math_fit(-.5772156649x_height#*slant,ic#-u#); +penlabels(1,2,3,4,5,6,7); endchar; + + +cmchar "Italic Bashkirian letter ha"; +beginchar(oct"215",9u#,asc_height#,0); +italcorr 1/3x_height#*slant+.5hair#+.5u#; +adjust_fit(1.5u#,0); pickup tiny.nib; +pos1(stem,0); pos2(stem,0); x1=x2; +lft x1l=hround(1.5u-.5stem); top y1=h; y2-.5stem=-oo; +filldraw circ_stroke z2e--z1e; % left stem +sloped_serif.l(1,2,a,1/3,jut,serif_drop); % serif +pickup fine.nib; x4+.5stem=hround(w-2.5u+.5stem); +x5=x4-.25u; ital_arch(2,3,4); % arch +x7=w; hook_out(5,6,7)(skewed); % closing hook +filldraw stroke z4e{down}..{-u,-x_height}z5e; % right stem +math_fit(0,ic#); penlabels(1,2,3,4,5,6,7); endchar; + +cmchar "Italic Bashkirian letter flipped e"; +beginchar(oct"216",8u#,x_height#,0); +italcorr max(1/3x_height#*slant,x_height#*slant+.5(.2[hair#,stem#])-u#); +adjust_fit(0,0); pickup fine.nib; +numeric heavy_hair; heavy_hair=hround .2[hair,stem]; +pos0(vair,-90); pos1(heavy_hair,0); pos2(vair,90); +pos3(curve,180); pos4(vair,270); pos5(hair,320); +x0=rt x3l; rt x1r=hround(w-1.5u+.5heavy_hair); x2=x4=.5(w+u); +lft x3r=hround(1.5u-.5curve); x5r=good.x(w-eps); x6=x5; +y0=y3=y6=bar_height; y1=.5[y0,y2]; top y2r=h+oo; bot y4r=-oo; +top y5l=vround .5bar_height; path p; p=z4{right}..z5..z6; +filldraw stroke z0e{right}...z1e{up}...pulled_arc.e(2,3) + & pulled_arc.e(3,4)...{direction 1 of p}z5e; % arc +x10=.5w; y10=.5h; % center point +flip(10); % and flip +math_fit(-.3x_height#*slant+.5curve#-u#,ic#); +penlabels(0,1,2,3,4,5,6); endchar; + + \endinput + +"These letters aren't perfect. Especially, the variant k is not an italic +but a slanted letter. The variant n's descender is not precisely +positioned. This should be changed in a later version." JK. + +%-------------- end ------------------------------------------------------ +The now famous character code reference: + +Upper case letters: ABCDEFGHIJKLMNOPQRSTUVWXYZ +Lower case letters: abcdefghijklmnopqrstuvwxyz +Digits: 0123456789 +Square, curly, angle braces, parentheses: [] {} <> () +Backslash, slash, vertical bar: \ / | +Punctuation: . ? ! , : ; +Underscore, hyphen, equals sign: _ - = +Quotes--right left double: ' ` " +"at", "number" "dollar", "percent", "and": @ # $ % & +"hat", "star", "plus", "tilde": ^ * + ~ diff --git a/fonts/cyrillic/bashkirian/jkbashi10.mf b/fonts/cyrillic/bashkirian/jkbashi10.mf new file mode 100644 index 0000000000..3880febf86 --- /dev/null +++ b/fonts/cyrillic/bashkirian/jkbashi10.mf @@ -0,0 +1,77 @@ +%jkbashi10.mf by Joerg Knappen +if unknown cmbase: input cmbase fi + +font_identifier:="jkbashi"; 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 chbashital % switch to the driver file +bye diff --git a/fonts/cyrillic/bashkirian/jkbashl.mf b/fonts/cyrillic/bashkirian/jkbashl.mf new file mode 100644 index 0000000000..ad73185bfc --- /dev/null +++ b/fonts/cyrillic/bashkirian/jkbashl.mf @@ -0,0 +1,69 @@ + % jkbashl.mf by Joerg Knappen, Bitnet: knappen@dmznat51 + % Version 11 June 1990 + % Bashkirian special lowercase letters + +cmchar "The Bashkirian letter o-umlaut"; +beginchar(oct"213",9u#,x_height#,0); +italcorr .7x_height#*slant; +adjust_fit(if monospace: .5u#,.5u# else: 0,0 fi); +penpos1(vair,90); penpos3(vair',-90); +penpos2(curve,180); penpos4(curve,0); +x2r=hround max(.5u,1.25u-.5curve); +x4r=w-x2r; x1=x3=.5w; y1r=h+vround 1.5oo; y3r=-oo; +y2=y4=.5h-vair_corr; y2l:=y4l:=.52h; +penstroke pulled_arc.e(1,2) & pulled_arc.e(2,3) + & pulled_arc.e(3,4) & pulled_arc.e(4,1) & cycle; % bowl +z90=z2l; x91=x4; y91=y90; pos90(bar,90); pos91(bar,90); +if serifs: z92=.5[z90,z91]; pos92(if serifs: 2.5 fi bar,90); + filldraw stroke z90e{1,1}..{1,-1}z92e..{1,1}z91e; +else: filldraw stroke z90e--z91e; fi +penlabels(1,2,3,4); endchar; + +cmchar "The Bashkirian letter u-umlaut"; +beginchar(oct"214",if serifs: 9.5u# else 9u# fi,x_height#,desc_depth#); +italcorr x_height#*slant+.45u#; +adjust_fit(serif_fit#,serif_fit#); +numeric left_stem,right_stem,outer_jut,dy,alpha; +left_stem=stem-stem_corr; +right_stem=min(hair if hefty:-2stem_corr fi,left_stem); +outer_jut=.75jut; x1l=w-x4r=l+letter_fit+outer_jut+.05u; +x2l=x5l=hround(.5w-.5left_stem); x3r=x5r; y1=y4=h; y2=y3=y5=0; +dy=y1-y2; alpha=((x2l-x1l)++dy)/dy; +penpos1(alpha*left_stem,0); penpos2(alpha*left_stem,0); +penpos3(alpha*right_stem,0); penpos4(alpha*right_stem,0); +penpos5(left_stem,0); penpos6(left_stem,0); x5=x6; y6=-desc_depth; +z0=whatever[z1r,z2r]=whatever[z3l,z4l]; +if y0>y2+notch_cut: y0:=y2+notch_cut; + fill z0+.5right{up}...{z4-z3}diag_end(3l,4l,1,1,4r,3r)--z5r + --diag_end(5r,6r,1,1,6l,5l)--z5l--diag_end(2l,1l,1,1,1r,2r){z2-z1} + ...{down}z0+.5left--cycle; % diagonals and stem +else: fill z0--diag_end(0,4l,1,1,4r,3r)--z5r + --diag_end(5r,6r,1,1,6l,5l)--z5l + --diag_end(2l,1l,1,1,1r,0)--cycle; fi % diagonals and stem +if serifs: numeric inner_jut; pickup tiny.nib; + prime_points_inside(1,2); prime_points_inside(4,3); prime_points_inside(6,5); + if rt x1'r+jut+.5u+1<=lft x4'l-jut: inner_jut=jut; + else: rt x1'r+inner_jut+.5u+1=lft x4'l-inner_jut; fi + dish_serif(1',2,a,1/3,outer_jut,b,1/2,inner_jut); % upper left serif + dish_serif(4',3,c,.6,inner_jut,d,1/2,outer_jut)(dark); % upper right serif + dish_serif(6',5,e,1/3,cap_jut,f,1/3,cap_jut); fi % lower serif +math_fit(.5u#-x_height#*slant,ic#-4u#); +penlabels(0,1,2,3,4,5,6); endchar; + +cmchar "The Bashkirian letter ha"; +beginchar(oct"215",11u#,asc_height#,0); +italcorr .5[bar_height#,x_height#]*slant-serif_fit#+.5stem#-2u#; +adjust_fit(.5u#+serif_fit#+stem_shift#,serif_fit#-stem_shift#); +pickup tiny.nib; pos1(stem,0); pos2(stem,0); +pos1'(stem',0); pos2'(stem',0); pos3(stem,0); +lft x1l=hround(2.5u-.5stem); x1l=x1'l=x2l=x2'l; x3=w-x1; +top y1=h; bot y2=0; y1=y1'; y2=y2'; +filldraw stroke z1'e--z2'e; % left stem +h_stroke(2,a,3,4); % arch and right stem +if serifs: sloped_serif.l(1',2',b,1/3,jut,serif_drop); % upper left serif + numeric inner_jut; pickup tiny.nib; + if rt x2r+jut+.5u+1<=lft x4l-jut: inner_jut=jut; + else: rt x2r+jut+.5u+1=lft x4l-inner_jut; fi + dish_serif(2,1,c,1/3,jut,d,1/3,jut); % lower left serif + dish_serif(4,3,e,1/3,inner_jut,f,1/3,jut); fi % lower right serif +penlabels(1,2,3,4); endchar; diff --git a/fonts/cyrillic/bashkirian/jkbashu.mf b/fonts/cyrillic/bashkirian/jkbashu.mf new file mode 100644 index 0000000000..1c8f4c8a6c --- /dev/null +++ b/fonts/cyrillic/bashkirian/jkbashu.mf @@ -0,0 +1,77 @@ + % jkbashu.mf by Joerg Knappen, bitnet knappen@dmznat21 + % Version 10 June 1990 + % Bashkirian special uppercase letters + +cmchar "The Bashkirian letter O-Umlaut (looks like Theta)"; +beginchar(oct"203",14u#-width_adj#,cap_height#,0); +italcorr .7cap_height#*slant-.5u#; +adjust_fit(0,0); +penpos1(vair',90); penpos3(vround(vair+1.5vair_corr),-90); +penpos2(cap_curve,180); penpos4(cap_curve,0); +if monospace: x2r=hround 1.5u; + interim superness:=sqrt superness; % make |"O"|, not |"0"| +else: x2r=hround u; fi +x4r=w-x2r; x1=x3=.5w; y1r=h+o; y3r=-o; +y2=y4=.5h-vair_corr; y2l:=y4l:=.52h; +penstroke pulled_super_arc.e(1,2)(.5superpull) + & pulled_super_arc.e(2,3)(.5superpull) + & pulled_super_arc.e(3,4)(.5superpull) + & pulled_super_arc.e(4,1)(.5superpull) & cycle; % bowl +z90=z2l; x91=x4; y91=y90; pos90(bar,90); pos91(bar,90); +if serifs: z92=.5[z90,z91]; pos92(if serifs: 2.5 fi bar,90); + filldraw stroke z90e{1,1}..{1,-1}z92e..{1,1}z91e; +else: filldraw stroke z90e--z91e; fi +math_fit(-.3cap_height#*slant-.5u#,ic#-.5u#); penlabels(1,2,3,4); endchar; + +cmchar "The Bashkirian letter U-Umlaut (looks like Y)"; +beginchar(oct"204",13u#,cap_height#,0); +italcorr cap_height#*slant+.45u#; +adjust_fit(cap_serif_fit#,cap_serif_fit#); +numeric left_stem,right_stem,outer_jut,dy,alpha; +left_stem=cap_stem-stem_corr; +right_stem=min(cap_hair if hefty:-2stem_corr fi,left_stem); +outer_jut=.75cap_jut; x1l=w-x4r=l+letter_fit+outer_jut+.05u; +x2l=x5l=hround(.5w-.5left_stem); x3r=x5r; y1=y4=h; y2=y3=y5=.4h; +dy=y1-y2; alpha=((x2l-x1l)++dy)/dy; +penpos1(alpha*left_stem,0); penpos2(alpha*left_stem,0); +penpos3(alpha*right_stem,0); penpos4(alpha*right_stem,0); +penpos5(left_stem,0); penpos6(left_stem,0); x5=x6; y6=0; +z0=whatever[z1r,z2r]=whatever[z3l,z4l]; +if y0>y2+cap_notch_cut: y0:=y2+cap_notch_cut; + fill z0+.5right{up}...{z4-z3}diag_end(3l,4l,1,1,4r,3r)--z5r + --diag_end(5r,6r,1,1,6l,5l)--z5l--diag_end(2l,1l,1,1,1r,2r){z2-z1} + ...{down}z0+.5left--cycle; % diagonals and stem +else: fill z0--diag_end(0,4l,1,1,4r,3r)--z5r + --diag_end(5r,6r,1,1,6l,5l)--z5l + --diag_end(2l,1l,1,1,1r,0)--cycle; fi % diagonals and stem +if serifs: numeric inner_jut; pickup tiny.nib; + prime_points_inside(1,2); prime_points_inside(4,3); prime_points_inside(6,5); + if rt x1'r+cap_jut+.5u+1<=lft x4'l-cap_jut: inner_jut=cap_jut; + else: rt x1'r+inner_jut+.5u+1=lft x4'l-inner_jut; fi + dish_serif(1',2,a,1/3,outer_jut,b,1/2,inner_jut); % upper left serif + dish_serif(4',3,c,.6,inner_jut,d,1/2,outer_jut)(dark); % upper right serif + dish_serif(6',5,e,1/3,cap_jut,f,1/3,cap_jut); fi % lower serif +math_fit(.5u#-cap_height#*slant,ic#-4u#); +penlabels(0,1,2,3,4,5,6); endchar; + +cmchar "The Bashkirian letter HA (looks like h)"; +beginchar(oct"205",14u#+width_adj#,cap_height#,0); +italcorr cap_height#*slant-cap_serif_fit#+cap_jut#-2.5u#+min(.5cap_stem#,u#); +adjust_fit(cap_serif_fit#,cap_serif_fit#); +pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0); +pos3(cap_stem,0); pos4(cap_stem,0); +lft x1l=lft x2l=hround max(2u,3u-.5cap_stem); x3=x4=w-x1; +top y1=h; +bot y4=bot y2=0; +x22=x1; y22=.35h; +pos22(cap_bar,90); y3=y22; +filldraw stroke z4e--z3e{up}...{down}z22e; % right stem and bowl +filldraw stroke z1e--z2e; % left stem +if serifs: numeric inner_jut; + if rt x2r+cap_jut+.5u+1<=lft x4l-cap_jut: inner_jut=cap_jut; + else: rt x2r+inner_jut+.5u+1=lft x4l-inner_jut; fi + dish_serif(1,2,a,1/3,cap_jut,b,1/3,inner_jut); % upper left serif + dish_serif(2,1,c,1/3,cap_jut,d,1/3,inner_jut); % lower left serif + dish_serif(4,3,g,1/3,inner_jut,h,1/3,cap_jut); fi % lower right serif +math_fit(0,.5ic#); penlabels(1,2,3,4,22); endchar; +\endinput |