polytypo 1.3.1 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/polytypo/data/README.md +15 -0
- data/lib/polytypo/data/VERSION +1 -1
- data/lib/polytypo/data/fixtures/cs.json +1 -1
- data/lib/polytypo/data/fixtures/de-CH.json +1 -1
- data/lib/polytypo/data/fixtures/de-DE.json +1 -1
- data/lib/polytypo/data/fixtures/el.json +1 -1
- data/lib/polytypo/data/fixtures/en-GB.json +44 -1
- data/lib/polytypo/data/fixtures/en-US.json +18 -1
- data/lib/polytypo/data/fixtures/es.json +1 -1
- data/lib/polytypo/data/fixtures/fi.json +1 -1
- data/lib/polytypo/data/fixtures/fr-CA.json +9 -1
- data/lib/polytypo/data/fixtures/fr.json +50 -1
- data/lib/polytypo/data/fixtures/it.json +17 -1
- data/lib/polytypo/data/fixtures/locale-resolution.json +1 -1
- data/lib/polytypo/data/fixtures/nl.json +17 -1
- data/lib/polytypo/data/fixtures/pl.json +1 -1
- data/lib/polytypo/data/fixtures/pt-BR.json +9 -1
- data/lib/polytypo/data/fixtures/pt-PT.json +9 -1
- data/lib/polytypo/data/fixtures/ru.json +1 -1
- data/lib/polytypo/data/fixtures/sv.json +1 -1
- data/lib/polytypo/data/fixtures/uk.json +1 -1
- data/lib/polytypo/data/locales/cs.json +42 -57
- data/lib/polytypo/data/locales/de-CH.json +39 -44
- data/lib/polytypo/data/locales/de-DE.json +37 -48
- data/lib/polytypo/data/locales/el.json +6 -52
- data/lib/polytypo/data/locales/en-GB.json +8 -50
- data/lib/polytypo/data/locales/en-US.json +8 -62
- data/lib/polytypo/data/locales/es.json +34 -67
- data/lib/polytypo/data/locales/fi.json +12 -78
- data/lib/polytypo/data/locales/fr-CA.json +55 -52
- data/lib/polytypo/data/locales/fr.json +60 -59
- data/lib/polytypo/data/locales/it.json +26 -59
- data/lib/polytypo/data/locales/nl.json +33 -49
- data/lib/polytypo/data/locales/pl.json +33 -62
- data/lib/polytypo/data/locales/pt-BR.json +32 -47
- data/lib/polytypo/data/locales/pt-PT.json +32 -49
- data/lib/polytypo/data/locales/registry.json +1 -1
- data/lib/polytypo/data/locales/ru.json +35 -46
- data/lib/polytypo/data/locales/sv.json +9 -64
- data/lib/polytypo/data/locales/uk.json +32 -56
- data/lib/polytypo/data/rules/order.json +2 -2
- data/lib/polytypo/data/schema/locale.schema.json +23 -2
- data/lib/polytypo/engine/rules/quote_ambiguity.rb +68 -0
- data/lib/polytypo/engine/rules/quotes.rb +10 -6
- data/lib/polytypo/version.rb +1 -1
- metadata +1 -1
|
@@ -12,7 +12,11 @@
|
|
|
12
12
|
"close": "«",
|
|
13
13
|
"innerSpace": "none"
|
|
14
14
|
},
|
|
15
|
-
"elisionIdioms": []
|
|
15
|
+
"elisionIdioms": [],
|
|
16
|
+
"elisionClitics": {
|
|
17
|
+
"before": [],
|
|
18
|
+
"after": []
|
|
19
|
+
}
|
|
16
20
|
},
|
|
17
21
|
"dash": {
|
|
18
22
|
"parenthetical": "en-spaced",
|
|
@@ -29,68 +33,35 @@
|
|
|
29
33
|
"nbsp": {
|
|
30
34
|
"beforePunctuation": [],
|
|
31
35
|
"narrowBeforePunctuation": [],
|
|
32
|
-
"afterShortWords": [
|
|
33
|
-
|
|
34
|
-
|
|
36
|
+
"afterShortWords": [
|
|
37
|
+
"a",
|
|
38
|
+
"i",
|
|
39
|
+
"o",
|
|
40
|
+
"u",
|
|
41
|
+
"w",
|
|
42
|
+
"z"
|
|
43
|
+
],
|
|
44
|
+
"abbreviations": [
|
|
45
|
+
"lek. med.",
|
|
46
|
+
"inż. górn.",
|
|
47
|
+
"bp sufr."
|
|
48
|
+
],
|
|
49
|
+
"beforeUnits": [
|
|
50
|
+
"%",
|
|
51
|
+
"‰",
|
|
52
|
+
"°C",
|
|
53
|
+
"km",
|
|
54
|
+
"cm",
|
|
55
|
+
"mm",
|
|
56
|
+
"kg",
|
|
57
|
+
"km/h",
|
|
58
|
+
"kWh"
|
|
59
|
+
],
|
|
35
60
|
"beforeNumber": [],
|
|
36
61
|
"beforeWord": [],
|
|
37
|
-
"afterSymbols": [
|
|
62
|
+
"afterSymbols": [
|
|
63
|
+
"§"
|
|
64
|
+
],
|
|
38
65
|
"initialBinding": "none"
|
|
39
|
-
}
|
|
40
|
-
"sources": [
|
|
41
|
-
{
|
|
42
|
-
"rule": "quotes",
|
|
43
|
-
"cite": "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»",
|
|
44
|
-
"url": "https://sjp.pwn.pl/zasady/Cudzyslow;629866.html",
|
|
45
|
-
"note": "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."
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
"rule": "dashes",
|
|
49
|
-
"cite": "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»",
|
|
50
|
-
"url": "https://sjp.pwn.pl/zasady/408-93-12-Myslnik-wyznaczajacy-relacje-miedzy-dwoma-wyrazami-lub-wartosciami;629831.html",
|
|
51
|
-
"note": "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."
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
"rule": "ranges",
|
|
55
|
-
"cite": "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»",
|
|
56
|
-
"url": "https://sjp.pwn.pl/zasady/408-93-12-Myslnik-wyznaczajacy-relacje-miedzy-dwoma-wyrazami-lub-wartosciami;629831.html",
|
|
57
|
-
"note": "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."
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
"rule": "ellipsis",
|
|
61
|
-
"cite": "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…!»",
|
|
62
|
-
"url": "https://sjp.pwn.pl/zasady/Wielokropek-obok-innych-znakow-interpunkcyjnych;629818.html",
|
|
63
|
-
"note": "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."
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
"rule": "hyphen",
|
|
67
|
-
"cite": "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»",
|
|
68
|
-
"url": "https://sjp.pwn.pl/zasady/Podzial-wyrazu-w-miejscu-lacznika;629553.html",
|
|
69
|
-
"note": "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."
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
"rule": "nbsp",
|
|
73
|
-
"cite": "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»",
|
|
74
|
-
"url": "https://sjp.pwn.pl/zasady/Stosowanie-spacji-w-skrotach-od-dwoch-i-wiecej-wyrazow;4836486.html",
|
|
75
|
-
"note": "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."
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
"rule": "nbsp",
|
|
79
|
-
"cite": "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)»",
|
|
80
|
-
"url": "https://sjp.pwn.pl/poradnia/haslo/Sieroty-na-koncu-wiersza;18684.html",
|
|
81
|
-
"note": "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."
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
"rule": "nbsp",
|
|
85
|
-
"cite": "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",
|
|
86
|
-
"url": "https://www.bipm.org/documents/20126/41483022/SI-Brochure-9-concise-EN.pdf",
|
|
87
|
-
"note": "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."
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
"rule": "nbsp",
|
|
91
|
-
"cite": "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ą»",
|
|
92
|
-
"url": "https://sjp.pwn.pl/poradnia/haslo/Symbol-paragrafu-i-wyroznienia-tytulow-aktow-prawnych;19239.html",
|
|
93
|
-
"note": "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."
|
|
94
|
-
}
|
|
95
|
-
]
|
|
66
|
+
}
|
|
96
67
|
}
|
|
@@ -12,7 +12,19 @@
|
|
|
12
12
|
"close": "’",
|
|
13
13
|
"innerSpace": "none"
|
|
14
14
|
},
|
|
15
|
-
"elisionIdioms": []
|
|
15
|
+
"elisionIdioms": [],
|
|
16
|
+
"elisionClitics": {
|
|
17
|
+
"before": [
|
|
18
|
+
"d",
|
|
19
|
+
"n",
|
|
20
|
+
"pel",
|
|
21
|
+
"m",
|
|
22
|
+
"t",
|
|
23
|
+
"lh",
|
|
24
|
+
"sant"
|
|
25
|
+
],
|
|
26
|
+
"after": []
|
|
27
|
+
}
|
|
16
28
|
},
|
|
17
29
|
"dash": {
|
|
18
30
|
"parenthetical": "en-spaced",
|
|
@@ -30,53 +42,26 @@
|
|
|
30
42
|
"beforePunctuation": [],
|
|
31
43
|
"narrowBeforePunctuation": [],
|
|
32
44
|
"afterShortWords": [],
|
|
33
|
-
"abbreviations": [
|
|
34
|
-
|
|
35
|
-
|
|
45
|
+
"abbreviations": [
|
|
46
|
+
"p. ex."
|
|
47
|
+
],
|
|
48
|
+
"beforeUnits": [
|
|
49
|
+
"%",
|
|
50
|
+
"‰",
|
|
51
|
+
"°C",
|
|
52
|
+
"km",
|
|
53
|
+
"cm",
|
|
54
|
+
"mm",
|
|
55
|
+
"kg",
|
|
56
|
+
"kW",
|
|
57
|
+
"kWh",
|
|
58
|
+
"Hz"
|
|
59
|
+
],
|
|
60
|
+
"beforeNumber": [
|
|
61
|
+
"p."
|
|
62
|
+
],
|
|
36
63
|
"beforeWord": [],
|
|
37
64
|
"afterSymbols": [],
|
|
38
65
|
"initialBinding": "none"
|
|
39
|
-
}
|
|
40
|
-
"sources": [
|
|
41
|
-
{
|
|
42
|
-
"rule": "quotes",
|
|
43
|
-
"cite": "Brasil, Presidência da República, Manual de Redação da Presidência da República, 2.ª ed. rev. e atual., Brasília 2002, §9.1.3.2 «Aspas»: «As aspas têm os seguintes empregos: a) usam-se antes e depois de uma citação textual», com os exemplos impressos «A Constituição […] afirma: “Todo o poder emana do povo, que o exerce por meio de representantes eleitos ou diretamente”», «publicado no “Jornal do Brasil”», «a alínea “a” do artigo 146 da Constituição»",
|
|
44
|
-
"url": "https://legis.sigepe.gov.br/sigepe-bgp-ws-legis/legis-service/download/?id=0000356386-ALPDF%2F2018",
|
|
45
|
-
"note": "Primário U+201C/U+201D, secundário U+2018/U+2019, ambos colados ao texto. FONTE DE NÍVEL INFERIOR, dito sem rodeios: é o manual de redação de um editor estatal, não uma academia — a Academia Brasileira de Letras publica um vocabulário ortográfico, que é lexical e não trata de pontuação, e não foi encontrada fonte brasileira de nível académico que enuncie o par primário. O manual nunca usa aspas angulares em nenhuma das páginas lidas e o seu capítulo III declara-se derivado das gramáticas brasileiras (Bechara, Cegalla, Luft, Kury). DECISÃO DO OPERADOR, 18.9.2026: perante um uso regional atestado mas sem fonte de nível académico, ficheiro próprio com a fonte que existe, claramente identificada, em vez de deixar o Brasil cair no fallback de pt-PT e receber aspas angulares que não usa — a mesma decisão registada na issue #29, «corrige-se acrescentando locales». O nível secundário assenta no exemplo de citação dentro de citação, não numa frase de regra, e é por isso a afirmação mais fraca deste ficheiro. Consultado em 18.9.2026."
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
"rule": "dashes",
|
|
49
|
-
"cite": "Manual de Redação da Presidência da República (2.ª ed., 2002), §9.1.3.4 «Travessão»: «O travessão, que é um hífen prolongado (–), é empregado nos seguintes casos: a) substitui parênteses, vírgulas, dois-pontos: O controle inflacionário – meta prioritária do Governo – será ainda mais rigoroso»",
|
|
50
|
-
"url": "https://legis.sigepe.gov.br/sigepe-bgp-ws-legis/legis-service/download/?id=0000356386-ALPDF%2F2018",
|
|
51
|
-
"note": "Justifica dash.parenthetical = \"en-spaced\", e é aqui que pt-BR diverge de pt-PT de forma mensurável. A LARGURA não foi julgada a olho: extraiu-se a camada de texto do PDF e o carácter do exemplo é U+2013, ao passo que o mesmo exemplo estrutural no guia europeu dá U+2014. O papel e o espaçamento coincidem nas duas regiões — o travessão substitui parênteses e leva um espaço de cada lado —, diverge a largura. Consultado em 18.9.2026."
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
"rule": "ranges",
|
|
55
|
-
"cite": "Nenhuma fonte brasileira consultada prescreve um sinal de intervalo diferente do hífen já escrito; o Manual de Redação da Presidência da República nada diz sobre intervalos",
|
|
56
|
-
"note": "dash.range = \"none\" por ausência de prescrição, e não por prescrição positiva como em pt-PT — a diferença de fundamento fica registada em vez de ser dissimulada. «none» preserva o que o autor escreveu, que é o comportamento seguro quando nenhuma fonte fala. Consultado em 18.9.2026."
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
"rule": "ellipsis",
|
|
60
|
-
"cite": "Acordo Ortográfico da Língua Portuguesa (1990) e Código de Redação Interinstitucional (PT, 2022), ponto 10.4.7 «Reticências»: as reticências completas seguem-se imediatamente a «!» e a «?» («É o dianho!…», «porque não vais ter com o padre?…»); o Manual de Redação da Presidência da República não tem secção sobre reticências — o seu capítulo de pontuação (§9.2.4) trata apenas da vírgula, do ponto-e-vírgula, dos dois-pontos e dos pontos de interrogação e exclamação",
|
|
61
|
-
"url": "https://op.europa.eu/pt/publication-detail/-/publication/01ed788a-d266-11ec-a95f-01aa75ed71a1",
|
|
62
|
-
"note": "Justifica abbreviatedAfterTerminal = false. O passo citado escreve as reticências completas imediatamente a seguir a «!» e a «?» — «!…» e «?…» —, e nenhuma fonte consultada prevê a forma abreviada de dois pontos que o russo usa, pelo que esse ramo de ellipsis.md fica desligado para o português. Nenhuma fonte se pronuncia sobre U+2026 contra três U+002E: essa escolha é do motor e é igual em todas as locales. Consultado em 18.9.2026. A fonte brasileira cala-se sobre as reticências, pelo que o valor vem do lado europeu; não há divergência a registar, há silêncio."
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
"rule": "hyphen",
|
|
66
|
-
"cite": "Acordo Ortográfico da Língua Portuguesa (1990), Base XX: «deve, por clareza gráfica, repetir-se o hífen no início da linha imediata»; Manual de Redação da Presidência da República (2.ª ed., 2002), §9.1.3.1, Observação: «Hífen de composição vocabular ou de ênclise e mesóclise é repetido quando coincide com translineação: decreto-/-lei, exigem-/-lhe, far-/-se-á»",
|
|
67
|
-
"url": "http://www.portaldalinguaportuguesa.org/?action=acordo&version=1990",
|
|
68
|
-
"note": "Justifica as três listas vazias, e justifica-as pela positiva, não por ausência de fonte. O português não só permite como PRESCREVE a quebra de linha sobre o hífen de um composto, repetindo-o na linha seguinte: uma forma que é normativamente quebrada nesse ponto não pode ser uma forma cujo hífen tenha de resistir à quebra, que é a única coisa que esta regra consome. A regra é, portanto, um no-op total demonstrável para o português (hyphen.md §2), e qualquer runtime que ligue compostos portugueses com U+2011 está errado. Corroborado pelo Código de Redação Interinstitucional (PT, 2022), ponto 10.2 e ponto 10.4.12 («segunda-/-feira», «salmão-do-/-atlântico»), e pelo Manual de Redação da Presidência da República (Brasil, 2.ª ed., 2002), §9.1.3.1 («decreto-/-lei», «far-/-se-á»). É o campo em que Portugal, o Brasil e o próprio Acordo dizem explicitamente a mesma coisa. Consultado em 18.9.2026."
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
"rule": "nbsp",
|
|
72
|
-
"cite": "BIPM, The International System of Units (SI), 9.ª ed., resumo conciso: «A single space is always left between the number and the unit»; Código de Redação Interinstitucional (PT, 2022), anexo A3, pontos 2 e 3, para a lista de símbolos",
|
|
73
|
-
"url": "https://www.bipm.org/documents/20126/41483022/SI-Brochure-9-concise-EN.pdf",
|
|
74
|
-
"note": "Justifica nbsp.beforeUnits. A locale atesta a PERTENÇA — que estes símbolos são unidades e que se escrevem depois do número com um espaço; o mecanismo (converter esse espaço em U+00A0, nunca o inserir) é da regra e está fixado em nbsp.md §2.1. REPARO CITADO, mais importante do que qualquer inclusão: o ponto 10.9.1 exclui «h» por nome — «horas (o símbolo «h» escreve-se sempre sem ponto, sem espaços): eram as 18h30» —, pelo que «h» NÃO entra na lista e há um caso de conformidade a fixá-lo. Os símbolos de uma só letra (m, g, l, t, s, A, W, V, K) ficam igualmente de fora, embora atestados, pela mesma razão que em fr: não são desambiguáveis sem contexto. Note-se que o português escreve «7 %» com espaço, ao contrário do grego. Consultado em 18.9.2026. Para pt-BR a lista é a mesma: nenhuma fonte brasileira consultada a contradiz, e o BIPM não é uma autoridade sobre o português mas sobre que cadeias são símbolos de unidade do SI."
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
"rule": "nbsp",
|
|
78
|
-
"cite": "Nenhuma fonte brasileira consultada exige espaço antes de pontuação dupla, nem ligação de abreviaturas a palavras ou iniciais; listas deliberadamente vazias",
|
|
79
|
-
"note": "Justifica as listas vazias e initialBinding = \"none\", e diz com exatidão em que se apoiam: ao contrário do guia grego, a parte portuguesa NÃO contém nenhuma frase que negue pelo nome o uso francês do espaço antes da pontuação dupla. A posição é «nenhuma fonte o exige», e não «uma fonte o proíbe»; o que se observa é que nenhum exemplo do capítulo o escreve, e isso é uma observação, assinalada como tal. beforeNumber contém apenas «p.»: o ponto 10.9.1 atesta a ligação («p. 24», «Lei n.º 123»), mas «n.º» NÃO pode ser listado, porque a nota (3) do ponto 6.4 do mesmo guia prescreve um «o» sobrescrito e RECUSA expressamente tanto U+00BA como U+00B0 — listar «n.º» seria citar uma fonte que proíbe esse mesmo carácter. A decisão do operador de 18.9.2026 sobre o «n°» francês cobre uma fonte SILENCIOSA e não se estende a uma que fala e recusa. beforeWord fica vazio: o anexo A3 enumera «Sr.», «Dr.», «Prof.», mas limita-se a expandi-los e nenhuma fonte os mostra ligados ao nome seguinte. GAP REGISTADO, não resolvido: o ponto 10.9.1 exige espaço protegido DENTRO dos grupos de algarismos («um total de 12 345 euros»; «este espaço é protegido»), e locale.schema.json não tem campo para isso. Consultado em 18.9.2026."
|
|
80
|
-
}
|
|
81
|
-
]
|
|
66
|
+
}
|
|
82
67
|
}
|
|
@@ -12,7 +12,19 @@
|
|
|
12
12
|
"close": "”",
|
|
13
13
|
"innerSpace": "none"
|
|
14
14
|
},
|
|
15
|
-
"elisionIdioms": []
|
|
15
|
+
"elisionIdioms": [],
|
|
16
|
+
"elisionClitics": {
|
|
17
|
+
"before": [
|
|
18
|
+
"d",
|
|
19
|
+
"n",
|
|
20
|
+
"pel",
|
|
21
|
+
"m",
|
|
22
|
+
"t",
|
|
23
|
+
"lh",
|
|
24
|
+
"sant"
|
|
25
|
+
],
|
|
26
|
+
"after": []
|
|
27
|
+
}
|
|
16
28
|
},
|
|
17
29
|
"dash": {
|
|
18
30
|
"parenthetical": "em-spaced",
|
|
@@ -30,55 +42,26 @@
|
|
|
30
42
|
"beforePunctuation": [],
|
|
31
43
|
"narrowBeforePunctuation": [],
|
|
32
44
|
"afterShortWords": [],
|
|
33
|
-
"abbreviations": [
|
|
34
|
-
|
|
35
|
-
|
|
45
|
+
"abbreviations": [
|
|
46
|
+
"p. ex."
|
|
47
|
+
],
|
|
48
|
+
"beforeUnits": [
|
|
49
|
+
"%",
|
|
50
|
+
"‰",
|
|
51
|
+
"°C",
|
|
52
|
+
"km",
|
|
53
|
+
"cm",
|
|
54
|
+
"mm",
|
|
55
|
+
"kg",
|
|
56
|
+
"kW",
|
|
57
|
+
"kWh",
|
|
58
|
+
"Hz"
|
|
59
|
+
],
|
|
60
|
+
"beforeNumber": [
|
|
61
|
+
"p."
|
|
62
|
+
],
|
|
36
63
|
"beforeWord": [],
|
|
37
64
|
"afterSymbols": [],
|
|
38
65
|
"initialBinding": "none"
|
|
39
|
-
}
|
|
40
|
-
"sources": [
|
|
41
|
-
{
|
|
42
|
-
"rule": "quotes",
|
|
43
|
-
"cite": "Serviço das Publicações da União Europeia, Código de Redação Interinstitucional (edição PT, 2022, ISBN 978-92-78-42820-4), Quarta parte «Convenções próprias da língua portuguesa», ponto 10.4.10 «Aspas», N. B.: «O primeiro nível de aspas a utilizar corresponde às aspas angulares («»). Quando necessário, utilizam-se três níveis de aspas devidamente hierarquizadas: «…» — as aspas angulares, “…” — as aspas curvas duplas ou vírgulas dobradas, ‘…’ — as aspas curvas simples ou vírgulas simples»",
|
|
44
|
-
"url": "https://op.europa.eu/pt/publication-detail/-/publication/01ed788a-d266-11ec-a95f-01aa75ed71a1",
|
|
45
|
-
"note": "Primário U+00AB/U+00BB, secundário U+201C/U+201D. O terceiro nível descrito pela fonte não é exprimível em locale.schema.json, que só tem primary e secondary — limite do esquema, não lacuna da fonte, como já consta de el.json. innerSpace = \"none\": todos os exemplos do ponto 10.4.10 escrevem o texto colado às aspas e a secção nunca pede espaço interior. A Quarta parte é o capítulo específico da língua portuguesa; a Terceira parte do mesmo guia é deliberadamente NÃO invocada, porque o seu §6.4 declara que as suas regras «são o resultado de um acordo interinstitucional» e que «certas escolhas foram feitas em prol de uma convenção comum» — estilo de editor, não prova sobre o português, a mesma desqualificação que el.json regista. É POR ISTO que esta locale é pt-PT e não pt: o uso brasileiro diverge e tem ficheiro próprio (pt-BR), em vez de ser apanhado por um fallback que lhe daria aspas que não usa. Consultado em 18.9.2026."
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
"rule": "dashes",
|
|
49
|
-
"cite": "Código de Redação Interinstitucional (PT, 2022), Quarta parte, ponto 10.4.8 «Travessão»: «O travessão (traço horizontal maior que o hífen) emprega-se: […] d) No lugar de parênteses: As condições — ordenado e subvenções — eram boas»",
|
|
50
|
-
"url": "https://op.europa.eu/pt/publication-detail/-/publication/01ed788a-d266-11ec-a95f-01aa75ed71a1",
|
|
51
|
-
"note": "Justifica dash.parenthetical = \"em-spaced\". O papel (substitui parênteses) e o espaçamento (um espaço ordinário de cada lado de CADA travessão) estão no exemplo impresso; ao contrário do grego, do espanhol e do italiano, o português não usa o padrão «espaços fora do par, colado por dentro», pelo que o enum exprime a convenção sem forçar nada. A LARGURA foi verificada extraindo a camada de texto do PDF, não julgada a olho sobre a página rasterizada: o carácter é U+2014. Esta é a segunda divergência regional do português — o Manual de Redação da Presidência da República (Brasil) define o travessão como «um hífen prolongado» e o seu texto extraído dá U+2013 —, e é a segunda razão para pt-PT e pt-BR serem ficheiros distintos. Consultado em 18.9.2026."
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
"rule": "ranges",
|
|
55
|
-
"cite": "Código de Redação Interinstitucional (PT, 2022), ponto 10.4.11: «Quando se trata de dois anos completos ou de um período de vários anos usa-se o hífen: o programa para 1996-1997; o período de 1993-1996»; ponto 10.9.1: «Para qualquer período que decorra entre dois anos consecutivos, estes são separados por um hífen, se o período abrange a totalidade dos dois anos (1990-1991), e por uma barra, em caso contrário (ano letivo de 1990/1991)»",
|
|
56
|
-
"url": "https://op.europa.eu/pt/publication-detail/-/publication/01ed788a-d266-11ec-a95f-01aa75ed71a1",
|
|
57
|
-
"note": "Justifica dash.range = \"none\" pela positiva. A regra é enunciada duas vezes, em dois capítulos da parte específica da língua, e as duas vezes nomeia o hífen; a barra fica reservada para o período que não abrange os dois anos completos. «none» é o único valor do enum que respeita a fonte, porque `ranges` não emite nada nesse modo (ranges.md §2) e o U+002D escrito pelo autor sobrevive — substituí-lo por U+2013 contrariaria a citação. Consultado em 18.9.2026."
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
"rule": "ellipsis",
|
|
61
|
-
"cite": "Código de Redação Interinstitucional (PT, 2022), ponto 10.4.7 «Reticências», com o exemplo impresso «É o dianho!… É o dianho!… E, olha lá, porque não vais ter com o padre?…» (Aquilino Ribeiro)",
|
|
62
|
-
"url": "https://op.europa.eu/pt/publication-detail/-/publication/01ed788a-d266-11ec-a95f-01aa75ed71a1",
|
|
63
|
-
"note": "Justifica abbreviatedAfterTerminal = false. O passo citado escreve as reticências completas imediatamente a seguir a «!» e a «?» — «!…» e «?…» —, e nenhuma fonte consultada prevê a forma abreviada de dois pontos que o russo usa, pelo que esse ramo de ellipsis.md fica desligado para o português. Nenhuma fonte se pronuncia sobre U+2026 contra três U+002E: essa escolha é do motor e é igual em todas as locales. Consultado em 18.9.2026."
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
"rule": "hyphen",
|
|
67
|
-
"cite": "Acordo Ortográfico da Língua Portuguesa (1990), Base XX «Da divisão silábica»: «Na translineação de uma palavra composta ou de uma combinação de palavras em que há um hífen, ou mais, se a partição coincide com o final de um dos elementos ou membros, deve, por clareza gráfica, repetir-se o hífen no início da linha imediata: ex- -alferes»",
|
|
68
|
-
"url": "http://www.portaldalinguaportuguesa.org/?action=acordo&version=1990",
|
|
69
|
-
"note": "Justifica as três listas vazias, e justifica-as pela positiva, não por ausência de fonte. O português não só permite como PRESCREVE a quebra de linha sobre o hífen de um composto, repetindo-o na linha seguinte: uma forma que é normativamente quebrada nesse ponto não pode ser uma forma cujo hífen tenha de resistir à quebra, que é a única coisa que esta regra consome. A regra é, portanto, um no-op total demonstrável para o português (hyphen.md §2), e qualquer runtime que ligue compostos portugueses com U+2011 está errado. Corroborado pelo Código de Redação Interinstitucional (PT, 2022), ponto 10.2 e ponto 10.4.12 («segunda-/-feira», «salmão-do-/-atlântico»), e pelo Manual de Redação da Presidência da República (Brasil, 2.ª ed., 2002), §9.1.3.1 («decreto-/-lei», «far-/-se-á»). É o campo em que Portugal, o Brasil e o próprio Acordo dizem explicitamente a mesma coisa. Consultado em 18.9.2026."
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
"rule": "nbsp",
|
|
73
|
-
"cite": "Código de Redação Interinstitucional (PT, 2022), anexo A3 «Abreviaturas e símbolos», pontos 2 e 3, com as Observações «Todos os números são acompanhados dos respetivos símbolos: de 4 m em 4 m; de 1 kg, 6 kg a 15 kg», e Quarta parte, ponto 10.9.1: «As percentagens, pesos e medidas escrevem-se numericamente: 7 % do volume de negócios», «a temperatura atingiu hoje os 39 °C»; BIPM, The International System of Units (SI), 9.ª ed., resumo conciso: «A single space is always left between the number and the unit»",
|
|
74
|
-
"url": "https://www.bipm.org/documents/20126/41483022/SI-Brochure-9-concise-EN.pdf",
|
|
75
|
-
"note": "Justifica nbsp.beforeUnits. A locale atesta a PERTENÇA — que estes símbolos são unidades e que se escrevem depois do número com um espaço; o mecanismo (converter esse espaço em U+00A0, nunca o inserir) é da regra e está fixado em nbsp.md §2.1. REPARO CITADO, mais importante do que qualquer inclusão: o ponto 10.9.1 exclui «h» por nome — «horas (o símbolo «h» escreve-se sempre sem ponto, sem espaços): eram as 18h30» —, pelo que «h» NÃO entra na lista e há um caso de conformidade a fixá-lo. Os símbolos de uma só letra (m, g, l, t, s, A, W, V, K) ficam igualmente de fora, embora atestados, pela mesma razão que em fr: não são desambiguáveis sem contexto. Note-se que o português escreve «7 %» com espaço, ao contrário do grego. Consultado em 18.9.2026."
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
"rule": "nbsp",
|
|
79
|
-
"cite": "Código de Redação Interinstitucional (PT, 2022), anexo A3, ponto 4 «Obras»: «p. ex. por exemplo»; «e. g. exempli gratia (por exemplo). Utilizar de preferência p. ex.»; Quarta parte, ponto 10.9.1: «paginação corrente, parágrafos, artigos: artigo 2.º, terceiro parágrafo, alínea b), p. 24»; nota (3) do ponto 6.4: «Para o «º» ordinal (1.º, 2.º…) ou em «n.º», utilizar a terminação «o» após o ponto e em posição superior à linha [não utilizar o sinal «º» do teclado Azerty nem a sequência Alt 0176 (símbolo do grau «°»)]»",
|
|
80
|
-
"url": "https://op.europa.eu/pt/publication-detail/-/publication/01ed788a-d266-11ec-a95f-01aa75ed71a1",
|
|
81
|
-
"note": "Justifica as listas vazias e initialBinding = \"none\", e diz com exatidão em que se apoiam: ao contrário do guia grego, a parte portuguesa NÃO contém nenhuma frase que negue pelo nome o uso francês do espaço antes da pontuação dupla. A posição é «nenhuma fonte o exige», e não «uma fonte o proíbe»; o que se observa é que nenhum exemplo do capítulo o escreve, e isso é uma observação, assinalada como tal. beforeNumber contém apenas «p.»: o ponto 10.9.1 atesta a ligação («p. 24», «Lei n.º 123»), mas «n.º» NÃO pode ser listado, porque a nota (3) do ponto 6.4 do mesmo guia prescreve um «o» sobrescrito e RECUSA expressamente tanto U+00BA como U+00B0 — listar «n.º» seria citar uma fonte que proíbe esse mesmo carácter. A decisão do operador de 18.9.2026 sobre o «n°» francês cobre uma fonte SILENCIOSA e não se estende a uma que fala e recusa. beforeWord fica vazio: o anexo A3 enumera «Sr.», «Dr.», «Prof.», mas limita-se a expandi-los e nenhuma fonte os mostra ligados ao nome seguinte. GAP REGISTADO, não resolvido: o ponto 10.9.1 exige espaço protegido DENTRO dos grupos de algarismos («um total de 12 345 euros»; «este espaço é protegido»), e locale.schema.json não tem campo para isso. Consultado em 18.9.2026."
|
|
82
|
-
}
|
|
83
|
-
]
|
|
66
|
+
}
|
|
84
67
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"spec": "1.
|
|
2
|
+
"spec": "1.4.0",
|
|
3
3
|
"$comment": "Locale resolution input. Algorithm is specified in spec/rules/locale-resolution.md and is identical in every runtime — never delegate it to a platform locale-negotiation library. \"spec\" here must track spec/VERSION exactly — it is not itself the global version source; scripts/validate-spec.mjs enforces the match.",
|
|
4
4
|
"locales": [
|
|
5
5
|
"en-US",
|
|
@@ -12,7 +12,11 @@
|
|
|
12
12
|
"close": "“",
|
|
13
13
|
"innerSpace": "none"
|
|
14
14
|
},
|
|
15
|
-
"elisionIdioms": []
|
|
15
|
+
"elisionIdioms": [],
|
|
16
|
+
"elisionClitics": {
|
|
17
|
+
"before": [],
|
|
18
|
+
"after": []
|
|
19
|
+
}
|
|
16
20
|
},
|
|
17
21
|
"dash": {
|
|
18
22
|
"parenthetical": "em-spaced",
|
|
@@ -22,9 +26,21 @@
|
|
|
22
26
|
"abbreviatedAfterTerminal": true
|
|
23
27
|
},
|
|
24
28
|
"hyphen": {
|
|
25
|
-
"prefixes": [
|
|
26
|
-
|
|
27
|
-
|
|
29
|
+
"prefixes": [
|
|
30
|
+
"кое-",
|
|
31
|
+
"кой-"
|
|
32
|
+
],
|
|
33
|
+
"suffixes": [
|
|
34
|
+
"-то",
|
|
35
|
+
"-либо",
|
|
36
|
+
"-нибудь",
|
|
37
|
+
"-таки",
|
|
38
|
+
"-ка"
|
|
39
|
+
],
|
|
40
|
+
"compounds": [
|
|
41
|
+
"из-за",
|
|
42
|
+
"из-под"
|
|
43
|
+
]
|
|
28
44
|
},
|
|
29
45
|
"nbsp": {
|
|
30
46
|
"beforePunctuation": [],
|
|
@@ -48,7 +64,12 @@
|
|
|
48
64
|
"по",
|
|
49
65
|
"со"
|
|
50
66
|
],
|
|
51
|
-
"abbreviations": [
|
|
67
|
+
"abbreviations": [
|
|
68
|
+
"и т. д.",
|
|
69
|
+
"и т. п.",
|
|
70
|
+
"т. е.",
|
|
71
|
+
"и др."
|
|
72
|
+
],
|
|
52
73
|
"beforeUnits": [
|
|
53
74
|
"%",
|
|
54
75
|
"‰",
|
|
@@ -67,46 +88,14 @@
|
|
|
67
88
|
"млрд"
|
|
68
89
|
],
|
|
69
90
|
"beforeNumber": [],
|
|
70
|
-
"beforeWord": [
|
|
71
|
-
|
|
91
|
+
"beforeWord": [
|
|
92
|
+
"ул.",
|
|
93
|
+
"пл."
|
|
94
|
+
],
|
|
95
|
+
"afterSymbols": [
|
|
96
|
+
"№",
|
|
97
|
+
"§"
|
|
98
|
+
],
|
|
72
99
|
"initialBinding": "chain"
|
|
73
|
-
}
|
|
74
|
-
"sources": [
|
|
75
|
-
{
|
|
76
|
-
"rule": "quotes",
|
|
77
|
-
"cite": "Правила русской орфографии и пунктуации. Полный академический справочник / под ред. В. В. Лопатина. М., 2006, раздел «Знаки препинания при прямой речи и цитатах»: в печатном тексте внешние кавычки — «ёлочки», внутренние — „лапки“",
|
|
78
|
-
"url": "https://gramota.ru/journal/stati/pravila-i-normy/elochki-ili-lapki-kak-pravilno-ispolzovat-kavychki",
|
|
79
|
-
"note": "Страница «Грамоты» отдаёт 403 автоматическому клиенту; правило подтверждено по её индексируемому изложению и совпадает с рекомендацией Мильчина и Чельцовой («Справочник издателя и автора»). Номер параграфа не указан, поскольку сверить его по бумажному изданию не удалось — приводить непроверенный номер было бы хуже, чем его отсутствие."
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
"rule": "ellipsis",
|
|
83
|
-
"cite": "Правила русской орфографии и пунктуации (1956), раздел «Многоточие»: после вопросительного или восклицательного знака ставятся не три точки, а две (третья точка стоит под одним из названных знаков) — «Сколько жить ещё на свете?..», «А как вы вчера играли!..»",
|
|
84
|
-
"url": "https://gramota.ru/biblioteka/spravochniki/pravila-russkoj-orfografii-i-punktuacii/mnogotochie",
|
|
85
|
-
"note": "То же правило приводит Д. Э. Розенталь, «Справочник по русскому языку. Пунктуация», раздел «Сочетание знаков препинания»."
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
"rule": "dashes",
|
|
89
|
-
"cite": "Мильчин А. Э., Чельцова Л. К. «Справочник издателя и автора» и Д. Э. Розенталь, «Справочник по русскому языку»: если интервал передаётся цифрами, между числами ставится тире без отбивки — «5—6 лет», «в XV—XVII веках», «1941—1945 гг.»; тире в предложении отбивается пробелами с обеих сторон",
|
|
90
|
-
"url": "https://gramota.ru/journal/stati/pravila-i-normy/defis-i-tire-kak-vybrat-i-postavit-pravilnyy-znak-v-tekste",
|
|
91
|
-
"note": "В русской типографике интервал набирается длинным тире (U+2014) без отбивки; короткое тире (U+2013) в этой роли не используется. Перечисление schema.dash.range изначально допускало только en-*, что не позволяло выразить норму; перечисление расширено значением em-tight, и оно здесь и стоит."
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
"rule": "nbsp",
|
|
95
|
-
"cite": "Мильчин А. Э., Чельцова Л. К. «Справочник издателя и автора»: неразрывный пробел ставится между инициалами и между инициалами и фамилией («А. С. Пушкин»), после однобуквенных предлогов и союзов, между знаками № и § и относящимися к ним числами, между числом и относящейся к нему единицей измерения или счётным словом («1981 г.», «5 млн»), а также внутри сокращений «и т. д.», «и т. п.», «т. е.»",
|
|
96
|
-
"url": "https://orfogrammka.ru/%D1%82%D0%B8%D0%BF%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%B0/%D0%BF%D1%80%D0%BE%D0%B1%D0%B5%D0%BB_%D0%B8_%D0%B8%D0%BD%D0%B8%D1%86%D0%B8%D0%B0%D0%BB%D1%8B/",
|
|
97
|
-
"note": "Список afterShortWords сознательно ограничен однобуквенными предлогами и союзами (а, в, и, к, о, с, у) и однозначными двухбуквенными предлогами (во, до, за, из, ко, на, об, от, по, со). Частицы и союзы «не», «ни», «но», «же», «ли», «бы» не включены: правило для них — рекомендация вёрстки, а не норма, и связывание их даёт заметный риск ложных срабатываний. Префиксные сокращения из строки «ru» в docs/PLAN.md §7 («г.», «ул.») с появлением beforeWord и N10 стали выразимы: «ул.» и «пл.» перечислены там, обоснование — в следующей записи. «г.» остаётся невыразимым, но не из-за формы поля: здесь оно помещено в beforeUnits в значении «год» после числа («2020 г.»), а в значении «город» связывается вправо, и литеральный список эти два смысла не различает."
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
"rule": "nbsp",
|
|
101
|
-
"cite": "«Технические правила набора», раздел «Общие требования к набору», п. 5: «Отбиваются слова от имен собственных, к которым они относятся (ул. Советская)»; раздел «Переносы», п. 4: «Не должны быть отделены при переносе из одной строки в другую: а) фамилии от инициалов или один инициал от другого; б) сокращенные слова имен собственных, к которым они относятся, например: тов. Сергеева, г. Гомель, пл. Ленина; … г) арабские или римские цифры от их сокращенных или полных наименований, например: 2010 г., 800 руб., 50 куб. см, XX век; д) знаки и обозначения (№, §, % и т. п.) от следующих за ними цифр»",
|
|
102
|
-
"url": "https://old.gsu.by/pages/izdat/2023/tehnicheskie_pravila_nabora.pdf",
|
|
103
|
-
"note": "Текст сверен по самому PDF; это издательский свод технических правил набора (Гомельский госуниверситет), то есть опубликованное изложение отраслевых правил (Мильчин, ОСТ 29.115-88), а не первоисточник: главу «Технические правила набора и вёрстки» у Мильчина проверить онлайн не удалось (доступное издание 1998 г. содержит только части 1—3 без этой главы). Пункт 4б — единственное найденное нормативное основание для beforeWord. «г.» в этот список сознательно НЕ включено: «г.» нормативно связывается и влево как «год» (п. 4г, «2010 г.», уже отражено в beforeUnits), и вправо как «город» (п. 4б, «г. Гомель»), а литеральный список без контекста эти два случая не различает — во фразе «в 1147 г. Москва была основана» правило beforeWord склеило бы «г.» с «Москва» через границу оборота. Различить их можно, только посмотрев влево на цифру и вправо на топоним, то есть по контексту, чего декларативный список не выражает. По той же причине не включены «гг.», «в.», «вв.». Оставлены «ул.» и «пл.» — однозначные топонимические сокращения, и обе формы процитированы дословно: «пл. Ленина» в «Переносах» п. 4б, «ул. Советская» в «Общих требованиях к набору» п. 5. «д.», «стр.», «корп.», «кв.» относятся к следующему ЧИСЛУ, а не к слову, поэтому в beforeWord им не место. Для «стр.» есть и более сильное основание, проверенное по изданию 1998 г. при разборе issue #30: § 4.4.4 («Сокращения при внутритекстовых ссылках и сопоставлениях») пишет дословно: «Ранее широко применявшееся сокращение стр. (страница) рекомендуется заменять сокращением с., поскольку оно закреплено ГОСТ 7.12—93, а две формы сокращения одного слова нарушают принцип единообразия». То есть источник не просто молчит о пробеле — он не рекомендует саму форму. Там же: «Все сокращения, кроме см. и ср., употребляются только в сочетании с цифрами или буквами», что подтверждает состав списка, но о самой отбивке по-прежнему не говорит. beforeNumber пуст, и это подтверждённое отсутствие правила, а не ненайденная цитата: перечень «Переносов» п. 4 закрытый и исчерпывающий, он содержит обратное направление (п. 4г, «2010 г.») и знаки (п. 4д, «№ 75»), но конструкции «сокращение + следующее число» в нём нет. Мильчин, «Справочник издателя и автора», § 9.1.1 («Употребление в ссылках сокращений слов и условных сокращений»: «Книговедческие термины при цифровых номерах или литерах рекомендуется для экономии места сокращать») нормирует, КАКОЕ сокращение писать перед числом, но о пробеле не говорит ничего. Страница «Орфограммки» с примером «гл. IV» отвергнута: она ссылается только на Википедию и Хабр."
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
"rule": "hyphen",
|
|
107
|
-
"cite": "Правила русской орфографии и пунктуации. Полный академический справочник / под ред. В. В. Лопатина. М., 2006: § 135 — пишутся через дефис местоименные слова с начальной частью (приставкой) кое- (кой-) и с конечными частями (постфиксами) -либо, -нибудь, -то; § 141 п. 2 — сложные предлоги из-за, из-под (а также диалектные по-за, по-над); § 141 п. 3 и § 143 — частицы -де, -ка, -те, -то, -с и -таки (всё-таки, опять-таки, прямо-таки, так-таки)",
|
|
108
|
-
"url": "https://orthographia.ru/orf.php?paragraph=pp135.php",
|
|
109
|
-
"note": "Тексты §§ 135, 141, 143 и 219 прочитаны по онлайн-изданию справочника. Эти параграфы нормативны для СОСТАВА форм, но не для запрета переноса, и это важно не смешивать: § 219 («не подлежат переносу») называет только аббревиатуры из прописных букв, графические сокращения (б-ка, ж.-д.) и наращения (20-й); слов с дефисом там нет, а правило повторять дефис в начале перенесённой части (военно-/-морской) справочник даёт как факультативное. Значит, связывание дефиса неразрывным U+2011 — решение проекта (docs/PLAN.md §3.3), а не орфографическая норма; его практическое обоснование то же, что у факультативного правила: при переносе по дефису теряется различие слитного и дефисного написания. Диалектные и просторечные по-за, по-над, для-ради, за-ради не внесены как непродуктивные. Класс графических сокращений из § 219 (б-ка, ж.-д., р/сч) нормативно неразрывен, но перечислить его литеральным списком нельзя, поэтому он здесь не отражён. Из § 143 взята также частица -ка; -де, -с, -те опущены как архаичные и редкие."
|
|
110
|
-
}
|
|
111
|
-
]
|
|
100
|
+
}
|
|
112
101
|
}
|
|
@@ -12,7 +12,11 @@
|
|
|
12
12
|
"close": "’",
|
|
13
13
|
"innerSpace": "none"
|
|
14
14
|
},
|
|
15
|
-
"elisionIdioms": []
|
|
15
|
+
"elisionIdioms": [],
|
|
16
|
+
"elisionClitics": {
|
|
17
|
+
"before": [],
|
|
18
|
+
"after": []
|
|
19
|
+
}
|
|
16
20
|
},
|
|
17
21
|
"dash": {
|
|
18
22
|
"parenthetical": "en-spaced",
|
|
@@ -57,68 +61,9 @@
|
|
|
57
61
|
],
|
|
58
62
|
"beforeNumber": [],
|
|
59
63
|
"beforeWord": [],
|
|
60
|
-
"afterSymbols": [
|
|
64
|
+
"afterSymbols": [
|
|
65
|
+
"§"
|
|
66
|
+
],
|
|
61
67
|
"initialBinding": "none"
|
|
62
|
-
}
|
|
63
|
-
"sources": [
|
|
64
|
-
{
|
|
65
|
-
"rule": "quotes",
|
|
66
|
-
"cite": "Språkrådet (Institutet för språk och folkminnen), Snabba skrivregler – i skolan och på jobbet, red. Ola Karlsson, §1.13 “Citattecken (”)”",
|
|
67
|
-
"url": "https://www.diva-portal.org/smash/get/diva2:1829117/FULLTEXT04.pdf",
|
|
68
|
-
"note": "Verbatim: “Normala svenska citattecken ser ut som två små upphöjda nior och har samma form i början och slutet, alltså ”ord”. Men citattecken kan ha olika utseende i olika typsnitt och i olika språk, som i “engelska”, „tyska“ och «norska». Använd svenska citattecken i svensk text, även om det du citerar är på ett annat språk.” This settles the ❓ in PLAN.md §7: »…» is attested in Swedish book typography and older practice, but Språkrådet’s current recommendation is ”…” (U+201D on both sides), so that is what this file encodes."
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
"rule": "quotes",
|
|
72
|
-
"cite": "Språkrådet, Snabba skrivregler, §1.14 “Apostrof (’)”",
|
|
73
|
-
"url": "https://www.diva-portal.org/smash/get/diva2:1829117/FULLTEXT04.pdf",
|
|
74
|
-
"note": "Verbatim: “En apostrof ser ut som en liten upphöjd nia (’). … Apostrof används även vid citat inuti ett citat, se ▶ 6.1.1.” Hence the secondary pair is U+2019 on both sides. Isof’s Frågelådan phrases the same rule as “enkla citattecken … när du har ett citat i ett citat”."
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
"rule": "dashes",
|
|
78
|
-
"cite": "Språkrådet, Snabba skrivregler, §1.10 “Tankstreck (–)”",
|
|
79
|
-
"url": "https://www.diva-portal.org/smash/get/diva2:1829117/FULLTEXT04.pdf",
|
|
80
|
-
"note": "Range, verbatim: “Det används framför allt mellan siffror och mellan ortnamn för att visa till exempel tidsperioder, avstånd och intervall. Du har då inget mellanslag före eller efter tankstrecket.” (öppet 9–18, åren 2026–2028, s. 3–5). Parenthetical, verbatim: “Tankstreck kan ibland användas före paus eller tillägg. På samma sätt används det vid mer självständiga inskott … Då har du mellanslag före och efter tankstrecket.” Swedish uses the en dash (tankstreck) in both roles; there is no em dash in the recommendation."
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
"rule": "ellipsis",
|
|
84
|
-
"cite": "Språkrådet, Snabba skrivregler, kap. 1 “Skiljetecken och skrivtecken” (tre punkter)",
|
|
85
|
-
"url": "https://www.diva-portal.org/smash/get/diva2:1829117/FULLTEXT04.pdf",
|
|
86
|
-
"note": "`abbreviatedAfterTerminal` is false. The guide treats “tre punkter” as an ordinary mark alongside utropstecken and frågetecken; no two-dot form after `!`/`?` exists in Swedish. That form is Russian-only."
|
|
87
|
-
},
|
|
88
|
-
{
|
|
89
|
-
"rule": "nbsp",
|
|
90
|
-
"cite": "Språkrådet, Snabba skrivregler, §1.16 “Tecken och mellanslag”",
|
|
91
|
-
"url": "https://www.diva-portal.org/smash/get/diva2:1829117/FULLTEXT04.pdf",
|
|
92
|
-
"note": "Verbatim: “Tecken som ersätter ord, som & för och, + för plus och % för procent, skrivs helst med mellanslag före och efter, precis som när du skriver ut orden: 5 % eftersom du skriver fem procent.” Examples given: “Ek & Lund (Ek och Lund), 3 € (tre euro), § 7 (paragraf sju), 2 + 3 (två plus tre)”. And: “För att de tecken och siffror som hör ihop ska hamna på samma rad och inte på olika rader, kan du använda så kallat fast mellanslag.” This is the authority for `%`, `€` and `§`. Note the direction: Språkrådet’s own example is “§ 7”, the sign before the number, so `§` is in `afterSymbols`, the opposite of Finnish. Swedish legal citation also writes “5 §”; that order is not covered by the cited example and is deliberately not encoded. `&` and `+` are omitted because they take a space on both sides and do not fit this schema’s bind-to-a-number model."
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
"rule": "nbsp",
|
|
96
|
-
"cite": "Språkrådet, Snabba skrivregler, §4.3.4 “Förkortningar för måttenheter”; BIPM, The International System of Units (SI), 9th ed. (2019), concise summary",
|
|
97
|
-
"url": "https://www.bipm.org/documents/20126/41483022/SI-Brochure-9-concise-EN.pdf",
|
|
98
|
-
"note": "Språkrådet verbatim: “Internationella förkortningar för måttenheter går alltid bra att skriva som förkortningar, som cm (centimeter), kg (kilo), kWh (kilowattimme) och ml (milliliter). Dessa skriver du alltid utan punkt. Så skriver du också svenska förkortningar som liknar måttenheter, som kr (kronor), min (minut), sek (sekund) och tim (timme).” BIPM verbatim: “A single space is always left between the number and the unit.” The unit list is restricted to forms named by one of these two sources."
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
"rule": "nbsp",
|
|
102
|
-
"cite": "Språkrådet, Snabba skrivregler, §4.3.1 and §4.5 “Vanliga förkortningar”",
|
|
103
|
-
"url": "https://www.diva-portal.org/smash/get/diva2:1829117/FULLTEXT04.pdf",
|
|
104
|
-
"note": "`abbreviations` is empty because Swedish multi-word abbreviations are written closed up, with no internal space: the guide’s own list gives bl.a., dvs., e.d., fr.o.m., f.d., f.ö., m.a.o., m.fl., m.m., obs., osv., p.g.a., s.k., t.ex., t.o.m. There is therefore no internal space to make non-breaking. (Older typographic practice spaced these — “t. ex.” — but that is not the current recommendation.)"
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
"rule": "nbsp",
|
|
108
|
-
"cite": "No Språkrådet guidance found for short-word binding or for initials; values deliberately conservative",
|
|
109
|
-
"note": "`afterShortWords`, `beforePunctuation` and `narrowBeforePunctuation` are empty by design. §1.16 states the general rule plainly — “När du använder vanliga skiljetecken sätter du inget mellanslag före tecknet, men efter tecknet ska du ha mellanslag” — which rules out any before-punctuation space, and Swedish has no rule against short words at line end. `initialBinding` is \"none\" (spec 0.6.0: the field used to be the boolean bindInitials, false): §1.16 recommends fast mellanslag only for “de tecken och siffror som hör ihop”, i.e. signs and digits, not personal initials."
|
|
110
|
-
},
|
|
111
|
-
{
|
|
112
|
-
"rule": "nbsp",
|
|
113
|
-
"cite": "Språkrådet, Snabba skrivregler, §1.16 “Tecken och mellanslag” and §4.5 “Vanliga förkortningar”",
|
|
114
|
-
"url": "https://www.diva-portal.org/smash/get/diva2:1829117/FULLTEXT04.pdf",
|
|
115
|
-
"note": "`beforeNumber` and `beforeWord` are empty, and this was the closest call in this file. Språkrådet does write kl. 8–16, nr 3 and s. 3–5, and §1.16 recommends fast mellanslag so that “de tecken och siffror som hör ihop ska hamna på samma rad”. But that sentence is scoped to tecken — the sign-and-digit pairs of §1.16 (%, €, §, &, +) — and the guide nowhere extends it to abbreviations such as kl., nr or s. Encoding them would convert a plausible reading into a normative claim the source does not make, so the lists stay empty. `beforeWord` likewise: no Swedish authority consulted requires binding a title (dr, prof.) to a following name."
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
"rule": "hyphen",
|
|
119
|
-
"cite": "Språkrådet, Snabba skrivregler, §4.4 (sammansättningar med förkortningar) and kap. 7 (avstavning)",
|
|
120
|
-
"url": "https://www.diva-portal.org/smash/get/diva2:1829117/FULLTEXT04.pdf",
|
|
121
|
-
"note": "`prefixes`, `suffixes` and `compounds` are empty. The guide’s hyphen material states when to insert a bindestreck in compounds (e-post, EU-länderna, FN-arbete, satellit-tv-program, lan-spel) and treats avstavning as a separate topic; it never forbids a line break at an existing hyphen. Swedish compounding is productive, so there is no closed inventory to list — the field exists for the Russian кое- / -таки / из-под case. No U+2011 requirement found in any Språkrådet material consulted."
|
|
122
|
-
}
|
|
123
|
-
]
|
|
68
|
+
}
|
|
124
69
|
}
|