code: def compile(self, ttFont):
      packed = sstruct.pack(DSIG_HeaderFormat, self)
      headers = [packed]
      offset = len(packed) + self.usNumSigs * sstruct.calcsize(
          DSIG_SignatureFormat
      )
      data = []
      for sigrec in self.signatureRecords:
          # first pack signature block
          sigrec.cbSignature = len(sigrec.pkcs7)
          packed = (
              sstruct.pack(DSIG_SignatureBlockFormat, sigrec)
              + sigrec.pkcs7
          )
          data.append(packed)
          # update redundant length field
          sigrec.ulLength = len(packed)
          # update running table offset
          sigrec.ulOffset = offset
          headers.append(sstruct.pack(DSIG_SignatureFormat, sigrec))
          offset += sigrec.ulLength
      if offset % 2:
          # Pad to even bytes
          data.append(b"\0")
      return bytesjoin(headers + data)
  
file_path: catboost/contrib/python/fonttools/fontTools/ttLib/tables/D_S_I_G_.py
imports: from fontTools.misc.textTools import bytesjoin, strjoin, tobytes, tostr, safeEval
  from fontTools.misc import sstruct
  from .None import DefaultTable
  import base64
label_desc: Use image node_id 2 for calling the table_D_S_I_G_ obj's underlying member method code with example usage: obj.compile(ttFont) and returns: bytesjoin