2009-12-29 5 views
11

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

<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 по сети, которая утверждает, что это был изобретен для пишущих машинок, но вы можете увидеть его в таких документах, как США Declaration of Independence. & thinsp; (И да, я понимаю, что вы не должны следовать всем соглашениям более двухсот лет назад, DoI - это просто удобный пример, показывающий эти предшественники пишущих машин и моноширинные шрифты.) & Thinsp; Или типограф, утверждающий, что additional space is distracting — после изменения цвета фона, поэтому пример не может быть чем-то еще!

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

+0

Да, в разных частях мира существуют разные правила, я думал, что это подразумевается. Я следую правилам, которые определяют это. :) (Единственный недостаток - я, видимо, должен сделать компромисс из-за HTML ..) –

+0

Все это «два пространства после периода бессмыслицы» было изобретено, когда мы использовали моноширинные шрифты и немые выходные устройства. Современные двигатели типографии делают это за вас. Do * not * отменяет поведение по умолчанию! –

+2

Фрэнк: Декларация независимости не была напечатана, но использует это. К сожалению, я не могу использовать современный механизм типографии, такой как TeX, я должен использовать HTML. –

ответ

3

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

+0

Я подумал об этом и почти включил его в свой список «очевидных решений», но отбросил его. Однако в настоящее время это единственное предлагаемое решение, отвечающее требованиям с наименьшими недостатками представления. (Несмотря на недостатки исходного кода). Я использовал прописку справа в своем примере. –

+0

Мне любопытно, почему это было ниспровергнуто, не могли бы вы оставить комментарий? –

+0

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

13

Вы можете использовать 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 и согласиться с тем, что стиль будет немного меньше идеала на платформах, которые его не поддерживают.

Редактировать: Как указано в комментариях, white-space: pre-wrap не работает с text-align: justify. Тем не менее, я протестировал sampler of different entities с использованием 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 в настоящее время обсуждает добавление более продвинутой поддержки типографики, поэтому сейчас самое подходящее время для начала обсуждения такой функции.

+0

Это отключает 'text-align: justify', иначе похоже, что это был бы лучший ответ. –

+1

Хм. Если вам небезразличен точный интервал, зачем использовать 'justify'? В таком случае, я бы проверил ' ' на разных браузерах и посмотрел, работает ли это для вас. –

+0

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

2

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

3

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

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

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

+0

» Интересно, что на странице собраний (в настоящее время 14584 голоса) есть 47% в пользу дополнительного интервала предложения, с дополнительными 8%, которые, по-видимому, ежедневно используются или работают с дополнительным интервалом (третий вариант). –

+0

Лично я по-прежнему занимаю много места в большинстве своем из привычки, хотя я заметил, что при вводе в IM или на моем iPhone меня заменили на одно место, чтобы сохранить нажатия клавиш (не знаю, почему я все еще использую 2 в других средах ...) Я думаю, что в наши дни это стало скорее стилистикой, чем вопросом правильности. Мне было бы интересно узнать, что скажет профессиональный редактор. –

+0

Различные источники, которые я прочитал, согласны с тем, что после WW2 такие компании, как журналы и издатели книг, скорректировали многие предыдущие практики в интересах экономии бумаги и стоимости; и что такая практика стала прецедентом на сегодняшний день. Это оправдание не применимо ко мне (но не так очевидно, конечно, возможно использовать HTML для макета печати), но моя аудитория в любом случае отличается от их. –

1

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

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

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

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

3

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

+0

Это похоже на комментарий, отличный от ответа ... – Syon

+1

@Syon, это болтливо, но похоже, что он отвечает на вопрос: «Используйте'   'или, если вы думаете, что это хорошо выглядит,'   '" –

+0

Это заключает хорошо изученную статью здесь http://www.heracliteanriver.com/?p=324 - в которой отмечается, что эм-квадрат (т. е. двойное пространство) использовался после периода окончания предложения на протяжении веков, вплоть до 1930-х годов или так. –