Временной интервал

Каков наилучший способ представить дополнительные интервалы между предложениями (используя [X] HTML + CSS)?

<p>Lorem ipsum.  Dolor sit amet.</p>
               ^^ wider than word spacing

Поскольку HTML и XML требуют пространственного сгибания, эти два пространства должны вести себя как одно пространство.

Какие существуют опции? & thinsp; Есть несколько очевидных ниже, что существуют другие? & Thinsp; (Что-нибудь в CSS3?) & Thinsp; Какие недостатки, если таковые имеются, существуют для них, в том числе в разных браузерах? & Thinsp; (Как неразрывные пространства ниже взаимодействуют с оберткой строк?)

  • ..ipsum. &nbsp;Dolor..
  • ..ipsum.&nbsp; Dolor..
  • ..ipsum.&nbsp;&nbsp;Dolor..

Там много FUD в сети, которая утверждает, что это было изобретено для пишущих машинок, но вы можете видеть это в таких документах, как US Декларация независимости & thinsp. (И да, я понимаю, что вы не должны следовать всем соглашениям более двухсот лет назад, DoI - это просто удобный пример, показывающий эти предшественники пишущих машин и моноширинные шрифты.) & Thinsp; Или типограф, утверждающий, что дополнительное пространство

Ответ 1

Оберните каждое предложение в промежутке и, возможно, настройте диапазон. (Не отличное решение).

Ответ 2

Вы можете использовать white-space: pre-wrap для сохранения последовательности пробелов, сохраняя при этом текст:

<p style="white-space: pre-wrap;">Lorem ipsum.  Dolor sit amet.</p>

Это не поддерживается в IE до IE 8 в режиме IE 8, ни в Firefox до 3.0.

Вы также можете использовать &emsp; или &ensp; для пробелов один em или один en широкий. Я не знаю, насколько широко распространена их поддержка, но они, похоже, работают над последними WebKit и Firefox в Mac OS X.

Последовательность из двух символов &nbsp; предотвратит разрывы строк в этом пространстве; что означает &nbsp; неразрывное пространство. Последовательность A sentence. &nbsp;Another. вызывает появление &nbsp; во второй строке, слегка отступая от текста, что, вероятно, нежелательно. Последовательность A sentence.&nbsp; Another. работает отлично, с разрывом строки и не добавляя никаких дополнительных отступов, хотя, если вы используете ее в оправданном тексте, с &nbsp; в конце строки, это предотвратит правильную правильность этой строки. &nbsp; предназначен для написания имени человека, например Mr.&nbsp;Torvalds, или аббревиатуры, заканчивающейся с помощью ., в которой типографская конвенция говорит, что вы не должны разделить ее по строкам, чтобы избежать путаницы и думая, что предложение закончилось.

Таким образом, использование последовательностей &nbsp; нежелательно. Поскольку это стилистический эффект, я бы рекомендовал использовать white-space: pre-wrap и принять, что стиль будет немного меньше идеала на платформах, которые его не поддерживают.

edit. Как указано в комментариях, white-space: pre-wrap не работает с text-align: justify. Тем не менее, я протестировал сэмплер разных объектов, используя BrowserShots (отвратительные объявления, и несколько шелушащиеся и медленные, но это довольно полезный сервис по цене, которая является бесплатной). Он выглядит как довольно широкий выбор браузеров на довольно широком спектре платформ, поддерживает &ensp; и &emsp;, некоторые из которых не используют пробелы, поэтому рендеринг не так уж плох, и только IE 6 на Windows 2000 фактически делает их разбитыми, как коробки. BrowserShots не позволяет мне выбирать точные комбайны браузера/ОС, которые я хочу, поэтому я не могу выбрать IE 6 на XP, чтобы увидеть, что это не так. Итак, этот правдоподобный ответ, пока вы можете жить с IE 6 на Win2K (и, возможно, XP), сломался.

Другим возможным решением было бы найти (или создать) шрифт, который имеет пару кернинга для комбинации символов ".", чтобы их более широко разделить. С поддержкой @font-face во всех основных браузерах на данный момент, включая IE, в IE 5.5 (хотя IE использует другой формат, чем другие браузеры), использование вашего собственного шрифта фактически становится разумным и возвращается к умолчанию пользователей шрифт, если он не поддерживается, ничего не сломает.

Последняя возможность может заключаться в том, чтобы поговорить с комитетом CSS о добавлении функции стиля, которая позволит вам указать, что вы хотите иметь более широкий интервал в конце предложений (который будет определяться периодом, за которым следует пробел; сокращения и аббревиатуры потребуется &nbsp;, чтобы избежать получения более широкого пространства). Комитет CSS в настоящее время обсуждает добавление более продвинутой поддержки типографики, поэтому сейчас самое подходящее время для начала обсуждения такой функции.

Ответ 3

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

Bottomline: Профессиональный наборщики, дизайнеры и настольные издатели должны использовать только одно место. Сохраните двойные пространства для машинопись, электронная почта, курсовые работы (если предписанные руководством по стилю, вы используя), или личная корреспонденция. Для всех остальных делайте то, что делает вы чувствуете себя хорошо.

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

Ответ 4

Для всех, кто устарел от вас и устарел на моно-космос, - читайте книгу. & ensp; Профессиональные издатели использовали один &emsp; между предложениями для незапамятных времен, а THAT - это моноширинный двухпространственный стандарт пришел из. & ensp; Учитесь из истории, вместо того, чтобы извергать риторику без оснований. И, наконец, я должен признать, что &ensp; выглядит лучше в большинстве браузеров: &emsp; слишком широк. & ensp; вы думаете о читабельности этого абзаца? & ensp; Редактор Stackoverflow допускает некоторый HTML, и я использую &ensp; между всеми предложениями.

Ответ 5

&nbsp; не является правильным символом для использования, семантически. Это неразрывное пространство: пространство, которое не будет использоваться в качестве разрыва строки. Возможно, используйте пробел a &ensp; или один &emsp;, или (мои личные рекомендации) не беспокоитесь о устаревшем стиле двойного пробела на вашей странице.

Ответ 6

& NBSP; является самым худшим возможным методом, поскольку он нарушает оправдание. Предварительная упаковка, как предлагается, дает грубый контроль, но не может быть оправдана. Существуют другие космические объекты, такие как & thinspace; и & nspace;, а также кучу символов пространства Юникода, которые должны давать несколько лучший контроль и не должны нарушать оправдание. Эти сущности, по моему мнению, являются лучшим решением, отличным от CSS.

Для лучшего управления вам нужно решение CSS. Вы можете охватывать предложения, очевидный выбор, или вы можете охватить пространство между предложениями. Последнее мне кажется более ошибочным, но его легче достичь, особенно если у вас есть обычная привычка для двух пробелов - вы можете просто искать и заменять все пространство пространства-пространства пробелом вокруг пробела. У меня есть javascript, который делает это "на лету" для блоггеров.

Не используйте модель окна (padding-right), так как она сломает правый край полностью оправданного текста (и даже если это не полностью оправдано, заставляет строки обернуться "рано" ). Если вы занимаете пространство между предложениями, вы можете просто изменить слово-интервал на этих элементах. Если вы являетесь обернутыми предложениями, вы можете установить для своего абзаца или другого контейнера большее расстояние между словами и установить правильное предложение, или вы можете сделать это за один шаг после селектора:

.your_sentence_class: после {content: ""; слово-интервал: 0.5em; }