You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
2.6 KiB
123 lines
2.6 KiB
if not modules then modules = { } end modules ['font-vfc'] = {
|
|
version = 1.001,
|
|
comment = "companion to font-ini.mkiv and hand-ini.mkiv",
|
|
author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
|
|
copyright = "PRAGMA ADE / ConTeXt Development Team",
|
|
license = "see context related readme files"
|
|
}
|
|
|
|
local select, type = select, type
|
|
local insert = table.insert
|
|
|
|
local fonts = fonts
|
|
local helpers = fonts.helpers
|
|
|
|
local setmetatableindex = table.setmetatableindex
|
|
local makeweak = table.makeweak
|
|
|
|
-- Helpers dealing with virtual fonts: beware, these are final values so
|
|
-- don't change the content of tables gotten this way!
|
|
|
|
local push = { "push" }
|
|
local pop = { "pop" }
|
|
local dummy = { "comment" }
|
|
|
|
function helpers.prependcommands(commands,...)
|
|
insert(commands,1,push)
|
|
for i=select("#",...),1,-1 do
|
|
local s = (select(i,...))
|
|
if s then
|
|
insert(commands,1,s)
|
|
end
|
|
end
|
|
insert(commands,pop)
|
|
return commands
|
|
end
|
|
|
|
function helpers.appendcommands(commands,...)
|
|
insert(commands,1,push)
|
|
insert(commands,pop)
|
|
for i=1,select("#",...) do
|
|
local s = (select(i,...))
|
|
if s then
|
|
insert(commands,s)
|
|
end
|
|
end
|
|
return commands
|
|
end
|
|
|
|
function helpers.prependcommandtable(commands,t)
|
|
insert(commands,1,push)
|
|
for i=#t,1,-1 do
|
|
local s = t[i]
|
|
if s then
|
|
insert(commands,1,s)
|
|
end
|
|
end
|
|
insert(commands,pop)
|
|
return commands
|
|
end
|
|
|
|
function helpers.appendcommandtable(commands,t)
|
|
insert(commands,1,push)
|
|
insert(commands,pop)
|
|
for i=1,#t do
|
|
local s = t[i]
|
|
if s then
|
|
insert(commands,s)
|
|
end
|
|
end
|
|
return commands
|
|
end
|
|
|
|
-- todo: maybe weak
|
|
-- todo: maybe indirect so that we can't change them
|
|
|
|
local char = setmetatableindex(function(t,k)
|
|
-- local v = { "char", k }
|
|
local v = { "slot", 0, k }
|
|
t[k] = v
|
|
return v
|
|
end)
|
|
|
|
local right = setmetatableindex(function(t,k)
|
|
local v = { "right", k }
|
|
t[k] = v
|
|
return v
|
|
end)
|
|
|
|
local left = setmetatableindex(function(t,k)
|
|
local v = { "right", -k }
|
|
t[k] = v
|
|
return v
|
|
end)
|
|
|
|
local down = setmetatableindex(function(t,k)
|
|
local v = { "down", k }
|
|
t[k] = v
|
|
return v
|
|
end)
|
|
|
|
local up = setmetatableindex(function(t,k)
|
|
local v = { "down", -k }
|
|
t[k] = v
|
|
return v
|
|
end)
|
|
|
|
-- makeweak(char)
|
|
-- makeweak(right)
|
|
-- makeweak(left)
|
|
-- makeweak(up)
|
|
-- makeweak(down)
|
|
|
|
helpers.commands = utilities.storage.allocate {
|
|
char = char,
|
|
right = right,
|
|
left = left,
|
|
down = down,
|
|
up = up,
|
|
push = push,
|
|
pop = pop,
|
|
dummy = dummy,
|
|
}
|
|
|
|
|