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
| Alan | Varsayılan | Anlam |
|---|---|---|
MinimumSavingsBytes | 1 | Bir aday benimsenmeden önce gereken en düşük kodlanmış stream küçülmesi |
EnforceSignaturePermissions | True | Belge bir signature field içerdiğinde tüm yeniden yazmaları reddeder |
IncludeFormXObjects | True | Çağrılan iç içe Form XObject'leri izler |
IncludeAnnotationAppearances | True | Annotation 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;