Ga naar inhoud
getnextpdf.com

Pro editie

Font Tools

NextPDF Pro inspecteert ingebedde lettertypeprogramma’s, identificeert subset-lettertypen aan de hand van hun standaard naamgevingsconventie, en produceert een gestructureerd de-subsettingplan met een geschatte impact op de bestandsgrootte.

Deze mogelijkheid wordt geleverd in NextPDF Pro (nextpdf/pro) en wordt geactiveerd met een licentie-envelop van het Pro-niveau. Een deployment zonder die toekenning laadt de klassen van deze mogelijkheid niet. Vergelijk edities en vraag een licentie aan.

Geen enkele licentievlag per functie schermt deze module af. De Font Tools-klassen zijn beschikbaar zodra nextpdf/pro is geïnstalleerd.

Terminal window
composer require nextpdf/pro:^3

Subset-lettertypen in een PDF bedden alleen de glyphs in die het document gebruikt. Volgens conventie draagt hun /BaseFont-naam een tag van zes hoofdletters gevolgd door +, bijvoorbeeld ABCDEF+Arial. NextPDF Pro:

  • Detecteert subsets. FontDesubsetter scant ruwe PDF-data op /BaseFont-vermeldingen, herkent het subset-prefixpatroon en rapporteert elke vermelding als een SubsetInfo-waarde-object met de oorspronkelijke familienaam, het aantal subset-glyphs, het volledige aantal glyphs en de codering.
  • Plant de-subsetting. DesubsetPlan verzamelt de subset-lettertypen die zijn aangemerkt voor vervanging door volledige lettertypeprogramma’s en rapporteert een geschatte toename in bytegrootte, zodat je kunt beslissen of de-subsetting de kosten in bestandsgrootte waard is voordat je handelt.

Font Tools is een analyse- en planningslaag. Deze beschrijft wat aanwezig is en wat de-subsetting zou kosten; deze herschrijft het lettertypeprogramma niet zelf.

Het herschrijven van een ingebed lettertypeprogramma is het moeilijke, risicovolle deel. Glyph-contouren, hinting en cmap-tabellen moeten consistent blijven, en één fout beschadigt de weergave. Daarom scheidt NextPDF Pro het goedkope, veilige werk — inventarisatie en kostenprojectie — van dat dure herschrijven. De scanner leest alleen bytes; deze parseert of voert nooit een lettertypeprogramma uit, waardoor deze deterministisch en zonder neveneffecten blijft. Glyph-tellingen en het grootteverschil zijn bewust als heuristieken bestempeld, zodat een capaciteitsinschatting eerlijk blijft in plaats van te vertrouwen op een getal dat de module niet kan meten. Zo kun je afwegen of de-subsetting de kosten waard is voordat je volledige lettertypeprogramma’s aanschaft.

Ontwerpachtergrond: Fonts: the hard part.

KlasseVerantwoordelijkheid
FontDesubsetterPDF-data scannen en subset-lettertypevermeldingen rapporteren.
SubsetInfoImmutable beschrijving van één gedetecteerd subset.
DesubsetPlanAangemerkte subsets plus geschatte grootte-toename.
use NextPDF\Pro\FontTools\FontDesubsetter;
$subsets = (new FontDesubsetter())->analyzeSubsets($pdfBytes);
foreach ($subsets as $info) {
echo $info->baseFont . ': ' . $info->subsetGlyphCount . " glyphs\n";
}
use NextPDF\Pro\FontTools\FontDesubsetter;
$desubsetter = new FontDesubsetter();
$subsets = $desubsetter->analyzeSubsets($pdfBytes);
$logger->info('fonttools.scan', ['subset_count' => count($subsets)]);
  • De scanner rapporteert een /BaseFont zonder de prefix van zes letters als een niet-subset-vermelding in plaats van deze over te slaan.
  • De geschatte grootte-toename is een heuristiek gebaseerd op het gemiddelde aantal bytes per glyph, geen gemeten waarde.
  • Detectie werkt op de byteweergave van /BaseFont-vermeldingen; versleutelde of sterk gecomprimeerde object-streams moeten mogelijk eerst worden gedecodeerd.

Subset-scanning is lineair in de PDF-bytelengte. Planning is lineair in het aantal gedetecteerde subsets.

Font Tools leest alleen structurele metadata. Deze voert geen lettertypeprogramma’s uit en lost geen externe lettertypeverwijzingen op.

GedragReferentieStatus
Naamgevingsconventie voor subset-lettertypenISO 32000-2 §9.9.2Afgestemd (geparafraseerd)
  • FontDesubsetter::analyzeSubsets() scant ruwe PDF-data op /BaseFont-vermeldingen, herkent de subset-prefix van zes-hoofdletters-plus-+, en retourneert elke als een immutable SubsetInfo met de oorspronkelijke familienaam, het aantal subset-glyphs, het volledige aantal glyphs en de codering.
  • Een /BaseFont zonder de subset-prefix wordt gerapporteerd als een niet-subset-vermelding in plaats van overgeslagen.
  • DesubsetPlan verzamelt de subsets die zijn aangemerkt voor vervanging en rapporteert een geschatte toename in bytegrootte op basis van het gemiddelde aantal bytes per glyph — een heuristiek, geen gemeten waarde.
  • Dit is een analyse- en planningslaag. Deze rapporteert wat aanwezig is en wat de-subsetting zou kosten; deze herschrijft het lettertypeprogramma niet, voert geen lettertypeprogramma’s uit en lost geen externe lettertypeverwijzingen op.

Enterprise verandert het Font Tools-gedrag niet. Enterprise voegt hoger-niveau functies toe die apart worden gedocumenteerd; ze zijn niet vereist voor subset-detectie of de-subsetplanning.

De open-source lettertypepijplijn van NextPDF Core verzorgt het inbedden van basislettertypen. Subset-boekhouding en de-subsetplanning zijn Pro-toevoegingen. Zie /modules/font/.

Deze pagina documenteert alleen extern waarneembaar gedrag en het ondersteunde publieke API-oppervlak. Interne namespace-paden, helperklassen, mechanismetabellen, runbook-bestandsnamen en ticketprefixen vallen buiten het bestek.