1
2
3
4
5
6
7
8
9
10
11
12
13
14\startluacode
15 function commands . showsymbolset ( collection , symbols , fontid )
16 if type ( symbols ) = = " string " then
17 symbols = utilities . parsers . settings_to_array ( symbols )
18 end
19 local options = { framecolor = " orange " , rulethickness = " .8pt " , offset = interfaces . variables . overlay }
20 local list = table . tohash ( symbols )
21 local alsofont = fontid > 0
22 local defined = # symbols > 0
23 local byname = false
24 if alsofont then
25 local is_symbol = characters . is_symbol
26 local chardata = characters . data
27 local resources = fonts . hashes . resources [ fontid ]
28 local characters = fonts . hashes . characters [ fontid ]
29 if resources and characters then
30 local unicodes = resources . unicodes
31 if unicodes then
32 for name , unicode in next , unicodes do
33 if not list [ name ] and name ~ = " .notdef " then
34 local c = rawget ( chardata , unicode )
35 if not c or is_symbol [ c . category ] then
36 list [ name ] = false
37 byname = true
38 end
39 end
40 end
41 end
42 end
43 end
44 local detail = defined and byname
45 context . start ( )
46 context . forcesymbolset { collection }
47 context . starttabulate { detail and " |lT|l|l|lT| " or " |lT|l|l| " }
48 for symbol , how in table . sortedhash ( list ) do
49 context . NC ( )
50 if detail and how then
51 context . bold ( symbol )
52 else
53 context ( symbol )
54 end
55 context . NC ( )
56 context . symbol ( symbol )
57 context . NC ( )
58 context . framed ( options , context . nested . symbol ( symbol ) )
59 context . NC ( )
60 if detail and how then
61 context . bold ( " defined " )
62 context . NC ( )
63 end
64 context . NR ( )
65 end
66 context . stoptabulate ( )
67 context . stop ( )
68 end
69\stopluacode
70
71\unprotect
72
73\unexpanded \gdef \showsymbolset
74 { \dosingleargument \symb_show_set }
75
76\gdef \symb_show_set [# 1 ]
77 { \begingroup
78 \edef \p_font { \begincsname \??symboldefault # 1 \endcsname }
79 \begingroup
80 \ifx \p_font \empty
81 \global \globalscratchcounter \zerocount
82 \else
83 \definedfont [ \p_font ]
84 \global \globalscratchcounter \fontid\font\relax
85 \fi
86 \endgroup
87 \ctxcommand {
88 showsymbolset (
89 " #1 " ,
90 " \symbolset{#1} " ,
91 \the \globalscratchcounter
92 ) }
93 \endgroup }
94
95\protect
96
97\continueifinputfile { symb run . mkiv }
98
99\usesymbols [ cc ]
100
101\starttext
102
103 \showsymbolset [ cc ]
104
105 \symbol [ cc ][ cc by sa nc ]
106
107\stoptext
108 |