Алгоритм сравнения строковых шрифтов - PullRequest
1 голос
/ 19 мая 2010

Я считаю, что существует алгоритм, который может равняться двум строкам с одинаковыми шрифтами символов, но разными символами (цифры, кириллица, латиница или другие алфавиты). Например:

  • "hello" (латинские символы) равно "he11o" (цифры и латинские символы)
  • "HELLO" (латинские символы) равно "НЕLLО" (кириллические и латинские символы)
  • "really" (латинские символы) равно "геа11у" (цифры и кириллические символы)

Ответы [ 2 ]

1 голос
/ 19 мая 2010

Возможно, вы думаете об алгоритме, который Пол Э. Блэк разработал для ICANN, который определяет, являются ли два TLD «схожими до степени смешения», хотя в настоящее время он не работает с вводом из смешанных сценариев (например, латиницей и кириллица). См. « Алгоритм помогает ICANN управлять доменами верхнего уровня » и Инструмент оценки сходства ICANN .

Кроме того, если вы заинтересованы в расширении этого алгоритма, возможно, вы захотите включить информацию из кодовых кодов Unicode , которые обычно перечисляют похожие глифы и последовательности кодовых точек, которые отображаются одинаково.

1 голос
/ 19 мая 2010

Я не совсем уверен, что вы просите.

Если вы хотите узнать, выглядят ли два символа одинаково под заданным шрифтом, вам нужно преобразовать каждый символ в выбранных шрифтах в растровые изображения и сравнить их, чтобы увидеть, являются ли они близкими к идентичности.

Если вы просто хотите всегда считать латинские буквы l в нижнем регистре одинаковыми с цифрой «1» независимо от используемого шрифта, тогда вы можете просто определить таблицу сопоставления символов. Вероятно, самый простой способ сделать это - выбрать каноническое значение для каждого набора символов, который выглядит одинаково, и сопоставить все члены набора с этим символом. Когда вы сравниваете строки, сравнивайте канонический экземпляр каждого символа из таблицы.

...