Встроенной функции нет. И похоже, что речь идёт не столько о разных шрифтах, а сколько о
гомоглифах - символах юникода из разных алфавитов, которые выглядят похоже. Например, как русское и латинское "о". Это нетривиальная задача, но пакет confusable_homoglyphs (ставится через pip) может помочь. В частности, функция
is_confusable().
from confusable_homoglyphs.confusables import is_confusable
wtf = 'YOᑌ ᑎᗩᗰE 42'
is_good = []
result = []
for c in wtf:
data = is_confusable(c, preferred_aliases=[], greedy=True)
if data:
data = data[0]
alias = data['alias']
if alias in ('LATIN', 'COMMON'):
data = False
if data:
is_good.append('!')
print(data)
result.append(data['homoglyphs'][0]['c'])
else:
is_good.append(' ')
result.append(c)
print()
print(''.join(result))
print(''.join(is_good))
Работает неидеально, но настройки модуля лежат в JSON - можно кое-что поправить. Или создать issue на
гитхабе проекта.
Конечно, можно извратиться, отрендерить строку и прогнать по ней OCR, но это такая себе идея.