3 заметки с тегом

код

Туннельтех на китайском

Во время основной работы над сайтом Туннельтеха часа два обсуждали, как устроить языковые версии: отдельные текстовые файлы, чтобы переводчикам было удобнее или хранение всех языков в теле документа и выгрузка в таблицу для переводчиков. Я боялся, что работать с файлами, которые внутри хранят текст на всех языках, будет неудобно. А Толя объяснял, что так проще найти и исправить ошибку, а неудобно работать с длинным файлом будет единоразовым. В итоге он придумал теги, с помощью которых шаблонизатор на Питоне собирал отдельные языковые страницы из одного ХТМЛ-родителя. Шаблонизатор позволяет хранить внутри тегов не только текст, но и ХТМЛ. Этим пользуемся, когда для разных языков нужна разная вёрстка. В английской версии метры и футы, в остальных — только метры:

Правила у тегов простые:

Скрипт собирает весь текст в единую таблицу, в которую переводчики после добавляют перевод. Второй скрипт расставляет переведённый текст по файлам. На добавление китайской версии из таблицы с переводами у Толи ушло минут двадцать чистого времени.

Вспомнил я это потому, что появились испанская и китайская версии. Испанский не сильно меняет образ страницы, не то что китайский. Не знаю, что скажут китайцы, но внутри отдела мы в восторге. Отдельно радует, что дизайн, вёрстка и языковой шаблонизатор выдерживают крайне достойно.

Скриншоты двух страниц, если лень идти на сайт:

Пробелы

После заметки о символах нулевой ширины собрал свою таблицу пробелов. Добавил символы нулевой ширины, короткие мнемоники, аннотации, скрипт для копирования, чтобы не целиться, и сгруппировал. В аннотациях — только применение.

→ Неразрывность

ХТМЛ

Мнемоника

АйОС и Андройд

С нулевой шириной

При выравнивании по ширине растягивается, как другие пробелы. В языках без пробелов отмечает границы слов

Запрещает разрыв строки, не добавляя пустого пространства. Не пробел, но для поиска, парсинга, сортировки и пр. определяет границы слов

Классика

Пробел минимальной ширины

Обычно в 1/5 кегля, реже — в 1/6

Зауженный, часто схож с «Thin Space». Не отображается в Сафари, поэтому выкручиваются

Обычный пробел, вводится клавишей «Space»

Шириной с обычный пробел

Кратные кеглю

1/6 кегля

1/4 кегля

1/3 кегля. Ближе других к обычному пробелу

1/2 кегля

Шириной с кегль шрифта

К цифрам

4/18 кегля. Применяют в математических формулах

Шириной с цифру. Используют в наборе таблиц

Экзотика

Шириной с точку

Шириной с иероглиф. Используется в восточных языках

Символы нулевой ширины

Чтобы контролировать внешний вид и поведение текста, обычного пробела не хватает. Например, отделяю пробелом в шестую часть кегля единицы измерения от значений. Или склеиваю предлоги с последующими словами. С раскладкой Бирмана неразрывный пробел вводить легко, но с пробелами, меньше обычного, она не помогает. Поэтому копировал их со страницы «Все о пробелах». Там вконце — таблица. Но всего нужного там нет. Из символов нулевой ширины есть только третий:

Название Юникод ХТМЛ Мнемоника
1 Zero Width No-break Space U+FEFF 
2 Word Joiner U+2060 ⁠ ⁠
3 Zero Width ​Space U+200B ​ ​
4 Zero Width Joiner U+200D ‍ ‍
5 Zero Width Non-joiner U+200C ‌ ‌

Не все эти символы — пробелы. Работают они похожим образом, поэтому их можно перепутать.

В свежем стандарте Юникода (3.2) «Word Joiner» заменил «Zero Width No-break Space», и о последнем можно забыть, несмотря на стройность названия. «Word Joiner» — непробел, но как и пробел определяет границы слов. Это влияет на поиск, парсинг, сортировку и прочее. Символ подходит для склейки конструкций вроде «км/ч» (км⁠/⁠ч).

«Zero Width ​Space» похож на «Word Joiner», но не склеивает слова и растягиваться при выключке по ширине, как прочие пробелы.

Управление внутри слова поручают «Zero Width Non-joiner» и «Zero Width Joiner». Например, чтобы отменить или задать лигатуру (конечно, при наличии нужных символов в шрифте). Эти символы используют в арабской, индийской, тайской, корейской и прочих письменностях без пробелов.

 4 комментария    6414   2018   код   типографика