Metafont

Metafont

Metafont-logotyp
Grundläggande information

utvecklaren Donald E. Knuth
Publiceringsår 1979
Aktuell  version 2.71828182
( 5 februari 2021 )
operativ system Tvärplattform
kategori TeX
Licens LaTeX Project Public License
CTAN-omfattande TeX Archive Network

Metafont är ett abstrakt beskrivningsspråk för att definiera vektorteckensnitt . Det är också namnet på den associerade tolk som kör Metafont-koden och genererar bitmappsteckensnitt med en viss upplösning. Den utvecklades av Donald E. Knuth som en följeslagare av TeX för att ställa in andra volymen av The Art of Computer Programming , eftersom han var missnöjd med resultatet av fotoställningen av den första volymen. Metafont är speciellt utformat för att stödja TeX och är därför också en del av många TeX-distributioner.

Knuth började arbeta med programvara för skapande av teckensnitt 1977 och släppte den första versionen av Metafont 1979. På grund av brister i det ursprungliga Metafont-språket utvecklade Knuth ett helt nytt Metafont-system 1984, och detta reviderade system används idag. I analogi med TeX, det versionsnumret närmar Eulers nummer och kommer att ändras till e efter Knuth död .

Allmän

Bokstävernas form definieras i Metafont med hjälp av geometriska ekvationer, som kan vara komplexa. Till skillnad från de vanligaste konturteckensnitten (som TrueType eller PostScript - typ 1-typsnitt ) består ett Metafont-typsnitt huvudsakligen av rader från "pennor" med en viss bredd, tillsammans med fyllda områden. Därför beskriver en Metafont-fil inte konturen av tecknen, utan penns väg och linjens respektive bredd vid ritning. Ett bra exempel hittar du nedan. Metafont-handledning i kapitel 0.5.

Några enklare Metafont-teckensnitt, till exempel Till exempel använder de kalligrafiska matematiska teckensnitten i Computer Modern- familjen ett enda slag av en relativt stor penna för att definiera varje synlig "stroke" av en karaktär. Mer komplexa teckensnitt, till exempel Computer Modern-familjen av romerska teckensnitt, använder vanligtvis en smal penna för att skissera de synliga "streck" som sedan fylls. Med ett standard konturteckensnitt är konturerna däremot alltid dimensionella.

Användningen av icke-dimensionella pennor för att skissera områden leder vanligtvis till rationella kurvor av högre ordning för den aktuella konturen, vilket innebär att konvertering av Metafont-teckensnitt till TrueType eller PostScript ofta är extremt svårt och vanligtvis bara kan approximeras - TrueType använder bara andra- graders kurvor , Postscript endast använder tredje gradens kurvor .

Metafont skiljer sig från andra system i olika teckensnitt, som specificeras av några få parametrar som bildförhållande, lutning, linjebredd eller serif-storlek (därav metan i namnet); genom att ändra relativt abstrakta parametrar vid en punkt i Metafont-filen kan en utseendeförändring som är konsekvent i hela teckensnittet uppnås. Via "Bredd på en smal linje", "Storlek på serifs", "Lutning av ellipsen i kurvor", till exempel, B. en neoklassisk antikvitet kan ändras till ett modernt sans serif-teckensnitt .

Computer Modern Roman illustrerar många användningar av dessa möjligheter; En typisk TeX-installation innehåller teckensnittsvikter i storlekar från 5 till 17 poäng för ett specifikt teckensnitt  , med samma radbredd (istället för att öka som ett resultat av uppskalning) i alla storlekar och storleksberoende teckenbredder för bättre läsbarhet. Andra teckensnitt från Computer Modern, särskilt typmaskiner och sans-serif-stilar, definieras, som redan nämnts ovan, i huvudsak via samma Metafont-fil, men med olika globala parametrar.

Andra parametrar som O-korrigering (mängden som en avrundning dras större) eller svarta parametern (linjer blir lite tjockare) används för att anpassa sig till olika utmatningsenheter. Dessutom är definitionen av ligaturer och manipulation av kerning möjlig i Metafont .

För en tid sedan skapades en ättling till Metafont som matar ut en PostScript-fil: MetaPost . Från detta utvecklades METATYPE1 senare , vilket genererar ett Postscript Type 1-typsnitt med de metriska filer som krävs för TeX. Ingen av dem kan dock använda pennor utan snarare beskriva bildens eller karaktärens konturer.

Det viktigaste teckensnittet som utvecklats i Metafont är Computer Modern av Knuth, som används av TeX som standardteckensnitt.

Metafont-tolken kan också utföras interaktivt och kan kommandon för att mata ut bilderna som produceras på skärmen. Knuth sa att han använder Metafont som ett slags skrivbordskalkylator för att lösa komplicerade ekvationer, även om han nu använder MetaPost för matematiska illustrationer.

Skillnad mellan typsnitt Metafont och typ 1 eller DVI- och PDF-filer

Med Metafont-teckensnitt måste en anpassad uppsättning bitmappsteckensnitt skapas för varje enhet . Idén med Metafont motsvarar den för DVI-filer , där inga typsnitt, utan endast referenser till dem ingår. Det är inte skaparen av dokumentet som tillhandahåller teckensnitt, utan snarare personen som behandlar (läser eller skriver ut) dokumentet genom att ladda bitmappsteckensnitt som skapats optimalt för den här enheten av DVI-drivrutinen. Motsvarande teckensnitt måste dock finnas på enheten.

Å andra sidan, med PDF-filer, är metoden att alla teckensnitt ingår i PDF-filen. Du kan integrera olika bitmappsteckensnitt, men dessa kommer inte att anpassas optimalt för ett stort antal enheter. Därför rekommenderas endast vektorteckensnitt (t.ex. typ 1-teckensnitt) för bärbara PDF-filer. När man skriver ut, å andra sidan, ger Metafont-teckensnitt som är anpassade till specialskrivaren kvalitetsfördelar jämfört med typ 1-teckensnitt.

Beskrivningsspråk

Här är ett litet exempel från Metafont-teckensnittet, ett mycket enkelt teckensnitt. Varje punkt har en X- och en Y-koordinat, som betecknas med x1, y1, x2, etc. Uttrycket z4 är en förkortning för (x4, y4).

Källtext till ett Metafont-brev Produktionen inom bevis läge
1: beginlogochar("F", 14);
2: x1 = x2 = x3 = leftstemloc;
3: x4 = w - x1 + ho;
4: x5 = x4 - xgap;
5: y2 = y5;
6: y3 = y4;
7: bot y1 = -o;
8: top y3 = h;
9: y2 = barheight;
10: draw z1
11: -- z3
12: -- z4;
13: draw z2
14: -- z5;
15: labels(1, 2, 3, 4, 5);
16: endchar;
Utmatning av koden till vänster

Rad 1 definierar ett nytt tecken med namnet  F och teckenkoden 14.

I rad 2 är x-positionerna för punkterna 1, 2 och 3 inställda till vänsterstemloc , ett värde som anger positionen för den vänstra stapeln.

Linje 3 definierar x4 på ett sådant sätt att det, förutom den överskottade ho , är samma avstånd från den högra kanten (specificerad av w ) som punkt 1 är från den vänstra kanten.

I raderna 10 till 14 är punkterna 1, 3 och 4 slutligen förbundna med raka linjer (vänster och övre linjen på F) och den lilla horisontella linjen i mitten dras genom att ansluta punkterna 2 och 5.

Se även

litteratur

webb-länkar

Commons : METAFONT  - samling av bilder, videor och ljudfiler

Individuella bevis

  1. ctan.org .
  2. ^ Donald E. Knuth: Framtiden för TEX och METAFONT . (PDF) 1990 (PDF; 15 kB)