1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
if not modules then modules = { } end modules ['luat-dum'] = {
version = 1.001,
comment = "companion to luatex-*.tex",
author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
copyright = "PRAGMA ADE / ConTeXt Development Team",
license = "see context related readme files"
}
local dummyfunction = function() end
statistics = {
register = dummyfunction,
starttiming = dummyfunction,
stoptiming = dummyfunction,
}
directives = {
register = dummyfunction,
enable = dummyfunction,
disable = dummyfunction,
}
trackers = {
register = dummyfunction,
enable = dummyfunction,
disable = dummyfunction,
}
experiments = {
register = dummyfunction,
enable = dummyfunction,
disable = dummyfunction,
}
storage = {
register = dummyfunction,
shared = { },
}
logs = {
report = dummyfunction,
simple = dummyfunction,
}
tasks = {
new = dummyfunction,
actions = dummyfunction,
appendaction = dummyfunction,
prependaction = dummyfunction,
}
callbacks = {
register = function(n,f) return callback.register(n,f) end,
}
-- we need to cheat a bit here
texconfig.kpse_init = true
resolvers = resolvers or { } -- no fancy file helpers used
local remapper = {
otf = "opentype fonts",
ttf = "truetype fonts",
ttc = "truetype fonts",
dfont = "truetype dictionary",
cid = "cid maps",
fea = "font feature files",
}
function resolvers.find_file(name,kind)
name = string.gsub(name,"\\","\/")
kind = string.lower(kind)
return kpse.find_file(name,(kind and kind ~= "" and (remapper[kind] or kind)) or file.extname(name,"tex"))
end
function resolvers.findbinfile(name,kind)
if not kind or kind == "" then
kind = file.extname(name) -- string.match(name,"%.([^%.]-)$")
end
return resolvers.find_file(name,(kind and remapper[kind]) or kind)
end
-- Caches ... I will make a real stupid version some day when I'm in the
-- mood. After all, the generic code does not need the more advanced
-- ConTeXt features. Cached data is not shared between ConTeXt and other
-- usage as I don't want any dependency at all. Also, ConTeXt might have
-- different needs and tricks added.
caches = { }
--~ containers.usecache = true
function caches.setpath(category,subcategory)
-- local root = kpse.var_value("TEXMFCACHE") or ""
-- if root == "" then
-- root = kpse.var_value("VARTEXMF") or ""
-- end
local var = kpse.var_value("TEXMFVAR")
local root = var and (var .. "/luatex/generic/luaotfload/") or ""
if root ~= "" then
root = file.join(root,category)
lfs.mkdir(root)
root = file.join(root,subcategory)
lfs.mkdir(root)
return lfs.isdir(root) and root
end
end
local function makefullname(path,name)
if path and path ~= "" then
name = "temp-" and name -- clash prevention
return file.addsuffix(file.join(path,name),"lua")
end
end
function caches.iswritable(path,name)
local fullname = makefullname(path,name)
return fullname and file.iswritable(fullname)
end
function caches.loaddata(path,name)
local fullname = makefullname(path,name)
if fullname then
local data = loadfile(fullname)
return data and data()
end
end
function caches.savedata(path,name,data)
local fullname = makefullname(path,name)
if fullname then
table.tofile(fullname,data,'return',false,true,false)
end
end
|