Skip to content

Kõik WordPressist, veebiarendusest — ja mitte ainult

🔤 Fira Code: monospace-kirjatüüp ligatuuridega programmeerimiseks

🔤 Fira Code: monospace-kirjatüüp ligatuuridega programmeerimiseks

Fira Code'i ligatuuridega koodinäide redaktoris

Mis on ligatuurid ja miks need koodis olulised on

Ligatuur on kahe või kolme märgi ühendamine üheks visuaalseks glüüfiks. Tüpograafias on see tehnika tuntud sajandeid: tähed „f" ja „i" sulanduvad kokku fi-ks, et vältida omavahelist kokkupõrget. Programmeerimises toimib sama mehhanism operaatoritega.

Kui kirjutad !=, millele järgneb => ja >= või ===, loeb su silm neid ühe loogilise tervikuna. Kuid ekraanil on need kaks või kolm eraldiseisvat märki ning su aju kulutab nende ühendamiseks mikropingutusi. Tööpäeva jooksul kuhjuvad need mikrooperatsioonid tuhandeteks. Ligatuurid lahendavad probleemi: != muutub läbikriipsutatud võrdusmärgiks (≠), => muutub paksuks nooleks ja >= näeb välja nagu ühtne „suurem või võrdne" sümbol.

Arendaja Nikita Prokopov (tonsky) ehitas selle idee ümber terve fondi. Fira Code on tasuta monospace-fontide perekond, mis põhineb Fira Monol ja mida on laiendatud programmeerimisligatuuridega. Tehniliselt on tegemist puhta ASCII-ga: lähtekood ei muutu, renderdamine toimub fondi tasemel. Fail jääb samaks, kuid loetavus muutub.

💡 Kiirülevaade:

  • Laadi Fira Code alla GitHubi väljalaskest: ZIP ~2,5 MB, versioon 6.2, tasuta
  • Paigalda font oma süsteemi ja määra redaktoris editor.fontFamily ning editor.fontLigatures
  • Vali stiilikomplektid ja märgivariandid vastavalt oma maitsele: alates ss01 kuni cv31
  • Kontrolli oma redaktori tuge ametlikust ühilduvustabelist GitHubis

Kuidas Fira Code koodi lugemist muudab

Esimene asi, mis pärast paigaldamist silma hakkab: võrdlusoperaatorid. Seal, kus varem oli != (hüüumärk + võrdusmärk), on nüüd ühtne läbikriipsutatud sümbol. <= ja >= näevad välja nagu matemaatilised märgid õpikust, mitte kaks eraldi ASCII-märki.

Nooled on omaette maagia. Igasugune sidekriipsude ja nurksulgude ahel moodustab pideva joone. Proovi -->, <-- ja <-->: need sulanduvad ühtseks nooleks. Fira Code 4-s asendas arendaja 44 üksikut nooleligatuuri nelja kombinatoorse reegliga. Nüüd võivad nooled olla mis tahes pikkusega. Isegi ---> ja <--- töötavad.

Mitmest märgist koosnevad operaatorid moodustavad samuti ühtsed glüüfid: === ja !==, :: ja //, |||. Kommentaarid nagu <!-- --> näevad korrektsemad välja. Funktsionaalse programmeerimise entusiastidele on olemas |> ja >>= koos =<<-ga ning kümneid teisi.

Allpool on sama PHP kood ilma Fira Code'ita ja sellega. Erinevus ei ole dramaatiline, kuid proovi „leida erinevused": su silm tabab operaatoreid kiiremini.

Ilma Fira Code'ita

1/**
2 * Arrows --> and -->> illustrate data flow.
3 */
4$out = array('');
5$pieces = array(
6 '<!-- HTML -->', 'https://www.example.com/#!', 'red', '&#35;&#35;', 0x0, ''
7);
8for ($i = 0; $i <= 5; $i++) {
9 if ($i == '2' || $pieces[$i] === 'red') {
10 $hex__red = 0xca0000;
11 $out[] = $hex__red >> 15; // 404
12 } elseif ($i !== 3 && $pieces[$i] != false) {
13 $out[] = $pieces[$i];
14 }
15}
16echo implode('', $out);

Fira Code'iga

1/**
2 * Arrows --> and -->> illustrate data flow.
3 */
4$out = array('');
5$pieces = array(
6 '<!-- HTML -->', 'https://www.example.com/#!', 'red', '&#35;&#35;', 0x0, ''
7);
8for ($i = 0; $i <= 5; $i++) {
9 if ($i == '2' || $pieces[$i] === 'red') {
10 $hex__red = 0xca0000;
11 $out[] = $hex__red >> 15; // 404
12 } elseif ($i !== 3 && $pieces[$i] != false) {
13 $out[] = $pieces[$i];
14 }
15}
16echo implode('', $out);

Mõlemad plokid on märk-märgilt identsed. Ainult font erineb. Teisel juhul muutusid <= ja >= ühtseteks märkideks, != ja !== näevad välja läbikriipsutatuna ning --> muutus nooleks. Lugemine kiireneb, mitte radikaalselt, kuid märgatavalt. Eriti pikkade koodiülevaatuste ajal.

Kus Fira Code töötab

Fonti toetavad kümned redaktorid: alates VS Code'ist ja Sublime Textist kuni Vimi ja Emacsini. Täielik nimekiri on saadaval ühilduvustabelis GitHubis.

Peamised platvormid:

  • VS Code: sisseehitatud tugi. Failis settings.json lisa "editor.fontFamily": "'Fira Code'", "editor.fontLigatures": true. Stiilikomplektid lubatakse läbi "editor.fontLigatures": "'calt', 'ss02', 'ss09'".

  • JetBrains IDE (IntelliJ, PhpStorm, WebStorm, Rider): alates versioonist 2016.2. Seadistamine: Editor → Font → vali Fira Code → luba Enable ligatures.

  • Sublime Text: alates järgust 3146. Kasutaja seadetes: "font_face": "Fira Code".

  • Vim/Neovim: GUI versioonides läbi set guiligatures ja terminali versioonide jaoks paikade abil.

  • Terminalid: Windowsi terminal, iTerm 2, Kitty, Konsole, Tabby, Hyper, WezTerm. Ei toetata: Alacritty, GNOME Terminal, xterm, PuTTY.

  • Brauserid: jsdelivr CDN-i kaudu. Lisa <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/distr/fira_code.css"> ja lisa font-feature-settings: "calt"; IE/vanema Edge'i jaoks.

Praktikas näeb paigaldus välja selline: laadi ZIP väljalaskest, paigalda TTF oma süsteemi, määra font oma redaktoris, luba ligatuurid. Kõik. Ei mingeid pluginaid, ei mingit maagiat, lihtsalt puhas @font-face OS-i tasemel.

Peenhäälestus: variandid ja stiilikomplektid

Fira Code'i peamine eelis konkurentide ees on paindlikkus. Ei meeldi konkreetne ligatuur? Lülita see välja. Tahad teistsugust tähekuju? Vali märgivariant. Kõik on granulaarselt kohandatav.

Märgivariandid (cv01-cv31) muudavad üksikute märkide kuju:

  • cv01-cv10: alternatiivsed kujundused tähtedele a ja g, samuti i ja l
  • cv11-cv13: nulli variandid (täpiga, ilma, kaldkriipsuga)
  • cv14: alternatiivne kolm
  • cv15: üles joondatud tärn (mugav C/C++ viitade jaoks)
  • cv31: alternatiivsed sulud ()

Stiilikomplektid (ss01-ss10) juhivad ligatuure:

  • ss01: && alternatiivne renderdus
  • ss02: <= ilma kaldeta, horisontaalse joonega
  • ss03: & kirjutusmasina stiilis
  • ss04: dollari $ märk ilma kaldkriipsuta
  • ss05: @ ilma lookleva sabata
  • ss09: taastab eraldi >>= / <<= / ||= (eemaldatud vaikeseadetest versioonis v6, üksikasjad GitHubis)

Eraldi äramärkimist väärivad edenemisribad. Fira Code on esimene programmeerimise font, kus märgid U+EE00-U+EE0B renderdatakse edenemisriba ribana. Terminal väljastab jada ``, ja kasutaja näeb kena täitumist. Toe tuvastamiseks on välja pakutud keskkonnamuutuja UNICODE_PROGRESS_BAR=true.

Alternatiivid: millega võrrelda

Fira Code ei ole ainus ligatuuridega font. Turg on viimastel aastatel laienenud ja igal variandil on oma fookus:

Font

Litsents

Omadus

JetBrains Mono

SIL OFL

Parem loetavus, varieeruv väiketähtede kõrgus, ümardusteta

Cascadia Code

SIL OFL

Microsofti font terminalile, Powerline'i tugi, kastijoonistus

Iosevka

SIL OFL

Kitsas font, koodiga genereeritud, maksimaalselt kompaktne

Victor Mono

MIT

Tõelised seriifidega kursiivid, mitte lihtsalt kaldkiri

Hasklig

SIL OFL

Source Code Pro haru Haskellile mõeldud ligatuuridega

Monoid

MIT

Powerline'i tugi, kohandatav laius

Fira Code võidab mitte üksikute tähtede ilu tõttu (see on subjektiivne), vaid oma ulatuse ja küpsuse tõttu. 81 000 tähte GitHubis, kuus suurt väljalaset, sajad toetatud redaktorid, 31 märgivarianti, edenemisribad, matemaatilised sümbolid, kastijoonistus ja Powerline'i tugi. Kui valid fonti aastateks, on ökosüsteem sama oluline kui esteetika.

⁉️🤔 Korduma kippuvad küsimused

Paigaldasin Fira Code'i, kuid ligatuurid ei ilmunud. Milles probleem?

Tõenäoliselt vajab su redaktor eraldi aktiveerimist. VS Code'is on selleks "editor.fontLigatures": true. JetBrains IDE-s: märgi fondi seadetes „Enable ligatures". Terminalides kontrolli, kas su emulaator toetab ligatuure: Windows Terminal toetab, ConEmu mitte.

Ligatuurid segavad. Kas ma saan alles jätta ainult mõned?

Jah. Stiilikomplektid ss01-ss10 lubavad ja keelavad ligatuurigruppe. Näiteks ss09 taastab eraldi >>= ja <<=. Granulaarseks kohandamiseks saad fondi kohapeal uuesti ehitada käsuga ./script/build.sh --features "ss02,ss08,cv14".

Fira Code on mu redaktoris aeglane. Kas see on normaalne?

Versioon 4 sisaldas renderdamise optimeerimist: 44 eraldi nooleligatuuri asendati nelja kombinatoorse reegliga, parandades jõudlust 100-150%. Kui see on praegu aeglane, kontrolli, kas samaaegselt on lubatud muid fondi funktsioone (calt pluss ss komplektid tavaliselt viivitusi ei põhjusta).

Kuidas on Fira Code'is kirillitsa tugi?

Kirillitsa komplekt on päritud Fira Monolt: loetav, neutraalne, pretensioonitu. See on piisav venekeelse koodi (kommentaarid, stringid) jaoks. Kuid kui kirjutad ulatuslikku dokumentatsiooni vene keeles, kaalu JetBrains Mono kasutamist: selle kirillitsa on paremini arendatud.

Kas tasub 2026. aastal Fira Code'ile üle minna

Fonti ei ole uuendatud alates 2021. aasta detsembrist. Ja kummalisel kombel on see hea märk. Kui toode jõuab olekusse „töötab ega lagune", pole sagedased commit'id vajalikud. Viie aasta jooksul ilma väljalaseteta ei ole keegi kirjutanud „Fira Code on surnud". Inimesed lihtsalt kasutavad seda.

Kui veedad programmeerides 4+ tundi päevas, paigalda Fira Code nädalaks. Tunned tagasipöördumist oma vana fondi juurde kiiremini, kui ootad: su silm harjub lugema operaatoreid ühtsete tervikutena ja naasmine „lahtivõetud" märkide juurde tundub sammuna tagasi. Halvim, mis juhtuda saab: kustutad fondi seitsme päeva pärast. Parim: leiad oma tööriista aastateks.