summaryrefslogtreecommitdiff
path: root/fonts/utilities/mff-29/dkpunct.mf
diff options
context:
space:
mode:
Diffstat (limited to 'fonts/utilities/mff-29/dkpunct.mf')
-rw-r--r--fonts/utilities/mff-29/dkpunct.mf86
1 files changed, 86 insertions, 0 deletions
diff --git a/fonts/utilities/mff-29/dkpunct.mf b/fonts/utilities/mff-29/dkpunct.mf
new file mode 100644
index 0000000000..7986c955fa
--- /dev/null
+++ b/fonts/utilities/mff-29/dkpunct.mf
@@ -0,0 +1,86 @@
+% dkpunct.mf - punctuation for Ditko
+% Copyright (C) 1990 Damian Cugley
+% - pdc Sun. 30 Sept. 1990
+
+if testing: endinput fi
+
+% - pdc Sun. 30 Sept. 1990
+
+def straight_line(expr code, wd_u) =
+ beginchar(code, wd_u, 1/2penh# + 1/2cap_ht#, 0v#, 1/3, 1/3);
+ pickup square_pen;
+ top lft z1 = (l, h); top rt z2 = (r, h);
+ draw z1--z2;
+ labels(1,2);
+ endchar;
+enddef;
+
+"hyphen"; straight_line("-", 6);
+ifcode short_dash: "short dash";
+ straight_line(code.short_dash, 12);
+fi
+ifcode long_dash: "long dash";
+ straight_line(code.long_dash, 18);
+fi
+
+%% Comma-like objects:
+
+vardef draw_comma@# =
+ fill top lft z@# -- bot lft z@# + dip_dp*down
+ -- bot rt z@# -- top rt z@# -- cycle;
+enddef;
+
+vardef draw_inverted_comma@# =
+ fill top lft z@# -- bot lft z@#
+ -- bot rt z@# -- top rt z@# + dip_dp*up -- cycle;
+enddef;
+
+def quotation_marks(expr code, double_b, left_b) =
+ stdchar(code, if double_b: 1 + 2penw#/u# else: penw#/u# fi, 1, 1);
+ pickup square_pen;
+ top lft z1 = (l, h if left_b: - dip_dp fi);
+ if left_b: draw_inverted_comma1; else: draw_comma1; fi
+ if double_b:
+ top rt z2 = (r, h if left_b: - dip_dp fi);
+ if left_b: draw_inverted_comma2; else: draw_comma2; fi
+ fi
+ labels(1 if double_b: , 2 fi);
+ endchar;
+enddef;
+
+"apostrophe"; quotation_marks("'", false, false);
+"inverted comma"; quotation_marks("`", false, true);
+ifcode left_quote: "left double quote";
+ quotation_marks(code.left_quote, true, true);
+fi
+ifcode right_quote: "right double quote";
+ quotation_marks(code.right_quote, true, false);
+fi
+
+ifcode german_quote: "german left quotation mark";
+ beginchar(code.german_quote, 1 + 2penw#/u#, penh#, 0v#, 1, 1);
+ pickup square_pen;
+ top lft z1 = (l, h); draw_comma1;
+ top rt z2 = (r, h); draw_comma2;
+ labels(1, 2);
+ endchar;
+fi
+
+def semicolon(expr code, dot_b, comma_b) =
+ beginchar(code, penw#/u#, if dot_b: cap_ht# else: penh# fi,
+ if comma_b: dip_dp# else: 0v# fi, 1, 1);
+ pickup square_pen;
+ if dot_b:
+ top lft z1 = (l, h); drawdot z1; labels(1);
+ fi
+ bot lft z2 = (l, baseline);
+ if comma_b: draw_comma2; else: drawdot z2; fi
+ labels(2);
+ endchar
+enddef;
+
+"full stop"; semicolon(".", false, false);
+"comma"; semicolon(",", false, true);
+"colon"; semicolon(":", true, false);
+"semicolon"; semicolon(";", true, true);
+