diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-09 23:38:21 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-09 23:38:21 +0000 |
commit | 215012a8d684889983ec2c0629e1c704e6853d9c (patch) | |
tree | ebf1271bd71869069824935ae8a5678745bf8bce /Master/texmf-dist/fonts/source/public/elvish | |
parent | 1af3d19d6dbcbf309667d9cb4aa3cdda914914a9 (diff) |
trunk/Master/texmf-dist/fonts/source
git-svn-id: svn://tug.org/texlive/trunk@101 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/fonts/source/public/elvish')
7 files changed, 2183 insertions, 0 deletions
diff --git a/Master/texmf-dist/fonts/source/public/elvish/elvish-cirth.mf b/Master/texmf-dist/fonts/source/public/elvish/elvish-cirth.mf new file mode 100644 index 00000000000..790da12fe0a --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/elvish/elvish-cirth.mf @@ -0,0 +1,779 @@ +designsize:=10pt# ; +autorounding := 1 ; +mode_setup; +em#:=10pt#; ; desc#:=10/3pt#; ex#:=8pt#; o#:=1/8pt#; +% parameters + +font_normal_space(0.4em#) ; font_x_height(ex#) ; +font_quad(em#) ; font_normal_stretch(0.2em#) ; +font_normal_shrink(0.1em#) ; + +penangle := 30 ; +penwidth# := 1/12em# ; penthickness# := 1/50em# ; +define_pixels(em,desc,ex); +define_blacker_pixels(penwidth,penthickness) ; +tehta_penwidth# = 0.8penwidth# ; +define_blacker_pixels(tehta_penwidth) ; +define_corrected_pixels(o); +straight_sidebar# = 1/12em#; curve_sidebar# = 1/18em#; +define_whole_pixels(straight_sidebar,curve_sidebar) ; + +fudge := 0.05 ex ; % fudge for lowering calma luva +u# := em#/18 ; +define_pixels(u) ; +tailjut# := 12u# - 10u# ; +define_whole_pixels(tailjut) ; +luva_width# = 0.5em# ; define_pixels(luva_width) ; +pickup pencircle xscaled penwidth yscaled penthickness rotated penangle; +main_nib := savepen ; +pickup pencircle xscaled tehta_penwidth yscaled penthickness rotated penangle; +tehta_nib := savepen ; + + + +def draw_stem(suffix i,j)(expr serifs) = % serifs = t,b,tb for Top & Bottom + z.i.$ = z.i + 0.05em * dir(penangle+180) ; + z.i.$$ = z.i + 0.1em * down ; + z.j.$ = z.j + 0.05em * dir(penangle) ; + z.j.$$ = z.j + 0.1em * up ; + draw z.i .. z.j ; + if (serifs = "t") or (serifs = "tb"): + filldraw z.i -- z.i.${dir(penangle-90)} + .. {down}z.i.$$ & z.i.$$ .. z.i & cycle ; fi + if (serifs = "b") or (serifs = "tb"): + filldraw z.j -- z.j.${dir(penangle+90)} + .. {up}z.j.$$ & z.j.$$ .. z.j & cycle ; fi + labels(i,j) + enddef ; + +def diag(suffix i,j) = % diag from i to j with serif at j + draw z.i -- z.j ; + theta := + if x.j > x.i: + if y.j > y.i: penangle - 90 else: penangle fi + else: + if y.j > y.i: -penangle else: penangle + 90 fi fi ; + draw z.j -- (z.j + 0.05em*dir theta) ; +enddef ; + +beginchar("p",10u#,ex#,0) ; "The rune p" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; lft x1 = lft x2 = straight_sidebar ; + draw_stem(1,2,"tb") ; + bot z4 = 0.4[z2,z1] ; + rt x3 = w - curve_sidebar ; y3 = 1/2[y4,y1] ; + draw z1 -- z3 -- z4 ; +endchar ; + +beginchar("b",12u#,ex#,0) ; "The rune b" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; lft x1 = lft x2 = straight_sidebar ; + draw_stem(1,2,"tb") ; + bot z4 = 0.4[z2,z1] ; + rt x3 = w - curve_sidebar - tailjut ; y3 = 1/2[y4,y1] ; + draw z1 -- z3 -- z4 ; + y5 = y2 ; rt x5 = w - curve_sidebar ; + bot y4' = round y4 ; x4 = x4' ; + diag(4',5) ; +endchar ; + +beginchar("f",10u#,ex#,0) ; "The rune f" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; rt x1 = rt x2 = w - straight_sidebar ; + draw_stem(1,2,"b") ; + bot z4 = 0.4[z2,z1] ; + lft x3 = curve_sidebar ; y3 = 1/2[y4,y1] ; + draw z1 -- z3 -- z4 ; +endchar ; + +beginchar("v",12u#,ex#,0) ; "The rune v" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; rt x1 = rt x2 = w - straight_sidebar ; + draw_stem(1,2,"b") ; + bot z4 = 0.45[z2,z1] ; + lft x3 = curve_sidebar+tailjut ; y3 = 1/2[y4,y1] ; + draw z1 -- z3 -- z4 ; + y5 = y2 ; lft x5 = curve_sidebar ; + diag(4,5) ; +endchar ; + +beginchar("W",19u#,ex#,0) ; "The rune hw" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; x1 = x2 = good.x 0.5w ; + draw_stem(1,2,"b") ; + bot z4 = 0.4[z2,z1] ; + rt x3 = w - curve_sidebar ; y3 = 1/2[y4,y1] ; + draw z1 -- z3 -- z4 ; + lft x5 = curve_sidebar ; y5 = y3 ; + draw z1 -- z5 -- z4 ; +endchar ; + +beginchar("m",10u#,ex#,0) ; "The rune m" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; lft x1 = lft x2 = straight_sidebar ; + draw_stem(1,2,"b") ; + top z4 = 0.55[z2,z1] ; + rt x3 = w - curve_sidebar ; y3 = 1/2[y4,y1] ; + draw z1 -- z3 -- z4 ; + y5 = 1/2[y4,y2] ; + rt x5 = w - 1/2curve_sidebar ; + draw z4 -- z5 -- z2 ; +endchar ; + +beginchar("M",10u#,ex#,0); "The rune mb" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; rt x1 = rt x2 = w- straight_sidebar ; + draw_stem(1,2,"b") ; + top z4 = 0.55[z2,z1] ; + lft x3 = curve_sidebar ; y3 = 1/2[y4,y1] ; + draw z1 -- z3 -- z4 ; + y5 = 1/2[y4,y2] ; + lft x5 = 1/2curve_sidebar ; + draw z4 -- z5 -- z2 ; +endchar ; + +beginchar("t",10u#,ex#,0) ; "The rune t" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; lft x1 = lft x2 = straight_sidebar ; + draw_stem(1,2,"tb") ; + rt x3 = w - curve_sidebar ; y3 = .7[y2,y1] ; + diag(1,3) ; +endchar ; + +beginchar("d",10u#,ex#,0) ; "The rune d" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; lft x1 = lft x2 = straight_sidebar ; + draw_stem(1,2,"tb") ; + rt x3 = w - curve_sidebar ; y3 = .7[y2,y1] ; + diag(1,3) ; + x4 = x1 ; x5 = x3 ; bot y4 = round (.5[y1,y2]) ; y4 - y1 = y5 - y3 ; + diag(4,5) ; +endchar ; + +beginchar("T",10u#,ex#,0) ; "The rune th" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; rt x1 = rt x2 = w - straight_sidebar ; + draw_stem(1,2,"b") ; + lft x3 = curve_sidebar ; y3 = .7[y2,y1] ; + diag(1,3) ; +endchar ; + +beginchar("D",10u#,ex#,0) ; "The rune dh" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; rt x1 = rt x2 = w - straight_sidebar ; + draw_stem(1,2,"b") ; + lft x3 = curve_sidebar ; y3 = .7[y2,y1] ; + diag(1,3) ; + x4 = x1 ; x5 = x3 ; bot y4 = round(.5[y1,y2]) ; y4 - y1 = y5 - y3 ; + diag(4,5) ; +endchar ; + +beginchar("n",17u#,ex#,0) ; "The rune n" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; x1 = x2 = good.x .5w ; + draw_stem(1,2,"b") ; + lft x3 = curve_sidebar = w - rt x4 ; y3 = y4 = .7[y2,y1] ; + diag(1,3) ; diag(1,4) ; +endchar ; + +beginchar("c",12u#,ex#,0) ; "The rune ch" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; lft x1 = lft x2 = straight_sidebar ; + bot y3 = .45[y1,y2] ; x3 = x1 ; + rt x4 = w - curve_sidebar ; y4 = y2 ; + draw_stem(1,2,"tb") ; + diag(3,4) ; +endchar ; + +beginchar("j",13u#,ex#,0) ; "The rune j" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; lft x1 = lft x2 = straight_sidebar ; + bot y3 = .4[y1,y2] ; x3 = x1 ; + rt x4 = w - curve_sidebar ; y4 = y2 ; + draw_stem(1,2,"tb") ; + diag(3,4) ; + y5 = .5[y2,y3] ; x5 = x1 ; y6 = y4 ; z6 - z5 = whatever*(z4 - z3) ; + diag(5,6) ; +endchar ; + +beginchar("C",11u#,ex#,0) ; "The rune sh" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; rt x1 = rt x2 = w - straight_sidebar ; + bot y3 = .45[y1,y2] ; x3 = x1 ; + lft x4 = curve_sidebar ; y4 = y2 ; + draw_stem(1,2,"tb") ; + diag(3,4) ; +endchar ; + +beginchar("J",12u#,ex#,0) ; "The rune zh" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; rt x1 = rt x2 = w - straight_sidebar ; + bot y3 = .4[y1,y2] ; x3 = x1 ; + lft x4 = curve_sidebar ; y4 = y2 ; + draw_stem(1,2,"tb") ; + diag(3,4) ; + y5 = .5[y2,y3] ; x5 = x1 ; y6 = y4 ; z6 - z5 = whatever*(z4 - z3) ; + diag(5,6) ; +endchar ; + +beginchar("Y",18u#,ex#,0) ; "The rune nj" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; x1 = x2 = good.x .5w ; + bot y3 = .45[y1,y2] ; x3 = x1 ; + y4 = y5 = y2 ; x4 = curve_sidebar = w - x5 ; + draw_stem(1,2,"tb") ; + diag(3,4) ; diag(3,5) ; +endchar ; + +beginchar("k",11u#,ex#,0) ; "The rune k" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; lft x1 = lft x2 = straight_sidebar ; + top y3 = .55[y1,y2] ; x3 = x1 ; + y4 = y1 ; rt x4 = w - curve_sidebar ; + draw_stem(1,2,"tb") ; + draw z3{dir 35} .. tension 1 .. {dir 80}z4 -- z4 + 0.03em*left ; +endchar ; + +beginchar("g",12u#,ex#,0) ; "The rune g" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; lft x1 = lft x2 = straight_sidebar ; + top y3 = .6[y1,y2] ; x3 = x1 ; + y4 = y1 ; rt x4 = w - curve_sidebar ; + draw_stem(1,2,"tb") ; + draw z3{dir 35} .. tension 1 .. {dir 80}z4 -- z4 + 0.03em*left ; + z5 = .55[z1,z3] ; z6 = .5[z1,z4] ; + draw z5{dir 40} .. tension 2 .. z6 -- z6 + 0.03em*left ; +endchar ; + +beginchar("K",11u#,ex#,0) ; "The rune kh" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; rt x1 = rt x2 = w - straight_sidebar ; + top y3 = .55[y1,y2] ; x3 = x1 ; + y4 = y1 ; lft x4 = curve_sidebar ; + draw_stem(1,2,"tb") ; + draw z3{dir 135} .. tension 1 .. {dir 100}z4 -- z4 + 0.03em*left ; +endchar ; + +beginchar("G",12u#,ex#,0) ; "The rune gh" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; rt x1 = rt x2 = w - straight_sidebar ; + top y3 = .6[y1,y2] ; x3 = x1 ; + y4 = y1 ; lft x4 = curve_sidebar ; + draw_stem(1,2,"tb") ; + draw z3{dir 145} .. tension 1 .. {dir 100}z4 -- z4 + 0.03em*left ; + z5 = .55[z1,z3] ; z6 = .5[z1,z4] ; + draw z5{dir 145} .. tension 1 .. {dir 100}z6 -- z6 + 0.03em*left ; +endchar ; + +beginchar("N",16u#,ex#,0) ; "The rune ng" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; x1 = x2 = good.x .5w ; + top y3 = .55[y1,y2] ; x3 = x1 ; + y4 = y1 ; lft x4 = curve_sidebar ; + draw_stem(1,2,"tb") ; + draw z3{dir 145} .. tension 1 .. {dir 100}z4 -- z4 + 0.03em*left ; + y5 = y4 ; x5 = w - x4 ; + draw z3{dir 35} .. tension 1 .. {dir 80}z5 -- z5 + 0.03em*left ; +endchar ; + +beginchar(43,13u#,ex#,0) ; "The rune kw" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; lft x1 = lft x2 = straight_sidebar ; + draw_stem(1,2,"tb") ; + rt x4 = w - curve_sidebar ; x3 = .5[x1,x4] ; y4 = y1 ; y3 = .7[y2,y1] ; + draw z1 -- z3 ; diag(3,4) ; +endchar ; + +beginchar(39,13u#,ex#,0) ; "The rune gw" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; lft x1 = lft x2 = straight_sidebar ; + draw_stem(1,2,"tb") ; + rt x4 = w - curve_sidebar ; x3 = .5[x1,x4] ; y4 = y1 ; y3 = .7[y2,y1] ; + draw z1 -- z3 ; diag(3,4) ; + x5 = x1 ; top y5 = .6[y2,y1] ; z5 - z1 = z6 - z3 = z7 - z4 ; + draw z5 -- z6 ; diag(6,7) ; +endchar ; + +beginchar(11,13u#,ex#,0) ; "The rune khw" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; rt x1 = rt x2 = w - straight_sidebar ; + draw_stem(1,2,"b") ; + lft x4 = curve_sidebar ; x3 = .5[x1,x4] ; y4 = y1 ; y3 = .7[y2,y1] ; + draw z1 -- z3 ; diag(3,4) ; +endchar ; + +beginchar(7,13u#,ex#,0) ; "The rune ghw" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; rt x1 = rt x2 = w - straight_sidebar ; + draw_stem(1,2,"b") ; + lft x4 = curve_sidebar ; x3 = .5[x1,x4] ; y4 = y1 ; y3 = .7[y2,y1] ; + draw z1 -- z3 ; diag(3,4) ; + x5 = x1 ; top y5 = .6[y2,y1] ; z5 - z1 = z6 - z3 = z7 - z4 ; + draw z5 -- z6 ; diag(6,7) ; +endchar ; + +beginchar(14,22u#,ex#,0) ; "The rune ngw" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; x1 = x2 = good.x .5w ; + draw_stem(1,2,"b") ; + lft x4 = curve_sidebar ; x3 = .5[x1,x4] ; y4 = y1 ; y3 = .7[y2,y1] ; + draw z1 -- z3 ; diag(3,4) ; + x6 = w - x4 ; y6 = y4 ; y5 = y3 ; x5 = w - x3 ; + draw z1 -- z5 ; diag(5,6) ; +endchar ; + +beginchar(46,13u#,ex#,0) ; "The rune nw" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; lft x1 = lft x2 = straight_sidebar ; + draw_stem(1,2,"") ; + rt x4 = w - curve_sidebar ; x3 = .5[x1,x4] ; y4 = y1 ; y3 = .7[y2,y1] ; + draw z1 -- z3 ; diag(3,4) ; + x6 = x4 ; y6 = h - y4 ; y5 = h - y3 ; rt x5 = round x3 ; + draw z2 -- z5 ; diag(5,6) ; +endchar ; + +beginchar("r",10u#,ex#,0) ; "The rune r" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; lft x1 = lft x2 = straight_sidebar ; + y3 = .5[y1,y2] ; x3 = x1 ; + y4 = y1 ; rt x4 = w - curve_sidebar ; + draw_stem(1,2,"tb") ; + draw z3{dir 45} .. tension 2 .. {dir 80}z4 -- z4 + 0.03em*left ; + y5 = y2 ; x5 = x4 ; + draw z3{dir -20} .. z5{dir -80} ; +endchar ; + +beginchar("R",10u#,ex#,0) ; "The rune rh" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; rt x1 = rt x2 = w - straight_sidebar ; + y3 = .5[y1,y2] ; x3 = x1 ; + y4 = y1 ; lft x4 = curve_sidebar ; + draw_stem(1,2,"tb") ; + draw z3{dir 135} .. tension 2 .. {dir 100}z4 -- z4 + 0.03em*left ; + y5 = y2 ; x5 = x4 ; + draw z3{dir 200} .. z5{dir -100} ; +endchar ; + +beginchar("l",12u#,ex#,0) ; "The rune l" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; x1 = x2 = good.x .5w ; + top y3 = round .85h ; rt x3 = w - curve_sidebar ; + x4 = w - x3 ; y4 = h - y3 ; + draw_stem(1,2,"tb") ; + draw z3{dir -100} .. {dir -100}z4 .. z4 + 0.03em*dir -70 ; +endchar ; + +beginchar("L",12u#,ex#,0) ; "The rune lh" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; x1 = x2 = good.x .5w ; + top y3 = round .85h ; lft x3 = curve_sidebar ; + x4 = w - x3 ; y4 = h - y3 ; + draw_stem(1,2,"tb") ; + draw z3 + 0.03em*dir70 .. z3{dir -80} .. {dir -100}z4 .. z4 + 0.03em*dir -110 ; +endchar ; + +beginchar(1,12u#,ex#,0) ; "The rune ng--nd" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; x1 = x2 = good.x .5w ; + top y3 = round .85h ; lft x3 = curve_sidebar ; + x4 = w - x3 ; y4 = h - y3 ; + draw_stem(1,2,"tb") ; + draw z3 + 0.03em*dir70 .. z3{dir -80} .. {dir -100}z4 .. z4 + 0.03em*dir -110 ; + top y5 = round .85h ; rt x5 = w - curve_sidebar ; + x6 = w - x5 ; y6 = h - y5 ; + draw z5{dir -100} .. {dir -100}z6 .. z6 + 0.03em*dir -70 ; +endchar ; + +beginchar("s",10u#,ex#,0) ; "The rune s" ; + pickup main_nib ; + lft x1 = lft x3 = curve_sidebar = w - rt x2 ; + top y1 = h = h - bot y3 ; y2 = .5[y1,y3] ; + diag(2,1) ; diag(2,3) ; +endchar ; + +beginchar("S",10u#,ex#,0) ; "The rune s---variant" ; + pickup main_nib ; + rt x1 = rt x3 = w - curve_sidebar = w - lft x2 ; + top y1 = h = h - bot y3 ; y2 = .5[y1,y3] ; + diag(2,1) ; diag(2,3) ; +endchar ; + +beginchar("z",14u#,ex#,0) ; "The rune z" ; + pickup main_nib ; + lft x1 = curve_sidebar = w - rt x2 = w - rt x4 = lft x3 ; + top y1 = top y2 = h = h - bot y3 = h - bot y4 ; + z5 = .5[z1,z4] ; + diag(5,1) ; diag(5,2) ; diag(5,3) ; diag(5,4) ; +endchar ; + +beginchar(2,14u#,ex#,0) ; "The rune ng---variant" ; + pickup main_nib ; + lft x1 = curve_sidebar = w - rt x2 = w - rt x4 = lft x3 ; + top y1 = top y2 = h = h - bot y3 = h - bot y4 ; + z5 = .5[z1,z4] ; + diag(5,1) ; diag(5,2) ; diag(5,3) ; diag(5,4) ; + x1' = x4' = x5 ; y2' = y3' = y5 ; + top y1' = round .85h = h - bot y4' ; + z2' - z1' = z4' - z3' = whatever*(z4 - z1) ; + draw z1' -- z2' -- z4' -- z3' -- cycle ; +endchar ; + +beginchar(3,15u#,ex#,0) ; "The rune nd" ; + pickup main_nib ; + lft x1 = lft x3 = w - rt x2 = w - rt x4 = straight_sidebar ; + top y1 = top y2 = h - bot y3 = h - bot y4 = h ; + draw z1 -- z4 -- z2 -- z3 -- cycle ; +endchar ; + +beginchar(4,14u#,ex#,0) ; "The rune nd---variant" ; + pickup main_nib ; + lft x1 = lft x3 = w - rt x2 = w - rt x4 = straight_sidebar ; + top y1 = top y2 = h - bot y3 = h - bot y4 = h ; + draw_stem(1,3,"b") ; draw_stem(2,4,"b") ; + x5 = x1 ; x6 = x2 ; y5 = y6 = .45[y1,y3] ; + draw z1 -- z6 ; draw z2 -- z5 ; +endchar ; + +beginchar("i",4u#,ex#,0) ; "The rune i" ; + pickup main_nib ; + x1 = x2 = good.x .5w ; + top y1 = h ; bot y2 = 0 ; + draw_stem(1,2,"tb") ; +endchar ; + +beginchar("y", 9u#,ex#,0) ; "The rune y" ; + pickup main_nib ; + lft x1 = lft x2 = straight_sidebar = w - rt x3 = w - rt x4 ; + top y1 = h ; bot y4 = 0 ; + y2 = good.y .25h ; y3 = good.y .75h ; + draw_stem(1,2,"t") ; draw_stem(3,4,"b") ; draw z2 -- z3 ; +endchar ; + +beginchar("H", 9u#,ex#,0) ; "The rune y" ; + pickup main_nib ; + lft x1 = lft x2 = straight_sidebar = w - rt x3 = w - rt x4 ; + bot y1 = 0 ; top y4 = h ; + y2 = good.y .75h ; y3 = good.y .25h ; + draw_stem(2,1,"b") ; draw_stem(4,3,"t") ; draw z2 -- z3 ; +endchar ; + +beginchar("u",14u#,ex#,0) ; "The rune u" ; + pickup main_nib ; + lft x4 = curve_sidebar = w - rt x2 ; + x3 = good.x .5w ; + x1 = good.x .3[x4,x3] = w - x5 ; + top y3 = h ; + bot y1 = bot y5 = 0 ; + y2 = y4 = good.y .6h ; + diag(2,1) ; diag(4,5) ; draw z2 -- z3 -- z4 ; +endchar ; + +beginchar("U",10u#,ex#,0) ; "The rune long u" ; + pickup main_nib ; + lft x1 = lft x3 = curve_sidebar = w - rt x2 ; + top y1 = h = h - bot y3 ; y2 = .5[y1,y3] ; + diag(2,1) ; diag(2,3) ; + x5 = x1 ; y5 = y2 ; x4 = x6 = x2 ; y4 = y1 ; y6 = y3 ; + diag(5,4) ; diag(5,6) ; +endchar ; + +beginchar("w",12u#,ex#,0) ; "The rune w" ; + pickup main_nib ; + lft x1 = curve_sidebar = w - rt x3 ; + x2 = x4 = x5 = good.x .5w ; + top y2 = h ; bot y5 = 0 ; y4 = good.y .35h ; y1 = y3 = .5[y2,y4] ; + draw_stem(4,5,"b") ; draw z1 -- z2 -- z3 -- z4 -- cycle ; +endchar ; + +beginchar(21,12u#,ex#,0) ; "The rune ue" ; + pickup main_nib ; + lft x4 = curve_sidebar = w - rt x2 ; + x3 = good.x .5w ; + x1 = good.x .3[x4,x3] = w - x5 ; + top y3 = h ; + y1 = y5 = good.y .3h ; + y2 = y4 = good.y .6[y1,y3] ; + diag(2,1) ; diag(4,5) ; draw z2 -- z3 -- z4 ; + z6 = (z2 -- z1) intersectionpoint (z4--z5) ; + x7 = x6 ; bot y7 = 0 ; draw_stem(6,7,"b") ; +endchar ; + +beginchar(53,12u#,ex#,0) ; "The rune ue---variant" ; + pickup main_nib ; + lft x4 = curve_sidebar = w - rt x2 ; + x3 = good.x .5w ; + x1 = good.x .3[x4,x3] = w - x5 ; + top y3 = h ; + y1 = y5 = good.y .3h ; + y2 = y4 = good.y .6[y1,y3] ; + diag(2,1) ; diag(4,5) ; draw z2 -- z3 -- z4 ; + z6 = (z2 -- z1) intersectionpoint (z4--z5) ; + x7 = x6 ; bot y7 = 0 ; draw_stem(3,7,"b") ; +endchar ; + +beginchar("e",10u#,ex#,0) ; "The rune e" ; + pickup main_nib ; + lft x1 = lft x2 = straight_sidebar = w - rt x3 = w - rt x4 ; + top y1 = top y3 = h ; bot y2 = bot y4 = 0 ; + draw_stem(1,2,"tb") ; draw_stem(3,4,"tb") ; + x5 = x1 ; x6 = x3 ; .5[y5,y6] = vround .52h ; + top y5 = vround .67h ; draw z5 -- z6 ; +endchar ; + +beginchar("E",10u#,ex#,0) ; "The rune long e" ; + pickup main_nib ; + lft x1 = lft x2 = straight_sidebar = w - rt x3 = w - rt x4 ; + top y1 = top y3 = h ; bot y2 = bot y4 = 0 ; + draw_stem(1,2,"tb") ; draw_stem(3,4,"tb") ; + x5 = x7 = x1 ; x6 = x8 = x3 ; .5[y5,y8] = vround .52h ; + top y5 = vround .8h ; + top y6 = vround .67h ; y7 - y8 = y5 - y6 ; + draw z5 -- z6 ; draw z7 -- z8 ; +endchar ; + +beginchar("a",10u#,ex#,0) ; "The rune a" ; + pickup main_nib ; + lft x1 = lft x2 = straight_sidebar = w - rt x3 = w - rt x4 ; + top y1 = h ; top y3 = vround .75h ; bot y2 = bot y4 = 0 ; + draw_stem(1,2,"b") ; draw_stem(3,4,"b") ; + draw z1 -- z3 ; +endchar ; + +beginchar("A",10u#,ex#,0) ; "The rune long a" ; + pickup main_nib ; + lft x1 = lft x2 = straight_sidebar = w - rt x3 = w - rt x4 ; + top y1 = h ; top y3 = vround .75h ; bot y2 = bot y4 = 0 ; + draw_stem(1,2,"b") ; draw_stem(3,4,"b") ; + draw z1 -- z3 ; + x5 = x1 ; x6 = x3 ; y5 = vround .6h ; y5 - y6 = y1 - y3 ; + draw z5 -- z6 ; +endchar ; + +beginchar("o",12u#,ex#,0) ; "The rune o" ; + pickup main_nib ; + lft x1 = curve_sidebar = w - rt x3 ; x2 = good.x .5w ; + bot y1 = bot y3 = 0 ; top y2 = h ; + diag(2,3) ; diag(2,1) ; +endchar ; + +beginchar("O",16u#,ex#,0) ; "The rune long o" ; + pickup main_nib ; + lft x1 = curve_sidebar = w - rt x6 ; + rt x3 = hround .7w = w - lft x4 ; + x2 = good.x .5[x1,x3] ; x5 = good.x .5[x4,x6] ; + top y2 = top y5 = h ; + bot y1 = 0 ; y1 = y3 = y4 = y6 ; + diag(2,1) ; diag(2,3) ; diag(5,4) ; diag(5,6) ; +endchar ; + +beginchar(15,15u#,ex#,0) ; "The rune long o---variant" ; + pickup main_nib ; + lft x1 = lft x2 = straight_sidebar = w - rt x4 = w - rt x5 ; + x3 = good.x .5[x1,x4] ; + top y1 = top y4 = h ; bot y2 = bot y5 = 0 = bot y3 ; + draw_stem(1,2,"b") ; draw_stem(4,5,"b") ; draw z1 -- z3 -- z4 ; +endchar ; + +beginchar(47,12u#,ex#,0) ; "The rune oe" ; + pickup main_nib ; + lft x1 = curve_sidebar = w - rt x3 ; x2 = good.x .5w ; + bot y1 = bot y3 = 0 ; top y2 = h ; + diag(2,3) ; diag(2,1) ; + x4 = x2 ; y4 = y1 ; draw_stem(2,4,"b") ; +endchar ; + +beginchar("0",12u#,ex#,0) ; "The rune oe---variant" ; + pickup main_nib ; + lft x1 = curve_sidebar = w - rt x3 ; x2 = good.x .5w ; + bot y1 = bot y3 = 0 ; top y2 = h ; + diag(2,3) ; diag(2,1) ; + x4 = x2 = x5 ; top y4 = vround .4h ; y5 = y1 ; draw z4 -- z5 ; +endchar ; + +beginchar(5,12u#,ex#,0) ; "The rune n---another one" ; + pickup main_nib ; + lft x1 = curve_sidebar = w - rt x3 ; + x2 = x4 = good.x .5w ; + top y1 = top y3 = h ; bot y4 = 0 ; y2 = good.y .45h ; + draw_stem(2,4,"b") ; diag(1,2) ; diag(2,3) ; +endchar ; + +beginchar("h",12u#,ex#,0) ; "The rune h" ; + pickup main_nib ; + lft x1 = curve_sidebar = w - rt x3 ; + x2 = x4 = good.x .5w ; + bot y1 = bot y3 = 0 ; top y4 = h ; y2 = good.y .55h ; + draw_stem(4,2,"t") ; diag(1,2) ; diag(2,3) ; +endchar ; + +beginchar(6,8u#,ex#,0) ; "The cup rune" ; + pickup main_nib ; + lft x1 = lft x2 = lft x3 = straight_sidebar ; rt x4 = w - curve_sidebar ; + top y1 = h ; bot y2 = 0 ; .5[y3,y4] = vround .52h ; top y3 = vround .7h ; + draw_stem(1,2,"tb") ; diag(3,4) ; +endchar ; + +beginchar(8,8u#,ex#,0) ; "The evanescent cup rune" ; + pickup main_nib ; + lft x3 = curve_sidebar ; rt x4 = w - curve_sidebar ; + .5[y3,y4] = vround .52h ; top y3 = vround .7h ; + diag(3,4) ; diag(4,3) ; +endchar ; + +beginchar(9,8u#,ex#,0) ; "The schwa rune" ; + pickup main_nib ; + rt x1 = rt x2 = rt x3 = w - straight_sidebar ; lft x4 = curve_sidebar ; + top y1 = h ; bot y2 = 0 ; .5[y3,y4] = vround .52h ; top y3 = vround .7h ; + draw_stem(1,2,"tb") ; diag(3,4) ; +endchar ; + +beginchar(10,8u#,ex#,0) ; "The evanescent schwa rune" ; + pickup main_nib ; + rt x3 = w - curve_sidebar ; lft x4 = curve_sidebar ; + .5[y3,y4] = vround .52h ; top y3 = vround .7h ; + diag(3,4) ; diag(4,3) ; +endchar ; + +beginchar(16,10u#,ex#,0) ; "The rune ps" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; lft x1 = lft x2 = straight_sidebar ; + draw_stem(1,2,"tb") ; + bot y4 = vround 0.2[y2,y1] ; top y5 = vround .8[y2,y1] ; + x4 = x1 ; x5 = x2 ; + rt x3 = w - curve_sidebar ; y3 = 1/2[y4,y5] ; + draw z5 -- z3 -- z4 ; +endchar ; + +beginchar(20,10u#,ex#,0) ; "The rune ts" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; rt x1 = rt x2 = w - straight_sidebar ; + draw_stem(1,2,"tb") ; + bot y4 = vround 0.2[y2,y1] ; top y5 = vround .8[y2,y1] ; + x4 = x5 = x1 ; + lft x3 = curve_sidebar ; y3 = 1/2[y4,y5] ; + draw z5 -- z3 -- z4 ; +endchar ; + +beginchar(12,4u#,ex#,0) ; "The aspiration rune" ; + pickup main_nib ; + x1 = x2 = good.x .5w ; + bot y2 = vround .3h ; top y1 = vround .75h ; + draw_stem(1,2,"tb") ; +endchar ; + +beginchar("&",8u#,ex#,0) ; "The ampersand rune" ; + pickup main_nib ; + x1 = x2 = good.x .5w ; lft x3 = curve_sidebar = w - rt x4 ; + top y1 = h ; bot y2 = 0 ; + bot y3 = vround .7h = h - top y4 ; + draw_stem(1,2,"") ; diag(1,3) ; diag(2,4) ; +endchar ; + +beginchar(18,11u#,ex#,0) ; "The OE rune wyn" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; lft x1 = lft x2 = straight_sidebar ; + top y3 = .55[y1,y2] ; x3 = x1 ; + y4 = y1 ; rt x4 = w - curve_sidebar ; + draw_stem(1,2,"tb") ; + draw z3 -- z4 -- z1 ; +endchar ; + +beginchar(19,15u#,ex#,0) ; "The OE rune daeg---variant" ; + pickup main_nib ; + lft x1 = lft x3 = w - rt x2 = w - rt x4 = straight_sidebar ; + top y1 = top y2 = h - bot y3 = h - bot y4 = h ; + draw z1 -- z4 -- z2 -- z3 -- cycle ; draw z1 -- z2 ; draw z3 -- z4 ; +endchar ; + +beginchar(22,13u#,ex#,0) ; "The OE rune ac" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; lft x1 = lft x2 = straight_sidebar ; + draw_stem(1,2,"tb") ; + rt x4 = w - curve_sidebar ; x3 = .5[x1,x4] ; y4 = y1 ; y3 = .7[y2,y1] ; + draw z1 -- z3 ; diag(3,4) ; + x5 = x1 ; top y5 = .6[y2,y1] ; z5 - z1 = z6 - z3 = z7 - z4 ; + diag(5,6) ; +endchar ; + +beginchar(23,14u#,ex#,0) ; "The OE rune yr" ; + pickup main_nib ; + lft x1 = lft x2 = straight_sidebar = w - rt x3 = w - rt x4 ; + top y1 = h ; top y3 = vround .75h ; bot y2 = bot y4 = 0 ; + draw_stem(1,2,"b") ; draw_stem(3,4,"b") ; + draw z1 -- z3 ; + x5 = x1 ; x6 = x3 ; y5 = vround .6h ; y5 - y6 = y1 - y3 ; + draw z5 -- z6 ; + z7 = .5[z5,z6] ; x7 := good.x x7 ; x8 = x7 ; y8 = y2 ; draw_stem(7,8,"b") ; +endchar ; + +beginchar(24,13u#,ex#,0) ; "The OE rune calc" ; + pickup main_nib ; + lft x1 = lft x2 = straight_sidebar ; top y1 = h ; bot y2 = 0 ; + draw_stem(1,2,"tb") ; + .5[y3,y4] = vround .52h ; bot y3 = vround .4h ; + x3 = x1 ; + rt x5 = w - curve_sidebar ; y5 = y2 ; x4 = .5[x3,x5] ; + draw z3 -- z4 ; diag(4,5) ; +endchar ; + +beginchar(25,12u#,ex#,0) ; "The OE rune feoh" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; lft x1 = lft x2 = straight_sidebar ; + top y3 = .6[y1,y2] ; x3 = x1 ; + y4 = y1 ; rt x4 = w - curve_sidebar ; + draw_stem(1,2,"tb") ; + diag(3,4) ; + z5 = .55[z1,z3] ; z6 = .5[z1,z4] ; + diag(5,6) ; +endchar ; + +beginchar(26,14u#,ex#,0) ; "The Ereborian rune ai" ; + pickup main_nib ; + lft x1 = lft x2 = straight_sidebar = w - rt x3 = w - rt x4 ; + top y1 = h ; top y3 = vround .75h ; bot y2 = bot y4 = 0 ; + draw_stem(1,2,"b") ; draw_stem(3,4,"b") ; + draw z1 -- z3 ; + x5 = x1 ; x6 = x3 ; y5 = vround .6h ; y5 - y6 = y1 - y3 ; + z7 = .5[z5,z6] ; x7 := good.x x7 ; x8 = x7 ; y8 = y2 ; draw_stem(7,8,"tb") ; +endchar ; + +beginchar(27,14u#,ex#,0) ; "The Ereborian ea rune" ; + pickup main_nib ; + lft x1 = lft x2 = straight_sidebar = w - rt x3 = w - rt x4 ; + bot y2 = bot y4 = 0 ; y1 = y3 = good.y .5h ; + draw_stem(1,2,"b") ; draw_stem(3,4,"b") ; + x5 = good.x .5w ; top y5 = h ; x6 = x5 ; y6 = y2 ; + draw z1 -- z5 -- z3 ; draw_stem(5,6,"b") ; +endchar ; + +beginchar(28,13u#,ex#,0) ; "The Ereborian ew rune" ; + pickup main_nib ; + lft x1 = lft x3 = w - rt x2 = w - rt x4 = straight_sidebar ; + top y1 = top y2 = h - bot y3 = h - bot y4 = h ; + draw_stem(1,3,"b") ; draw_stem(2,4,"b") ; + x5 = x7 = x1 ; x6 = x8 = x2 ; y5 = y6 = .75[y1,y3] = h - y7 = h - y8 ; + draw z5 -- z8 ; draw z7 -- z6 ; +endchar ; + +beginchar(29,16u#,ex#,0) ; "The rune number 4" ; + pickup main_nib ; + lft x1 = curve_sidebar = w - rt x6 ; + rt x3 = hround .7w = w - lft x4 ; + x2 = good.x .5[x1,x3] ; x5 = good.x .5[x4,x6] ; + bot y2 = bot y5 = 0 ; + top y1 = h ; y1 = y3 = y4 = y6 ; + diag(2,1) ; diag(2,3) ; diag(5,4) ; diag(5,6) ; +endchar ; + +beginchar(30,16u#,ex#,0) ; "The rune number 5" ; + pickup main_nib ; + top y1 = h ; bot y2 = 0 ; x1 = x2 = good.x .5w ; + top y3 = .55[y1,y2] ; x3 = x1 ; + y4 = y1 ; lft x4 = curve_sidebar ; + draw_stem(1,2,"tb") ; + diag(3,4) ; + y5 = y4 ; x5 = w - x4 ; + diag(3,5) ; +endchar ; + +end. diff --git a/Master/texmf-dist/fonts/source/public/elvish/teng10.mf b/Master/texmf-dist/fonts/source/public/elvish/teng10.mf new file mode 100644 index 00000000000..2ccf66bfee8 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/elvish/teng10.mf @@ -0,0 +1,31 @@ +designsize:=10pt#; +% parameter settings +em#:=10pt#; asc#:=8pt#; desc#:=10/3pt#; ex#:=14/3pt#; o#:=1/8pt#; +% parameters +tp_bow_stem_y = 0.55 ; +cq_bow_stem_y = 0.45 ; +tc_bow_arch_x = 0.55 ; % new value for experimental defn of luva +pq_bow_arch_x = 0.5 ; +tc_bow_side_y = 0.4 ; +pq_bow_side_y = 0.5 ; +tc_bow_end_x = 0.5 ; +pq_bow_end_x = 0.6 ; +tinco_fudge = 0 ; % for raising the top of tinco at low resolution; + +font_normal_space(0.4em#) ; font_x_height(ex#) ; +font_quad(em#) ; font_normal_stretch(0.2em#) ; +font_normal_shrink(0.1em#) ; + +penangle := 40 ; +penwidth# := 1/9em# ; penthickness# := 1/70em# ; +tehta_penwidth# = 0.8penwidth# ; +straight_sidebar# = 1/12em#; curve_sidebar# = 1/18em#; +fudge# := 0.05 ex# ; % fudge for lowering calma luva +tinco_width# := 0.70em# ; +parma_width# := 0.72em# ; +romen_width# = 0.60em# ; +luva_width# = 0.5em# ; + +% now make the font +input tengmacs;input tengmain;input tengsecs; +input tengteht; input tengdev ; diff --git a/Master/texmf-dist/fonts/source/public/elvish/tengdev.mf b/Master/texmf-dist/fonts/source/public/elvish/tengdev.mf new file mode 100644 index 00000000000..c1b2d56e7f8 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/elvish/tengdev.mf @@ -0,0 +1,350 @@ + + def draw_refl_luva(suffix i,j,k,l) + (expr luva_type,bow_stem_y,bow_arch_x, + bow_side_y,bow_end_x) = + y.i = bow_stem_y * ex ; + x.j - x.i = bow_arch_x * (x.k - x.i) ; + y.k = (if (luva_type = "calma") or (luva_type = "quesse"): 1 - fi bow_side_y) * ex ; + x.l - x.i = bow_end_x * (x.k - x.i) ; + numeric x.luva_serif,y.luva_serif ; + z.luva_serif = z.l + 0.03em * + if luva_type = "tinco": dir 135 else: dir 315 fi ; + + path luva_path ; + luva_path = z.i{dir( if (luva_type = "tinco") or (luva_type = "parma"): + 180-penangle else: -penangle fi)} + .. z.j{if (luva_type = "tinco") or (luva_type = "parma"): + left else: right fi} + .. z.k .. + if (luva_type = "parma") or (luva_type = "quesse"): {curl 0.3}z.l + else: z.l .. {curl 2}z.luva_serif fi ; + draw luva_path ; + labels(i,j,k,l) + enddef ; + +def draw_refl_parma_luva(suffix i,j,k,l) = + % this draws a complete reflected parma luva + rt x.i = w - straight_sidebar ; % intersection with stem + top y.j = round(ex + o) ; % top + lft x.k = round (x.i - luva_width) ; % right + y.l = 0 ;% bottom + draw_refl_luva(i,j,k,l)("parma",tp_bow_stem_y, + pq_bow_arch_x, + pq_bow_side_y, + pq_bow_end_x ) + enddef ; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +beginchar("0",.8tinco_width#,ex#,0); "The tengwa number zero"; + pickup main_nib ; + lft x1 = curve_sidebar = w - rt x3 ; x2 = .5[x1,x3 ] ; + x4 = .2w ; + top y2 = h ; + y1 = .7h ; y3 = .55h ; y4 = 0 ; + z1' = z1 + .03em*dir(penangle-90) ; + draw z1'{dir(penangle+90)} .. z1 .. z2{right} .. z3{down} .. z4 ; +endchar ; + +beginchar("1",.9tinco_width#,ex#,0) ; "The tengwa number one" ; + pickup main_nib ; + lft x1 = straight_sidebar = w - rt x2 ; top y1 = h = top y2 ; + draw_bar(1,2,"r") ; + x3 = x1 ; y3 = .4h = y5 ; + x4 = .4w ; bot y4 = 0 - o ; + rt x5 = .75w ; + z5' = z5 + 0.05em*dir140 ; + draw_telco(1,3,"t") ; + draw z3{down} .. z4{right} .. z5 %%%.. z5' ; +endchar ; + +beginchar("2",1.4tinco_width#,ex#,0) ; "The tengwa number two" ; + pickup main_nib ; + lft x1 = straight_sidebar = w - rt x3 ; top y1 = top y2 = top y3 = h ; + draw_bar(1,3,"r") ; + rt x2 = round(.9*.75tinco_width) ; x2 = x6 ; + y4 = y6 = y8 = .4h ; + bot y5 = bot y7 = 0 ; + x8 - x6 = x6 - x4 ; + x5 = .4*.9tinco_width ; x4 = x1 ; + x5 - x4 = x7 - x6 ; + z8' = z8 + 0.05em*dir140 ; + draw_telco(1,4,"t") ; draw z2 -- z6 ; + draw z4{down} .. z5{right} .. z6 ; + draw z6{down} .. z7{right} .. z8 %%%.. z8' ; +endchar ; + +beginchar("3",1.9tinco_width#,ex#,0) ; "The tengwa number three" ; + pickup main_nib ; + lft x1 = straight_sidebar = w - rt x3 ; + top y1 = top y2 = top y2' = top y3 = h ; + draw_bar(1,3,"r") ; + rt x2 = round(.9*.75tinco_width) ; x2 = x6 ; + x2' = x8 ; + y4 = y6 = y8 = y10 = .4h ; + bot y5 = bot y7 = bot y9 = 0 ; + x8 - x6 = x6 - x4 = x10 - x8 ; + x5 = .4*.9tinco_width ; x4 = x1 ; + x5 - x4 = x7 - x6 = x9 - x8 ; + z10' = z10 + 0.05em*dir140 ; + draw_telco(1,4,"t") ; draw z2 -- z6 ; draw z2' -- z8 ; + draw z4{down} .. z5{right} .. z6 ; + draw z6{down} .. z7{right} .. z8 ; + draw z8{down} .. z9{right} .. z10 %%%.. z10' ; +endchar ; + +beginchar("4",.9tinco_width#,asc#,desc#) ; "The tengwa number four" ; + pickup main_nib ; + lft x1 = straight_sidebar = w - rt x2 ; top y1 = round ex = top y2 ; + x1' = x1 ; top y1' = h ; + %%draw_bar(1,2,"r") ; + x3 = x1 ; top y3 = 0 = y5 ; + x4 = .4w ; bot y4 = vround(-.7d-o) ; + rt x5 = .85w ; + z5' = z5 + 0.05em*dir140 ; + draw_telco(1',3,"t") ; + draw z3{down} .. z4{right} .. z5 %%%%.. z5' ; +endchar ; + +beginchar("5",1.4tinco_width#,asc#,desc#) ; "The tengwa number five" ; + pickup main_nib ; + lft x1 = straight_sidebar = w - rt x3 ; + x1' = x1 ; top y1' = h ; + top y1 = top y2 = top y3 = round ex ; + draw_bar(1,3,"r") ; + rt x2 = round(.9*.75tinco_width) ; x2 = x6 ; + top y4 = -.1d ; y6 = y8 = .4ex ; + bot y5 = vround(-.7d-o) ; bot y7 = 0 ; + x8 - x6 = x6 - x4 ; + x5 = .4*.9tinco_width ; x4 = x1 ; + x5 - x4 = x7 - x6 ; x5' = .5[x4,x7] ; y5' = y5 ; + z8' = z8 + 0.05em*dir140 ; + draw_telco(1',4,"t") ; draw z2 -- z6 ; + draw z4{down} .. z5'{right} ... z7 ; + draw z6{down} .. z7{right} .. z8 %%%.. z8' ; +endchar ; + +beginchar("6",1.9tinco_width#,asc#,desc#) ; "The tengwa number six" ; + pickup main_nib ; + lft x1 = straight_sidebar = w - rt x3 ; + x1' = x1 ; top y1' = h ; + top y1 = top y2 = top y3 = round ex ; + draw_bar(1,3,"r") ; + rt x2 = round(.9*.75tinco_width) ; x2 = x6 ; + x2' - x2 = x2 - x1 ; y2' = y2 ; + top y4 = -.1d ; y6 = y8 = y10 = .4ex ; + bot y5 = vround(-.7d-o) ; bot y7 = bot y9 = 0 ; + x8 - x6 = x6 - x4 = x10 - x8 ; + x5 = .4*.9tinco_width ; x4 = x1 ; + x5 - x4 = x7 - x6 = x9 - x8 ; x5' = .5[x4,x7] ; y5' = y5 ; + z8' = z8 + 0.05em*dir140 ; + draw_telco(1',4,"t") ; draw z2 -- z6 ; draw z2' -- z8 ; + draw z4{down} .. z5'{right} ... z7 ; + draw z6{down} .. z7{right} .. z8 ; %%%.. z8' ; + draw z8{down} .. z9{right} .. z10 ; +endchar ; + +beginchar("7",.9parma_width#,ex#,desc#); "The tengwa number 7"; + pickup main_nib ; + lft x1 = straight_sidebar ; + x5 = x1+hround(.6parma_width) ; top y5 = asc ; % top of stem + x6 = x5 ; y6 = 0 ; % bottom of stem + draw_telco(5,6)("t") ; + lft x9 = curve_sidebar ; top y9 = -.3d ; + x10 = .5[x6,x9] ; bot y10 = vround(-d-o) ; + x6' = x6 ; y6' = -.3d ; + draw z6 .. z6'{down} .. z10{left} .. z9 ; + endchar ; + + +def draw_number_luva(suffix i,j,k,l) = + % this draws a complete number luva + lft x.i = hround(.6parma_width) + straight_sidebar ; % intersection with stem + top y.j = round(ex + o) ; % top + rt x.k = round (x.i + luva_width) ; % right + y.l = 0 ;% bottom + draw_luva(i,j,k,l)("parma",tp_bow_stem_y, + pq_bow_arch_x, + pq_bow_side_y, + pq_bow_end_x ) + enddef ; + +beginchar("8",1.6parma_width#,ex#,desc#); "The tengwa number 8"; + pickup main_nib ; + draw_number_luva(1,2,3,4) ; + x5 = x1 ; top y5 = asc ; % top of stem + x6 = x5 ; y6 = 0 ; % bottom of stem + draw_telco(5,6)("t") ; + x7 = x5 ; y7 = good.y o = y8 ; x8 = x3 + 0.05em ; % N.B. praps bot y7 = bot y8 = 0 + draw_bar(7,8)("r") ; + lft x9 = curve_sidebar ; top y9 = -.1d ; + x10 = .5[x5,x9] ; bot y10 = vround(-d-o) ; + x6' = x6 ; y6' = -.3d ; + draw z6 .. z6'{down} .. z10{left} .. z9 ; + endchar ; + +def draw_double_number_luva(suffix i,j,k,l,ii,jj,kk,ll) = + % this draws a complete umbar luva + % first bow + lft x.i = hround(.6parma_width)+straight_sidebar ; % intersection with stem + top y.j = round(ex + o) ; % top + rt x.k = round (x.i + luva_width) ; % right + y.l = 0 ;% bottom + draw_luva(i,j,k,l)("parma",tp_bow_stem_y, + pq_bow_arch_x, + pq_bow_side_y, + pq_bow_end_x ) ; + %second bow + z.second = ( (x.i+pt,y.i) .. (infinity,y.i) ) intersectionpoint luva_path ; + x.ii = good.x (xpart z.second) ; + y.jj = y.j ; + rt x.kk = round (x.ii + luva_width) ; % right + y.ll = y.l ; + draw_luva(ii,jj,kk,ll)("parma",tp_bow_stem_y, + pq_bow_arch_x, + pq_bow_side_y, + pq_bow_end_x ) + enddef ; + +beginchar("9",2.25parma_width#,ex#,desc#); "The tengwa number 9"; + pickup main_nib ; + draw_double_number_luva(1,2,3,4,9,10,11,12) ; + x5 = x1 ; top y5 = asc ; % top of stem + x6 = x5 ; y6 = 0 ; % bottom of stem + draw_telco(5,6)("t") ; + x7 = x5 ; y7 = good.y o = y8 ; x8 = x11 + 0.05em ; + draw_bar(7,8)("r") ; + lft x13 = curve_sidebar ; top y13 = -.1d ; + x14 = .5[x5,x13] ; bot y14 = vround(-d-o) ; + x6 = x6' ; y6' = -.3d ; + draw z6 .. z6'{down} .. z14{left} .. z13 ; + endchar ; + +beginchar("+",0.9*tinco_width#,asc#,0) ; "The tengwa number 10" ; + pickup main_nib ; + rt x4 = w - curve_sidebar ; y4 = 0.65ex ; % right side of bow + bot y3 = round(-o) ; x3 = good.x 0.5w ; % bottom + x2 = w - x4 ; y2 = 0.45ex ; % left side of bow + x1 = good.x 0.3w ; y1 = 0.7ex ; % end of bow + z1' = z1 + 0.03em*dir(10) ; % serif + x5 = 0.25w ; y5 = 0.95asc ; % top end of letter + z6 = z5 + 0.05em*(dir(penangle+80)) ; % for serif + draw z1'{dir(180+penangle)} .. z1 .. z2 .. z3 + .. z4{up} .. tension 0.9 and 3 .. z5 ; + labels(1,1',2,3,4,5,6) ; +endchar ; + +beginchar("-",0.85tinco_width#,asc#,desc#) ; "The tengwa number" ; + pickup main_nib ; + numeric t[] ; + % top bow first - make a path for later use + x1 = 0.25w ; y1 = 0.95asc ; % top + z1' = z1 + 0.05em*dir(penangle+80) ; % serif + rt x2 = w - curve_sidebar ; y2 = 0.5h ; % right side of top bow ; + x3 = 0.5w ; y3 = good.y 0.2h ; % bottom of top bow + x4 = 0.3w ; y4 = 0.5h ; % end of bow + z4' = z4 + 0.03em*dir(10) ; % serif + path p ; + p = z4'{dir(penangle+180)} .. z4 .. z3{right} .. z2{up} .. + tension 0.9 and 2.5 .. z1 ; + draw p ; + x5' = x1 ; y5'-y7 = y1-y3 ; % top of bottom bow + x6 = x2 ; y6 - y7 = y2 - y3 ; % side + x7 = x3 ; bot y7 = round(-0.9desc) ; % bottom + z8 - z7 = z4 - z3 ; % end + z8' - z8 = z4' - z4 ; + path pa ; + pa = z8'{dir(penangle+180)} .. z8 .. z7{right} .. z6{up} .. + tension 0.9 and 1.3 .. z5' ; + (t1,t2) = p intersectiontimes pa ; + draw subpath(0,t2) of pa ; + labels(1,2,3,4,5,6,7,8) ; +endchar ; + +beginchar("/",0.9*tinco_width#,ex#,desc#); "The tengwa number 12"; + pickup main_nib ; + lft x2 = curve_sidebar ; y2 = 0.6 ex ; % left + top y3 = round(ex+o) ; x3 = 0.55w ; % top + rt x4 = w - curve_sidebar ; y4 = 0.4 ex ; + x1 = x2 + 0.45w ; y1 = 0.2 ex ; % curly end + x5 = x2 ; y5 = -0.9desc ; + draw z1{dir(penangle+180)} .. z2{up} .. z3{right} .. + z4{down} .. tension 3 .. z5 ; + labels(1,2,3,4,5) ; +endchar ; + +beginchar("{",0.2em#,1.5ex#,0) ; "The circle-over tehta" ; + pickup tehta_nib ; + x1 = x3 = good.x .5w ; bot y3 = vround(1.3ex) ; + y1 = y3 + vround .45ex ; y1 - y3 = x2 - x4 ; + y2 = y4 = .5[y1,y3] ; x1 = .5[x2,x4] ; + draw z1 .. z2 .. z3 .. z4 .. cycle ; +endchar ; + +beginchar("}",0.2em#,0,desc#) ; "The circle-over tehta" ; + pickup tehta_nib ; + x1 = x3 = good.x .5w ; top y1 = vround -.3ex ; + y1 = y3 + vround .45ex ; y1 - y3 = x2 - x4 ; + y2 = y4 = .5[y1,y3] ; x1 = .5[x2,x4] ; + draw z1 .. z2 .. z3 .. z4 .. cycle ; +endchar ; + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +beginchar(28,parma_width#,ex#,desc#); "Reflected parma"; % ^^\ + pickup main_nib ; + draw_refl_parma_luva(1,2,3,4) ; + x5 = x1 ; top y5 = ex ; % top of stem + x6 = x5 ; bot y6 = -desc ; % bottom of stem + draw_telco(5,6)("tb") ; + x7 = x5 ; y7 = good.y o = y8 ; x8 = x3 - 0.05em ; % N.B. praps bot y7 = bot y8 = 0 + draw_bar(7,8)("r") ; + endchar ; + +beginchar(29,parma_width#,ex#,0); "Reflected formen"; + pickup main_nib ; + draw_refl_parma_luva(1,2,3,4) ; + x5 = x1 ; top y5 = asc ; % top of stem + x6 = x5 ; y6 = 0 ; % bottom of stem + draw_telco(5,6)("t") ; + x7 = x5 ; y7 = good.y o = y8 ; x8 = x3 - 0.05em ; % N.B. praps bot y7 = bot y8 = 0 + draw_bar(7,8)("r") ; + endchar ; + +beginchar("(",0.4em#,asc#,0) ; "Left paren" ; + pickup main_nib ; + top y1 = round asc ; bot y3 = 0 ; y2 = 1/2[y1,y3] ; + lft x2 = straight_sidebar = w - rt x1 = w - rt x3 ; + draw z1 .. z2 .. z3 ; +endchar ; + +beginchar(")",0.4em#,asc#,0) ; "Right paren" ; + pickup main_nib ; + top y1 = round asc ; bot y3 = 0 ; y2 = 1/2[y1,y3] ; + lft x1 = lft x3 = straight_sidebar = w - rt x2 ; + draw z1 .. z2 .. z3 ; +endchar ; + +beginchar("`",0.5em#,ex#,0) ; "Left guillemet" ; + pickup tehta_nib ; + y2 = 0.6ex = 1/2[y1,y3] ; + y1 - y3 = 0.4ex ; + lft x2 = straight_sidebar = w - rt x1 - 0.2em ; x1 = x3 ; + draw z1 .. z2 .. z3 ; + forsuffixes i=1,2,3: x.i' = x.i + round(0.2em) ; y.i' = y.i ; endfor ; + draw z1' .. z2' .. z3' ; +endchar ; + +beginchar("'",0.5em#,ex#,0) ; "Right guillemet" ; + pickup tehta_nib ; + y2 = 0.6ex = 1/2[y1,y3] ; + y1 - y3 = 0.4ex ; + rt x2 = w - straight_sidebar = w - lft x1 + 0.2em ; x1 = x3 ; + draw z1 .. z2 .. z3 ; + forsuffixes i=1,2,3: x.i' = x.i - round(0.2em) ; y.i' = y.i ; endfor ; + draw z1' .. z2' .. z3' ; +endchar ; + +end. diff --git a/Master/texmf-dist/fonts/source/public/elvish/tengmacs.mf b/Master/texmf-dist/fonts/source/public/elvish/tengmacs.mf new file mode 100644 index 00000000000..b28eb37aa9c --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/elvish/tengmacs.mf @@ -0,0 +1,221 @@ +autorounding := 1 ; +mode_setup; +define_pixels(em,asc,desc,ex); +define_blacker_pixels(penwidth,penthickness) ; +define_blacker_pixels(tehta_penwidth) ; +define_corrected_pixels(o); +define_whole_pixels(straight_sidebar,curve_sidebar) ; + +define_pixels(fudge, tinco_width, parma_width, romen_width) ; +define_pixels(luva_width) ; +pickup pencircle xscaled penwidth yscaled penthickness rotated penangle; +main_nib := savepen ; +pickup pencircle xscaled tehta_penwidth yscaled penthickness rotated penangle; +tehta_nib := savepen ; + +def draw_luva(suffix i,j,k,l) + (expr luva_type,bow_stem_y,bow_arch_x, + bow_side_y,bow_end_x) = + y.i = bow_stem_y * ex ; + x.j - x.i = bow_arch_x * (x.k - x.i) ; + y.k = (if (luva_type = "calma") or (luva_type = "quesse"): 1 - fi bow_side_y) * ex ; + x.l - x.i = bow_end_x * (x.k - x.i) ; + numeric x.luva_serif,y.luva_serif ; + z.luva_serif = z.l + 0.03em * + if luva_type = "tinco": dir 135 else: dir 315 fi ; + + path luva_path ; + luva_path = z.i{dir( if (luva_type = "tinco") or (luva_type = "parma"): + penangle else: penangle+180 fi)} + .. z.j{if (luva_type = "tinco") or (luva_type = "parma"): + right else: left fi} + .. z.k .. + if (luva_type = "parma") or (luva_type = "quesse"): {curl 0.3}z.l + else: z.l .. {curl 2}z.luva_serif fi ; + draw luva_path ; + labels(i,j,k,l) + enddef ; + +def draw_tinco_luva(suffix i,j,k,l) = + % this draws a complete tinco luva, using the four given suffices + % for the control points. ALL the information about the control + % points is determined within the macro; they are provided only for + % information and later use. + lft x.i = straight_sidebar ; % intersection with stem + top y.j = round(ex + o + tinco_fudge) ; % top + rt x.k = round (x.i + luva_width) ; % right + bot y.l = 0; % round (- o) ; % bottom, with fudge factor + draw_luva(i,j,k,l)("tinco",tp_bow_stem_y, + tc_bow_arch_x, + tc_bow_side_y, + tc_bow_end_x ) + + enddef ; + +def draw_ando_luva(suffix i,j,k,l,ii,jj,kk,ll) = + % this draws a complete ando luva + % first bow + lft x.i = straight_sidebar ; % intersection with stem + top y.j = round(ex + o + tinco_fudge) ; % top + rt x.k = round (x.i + luva_width) ; % right + bot y.l = round (- o) ; % bottom, with fudge factor + draw_luva(i,j,k,l)("tinco",tp_bow_stem_y, + tc_bow_arch_x, + tc_bow_side_y, + tc_bow_end_x ) ; + % now the second luva + z.second = ( (x.i+pt,y.i) .. (infinity,y.i) ) intersectionpoint luva_path ; + x.ii = good.x (xpart z.second) ; + y.jj = y.j ; + rt x.kk = round (x.ii + luva_width) ; % right + y.ll = y.l ; + draw_luva(ii,jj,kk,ll)("tinco",tp_bow_stem_y, + tc_bow_arch_x, + tc_bow_side_y, + tc_bow_end_x ) + enddef ; + +def draw_parma_luva(suffix i,j,k,l) = + % this draws a complete parma luva + lft x.i = straight_sidebar ; % intersection with stem + top y.j = round(ex + o) ; % top + rt x.k = round (x.i + luva_width) ; % right + bot y.l = 0 ;% bottom + draw_luva(i,j,k,l)("parma",tp_bow_stem_y, + pq_bow_arch_x, + pq_bow_side_y, + pq_bow_end_x ) + enddef ; + +def draw_umbar_luva(suffix i,j,k,l,ii,jj,kk,ll) = + % this draws a complete umbar luva + % first bow + lft x.i = straight_sidebar ; % intersection with stem + top y.j = round(ex + o) ; % top + rt x.k = round (x.i + luva_width) ; % right + bot y.l = 0 ;% bottom + draw_luva(i,j,k,l)("parma",tp_bow_stem_y, + pq_bow_arch_x, + pq_bow_side_y, + pq_bow_end_x ) ; + %second bow + z.second = ( (x.i+pt,y.i) .. (infinity,y.i) ) intersectionpoint luva_path ; + x.ii = good.x (xpart z.second) ; + y.jj = y.j ; + rt x.kk = round (x.ii + luva_width) ; % right + y.ll = y.l ; + draw_luva(ii,jj,kk,ll)("parma",tp_bow_stem_y, + pq_bow_arch_x, + pq_bow_side_y, + pq_bow_end_x ) + enddef ; + +def draw_calma_luva(suffix i,j,k,l) = + % this draws a complete calma luva + rt x.i = w - straight_sidebar ; % intersection with stem + y.j = good.y 0 ; % bottom + lft x.k = round (x.i - luva_width) ; % left + top y.l = round(ex - fudge) ; % top + draw_luva(i,j,k,l)("calma",cq_bow_stem_y, + tc_bow_arch_x, + tc_bow_side_y, + tc_bow_end_x ) + enddef ; + +def draw_anga_luva(suffix i,j,k,l,ii,jj,kk,ll) = + % this draws a complete anga luva + % first bow + rt x.i = w - straight_sidebar ; % intersection with stem + y.j = good.y 0 ; % bottom + lft x.k = round (x.i - luva_width) ; % left + top y.l = round(ex - fudge) ; % top + draw_luva(i,j,k,l)("calma",cq_bow_stem_y, + tc_bow_arch_x, + tc_bow_side_y, + tc_bow_end_x ) ; + % now the second luva + z.second = ( (x.i-pt,y.i) .. (-infinity,y.i) ) intersectionpoint luva_path ; + x.ii = good.x (xpart z.second) ; + y.jj = y.j ; + lft x.kk = round (x.ii - luva_width) ; % left + y.ll = y.l ; + draw_luva(ii,jj,kk,ll)("calma",cq_bow_stem_y, + tc_bow_arch_x, + tc_bow_side_y, + tc_bow_end_x ) + enddef ; + +def draw_quesse_luva(suffix i,j,k,l) = + % this draws a complete quesse luva + rt x.i = w - straight_sidebar ; % intersection with stem + y.j = good.y 0 ; % bottom + lft x.k = round (x.i - luva_width) ; % left + top y.l = round(ex) ; % top + draw_luva(i,j,k,l)("quesse",cq_bow_stem_y, + pq_bow_arch_x, + pq_bow_side_y, + pq_bow_end_x ) + enddef ; + +def draw_ungwe_luva(suffix i,j,k,l,ii,jj,kk,ll) = + % this draws a complete ungwe luva + % first bow + rt x.i = w - straight_sidebar ; % intersection with stem + y.j = good.y 0 ; % bottom + lft x.k = round (x.i - luva_width) ; % left + top y.l = round(ex) ; % top + draw_luva(i,j,k,l)("quesse",cq_bow_stem_y, + pq_bow_arch_x, + pq_bow_side_y, + pq_bow_end_x ) ; + % second bow + z.second = ( (x.i-pt,y.i) .. (-infinity,y.i) ) intersectionpoint luva_path ; + x.ii = good.x (xpart z.second) ; + y.jj = y.j ; + lft x.kk = round (x.ii - luva_width) ; % left + y.ll = y.l ; + draw_luva(ii,jj,kk,ll)("quesse",cq_bow_stem_y, + pq_bow_arch_x, + pq_bow_side_y, + pq_bow_end_x ) + enddef ; + + + +def draw_telco(suffix i,j)(expr serifs) = % serifs = t,b,tb for Top & Bottom + z.i.$ = z.i + 0.05em * dir(penangle+180) ; + z.i.$$ = z.i + 0.1em * down ; + z.j.$ = z.j + 0.05em * dir(penangle) ; + z.j.$$ = z.j + 0.1em * up ; + draw z.i .. z.j ; + if (serifs = "t") or (serifs = "tb"): + filldraw z.i -- z.i.${dir(penangle-90)} + .. {down}z.i.$$ & z.i.$$ .. z.i & cycle ; fi + if (serifs = "b") or (serifs = "tb"): + filldraw z.j -- z.j.${dir(penangle+90)} + .. {up}z.j.$$ & z.j.$$ .. z.j & cycle ; fi + labels(i,j) + enddef ; + +def draw_bar(suffix i,j)(expr serifs) = % serifs = r,l,rl for Right/Left + z.right_serif1 = z.j + 0.04em * left ; + z.right_serif2 = z.j + 0.04em * dir penangle ; + z.left_serif1 = z.i + 0.04em * right ; + z.left_serif2 = z.i + 0.04em * dir(penangle+180) ; + draw if (serifs = "l") or (serifs = "rl"): + z.left_serif2{dir penangle} .. z.left_serif1 else: z.i fi + --- + if (serifs = "r") or (serifs = "rl"): + z.right_serif1 .. {dir penangle}z.right_serif2 else: z.j fi ; +labels(i,j) + enddef ; + + +def draw_dot(suffix i) = + % calculate width of pen + numeric penwdth ; + 1.1penwdth = (pen_rt - pen_lft) ++ (pen_top - pen_bot) ; + z.i.$ = z.i + 1/2penwdth*dir(penangle+90) ; + z.i.$$ = z.i + 1/2penwidth*dir(penangle-90) ; + draw z.i.$$ -- z.i.$ ; drawdot z.i.$$ ; drawdot z.i.$ ; +enddef ; diff --git a/Master/texmf-dist/fonts/source/public/elvish/tengmain.mf b/Master/texmf-dist/fonts/source/public/elvish/tengmain.mf new file mode 100644 index 00000000000..189aa26de12 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/elvish/tengmain.mf @@ -0,0 +1,296 @@ + +beginchar("t",tinco_width#,ex#,desc#); "The tengwa tinco"; + pickup main_nib ; + draw_tinco_luva(1,2,3,4) ; + x5 = x1 ; top y5 = ex ; % top of stem + x6 = x5 ; bot y6 = -desc ; % bottom of stem + draw_telco(5,6)("tb") ; +endchar ; + +beginchar("d",1.65tinco_width#,ex#,desc#); "The tengwa ando"; + pickup main_nib ; + draw_ando_luva(1,2,3,4,7,8,9,10) ; + x5 = x1 ; top y5 = ex ; % top of stem + x6 = x5 ; bot y6 = -desc ; % bottom of stem + draw_telco(5,6)("tb") ; +endchar ; + + +beginchar("p",parma_width#,ex#,desc#); "The tengwa parma"; + pickup main_nib ; + draw_parma_luva(1,2,3,4) ; + x5 = x1 ; top y5 = ex ; % top of stem + x6 = x5 ; bot y6 = -desc ; % bottom of stem + draw_telco(5,6)("tb") ; + x7 = x5 ; y7 = good.y o = y8 ; x8 = x3 + 0.05em ; % N.B. praps bot y7 = bot y8 = 0 + draw_bar(7,8)("r") ; + endchar ; + +beginchar("b",1.65parma_width#,ex#,desc#); "The tengwa umbar"; + pickup main_nib ; + draw_umbar_luva(1,2,3,4,9,10,11,12) ; + x5 = x1 ; top y5 = ex ; % top of stem + x6 = x5 ; bot y6 = -desc ; % bottom of stem + draw_telco(5,6)("tb") ; + x7 = x5 ; y7 = good.y o = y8 ; x8 = x11 + 0.05em ; + draw_bar(7,8)("r") ; + endchar ; + + +beginchar("c",tinco_width#,ex#,desc#); "The tengwa calma"; + pickup main_nib ; + draw_calma_luva(1,2,3,4) ; + x5 = x1 ; top y5 = ex ; % top of stem + x6 = x5 ; bot y6 = -desc ; % bottom of stem + draw_telco(5,6)("tb") ; + endchar ; + +beginchar("j",1.65tinco_width#,ex#,desc#); "The tengwa anga"; + pickup main_nib ; + draw_anga_luva(1,2,3,4,7,8,9,10) ; + x5 = x1 ; top y5 = ex ; % top of stem + x6 = x5 ; bot y6 = -desc ; % bottom of stem + draw_telco(5,6)("tb") ; + endchar ; + +beginchar("k",parma_width#,ex#,desc#); "The tengwa quesse"; + pickup main_nib ; + draw_quesse_luva(1,2,3,4) ; + x5 = x1 ; top y5 = ex ; % top of stem + x6 = x5 ; bot y6 = -desc ; % bottom of stem + draw_telco(5,6)("b") ; + x7 = x5 ; top y7 = ex = top y8 ; x8 = x3 - 0.05em ; % N.B. praps top y7 = top y8 = 0 + draw_bar(8,7)("l"); + endchar ; + +beginchar("g",1.65parma_width#,ex#,desc#); "The tengwa ungwe"; + pickup main_nib ; + draw_ungwe_luva(1,2,3,4,9,10,11,12) ; + x5 = x1 ; top y5 = ex ; % top of stem + x6 = x5 ; bot y6 = -desc ; % bottom of stem + draw_telco(5,6)("b") ; + x7 = x5 ; top y7 = ex = top y8 ; x8 = x11 - 0.05em ; + draw_bar(8,7)("l"); + endchar ; + +beginchar(12,tinco_width#,asc#,desc#); "Extended sule"; % ^^L + pickup main_nib ; + draw_tinco_luva(1,2,3,4) ; + x5 = x1 ; top y5 = asc ; % top of stem + x6 = x5 ; bot y6 = -desc ; % bottom of stem + draw_telco(5,6)("tb") ; +endchar ; + +beginchar(4,1.65tinco_width#,asc#,desc#); "Extended anto"; % ^^D + pickup main_nib ; + draw_ando_luva(1,2,3,4,7,8,9,10) ; + x5 = x1 ; top y5 = asc ; % top of stem + x6 = x5 ; bot y6 = -desc ; % bottom of stem + draw_telco(5,6)("tb") ; +endchar ; + + +beginchar(16,parma_width#,asc#,desc#); "Extended formen"; % ^^P + pickup main_nib ; + draw_parma_luva(1,2,3,4) ; + x5 = x1 ; top y5 = asc ; % top of stem + x6 = x5 ; bot y6 = -desc ; % bottom of stem + draw_telco(5,6)("tb") ; + x7 = x5 ; y7 = good.y o = y8 ; x8 = x3 + 0.05em ; % N.B. praps bot y7 = bot y8 = 0 + draw_bar(7,8)("r") ; + endchar ; + +beginchar(18,1.65parma_width#,asc#,desc#); "Extended ampa"; % ^^R + pickup main_nib ; + draw_umbar_luva(1,2,3,4,9,10,11,12) ; + x5 = x1 ; top y5 = asc ; % top of stem + x6 = x5 ; bot y6 = -desc ; % bottom of stem + draw_telco(5,6)("tb") ; + x7 = x5 ; y7 = good.y o = y8 ; x8 = x11 + 0.05em ; + draw_bar(7,8)("r") ; + endchar ; + + +beginchar(27,tinco_width#,asc#,desc#); "Extended aha"; % ^^[ + pickup main_nib ; + draw_calma_luva(1,2,3,4) ; + x5 = x1 ; top y5 = asc ; % top of stem + x6 = x5 ; bot y6 = -desc ; % bottom of stem + draw_telco(5,6)("tb") ; + endchar ; + +beginchar(10,1.65tinco_width#,asc#,desc#); "Extended anca"; % ^^J + pickup main_nib ; + draw_anga_luva(1,2,3,4,7,8,9,10) ; + x5 = x1 ; top y5 = asc ; % top of stem + x6 = x5 ; bot y6 = -desc ; % bottom of stem + draw_telco(5,6)("tb") ; + endchar ; + +beginchar(11,parma_width#,asc#,desc#); "Extended hwesta"; % ^^K + pickup main_nib ; + draw_quesse_luva(1,2,3,4) ; + x5 = x1 ; top y5 = asc ; % top of stem + x6 = x5 ; bot y6 = -desc ; % bottom of stem + draw_telco(5,6)("tb") ; + x7 = x5 ; top y7 = ex = top y8 ; x8 = x3 - 0.05em ; % N.B. praps top y7 = top y8 = 0 + draw_bar(8,7)("l"); + endchar ; + +beginchar(7,1.65parma_width#,asc#,desc#); "Extended unque"; % ^^G + pickup main_nib ; + draw_ungwe_luva(1,2,3,4,9,10,11,12) ; + x5 = x1 ; top y5 = asc ; % top of stem + x6 = x5 ; bot y6 = -desc ; % bottom of stem + draw_telco(5,6)("b") ; + x7 = x5 ; top y7 = ex = top y8 ; x8 = x11 - 0.05em ; + draw_bar(8,7)("l"); + endchar ; + +beginchar("T",tinco_width#,ex#,0); "The tengwa thule"; + pickup main_nib ; + draw_tinco_luva(1,2,3,4) ; + x5 = x1 ; top y5 = asc ; % top of stem + x6 = x5 ; y6 = 0 ; % bottom of stem + draw_telco(5,6)("tb") ; +endchar ; + +beginchar("D",1.65tinco_width#,ex#,0); "The tengwa anto"; + pickup main_nib ; + draw_ando_luva(1,2,3,4,7,8,9,10) ; + x5 = x1 ; top y5 = asc ; % top of stem + x6 = x5 ; y6 = 0 ; % bottom of stem + draw_telco(5,6)("tb") ; +endchar ; + + +beginchar("f",parma_width#,ex#,0); "The tengwa formen"; + pickup main_nib ; + draw_parma_luva(1,2,3,4) ; + x5 = x1 ; top y5 = asc ; % top of stem + x6 = x5 ; y6 = 0 ; % bottom of stem + draw_telco(5,6)("t") ; + x7 = x5 ; y7 = good.y o = y8 ; x8 = x3 + 0.05em ; % N.B. praps bot y7 = bot y8 = 0 + draw_bar(7,8)("r") ; + endchar ; + +beginchar("v",1.65parma_width#,ex#,0); "The tengwa ampa"; + pickup main_nib ; + draw_umbar_luva(1,2,3,4,9,10,11,12) ; + x5 = x1 ; top y5 = asc ; % top of stem + x6 = x5 ; y6 = 0 ; % bottom of stem + draw_telco(5,6)("t") ; + x7 = x5 ; y7 = good.y o = y8 ; x8 = x11 + 0.05em ; + draw_bar(7,8)("r") ; + endchar ; + + +beginchar("C",tinco_width#,ex#,0); "The tengwa aha"; + pickup main_nib ; + draw_calma_luva(1,2,3,4) ; + x5 = x1 ; top y5 = asc ; % top of stem + x6 = x5 ; y6 = 0 ; % bottom of stem + draw_telco(5,6)("tb") ; + endchar ; + +beginchar("J",1.65tinco_width#,ex#,0); "The tengwa anca"; + pickup main_nib ; + draw_anga_luva(1,2,3,4,7,8,9,10) ; + x5 = x1 ; top y5 = asc ; % top of stem + x6 = x5 ; y6 = 0 ; % bottom of stem + draw_telco(5,6)("tb") ; + endchar ; + +beginchar("K",parma_width#,ex#,0); "The tengwa hwesta"; + pickup main_nib ; + draw_quesse_luva(1,2,3,4) ; + x5 = x1 ; top y5 = asc ; % top of stem + x6 = x5 ; y6 = 0 ; % bottom of stem + draw_telco(5,6)("tb") ; + x7 = x5 ; top y7 = ex = top y8 ; x8 = x3 - 0.05em ; % N.B. praps top y7 = top y8 = 0 + draw_bar(8,7)("l"); + endchar ; + +beginchar("G",1.65parma_width#,ex#,0); "The tengwa unque"; + pickup main_nib ; + draw_ungwe_luva(1,2,3,4,9,10,11,12) ; + x5 = x1 ; top y5 = asc ; % top of stem + x6 = x5 ; y6 = 0 ; % bottom of stem + draw_telco(5,6)("tb") ; + x7 = x5 ; top y7 = ex = top y8 ; x8 = x11 - 0.05em ; + draw_bar(8,7)("l"); + endchar ; + +beginchar("R",tinco_width#,ex#,0); "The tengwa ore"; + pickup main_nib ; + draw_tinco_luva(1,2,3,4) ; + x5 = x1 ; top y5 = ex ; % top of stem + x6 = x5 ; y6 = 0 ; % bottom of stem + draw_telco(5,6)("tb") ; +endchar ; + +beginchar("n",1.65tinco_width#,ex#,0); "The tengwa numen"; + pickup main_nib ; + draw_ando_luva(1,2,3,4,7,8,9,10) ; + x5 = x1 ; top y5 = ex ; % top of stem + x6 = x5 ; y6 = 0 ; % bottom of stem + draw_telco(5,6)("tb") ; +endchar ; + + +beginchar("w",parma_width#,ex#,0); "The tengwa vala"; + pickup main_nib ; + draw_parma_luva(1,2,3,4) ; + x5 = x1 ; top y5 = ex ; % top of stem + x6 = x5 ; y6 = 0 ; % bottom of stem + draw_telco(5,6)("t") ; + x7 = x5 ; y7 = good.y o = y8 ; x8 = x3 + 0.05em ; % N.B. praps bot y7 = bot y8 = 0 + draw_bar(7,8)("r") ; + endchar ; + +beginchar("m",1.65parma_width#,ex#,0); "The tengwa malta"; + pickup main_nib ; + draw_umbar_luva(1,2,3,4,9,10,11,12) ; + x5 = x1 ; top y5 = ex ; % top of stem + x6 = x5 ; y6 = 0 ; % bottom of stem + draw_telco(5,6)("t") ; + x7 = x5 ; y7 = good.y o = y8 ; x8 = x11 + 0.05em ; + draw_bar(7,8)("r") ; + endchar ; + + +beginchar("y",tinco_width#,ex#,0); "The tengwa anna"; + pickup main_nib ; + draw_calma_luva(1,2,3,4) ; + x5 = x1 ; top y5 = ex ; % top of stem + x6 = x5 ; y6 = 0 ; % bottom of stem + draw_telco(5,6)("tb") ; + endchar ; + +beginchar("Y",1.65tinco_width#,ex#,0); "The tengwa noldo"; + pickup main_nib ; + draw_anga_luva(1,2,3,4,7,8,9,10) ; + x5 = x1 ; top y5 = ex ; % top of stem + x6 = x5 ; y6 = 0 ; % bottom of stem + draw_telco(5,6)("tb") ; + endchar ; + +beginchar("W",parma_width#,ex#,0); "The tengwa vilya"; + pickup main_nib ; + draw_quesse_luva(1,2,3,4) ; + x5 = x1 ; top y5 = ex ; % top of stem + x6 = x5 ; y6 = 0 ; % bottom of stem + draw_telco(5,6)("b") ; + x7 = x5 ; top y7 = ex = top y8 ; x8 = x3 - 0.05em ; % N.B. praps top y7 = top y8 = 0 + draw_bar(8,7)("l"); + endchar ; + +beginchar("N",1.65parma_width#,ex#,0); "The tengwa nwalme"; + pickup main_nib ; + draw_ungwe_luva(1,2,3,4,9,10,11,12) ; + x5 = x1 ; top y5 = ex ; % top of stem + x6 = x5 ; y6 = 0 ; % bottom of stem + draw_telco(5,6)("b") ; + x7 = x5 ; top y7 = ex = top y8 ; x8 = x11 - 0.05em ; + draw_bar(8,7)("l"); + endchar ; diff --git a/Master/texmf-dist/fonts/source/public/elvish/tengsecs.mf b/Master/texmf-dist/fonts/source/public/elvish/tengsecs.mf new file mode 100644 index 00000000000..40256ffa5bc --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/elvish/tengsecs.mf @@ -0,0 +1,311 @@ + +beginchar("l",0.8em#,ex#,desc#) ; "The tengwa lambe" ; + pickup main_nib ; + x1 = straight_sidebar ; x2 = w - x1 ; + top y1 = top y2 = round ex ; + z1' = z1 - ( 0.04em * dir penangle) ; + z2' = z2 + ( 0.04em * dir penangle) ; + draw z1'{dir penangle} .. {dir penangle}z2' ; + y3 = y1 ; x3 = 0.6[x1,x2] ; % top of bowl + lft x4 = 2curve_sidebar ; y4 = 0.2ex ; % side of bowl + bot y5 = -0.5 desc ; x5 = .4w ; % bottom of bowl + x6 = w - x4 ; y6 = 0.2ex; % right side of bowl + z7 = z6 + (0.05em *(left rotated -10)) ; + draw z3{dir (penangle+180)} .. + {down}z4 .. z5{right} + .. z6 .. {dir -penangle} z7 ; + labels(1,2,3,4,5,6) ; +endchar ; + +beginchar("I",0.8tinco_width#,ex#,0) ; "The tengwa yanta" ; + pickup main_nib ; + y1 = 0 ; x1 = straight_sidebar ; % bottom of left arm ; + y2 = 0 ; x2 = w - x1 ; % bottom of right arm + x3 = 0.5[x1,x2] ; y3 = 0.8ex ; % junction point + top y4 = round(ex) ; z4 - z2 = whatever*(z3 - z2) ; % top of arm + draw z4 .. z2 ; + draw z3 .. z1 ; + z4' = z4 + 0.05em * dir(penangle+180) ; + z2' = z2 + 0.05em * dir(penangle) ; + z1' = z1 + 0.05em * dir(penangle+90) ; + draw z4'{dir penangle} .. {z2-z4}z4 ; + draw z2'{dir (penangle+180)} .. {z4-z2}z2 ; + draw z1'{dir(penangle-90)} .. {z3-z1}z1 ; +endchar ; + +beginchar("U",0.9tinco_width#,ex#,0) ; "The tengwa ure" ; + pickup main_nib ; + top y1 = round(ex+o) ; x1 = 0.5w ; + bot y3 = round(-o) ; x3 = x1 ; + rt x2 = w - curve_sidebar = w - lft x4 ; + y2 = y4 = 0.5h ; + draw z1 .. z2 .. z3 .. z4 .. cycle ; +endchar ; + + +beginchar("s",0.9*tinco_width#,asc#,0) ; "The tengwa silme" ; + pickup main_nib ; + lft x4 = curve_sidebar ; y4 = 0.7ex ; % left side of bow + bot y3 = round(-o) ; x3 = good.x 0.5w ; % bottom + x2 = w - x4 ; y2 = 0.5ex ; % right side of bow + x1 = good.x 0.7w ; y1 = 0.8ex ; % end of bow + z1' = z1 + 0.03em*dir(170) ; % serif + x5 = 0.55w ; y5 = 0.95asc ; % top end of letter + z6 = z5 + 0.05em*(dir(penangle+80)) ; % for serif + draw z1'{dir penangle} .. z1 .. z2 .. z3 .. z4{up} .. tension 0.9 and 1.2 .. z5 .. z6 ; + labels(1,1',2,3,4,5,6) ; +endchar ; + +beginchar("S",0.9*tinco_width#,ex#,desc#); "The tengwa silme nuquerna"; + pickup main_nib ; + lft x2 = curve_sidebar ; y2 = 0.6 ex ; % left + top y3 = round(ex+o) ; x3 = 0.55w ; % top + rt x4 = w - curve_sidebar ; y4 = 0.4 ex ; + x1 = x2 + 0.2w ; y1 = 0.25 ex ; % curly end + x5 = x2 ; y5 = -0.9desc ; + draw z1{dir(penangle+180)} .. z2{up} .. z3{right} .. + z4{down} .. tension 1.2 .. z5 ; + labels(1,2,3,4,5) ; +endchar ; + +beginchar("r", romen_width#, ex#, desc#); "The tengwa romen"; + pickup main_nib ; + x1 = straight_sidebar ; top y1 = round(0.95ex) ; % top of left arm + bot y2 = 0.0ex ; % join at bottom + rt x3 = w - curve_sidebar ; y3 = 0.75ex ;% 'top' of right stem ; + % want vectors z3-z2 and z1-z2 to be mirror images in direction + numeric temp ; + y3 - y2 = temp*(y1 - y2) ; + x3 - x2 = 1.1temp*(x2 - x1) ; % not quite mirror ! + draw z1 -- z2 ; % left arm (without serif) + z1' = z1 + 0.05em*dir(penangle+135) ; + draw z1'{dir penangle} .. {z2-z1}z1 ; % serif + top y4 = round(ex - 0.2penwidth*sind penangle) ; x4 = 1/3[x2,x3] ; % end of right arm + bot y5 = round(-0.9desc) ; x5 = 0[x2,x3] ; % bottom of tail + y6 = -0.2desc ; x6 = 1/2[x5,x3] ; % end of tail + path p ; + p = z4{dir penangle} .. z3 .. tension 1 .. z2 % {dir (penangle+180)} + .. tension 3/4 .. z5{right} .. {dir (penangle+180)}z6 ; + draw p ; + draw z1'{dir penangle} .. {z2-z1}z1 .. z2 ; + labels(1,2,3,4,5,6); + endchar ; + +beginchar("&", romen_width#, ex#, desc#); "The tengwa arda"; + pickup main_nib ; + x1 = straight_sidebar ; top y1 = round(0.95ex) ; % top of left arm + bot y2 = 0.0ex ; % join at bottom + rt x3 = w - curve_sidebar ; y3 = 0.75ex ;% 'top' of right stem ; + % want vectors z3-z2 and z1-z2 to be mirror images in direction + numeric temp ; + y3 - y2 = temp*(y1 - y2) ; + x3 - x2 = 1.1temp*(x2 - x1) ; % not quite mirror ! + draw z1 -- z2 ; % left arm (without serif) + z1' = z1 + 0.05em*dir(penangle+135) ; + draw z1'{dir penangle} .. {z2-z1}z1 ; % serif + top y4 = round(ex - 0.2penwidth*sind penangle) ; x4 = 1/3[x2,x3] ; % end of right arm + bot y5 = round(-0.9desc) ; x5 = 0[x2,x3] ; % bottom of tail + y6 = -0.2desc ; x6 = 1/2[x5,x3] ; % end of tail + path p ; + p = z4{dir penangle} .. z3 .. tension 1 .. z2 % {dir (penangle+180)} + .. tension 3/4 .. z5{right} .. {dir (penangle+180)}z6 ; + draw p ; + draw z1'{dir penangle} .. {z2-z1}z1 .. z2 ; + z10 = 0.25[z2,z1] ; + z11 = z10 + 0.2em*dir(penangle+180) ; + z12 = z11 + 0.08em*dir(penangle-90) ; + draw z10 .. tension 1.5 .. z11 .. tension 1.5 .. z12 ; + labels(1,2,3,4,5,6,10,11,12); + endchar ; + +beginchar("z",0.85tinco_width#,asc#,desc#) ; "The tengwa esse" ; + pickup main_nib ; + % top bow first - make a path for later use + x1 = 0.55w ; y1 = 0.95asc ; % top + z1' = z1 + 0.05em*dir(penangle+80) ; % serif + lft x2 = curve_sidebar ; y2 = 0.5h ; % left side of top bow ; + x3 = 0.5w ; y3 = good.y 0.2h ; % bottom of top bow + x4 = 0.7w ; y4 = 0.5h ; % end of bow + z4' = z4 + 0.03em*dir(170) ; % serif + path p ; + p = z4'{dir penangle} .. z4 .. z3{left} .. z2{up} .. + tension 0.9 and 1.2 .. z1 .. z1' ; + draw p ; + x5' = x1 ; y5'-y7 = y1-y3 ; % top of bottom bow + x6 = x2 ; y6 - y7 = y2 - y3 ; % side + x7 = x3 ; bot y7 = round(-0.9desc) ; % bottom + z8 - z7 = z4 - z3 ; % end + z8' - z8 = z4' - z4 ; + path pa ; + pa = z8'{dir penangle} .. z8 .. z7{left} .. z6{up} .. + tension 0.9 and 1.2 .. z5' ; + (t1,t2) = p intersectiontimes pa ; + draw subpath(0,t2) of pa ; + labels(1,2,3,4,5,6,7,8) ; +endchar ; + +beginchar("Z",0.8tinco_width#,ex#,desc#) ; "The tengwa esse nuquerna" ; + pickup main_nib ; + y1 = 0.5h ; x1 = 0.3w ; % end of top bow + z1' = z1 + 0.03em*dir(-10) ; % and serif + % ignore z2 (left side) for the moment + top y3 = round(ex+o) ; x3 = 0.5w ; % top + rt x4 = 0.9w - curve_sidebar ; y4 = 0.65h ; % right + y5 = -0.1desc ; lft x5 = curve_sidebar ; %end + path p ; + p = z1'{dir(penangle+180)} .. z3{right} .. z4{down} .. + tension 0.9 and 1.2 .. z5 ; + draw p ; + z6 = ( (0.5w,-desc) .. (0.5w,0.5ex) ) intersectionpoint p ; + x7 = x4 ; y7 = -0.3desc ; + x8 = x5 ; y8 = -0.9desc ; + draw z6{dir penangle} .. z7{down} .. tension 0.9 and 2 .. z8 ; + labels(1,2,3,4,5,6,7,8) ; +endchar ; + +beginchar("h",0.8tinco_width#,asc#,0) ; "The tengwa hyarmen" ; + pickup main_nib ; + bot y1 = 0 ; x1 = straight_sidebar ; % bottom of left arm + y2 = 0 ; x2 = w - x1 ; % bottom of right arm + x3 = 0.6[x1,x2] ; y3 = 0.9ex ; % junction point + top y4 = round (0.9asc) ; z4 - z2 = whatever*(z3-z2) ; % top of arm + z4' = z4 + 0.08em*dir(penangle+160); + z4'' = z4 + 0.08em*(dir(angle(z2-z4))) ; + draw z4'{dir penangle} .. z4'' --- z2 ; + draw z3 .. z1 ; + z1' = z1 + 0.05em*dir(penangle+180) ; + z2' = z2 + 0.05em*dir(penangle) ; + draw z2'{dir(penangle+180)} .. {z4-z2}z2 ; + draw z1'{dir(penangle-90)} .. {z3-z1}z1 ; + labels(1,2,3,4) ; +endchar ; + +beginchar("H",tinco_width#,asc#,0) ; "The tengwa hwesta sindarinwa" ; + pickup main_nib ; + top y1 = asc ; x1 = good.x (w - 0.2em) ; + bot y2 = 0 ; x2 = x1 ; + draw_telco(1,2,"t") ; + x3 = x7 = x1 ; y3 = .75ex ; y7 = 0.1ex ; + top y4 = round(ex+o) ; + bot y6 = round(-o) ; + x4 = 0.5w ; + x6 = 0.4w ; + y5 = 0.5ex ; x5 = curve_sidebar ; + draw z3 .. z4{left} .. z5{down} .. z6{right} .. z7 ; + z2' = z2 + 0.05em*dir(penangle) ; + z2'' = z2 + 0.2em*right ; + z2''' = z2 - 0.05em*dir(penangle+180) ; + draw z2{dir penangle} .. z2' .. z2'' .. z2'''{dir penangle} ; + labels(1,2,3,4,5,6,2'') ; +endchar ; + +beginchar("@",0.3em#,ex#,0) ; "The short carrier" ; + pickup main_nib ; + top y1 = round(ex) ; y2 = 0 ; + x1 = x2 = good.x 0.5w ; + draw_telco(1,2,"tb") ; +endchar ; + +beginchar("*",0.3em#,ex#,desc#) ; "The long carrier" ; + pickup main_nib ; + top y1 = round(ex) ; y2 = -0.6desc ; + x1 = x2 = good.x 0.5w ; + draw_telco(1,2,"t") ; + z3 = z2 + 0.2em*dir(penangle-150) ; + draw z2{z2-z1} .. z3{dir(penangle+180)} ; +endchar ; + +beginchar("A",0.75tinco_width#,ex#,0) ; "The tengwa A" ; + pickup main_nib ; + top y1 = round(ex+o) ; x1 = 0.6w ; + y3 = 0 ; x3 = x1 ; + lft x2 = curve_sidebar ; y2 = 0.55h ; + x4 = w - straight_sidebar ; x6 = x4+0.05em ; + y4 = 0.75h ; y6 = 0.35h ; + z4' = z4 + 0.03em*dir(180+penangle) ; + draw z4'{dir penangle} .. z4 .. z1{left} .. z2{down} .. z3{right} .. z6 ; +endchar ; + +beginchar("|",0.3em#,asc#,0); "The tengwa halla" ; + pickup main_nib ; + x1 = x2 = good.x 0.5w ; + top y1 = asc ; + y2 = 0 ; + draw_telco(1,2)("tb") ; + endchar ; + +beginchar("L",0.8em#,ex#,desc#) ; "The tengwa alda" ; + pickup main_nib ; + x1 = straight_sidebar = w - x2 ; + top y1 = top y2 = round ex ; + z1' = z1 - ( 0.04em * dir penangle) ; + z2' = z2 + ( 0.04em * dir penangle) ; + draw z1'{dir penangle} .. {dir penangle}z2' ; + x3 = 0.4[x1,x2] ; % top of bowl + y3 = 0.95ex ; + lft x4 = straight_sidebar ; y4 = 0.5ex ; % first bend + rt x5 = w - straight_sidebar ; y5 = -0.15ex ; % second bend + x6 = 0.65w ; bot y6 = -0.7desc ; % bottom of bowl + x7 = 0.3w ; y7 = -0.2 ex ; % end + draw z3{curl 0} .. tension 2 .. z4{down} .. z5{down} .. z6{left} .. + z7{dir penangle} ; +endchar ; +beginchar("$", romen_width#, asc#, 0) ; "Inverted romen - wh" ; + pickup main_nib ; + x1 = w - straight_sidebar ; bot y1 = round(0.05ex) ; + top y2 = 1.0ex ; + lft x3 = curve_sidebar ; y3 = 0.25ex ; + numeric temp ; + y3 - y2 = temp*(y1 - y2) ; + x3 - x2 = 1.1temp*(x2 - x1) ; + draw z1 -- z2 ; + z1' = z1 + 0.05em*dir(penangle-45) ; + draw z1'{dir(penangle+180)} .. {z2-z1}z1 ; + bot y4 = round(0.2penwidth*sind penangle) ; x4 = 1/3[x2,x3] ; + top y5 = round(ex+0.9desc) ; x5 = 0[x2,x3] ; + y6 = ex + 0.2desc ; x6 = 1/2[x5,x3] ; + draw z4{dir(penangle+180)} .. z3 .. z2 + .. tension 3/4 .. z5{left} .. {dir penangle}z6 ; + draw z1'{dir penangle} .. {z2 - z1}z1 .. z2 ; + labels(1,2,3,4,5,6) ; +endchar ; + +beginchar("#",0.7em#,ex#,desc#) ; "Inverted lambe - w" ; + pickup main_nib ; + x1 = straight_sidebar = w - x2 ; + bot y1 = bot y2 = -0.5desc ; + z1' = z1 - 0.04em*dir(penangle) ; + z2' = z2 + 0.04em*dir(penangle) ; + draw z1'{dir penangle} .. {dir penangle}z2' ; + y3 = y1 ; x3 = 0.2[x1,x2] ; + rt x4 = w - curve_sidebar ; y4 = 0.8ex - 0.5desc; + top y5 = round(ex) ; x5 = 0.6w ; + x6 = w - x4 ; y6 = y4 ; + z7 = z6 + 0.05em*(left rotated 170) ; + draw z3{dir penangle} .. {up}z4 .. z5{left} + .. z6 .. {dir(180-penangle)}z7 ; + labels(1,2,3,4,5,6,7) ; +endchar ; + +beginchar("%",0.8tinco_width#,ex#,0) ; "The tengwa for u in up" ; + pickup main_nib ; + top y1 = ex ; rt x1 = w - straight_sidebar ; + y2 = 0 ; x2 = x1 ; + draw_telco(1,2)("tb") ; + y3 = y1 ; x3 = w - x1 ; + x4 = x3 ; y4 = 0.3h ; + draw_telco(3,4)("t") ; + y5 = 0 ; x5 = 0.45w ; + x6 = x1 ; y6 = 0.3ex ; + draw z4{z4-z3} .. z5 .. z6{dir penangle} ; + labels(5,6) ; +endchar ; + +beginchar(9,0.55em#,ex#,0) ; "The schwa tengwa (Pictures plate 48)" ; + pickup main_nib ; + lft x1 = lft x2 = straight_sidebar ; + top y1 = ex ; y2 = 0 ; + draw_telco(1,2)("tb") ; + y3 = y1 ; rt x3 = w ; %- curve_sidebar ; + draw_bar(1,3)("r") ; +endchar ; diff --git a/Master/texmf-dist/fonts/source/public/elvish/tengteht.mf b/Master/texmf-dist/fonts/source/public/elvish/tengteht.mf new file mode 100644 index 00000000000..5984c01f3d8 --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/elvish/tengteht.mf @@ -0,0 +1,195 @@ + +beginchar("a",0.3em#,1.5ex#,0) ; "The tehta a" ; + pickup tehta_nib ; + bot y1 = bot y2 = round(1.35ex) ; lft x1 = 0 = w - rt x2 ; + y3 - y1 = round(0.45sqrt(3) * (x2 - x1)) ; + x3 = 0.5[x1,x2] ; + draw_dot(1) ; draw_dot(2) ; draw_dot(3) ; +endchar ; + +beginchar("O",0.3em#,1.5ex#,0) ; "Inverted a tehta" ; + pickup tehta_nib ; + bot y3 = round(1.35ex) ; lft x1 = 0 = w - rt x2 ; + y1 - y3 = y2 - y3 = round(0.45sqrt(3) * (x2 - x1)) ; + x3 = 0.5[x1,x2] ; + draw_dot(1) ; draw_dot(2) ; draw_dot(3) ; +endchar ; + +beginchar(25,0.35em#,0,0.5desc#) ; "The dots for y" ; % 25 = ^^Y + pickup tehta_nib ; + y1 = y2 = -0.3ex ; lft x1 = 0 = w - rt x2 ; + draw_dot(1) ; draw_dot(2) ; +endchar ; + +beginchar(26,0.35em#,0,desc#) ; "Low dots for y" ; % 26 = ^^Z + pickup tehta_nib ; + y1 = y2 = round -0.65ex ; lft x1 = 0 = w - rt x2 ; + draw_dot(1) ; draw_dot(2) ; +endchar ; + +beginchar("i",0.1em#,1.4ex#,0) ; "The tehta i" ; + pickup tehta_nib ; + bot y1 = round(1.35ex) ; + x1 = good.x (0.5w) ; + draw_dot(1) ; +endchar ; + +beginchar(5,0.1em#,0,0.5desc#) ; "The schwa tehta" ; + pickup tehta_nib ; + y1 = round(-0.3ex) ; + x1 = good.x (0.5w) ; + draw_dot(1) ; +endchar ; + +beginchar("e",0.4em#,1.5ex#,0) ; "The tehta e" ; + pickup tehta_nib ; + y1 = round(1.3ex) ; + y2 = (y1 + 0.3ex) ; + lft x1 = 0 ; rt x2 = w ; + z2' = z2 + 0.05em*dir(penangle+90) ; + draw z1 .. tension 10 .. z2 .. {dir(penangle+90)}z2' ; +endchar ; + +%beginchar("o",0.5em#,1.6ex#,0) ; "The tehta o" ; +% pickup tehta_nib ; +% y1 = round(1.3ex) ; lft x1 = 0 ; +% y2 = y1 + 0.3ex ; x2 = 0.7w ; +% rt x3 = w ; y3 = 0.7[y1,y2] ; +% x4 = x2 ; y4 = 0.3[y1,y2] ; +% draw z1 .. tension 4 and 2 .. z2 .. z3{down} .. z4 ; +%endchar ; + +beginchar("o",0.45em#,1.76ex#,0) ; "The tehta o" ; + pickup tehta_nib ; + y1 = round(1.3ex) ; lft x1 = 0 ; + y2 = y1 + 0.4ex ; x2 = 0.7w ; + rt x3 = w ; y3 = 0.7[y1,y2] ; + x4 = x2 ; y4 = 0.3[y1,y2] ; + draw z1 .. tension 4 and 2 .. z2 .. z3{down} .. z4 ; +endchar ; + +beginchar("u",0.5em#,1.9ex#,0) ; "The tehta u" ; + pickup tehta_nib ; + y1 = round(1.3ex) ; x1 = 0.4w ; + rt x2 = w ; y2 = y1 + 0.5ex ; + y3 = 1.0[y1,y2] ; + x3 = 0.3[x1,x2] ; + draw z1 .. tension 4 and 1.5 .. z2 .. {dir (penangle-90)}z3 ; +endchar ; + +beginchar(",",0.2em#,ex#,0) ; "The point ," ; + pickup main_nib ; + x1 = good.x 0.5w ; y1 = good.y 0.6h ; + draw_dot(1) ; +endchar ; + +beginchar(";",0.2em#,ex#,0) ; "The point ;" ; + pickup main_nib ; + x1 = x2 = good.x 0.5w ; y1 = good.y 0.2h ; y2 = good.y 0.8h ; + draw_dot(1) ; draw_dot(2) ; +endchar ; + +beginchar(".",0.5em#,ex#,0) ; "The point ." ; + pickup main_nib ; + y1 = y3 = good.y 0.2h ; y2 = y4 = 0.8h ; + x1 = x2 = w - x3 = w - x4 ; x3 - x1 = y2 - y1 ; + forsuffixes s=1,2,3,4: draw_dot(s) ; endfor ; +endchar ; + +beginchar(ditto,0.35em#,1.4ex#,0) ; "The tehta two-dots-above" ; + pickup tehta_nib ; + y1 = y2 = round(1.35ex) ; + lft x1 = 0 = w - rt x2 ; + draw_dot(1) ; draw_dot(2) ; +endchar; + +beginchar(2,tinco_width#,0,0.5desc#) ; "The under-bar tehta" ; + pickup tehta_nib ; + y1 = y2 = round(-0.3ex) ; + lft x1 = straight_sidebar = w - rt x2 ; + draw_bar(1,2)("rl") ; +endchar ; + +beginchar(3,tinco_width#,0,desc#) ; "Low under-bar" ; + pickup tehta_nib ; + y1 = y2 = round(-0.65ex) ; + lft x1 = straight_sidebar = w - rt x2 ; + draw_bar(1,2)("rl") ; +endchar ; + +beginchar(14,tinco_width#,1.5ex#,0) ; "The over-bar tehta" ; + pickup tehta_nib ; + y1 = y2 = round(1.2ex) ; + lft x1 = straight_sidebar = w - rt x2 ; + draw_bar(1,2)("rl") ; +endchar ; + +beginchar(15,tinco_width#,1.6ex#,0) ; "The tilde over" ; + pickup tehta_nib ; + y1 = y2 = 1.35ex ; + lft x1 = straight_sidebar = w - rt x2 ; + z1' = z1 - ( 0.04em * dir penangle) ; + z2' = z2 + ( 0.04em * dir penangle) ; + draw z1'{dir penangle} .. z1 .. z2 .. {dir penangle}z2' ; +endchar ; + +beginchar(21,0.5em#,1.7ex#,0) ; "Variant u tehta" ; + pickup tehta_nib ; + y1 = round(1.3ex) ; lft x1 = 0 ; + y2 = y1 + 0.3ex ; x2 = 0.7w ; + rt x3 = w ; y3 = 1.5[y1,y2] ; + x4 = x2 ; y4 = 1.6[y1,y2] ; + draw z1 .. tension 4 and 2 .. z2 .. z3{up} .. z4 ; +endchar ; + +beginchar(22,0.5em#,1.7ex#,0) ; "Beleriand u tehta" ; + pickup tehta_nib ; + y1 = 1.2ex ; y3 = 1.7ex ; + x3 = 0.2w = w - x1 ; + y2 = good.y(0.5[y1,y3]) ; x2 = 0.5[x1,x3] ; + z1' = z1 + 0.05em*dir(penangle) ; + z3' = z3 + 0.05em*dir(penangle+180) ; + draw z1 .. z1' .. z2 .. z3' .. z3 ; +endchar ; + +beginchar(19,0.35em#,ex#,0) ; "Raised S hook" ; + pickup tehta_nib ; + x1 = -0.05em ; top y1 = ex ; + rt x2 = w - curve_sidebar ; y2 = y1 - 0.5ex ; + x3 = 0.5[x1,x2] ; y3 = 1.1[y1,y2] ; + draw z1 .. tension 4 and 2 .. z2{down} .. z3 ; +endchar ; + +beginchar(20,0.35em#,0,desc#) ; "Lowered S hook" ; + pickup tehta_nib ; + x1 = -0.08em ; y1 = 0 ; + rt x2 = w - curve_sidebar ; y2 = y1 - 0.5ex ; + x3 = 0.5[x1,x2] ; y3 = 1.1[y1,y2] ; + draw z1 .. tension 4 and 2 .. z2{down} .. z3 ; +endchar ; + +beginchar("!",0.5em#,asc#,0) ; "Exclamation mark" ; + pickup main_nib ; + x1 = x2 = good.x 0.5w ; + y1 = 0.8asc ; y2 = 0.2ex ; + z1' = z1 + 0.08em*dir(penangle) ; + z2' = z2 - 0.08em*dir(penangle) ; + draw z1' .. z1 .. tension 4 .. z2 .. z2' ; +endchar ; + +beginchar("?",0.5em#,asc#,0) ; "Question mark" ; + pickup main_nib ; + lft x1 = round(0.1em) ; top y1 = round(0.9asc) ; + x2 = x1 ; y2 = 0.2ex ; + draw_telco(1,2)("t") ; + z2' = z2 + 0.2em*dir(penangle-150) ; + draw z2{z2-z1} .. z2'{dir(penangle+180)} ; + x3 = x4 = x5 = x1 ; + y5 = 0.0[y2,y1] ; y4 = 0.4[y2,y1] ; y3 = 0.75[y2,y1] ; + x6 = good.x(w-0.1em) ; x7 = good.x(w-0.08em) ; + y6 = 0.8[y2,y1] ; y7 = 0.47[y2,y1] ; + draw z3{dir penangle} ... z6{down} ... z4{dir(penangle+185)} ; + draw z4{dir penangle} ... z7{down} ... z5{dir(penangle+185)} ; + labels(1,2,3,4,5,6,7) ; +endchar ; + |