Как визуализировать узкие неразрывные пробелы в HTML для Windows?

на французском языке типографика требует, чтобы мы использовали узкий неразрывный пробел (U+202F) в разных местах ("Comme ça !").

по-видимому, каждый браузер в windows не поддерживает это,и все они отображают странный символ. Это работает на большинстве браузеров на Mac OS X, а также Linux.

кто-нибудь знает, как заставить браузеры Windows отображать его правильно?

(Я предполагаю, что это ошибка Windows, а не ошибка браузера поскольку Firefox и Safari поддерживают его, пока он не на Windows).

5 ответов


Хммм... нет. Если единственная проблема заключается в том, что   (U+2009) все еще ломается, я предпочту использовать:

<span style="white-space:nowrap">&thinsp;</span>

для устранения нарушения поведения. Почему?

  • на штраф в размере эффективно использует почти фиксированную ширину между одной шестой и одной четвертой кадратина (0,166 ca. до 0,25 ca., когда стандартное пространство равно 0,5 ca.) Выбор ширины зависит от подхода, уже присутствующего в пределах символы определенного шрифта.

  • шрифты сделаны для того чтобы отрегулировать ширину их тонкого космоса (U + 2009): если эти шрифты были сделаны французскими типографиями (для перевода французского), то едпрочею (или пробелы между буквами в словах) уже, чем в шрифтах, предназначенных для английского языка: это связано с тем, что французские тексты обычно содержат больше букв, чем эквивалентные английские тексты (например, печатная Библия), и чтобы избежать увеличения количества печатных страниц, глифы во французских шрифтах были сделаны немного уже и с уменьшенным подходом; чтобы компенсировать это сокращение, французский штраф в размере был увеличен в размере. (Часто говорят, что U+2009 это пятая часть cadratin, т. е. 0.2 Калифорния., но это неправильно, так как это значение является просто разумным медианным значением, которое должно быть эффективно скорректировано в шрифтах в соответствии с их дизайном).

  • на английском языке с английской типографией межсимвольные пробелы уже велики достаточно, чтобы оправдать тот факт, что в текстах рядом с большинством двойной пунктуационные знаки. Однако, если французский язык отображается шрифтом с использованием английской типографии (которая имеет большие межсимвольные пробелы),штраф в размере должны быть узкими и должны быть уменьшены до 1/6-й cadratin.

  • так что да, U + 2009 (&thinsp; в репозитории SGML) немного регулируется, в зависимости от шрифтов.

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

при рендеринге документа, макет страницы которого уже предварительно вычислен (с известными шрифтами и точными метриками), тонкое пространство (U + 2009) уже то, что вы хотите (потому что вам не придется беспокоиться о нарушении поведения.

К Сожалению, Unicode забыл назначить этим четырехугольным пространствам U + 2000..U + 2006 (и к тонкому пространству U+2009) неразрывное поведение в свойствах линейного разрыва.

единственный способ для Unicode исправить его (только для текстовых документов) - добавить другой символ, а именно U+202F (узкое неразрывное пространство) в Unicode 5.1, которому позже было дано символическое имя SGML "nnbsp" для ссылок на символы (но сопоставление этого именованного символьного объекта с U+202F не является частью какого-либо стандарта HTML или XML, поэтому этот именованный объект также не должен использоваться, если ваш документ не определяет его явно во встроенном DTD !)

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

все браузеры должны обрабатывать U+202F как неразрывный (это уже так, даже если они не знают символ во внутренней копии UCD).

однако браузеры не должны зависеть от того, что U+202F определен в шрифте, вместо этого они должны предоставлять резервную копию U+2009 (тонкое пространство) при рендеринге, каждый раз, когда U+202F не отображается в текущем шрифте, но U+2009 отображается в том же шрифте (это обычно имеет место со многими шрифтами).

Итак, это проблема в HTML-визуализаторах (т. е. браузеры); я также думаю, что это больше, чем просто проблема шрифтов, это действительно ошибка браузеров (а не ошибка или ограничение в шрифтах), если они не предоставляют такие резервные копии для пробелов. Конечно, все новые шрифты должны отображать U + 202F на тот же глиф, что и U+2009.

учитывая, что тонкое пространство (U + 2009, или &thinsp;) очень хорошо поддерживается во многих шрифтах и имеет правильную ширину для рендеринга французских текстов со шрифтами, выполненными с французскими типографскими метриками, или для рендеринга Английские тексты, сделанные с английскими типографскими метриками, это действительно должно быть правильным резервом для использования каждый раз, когда узкое неразрывное пространство недоступно !

вы можете отлично эмулировать желаемое поведение U + 202F в HTML, просто используя U + 2009 и не нарушая его с помощью CSS "white-space:nowrap". Это всегда будет лучше, чем изменение размера шрифта для отображения псевдо-полупространства (потому что это неправильно со многими шрифтами, для которых это все равно будет слишком большим, а также потому, что это не работает, как ожидалось, в промежутках текста с цветным фоном: изменение размера шрифта изменяет высоту строки).

поэтому, пожалуйста, используйте этот код вместо HTML или SVG-документов (держите U+202F только для текстовых документов):

<span style="white-space:nowrap">&thinsp;</span>

вы можете сохранить эту последовательность в шаблон, который можно назвать Template:nnbsp в MediaWiki например, для transcluding его в ваши страницы, как {{nnbsp}}.

обратите внимание, что это все еще предпочтительнее ссылаться на тонкое пространство символически как &thinsp; а не заставлять точное кодовая точка Unicode как &#x2009; : именованный объект может быть переназначен визуализатором или в соответствии с предпочтениями пользователя в другое рабочее пространство.

обратите внимание, что MS-word действительно использует U + 2009, а не U+202F для представления собственного штраф в размере. Это правильно, учитывая, что документы Word имеют предварительно вычисленный макет, и учитывая, что MS-Word локально применяет неразрывное поведение при вычислении макета страницы. Документы Word не являются текстовыми документами.

  • исключение рендеринга (используя цвета фона, чтобы показать, что высота линии не изменяется, но, к сожалению, этот сайт не позволяет устанавливать цвета фона, кроме как в <code> разделы, как здесь, которые используют моноширинные шрифты):

Exemple de « fine » insécable française correctement codée !

  • то же самое без the <code> контейнер не отображает фон цвет, но он использует обычные пропорциональные шрифты, так что тонкое пространство эффективно отображается как тонкое:

Exemple de "fine" insécable française; correctement codée !

  • пример использования &#x202F; (NNBSP, который обычно не поддерживается в большинстве шрифтов, но это может в конечном итоге работать с вашим текущим браузером и шрифтами, установленными в вашей системе, такими как дежавю Sans):

Exemple de "fine" insécable française; correctement codée !

  • пример использования &#x2006; (шестая часть CADRATIN, может работать, но может быть слишком узким для ваших шрифтов, и, возможно, не демонстрируют неразрывные свойства):

Exemple de "fine" insécable française; correctement codée ! (хммм... не совсем)

  • пример использования &nbsp; (который почти всегда слишком большой):

Exemple de "fine" insécable française; correctement codée ! (хм... не совсем)


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


почему бы просто &#x202F;?


вы могли бы это сделать, но это не идеально.

<span style="font-size:50%;"> </span>

вы можете нажать Ctrl + shift+2 в Редакторе WYSIWYG, таком как CKEditor, а затем перейти к исходному HTML-представлению.