s-fonts-vectors.lua /size: 3936 b    last modification: 2020-07-01 14:35
1if not modules then modules = { } end modules ['s-fonts-vectors'] = {
2    version   = 1.001,
3    comment   = "companion to s-fonts-vectors.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
9moduledata.fonts             = moduledata.fonts             or { }
10moduledata.fonts.protrusions = moduledata.fonts.protrusions or { }
11moduledata.fonts.expansions  = moduledata.fonts.expansions  or { }
12
13local NC, NR = context.NC, context.NR
14
15local classes = fonts.protrusions.classes
16local vectors = fonts.protrusions.vectors
17
18function moduledata.fonts.protrusions.showvector(specification)
19    specification = interfaces.checkedspecification(specification)
20    local vector = vectors[specification.name or "?"]
21    if vector then
22        context.blank()
23        context.startcolumns { n = specification.columns or 3, balance="yes"  }
24            context.starttabulate { "|T||cw(.5em)||" }
25                for unicode, values in table.sortedhash(vector) do
26                    NC() context("%U",unicode)
27                    NC() context("%.02f",values[1])
28                    NC() context("%c",unicode)
29                    NC() context("%.02f",values[2])
30                    NC() NR()
31                end
32            context.stoptabulate()
33        context.stopcolumns()
34        context.blank()
35    end
36end
37
38function moduledata.fonts.protrusions.showclass(specification)
39    specification = interfaces.checkedspecification(specification)
40    local class = specification.name and classes[specification.name]
41    local classes = class and { class} or classes
42    context.starttabulate { "|l|l|r|r|r|" }
43        NC() context.bold("name")
44        NC() context.bold("vector")
45        NC() context.bold("factor")
46        NC() context.bold("left")
47        NC() context.bold("right")
48        NC() NR()
49        for name, class in table.sortedhash(classes) do
50            NC() context(name)
51            NC() context(class.vector)
52            NC() context("%.02f",class.factor)
53            NC() context("%.02f",class.left)
54            NC() context("%.02f",class.right)
55            NC() NR()
56        end
57    context.stoptabulate()
58end
59
60local classes = fonts.expansions.classes
61local vectors = fonts.expansions.vectors
62
63function moduledata.fonts.expansions.showvector(specification)
64    specification = interfaces.checkedspecification(specification)
65    local vector = vectors[specification.name or "?"]
66    if vector then
67        context.blank()
68        context.startcolumns { n = specification.columns or 3, balance="yes"  }
69            context.starttabulate { "|T|cw(.5em)||" }
70                for unicode, value in table.sortedhash(vector) do
71                    NC() context("%U",unicode)
72                    NC() context("%c",unicode)
73                    NC() context("%.02f",value)
74                    NC() NR()
75                end
76            context.stoptabulate()
77        context.stopcolumns()
78        context.blank()
79    end
80end
81
82function moduledata.fonts.expansions.showclass(specification)
83    specification = interfaces.checkedspecification(specification)
84    local class = specification.name and classes[specification.name]
85    local classes = class and { class} or classes
86    context.starttabulate { "|l|l|r|r|r|" }
87        NC() context.bold("name")
88        NC() context.bold("vector")
89        NC() context.bold("step")
90        NC() context.bold("factor")
91        NC() context.bold("stretch")
92        NC() context.bold("shrink")
93        NC() NR()
94        for name, class in table.sortedhash(classes) do
95            NC() context(name)
96            NC() context(class.vector)
97            NC() context("%.02f",class.step)
98            NC() context("%.02f",class.factor)
99            NC() context("% 2i",class.stretch)
100            NC() context("% 2i",class.shrink)
101            NC() NR()
102        end
103    context.stoptabulate()
104end
105