Почему тут возникает ошибка?

Python 2.7

Код

# -*- coding: utf-8 -*-

from fontTools.ttLib import TTFont
from fontTools.unicode import Unicode

unicode_characters = [unichr(i) for i in range(0xffff)]

import os, numpy

def GetValidFonts():
	fonts_folder = os.path.join(os.environ["WINDIR"], "fonts")
	fonts_list = []
	for filename in os.listdir(fonts_folder):
		if filename.endswith(".ttf"):
			fonts_list.append(os.path.join(fonts_folder, filename))

	return fonts_list

# def GetArialFont_Path():
# 	import os
# 	return os.path.join(os.environ["WINDIR"], "fonts", "arial.ttf")

class FontObject:
	AllAvailableUnicodeCodes = {"0":[]}

	@staticmethod
	def LoadUnicodesData():
		# Export all possible unicodes available in system if not exists.
		if not os.path.isfile("unicodes.json"):
			for fontpath in GetValidFonts():
				obj = FontObject(fontpath)
				obj.performUnicodes()
			with open("unicodes.json", "w") as f:
				json.dump(FontObject.AllAvailableUnicodeCodes, f)
		else:
			with open("unicodes.json", "r") as f:
				FontObject.AllAvailableUnicodeCodes = json.load(f)

		return FontObject.AllAvailableUnicodeCodes

	def performUnicodes(self):
		not_existed = []
		for i in self.unicodes:
			if i not in FontObject.AllAvailableUnicodeCodes:
				not_existed.append(i)

		self.AllAvailableUnicodeCodes[self.path] = not_existed
		self.AllAvailableUnicodeCodes["0"].extend(not_existed)

	def __init__(self, path, ignoreunicodes = False):
		self.ttfont = TTFont(path, 0, allowVID=0,
					ignoreDecompileErrors=True,
					fontNumber=-1)
		self.path = path
		if not ignoreunicodes:
			self.unicodes = []
			for x in self.ttfont['cmap'].tables:
				for y in x.cmap.items():
					self.unicodes.append(y[0])

if __name__ == "__main__":
	import json

	data = FontObject.LoadUnicodesData()

	print "The maximum unicode char is %s, symbols in array %d" %(hex(numpy.max(data["0"])),
		len(data["0"]))

	for i in data['0']:
		print i
		try:
			print i, hex(i), unichr(i)
		except: pass


Ошибка
The maximum unicode char is 0x2ce93L, symbols in array 532570
8192
8192 0x2000 Traceback (most recent call last):
  File "D:\Users\Nightmare\Desktop\font-keras\__main__.py", line 70, in <module>
[Finished in 0.5s]    print i
IOError: [Errno 22] Invalid argument
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ответы на вопрос 1
adugin
@adugin Куратор тега Python
Судя по всему, ошибку вызывает print unichr(8192), проверьте отдельно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы