De Unicode1-standaard specificeert geen lettertype2 — een verzameling van grafische vormen die gliefen3 genoemd worden. In plaats daarvan worden abstracte tekens geïdentificeerd door een uniek nummer (een zogenaamd codepunt4), en worden ook de vormveranderingen vastgelegd die moeten gebeuren afhankelijk van de context waarin een glief gebruikt wordt (bv. het combineren van tekens5, vooraf gecombineerde tekens6, en vaste combinaties van letters en diakritische tekens7). De keuze van het lettertype — dat bepaalt hoe de abstracte tekens van Unicode moeten omgezet worden naar een bitmap- of vectorvoorstelling die op een scherm kan weergegeven worden of afgedrukt kan worden — wordt dan aan de gebruiker overgelaten. Als een lettertype gekozen wordt dat geen glief bevat voor een bepaald codepunt dat in een document gebruikt wordt, dan wordt de glief doorgaans weergegeven als een vraagteken, een vierkantje, of een ander plaatsvervangend teken8.
Computerlettertypes9 gebruiken verschillende technieken om tekens of gliefen weer te geven. Bitmaplettertypes10 gebruiken een raster van stippen — pixels11 genoemd — die van elke glief een afbeelding vormen in elke verschijningsvorm en in elke grootte. Omtreklettertypes12 (ook vectorlettertypes genoemd) gebruiken tekeninstructies of wiskundige formules om elke glief te beschrijven. Lijnlettertypes13 gebruiken een reeks van gespecificeerde lijnen en aanvullende informatie om het profiel te definiëren — de dikte en de vorm van de lijn in een specifieke verschijningsvorm en grootte — die dan samen de weergave van de glief beschrijven.
Lettertypes bevatten ook speciale orthografische regels om meerdere gliefen met elkaar te kunnen combineren tot ligaturen14 (gecombineerde tekens). Besturingssystemen, webbrowsers en andere software die gebruikmaakt van typografie, gebruiken lettertypes om tekst op het scherm of afdrukmedia weer te geven, en kunnen geprogrammeerd worden om die orthografische regels toe te passen. Als alternatief kunnen ze externe scripts gebruiken om de vorm van gliefen aan te passen (rendertechnologie of "smart font"-engines), en ze kunnen ook geprogrammeerd worden om ofwel één groot Unicode-lettertype te gebruiken of om meerdere lettertypes te combineren voor verschillende tekens of talen.
Geen enkel Unicode-lettertype definieert alle tekens uit de meest recente versies van de Unicode-standaard, omdat er steeds meer talen en tekens aan toegevoegd worden, en omdat veelgebruikte lettertypeformaten niet meer dan 65.535 gliefen kunnen bevatten. Dat is ongeveer de helft van de 137.994 tekens uit Unicode 12.1 — de meest recente versie uitgebracht in mei 2019 — die naast 150 moderne en historische schriften15 ook verschillende collecties symbolen en emoji16's bevat. De eerste Unicode-lettertypes met zeer grote tekensets en ondersteuning voor veel Unicode-blokken waren Lucida Sans Unicode17 (1993), Unihan font18 (1993) en Everson Mono19 (1995).
Een Unicode-lettertype is een computerlettertype dat Unicode-tekens afbeeldt op gliefen. Daardoor kunnen de gliefen van het lettertype geïdentificeerd worden door codepunten zoals gedefinieerd in de Unicode-standaard. De overgrote meerderheid van de moderne computerlettertypes is gebaseerd op Unicode, zelfs die lettertypes die enkel gliefen bevatten voor één enkel schrift, of die zelfs enkel het standaard Latijnse alfabet ondersteunen. Lettertypes die een breed scala aan Unicode-schriften en Unicode-symbolen ondersteunen, worden "pan-Unicode lettertypes" genoemd. Maar omdat het maximale aantal gliefen dat kan gedefinieerd worden in een TrueType-lettertype beperkt is tot 65.535, kan één enkel lettertype onmogelijk alle individuele gliefen bevatten voor alle Unicode-tekens.
Het tekstbestand unicode.txt20 bevat een lijst van veelgebruikte Unicode-lettertypes die een relatief groot aantal en een breed scala aan Unicode-tekens ondersteunen. Elke regel van het bestand bevat informatie over één lettertype, bestaande uit de volgende twaalf velden die van elkaar worden gescheiden door tabs: i) naam (Font), ii) licentie (License), iii) aantal tekens (Chars), iv) aantal gliefen (Glyphs), v) meest recente versie en publicatiedatum (Version (date)), vi) naam en grootte van het bestand (Filename (size)), vii) lettertypefamilie (Font family), viii) verschijningsvormen (Font weight, style), ix) soort lettertype (Font type), x) soorten schreef21 (Serif style), xi) ontwerper/auteur en auteursrecht (Creator/author (copyright)), en xii) opmerkingen (Notes). Je mag ervan uitgaan dat de velden zelf geen tabs en puntkomma's (;) bevatten.
Gevraagd wordt om — gebruikmakend van de teksteditors vi of vim — een reeks commando's op te stellen die achtereenvolgens de volgende opdrachten uitvoeren. Probeer voor elke opdracht zo weinig mogelijk commando's te gebruiken en zorg er voor dat elk van deze commando's bestaat uit zo weinig mogelijk tekens. De commando's mogen geen programmeerbare filters (bv. awk) gebruiken. Alle opdrachten moeten na elkaar uitgevoerd worden. De opdrachten mogen de eerste regel (hoofding) niet wijzigen, tenzij dit expliciet anders vermeld staat. Ter controle kan je gebruikmaken van de meegeleverde bestanden unicode.i.txt (ZIP22), die telkens de inhoud van het bestand bevatten nadat de $$i$$-de opdracht werd uitgevoerd.
Verwijder de laatste twee velden, ook op de eerste regel. Zo moet
Font License Chars Glyphs Version (date) Filename (size) Font family Font weight, style Font type Serif style Creator/author (copyright) Notes Arial Proprietary 3988 3988 v6.80 (2012-05-11) arial.ttf (756 KB) Arial Medium (Normal), Regular OTF+TTO Normal Sans (2008) Monotype Corporation Included with Microsoft Windows Arial Unicode MS Proprietary 38917 50377 v1.01 sfnt rev 1 (2002-11-18) ARIALUNI.TTF (22.1 MB) Arial Unicode MS Medium (Normal), Regular OTF+TTO Normal Sans Agfa Monotype Corporation. Monotype Corporation. Included with Microsoft Office 2013 and earlier versions Bitstream Cyberbit Freeware 32961 29934 v2.0 beta (1998-03-22) Cyberbit.ttf (12.7 MB) Bitstream Cyberbit Medium (Normal), Roman TTF Cove Bitstream Inc. For non-commercial use only. BitstreamCyberCJK Freeware 30275 28686 v2.0 beta (1998-03-17) Cyberbit.ttf (12.4 MB) Bitstream CyberCJK Medium (Normal), Book, Roman TTF Cove Bitstream Inc. For non-commercial use only. Brampton OFL 1916 1979 v0.16 (2011-09-22) Brampton.ttf (622 kB) Brampton TTF Slab serif Christ Trek fonts …
bijvoorbeeld omgezet worden naar (unicode.1.txt23)
Font License Chars Glyphs Version (date) Filename (size) Font family Font weight, style Font type Serif style Arial Proprietary 3988 3988 v6.80 (2012-05-11) arial.ttf (756 KB) Arial Medium (Normal), Regular OTF+TTO Normal Sans Arial Unicode MS Proprietary 38917 50377 v1.01 sfnt rev 1 (2002-11-18) ARIALUNI.TTF (22.1 MB) Arial Unicode MS Medium (Normal), Regular OTF+TTO Normal Sans Bitstream Cyberbit Freeware 32961 29934 v2.0 beta (1998-03-22) Cyberbit.ttf (12.7 MB) Bitstream Cyberbit Medium (Normal), Roman TTF Cove BitstreamCyberCJK Freeware 30275 28686 v2.0 beta (1998-03-17) Cyberbit.ttf (12.4 MB) Bitstream CyberCJK Medium (Normal), Book, Roman TTF Cove Brampton OFL 1916 1979 v0.16 (2011-09-22) Brampton.ttf (622 kB) Brampton TTF Slab serif …
Vervang de tabs als veldscheidingsteken door puntkomma's (;), ook op de eerste regel. We krijgen dan (unicode.2.txt24)
Font;License;Chars;Glyphs;Version (date);Filename (size);Font family;Font weight, style;Font type;Serif style Arial;Proprietary;3988;3988;v6.80 (2012-05-11);arial.ttf (756 KB);Arial;Medium (Normal), Regular;OTF+TTO;Normal Sans Arial Unicode MS;Proprietary;38917;50377;v1.01 sfnt rev 1 (2002-11-18);ARIALUNI.TTF (22.1 MB);Arial Unicode MS;Medium (Normal), Regular;OTF+TTO;Normal Sans Bitstream Cyberbit;Freeware;32961;29934;v2.0 beta (1998-03-22);Cyberbit.ttf (12.7 MB);Bitstream Cyberbit;Medium (Normal), Roman;TTF;Cove BitstreamCyberCJK;Freeware;30275;28686;v2.0 beta (1998-03-17);Cyberbit.ttf (12.4 MB);Bitstream CyberCJK;Medium (Normal), Book, Roman;TTF;Cove Brampton;OFL;1916;1979;v0.16 (2011-09-22);Brampton.ttf (622 kB);Brampton;;TTF;Slab serif …
Verwijder alle gepatenteerde lettertypes. Dat zijn de lettertypes waarvan de inhoud van het licentieveld (License) gelijk is aan Proprietary. We krijgen dan (unicode.3.txt25)
Font;License;Chars;Glyphs;Version (date);Filename (size);Font family;Font weight, style;Font type;Serif style Bitstream Cyberbit;Freeware;32961;29934;v2.0 beta (1998-03-22);Cyberbit.ttf (12.7 MB);Bitstream Cyberbit;Medium (Normal), Roman;TTF;Cove BitstreamCyberCJK;Freeware;30275;28686;v2.0 beta (1998-03-17);Cyberbit.ttf (12.4 MB);Bitstream CyberCJK;Medium (Normal), Book, Roman;TTF;Cove Brampton;OFL;1916;1979;v0.16 (2011-09-22);Brampton.ttf (622 kB);Brampton;;TTF;Slab serif Cardo;OFL v1.1;2879;2882;v0.099 sfnt rev 0.098999 (2010-05-23);Cardo99s.ttf (706 KB);Cardo;Medium (Normal), Book, Regular;TTF;Cove Caslon Roman;BSD-like license;3683;3686;v001.000 (2003-10-23);CaslonRoman.sfd (3.70 MB);Caslon;Roman;TTF; …
Rangschik de lettertypes lexicografisch volgens het licentieveld (License), waarbij je geen rekening houdt met hoofdletters of kleine letters, en rangschik lettertypes met dezelfde licentie volgens dalend aantal karakters (Chars). We krijgen dan (unicode.4.txt26)
Font;License;Chars;Glyphs;Version (date);Filename (size);Font family;Font weight, style;Font type;Serif style DejaVu Sans;Bitstream Vera license and public domain for additions;5467;5762;v2.32 sfnt rev 2.31999 (2010-08-22);DejaVuSans.ttf (667 KB);DejaVu Sans;Medium (Normal), Book;OTF+TTO;Normal Sans Caslon Roman;BSD-like license;3683;3686;v001.000 (2003-10-23);CaslonRoman.sfd (3.70 MB);Caslon;Roman;TTF; Bitstream Cyberbit;Freeware;32961;29934;v2.0 beta (1998-03-22);Cyberbit.ttf (12.7 MB);Bitstream Cyberbit;Medium (Normal), Roman;TTF;Cove BitstreamCyberCJK;Freeware;30275;28686;v2.0 beta (1998-03-17);Cyberbit.ttf (12.4 MB);Bitstream CyberCJK;Medium (Normal), Book, Roman;TTF;Cove Y.OzFontN;Freeware;21957;57621;v13.00 sfnt rev 5 Pen-Ji (2010-08-24);YOzRN.TTC (13.5 MB);YOzFontN;Regular;TTC;Any …
Gebruik een komma (,) om de duizendtallen te scheiden in de velden met het aantal tekens (Chars) en het aantal gliefen (Glyphs). We krijgen dan (unicode.5.txt27)
Font;License;Chars;Glyphs;Version (date);Filename (size);Font family;Font weight, style;Font type;Serif style DejaVu Sans;Bitstream Vera license and public domain for additions;5,467;5,762;v2.32 sfnt rev 2.31999 (2010-08-22);DejaVuSans.ttf (667 KB);DejaVu Sans;Medium (Normal), Book;OTF+TTO;Normal Sans Caslon Roman;BSD-like license;3,683;3,686;v001.000 (2003-10-23);CaslonRoman.sfd (3.70 MB);Caslon;Roman;TTF; Bitstream Cyberbit;Freeware;32,961;29,934;v2.0 beta (1998-03-22);Cyberbit.ttf (12.7 MB);Bitstream Cyberbit;Medium (Normal), Roman;TTF;Cove BitstreamCyberCJK;Freeware;30,275;28,686;v2.0 beta (1998-03-17);Cyberbit.ttf (12.4 MB);Bitstream CyberCJK;Medium (Normal), Book, Roman;TTF;Cove Y.OzFontN;Freeware;21,957;57,621;v13.00 sfnt rev 5 Pen-Ji (2010-08-24);YOzRN.TTC (13.5 MB);YOzFontN;Regular;TTC;Any …
Het veld met de meest recente versie en de publicatiedatum (Version (date)), en het veld met de naam en de grootte van het bestand (Filename (size)) hebben beide een inhoud van de vorm deel1 (deel2). Splits beide velden in twee velden (deel1 en deel2), zodat deze nieuwe velden ook van elkaar gescheiden worden door puntkomma's. Doe dit ook met de veldnamen op de eerste regel. We krijgen dan (unicode.6.txt28)
Font;License;Chars;Glyphs;Version;date;Filename;size;Font family;Font weight, style;Font type;Serif style DejaVu Sans;Bitstream Vera license and public domain for additions;5,467;5,762;v2.32 sfnt rev 2.31999;2010-08-22;DejaVuSans.ttf;667 KB;DejaVu Sans;Medium (Normal), Book;OTF+TTO;Normal Sans Caslon Roman;BSD-like license;3,683;3,686;v001.000;2003-10-23;CaslonRoman.sfd;3.70 MB;Caslon;Roman;TTF; Bitstream Cyberbit;Freeware;32,961;29,934;v2.0 beta;1998-03-22;Cyberbit.ttf;12.7 MB;Bitstream Cyberbit;Medium (Normal), Roman;TTF;Cove BitstreamCyberCJK;Freeware;30,275;28,686;v2.0 beta;1998-03-17;Cyberbit.ttf;12.4 MB;Bitstream CyberCJK;Medium (Normal), Book, Roman;TTF;Cove Y.OzFontN;Freeware;21,957;57,621;v13.00 sfnt rev 5 Pen-Ji;2010-08-24;YOzRN.TTC;13.5 MB;YOzFontN;Regular;TTC;Any …
Zet alle veldeninhouden tussen dubbele aanhalingstekens, inclusief de veldnamen op de eerste regel. We krijgen dan (unicode.7.txt29)
"Font";"License";"Chars";"Glyphs";"Version";"date";"Filename";"size";"Font family";"Font weight, style";"Font type";"Serif style" "DejaVu Sans";"Bitstream Vera license and public domain for additions";"5,467";"5,762";"v2.32 sfnt rev 2.31999";"2010-08-22";"DejaVuSans.ttf";"667 KB";"DejaVu Sans";"Medium (Normal), Book";"OTF+TTO";"Normal Sans" "Caslon Roman";"BSD-like license";"3,683";"3,686";"v001.000";"2003-10-23";"CaslonRoman.sfd";"3.70 MB";"Caslon";"Roman";"TTF";"" "Bitstream Cyberbit";"Freeware";"32,961";"29,934";"v2.0 beta";"1998-03-22";"Cyberbit.ttf";"12.7 MB";"Bitstream Cyberbit";"Medium (Normal), Roman";"TTF";"Cove" "BitstreamCyberCJK";"Freeware";"30,275";"28,686";"v2.0 beta";"1998-03-17";"Cyberbit.ttf";"12.4 MB";"Bitstream CyberCJK";"Medium (Normal), Book, Roman";"TTF";"Cove" "Y.OzFontN";"Freeware";"21,957";"57,621";"v13.00 sfnt rev 5 Pen-Ji";"2010-08-24";"YOzRN.TTC";"13.5 MB";"YOzFontN";"Regular";"TTC";"Any" …