Облако слов для других языков

Я использовал Word Cloud от JasonDavies для своего проекта, но есть проблема с тем, что я использовал персидские [фарси] строки, и моя проблема здесь в том, что слова в Svg перекрываются.

Это результат моего проекта:

Это результат моего проекта

Что случилось со словами на фарси?

1 ответ

Как объяснено на странице "О проекте", генератору необходимо получить форму глифа, чтобы можно было вычислить, где "безопасно" помещать другие слова. Страница about объясняет процесс более подробно, но вот что нам нужно:

  1. Глифы отображаются индивидуально для скрытого <canvas> элемент.
  2. Пиксельные данные получены
  3. Ограничительные рамки выводятся
  4. Облако слов генерируется.

Теперь важно понять, что в западных (и многих других) сценариях глифы часто не меняют форму, основываясь на контексте. Да, существуют такие вещи, как лигатуры, но они, как правило, встречаются редко и, безусловно, не являются необходимыми для сценария.

В персидском, однако, форма глифа будет меняться в зависимости от контекста. Для неперсидских читателей посмотрите на ی и س, которые, когда объединены, становятся یس. Да, последний - два символа!

Алгоритм на самом деле не имеет проблем с персидскими символами, как вы можете увидеть, взломав демонстрацию на странице about, установив точку останова сразу после d.code генерируется, чтобы иметь возможность его изменить:

исходный код bbtree.js на странице about с точкой останова в строке 129

Заменить его на 1740, какой charCode для первого персидского глифа и запуска алгоритма показывает красивые и совершенно правильные ограничивающие рамки вокруг глифа:

визуализация ی и ограничивающие рамки

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

Я бы посоветовал вам принять это непосредственно к автору генератора. У проекта есть страница GitHub: https://github.com/jasondavies/d3-cloud поэтому открытие вопроса там (и, возможно, возвращение к этому ответу) поможет!

Другие вопросы по тегам