1Font::TTF::Silf(3) User Contributed Perl Documentation Font::TTF::Silf(3)
2
3
4
6 Font::TTF::Silf - The main Graphite table
7
9 The Silf table holds the core of the Graphite rules for a font. A Silf
10 table has potentially multiple silf subtables, although there is
11 usually only one. Within a silf subtable, there are a number of passes
12 which contain the actual finite state machines to match rules and the
13 constraint and action code to be executed when a rule matches.
14
16 Version
17 Silf table format version
18
19 Compiler
20 Lowest compiler version necessary to fully support the semantics
21 expressed in this Graphite description
22
23 SILF
24 An array of Silf subtables
25
26 maxGlyphID
27 The maximum glyph id referenced including pseudo and non glyphs
28
29 Ascent
30 Extra ascent to be added to the font ascent.
31
32 Descent
33 Extra descent to be added to the font descent. Both values are
34 assumed to be positive for a descender below the base line.
35
36 substPass
37 Pass index into PASS of the first substitution pass.
38
39 posPass
40 Pass index into PASS of the first positioning pass.
41
42 justPass
43 Pass index into PASS of the first justification pass.
44
45 bidiPass
46 Pass index of the pass before which the bidirectional
47 processing pass will be executed. 0xFF indicates that there is
48 no bidi pass to be executed.
49
50 Flags
51 A bitfield of flags:
52
53 0 - Indicates there are line end contextual rules in one of the passes
54
55 maxPreContext
56 Maximum length of a context preceding a cross line boundary
57 contextualisation.
58
59 maxPostContext
60 Maximum length of a context following a cross line boundary
61 contextualsation.
62
63 attrPseudo
64 Glyph attribute for the actual glyph id associated with a
65 pseudo glyph.
66
67 attrBreakWeight
68 Glyph attribute number of the attribute holding the default
69 breakweight associated with a glyph.
70
71 attrDirectionality
72 Glyph attribute number of the attribute holding the default
73 directionality value associated with a glyph.
74
75 JUST
76 The may be a number of justification levels each with their own
77 property values. This points to an array of hashes, one for
78 each justification level.
79
80 attrStretch
81 Glyph attribute number for the amount of stretch allowed
82 before this glyph.
83
84 attrShrink
85 Glyph attribute number for the amount of shrink allowed
86 before this glyph.
87
88 attrStep
89 Glyph attribute number specifying the minimum granularity
90 of actual spacing associated with this glyph at this level.
91
92 attrWeight
93 Glyph attribute number giving the weight associated with
94 spreading space across a run of glyphs.
95
96 runto
97 Which level starts the next stage.
98
99 numLigComp
100 Number of initial glyph attributes that represent ligature
101 components
102
103 numUserAttr
104 Number of user defined slot attributes referenced. Tells the
105 engine how much space to allocate to a slot for user
106 attributes.
107
108 maxCompPerLig
109 Maximum number of components per ligature.
110
111 direction
112 Supported directions for this writing system
113
114 CRIT_FEATURE
115 Array of critical features.
116
117 scripts
118 Array of script tags that indicate which set of GDL rules to
119 execute if there is more than one in a font.
120
121 lbGID
122 Glyph ID of the linebreak pseudo glyph.
123
124 pseudos
125 Hash of Unicode values to pseduo glyph ids.
126
127 classes
128 This is an array of classes, each of which is an array of glyph
129 ids in class order.
130
131 PASS
132 The details of rules and actions are stored in passes. This
133 value is an array of pass subobjects one for each pass.
134
135 flags
136 This is a bitfield:
137
138 0 - If true, this pass makes no change to the slot stream considered as a sequence of glyph ids.
139 Only slot attributes are expected to change (for example during positioning).
140
141 maxRuleLoop
142 How many times the engine will allow rules to be tested and
143 run without the engine advancing through the input slot
144 stream.
145
146 maxRuleContext
147 Number of slots of input needed to run this pass.
148
149 maxBackup
150 Number of slots by which the following pass needs to trail
151 this pass (i.e. the maximum this pass is allowed to back
152 up).
153
154 numRules
155 Number of action code blocks, and so uncompressed rules, in
156 this pass.
157
158 numRows
159 Number of rows in the finite state machine.
160
161 numTransitional
162 Number of rows in the finite state machine that are not
163 final states. This specifies the number of rows in the fsm
164 element.
165
166 numSuccess
167 Number of success states. A success state may also be a
168 transitional state.
169
170 numColumns
171 Number of columns in the finite state machine.
172
173 colmap
174 A hash, indexed by glyphid, that gives the fsm column
175 number associated with that glyphid. If not present, then
176 the glyphid is not part of the fsm and will finish fsm
177 processing if it occurs.
178
179 rulemap
180 An array of arrays, one for each success state. Each array
181 holds a list of rule numbers associated with that state.
182
183 minRulePreContext
184 Minimum number of items in a rule's precontext.
185
186 maxRulePreContext
187 The maximum number of items in any rule's precontext.
188
189 startStates
190 Array of starting state numbers dependeing on the length of
191 actual precontext. There are maxRulePreContext -
192 minRulePreContext + 1 of these.
193
194 ruleSortKeys
195 An array of sort keys one for each rule giving the length
196 of the rule including its precontext.
197
198 rulePreContexts
199 An array of precontext lengths for each rule.
200
201 fsm A two dimensional array such that $p->{'fsm'}[$row][$col]
202 gives the row of the next node to try in the fsm.
203
204 passConstraintLen
205 Length in bytes of the passConstraint code.
206
207 passConstraintCode
208 A byte string holding the pass constraint code.
209
210 constraintCode
211 An array of byte strings holding the constraint code for
212 each rule.
213
214 actionCode
215 An array of byte strings holding the action code for each
216 rule.
217
218 @opcodes
219 Each array holds the name of the opcode, the number of operand bytes
220 and a string describing the operands. The characters in the string
221 have the following meaning:
222
223 c - lsb of class id
224 C - msb of class id
225 f - feature index
226 g - lsb of glyph attribute id
227 G - msb of glyph attribute id
228 l - lsb of a 32-bit extension to a 16-bit number
229 L - msb of a 32-bit number
230 m - glyph metric id
231 n - lsb of a number
232 N - msb of a 16-bit number
233 o - offset (jump)
234 s - slot reference
235 S - slot attribute id
236 v - variable number of following arguments
237
238 read
239 Reads the Silf table into the internal data structure
240
241 out
242 Outputs a Silf data structure to a font file in binary format
243
244 $t->minsize()
245 Returns the minimum size this table can be. If it is smaller than this,
246 then the table must be bad and should be deleted or whatever.
247
249 Martin Hosken <http://scripts.sil.org/FontUtils>.
250
252 Copyright (c) 1998-2016, SIL International (http://www.sil.org)
253
254 This module is released under the terms of the Artistic License 2.0.
255 For details, see the full text of the license in the file LICENSE.
256
257
258
259perl v5.36.0 2023-01-20 Font::TTF::Silf(3)