PHP 8.2.30
Preview: GSUB.js Size: 2.75 KB
/home/byroehnu/.trash/node_modules11/fontkit/src/tables/GSUB.js

import * as r from 'restructure';
import {ScriptList, FeatureList, LookupList, Coverage, ClassDef, Device, Context, ChainingContext} from './opentype';
import {FeatureVariations} from './variations';

let Sequence = new r.Array(r.uint16, r.uint16);
let AlternateSet = Sequence;

let Ligature = new r.Struct({
  glyph:      r.uint16,
  compCount:  r.uint16,
  components: new r.Array(r.uint16, t => t.compCount - 1)
});

let LigatureSet = new r.Array(new r.Pointer(r.uint16, Ligature), r.uint16);

let GSUBLookup = new r.VersionedStruct('lookupType', {
  1: new r.VersionedStruct(r.uint16, {// Single Substitution
    1: {
      coverage:       new r.Pointer(r.uint16, Coverage),
      deltaGlyphID:   r.int16
    },
    2: {
      coverage:       new r.Pointer(r.uint16, Coverage),
      glyphCount:     r.uint16,
      substitute:     new r.LazyArray(r.uint16, 'glyphCount')
    }
  }),

  2: { // Multiple Substitution
    substFormat:    r.uint16,
    coverage:       new r.Pointer(r.uint16, Coverage),
    count:          r.uint16,
    sequences:      new r.LazyArray(new r.Pointer(r.uint16, Sequence), 'count')
  },

  3: { // Alternate Substitution
    substFormat:    r.uint16,
    coverage:       new r.Pointer(r.uint16, Coverage),
    count:          r.uint16,
    alternateSet:   new r.LazyArray(new r.Pointer(r.uint16, AlternateSet), 'count')
  },

  4: { // Ligature Substitution
    substFormat:    r.uint16,
    coverage:       new r.Pointer(r.uint16, Coverage),
    count:          r.uint16,
    ligatureSets:   new r.LazyArray(new r.Pointer(r.uint16, LigatureSet), 'count')
  },

  5: Context,         // Contextual Substitution
  6: ChainingContext, // Chaining Contextual Substitution

  7: { // Extension Substitution
    substFormat:   r.uint16,
    lookupType:    r.uint16,   // cannot also be 7
    extension:     new r.Pointer(r.uint32, null)
  },

  8: { // Reverse Chaining Contextual Single Substitution
    substFormat:            r.uint16,
    coverage:               new r.Pointer(r.uint16, Coverage),
    backtrackCoverage:      new r.Array(new r.Pointer(r.uint16, Coverage), 'backtrackGlyphCount'),
    lookaheadGlyphCount:    r.uint16,
    lookaheadCoverage:      new r.Array(new r.Pointer(r.uint16, Coverage), 'lookaheadGlyphCount'),
    glyphCount:             r.uint16,
    substitutes:            new r.Array(r.uint16, 'glyphCount')
  }
});

// Fix circular reference
GSUBLookup.versions[7].extension.type = GSUBLookup;

export default new r.VersionedStruct(r.uint32, {
  header: {
    scriptList:     new r.Pointer(r.uint16, ScriptList),
    featureList:    new r.Pointer(r.uint16, FeatureList),
    lookupList:     new r.Pointer(r.uint16, new LookupList(GSUBLookup))
  },

  0x00010000: {},
  0x00010001: {
    featureVariations: new r.Pointer(r.uint32, FeatureVariations)
  }
});

Directory Contents

Dirs: 0 × Files: 49

Name Size Perms Modified Actions
4.07 KB lrw-r--r-- 2026-02-14 19:19:20
Edit Download
405 B lrw-r--r-- 2026-02-14 19:19:20
Edit Download
3.02 KB lrw-r--r-- 2026-02-14 19:19:20
Edit Download
754 B lrw-r--r-- 2026-02-14 19:19:20
Edit Download
3.93 KB lrw-r--r-- 2026-02-14 19:19:22
Edit Download
1.29 KB lrw-r--r-- 2026-02-14 19:19:22
Edit Download
757 B lrw-r--r-- 2026-02-14 19:19:22
Edit Download
167 B lrw-r--r-- 2026-02-14 19:19:22
Edit Download
1.38 KB lrw-r--r-- 2026-02-14 19:19:22
Edit Download
696 B lrw-r--r-- 2026-02-14 19:19:22
Edit Download
1.50 KB lrw-r--r-- 2026-02-14 19:19:22
Edit Download
1.85 KB lrw-r--r-- 2026-02-14 19:19:24
Edit Download
825 B lrw-r--r-- 2026-02-14 19:19:24
Edit Download
348 B lrw-r--r-- 2026-02-14 19:19:24
Edit Download
864 B lrw-r--r-- 2026-02-14 19:19:26
Edit Download
531 B lrw-r--r-- 2026-02-14 19:19:26
Edit Download
1.73 KB lrw-r--r-- 2026-02-14 19:19:28
Edit Download
103 B lrw-r--r-- 2026-02-14 19:19:28
Edit Download
6.41 KB lrw-r--r-- 2026-02-14 19:19:36
Edit Download
2.75 KB lrw-r--r-- 2026-02-14 19:19:38
Edit Download
859 B lrw-r--r-- 2026-02-14 19:19:38
Edit Download
496 B lrw-r--r-- 2026-02-14 19:19:38
Edit Download
1.25 KB lrw-r--r-- 2026-02-14 19:19:38
Edit Download
1.01 KB lrw-r--r-- 2026-02-14 19:19:38
Edit Download
324 B lrw-r--r-- 2026-02-14 19:19:38
Edit Download
1.28 KB lrw-r--r-- 2026-02-14 19:19:38
Edit Download
2.25 KB lrw-r--r-- 2026-02-14 19:19:38
Edit Download
1.74 KB lrw-r--r-- 2026-02-14 19:19:38
Edit Download
2.17 KB lrw-r--r-- 2026-02-14 19:19:38
Edit Download
3.07 KB lrw-r--r-- 2026-02-14 19:19:38
Edit Download
625 B lrw-r--r-- 2026-02-14 19:19:38
Edit Download
321 B lrw-r--r-- 2026-02-14 19:19:38
Edit Download
1.19 KB lrw-r--r-- 2026-02-14 19:19:40
Edit Download
2.03 KB lrw-r--r-- 2026-02-14 19:19:40
Edit Download
3.24 KB lrw-r--r-- 2026-02-14 19:19:40
Edit Download
303 B lrw-r--r-- 2026-02-14 19:19:40
Edit Download
6.67 KB lrw-r--r-- 2026-02-14 19:19:40
Edit Download
3.56 KB lrw-r--r-- 2026-02-14 19:19:40
Edit Download
733 B lrw-r--r-- 2026-02-14 19:19:40
Edit Download
1.38 KB lrw-r--r-- 2026-02-14 19:19:40
Edit Download
199 B lrw-r--r-- 2026-02-14 19:19:40
Edit Download
604 B lrw-r--r-- 2026-02-14 19:19:40
Edit Download
2.40 KB lrw-r--r-- 2026-02-14 19:19:40
Edit Download
1.73 KB lrw-r--r-- 2026-02-14 19:19:40
Edit Download
1.13 KB lrw-r--r-- 2026-02-14 19:19:40
Edit Download
421 B lrw-r--r-- 2026-02-14 19:19:40
Edit Download
382 B lrw-r--r-- 2026-02-14 19:19:40
Edit Download
2.28 KB lrw-r--r-- 2026-02-14 19:19:40
Edit Download
977 B lrw-r--r-- 2026-02-14 19:19:40
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).