Polish typography rules · pl
Polski
Polish sets primary quotation marks as „…” and secondary quotation marks as »…«. A break in a sentence is written with an en dash (U+2013) with a space on each side; number and date ranges take an en dash (U+2013) with no surrounding spaces. Numbers bind to units such as % ‰ °C with U+00A0.
Run polytypo with Polish rules
Edit the text and polytypo typesets it with the pl locale, in your browser. The code under the form is the call that produces the result.
The call the form above is making, right now
Other locales, and all the options, are in the full playground.
Polish typography at a glance #
| Tag | pl |
|---|---|
| Name | Polish |
| Primary quotes | „ U+201E double low-9 quotation mark … ” U+201D right double quotation mark |
| Secondary quotes | » U+00BB right-pointing double angle quotation mark … « U+00AB left-pointing double angle quotation mark |
| Parenthetical dash | spaced en dash |
| Range dash | unspaced en dash |
| Rules with citations | quotes, dashes, ranges, ellipsis, hyphen, nbsp |
| Conformance cases | 16 |
Which locale tags resolve to Polish? #
The locale option is resolved exactly, then by declared alias, then by dropping the region once; anything else throws POLYTYPO_UNKNOWN_LOCALE.
| Tag | How it resolves |
|---|---|
pl | registered locale |
Which quotation marks does Polish use? #
| Primary | „ U+201E double low-9 quotation mark … ” U+201D right double quotation mark — no space inside the marks |
|---|---|
| Secondary | » U+00BB right-pointing double angle quotation mark … « U+00AB left-pointing double angle quotation mark — no space inside the marks |
quotes
How are apostrophes set in Polish? #
apostrophe
Which dashes does Polish use for breaks and ranges? #
Parenthetical break (dash.parenthetical) | an en dash (U+2013) with a space on each side |
|---|---|
Between numbers and dates (dash.range) | an en dash (U+2013) with no surrounding spaces |
The dashes rule reads the parenthetical convention. The ranges rule reads the range convention and is off by default.
dashes
ranges
The ranges rule is off by default; these cases enable it with rules: { ranges: true }.
options: rules: {"ranges": true}
How is the ellipsis set in Polish? #
An ellipsis keeps its full form after ! and ?; this locale does not abbreviate it there.
ellipsis
How are hyphens handled in Polish? #
The hyphen lists are empty for this locale, so the hyphen rule changes nothing.
Where does Polish 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) | a i o u w z |
Multi-token abbreviations whose internal spaces become U+00A0 (nbsp.abbreviations) | lek. med. inż. górn. bp sufr. |
Units and signs bound to the preceding number with U+00A0 (nbsp.beforeUnits) | % ‰ °C km cm mm kg km/h kWh |
Abbreviations bound to the following number with U+00A0 (nbsp.beforeNumber) | none |
Abbreviations bound to the following word with U+00A0 (nbsp.beforeWord) | none |
Symbols bound to the following number with U+00A0 (nbsp.afterSymbols) | § |
Initials (nbsp.initialBinding) | none — disabled: initials are never bound to the name that follows |
spaces
nbsp
How are symbols set in Polish? #
symbols
How does Polish 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.
Which sources define Polish typography? #
9 citations in spec/locales/pl.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
- Słownik języka polskiego PWN, «Zasady pisowni i interpunkcji», [396] 92.4: gdy wielokropek zbiega się z pytajnikiem lub wykrzyknikiem, «znaki te w tekście umieszczamy», np. «Czy jest ona tu z wami…?», «Jak strasznie gorąco…!» sjp.pwn.pl
Uzasadnia abbreviatedAfterTerminal = false. Wielokropek to zawsze trzy kropki, a pytajnik i wykrzyknik stoją PO nim — rosyjska forma dwukropkowa «?..» nie jest w polszczyźnie przewidziana przez żadne konsultowane źródło. Sprawdzono to celowo: gdyby polski tę formę miał, byłby drugim po rosyjskim locale z wartością true. Konsultowano 18.09.2026.
ranges
- Słownik języka polskiego PWN, «Zasady pisowni i interpunkcji», [408] 93.12, UWAGA: «W druku liczby arabskie oznaczające przedział od — do rozdziela się półpauzą, czyli kreseczką średniej wielkości, niemającą po bokach odstępów, np. 1914–1918» sjp.pwn.pl
Uzasadnia dash.range = «en-tight»: półpauza U+2013 bez spacji. Potwierdzone dwukrotnie: Wolański, «Zakres liczbowy» (1.01.2024) — «Spacje wokół znaku przedziału […] to po prostu błąd ortotypograficzny»; oraz Bańko (28.02.2012), który przywołuje «Edycję tekstów» Wolańskiego w tym samym duchu — przywołanie jest cudze, samej książki nie konsultowano i nie jest tu cytowana. Reguła «ranges» jest domyślnie wyłączona (spec 0.5.0). Konsultowano 18.09.2026.
dashes
- Słownik języka polskiego PWN, «Zasady pisowni i interpunkcji», [403] 93.7: «Wtrącenia ujmujemy w dwa myślniki»; [408] 93.12, UWAGA: «Półpauza używana w funkcji myślnika ma po bokach spacje»; 21.4, z przykładem «Wyrazy: czarny – biały to antonimy» sjp.pwn.pl
Uzasadnia dash.parenthetical = «en-spaced». Odstępy są w źródłach jednomyślne — myślnik ma spacje po obu stronach — natomiast DŁUGOŚĆ kreski nie jest przez PWN rozstrzygnięta: korpus [408] składa myślnik jako U+2014, przykład w 21.4 jako U+2013, a Bańko («przedziały liczbowe», 28.02.2012) pisze wprost, że myślnik «określany jest przez obecność pauz po bokach, a nie przez długość kreski». DECYZJA OPERATORA, 18.09.2026, a nie cytat: wybrano półpauzę U+2013, bo to ona jest w UWADZE [408] nazwana po imieniu w funkcji myślnika i bo taką samą wartość mają już de-DE, en-GB, fi i sv — przy źródle, które nie rozstrzyga, jednolitość w obrębie projektu jest lepszym kryterium niż preferencja. Skutek uboczny, odnotowany: dashes.md §3.4 P5 odrzuca ciąg dokładnie jednej U+2013 w każdym locale, więc istniejące polskie wtrącenia z półpauzą pozostają nietknięte, a zamieniane są U+002D i U+2014. Konsultowano 18.09.2026.
hyphen
- Słownik języka polskiego PWN, «Zasady pisowni i interpunkcji», [196]: łącznik przenosi się do następnego wiersza, a na końcu poprzedniego stawia się znak podziału, np. «czarno- / -białe fotografie», «województwo warmińsko- / -mazurskie» sjp.pwn.pl
Uzasadnia trzy puste listy. Polszczyzna nie tylko dopuszcza podział w miejscu łącznika — ona go normuje, co jest przeciwieństwem żądania U+2011. Puste listy czynią regułę dowodliwym no-opem dla polskiego (hyphen.md §2). Konsultowano 18.09.2026.
quotes
- Słownik języka polskiego PWN, «Zasady pisowni i interpunkcji», §98 «Cudzysłów», wstęp: «W druku i w rękopisach używa się najczęściej cudzysłowu o postaci: [U+201E] [U+201D] (tzw. cudzysłów apostrofowy)»; «W specyficznych zastosowaniach pojawia się też cudzysłów ostrokątny: [U+00BB] [U+00AB] lub [U+00AB] [U+00BB]. Cudzysłów o ostrzach skierowanych do środka jest używany […] w przypadku, gdy występuje cudzysłów w cudzysłowie» sjp.pwn.pl
Pierwszy stopień: U+201E otwierający, U+201D zamykający — nie U+201C, jak w niemieckim. Drugi stopień: para «o ostrzach skierowanych do środka», czyli U+00BB otwierający i U+00AB zamykający; para U+00AB…U+00BB jest w tym samym paragrafie przypisana do wyodrębniania znaczeń i do dialogów, a nie do cudzysłowu w cudzysłowie — kierunek jest więc odwrotny do tego, czego spodziewa się czytelnik znający francuskie «…». Kody znaków ustalono, pytając o U+XXXX dla każdego glifu z osobna, a nie na oko. innerSpace = «none»: żadne źródło nie żąda odstępu wewnątrz cudzysłowu. WARIANT DOPUSZCZALNY, odnotowany: Wolański, Poradnia Językowa PWN, «Cudzysłowy drugiego stopnia» (26.05.2020) dopuszcza na drugim stopniu zarówno »…«, jak i «…»; Poradnia jest źródłem doradczym niższej rangi niż «Zasady», więc wybrano formę, którą §98 wiąże wprost z cudzysłowem w cudzysłowie. Trzeci stopień zagnieżdżenia nie jest wyrażalny w locale.schema.json. Konsultowano 18.09.2026.
nbsp
- Słownik języka polskiego PWN, «Zasady pisowni i interpunkcji», 21.4: «Między literą kończącą wyraz a znakiem interpunkcyjnym […] nie stosujemy spacji»; 21.1.3: «w skrótach od nazw osób […] np. lek. med., inż. górn., bp sufr.»; 21.2: «Spację pomijamy […] między inicjałami, np. J.K. Bielecki» sjp.pwn.pl
Trzy rzeczy z trzech sąsiadujących paragrafów. (1) beforePunctuation i narrowBeforePunctuation puste: polszczyzna nie stawia przed «:», «;», «!», «?» ani U+00A0, ani U+202F, a źródło odmawia im odstępu wprost — to zaprzeczenie, nie milczenie. (2) abbreviations: trzy skróty zacytowane dosłownie wraz z wewnętrzną spacją, czyli twierdzenie o PRZYNALEŻNOŚCI w rozumieniu nbsp.md §2.1. Świadomie pominięto «i in.» i «z d.»: N3 zajmuje te spacje pierwszy (nbsp.md §3.2), więc wpisy byłyby martwe, nie błędne. (3) initialBinding = «none»: polskie inicjały pisze się bez odstępu («J.K. Bielecki»), więc N7 nie ma czego zamieniać; to rzadki przypadek, w którym «none» opiera się na twierdzeniu pozytywnym, a nie na niecytowalnym zaprzeczeniu. beforeNumber i beforeWord pozostają puste: 21.1, 21.2 i 21.4 przeczytano w całości i żaden nie wiąże skrótu z następującą liczbą ani z wyrazem. Konsultowano 18.09.2026.
- dr hab. Adam Wolański, Poradnia Językowa PWN, «Sieroty na końcu wiersza» (8.06.2018): «W wierszach tekstu, które liczą powyżej 40 znaków, nie należy zasadniczo pozostawiać na końcu wiersza jednoliterowych spójników i przyimków (a, i, o, u, w, z, A, I, O, U, W, Z)» sjp.pwn.pl
Uzasadnia afterShortWords. Lista jest zamknięta i zacytowana dosłownie; wersaliki pominięto, bo N3 dopasowuje pierwszą literę bez względu na wielkość (nbsp.md §3.5 krok 1). RANGA ŹRÓDŁA, powiedziana wprost, bo jest tu słabsza niż gdzie indziej w tym pliku: bezwarunkowy zakaz pochodzi z Poradni, która jest źródłem doradczym, natomiast «Zasady» [204] 54.8.1 są ŁAGODNIEJSZE — «W wąskich łamach jednoliterowe spójniki i przyimki mogą pozostawać na końcu wiersza w tekście ciągłym, natomiast w tytułach […] zawsze powinny być przenoszone» — a Bańko («słowa jednoliterowe na końcu wiersza», 16.02.2003) dodaje, że pozostawienie ich «nie stanowi błędu ortograficznego». Obie kwalifikacje — szerokość łamu i to, czy tekst jest tytułem — są dla silnika niewidoczne. DECYZJA OPERATORA, 18.09.2026: reguła jedzie bezwarunkowo, jak rosyjska afterShortWords, ponieważ wiązanie jednoliterowego przyimka jest w polskim składzie praktyką powszechną, a koszt błędnego zadziałania to jeden U+00A0 tam, gdzie i tak nikt nie chce złamania wiersza. Konsultowano 18.09.2026.
- Główny Urząd Miar, «Zasady stosowania oznaczeń i nazw jednostek miar», akapit «Spacja»: «należy zostawiać spację między wartością liczbową a oznaczeniem jednostki» (100 g, 2 L; ale nie: 100g); pkt 12: «pomiędzy [symbolem %] a wartością liczbową wielkości pozostawia się spację»; BIPM, The International System of Units (SI), 9th ed., concise summary — dla składu samej listy symboli www.bipm.org
Podział ról taki sam jak w en-US, fi, sv, es i pt: BIPM mówi, które łańcuchy są symbolami jednostek SI, a GUM i rozporządzenie — jaka jest polska konwencja odstępu. ZASTRZEŻENIE CO DO ŹRÓDŁA: dobór reguł w dokumencie GUM jest zawężony do towarów paczkowanych, natomiast akapit «Spacja» i pkt 12 powołują się na § 15 i § 8 ust. 4 rozporządzenia, które są prawem powszechnym. WARIANT DOPUSZCZALNY, odnotowany, bo dotyczy najczęstszego wpisu: polska tradycja ortotypograficzna pisze procent bez spacji, co Wolański («Jeszcze raz o spacji lub jej braku po znaku %», 26.11.2021) uznaje za równie poprawne. Rozbieżność nie wymaga rozstrzygnięcia: N5 wyłącznie ZAMIENIA istniejącą spację i nigdy jej nie wstawia (nbsp.md §3.7), więc «5 %» dostaje U+00A0, a «5%» zostaje nietknięte — jedna lista obsługuje obie poświadczone formy. Symbole jednoliterowe (m, g, l, s, A) pominięto zgodnie z praktyką fr.json. Konsultowano 18.09.2026.
- dr hab. Adam Wolański, Poradnia Językowa PWN, «Symbol paragrafu i wyróżnienia tytułów aktów prawnych» (20.02.2019): «Symbol §, zastępujący wyraz paragraf, może być użyty tylko przed liczbą zapisaną cyframi. Należy go oddzielać od liczby spacją» sjp.pwn.pl
Uzasadnia afterSymbols = [«§»]. Warunek «tylko przed liczbą zapisaną cyframi» pokrywa się co do joty z własnym strażnikiem N6, który wymaga, by cp[a+k+1] należało do klasy DIGIT (nbsp.md §3.8). Poradnia jest źródłem doradczym; «Zasady» kwestii nie poruszają, więc nie ma sprzeczności. Konsultowano 18.09.2026.