summaryrefslogtreecommitdiff
path: root/fonts/cyrillic/bashkirian
diff options
context:
space:
mode:
Diffstat (limited to 'fonts/cyrillic/bashkirian')
-rw-r--r--fonts/cyrillic/bashkirian/bashfont.mf119
-rw-r--r--fonts/cyrillic/bashkirian/bashital.mf93
-rw-r--r--fonts/cyrillic/bashkirian/bashitest.tex10
-rw-r--r--fonts/cyrillic/bashkirian/bashlig.mf11
-rw-r--r--fonts/cyrillic/bashkirian/bashtest.tex10
-rw-r--r--fonts/cyrillic/bashkirian/jkbash.rme83
-rw-r--r--fonts/cyrillic/bashkirian/jkbash10.mf111
-rw-r--r--fonts/cyrillic/bashkirian/jkbashc.mf127
-rw-r--r--fonts/cyrillic/bashkirian/jkbashi.mf175
-rw-r--r--fonts/cyrillic/bashkirian/jkbashi10.mf77
-rw-r--r--fonts/cyrillic/bashkirian/jkbashl.mf69
-rw-r--r--fonts/cyrillic/bashkirian/jkbashu.mf77
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