Ontwikkelaar

Lettertype verkleinen (subsetting): TTF, OTF, WOFF

Inspecteer een lettertype, bewaar de nodige tekens, exporteer TTF en WOFF.

  • Direct
  • Gratis
  • Privé (lokaal verwerkt)
  • Zonder registratie

Sleep een lettertype hierheen (TTF, OTF, WOFF, TTC) of kies een bestand

Demolettertype gegenereerd in je browser: laad je eigen bestand om het te verkleinen.

Lettertype-inspecteur

Insluitrechten (OS/2 fsType)

    Variatieassen (fvar)

    Unicode-dekking

    Per Unicode-blok
    BlokBereikTekens

    Waarschijnlijk ondersteunde talen

      OpenType-functies (GSUB en GPOS)

        Tabellen en groottes

        TabelGrootteAandeel

        Glyph-overzicht

        Klik op een teken om het toe te voegen aan de te behouden tekst.

        Verkleinen: kies de tekens om te behouden

        Voorinstellingen

        Uitvoermodus

        De DSIG-tabel (digitale handtekening) wordt altijd verwijderd: elke wijziging zou hem ongeldig maken.

          Je lettertype verlaat nooit je apparaat: lezen, analyseren, subsetten en WOFF-compressie gebeuren in je browser, er wordt niets geüpload (belangrijk bij gelicentieerde lettertypen). Beperkingen: CFF/OTF-contouren worden niet gesubset, WOFF2 wordt niet gelezen (Brotli), contextuele substituties worden conservatief bewaard, variatiereeksen (cmap-formaat 14) vervallen, bestanden boven 200 MB worden geweigerd.

          Een webfont verkleinen met subsetting, zonder upload

          Een volledig lettertype bevat duizenden glyphs, terwijl een pagina er maar een fractie van gebruikt: een lettertype verkleinen (subsetting) betekent alleen de nodige tekens bewaren en het resultaat als WOFF comprimeren. De serieuze hulpmiddelen werken op de opdrachtregel (pyftsubset uit fontTools, glyphhanger) of vereisen dat je het bestand naar een server uploadt, wat een probleem is bij een gelicentieerd lettertype.

          Deze tool doet alles in je browser: hij leest TTF, OTF, WOFF 1.0 en TTC, toont een volledige inspecteur (namen, licentie, fsType-rechten, variatieassen, Unicode-dekking per blok, gedekte talen, OpenType-functies, grootte van elke tabel), bouwt een TrueType-subset met sluiting over componenten en ligaturen, schrijft TTF en WOFF, controleert of het geproduceerde lettertype laadt en genereert de @font-face-CSS met unicode-range.

          1. Kies een lettertype

            Sleep een TTF-, OTF-, WOFF- of TTC-bestand of klik op “Lettertype kiezen”. Bij een TTC-collectie kies je het lettertype om uit te pakken. Een WOFF2-bestand (handtekening wOF2) wordt herkend en geweigerd met uitleg.

          2. Lees de inspecteur

            Controleer familie, versie, licentie (name ID 13) en fsType-insluitrechten, de fvar-assen, de Unicode-dekking per blok, de waarschijnlijk ondersteunde talen en de GSUB/GPOS-functies. Het glyph-overzicht en het zoekvak beantwoorden “heeft dit lettertype een ẞ of een €?”.

          3. Kies de tekens om te behouden

            Plak je tekst in “Te behouden tekst”, vink voorinstellingen aan (Basis-Latijn, Latijn-1, Grieks, Cyrillisch…) of typ Unicode-bereiken. De teller toont welke tekens aanwezig zijn, welke ontbreken en hoeveel glyphs na de sluiting overblijven.

          4. Stel de uitvoermodus in

            “OpenType-functies behouden” bewaart kerning, ligaturen en variabele assen; “Kleinste bestand” hernummert glyphs en verwijdert de lay-outtabellen. Beslis over het verwijderen van hinting en de minimale name-tabel.

          5. Maak de subset

            Klik op “Subset maken”: de tool toont de grootte voor en na, het detail per tabel, de zelfcontrole van de weergave, de knoppen “.ttf downloaden” en “.woff downloaden” en het CSS-fragment om te kopiëren.

          Zo wordt de subset gebouwd

          De tool leest de sfnt-index zoals beschreven in de OpenType-specificatie en daarna de tabel cmap (in de eerste plaats formaten 4 en 12) om je tekens aan glyphs te koppelen. Vervolgens berekent hij de sluiting: de componenten van samengestelde glyphs (een “é” die “e” en het accent hergebruikt), daarna, als functies behouden blijven, de GSUB-substituties van type 1 tot 4 (enkelvoudige, meervoudige, alternatieve vormen en ligaturen zoals fi, fl, ffi) tot een vast punt, de sub-lookups van contextuele substituties (types 5, 6 en 8, extensies van type 7 opgelost) conservatief, de varianten uit de MATH-tabel en de kleurlagen uit de COLR-tabel.

          • Modus “functies behouden”: glyph-ID’s veranderen niet; ongebruikte contouren worden leeggemaakt (loca-items met lengte nul), de cmap wordt herbouwd, GSUB, GPOS, GDEF, kern en fvar blijven onaangeroerd en dus geldig, en gvar verliest alleen de gegevens van de verwijderde glyphs.
          • Modus “kleinste bestand”: glyphs worden compact hernummerd, componenten opnieuw toegewezen, hmtx, loca, glyf, cmap, maxp, hhea en post herbouwd, lay-out- en variatietabellen verwijderd.
          • Hinting verwijderen: fpgm, prep, cvt, hdmx, VDMX en LTSH verdwijnen, instructies worden uit eenvoudige en samengestelde glyphs gehaald, maxp en gasp worden aangepast zoals pyftsubset dat doet.
          • Schrijven: gesorteerde index, tabellen uitgelijnd op 4 bytes, tabelchecksums en head-checkSumAdjustment herberekend, korte of lange loca naargelang de grootte, daarna WOFF 1.0 met zlib per tabel (een tabel blijft onbewerkt als compressie niet helpt).
          • Zelfcontrole: het geproduceerde lettertype wordt geladen via de FontFace-API en je voorbeeldtekst wordt met origineel en subset naast elkaar weergegeven, pixel voor pixel vergeleken.

          Wat elke tabel weegt en wat de tool ermee doet

          TabellenRolBehandeling
          glyf, locaTrueType-contouren en glyph-index: het grootste deel van het gewichtOngebruikte contouren leeggemaakt (behoudmodus) of verwijderd en hernummerd (kleinste modus)
          cmapKoppeling Unicode-teken → glyphHerbouwd: formaat 4 voor het BMP, formaat 12 toegevoegd voor tekens buiten het BMP
          hmtx, hheaZetbreedtes en linkerzijruimtesOngewijzigd behouden (stabiele ID’s) of herbouwd met geoptimaliseerde numberOfHMetrics
          GSUB, GPOS, GDEF, kernLigaturen, substituties, kerning, accentpositioneringOnaangeroerd in behoudmodus, verwijderd in kleinste modus (met waarschuwing)
          fpgm, prep, cvt, hdmx, VDMX, LTSHTrueType-hinting en apparaatmetriekenVerwijderd met “Hinting verwijderen”, glyph-instructies weggehaald
          name, post, DSIGNamen en licentie, glyph-namen, digitale handtekeningname volledig of minimaal (ID’s 0 tot 6, 13, 14, 16, 17, plus de as- en instantienamen van een variabel lettertype), post als formaat 3, DSIG altijd verwijderd

          Gedrag bij lettertypen met TrueType-contouren (glyf). CFF/OTF-lettertypen worden geïnspecteerd, naar WOFF omgezet en van tabellen ontdaan, maar hun contouren worden niet gesubset.

          Wanneer een lettertype verkleinen

          • Bedrijfssite of blog: alleen basis-Latijn, Latijn-1 en typografische interpunctie leveren zodat tekst sneller verschijnt.
          • Kop of logo in een displaylettertype: alleen de letters van de slogan bewaren, enkele kilobytes in plaats van honderden.
          • CJK-lettertypen (TrueType): de echte tekst van de pagina plakken en van meerdere megabytes naar enkele tientallen kilobytes gaan (IPA Gothic: van 6,2 MB naar ongeveer 55 kB als WOFF bij een alinea met 154 verschillende tekens, 22 kB in de modus “Kleinste bestand”); CJK-lettertypen in OTF/CFF worden niet gesubset.
          • Controle vóór aankoop of insluiting: taaldekking, OpenType-functies (tnum, smcp, ss01…) en fsType-rechten nakijken zonder het lettertype te installeren.
          • Conversie van TTF naar WOFF: een geldige WOFF 1.0 en het bijbehorende @font-face-fragment krijgen zonder een gelicentieerd bestand naar een server te sturen.

          Veelvoorkomende problemen en oplossingen

          • Sommige tekens verschijnen in een ander lettertype: ze zitten niet in de subset; de teller en de zelfcontrole markeren de ontbrekende, voeg ze toe aan de te behouden tekst.
          • Ligaturen of kerning zijn verdwenen: je koos “Kleinste bestand”; schakel terug naar “OpenType-functies behouden”.
          • De WOFF is niet zo klein als verwacht: in behoudmodus houden hmtx en loca hun oorspronkelijke grootte; WOFF comprimeert die delen zeer goed en de kleinste modus verkleint ze echt.
          • WOFF2-lettertype geweigerd: zet het eerst met een ander hulpmiddel om naar TTF of WOFF (de tool bevat geen Brotli/WOFF2-decoder).
          • OTF-lettertype niet gesubset: de contouren zijn CFF; zet het om naar TTF vóór het subsetten, of gebruik alleen inspectie en WOFF-conversie.

          Privacy: het lettertype wordt door je browser gelezen, geanalyseerd en herschreven; er wordt geen bestand geüpload of bewaard, wat telt bij een gelicentieerd lettertype. Beperkingen: CFF/OTF-contouren worden niet gesubset, WOFF2 wordt niet gelezen of geschreven, contextuele substituties worden conservatief bewaard (de subset kan een paar glyphs meer bevatten dan strikt nodig), variatiereeksen (cmap-formaat 14) vervallen, bitmap- en kleurtabellen worden in de kleinste modus verwijderd, bestanden boven 200 MB worden geweigerd. Controleer je licentie voordat je een verkleind lettertype publiceert.

          Veelgestelde vragen

          Wat is subsetting van een lettertype en hoeveel bespaart het?

          Bij subsetting blijven alleen de glyphs in het bestand die je pagina’s nodig hebben, bijvoorbeeld basis-Latijn plus een paar accenten in plaats van de duizenden tekens van een volledig lettertype. De besparing hangt vooral af van wat het lettertype bevat: bij een groot lettertype met veel schriften is een Latijnse subset vaak maar 5 tot 10 % van het origineel, terwijl een lettertype dat al tot Latijn beperkt is veel minder verliest. WOFF-compressie haalt er daarna nog een kwart tot de helft af. Gemeten met deze tool: DejaVu Sans (6.253 glyphs, 742 kB), beperkt tot basis-Latijn en Latijn-1, weegt ongeveer 50 kB als WOFF met behouden OpenType-functies en 14 kB in de modus “Kleinste bestand”. De tool toont de grootte voor en na, per tabel.

          Mag ik een gekocht lettertype verkleinen?

          Dat hangt van de licentie af. Vrije licenties zoals OFL of Apache staan wijzigingen toe (de OFL beschouwt een subset wel als een gewijzigde versie: draagt het lettertype een Reserved Font Name, dan moet het verkleinde bestand een andere naam krijgen); veel commerciële weblicenties staan subsetting voor insluiting toe, andere verbieden het uitdrukkelijk. De tool toont de licentietekst die in het lettertype is opgeslagen (name ID 13) en decodeert het veld fsType: staat de bit “no subsetting” (0x0100) aan, dan vraagt de licentie om het lettertype niet te verkleinen. Controleer altijd je overeenkomst voordat je het bestand publiceert.

          Waarom wordt WOFF2 niet ondersteund?

          WOFF2 gebruikt Brotli-compressie plus een specifieke transformatie van de tabellen glyf en loca, terwijl de Compression Streams API in browsers overal alleen gzip en deflate biedt (Chrome kan Brotli nog niet native decoderen). WOFF2 lezen of maken zou een Brotli-bibliotheek en die decoder vereisen, en dat doet deze 100 % lokale tool niet. Zet je WOFF2 met een ander hulpmiddel om naar TTF of WOFF, verklein het hier en ga desgewenst terug naar WOFF2: WOFF2 is meestal 15 tot 30 % kleiner dan WOFF 1.0 (mediane winst van ongeveer 25 % bij TrueType-lettertypen volgens het evaluatierapport van het W3C).

          Wat is het verschil tussen “OpenType-functies behouden” en “kleinste bestand”?

          De eerste modus behoudt de glyph-ID’s en maakt alleen de ongebruikte contouren leeg: de tabellen GSUB, GPOS, GDEF en kern blijven geldig, dus ligaturen, kerning en de assen van een variabel lettertype blijven werken. De tweede modus hernummert de glyphs en verwijdert die tabellen: het bestand is minimaal, maar zonder kerning of ligaturen, en een variabel lettertype wordt zijn standaardinstantie. Voor een website is de eerste modus bijna altijd de juiste keuze.

          Verandert het verwijderen van hinting de weergave?

          TrueType-hinting (de tabellen fpgm, prep en cvt plus glyph-instructies) is vooral van belang voor ClearType-weergave op Windows bij kleine groottes. macOS, iOS, Android en de meeste Linux-browsers negeren het. Verwijderen verkleint een sterk gehint lettertype vaak met 20 tot 50 %, tegen een iets andere Windows-weergave bij kleine letters. De optie staat standaard aan; zet hem uit als je publiek vooral Windows met kleine tekst gebruikt.

          Hoe gebruik ik unicode-range in de gegenereerde CSS?

          De descriptor unicode-range somt de tekens in de subset op in de kortste vorm (samengevoegde bereiken, jokertekens als een bereik uitgelijnd is). De browser downloadt het bestand alleen als de pagina minstens een van die tekens gebruikt, waardoor je een lettertype kunt splitsen in meerdere bestanden (Latijn, Cyrillisch, Grieks) die op aanvraag laden. Plak het @font-face-fragment in je stylesheet en zet de bestanden op het pad dat in src staat.