2025-07-02 · Redakcija Baduno · 7 blog.readMin · Blogas ir žinios
Žiniatinklio šriftai 24 kalboms: šrifto pasirinkimas, poaibiai, našumas
Šriftas, apimantis vokiečių, graikų, maltiečių ir arabų kalbas? Pasitaiko retai – o jei ir pasitaiko, tai sunkus. Strategijos greitai ir gražiai daugiakalbei svetainei.
Aprėpties problema
Lotynų su visais ES diakritiniais ženklais, graikų, kirilica, dar arabų raštas: beveik jokia šriftų šeima neapima visko gerai. Pragmatiškas sprendimas – šriftų poros: viena lotynų/graikų/kirilicos šeima ir vienas specializuotas RTL šriftas, suderinti pagal pilkumą ir aukštį.
Subsetting'as žymiai sutaupo
Visiški unikodo šriftai sveria šimtus kilobaitų. Poaibiai pagal rašto sistemą – kraunami tik ten, kur reikia – sumažina juos iki dalių: RTL versija krauna RTL šriftą, vokiška – ne.

Įkėlimas be šuolių
font-display:swap iškart rodo tekstą su sistemos šriftu, o tada pakeičia – nuo maketo šuolių padeda metriniu požiūriu suderinami atsarginiai variantai ir size-adjust. Savarankiškai talpinamas, o ne iš išorinio CDN: greičiau ir privatumą labiau gerbia.
Tipografija pagal rašto sistemą
Arabų raštui reikia didesnio eilučių aukščio ir dažnai vienu punktu didesnio dydžio; didžiųjų raidžių tarpinimas veikia tik lotyniškai. Dizaino sistema, žinanti tokias taisykles pagal rašto sistemą, iš 24 kalbų sukuria vieną maketą – o ne 25 kompromisus.
Kintamieji šriftai: lankstumas su kliūtimis
Kintamieji šriftai žada mažesnį failų skaičių, sujungdami kelis stilius (paryškintą, kursyvą ir kt.) į vieną failą. Daugiakalbiams puslapiams su 24 kalbomis tai viliojanti perspektyva: vietoj 24 × 4 = 96 statinių failų – tik 24 kintamieji? Tačiau būkite atsargūs: kintamieji šriftai, apimantys daug rašto sistemų (lotynų, graikų, kirilicą, arabų), yra reti ir dažnai dideli. Be to, subsettinimas tampa sudėtingesnis, nes variacijos ašys veikia simbolių rinkinį. Subsetintam kintamajam šriftui, priklausomai nuo ašies išraiškos, gali reikėti skirtingų glifų, todėl turėsite arba laikyti visus poaibius, arba generuoti juos dinamiškai. Praktiška naudoti kintamuosius šriftus vienai rašto sistemų šeimai (pvz., lotynų + graikų) ir statinius šriftus kitai (pvz., arabų), kad būtų kontroliuojamas failo dydis. Įkelkite kintamuosius šriftus naudodami font-weight: 100 900 ir font-stretch: 75% 125%, o ne atskirus stilius – tačiau išbandykite atvaizdavimą visomis kalbomis ir naršyklėse, nes kintamieji šriftai subsettinimo ir rastravimo metu kartais duoda netikėtų rezultatų.
Licencijų reikalavimus atitinkantis šriftų naudojimas 24 kalbomis
Teisinė pusė dažnai neįvertinama. Šrifto licencija paprastai galioja tam tikram tinklalapio peržiūrų skaičiui arba domenui; turint 24 kalbų variantus, galite greitai pasiekti licencijos ribas. Kai kurie teikėjai aiškiai draudžia subsettinimą ar įterpimą į dinaminį turinį. Įsitikinkite, kad licencija apima visas kalbas – ypač specialieji simboliai, tokie kaip turkiškas İ, rumuniškas Ș ar maltietiškas Ħ, dažnai laikomi išplėstiniu simbolių rinkiniu ir ne visada įtraukiami į standartinį paketą. ES projektams rekomenduojama neribota (Unlimited) arba įmonės (Enterprise) licencija, leidžianti subsettinimą ir naudojimą keliuose domenuose. Taip pat patikrinkite, ar šrifto licencija galioja jūsų naudojamai šrifto technologijai (pvz., WOFF2). Licencijų konsultavimo įrankis (pvz., Fontstand) gali padėti išvengti konfliktų – užsirašykite kiekvieno šrifto licencijos sąlygas savo stiliaus vadove, kad nereikėtų vėliau taisyti.
Formatų konkurencija: WOFF2, subsettinti kintamieji šriftai ir Unicode-Range
Failo formato pasirinkimas įtakoja įkėlimo laiką ir suderinamumą. WOFF2 šiandien yra standartas ir suteikia apie 30-50% geresnį suspaudimą nei WOFF. Jei naudojate kintamuosius šriftus, patikrinkite, ar jūsų tikslinė naršyklė palaiko WOFF2 su kintamomis ašimis (šiuo metu visos modernios naršyklės). Senesnėms naršyklėms (IE11) turėsite paruošti statinius WOFF failus kaip atsarginį variantą. Veiksmingas triukas: naudokite Unicode-Range @font-face bloke, kad įkeltumėte tik faktiškai reikalingą simbolių rinkinį – panašiai kaip subsettinimas, bet valdomas serverio pusėje. Derinkite tai su font-display: swap; įkėlimo optimizavimą galite palaikyti naudodami preload kritiniams šriftų variantams (pvz., pagrindinis lotyniškas šriftas). Praktinis pavyzdys: vokiškam puslapiui įkelkite tik lotynų+umliautų poaibį (apie 30 KB), graikiškam – lotynų+graikų poaibį (apie 50 KB), arabiškam – lotynų+arabų poaibį (apie 80 KB). Taip net ir su 24 kalbomis bendras atsisiunčiamų duomenų kiekis vienam lankytojui išlieka mažesnis nei 100 KB šriftų duomenų.
Šriftas, apimantis vokiečių, graikų, maltiečių ir arabų kalbas? Pasitaiko retai – o jei ir pasitaiko, tai sunkus. Strategijos greitai ir gražiai daugiakalbei svetainei.
Automatinis šriftų rodymo kokybės užtikrinimas
Kad visose 24 kalbų versijose netrūktų glifų ar jie neatrodytų suskaidyti, turėtumėte įtraukti automatinius testus į savo CI/CD grandinę. Įrankiai, tokie kaip FontProof, Wakamai Fondue arba Python scenarijus fontdiff, lygina kiekvienos kalbos versijos atvaizdus su etaloniniu atvaizdu. Arba galite naudoti Puppeteer, kad atidarytumėte kiekvieną puslapį, įkeltumėte šriftą ir patikrintumėte, ar nėra spragų (naudojant CSS savybę font-family: …; font-unicode-range). Dar sistemingiau: ištraukite visus HTML esančius Unicode kodus kiekvienai kalbos versijai ir palyginkite juos su poaibyje esančiais glifais. Jei trūksta simbolio, kūrimas nutraukiamas arba išduodamas įspėjimas. Šie testai taip pat turėtų patikrinti ligatūrų ar alternatyvių simbolių (pvz., arabų pradinių formų) įskaitomumą. Be to, įtraukite našumo biudžeto patikrinimą: šrifto dydis kiekvienai kalbai neturi viršyti tam tikros ribos. Taip užtikrinsite, kad daugiakalbystė neatsirastų įkėlimo laiko sąskaita.
DI pagrįstas poaibio sudarymas: efektyvumas per automatizavimą su kokybės užtikrinimu
Rankinis 24 kalbų subrinkimo (subsetting) valdymas yra sudėtingas ir linkęs į klaidas. Šiuolaikinės kūrimo priemonės, tokios kaip glyphhanger ar HarfBuzz, gali automatiškai generuoti subrinkimus pagal faktinius tekste esančius simbolius. Procesas tampa dar efektyvesnis, kai naudojate AI modelius, kurie numato reikalingus Unicode blokus pagal kalbos versijas. Neuroninis tinklas, apmokytas daugiakalbių tinklalapių, gali labai tiksliai nustatyti, kurių glifų reikia konkrečiai kalbai – nuo lotyniškų pagrindinių simbolių iki kirilicos papildymų ir arabiškų ligatūrų. Automatiškai sukurtas subrinkimas po to yra rankiniu būdu tikrinamas gimtosios kalbos specialisto, siekiant užtikrinti, kad trūktų retų, bet svarbių simbolių (pvz., istorinių citatų, specialiųjų simbolių įmonių pavadinimuose). Šis derinys – AI pagreitis ir žmogiškoji kontrolė – sumažina subrinkimo kūrimą nuo dienų iki valandų, išlaikant aukštą kokybę. Integruokite scenarijų į savo CI/CD grandinę, kad kiekvieną kartą atnaujinus turinį subrinkimai būtų automatiškai generuojami ir išbandomi. Taip užtikrinsite, kad šriftų failai visada būtų atnaujinti, nepakenkiant įkėlimo spartai.
Kalboms pritaikytos atsarginės strategijos nuosekliai tipografijai
Net ir esant optimaliam subrinkimui, gali atsitikti, kad šrifto failas neįkeliamas – dėl tinklo klaidų, naršyklės nesuderinamumo ar licencijos apribojimų. Tada įsijungia atsarginių šriftų krūva. 24 kalboms vieno pasaulinio šriftų rinkinio nepakanka: sistemos šriftas, kuris gerai atrodo vokiškai, gali būti netinkamas arabiškai. Todėl kiekvienai kalbos versijai apibrėžkite atskirus atsarginių šriftų rinkinius, pritaikytus tipiniams tikslinio regiono sistemos šriftams. Tam naudokite CSS funkciją @font-face su unicode-range, kad kiekvienai šriftų šeimai būtų įkeliami tik tie simboliai, kurių iš tiesų reikia. Arabiškai versijai galite nurodyti atsarginį 'Traditional Arabic' arba 'Tahoma', graikiškai – 'GFS Didot' arba 'Times New Roman'. Atkreipkite dėmesį į metrinį suderinamumą: naudodami size-adjust ir ascent-override pritaikykite atsarginį šriftą vizualiai prie pirminio, kad būtų sumažinti maketo šuoliai. Išbandykite šiuos atsarginius šriftus visomis kalbomis naudodami automatinį ekrano vaizdų palyginimą, kad įsitikintumėte, jog skaitomumas išlieka net ir klaidos atveju. Taip išvengsite netikėtumų ir užtikrinsite nuoseklią naudotojo patirtį visose kalbinėse versijose.
Serverio pusės optimizavimas: savarankiškas talpinimas, talpyklos valdymas ir CDN strategijos
Web šriftų pristatymas per išorines paslaugas, tokias kaip Google Fonts ar Adobe Fonts, yra patogus, tačiau daugiakalbiams projektams turi trūkumų: Pirma, esant 24 kalbų variantams, dažnai reikia siųsti kelias užklausas į skirtingus serverius, o tai ilgina įkėlimo laiką. Antra, jūs nežinote tiekėjo talpyklos (caching) strategijos ir neturite kontrolės dėl prastovų ar duomenų privatumo. Todėl rekomenduojame savarankiškai talpinti visus šriftų failus savo serveryje arba specialiame CDN. Savarankiškas talpinimas leidžia tiksliai pritaikyti šriftų subrinkimus pagal jūsų kalbos versijas ir naudojant HTTP/2 Server Push arba Preload užuominas prioritetą teikti kritiniams šriftams. Be to, talpyklą galima valdyti per Cache-Control antraštes, kad šriftai būtų įkeliami tik vieną kartą visiems tos kalbos versijos lankytojams. CDN su arti vartotojų esančiais kraštiniais serveriais sumažina delsą. 24 kalboms su skirtingomis tikslinėmis rinkomis CDN yra būtinas: vartotojai Suomijoje įkelia suomišką šrifto subrinkimą iš artimo kraštinio mazgo, vartotojai Maltoje – atitinkamai. Svarbu: kiekvienai kalbos versijai nustatykite atskirą talpyklos taisyklę, pvz., vokiškas subrinkimo failas talpykloje saugomas ilgai (pvz., metus), o atnaujinant šriftus talpykla anuliuojama keičiant failo pavadinimą (fingerprinting). Taip užtikrinsite, kad šriftai būtų pristatomi greitai ir visada naujausi, nereikalaujant vartotojų laukti atnaujinimų.
Prieinamumas ir skaitomumas: šrifto pasirinkimas visoms naudotojų grupėms
Daugiakalbystė reiškia ne tik teisingą simbolių atvaizdavimą, bet ir tai, kad šriftas būtų gerai įskaitomas visiems vartotojams – nepriklausomai nuo regėjimo, ekrano dydžio ar įrenginio. Todėl renkantis šriftą atkreipkite dėmesį į pakankamą raidžių atskyrimą, ypač panašiems simboliams, pvz., 'rn' vs. 'm' arba '0' vs. 'O'. Lotyniškiems šriftams tinka beserifiniai šriftai su didele x-aukštimi ir atviromis formomis; arabiškiems šriftams svarbūs šriftai su aiškiais jungtimis ir pakankama vidine erdve. Įsitikinkite, kad šriftas padidintas 200 % nesusilieja ir nesutrikdo tarpų tarp simbolių. CSS naudokite font-size-adjust: from-font arba nustatykite aiškius atsarginius šriftus su panašiomis proporcijomis, kad išvengtumėte maketo šuolių keičiant mastelį. Kitas aspektas – kontrasto lygis: šriftas fone turi atitikti bent WCAG-AA (4,5:1), o mažam šriftui geriau AAA (7:1). 24 kalboms tai reiškia: išbandykite kiekvieną kalbos versiją su kontrasto tikrintuvu, nes kai kurie šriftai tam tikrais storais ar kursyviniais pjūviais praranda kontrastą. Taip pat eilutės ilgis ir tarpai tarp eilučių turėtų būti pritaikyti pagal kalbą – arabiški tekstai dažnai reikalauja didesnio eilučių aukščio nei lotyniški. Integruokite šiuos testus į automatizuotą kokybės užtikrinimą (žr. 4 skyrių), kad visi vartotojai – įskaitant vyresnio amžiaus ar silpnaregius – galėtų optimaliai suprasti jūsų turinį.
blog.faqT
Ar galiu naudoti Google Fonts daugiakalbėms ES svetainėms?
Techniškai taip, bet dėl duomenų apsaugos problematiška, nes Google fiksuoja lankytojų IP adresus. ES svetainėms rekomenduojamas savarankiškai talpinamas šriftas. Be to, Google Fonts siūlo tik ribotą daugiakalbių šriftų pasirinkimą; gali tekti derinti kelias šeimas, o tai padidina įkėlimo laiką.
Kaip patikrinti, ar mano šriftas apima visus reikalingus glifus?
Naudokite tokias priemones kaip GlyphChecker arba Wakamai Fondue Unicode intervalo testą. Įveskite savo tikslo kalbų simbolius (pvz., turkiškas İ, rumuniškas Ș). Arba išanalizuokite savo turinio valdymo sistemą ir ištraukite visus Unicode kodo taškus pagal kalbos puslapius, kad palygintumėte juos su šriftu. Taip atrasite spragas prieš paleidimą.