2016-01-28 14 views
2

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

Это выход моего проекта:

This is my project's output

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

+2

@Paul R, спасибо за редактирование. –

ответ

4

Как пояснялось на About page for the project, генератор должен получить форму глифа, чтобы иметь возможность вычислить, где он «безопасен», чтобы поместить другие слова. Страница о объясняет процесс в гораздо более подробно, но вот то, что мы заботимся о:

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

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

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

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

source of bbtree.js on the about page, with a breakpoint at line 129

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

render of ی and its bounding boxes

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

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

+1

спасибо за ответ. Но я не знаю, что делать? Что такое мое решение ?! –

+1

Как я уже сказал внизу, перейдите по той ссылке, которая является страницей проекта, откройте проблему с описанием вашей проблемы и ссылкой на этот вопрос и дождитесь, пока автор вернется к вам. –

+1

И если вы не хотите ждать, вам придется выяснить, как _fix программного обеспечения_. Ваша проблема интересна ... но это также означает, что она не может быть решена просто. Необходимо будет потратить усилия. –