constructor() {
    this.width = 0;
    this.lsb = 0;
    this.flexing = false;
    this.output = [];
    this.stack = [];
  }
CharStrings are encoded following the CharString Encoding sequence
describe in Chapter 6 of the "Adobe Type1 Font Format" specification.
The value in a byte indicates a command, a number, or subsequent bytes
that are to be interpreted in a special way.

CharString Number Encoding:
 A CharString byte containing the values from 32 through 255 inclusive
 indicate an integer. These values are decoded in four ranges.

1. A CharString byte containing a value, v, between 32 and 246 inclusive,
indicate the integer v - 139. Thus, the integer values from -107 through
107 inclusive may be encoded in single byte.

2. A CharString byte containing a value, v, between 247 and 250 inclusive,
indicates an integer involving the next byte, w, according to the formula:
[(v - 247) x 256] + w + 108

3. A CharString byte containing a value, v, between 251 and 254 inclusive,
indicates an integer involving the next byte, w, according to the formula:
-[(v - 251) * 256] - w - 108

4. A CharString containing the value 255 indicates that the next 4 bytes
are a two complement signed integer. The first of these bytes contains the
highest order bits, the second byte contains the next higher order bits
and the fourth byte contain the lowest order bits.


CharString Command Encoding:
 CharStrings commands are encoded in 1 or 2 bytes.

 Single byte commands are encoded in 1 byte that contains a value between
 0 and 31 inclusive.
 If a command byte contains the value 12, then the value in the next byte
 indicates a command. This "escape" mechanism allows many extra commands
 to be encoded and this encoding technique helps to minimize the length of
 the charStrings.