Как подготовить двунаправленный текст для использования с wordcloud2.js - PullRequest
0 голосов
/ 08 июля 2019

У меня есть индексный массив вложенных двумерных массивов, пары элементов которых состоят из фразы и числа.

При отсутствии двунаправленного текста фраза появляется перед номером для каждого элемента массива индекса.При наличии двунаправленного текста фраза появляется после номера.

Если пары фраза-номер смешаны, а именно, некоторые пары фраза-номер появляются с текстом LTR, а некоторые пары фраза-номер появляются с текстом RTL, то результирующий порядок смешивается и создает беспорядочный списокэто не может быть использовано для ввода в функцию wordcloud.js.

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

var listItem = [];
var list = [];
$.each(countedPhrases, function(phrase, count) {

    console.log('phrase: ' + phrase);
    console.log('count: ' + count);

    listItem = [phrase, count];
    console.log('listItem: ' + listItem);

    list.push(listItem);
});

console.log('list: ' + list);'

Пример вывода console.log.

фраза: النادر count: 321 listItem: النادر, 321

фраза: وتتلقاه count: 321 listItem: وتتلقاه, 321

фраза: 終結 count: 321 listItem: 終結, 321

фраза: Количество подкастов: 45 listItem: Podcast, 45

список: النادر, 321, وتتلقاه, 321, 終結, 321, подкаст, 45

1 Ответ

0 голосов
/ 26 июля 2019

Проблема была решена путем переноса арабского текста в следующие два элемента управления Unicode \ Arabic Text \ u2069 перед чтением его в элементы массива.

Не вдаваясь в подробности кода, исправляющегопроблема выглядит следующим образом:

                if (name === 'searchKeyword') {
                    if (agex.test(value)) {
                        nakedArabic = value.match(agex);
                        searchItem.target = '\u2067' + nakedArabic.join('') + '\u2069';
                    } else {
                        searchItem.target = value;
                    }
                }                           

где agex.text (значение) - это тест Regex на наличие арабских символов.

Короче говоря, проблема была вызвана чем-то, называемым вторичным,Два управляющих символа Unicode изолируют арабский текст, сохраняя его естественное направленное упорядочение справа налево.

Подробнее о проблеме и ее решении можно узнать здесь .

Родди

...