1if not modules then modules = { } end modules ['font-vfc'] = {
2 version = 1.001,
3 comment = "companion to font-ini.mkiv and hand-ini.mkiv",
4 author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
5 copyright = "PRAGMA ADE / ConTeXt Development Team",
6 license = "see context related readme files"
7}
8
9local select, type = select, type
10local insert = table.insert
11
12local fonts = fonts
13local helpers = fonts.helpers
14
15local setmetatableindex = table.setmetatableindex
16
17
18
19
20
21local push = { "push" }
22local pop = { "pop" }
23local dummy = { "comment" }
24
25function helpers.prependcommands(commands,...)
26 insert(commands,1,push)
27 for i=select("#",...),1,-1 do
28 local s = (select(i,...))
29 if s then
30 insert(commands,1,s)
31 end
32 end
33 insert(commands,pop)
34 return commands
35end
36
37function helpers.appendcommands(commands,...)
38 insert(commands,1,push)
39 insert(commands,pop)
40 for i=1,select("#",...) do
41 local s = (select(i,...))
42 if s then
43 insert(commands,s)
44 end
45 end
46 return commands
47end
48
49function helpers.prependcommandtable(commands,t)
50 insert(commands,1,push)
51 for i=#t,1,-1 do
52 local s = t[i]
53 if s then
54 insert(commands,1,s)
55 end
56 end
57 insert(commands,pop)
58 return commands
59end
60
61function helpers.appendcommandtable(commands,t)
62 insert(commands,1,push)
63 insert(commands,pop)
64 for i=1,#t do
65 local s = t[i]
66 if s then
67 insert(commands,s)
68 end
69 end
70 return commands
71end
72
73
74
75
76local char = setmetatableindex(function(t,k)
77
78 local v = { "slot", 0, k }
79 t[k] = v
80 return v
81end)
82
83local right = setmetatableindex(function(t,k)
84 local v = { "right", k }
85 t[k] = v
86 return v
87end)
88
89local left = setmetatableindex(function(t,k)
90 local v = { "right", -k }
91 t[k] = v
92 return v
93end)
94
95local down = setmetatableindex(function(t,k)
96 local v = { "down", k }
97 t[k] = v
98 return v
99end)
100
101local up = setmetatableindex(function(t,k)
102 local v = { "down", -k }
103 t[k] = v
104 return v
105end)
106
107
108
109
110
111
112
113helpers.commands = utilities.storage.allocate {
114 char = char,
115 right = right,
116 left = left,
117 down = down,
118 up = up,
119 push = push,
120 pop = pop,
121 dummy = dummy,
122}
123
124 |