Подтвердить что ты не робот

Тайский разрыв линии: как эффективно разорвать тайский текст

Ситуация с тайским текстом на клиентском сайте заключается в том, что мы не можем контролировать, где именно конкретные слова/предложения будут разбиваться между строками (как веб-браузер справится с этим). Часто внешний вид отображается как неправильный местными рецензентами.

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

На практике, а не:
ของเพื่อนๆ ที่ออนไลน์อยู่
мы должны использовать что-то столь же уродливое, как:
ของเพื่อนๆ​ที่​ออนไลน์อยู่

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

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

Исследование до сих пор приводил к обходу, о котором идет речь, ищем лучший способ справиться с этим. Даже W3C еще не имеет решения и просто обсуждает, должен ли он быть частью спецификации CSS3.

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

По-видимому, чем больше веб-браузеров/операционных систем вы проверяете, тем больше результатов вы получаете! Более того, вы не можете с этим справиться, так как система управляется, и нет доступных "мест для тайского".

Используя <wbr/>, &#8203; или &shy;, чтобы указать, где находятся точки останова, не помешает мышлению веб-браузера (хотя и ошибочно), что некоторые перерывы также возможны в местах, где вы не определили их, например в середине слова, которое может быть грамматически неверным.

Если такое слово помещено в конец строки (в зависимости от разрешения экрана, длины копии, определенных правил CSS), и браузер применяет свое неправильное правило нарушения строки на нем, тогда вы закончите проблему с тайской линией, независимо от того, что вы определили другие точки останова до, после или где-то еще в слове - браузер всегда будет использовать точку останова, которая, по его мнению, ближе всего к EOL, а не только те, которые вы мягко предложили, вставив один из указанных символов в свой разметки.

Вот почему вам на самом деле нужно сосредоточиться на том, где не сломать текст (неразрывное пространство с нулевой шириной), а не там, где это разрешено. И это привело нас к уродливому и длинному примеру разметки в разделе "Обходное решение" выше. Таким образом, разрыв строки может происходить только там, где вы позволили, но это беспорядочно.

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

СПАСИБО!

4b9b3361

Ответ 1

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

Как я знаю, браузер Google Chrome использует ICU4C, Internet Explorer использует Uniscribe API, а Firefox использует libthai для разрыва тайских предложений на слова. Для тайских людей я знаю, как эти веб-браузеры обрабатывают разрывы строк на тайском языке, вполне приемлемы для них. (на самом деле у нас была эта проблема с очень ранней версией Firefox (1.x), но это было разрешено сейчас.)

Тайский разрыв линии и разрывы слов, в отличие от западных языков, по-прежнему считается нерешенной проблемой и по-прежнему активно решаются многими исследователями-лингвистами. В настоящее время нет никакой реализации, которая могла бы отлично сломать предложение тайским словам. На странице IBM ICU Граничный анализ содержится некоторый анализ этой проблемы.

Много раз это имеет какое-то отношение к контексту. Например, фраза "ตากลม" может быть правильно разбита на "ตา", "กลม" или "ตาก", "ลม" . Каждый путь говорит совершенно по-другому, но тайские читатели все еще прекрасно понимают намеченное значение, учитывая контекст.

Учитывая, что ваши локальные рецензенты уже знакомы с чтением тайских веб-сайтов, я думаю, может быть, они слишком настойчивы для вас, чтобы решить эту проблему. Это обычная неразрешимая проблема для всех тайских веб-сайтов, веб-браузеров и даже Microsoft Word.

Лучше ждать (или вносить вклад в IBM ICU) до тех пор, пока тайское предложение, нарушающее реализацию, не улучшится. Пусть веб-браузеры справятся с этим. Я не думаю, что пытаюсь решить эту проблему, которая стоит вашего драгоценного времени. Как я знаю, даже тайские издатели веб-сайтов просто не хотят, чтобы это правильно.

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

Надеюсь, что это поможет:)

Ответ 2

В библиотеках ICU и ICU4J есть словарь, основанный на словарных словах, для итератора по тайскому языку, который можно использовать на стороне сервера для инъекции, где это необходимо.

Или вы можете использовать это для создания утилиты, которая могла бы работать во время сборки или при доставке переводов, если бы вы знали заранее заданные интервалы.

см. Граничный анализ ICU для получения дополнительной информации. Эти библиотеки доступны для C, С++ и Java.