Zum Inhalt springen
getnextpdf.com

Pro Edition

Font Tools

NextPDF Pro untersucht eingebettete Schriftprogramme, identifiziert Subset-Schriften anhand ihrer standardisierten Namenskonvention und erzeugt einen strukturierten De-Subsetting-Plan mit einer geschätzten Größenauswirkung.

Diese Funktion ist in NextPDF Pro (nextpdf/pro) enthalten und wird mit einem Lizenz-Envelope der Pro-Stufe aktiviert. Eine Bereitstellung ohne diese Berechtigung lädt die Klassen der Funktion nicht. Editionen vergleichen und Lizenz erwerben.

Kein funktionsspezifisches Lizenz-Flag schränkt dieses Modul ein. Die Font-Tools-Klassen sind verfügbar, sobald nextpdf/pro installiert ist.

Terminal-Fenster
composer require nextpdf/pro:^3

Subset-Schriften in einem PDF betten nur die Glyphen ein, die das Dokument verwendet. Per Konvention trägt ihr /BaseFont-Name ein sechsbuchstabiges Großbuchstaben-Kürzel, gefolgt von +, zum Beispiel ABCDEF+Arial. NextPDF Pro:

  • Erkennt Subsets. FontDesubsetter durchsucht rohe PDF-Daten nach /BaseFont-Einträgen, erkennt das Subset-Präfix-Muster und meldet jeden Eintrag als SubsetInfo-Wertobjekt mit dem ursprünglichen Familiennamen, der Subset-Glyphenanzahl, der vollständigen Glyphenanzahl und der Kodierung.
  • Plant das De-Subsetting. DesubsetPlan sammelt die Subset-Schriften, die zur Ersetzung durch vollständige Schriftprogramme vorgesehen sind, und meldet eine geschätzte Byte-Größenzunahme, sodass Sie vor dem Handeln entscheiden können, ob das De-Subsetting die Dateigrößenkosten wert ist.

Font Tools ist eine Analyse- und Planungsschicht. Es beschreibt, was vorhanden ist und was das De-Subsetting kosten würde; es schreibt das Schriftprogramm nicht selbst um.

Das Umschreiben eines eingebetteten Schriftprogramms ist der schwierige, riskante Teil. Glyphenkonturen, Hinting und cmap-Tabellen müssen konsistent bleiben, und ein einziger Fehler beschädigt die Darstellung. Deshalb trennt NextPDF Pro die günstige, sichere Arbeit — Bestandsaufnahme und Kostenprognose — von diesem teuren Umschreiben. Der Scanner liest ausschließlich Bytes; er parst oder führt niemals ein Schriftprogramm aus und bleibt so deterministisch und frei von Nebenwirkungen. Glyphenanzahlen und die Größendifferenz sind bewusst als Heuristiken gekennzeichnet, sodass eine Kapazitätsentscheidung ehrlich bleibt, statt einer Zahl zu vertrauen, die das Modul nicht messen kann. So können Sie abwägen, ob das De-Subsetting die Kosten wert ist, bevor Sie vollständige Schriftprogramme beschaffen.

Design-Hintergrund: Schriften: der schwierige Teil.

KlasseVerantwortlichkeit
FontDesubsetterPDF-Daten durchsuchen und Subset-Schrift-Einträge melden.
SubsetInfoUnveränderliche Beschreibung eines erkannten Subsets.
DesubsetPlanAnvisierte Subsets plus geschätzte Größenzunahme.
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)]);
  • Der Scanner meldet einen /BaseFont ohne das sechsbuchstabige Präfix als Nicht-Subset-Eintrag, statt ihn zu überspringen.
  • Die geschätzte Größenzunahme ist eine Heuristik auf Basis durchschnittlicher Bytes je Glyph, kein gemessener Wert.
  • Die Erkennung arbeitet auf der Byte-Darstellung der /BaseFont-Einträge; verschlüsselte oder stark komprimierte Objekt-Streams müssen möglicherweise zuerst dekodiert werden.

Das Subset-Scannen ist linear in der PDF-Bytelänge. Die Planung ist linear in der Anzahl der erkannten Subsets.

Font Tools liest ausschließlich strukturelle Metadaten. Es führt keine Schriftprogramme aus und löst keine externen Schriftreferenzen auf.

VerhaltenReferenzStatus
Subset-Schrift-NamenskonventionISO 32000-2 §9.9.2Abgestimmt (paraphrasiert)
  • FontDesubsetter::analyzeSubsets() durchsucht rohe PDF-Daten nach /BaseFont-Einträgen, erkennt das Subset-Präfix aus sechs Großbuchstaben plus + und gibt jeden als unveränderliches SubsetInfo mit dem ursprünglichen Familiennamen, der Subset-Glyphenanzahl, der vollständigen Glyphenanzahl und der Kodierung zurück.
  • Ein /BaseFont ohne das Subset-Präfix wird als Nicht-Subset-Eintrag gemeldet, statt übersprungen zu werden.
  • DesubsetPlan sammelt die zur Ersetzung anvisierten Subsets und meldet eine geschätzte Byte-Größenzunahme auf Basis durchschnittlicher Bytes je Glyph — eine Heuristik, kein gemessener Wert.
  • Dies ist eine Analyse- und Planungsschicht. Es meldet, was vorhanden ist und was das De-Subsetting kosten würde; es schreibt das Schriftprogramm nicht um, führt keine Schriftprogramme aus und löst keine externen Schriftreferenzen auf.

Enterprise ändert das Font-Tools-Verhalten nicht. Enterprise ergänzt Funktionen höherer Stufe, die separat dokumentiert sind; sie sind für die Subset-Erkennung oder De-Subset-Planung nicht erforderlich.

Die Open-Source-Schrift-Pipeline von NextPDF Core übernimmt die grundlegende Schrift-Einbettung. Subset-Buchführung und De-Subset-Planung sind Pro-Ergänzungen. Siehe /modules/font/.

Diese Seite dokumentiert ausschließlich extern beobachtbares Verhalten und die unterstützte öffentliche API-Oberfläche. Interne Namespace-Pfade, Helferklassen, Mechanismus-Tabellen, Runbook-Dateinamen und Ticket-Präfixe liegen außerhalb des Geltungsbereichs.