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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

чтобы исправить нарушение. Почему?

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

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

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

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

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

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

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

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

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

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

Однако браузеры НЕ ДОЛЖНЫ зависеть от того, что U + 202F определяется шрифтом, вместо этого они должны предоставлять резервную копию U + 2009 (THIN SPACE) при его рендеринге, каждый раз, когда 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, например, для того, чтобы перевести его на свои страницы как {{nnbsp}}.

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

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

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

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

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

Пример "& thinsp; fine & thinsp;" inseccable française & thinsp;; исправление codée & thinsp;!

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

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

  • Пример использования &#x2006; (ШЕСТЬ САДРАТИНА, может работать, но может быть слишком узким для ваших шрифтов и не может показывать свойство, не разбивающееся):

Exemple de " fine " insécable française ; correctement codée ! (hmmm... not really)

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

Пример "  fine  " inseccable française  ; исправление codée  ! (хм... не реально)

Ответ 2

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

Ответ 3

Почему не просто &#x202F;?

Ответ 4

Вы можете сделать это, но это не идеально.

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

Ответ 5

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