Show More
Commit Description:
force log out when password change
Commit Description:
force log out when password change
References:
File last commit:
Show/Diff file:
Action:
node_modules/fontkit/src/tables/cmap.js
| 127 lines
| 3.9 KiB
| application/javascript
| JavascriptLexer
|
r789 | import r from 'restructure'; | |||
let SubHeader = new r.Struct({ | ||||
firstCode: r.uint16, | ||||
entryCount: r.uint16, | ||||
idDelta: r.int16, | ||||
idRangeOffset: r.uint16 | ||||
}); | ||||
let CmapGroup = new r.Struct({ | ||||
startCharCode: r.uint32, | ||||
endCharCode: r.uint32, | ||||
glyphID: r.uint32 | ||||
}); | ||||
let UnicodeValueRange = new r.Struct({ | ||||
startUnicodeValue: r.uint24, | ||||
additionalCount: r.uint8 | ||||
}); | ||||
let UVSMapping = new r.Struct({ | ||||
unicodeValue: r.uint24, | ||||
glyphID: r.uint16 | ||||
}); | ||||
let DefaultUVS = new r.Array(UnicodeValueRange, r.uint32); | ||||
let NonDefaultUVS = new r.Array(UVSMapping, r.uint32); | ||||
let VarSelectorRecord = new r.Struct({ | ||||
varSelector: r.uint24, | ||||
defaultUVS: new r.Pointer(r.uint32, DefaultUVS, {type: 'parent'}), | ||||
nonDefaultUVS: new r.Pointer(r.uint32, NonDefaultUVS, {type: 'parent'}) | ||||
}); | ||||
let CmapSubtable = new r.VersionedStruct(r.uint16, { | ||||
0: { // Byte encoding | ||||
length: r.uint16, // Total table length in bytes (set to 262 for format 0) | ||||
language: r.uint16, // Language code for this encoding subtable, or zero if language-independent | ||||
codeMap: new r.LazyArray(r.uint8, 256) | ||||
}, | ||||
2: { // High-byte mapping (CJK) | ||||
length: r.uint16, | ||||
language: r.uint16, | ||||
subHeaderKeys: new r.Array(r.uint16, 256), | ||||
subHeaderCount: t => Math.max.apply(Math, t.subHeaderKeys), | ||||
subHeaders: new r.LazyArray(SubHeader, 'subHeaderCount'), | ||||
glyphIndexArray: new r.LazyArray(r.uint16, 'subHeaderCount') | ||||
}, | ||||
4: { // Segment mapping to delta values | ||||
length: r.uint16, // Total table length in bytes | ||||
language: r.uint16, // Language code | ||||
segCountX2: r.uint16, | ||||
segCount: t => t.segCountX2 >> 1, | ||||
searchRange: r.uint16, | ||||
entrySelector: r.uint16, | ||||
rangeShift: r.uint16, | ||||
endCode: new r.LazyArray(r.uint16, 'segCount'), | ||||
reservedPad: new r.Reserved(r.uint16), // This value should be zero | ||||
startCode: new r.LazyArray(r.uint16, 'segCount'), | ||||
idDelta: new r.LazyArray(r.int16, 'segCount'), | ||||
idRangeOffset: new r.LazyArray(r.uint16, 'segCount'), | ||||
glyphIndexArray: new r.LazyArray(r.uint16, t => (t.length - t._currentOffset) / 2) | ||||
}, | ||||
6: { // Trimmed table | ||||
length: r.uint16, | ||||
language: r.uint16, | ||||
firstCode: r.uint16, | ||||
entryCount: r.uint16, | ||||
glyphIndices: new r.LazyArray(r.uint16, 'entryCount') | ||||
}, | ||||
8: { // mixed 16-bit and 32-bit coverage | ||||
reserved: new r.Reserved(r.uint16), | ||||
length: r.uint32, | ||||
language: r.uint16, | ||||
is32: new r.LazyArray(r.uint8, 8192), | ||||
nGroups: r.uint32, | ||||
groups: new r.LazyArray(CmapGroup, 'nGroups') | ||||
}, | ||||
10: { // Trimmed Array | ||||
reserved: new r.Reserved(r.uint16), | ||||
length: r.uint32, | ||||
language: r.uint32, | ||||
firstCode: r.uint32, | ||||
entryCount: r.uint32, | ||||
glyphIndices: new r.LazyArray(r.uint16, 'numChars') | ||||
}, | ||||
12: { // Segmented coverage | ||||
reserved: new r.Reserved(r.uint16), | ||||
length: r.uint32, | ||||
language: r.uint32, | ||||
nGroups: r.uint32, | ||||
groups: new r.LazyArray(CmapGroup, 'nGroups') | ||||
}, | ||||
13: { // Many-to-one range mappings (same as 12 except for group.startGlyphID) | ||||
reserved: new r.Reserved(r.uint16), | ||||
length: r.uint32, | ||||
language: r.uint32, | ||||
nGroups: r.uint32, | ||||
groups: new r.LazyArray(CmapGroup, 'nGroups') | ||||
}, | ||||
14: { // Unicode Variation Sequences | ||||
length: r.uint32, | ||||
numRecords: r.uint32, | ||||
varSelectors: new r.LazyArray(VarSelectorRecord, 'numRecords') | ||||
} | ||||
}); | ||||
let CmapEntry = new r.Struct({ | ||||
platformID: r.uint16, // Platform identifier | ||||
encodingID: r.uint16, // Platform-specific encoding identifier | ||||
table: new r.Pointer(r.uint32, CmapSubtable, {type: 'parent', lazy: true}) | ||||
}); | ||||
// character to glyph mapping | ||||
export default new r.Struct({ | ||||
version: r.uint16, | ||||
numSubtables: r.uint16, | ||||
tables: new r.Array(CmapEntry, 'numSubtables') | ||||
}); | ||||