Логика word-wrap/overflow-wrap при переносе URL
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 11.12.19 22:16
Оценка:
Приспичило оформлять вставку длинных (сотни символов) URL с кучей query-параметров в обычный текст (я сам знаю, что это идиотизм, но таковы требования к оформлению текста). Ставлю стили word-wrap/overflow-wrap — все браузеры стараются переносить строго по правой границе области, разрывая идентификаторы, но почти не обращая внимания на "=", "%". По-моему, было бы вполне логичным разрывать строку перед "%" и после "=". Есть какие-то разумные причины этого не делать?
word-wrap overflow-wrap url перенос css
Re: Логика word-wrap/overflow-wrap при переносе URL
От: vsb Казахстан  
Дата: 12.12.19 00:13
Оценка:
overflow-wrap: normal не рвёт слова (но может вообще не перенести строку, если слово слишком длинное). Если ты используешь overflow-wrap: break-word то он старается переносить по словам, но если не может, то рвёт в любом месте. Типичные для URL символы он не считает разрывом слова, поэтому разницы между =, & и буквами для него нет. Если считаешь, что лучше браузера знаешь, где можно разрывать слова, используй &shy; или <wbr> в этих местах (&shy; оставляет дефисы при переносе, <wbr> не оставляет).

https://jsfiddle.net/uns0bht4/ вот пример.
Отредактировано 12.12.2019 0:21 vsb . Предыдущая версия . Еще …
Отредактировано 12.12.2019 0:20 vsb . Предыдущая версия .
Отредактировано 12.12.2019 0:14 vsb . Предыдущая версия .
Re[2]: Логика word-wrap/overflow-wrap при переносе URL
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 12.12.19 20:32
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Типичные для URL символы он не считает разрывом слова, поэтому разницы между =, & и буквами для него нет.


Вот я и пытаюсь понять эту логику. По сути, URL с query-параметрами — это форма записи операций присваивания литеральных значений идентификаторам. Практически в любом языке программирования, откуда эта технология проистекает, идентификаторы и большую часть литералов разрывать нельзя, но пробельные символы вокруг самой операции присваивания ("=", ":=" и т.п.) и вокруг разделителя операторов (";", ",", newline и т.п.) добавлять можно. Большинство (если не все) парсеры URL тоже нечувствительны к пробелам вокруг "=" и "&". Тогда при необходимости переноса было бы естественно выделять лексемы (слова, числа, специальные сочетания и т.п.), и пытаться перенести в первую очередь на их границах. Выражение "word wrap" подразумевает, что переносится слово (лексема языка), а не тупой поток равноправных символов. Какой смысл говорить о "переносе слова", и переносить строку "fojefhjnejfnjkenfjkej&efknefkedmklsnfjsj", как "fojefhjnejfnjkenfjkej&ef knefkedmklsnfjsj"?

vsb>Если считаешь, что лучше браузера знаешь, где можно разрывать слова


Я хочу, чтоб браузер проявлял элементарную сообразительность, а его разработчики — хотя бы интуитивную логику.
Re[3]: Логика word-wrap/overflow-wrap при переносе URL
От: wildwind Россия  
Дата: 13.12.19 16:21
Оценка: +1
Здравствуйте, Евгений Музыченко, Вы писали:

vsb>>Типичные для URL символы он не считает разрывом слова, поэтому разницы между =, & и буквами для него нет.

ЕМ>Вот я и пытаюсь понять эту логику.

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

URL тут ничем не отличается от любой другой абракадарбы (каковой для большинства пользователей веба и является). Применение к нему логики парсера языка программирования — ну , откуда такие фантазии.
Re: Логика word-wrap/overflow-wrap при переносе URL
От: Mystic Artifact  
Дата: 13.12.19 16:36
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

А 100% как должно переносится?
Re[2]: Логика word-wrap/overflow-wrap при переносе URL
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 13.12.19 17:20
Оценка:
Здравствуйте, Mystic Artifact, Вы писали:

MA>А 100% как должно переносится?


Типа, для Вас одинаково естественно перенести это и как "100-%", и как "10-0%"?
Re[3]: Логика word-wrap/overflow-wrap при переносе URL
От: Mystic Artifact  
Дата: 13.12.19 17:24
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Здравствуйте, Mystic Artifact, Вы писали:


MA>>А 100% как должно переносится?


ЕМ>Типа, для Вас одинаково естественно перенести это и как "100-%", и как "10-0%"?


Нет, для меня естественно неразрывать его вообще, или разрывать после знаков препинания (к коим % не относится конечно). К сожалению, автоматическое форматирование не умеет переписывать текст для лучшей "упаковки", таким уже лет 20 никто не занимается наверное.
Но если "слово" не влазит вообще никак, а разрывать надо — то прийдется разорвать же, при чем без хинтов — где попало.
Re[4]: Логика word-wrap/overflow-wrap при переносе URL
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 13.12.19 17:47
Оценка: 4 (1)
Здравствуйте, Mystic Artifact, Вы писали:

MA>Но если "слово" не влазит вообще никак, а разрывать надо — то прийдется разорвать же, при чем без хинтов — где попало.


Ну так я и толкую, что в этих длинных URL нет ни одной длинной последовательности алфавитно-цифровых символов, которая не влезла бы в строку. И текст можно разрывать хоть до, хоть после знаков "=", "&", "%". Однако ж браузеры упорно разрывают именно слова (алфавитно-цифровые последовательности) вместо того, чтобы разрывать текст по их границам. Где логика?
Re[5]: Логика word-wrap/overflow-wrap при переносе URL
От: Mystic Artifact  
Дата: 13.12.19 18:00
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

EM>Однако ж браузеры упорно разрывают именно слова (алфавитно-цифровые последовательности) вместо того, чтобы разрывать текст по их границам. Где логика?

Думаю ее нет. Ну она есть конечно, но, пару раз видел издалека проекты про это, так и хотелось сказать — шибздец на ровном месте.
Re[4]: Логика word-wrap/overflow-wrap при переносе URL
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 14.12.19 10:22
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Правила переноса ориентированы на текст на естественных языках, и учитывают только разделители, принятые в них.


И что, в естественных языках принято переносить какой-нибудь "Spencer&Diamond" как "Spence&D-iamond"?

W>Нормальный текст, включающий слова с небуквенными символами (идентификаторы, артикулы и т.п.), при переносе не должен внезапно разбиваться посередине этих слов. URL тут ничем не отличается от любой другой абракадарбы


Вы не пробовали немного подумать над тем, что я уже пару раз разжевал? Если к URL применяются правила переноса естественных языков, и при этом URL при переносе разрывается внутри "буквенных" слов, когда вблизи разрывов имеются служебные знаки, это может означать только то, что знаки "&", "=" и "%" в анализаторе текста браузера приравнены к символам естественного буквам или цифрам. В каком кошмарном сне такое может прийти в голову?
Re[5]: Логика word-wrap/overflow-wrap при переносе URL
От: wildwind Россия  
Дата: 15.12.19 18:19
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Если к URL применяются правила переноса естественных языков, и при этом URL при переносе разрывается внутри "буквенных" слов, когда вблизи разрывов имеются служебные знаки, это может означать только то, что знаки "&", "=" и "%" в анализаторе текста браузера приравнены к символам естественного буквам или цифрам.


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

ЕМ>В каком кошмарном сне такое может прийти в голову?


Я бы кошмарным сном назвал текст на естественном языке, содержащий длинные URL-ы, явно не предназначенные для восприятия человеком. Да ты и сам ранее признал, что это идиотизм. Странно требовать от браузера его поддерживать.
Отредактировано 15.12.2019 18:21 wildwind . Предыдущая версия .
Re[6]: Логика word-wrap/overflow-wrap при переносе URL
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 15.12.19 18:45
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Наличие в слове небуквенных символов переводит все слово в категорию "неестественных"


А сможете формализовать понятия "наличие в слове небуквенных символов" и "переводит все слово"? То есть, каким условиям должно удовлетворять "слово с небуквенными символами", чтобы, как минимум, определить границы этого слова?

W>Я бы кошмарным сном назвал текст на естественном языке, содержащий длинные URL-ы


Что Вас так зацепили эти URL'ы? Напишите любые последовательности символов, которые можно встретить в текстах на естественном языке, и получите то же самое. Я уже подчеркивал, что использование "&" совершенно нормально для естественного английского языка. Текст на естественном языке также может содержать, например, коды банковских счетов, изделий, обозначения технологических операций и подобные конструкции. Они нередко состоят из буквенно-цифровых последовательностей, разделенных точками, двоеточиями, дефисами, точками с запятой и прочими символами. А в обработке текстов всю жизнь было принято достаточно четкое разделение — "буквы", "цифры" и "спецсимволы". Каким образом символы "&", "%", "=" могли быть отнесены к "буквам"?

W>явно не предназначенные для восприятия человеком.


Вы, похоже, относительно недавно начали работать с Интернетом. Изначально формат URL был придуман не только, как человеко-читаемый, но и как человеко-составляемый. До сих пор полно руководств по составлению query strings для запросов к серверам.

W>Странно требовать от браузера его поддерживать.


Требовать какой-либо особой поддержки было бы действительно странно. Еще раз подчеркиваю: если бы при переносе URL браузер следовал общепринятым правилам обработки текстов — он бы ни за что не разорвал буквенно-цифровую последовательность, если вблизи места предполагаемого разрыва имеются спецсимволы. То, что он эти последовательности разрывает, как раз и свидетельствует о том, что браузер либо распознает URL и умышленно обрабатывает их иначе, либо попросту сходит с ума.
Re[5]: Логика word-wrap/overflow-wrap при переносе URL
От: wildwind Россия  
Дата: 15.12.19 19:10
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>И что, в естественных языках принято переносить какой-нибудь "Spencer&Diamond" как "Spence&D-iamond"?


Принято писать "Spencer & Diamond". А случаи намеренно слитного написания (M&M's) делаются намеренно короткими.
Re[7]: Логика word-wrap/overflow-wrap при переносе URL
От: wildwind Россия  
Дата: 15.12.19 19:22
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Изначально формат URL был придуман не только, как человеко-читаемый, но и как человеко-составляемый. До сих пор полно руководств по составлению query strings для запросов к серверам.


Тогда было вполне резонно полагать, что "человеки", имеющие дело с вебом, обладают определенным складом мышления и определенной логикой. С тех пор мир сильно изменился (в т.ч. благодаря самому вебу). Сегодня браузеры делают не для программистов, ИТ-шников и даже грамотных. Автопереносы длинных урлов в тексте настолько маргинальный случай, что он не стоит внимания. Человеку "старой закалки" это понять сложно. У меня самого, хоть и понимаю мозгами, но "душа не принимает". Но такова жизнь, наше время прошло.
Re[6]: Логика word-wrap/overflow-wrap при переносе URL
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 15.12.19 19:33
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Принято писать "Spencer & Diamond".


По-Вашему, при слитном написании разрывание слова становится оправданным?
Re[8]: Логика word-wrap/overflow-wrap при переносе URL
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 15.12.19 19:36
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Автопереносы длинных урлов в тексте настолько маргинальный случай


Да забудьте уже об URL'ах. На их месте могут быть любые служебные обозначения, от которых свободны только чисто беллетристические тексты. Или современный браузер должен адекватно показывать только беллетристику?
Re[9]: Логика word-wrap/overflow-wrap при переносе URL
От: wildwind Россия  
Дата: 15.12.19 20:17
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Да забудьте уже об URL'ах. На их месте могут быть любые служебные обозначения


Согласен. И любые служебные обозначения разрывать не нужно. Но если уж деваться некуда (а это однозначно ошибка верстальщика и/или "пейсателя"), то разрывать в любом месте, без попытки анализа. Частный случай — короткие, человекопонятные урлы.
Отредактировано 15.12.2019 20:17 wildwind . Предыдущая версия .
Re[10]: Логика word-wrap/overflow-wrap при переносе URL
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 15.12.19 21:21
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Но если уж деваться некуда (а это однозначно ошибка верстальщика и/или "пейсателя"), то разрывать в любом месте, без попытки анализа.


Где в этом выражении ошибки верстальщика и/или "пейсателя"?

3817427483254246+1583656038687479=5401083521941725

Из каких соображений этот текст следовало бы разрывать внутри чисел, а не по их границам? При условии, разумеется, что сами числа в одну строку помещаются.
Re[11]: Логика word-wrap/overflow-wrap при переносе URL
От: wildwind Россия  
Дата: 16.12.19 08:23
Оценка: -1
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Где в этом выражении ошибки верстальщика и/или "пейсателя"?

ЕМ>3817427483254246+1583656038687479=5401083521941725

Отсутствие пробелов. Кроме отсутствия возможности правильно перенести это еще и нечитабельно.
Re[12]: Логика word-wrap/overflow-wrap при переносе URL
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 16.12.19 08:51
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Отсутствие пробелов.


Это не является ошибкой. Максимум — отступлением от стилистических рекомендаций.

W>Кроме отсутствия возможности правильно перенести это еще и нечитабельно.


"Отсутствие возможности" — это плод Вашей фантазии. Коли уж Вы вознамерились доказывать свою точку зрения любой ценой, невзирая на очевидные факты — обоснуйте заодно "отсутствие возможности перенести" словосочетания, разделяемые дефисом, где пробелов по определению быть не должно. Например, "Щекочихин-Крестовоздвиженский".
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.