prepare method

  1. @override
void prepare()
override

Prepare the object to be written to the stream

Implementation

@override
void prepare() {
  if (protect) {
    cmap.fillRange(1, cmap.length, 0x20);
  }

  buf.putString('/CIDInit/ProcSet\nfindresource begin\n'
      '12 dict begin\n'
      'begincmap\n'
      '/CIDSystemInfo<<\n'
      '/Registry (Adobe)\n'
      '/Ordering (UCS)\n'
      '/Supplement 0\n'
      '>> def\n'
      '/CMapName/Adobe-Identity-UCS def\n'
      '/CMapType 2 def\n'
      '1 begincodespacerange\n'
      '<0000> <FFFF>\n'
      'endcodespacerange\n'
      '${cmap.length} beginbfchar\n');

  for (var key = 0; key < cmap.length; key++) {
    final value = cmap[key];
    buf.putString(
        '<${key.toRadixString(16).toUpperCase().padLeft(4, '0')}> <${value.toRadixString(16).toUpperCase().padLeft(4, '0')}>\n');
  }

  buf.putString('endbfchar\n'
      'endcmap\n'
      'CMapName currentdict /CMap defineresource pop\n'
      'end\n'
      'end');
  super.prepare();
}