From c15b609a52b61a317ebdae81beac7b8645d120c1 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 30 May 2011 21:37:24 +0000 Subject: fdsymbol (30may11) git-svn-id: svn://tug.org/texlive/trunk@22691 c570f23f-e606-0410-a88d-b1316a301751 --- .../fonts/source/public/fdsymbol/fdbase.mf | 129 ++++++++++++--------- 1 file changed, 71 insertions(+), 58 deletions(-) (limited to 'Master/texmf-dist/fonts/source/public/fdsymbol/fdbase.mf') diff --git a/Master/texmf-dist/fonts/source/public/fdsymbol/fdbase.mf b/Master/texmf-dist/fonts/source/public/fdsymbol/fdbase.mf index 51dd7970f31..7c5b193d3d0 100644 --- a/Master/texmf-dist/fonts/source/public/fdsymbol/fdbase.mf +++ b/Master/texmf-dist/fonts/source/public/fdsymbol/fdbase.mf @@ -10,7 +10,7 @@ design_size := 10; font_size design_size * pt#; if known ps_output: - font_version := "1.002"; + font_version := "1.003"; font_comment := "Copyright (c) 2011, Michael Ummels. This Font Software is licensed under the SIL Open Font License, Version 1.1."; fi @@ -161,11 +161,12 @@ def beginorder(expr sign, width, spread) = right_point := centre + sign * (w/2 - side_bearing - line_thickness/2) * right; enddef; +% Make strokes run anti-clockwise vardef stroke text t = forsuffixes e = l, r: path_.e := t; endfor - path_.l -- reverse path_.r -- cycle + path_.r -- reverse path_.l -- cycle enddef; % Shapes @@ -211,18 +212,20 @@ enddef; % Draw macros def draw_straight(expr orig, dest, thick, extend) = - pair p[].l, p[].r; - - theta := angle (dest - orig); - if extend: - 1/2[p1.l,p1.r] = orig - 1/2thick * dir theta; - 1/2[p2.l,p2.r] = dest + 1/2thick * dir theta; - else: - 1/2[p1.l,p1.r] = orig; - 1/2[p2.l,p2.r] = dest; - fi - p1.l - p1.r = p2.l - p2.r = thick * dir (theta + 90); - fill p1.l -- p2.l -- p2.r -- p1.r -- cycle; + begingroup; + pair p[].l, p[].r; + + theta := angle (dest - orig); + if extend: + 1/2[p1.l,p1.r] = orig - 1/2thick * dir theta; + 1/2[p2.l,p2.r] = dest + 1/2thick * dir theta; + else: + 1/2[p1.l,p1.r] = orig; + 1/2[p2.l,p2.r] = dest; + fi + p1.l - p1.r = p2.l - p2.r = thick * dir (theta + 90); + fill stroke p1.e -- p2.e; + endgroup; enddef; def draw_line(expr orig, dest, extend) = @@ -410,8 +413,8 @@ def draw_smile(suffix $)(expr sign, lc, rc, spread, thick, round) = if round: penpos2$(thick, angle(rc - lc) + sign * 90); - fill stroke z0$.e{dir (angle(rc - lc) - sign * theta)} .. - {rc - lc}z2$.e{rc - lc} .. {dir (angle(rc - lc) + sign * theta)}z1$.e; + fill stroke z0$.e{dir (angle(rc - lc) - sign * theta)} .. + {rc - lc}z2$.e{rc - lc} .. {dir (angle(rc - lc) + sign * theta)}z1$.e; else: penpos2$(thick / cosd theta, angle(rc - lc) + sign * 90); @@ -421,14 +424,18 @@ def draw_smile(suffix $)(expr sign, lc, rc, spread, thick, round) = penlabels(0$, 1$, 2$); enddef; -def stroke_through(expr pos, spread) = +def stroke_through_angle(expr pos, spread, angle) = begingroup; - stroke_len := 1/2spread / cosd 15; + stroke_len := 1/2spread / cosd (90 - angle); - draw_straight(pos + stroke_len * dir 75, pos - stroke_len * dir 75, stroke_through_thickness, true); + draw_straight(pos + stroke_len * dir angle, pos - stroke_len * dir angle, stroke_through_thickness, true); endgroup; enddef; +def stroke_through(expr pos, spread) = + stroke_through_angle(pos, spread, 75); +enddef; + def stroke_through_arrow(expr pos, alpha, spread)(text angles) = begingroup; stroke_dir := arrow_dir + select(alpha/45)(angles); @@ -467,7 +474,7 @@ def draw_product(expr centre, width, height, sign, thick) = x10 = x6r; x11 = x7l; - fill z0l -- z0r{dir (sign * 20)} .. {sign * up}z6l -- z8l{sign * up} .. {dir (180 - sign * 15)}z2l -- z2r -- z3r -- z3l{dir (180 + sign * 15)} .. {sign * down}z9r -- z7r{sign * down} .. {dir (-sign * 20)}z1r -- z1l -- z5l -- z5r{dir (sign * 20)} .. {sign * up}z7l -- z11 -- z10 -- z6r{sign * down} .. {dir (-sign * 20)}z4r -- z4l -- cycle; + fill z0l -- z4l -- z4r{dir (sign * 160)} .. {sign * up}z6r -- z10 -- z11 -- z7l{sign * down} .. {dir (-sign * 160)}z5r -- z5l -- z1l -- z1r{dir (sign * 160)} .. {sign * up}z7r -- z9r{sign * up} .. {dir (sign * 15)}z3l -- z3r -- z2r -- z2l{dir (-sign * 15)} .. {sign * down}z8l -- z6l{sign * down} .. {dir (-sign * 160)}z0r -- cycle; penlabels(0,1,2,3,4,5,6,7,8,9,10,11); enddef; @@ -555,51 +562,57 @@ def draw_integral(suffix $)(expr scale, centre, thick) = enddef; def draw_arrowhead_left(expr pos, angle, spread, thick) = - pair p[], p[].l, p[].r; - - p1 = pos; - p2 = pos + sqrt(2) * (spread + 1/2thick)/2 * dir (angle + 135); - 1/2[p1.l, p1.r] = p1; - 1/2[p2.l, p2.r] = p2; - p1.r - p1 = thick/(2 * sind 45) * dir angle; - p2.r - p2 = thick/2 * dir (angle + 45); - p3.l = whatever[p2.l,p1.l]; - p3.l = pos + 1/2thick * dir (angle - 90) + whatever * dir angle; - p3.r - p1.r = whatever * dir (angle - 105); - p3.r = pos + 1/2thick * dir (angle - 90) + whatever * dir angle; - fill p1.r -- p2.r -- p2.l -- p3.l -- p3.r -- cycle; + begingroup; + pair p[], p[].l, p[].r; + + p1 = pos; + p2 = pos + sqrt(2) * (spread + 1/2thick)/2 * dir (angle + 135); + 1/2[p1.l, p1.r] = p1; + 1/2[p2.l, p2.r] = p2; + p1.r - p1 = thick/(2 * sind 45) * dir angle; + p2.r - p2 = thick/2 * dir (angle + 45); + p3.l = whatever[p2.l,p1.l]; + p3.l = pos + 1/2thick * dir (angle - 90) + whatever * dir angle; + p3.r - p1.r = whatever * dir (angle - 105); + p3.r = pos + 1/2thick * dir (angle - 90) + whatever * dir angle; + fill p1.r -- p2.r -- p2.l -- p3.l -- p3.r -- cycle; + endgroup; enddef; def draw_arrowhead_right(expr pos, angle, spread, thick) = - pair p[], p[].l, p[].r; - - p1 = pos; - p2 = pos + sqrt(2) * (spread + 1/2thick)/2 * dir (angle - 135); - 1/2[p1.l, p1.r] = p1; - 1/2[p2.l, p2.r] = p2; - p1.r - p1 = thick/(2 * sind 45) * dir angle; - p2.r - p2 = thick/2 * dir (angle - 45); - p3.l = whatever[p2.l,p1.l]; - p3.l = pos + 1/2thick * dir (angle + 90) + whatever * dir angle; - p3.r - p1.r = whatever * dir (angle + 105); - p3.r = pos + 1/2thick * dir (angle + 90) + whatever * dir angle; - fill p1.r -- p2.r -- p2.l -- p3.l -- p3.r -- cycle; + begingroup; + pair p[], p[].l, p[].r; + + p1 = pos; + p2 = pos + sqrt(2) * (spread + 1/2thick)/2 * dir (angle - 135); + 1/2[p1.l, p1.r] = p1; + 1/2[p2.l, p2.r] = p2; + p1.r - p1 = thick/(2 * sind 45) * dir angle; + p2.r - p2 = thick/2 * dir (angle - 45); + p3.l = whatever[p2.l,p1.l]; + p3.l = pos + 1/2thick * dir (angle + 90) + whatever * dir angle; + p3.r - p1.r = whatever * dir (angle + 105); + p3.r = pos + 1/2thick * dir (angle + 90) + whatever * dir angle; + fill p1.r -- p3.r -- p3.l -- p2.l -- p2.r -- cycle; + endgroup; enddef; def draw_arrowhead(expr pos, angle, spread, thick) = - pair p[], p[].l, p[].r; + begingroup; + pair p[], p[].l, p[].r; - p1 = pos; - p2 = pos + sqrt(2) * spread/2 * dir (angle + 135); - p3 = pos + sqrt(2) * spread/2 * dir (angle - 135); - 1/2[p1.l, p1.r] = p1; - 1/2[p2.l, p2.r] = p2; - 1/2[p3.l, p3.r] = p3; - p1.r - p1 = thick/(2 * sind 45) * dir angle; - p2.r - p2 = thick/2 * dir (angle + 45); - p3.r - p3 = thick/2 * dir (angle - 45); - - fill p1.r -- p2.r -- p2.l -- p1.l -- p3.l -- p3.r -- cycle; + p1 = pos; + p2 = pos + sqrt(2) * spread/2 * dir (angle + 135); + p3 = pos + sqrt(2) * spread/2 * dir (angle - 135); + 1/2[p1.l, p1.r] = p1; + 1/2[p2.l, p2.r] = p2; + 1/2[p3.l, p3.r] = p3; + p1.r - p1 = thick/(2 * sind 45) * dir angle; + p2.r - p2 = thick/2 * dir (angle + 45); + p3.r - p3 = thick/2 * dir (angle - 45); + + fill p1.r -- p2.r -- p2.l -- p1.l -- p3.l -- p3.r -- cycle; + endgroup; enddef; % intersect the arrowhead curve with a path -- cgit v1.2.3