Облако слов для других языков
Я использовал Word Cloud от JasonDavies для своего проекта, но есть проблема с тем, что я использовал персидские [фарси] строки, и моя проблема здесь в том, что слова в Svg перекрываются.
Это результат моего проекта:
Что случилось со словами на фарси?
1 ответ
Как объяснено на странице "О проекте", генератору необходимо получить форму глифа, чтобы можно было вычислить, где "безопасно" помещать другие слова. Страница about объясняет процесс более подробно, но вот что нам нужно:
- Глифы отображаются индивидуально для скрытого
<canvas>
элемент. - Пиксельные данные получены
- Ограничительные рамки выводятся
- Облако слов генерируется.
Теперь важно понять, что в западных (и многих других) сценариях глифы часто не меняют форму, основываясь на контексте. Да, существуют такие вещи, как лигатуры, но они, как правило, встречаются редко и, безусловно, не являются необходимыми для сценария.
В персидском, однако, форма глифа будет меняться в зависимости от контекста. Для неперсидских читателей посмотрите на ی и س, которые, когда объединены, становятся یس. Да, последний - два символа!
Алгоритм на самом деле не имеет проблем с персидскими символами, как вы можете увидеть, взломав демонстрацию на странице about, установив точку останова сразу после d.code
генерируется, чтобы иметь возможность его изменить:
Заменить его на 1740
, какой charCode
для первого персидского глифа и запуска алгоритма показывает красивые и совершенно правильные ограничивающие рамки вокруг глифа:
Проблема в том, что когда слово облако фактически отображается, глиф помещается в контекст и... меняет форму. Генератор, тем не менее, не знает этого и продолжает использовать старые ограничивающие данные для размещения других слов, создавая таким образом перекрытие, которое вы засвидетельствовали. Кроме того, вероятно, существует также проблема, связанная с обработкой текста справа налево, что, безусловно, не поможет.
Я бы посоветовал вам принять это непосредственно к автору генератора. У проекта есть страница GitHub: https://github.com/jasondavies/d3-cloud поэтому открытие вопроса там (и, возможно, возвращение к этому ответу) поможет!