def customValidation(self):
    (information, warnings, critical) = ([], [], [])
    if ((self.purpose == 'desktop') and (not self.format)):
        critical.append('Is a desktop font (see .purpose), but has no .format value.')
    if (not self.hasVersionInformation()):
        critical.append(('Has no version information, and neither has its family %s. Either one needs to carry version information.' % self.parent))
    for designerKeyword in self.designerKeywords:
        if (not self.parent.parent.parent.getDesignerByKeyword(designerKeyword)):
            critical.append(("Has designer '%s', but %s.designers has no matching designer." % (designerKeyword, self.parent.parent.parent)))
    forbidden = '/?<>\\:*|^,;'
    for char in forbidden:
        if (self.uniqueID.count(char) > 0):
            critical.append((".uniqueID must not contain the character '%s' because it will be used for the font’s file name on disk." % char))
    for version in self.getVersions():
        filename = self.filename(version.number)
        if (len(filename) > 220):
            critical.append(('The suggested file name is longer than 220 characters: %s' % filename))
    return (information, warnings, critical)
def customValidation(self):
    (information, warnings, critical) = ([], [], [])
    if ((self.purpose == 'desktop') and (not self.format)):
        critical.append('Is a desktop font (see .purpose), but has no .format value.')
    if (not self.hasVersionInformation()):
        critical.append(('Has no version information, and neither has its family %s. Either one needs to carry version information.' % self.parent))
    for designerKeyword in self.designerKeywords:
        if (not self.parent.parent.parent.getDesignerByKeyword(designerKeyword)):
            critical.append(("Has designer '%s', but %s.designers has no matching designer." % (designerKeyword, self.parent.parent.parent)))
    forbidden = '/?<>\\:*|^,;'
    for char in forbidden:
        if (self.uniqueID.count(char) > 0):
            critical.append((".uniqueID must not contain the character '%s' because it will be used for the font’s file name on disk." % char))
    for version in self.getVersions():
        filename = self.filename(version.number)
        if (len(filename) > 220):
            critical.append(('The suggested file name is longer than 220 characters: %s' % filename))
    return (information, warnings, critical)