THotPDF.SubsetLoadedFonts Method

Gömülü desteklenen TrueType, OpenType CFF, raw CFF ve Type 1 programlarını, yalnızca yüklü belge içeriğinden erişilebilen glyph'leri tutacak şekilde yeniden yazar

Bildirim

function SubsetLoadedFonts(
    const Options: THPDFLoadedFontSubsetOptions;
    out AInfo: THPDFLoadedFontSubsetInfo): Integer; overload;
function SubsetLoadedFonts(
    out AInfo: THPDFLoadedFontSubsetInfo): Integer; overload;

Erişilebilirlik

Sayfa içeriği her zaman taranır; buna text-showing operator'ler ve resource-yerel font seçimleri de dahildir

IncludeFormXObjects, çağrılan Form XObject'leri kalıtsal resource'larıyla, döngü algılama ve sınırlı bir iç içe geçme derinliğiyle özyinelemeli olarak dahil eder

IncludeAnnotationAppearances, normal, rollover ve down appearance'ları state dictionary'leriyle birlikte dahil eder; etkinleştirildiğinde bu appearance'ların kullandığı Form XObject'leri de izler

Her karakter kodu, kalıcı gömülü glyph ID'sine ulaşmadan önce bildirilen encoding'ini, ardından varsa Type0 CMap ve CIDToGIDMap'i izler; mevcut CID map'leri ve ToUnicode verileri yeniden numaralandırılmaz

TrueType composite glyph'leri özyinelemeli bileşen kapanışlarını korur; COLR v0 katmanları ve COLR v1 glyph paint bağımlılıkları ise referans verilen her outline'ı korur

Type 1 simple font'lar Standard, WinAnsi, MacRoman veya MacExpert encoding'ini ve Differences'ı izler; ardından gömülü stream düzenini değiştirmeden kullanılmayan CharStrings'leri PFB, PDF bölünmüş binary veya hex PFA verisi olarak yeniden yazar

Seçenekler

AlanVarsayılanAnlam
MinimumSavingsBytes1Bir aday benimsenmeden önce gereken en düşük kodlanmış stream küçülmesi
EnforceSignaturePermissionsTrueBelge bir signature field içerdiğinde tüm yeniden yazmaları reddeder
IncludeFormXObjectsTrueÇağrılan iç içe Form XObject'leri izler
IncludeAnnotationAppearancesTrueAnnotation appearance stream'lerini ve durumlarını izler

Sonuç ve güvenlik

Dönüş değeri yeniden yazılan gömülü font programlarının sayısıdır; AInfo ise tarama kapsamını, mapping veya decode hatalarını, kullanılan glyph'leri, byte tasarrufunu ve signature sonuçlarını raporlar

Erişilebilen herhangi bir kod map edilemiyorsa, formatı desteklenmiyorsa, subset'leme başarısız oluyorsa veya kodlanmış aday tasarruf eşiğini tutturamıyorsa font programı byte byte olduğu gibi bırakılır

Type 1 yeniden yazımı; birden çok binary PFB segmenti, ayrıştırılamayan bir explicit simple-font encoding'i, eksik istenen glyph adı veya desteklenmeyen bir CharString düzeni durumunda güvenli tarafta kalıp başarısız olur; bilinmeyen COLR sürümleri ve sparse outline tablosu olmayan sfnt programları da değişmeden kalır

Tüm adaylar değişiklik yapılmadan önce analiz edilir ve varsayılan signature politikası, RefusedBySignaturePolicy ayarlı olarak sıfır döndürür; politikayı devre dışı bırakmak yeniden yazmaya izin verir ve imzalı bir belge değiştiğinde SignaturesInvalidated ayarlanır

Örnek

var
  Info: THPDFLoadedFontSubsetInfo;
begin
  PDF.LoadFromFile('input.pdf');
  if PDF.SubsetLoadedFonts(Info) > 0 then
    PDF.SaveToFile('subset.pdf');
end;

Kaynak ve Görsel Optimizasyonu