mod: описание модуля висячей типографики +
This commit is contained in:
33
README.md
33
README.md
@@ -267,19 +267,20 @@ result = typo.process("100 км/ч") # Останется без
|
|||||||
Это создаёт идеально ровный край не по формальным границам знаков, а по оптическому краю — по первым буквам строк.
|
Это создаёт идеально ровный край не по формальным границам знаков, а по оптическому краю — по первым буквам строк.
|
||||||
Текст выглядит гораздо аккуратнее и профессиональнее.
|
Текст выглядит гораздо аккуратнее и профессиональнее.
|
||||||
|
|
||||||
В современном CSS есть свойство `hanging-punctuation`, которое должно делать всё это автоматически. Но на сегодняшний
|
Интернет публикации (да и бумажные издания) практически игнорируют висячую типографику. Но иногда это отличный
|
||||||
день (конец 2025) его поддержка браузерами практически нулевая (кроме Safari), поэтому на него полагаться нельзя.\
|
инструмент для акцентной типографики: крупные заголовки, цитаты, выносы, подписи к иллюстрациям, оформленные с помощью
|
||||||
риходится делать "руками" через <span>.
|
висячей типографики, выглядят гораздо эффектнее. В современном CSS есть свойство `hanging-punctuation`, которое должно
|
||||||
|
делать всё это автоматически. Но на сегодняшний день (конец 2025) его поддержка браузерами практически нулевая (кроме
|
||||||
|
Safari), поэтому на него полагаться нельзя. Поэтому в типографе etpgrf реализация висячей типографики осуществляется
|
||||||
|
через оборачивание висячих символов в специальные HTML-теги с CSS-классами.
|
||||||
|
|
||||||
В вебе это достигается с помощью CSS, оборачивая "висячий" символ или слово в <span> и применяя к нему, например,
|
Оборачивая "висячий" символ или слово в `<span>` и применяя к нему, например, отрицательный `text-indent` или
|
||||||
отрицательный text-indent или margin-left (`<span style="margin-left:-0.44em;">«</span>`). Важный нюанс: степень
|
`margin-left` (`<span style="margin-left:-0.44em;">«</span>`). Важный нюанс: степень "вывешивания" у символов
|
||||||
"вывешивания" у символов разная. И не только потому, что кавычка, скобка или точка имеют разную ширину, но еще
|
разная. И не только потому, что кавычка, скобка или точка имеют разную ширину, но еще и потому, что кавычка, например,
|
||||||
и потому, что кавычка, например, может "висеть" на 100% своей ширины, а точка или запятая — только на 50-70%, чтобы не
|
может "висеть" на 100% своей ширины, а точка или запятая — только на 50-70%, чтобы не отрываться от слова совсем.
|
||||||
отрываться от слова совсем.
|
|
||||||
|
|
||||||
Типограф `etpgrf` может автоматически оборачивать висячие символы в `<span>` со специальными CSS-классами.
|
По умолчанию эта функция висячей типографики **отключена**. Чтобы её включить, нужно задать параметр
|
||||||
По умолчанию эта функция **отключена**, так как она увеличивает размер HTML. Чтобы её включить, нужно задать
|
`hanging_punctuation` при конфигурировании типографа (по умолчанию `hanging_punctuation=None`):
|
||||||
параметр `hanging_punctuation` при конфигурировании типографа (по умолчанию `hanging_punctuation=None`):
|
|
||||||
|
|
||||||
```python
|
```python
|
||||||
typo = etpgrf.Typographer(hanging_punctuation='left')
|
typo = etpgrf.Typographer(hanging_punctuation='left')
|
||||||
@@ -291,10 +292,10 @@ typo = etpgrf.Typographer(hanging_punctuation='left')
|
|||||||
* `'right'` — включены только правые висячие символы (выравнивание по правому краю);
|
* `'right'` — включены только правые висячие символы (выравнивание по правому краю);
|
||||||
* `'both'` или `True` — включены и левые, и правые висячие символы.
|
* `'both'` или `True` — включены и левые, и правые висячие символы.
|
||||||
|
|
||||||
Так же через `hanging_punctuation` можно задать список тегов, внутри которых висячая типографика не будет
|
Так же через `hanging_punctuation` можно задать список тегов, внутри которых висячая типографика будет применяться
|
||||||
применяться. Это нерекомендованный способ (так как предполагает знание об исходном тексте, и не сработает только для
|
(всегда в режиме `'both'`). Это нерекомендованный способ (так как предполагает знание об исходном тексте, и не сработает
|
||||||
блочных тегов, а поведение "блочных" и "встроенных" может быть переназначено через CSS). Тем не менее он может быть
|
для сточных тегов, а поведение "блочных" и "строчных" может быть переназначено через CSS). Тем не менее управление
|
||||||
полезен в некоторых, редких случаях:
|
висячей пунктуацией на уровне тегов может быть полезно в некоторых, редких случаях:
|
||||||
```python
|
```python
|
||||||
typo = etpgrf.Typographer(hanging_punctuation=['blockquote', 'h2', 'h3'])
|
typo = etpgrf.Typographer(hanging_punctuation=['blockquote', 'h2', 'h3'])
|
||||||
```
|
```
|
||||||
@@ -317,7 +318,7 @@ typo = etpgrf.Typographer(hanging_punctuation=['blockquote', 'h2', 'h3'])
|
|||||||
.etp-rdquo { right: -0.4em; } /* ” */
|
.etp-rdquo { right: -0.4em; } /* ” */
|
||||||
.etp-rsquo { right: -0.22em; } /* ’ */
|
.etp-rsquo { right: -0.22em; } /* ’ */
|
||||||
.etp-rpar, .etp-rsqb, .etp-rcub { right: -0.25em; } /* ) ] } */
|
.etp-rpar, .etp-rsqb, .etp-rcub { right: -0.25em; } /* ) ] } */
|
||||||
.etp-period, .etp-comma, .etp-colon { right: -0.15em; } /* . , : */
|
.etp-r-dot, .etp-r-comma, .etp-r-colon { right: -0.15em; } /* . , : */
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user