Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def getOptions():
options = ACOptions()
i = 1
numOptions = len(sys.argv)
while i < numOptions:
arg = sys.argv[i]
if options.fileList and arg[0] == "-":
raise ACOptionParseError("Option Error: All file names must follow all other options <%s>." % arg)
if arg == "-h":
logMsg(__help__)
sys.exit(0)
elif arg == "-u":
logMsg(__usage__)
sys.exit(0)
elif arg == "-all":
options.allStems = 1
elif arg == "-a":
options.doAlign = 1
elif arg == "-d":
options.debug = 1
elif arg == "-q":
options.verbose = 0
elif arg == "-o":
i = i +1
options.reportPath = sys.argv[i]
elif arg == "-new":
options.new = 1
elif arg in ["-xg", "-g"]:
if arg == "-xg":
def getOptions():
options = ACOptions()
i = 1
numOptions = len(sys.argv)
while i < numOptions:
arg = sys.argv[i]
if options.fileList and arg[0] == "-":
raise ACOptionParseError("Option Error: All file names must follow all other options <%s>." % arg)
if arg == "-h":
logMsg(__help__)
sys.exit(0)
elif arg == "-u":
logMsg(__usage__)
sys.exit(0)
elif arg == "-all":
options.allStems = 1
elif arg == "-a":
options.doAlign = 1
elif arg == "-d":
options.debug = 1
elif arg == "-q":
options.verbose = 0
elif arg == "-o":
i = i +1
options.reportPath = sys.argv[i]
elif arg == "-new":
def collectStemsFont(path, options):
# use fontTools library to open font and extract CFF table.
# If error, skip font and report error.
fontFileName = os.path.basename(path)
logMsg("")
if options.doAlign:
logMsg( "Collecting alignment zones for font %s. Start time: %s." % (path, time.asctime()))
else:
logMsg( "Collecting stems for font %s. Start time: %s." % (path, time.asctime()))
try:
fontData = openFile(path)
except (IOError, OSError):
logMsg( traceback.format_exception_only(sys.exc_info()[0], sys.exc_info()[1])[-1])
raise ACFontError("Error opening or reading from font file <%s>." % fontFileName)
except:
logMsg( traceback.format_exception_only(sys.exc_info()[0], sys.exc_info()[1])[-1])
raise ACFontError("Error parsing font file <%s>." % fontFileName)
# filter specified list, if any, with font list.
fontGlyphList = fontData.getGlyphList()
glyphList = filterGlyphList(options, fontGlyphList, fontFileName)
if not glyphList:
raise ACFontError("Error: selected glyph list is empty for font <%s>." % fontFileName)
def collectStemsFont(path, options):
# use fontTools library to open font and extract CFF table.
# If error, skip font and report error.
fontFileName = os.path.basename(path)
logMsg("")
if options.doAlign:
logMsg( "Collecting alignment zones for font %s. Start time: %s." % (path, time.asctime()))
else:
logMsg( "Collecting stems for font %s. Start time: %s." % (path, time.asctime()))
try:
fontData = openFile(path)
except (IOError, OSError):
logMsg( traceback.format_exception_only(sys.exc_info()[0], sys.exc_info()[1])[-1])
raise ACFontError("Error opening or reading from font file <%s>." % fontFileName)
except:
logMsg( traceback.format_exception_only(sys.exc_info()[0], sys.exc_info()[1])[-1])
raise ACFontError("Error parsing font file <%s>." % fontFileName)
# filter specified list, if any, with font list.
fontGlyphList = fontData.getGlyphList()
def main():
try:
options = getOptions()
except ACOptionParseError as e:
logMsg(e)
return 1
# verify that all files exist.
haveFiles = True
for path in options.fileList:
if not os.path.exists(path):
logMsg( "File does not exist: <%s>." % path)
haveFiles = False
if not haveFiles:
return 1
for path in options.fileList:
if options.new:
if options.reportPath:
reportPath = options.reportPath
else:
def collectStemsFont(path, options):
# use fontTools library to open font and extract CFF table.
# If error, skip font and report error.
fontFileName = os.path.basename(path)
logMsg("")
if options.doAlign:
logMsg( "Collecting alignment zones for font %s. Start time: %s." % (path, time.asctime()))
else:
logMsg( "Collecting stems for font %s. Start time: %s." % (path, time.asctime()))
try:
fontData = openFile(path)
except (IOError, OSError):
logMsg( traceback.format_exception_only(sys.exc_info()[0], sys.exc_info()[1])[-1])
raise ACFontError("Error opening or reading from font file <%s>." % fontFileName)
except:
logMsg( traceback.format_exception_only(sys.exc_info()[0], sys.exc_info()[1])[-1])
raise ACFontError("Error parsing font file <%s>." % fontFileName)
# filter specified list, if any, with font list.
fontGlyphList = fontData.getGlyphList()
glyphList = filterGlyphList(options, fontGlyphList, fontFileName)
if not glyphList:
raise ACFontError("Error: selected glyph list is empty for font <%s>." % fontFileName)
tempBez = fdkutils.get_temp_file_path()
tempReport = f'{tempBez}.rpt'
tempFI = fdkutils.get_temp_file_path()
# open font plist file, if any. If not, create empty font plist.
# open font plist file, if any. If not, create empty font plist.
psName = fontData.getPSName()
# build alignment zone string
allow_no_blues = 1
noFlex = 0
vCounterGlyphs = hCounterGlyphs = []
fdGlyphDict, fontDictList = fontData.getfdInfo(psName, path, allow_no_blues, noFlex, vCounterGlyphs, hCounterGlyphs, glyphList)
if fdGlyphDict == None:
fdDict = fontDictList[0]
with open(tempFI, "w") as fp:
fp.write(fdDict.getFontInfo())
else:
if not options.verbose:
logMsg("Note: Using alternate FDDict global values from fontinfo file for some glyphs. Remove option '-q' to see which dict is used for which glyphs.")
removeHints = 1
isCID = fontData.isCID()
lastFDIndex = None
glyphReports = GlyphReports()
if not options.verbose:
dotCount = 0
curTime = time.time()
for name in glyphList:
if name == ".notdef":
continue
if options.verbose:
logMsg("Checking %s." %name)