Модуль для применения проверенных временем типографских правил к вашим документам для улучшения разборчивости.
Типография - это искусство, столько же науки, которая была уточнена в течение истории. Беспококая работа по улучшению разборчивости и потока текста, типографы по всему миру разработали множество правил, которые часто отбрасываются на сегодняшних публикационных средах. Этот модуль стремится исправить эту ситуацию.
Это очень в процессе работы , и вы можете не найти ее подходящей для ваших собственных потребностей. Вы можете внести свой вклад во многих способах улучшения этого проекта: отправив запросы на привлечение, предложив идеи или документируя собственные типографские соглашения вашей страны.
typographer ( input , configuration ) ; input - это строка или элемент HTML (см. Ограничения на вход HTML).
configuration - это объект со следующими дополнительными свойствами:
locale : языковой код для использования. По умолчанию en .output_format : либо text , либо html , формат, используемый для замены (например, u00a0 или для неразрывных пространств). По умолчанию text .disable_rules : массив правил/наборов правил для отключения (например, ['ruleset/name1', 'ruleset2/name2', 'ruleset3', ...] ).В зависимости от типа ввода типограф либо вернет строку (при использовании ввода строки), либо обновляет элемент и его потомки непосредственно в DOM.
const fixed = typographer (
'Bonjour typographer: enchanté !' ,
{
locale : 'fr_FR' ,
output_format : 'html'
}
) ;
console . log ( fixed ) // 'Bonjour typographer : enchanté !' const elements = document . querySelectorAll ( '.fixTypography' )
[ ] . forEach . call ( elements , element => {
typographer (
element ,
{
locale : 'fr_FR' ,
output_format : 'html'
}
) ;
} ) ; Самая первая мотивация для этого проекта - это места , как вы, возможно, знаете, есть более чем один тип пространств, мы посмотрим на несколько:
Похоже на обычное пространство, но не может быть сломано по двум линиям при упаковке. Оба слова (разделенные не разрушающим пространством) всегда окажутся на одной линии.  это пространство уже, чем обычное пространство.  это тот же размер, что и тонкое пространство, но не может быть сломано по двум линиям.Есть больше, чем просто эти четыре типа мест, но вы поняли идею. Не безразличные места действительно полезны для предотвращения странной упаковки.
Рассмотрим 451 °F , разве не было бы странно иметь устройство на отдельной линии, чем значение? Это то, для чего нужны неразрывные места. Вы хотите использовать неразрывные места.
Это никогда не может быть идеальным, и есть много случаев, когда типограф будет бороться, например, международной системе подразделений указывает, что подразделениям должно предшествовать пространство (неразрывное), но довольно сложно убедиться, что что-то является единицей. Некоторые единицы могут быть очень неоднозначными (например, Volt, также могут быть римским цифром для 5).
Мы добавим неразрывное пространство в подразделения, в которых мы почти уверены, и оставим вам это, чтобы сделать это для неоднозначных.
Если вы используете ввод строки HTML с локалью, для которого требуются неразрывные пространства (обычные или узкие) перед знаками пунктуации, вы должны убедиться, что ваша строка не содержит никаких тегов, которые не следует преобразовать, например, <code> или <style> . В противном случае вы получите такие вещи, как color : red ; который сломал бы ваш стиль или образцы кода.
Использование ввода элемента HTML безопасно, поскольку мы отфильтровываем узлы, которые не следует преобразовать, как вышеупомянутые (и другие). Обратите внимание, что если элемент в вашем входе содержит некоторые из этих типов узлов, мы пропустим весь элемент контейнера.
Мы стараемся изо всех сил, чтобы автоматически исправить столько, сколько сможем, но первое правительство типографа: «Если сомневаюсь, оставляйте вещи такими, какие они есть».
Это если бы он становился сложно, правила различаются в разных странах, и даже в данной стране может быть более одного рекомендуемого стиля. По умолчанию мы сосредоточимся на применении бесспорных типографских правил, в типичном подходе 80-20.
Примечание. Канада (французский) использует разные правила для пунктуации.
, не должно иметь места раньше, и регулярное место после.. не должно иметь места раньше, и регулярное место после.: Должен иметь неразрывное пространство раньше и регулярное место после.; Должен иметь узкое неразрывное пространство раньше и регулярное пространство после.? Должен иметь узкое неразрывное пространство раньше и регулярное пространство после.! Должен иметь узкое неразрывное пространство раньше и регулярное пространство после.« , ‹ Должен иметь регулярное пространство раньше и узкое неразрывное пространство после.» , › Должен иметь узкое неразрывное пространство до и регулярного места после.“ , ' Должен иметь обычное место раньше, и нет места после.” , ' Не должно быть места раньше и обычного места после.( Должен иметь регулярное место раньше, и нет места после.) не должно иметь места раньше и обычное место после.[ Должен иметь обычное место раньше, и нет места после.] не должно быть места раньше и регулярного места после.- (дефис) не должно иметь места раньше и после.— (Em, Long) или- – En, средний) должен иметь обычное пространство снаружи и неразрывное пространство внутри при сочетании вокруг некоторого текста.… , ... , или . . . не должно иметь места раньше и обычное место после. За исключением случаев, когда между квадратными скобками или скобками, где не должно быть места до и после.' Не должно иметь места раньше и после., не должно иметь места раньше, и регулярное место после.. не должно иметь места раньше, и регулярное место после.: не должно иметь места раньше, и регулярное место после.; не должно иметь места раньше, и регулярное место после.? не должно иметь места раньше, и регулярное место после.! не должно иметь места раньше, и регулярное место после.“ , ' Должен иметь обычное место раньше, и нет места после.” , ' Не должно быть места раньше и обычного места после.« , ‹ Должен иметь регулярное пространство раньше и узкое неразрывное пространство после.» , › Должен иметь узкое неразрывное пространство до и регулярного места после.( Должен иметь регулярное место раньше, и нет места после.) не должно иметь места раньше и обычное место после.[ Должен иметь обычное место раньше, и нет места после.] не должно быть места раньше и регулярного места после.- (дефис) не должно иметь места раньше и после.— (Em, Long) или – (en, Medium) не должно иметь места раньше и после. EM Dash должен иметь место раньше, когда он использовался, чтобы указать источник цитаты.… , ... , или . . . может иметь обычные места до и после, нет места до и регулярного места после, или место до и нет места после.' Не должно иметь места раньше и после. В большинстве случаев вы можете просто использовать общий языковой код, но если вы обнаружите неверные прикладные преобразования, попробуйте использовать конкретный код локали для вашей страны. Например, канадский французский ( fr_CA ) использует различные правила расстояния для пунктуации, поэтому использование fr в этом контексте, скорее всего, даст ненадлежащие результаты.
en - Общий языковой код для английского языкаen_US - Соединенные Штатыen_GB - Великобританияen_CA - Канадаen_AU - Австралияen_NZ - Новая Зеландияen_IN - Индияfr - общий язык кода для французскогоfr_FR - Францияfr_BE - Бельгияfr_CA - Канадаfr_CH - Швейцарскийfr_LU - Люксембургfr_MC - Monacode - общий языковой код для немецкого языкаde_DE - Германияde_AT - Австрияde_BE - Бельгияde_CH - Швейцарскийde_LI - liechtensteinde_LU - Люксембургes - Общий языковой код для испанскогоes_ES - Испанияes_AR - Аргентинаes_BO - Боливияes_CL - Чилиes_CO - Колумбияes_CR - Коста -Рикаes_DO - Доминиканская Республикаes_EC - Эквадорes_SV - Сальвадорes_GT - Гватемалаes_HN - Гондурасes_MX - Мексикаes_NI - Никарагуаes_PA - Панамаes_PY - Paraguayes_PE - Перуes_PR - Пуэрто -Рикоes_UY - Уругвайes_US - Соединенные Штатыes_VE - Венесуэла