This repository has been archived by the owner on Jan 7, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 15
/
otfl-fonts-cbk.lua
68 lines (62 loc) · 2.13 KB
/
otfl-fonts-cbk.lua
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
if not modules then modules = { } end modules ['luatex-fonts-cbk'] = {
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"
}
if context then
texio.write_nl("fatal error: this module is not for context")
os.exit()
end
local fonts = fonts
local nodes = nodes
-- Fonts: (might move to node-gef.lua)
local traverse_id = node.traverse_id
local glyph_code = nodes.nodecodes.glyph
function nodes.handlers.characters(head)
local fontdata = fonts.hashes.identifiers
if fontdata then
local usedfonts, done, prevfont = { }, false, nil
for n in traverse_id(glyph_code,head) do
local font = n.font
if font ~= prevfont then
prevfont = font
local used = usedfonts[font]
if not used then
local tfmdata = fontdata[font] --
if tfmdata then
local shared = tfmdata.shared -- we need to check shared, only when same features
if shared then
local processors = shared.processes
if processors and #processors > 0 then
usedfonts[font] = processors
done = true
end
end
end
end
end
end
if done then
for font, processors in next, usedfonts do
for i=1,#processors do
local h, d = processors[i](head,font,0)
head, done = h or head, done or d
end
end
end
return head, true
else
return head, false
end
end
function nodes.simple_font_handler(head)
-- lang.hyphenate(head)
head = nodes.handlers.characters(head)
nodes.injections.handler(head)
nodes.handlers.protectglyphs(head)
head = node.ligaturing(head)
head = node.kerning(head)
return head
end