Locales

Ukrainian typography rules · uk

Українська

Ukrainian sets primary quotation marks as «…» and secondary quotation marks as “…”. A break in a sentence is written with an em dash (U+2014) with a space on each side; number and date ranges take an em dash (U+2014) with no surrounding spaces. Numbers bind to units such as % га год with U+00A0.

Updated · spec 1.12.0

Run polytypo with Ukrainian rules

Edit the text and polytypo typesets it with the uk locale, in your browser. The code under the form is the call that produces the result.

Runs in your browser. Nothing you paste is sent anywhere.

The call the form above is making, right now

Other locales, and all the options, are in the full playground.

Ukrainian typography at a glance #

Taguk
NameUkrainian
Primary quotes« U+00AB left-pointing double angle quotation mark … » U+00BB right-pointing double angle quotation mark
Secondary quotes“ U+201C left double quotation mark … ” U+201D right double quotation mark
Parenthetical dashspaced em dash
Range dashunspaced em dash
Rules with citationsquotes, dashes, ranges, ellipsis, hyphen, nbsp
Conformance cases18

Which locale tags resolve to Ukrainian? #

The locale option is resolved exactly, then by declared alias, then by dropping the region once; anything else throws POLYTYPO_UNKNOWN_LOCALE.

TagHow it resolves
ukregistered locale

Which quotation marks does Ukrainian use? #

Primary« U+00AB left-pointing double angle quotation mark … » U+00BB right-pointing double angle quotation mark — no space inside the marks
Secondary“ U+201C left double quotation mark … ” U+201D right double quotation mark — no space inside the marks

quotes

uk-quotes-primary
Він сказав: "Це мій Кобзар".
Він сказав: «Це мій Кобзар».
uk-quotes-nested
"Це мій 'Кобзар'", — сказав він.
«Це мій “Кобзар”», — сказав він.

How are apostrophes set in Ukrainian? #

apostrophe

uk-apostrophe-orthographic
п'ять об'єктів
п’ять об’єктів

Which dashes does Ukrainian use for breaks and ranges? #

Parenthetical break (dash.parenthetical)an em dash (U+2014) with a space on each side
Between numbers and dates (dash.range)an em dash (U+2014) with no surrounding spaces

The dashes rule reads the parenthetical convention. The ranges rule reads the range convention and is off by default.

dashes

uk-dashes-parenthetical
Це - наш дім.
Це — наш дім.

ranges

The ranges rule is off by default; these cases enable it with rules: { ranges: true }.

uk-ranges-em-tight
на сторінках 1-10
на сторінках 1⁠—⁠10

options: rules: {"ranges": true}

How is the ellipsis set in Ukrainian? #

An ellipsis directly after ! or ? is written with two dots rather than three.

ellipsis

uk-ellipsis-abbreviated-after-question
а щоб селяни?...
а щоб селяни?..
uk-ellipsis-abbreviated-after-exclamation
Рокочуть ріки ясноводі!...
Рокочуть ріки ясноводі!..
uk-ellipsis-ordinary
Літак... Димки...
Літак… Димки…

How are hyphens handled in Ukrainian? #

Morphological forms whose hyphen is bound with U+2011 so it cannot break across lines.

Prefixesбудь- казна- хтозна- бозна-
Suffixes-бо -но -от -то -таки -будь -небудь
Compoundsвид-во гр-н ін-т р-н ун-т ф-ка т-во з-за із-за з-над з-перед з-під із-під з-поза з-поміж з-понад з-попід з-посеред з-проміж

hyphen

uk-hyphen-compound-preposition
з-під столу і будь-хто
з‑під столу і будь‑хто
uk-hyphen-graphic-shortening
вид-во та ін-т
вид‑во та ін‑т

Where does Ukrainian use no-break spaces? #

Characters that take U+00A0 before them (nbsp.beforePunctuation)none
Characters that take U+202F before them (nbsp.narrowBeforePunctuation)none
Short words after which the space becomes U+00A0, so the word is not left at the end of a line (nbsp.afterShortWords)none
Multi-token abbreviations whose internal spaces become U+00A0 (nbsp.abbreviations)і т. д. і т. ін. та ін. куб. см
Units and signs bound to the preceding number with U+00A0 (nbsp.beforeUnits)% га год дм кБ кВт кг км мм см хв Вт км/год м/с млн млрд трлн грн р.
Abbreviations bound to the following number with U+00A0 (nbsp.beforeNumber)none
Abbreviations bound to the following word with U+00A0 (nbsp.beforeWord)акад. доц. проф.
Symbols bound to the following number with U+00A0 (nbsp.afterSymbols)none
Initials (nbsp.initialBinding)chain — a sequence of two or more adjacent initials is bound; a lone initial next to an ordinary capitalised word is left alone

spaces

uk-spaces-brackets-and-final-stop
Текст ( поточний ) не змінюється .
Текст (поточний) не змінюється.

nbsp

uk-nbsp-units-and-year
150 га і 2008 р.
150 га і 2008 р.
uk-nbsp-initials-chain
Т. Г. Шевченко
Т. Г. Шевченко
uk-nbsp-before-word
проф. Гончаренко
проф. Гончаренко

How are symbols set in Ukrainian? #

symbols

uk-symbols-copyright-and-dimensions
Copyright (c) 2026, формат 40x60 см
Copyright © 2026, формат 40×60 см

How does Ukrainian text behave in text, HTML and Markdown modes? #

Each input is the locale's sample sentence followed by a code run, say("a -- b ..."). text mode sets the whole string as prose, code run included. In html and markdown mode the code run comes back byte for byte; only the prose is set.

text
Він запитав: "Хіба це не та крамниця, яку називають 'тією за рогом'?" ... Ми йшли -- майже 3 км -- а вона була зачинена. Copyright (c) 2026, формат 40x60 см. say("a -- b ...")
Він запитав: «Хіба це не та крамниця, яку називають “тією за рогом”?» … Ми йшли — майже 3 км — а вона була зачинена. Copyright © 2026, формат 40×60 см. say(«a — b …»)
html
<p>Він запитав: "Хіба це не та крамниця, яку називають 'тією за рогом'?" ... Ми йшли -- майже 3 км -- а вона була зачинена. Copyright (c) 2026, формат 40x60 см.</p> <pre><code>say("a -- b ...")</code></pre>
<p>Він запитав: «Хіба це не та крамниця, яку називають “тією за рогом”?» … Ми йшли — майже 3 км — а вона була зачинена. Copyright © 2026, формат 40×60 см.</p> <pre><code>say("a -- b ...")</code></pre>
markdown
Він запитав: "Хіба це не та крамниця, яку називають 'тією за рогом'?" ... Ми йшли -- майже 3 км -- а вона була зачинена. Copyright (c) 2026, формат 40x60 см. `say("a -- b ...")`
Він запитав: «Хіба це не та крамниця, яку називають “тією за рогом”?» … Ми йшли — майже 3 км — а вона була зачинена. Copyright © 2026, формат 40×60 см. `say("a -- b ...")`

Which sources define Ukrainian typography? #

8 citations in spec/locales/uk.json, grouped by the rule each one supports. A citation names the authority; the note records what the source does and does not settle.

ellipsis

  • Український правопис (2019), § 162 «ТРИ КРАПКИ, АБО КРАПКИ (…)», Примітка: «у постпозиції — після знака питання і знака оклику — ставимо дві крапки: Стражники на людей стріляли, це відомо, а щоб селяни?.. (К. Гордієнко); Встає народ, гудуть мости, Рокочуть ріки ясноводі!.. (М. Рильський)»; § 166 «КОМБІНОВАНЕ ВЖИВАННЯ РОЗДІЛОВИХ ЗНАКІВ», п. 2, що перелічує допустимі поєднання як «…?; …!; ?..; !..» www.ulif.org.ua

    Обґрунтовує abbreviatedAfterTerminal = true. Українська — друга після російської локаль із цим значенням, і це перевірено окремо за двома параграфами, а не перенесено за аналогією зі спорідненої мови. Звірено 18.09.2026.

ranges

  • Український правопис (2019), § 161 «ТИРЕ (—)», I, п. 14, Примітка: «Між цифрами в таких випадках тире ставимо без відступів між знаками: у 2010—2018 роках; пам'ятки української мови XVI—XVIII ст.; на сторінках 1—10; у 1—4 томах, але, напр.: наприкінці XX — на початку XXI ст.» www.ulif.org.ua

    Обґрунтовує dash.range = «em-tight»: довге тире U+2014 без відбивки. Протиставлення в самій Примітці («на сторінках 1—10» без відступів, але «наприкінці XX — на початку XXI ст.» з відступами) показує, що безвідступна форма стосується рівно того, що робить правило ranges. Правило вимкнене за замовчуванням (spec 0.5.0). Звірено 18.09.2026.

dashes

  • Український правопис (2019), § 161 «ТИРЕ (—)», I, п. 10—11 і Примітка 2: тире ставимо перед відокремленим зворотом або вставленою конструкцією — «Топольський — молодий чоловік, але — на думку пана посла — незвичайно талановитий і солідний» (О. Маковей) www.ulif.org.ua

    Обґрунтовує dash.parenthetical = «em-spaced». ДОВЖИНА встановлена прямо: заголовок параграфа — «ТИРЕ (—)», тобто U+2014, і цей самий знак стоїть у кожному прикладі §§ 161, 166, 167. ВІДБИВКА встановлена протиставленням, а не прозовим формулюванням: правопис ніде не пише «тире відбивається пробілами», але Примітка до п. 14 каже «тире ставимо без відступів між знаками» саме для випадку між цифрами, а «без відступів» має сенс лише як відхилення від відбитого за замовчуванням. Це єдиний запис цього файлу, що спирається на висновок із тексту джерела, і він позначений як такий свідомо. Звірено 18.09.2026.

hyphen

  • Український правопис (2019), § 64 «Технічні правила переносу», п. 4: «Не можна розривати умовні (графічні) скорочення на зразок вид-во, і т. д., і т. ін., та ін., т-во тощо»; § 62, п. 2: «У графічних скороченнях пропущену середню частину слова позначаємо дефісом: вид-во (видавництво), гр-н (громадянин), ін-т (інститут), р-н (район), ун-т (університет), ф-ка (фабрика)» www.ulif.org.ua

    Це єдина частина hyphen для української, де НЕРОЗРИВНІСТЬ САМА Є НОРМОЮ, а не рішенням проєкту: § 64 п. 4 прямо забороняє розривати цей клас, а § 62 п. 2 закриває його літеральним переліком, бо «тощо» в § 64 залишає клас відкритим. Українська цим відрізняється від польської, де PWN [196] поділ у місці дефіса саме ПРИПИСУЄ, через що pl.json має три порожні списки. Звірено 18.09.2026.

  • Український правопис (2019), § 42 «Прийменники», п. 2: «З дефісом пишемо складені прийменники, утворені з простих прийменників з, із та інших прийменників: з-за (із-за), з-над, з-перед, з-під (із-під), з-поза, з-поміж, з-понад, з-попід, з-посеред, з-проміж»; § 44 «Частки», п. 3: «З дефісом пишемо: 1) частки -бо, -но, -от, -то, -таки … 2) частки будь-, -будь, -небудь, казна-, хтозна-, бозна- із займенниками і прислівниками» www.ulif.org.ua

    Ці параграфи нормативні для СКЛАДУ форм, але не для заборони переносу, і змішувати це не можна — так само, як у ru.json. §§ 63 і 64 прочитано повністю: § 63 нормує поділ за складами, § 64 забороняє розривати ініціали, назви мір, нарощення й графічні скорочення, але про дефіс у формах §§ 42 і 44 не каже нічого. Отже, для цих класів зв'язування через U+2011 — рішення проєкту (docs/PLAN.md §3.3), а не орфографічна норма, і це записано прямо. НЕ ВНЕСЕНО, свідомо: § 64 п. 3 («Граматичні закінчення, поєднані із цифрами дефісом, не можна відривати й переносити: 2-й, 4-го, 10-му») нормативно нерозривний, але це форма «цифра-дефіс-літера»; чи є це членством у hyphen.suffixes, чи вже алгоритмом, має вирішити spec-guardian. Звірено 18.09.2026.

quotes

  • Український правопис (2019), схвалений Кабінетом Міністрів України (Постанова № 437 від 22.05.2019), § 164 «ЛАПКИ (« », “ ”, „ “, рідше „ ”)», п. 3: «У функції перших рекомендовано вживати кутові лапки, або «лапки-ялинки» («…»), у функції внутрішніх — «лапки-лапки» (“…” та ін.): «Це мій “Кобзар”», — сказав він»; там само: «На письмі (у рукописних текстах) «лапки-лапки» традиційно використовують у формі „…“» www.ulif.org.ua

    Зовнішні лапки — U+00AB і U+00BB, внутрішні — U+201C і U+201D. Код кожного знака встановлено за друкованим зображенням с. 247 офіційного видання, а не за текстовою конверсією: у прикладі § 164 п. 3 обидва внутрішні знаки підняті до верху рядка, відкривальний має форму 6, закривальний — форму 9. ЦЕ СПРОСТОВУЄ поширене припущення, що українська бере всередину „…“: заголовок § 164 справді дозволяє чотири пари, але саме п. 3 відносить „…“ до РУКОПИСНИХ текстів, а для друкованого рекомендує “…”. innerSpace = «none»: жодне джерело не вимагає відступу всередині лапок. Третій рівень вкладення в locale.schema.json невиразний. Звірено 18.09.2026.

nbsp

  • Український правопис (2019), § 64 «Технічні правила переносу», п. 1: «Не можна переносити прізвища, залишаючи в кінці попереднього рядка ініціали або інші умовні скорочення, що належать до них: Т. Г. Шевченко (не Т. Г. // Шевченко), гр. Іваненко, акад. (доц., проф.) Гончаренко, п. Гнатюк»; п. 4: «Не можна розривати умовні (графічні) скорочення на зразок вид-во, і т. д., і т. ін., та ін., т-во тощо»; п. 5: «Не можна переносити в наступний рядок розділові знаки (крім тире), дужку або лапки, що закривають попередній рядок» www.ulif.org.ua

    § 64 — ЗАКРИТИЙ перелік із п'яти пунктів, і це важливо не лише тим, що він містить, а й тим, чого в ньому немає. (1) initialBinding = «chain»: п. 1 наводить послідовність ДВОХ ініціалів і не дає прикладу одного ініціала перед прізвищем. (2) beforeWord: з п. 1 взято лише «акад.», «доц.», «проф.». «п.» і «гр.» свідомо НЕ внесено за тією самою дисципліною, з якої ru.json виключає «г.»: «п.» — це також «пункт» («п. 3»), «гр.» — також «градус» і «графа», а літеральний список цих напрямків не розрізняє. (3) beforePunctuation і narrowBeforePunctuation порожні: п. 5 прив'язує розділовий знак до ПОПЕРЕДНЬОГО слова — це заперечення, а не мовчання. (4) afterShortWords ПОРОЖНІЙ, і це підтверджена відсутність норми: перелік § 64 закритий, правила про однобуквені прийменники в ньому немає, а в самому правописі «і», «у», «в», «з» регулярно стоять у кінці рядка. Список ru.json сюди НЕ переноситься за аналогією, хоча мови споріднені. (5) afterSymbols і beforeNumber порожні: конструкцій «символ + число» і «скорочення + число» § 64 не містить. Звірено 18.09.2026.

  • Український правопис (2019), § 64, п. 2: «Не можна відривати скорочені назви мір від цифр, до яких вони належать: 2008 р. (не 2008 // р.), 150 га (не 150 // га), 20 см³ або 20 куб. см, 5 г (не 5 // г)»; § 62: «Скорочені назви одиниць вимірювання пишемо без крапок: Б — байт, Вт — ват, г — грам, га — гектар, год — година, дм — дециметр, кБ — кілобайт, кВт — кіловат, кг — кілограм, км — кілометр, л — літр, м — метр, мм — міліметр, с — секунда, см — сантиметр, т — тонна, хв — хвилина, ц — центнер»; BIPM, The International System of Units (SI), 9th ed., concise summary: «A single space is always left between the number and the unit» www.bipm.org

    Розподіл ролей тут ІНШИЙ, ніж у pl, fi, sv і en-US: там BIPM дає перелік символів, а національне джерело — конвенцію відступу; для української національне джерело дає і те, і те, бо § 64 п. 2 нормує саме невідривність. BIPM наведено як підтвердження загального принципу, а не як несуча цитата. Однобуквені позначення (г, л, м, с, т, ц, Б) свідомо пропущено: правий кордон N5 вимагає лише, щоб cp[a+k] не належав ALNUM, і пробіл цю умову задовольняє, тож однобуквений запис зв'язував би звичайну прозу. «р.» внесено: на відміну від російського «г.», українське «р.» означає тільки «рік» і зв'язується вліво після числа. «%» внесено ЯК РІШЕННЯ, а не як цитата: його немає ні в § 62, ні в § 64, ні в скороченому викладі брошури BIPM (правило про % — у § 5.4.7 повного видання, яке не діставалося), але відбивка відсотка від числа є і в російській локалі, і в усіх інших локалях цього проєкту, а розбіжність тут дала б українській вужчу поведінку без жодної підстави в джерелі. Звірено 18.09.2026.

Already using polytypo? Add our badge

Two lines: a script tag and a span. No per-embed network call. Pick a language and a theme, then copy the code into your footer or credits. Embedding notes cover Content Security Policy. Sites with the badge are listed on Sites using polytypo.

<script async src="https://polytypo.dev/badge.js"></script>
<span data-polytypo-lang="en" data-polytypo-theme="light"></span>

Search runs in your browser. Nothing is sent anywhere.