Српски курзив на ОСМ

Поздрав свима,

Већ дуже време ми привлачи пажњу руски ћирилични курзив који се користи за српске назива на ОСМ-у, а и на осталим великим интернет сајтовима (мислим на српску Википедију пре свега). Овај проблем је одавно познат и већ се писало о њему:

Да ли је неко већ покушао да промени ово на ОСМ-у? Да ли ово захтева измену словолика (фонта) који се тренутно користи, или коришћење другог? Да ли се може учинити нешто преко https://github.com/openstreetmap или је потребно обратити се некоме из ОСМ организације?

Руска OSM заједница је врло јака и они су “поставили стандард” за писање ћирилице. Како се исти стандард користи за све ћириличне називе не верујем да можемо то да променимо на светском нивуо, али свакако можемо на нашем серверу (https://www.osmsrbija.iz.rs/map/#9/44.2432/21.2723).
Иначе то би се мењало у подешавањима за рендер https://github.com/gravitystorm/openstreetmap-carto/blob/master/INSTALL.md#fonts

Davno je bilo, izvinjavam se što nekromansujem temu, ali malo sam se igrao sa ovim i mislim da sam uspeo da podesim tile server da koristi pravilna srpska slova (a ne ruska). Napravio sam i uputstvo ovde:
https://openstreetmap.rs/srpski-fontovi-na-rendering-serveru/

Peđa, tebi može biti korisno da promenimo mapu na https://openstreetmap.rs/map - deluje dosta prosto (stavi se .ttf fajl i čačne malo mapnik.xml), a može biti lep dodatak našoj karti. Ja nisam baš kartograf, pa možda ovaj font “ne leži” na karti, nisam se upućivao u estetiku:)

Ovo što si napravio mi izgleda ok, osim što si promašio font. :slight_smile: Naime na karti se koristi neserifni font a ovaj što si ti izabrao ima serife.

Verovatno je najprostije rešenje uzeti taj originalni font Noto Sans, pošto onima i sprsku varijantu slova, i u nekom font editoru “prepakovati” ga tako da se umesto ruskih stave naše verzije slova. Tada bi renderovani tekst bio identičan onako kako se renderuje na celom OSM. ovkav izmena ne bi terbaloda se radi samo na fontu Noto Sans nego na celoj toj familiji - nekoliko fontova.

Ima još jedna mogućnost koja je verovatno i najbolja: ako Noto Sans već sadrži naša slova onda može da se prilikom renderinga “prepakuje” tekst koji se renderuje tako da se rusko slovo zameni srpskim (prosto se zameni kod znaka). Tada fontovi ne bi moralo da se uopšte čačkaju. Svojevremeno sam tako rešavao problem prikaza cifre 0 u nekim primenama gde je bilo neophodno da nula bude precrtana. Obično fontovi koji imaju običnu nulu, imaju i precrtanu verziju negde u tabeli. Ja sam prosto tekstualnom zamenom zamenio kod obične nule kodom precrtane i dobio prikaz kako treba.

Da li je ovo izvodljivo to bi mpele najbolje znao, pošto je on pravio kod koji trkeljiše nazive i priprema ih za rendering.

Ne bih ja krivio Ruse, pogotovo ne ove koji su na OSM. Ovo je pitanje kodnih strana. Prsoto, međunarodni standard ne zna da postoje neka različita srpska i ruska slova. U mnogim fontovima pored ruskih, postoje i srpska verzije tih slova, ali ona nisu na standardnim mestima u kodnoj strani. Mogu da se koristiti ali tako što se posebno ukuca kod slova ili tako što se premapira tastatura da umesto ruskog koda umeće srpski kod slova.

I eno i drugo nije praktično, tako da smo u svakodnevnoj primeni prinuđeni ili da korsitimo ruske znakvoe ili da koritimo fontove koji imaju srpske znakove gde nam to treba a takvih je malo.

U svkom slučaju, na globalnom nivou sve to možemo to je da u tekstu rusko т zamenimo srpskim т (iz nekog razloga meni se ovde i rusko i sprsko prikazuju kao srpsko, moguće je da sam uvalio u operativni sistem kastomizovanu verziju fonta) pre renderinga ili da napravimo kastomizovane fontove.

Имењаче,

Нисам сигуран да ствари стоје како ти кажеш и да ће је могуће просто заменити неко српско слово са неким руским. Као прво, верујем да је велика већина слова која је нама интересантна унета баш на “српској тастатури”.

Ја сам после чланка https://www.b92.net/tehnopolis/aktuelno.php?yyyy=2020&mm=01&nav_id=1648257, нешто мало гледао и мислим да је у питању само фонт - управо како је и Бранко решио.

Али, ако мислиш да је могуће препакивањем/заменом слова то решити - ништа лакше. Већ дрндамо свако слово које се приказује тако да и још пар слова мењамо не би требало да прави неку разлику.

Peđa, ja sam ovo hakovao, ne mislim da je ovo što sam ja uradio najbolje rešenje. Po meni, rešenja, od najboljeg do najgoreg, su:

  1. Uraditi patch za Mapnik da može da se bira locale fonta prilikom renderinga, u TextSymbolizer elementu (kao što sam rekao u blogu). U idealnom slučaju, taj locale bi bio context-dependent i mogao bi da koristi srpsku ćirilicu na području Srbije, a rusku na području Rusije. Mada, nama i običan zakucani locale koji bi mogli da promenimo odgovara na našem rendering serveru.
  2. Kao što sam rekao u blogu ako ste čitali, proverio sam, i Noto Sans ima podršku za srpska slova. Rešenje bi bilo uzeti Noto Sans i zakucati mu srpske karaktere umesto ruskih kao podrazumevane i instalirati takav font na server. Nikad to nisam radio, ali pretpostavljam da je izvodljivo sa FontForge programom?
  3. Promeniti font na rendering serveru za neki drugi, kao što sam ja nabudžio u blog postu.

Pošto verovatno 1 neće niko raditi, 2 je vrlo realna opcija, samo da nađemo nekog ko bi znao da uradi ovu operaciju. Deluje trivijalno za nekog ko zna ovo.

Mislim da se ne menja kodni znak slova, slovo “б” ima isti kodni znak i za nas i za Ruse (U+0431), valjda je fora samo kako se taj font prikazuje, a to mora da zna onaj ko ga iscrtava (Mapnik, Word…) na osnovu toga šta korisnik kaže, nema veze šta piše u bazi ili u name:sr ili bilo gde drugde binarno, već samo kako se “prezentacija” tog slova radi.

Бранко,
Зашто кажеш да си хаковао/набуџио? Ја сам хтео да решим исти проблем па сам мало читао и дошао сам до истог закључка - ћирилица је ћирилица а испис зависи од фонта. Мапник има подешавања за фонт који се користи и то си лепо подесио и све је чисто и по ПСу.

По мени једина мана варијанте 3 је што се тренутно уклапамо са подразумеваним стилом ОСМа и без проблема можемо да “позајмљујемо” њихове сличице, а да ми рендерујемо “само” Србију и неке суседе.
И мени је варијанта 2 најреалнија, а ја бих то назвао хаком.

Zapravo, bilo je lakše nego što sam mislio. Sređen Noto Sans font je dostupan odavde (zamenjeno ovih pet karaktera):
https://openstreetmap.rs/download/NotoSansSrpski-Italic.ttf

Staviti ga u /usr/share/fonts/truetype, uraditi jedan “fc-cache -fv” i “sudo fc-cache -fv” i referencirati ga iz mapnik.xml-a ili iz style/fonts.mml kao “Noto Sans Srpski Italic”.
"

Pa zato što sam 1) koristio jedan font za italic, a drugi za ostalo, 2) ja nemam osećaja za dizajn, tako da je font verovatno neprikladan za karte, 3) kao što je Peđa i uočio, koristio sam serifni font. Možda ja dobro programiram, ali ne bih dao sebi za pravo da znam da dizajniram kartu:)

Kad kažem “hakovao”, mislim da sam više ovo radio dok “ne proradi” i da naučim nešto kako se to renderuje sve, ne kao nešto u negativnom kontekstu.

Ја могу само да дискутујем око назива неких активности, а за све остало морам да скинем капу …

Само да проверим - овај нови “хаковани” фонт је употребљив за рендер и ћирилице и латинице. Тј. нема потребе да иду посебна подешавања стилова за латиничну и ћириличну мапу?

Da, ovaj je OK i za ćirilicu i latinicu. Samo je za Italic, nije za Regular i Bold.

Да ли су фајлу мењани још неки подаци сем замене одређених слова? Ако се овај фајл постави уместо NotoSans-Italic.ttf (само се преименује без икаквих подешавања) да ли се очекује да проради?
Нешто сам пробао па ми не функционише. Радио сам на старијем Убунту где су путање до фонтова нешто другачије па само да проверим.

Она моја идеја да се ствр реши заменом знакова у стингу изгледа неће моћи. СЛучај са прецртаном нулом ми је радио зато што су обична нула и прецртана нула два различита знака, а ово са нашим и руским словима је другачије, ради се о истом знаку, само различитом приказу.

Тако да остаје ово решење са мењањем фонта.