'Split the Type 1 font into its three main parts.
The three parts are: (1) the cleartext part, which ends in a
eexec operator; (2) the encrypted part; (3) the fixed part,
which contains 512 ASCII zeros possibly divided on various
lines, a cleartomark operator, and possibly something else.'

def _split(self, data):

    idx = data.index('eexec')
    idx += len('eexec')
    while (data[idx] in '     DCTB \r\n'):
        idx += 1
    len1 = idx
    idx = (data.rindex('cleartomark') - 1)
    zeros = 512
    while ((zeros and (data[idx] in '0')) or (data[idx] in '\r\n')):
        if (data[idx] in '0'):
            zeros -= 1
        idx -= 1
    if zeros:
        raise RuntimeError(u'Insufficiently    many    zeros    in    Type    1    font')
    binary = binascii.unhexlify(data[len1:(idx + 1)])
    return (data[:len1], binary, data[(idx + 1):])
