scrp-tib.lua /size: 2026 b    last modification: 2020-07-01 14:35
1if not modules then modules = { } end modules ['scrp-tib'] = {
2    version   = 1.001,
3    comment   = "companion to scrp-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 nuts               = nodes.nuts
10
11local getnext            = nuts.getnext
12local getattr            = nuts.getattr
13local ischar             = nuts.ischar
14
15local getscriptstatus    = scripts.getstatus
16
17local inserters          = scripts.inserters
18local colors             = scripts.colors
19
20local injectors = {
21    breaking_tsheg = inserters.space_after
22}
23
24colors.breaking_tsheg    = "trace:1"
25colors.nonbreaking_tsheg = "trace:2"
26
27local function process(head,first,last)
28    if first ~= last then
29        local current = first
30        while current do
31            local char, id = ischar(current)
32            if char then
33                local category = getscriptstatus(current)
34                if category then
35                    local injector = injectors[category]
36                    if injector then
37                        head, current = injector(head,current)
38                    end
39                end
40            end
41            if current == last then
42                break
43            else
44                current = getnext(current)
45            end
46        end
47    end
48end
49
50scripts.installmethod {
51    name     = "tibetan",
52    injector = process,
53    datasets = {
54        default = {
55            inter_character_space_factor   = 1,
56            inter_character_stretch_factor = 1,
57            inter_character_shrink_factor  = 1,
58        },
59        half = {
60            inter_character_space_factor   = 0.5,
61            inter_character_stretch_factor = 0.5,
62            inter_character_shrink_factor  = 0.5,
63        },
64        quarter = {
65            inter_character_space_factor   = 0.25,
66            inter_character_stretch_factor = 0.25,
67            inter_character_shrink_factor  = 0.25,
68        },
69    },
70}
71