České pomlčky, mezery a další drobnosti
Tenhle blog má v build pipeline jeden malý, ale prospěšný kousek: knihovnu typopo, která se v remark pluginu
projde každý textový uzel a opraví v něm typografické prohřešky. Píšu
markdown rovně, prostě jako kdykoliv jindy, a typopo z toho udělá něco,
co by typograf nemusel okamžitě smetat ze stolu.
Co se vlastně opravuje
Tři nejčastější věci, na kterých si v české sazbě člověk vyláme zuby:
- Pomlčky a spojovníky. V psacím stroji byla jen jedna čárka, ale my
máme spojovník (
-), pomlčku (--->–) a dlouhou pomlčku (---->—). Spojovník drží slova v jednom kuse (česko-slovenský), pomlčka odděluje vsuvku – jako tahle. - Pevné mezery. Jednopísmenné předložky nesmí zůstat na konci řádku. Když napíšu „k němu,“ typopo tam vrazí pevnou mezeru a já nemusím přemýšlet.
- Uvozovky. České „dolní a horní“ místo anglických „rovných.“ Tohle je úplně zbytečně časté ošklivění textu, protože většina editorů nabízí jen rovné uvozovky a člověk to ani nevnímá.
Jak je to napojené
V svelte.config.js je markdown() preprocessor, který si stáhne každý
soubor .md, propustí ho přes remark, a v něm visitorem projde AST.
Na textových uzlech zavolá fixTypos(value, "cs"). Code bloky a inline
kód se přeskakují – v apt install postgresql-17 by pomlčky byly úplně
mimo.
function remarkCzechTypography() {
return (tree) => {
visit(tree, (node) => {
if (node.type === "code" || node.type === "inlineCode") return SKIP;
if (node.type === "text") {
node.value = fixTypos(node.value, "cs", { removeLines: false });
}
});
};
}
Třicet řádků kódu a zbytek je v knihovně. Příjemné.
Co to nedělá
Typopo není sazečský engine, jen filtr na řetězce. Kerning, dělení slov, řádkové ladění – to dělá prohlížeč. Někdy je výsledek lepší než z Wordu, někdy horší než ze Scribusu. Pro blog to ale úplně stačí: textu se to chytá, čtenář si toho nevšimne, a to je vlastně to nejlepší, co může typografie udělat.