Semantik Perenderan Lanjutan

Perenderan halaman yang dimuat mempertahankan status Form XObject bertingkat sambil menerapkan grup transparansi, soft mask, prosedur glyph Type 3, dan decoding region gambar terlihat yang sadar resolusi

Stroke path putus-putus

Perenderan path native mempertahankan array dash yang lengkap beserta phase-nya, termasuk array berpanjang ganjil, panjang fraksional, dan dash berpanjang nol yang tetap dicat dengan cap round atau square; pola dash dimulai ulang di setiap subpath

Stroke warna solid dan clip stroke berpola gradien berbagi satu path geometri dash yang terbatas, mempertahankan join di dalam bagian tercat yang berkesinambungan, dan menyambung bagian tercat melintasi titik awal kontur tertutup

Panjang dash mempertahankan skala transformasi rata-rata milik renderer, sementara pemecahan kurva memakai flattening device-space adaptif; pengisian fill dan clipping yang tertunda tetap memakai path asli yang belum dipecah

Grup transparansi

Soft mask

Fungsi transfer dan sampled

/TR2 diutamakan daripada /TR, satu fungsi berlaku untuk setiap saluran keluaran RGB, dan array empat fungsi menerapkan tiga entri pertamanya secara independen sambil mempertahankan entri /Identity dan /Default

Menerapkan status transfer baru menggantikan setiap saluran secara atomik, sehingga entri identitas tidak dapat mewarisi nilai lookup dari status grafis sebelumnya

Fungsi sampled Type 0 mendukung satu hingga empat dimensi input dan output, nilai /BitsPerSample 1, 2, 4, 8, 12, 16, 24, dan 32, pemetaan /Encode terbalik atau maju, rentang /Decode independen, interpolasi multilinear, interpolasi kubik multidimensi, dan spline kubik alami untuk data /Order 3 satu dimensi

Byte sampel yang didekode, dimensi tervalidasi, pemetaan, dan turunan kubik berbagi LRU delapan entri yang dibatasi 64 MiB per thread perenderan, sementara fungsi yang terlalu besar atau salah bentuk gagal tanpa mengganti sebagian tabel lookup transfer aktif

Layar halftone

Array ambang Type 6, Type 10, dan Type 16 dieksekusi langsung dengan panjang terdekode yang tepat, ambang 16-bit big-endian, perbandingan komponen aditif, dan strip periodik ringkas yang menghindari memperluas layar miring atau dua persegi panjang

Dictionary Type 5 memilih layar /Red, /Green, dan /Blue independen dengan fallback /Gray dan /Default yang diperlukan, sementara setiap layar terpilih dapat menimpa fungsi transfer global

Byte ambang tervalidasi dan geometri ternormalisasinya berbagi LRU 64 entri yang dibatasi 64 MiB per renderer, dan dimensi yang salah bentuk, alokasi berlebihan, dictionary Type 5 bertingkat, atau ketidakcocokan panjang payload meninggalkan status layar aktif lengkap dalam mode continuous-tone

Glyph Type 3

CharProc Type 3 berjalan melalui mesin operator konten lengkap dengan cakupan resource dictionary font saat ini, dukungan Form, kliping, gambar, pola, dan rekursi yang dibatasi

d0 dan d1 menyediakan metrik glyph sementara prosedur d1 mempertahankan warna pilihan pemanggil sesuai yang disyaratkan model pencitraan PDF

CharProc berulang menggunakan kembali display list yang didekode dan ditokenisasi ketika font, glyph, matriks perangkat linier, dan status warna cocok; translasi tetap dinamis sehingga karakter berulang pada posisi berbeda berbagi satu entri

LRU per renderer mempertahankan paling banyak 256 entri dan 131.072 token, melewati CharProc apa pun di atas 16.384 token, dan melaporkan perilakunya melalui GetLastType3GlyphCacheStats

Region gambar terklip dan diperkecil

XObject gambar yang sejajar sumbu hanya meminta batas sumber terlihat dan meneruskan ukuran piksel perangkat terlihat ke jalur dekode

Gambar dengan soft mask didekode utuh pada ukuran saat digambar, dan mask-nya pada ukuran yang sama, sehingga mask tetap sejajar dengan gambar sementara clipping membatasi apa yang dicat; mask JPEG memakai dekoder DCT ukuran-diperkecil

Saat merender, region terdekode yang berukuran setidaknya dua kali ukuran gambar pada kedua arah diperkecil tepat ke ukuran gambar dengan perataan area sebelum digambar atau di-cache; gambar besar yang digambar kecil lalu muat di cache dekode, sehingga grup yang digambar dua kali atau halaman berulang memakai ulangnya, dan soft mask-nya diterapkan piksel demi piksel pada ukuran tersebut. Mask image stencil mempertahankan resolusi penuhnya, dan metode dekode region publik mengembalikan ukuran yang terdokumentasi

JPEG 2000 menggabungkan API region native decoder dengan tingkat resolusi pangkat dua yang dipilih untuk memenuhi kedua dimensi target sebelum rekonstruksi wavelet dan ekspansi raster

Codestream JPEG 2000 yang dapat dialamatkan per tile juga dapat mendekode satu tile tervalidasi secara langsung melalui THPDFJpeg2000Decoder.LoadTileFromByteArray, dengan metadata grid tile dan batas byte keluaran yang diekspos oleh decoder

Ketika region native berpotongan dengan beberapa tile independen, LoadRegionFromByteArrayParallel menetapkan status OpenJPEG privat per worker dan menyusun raster yang selesai dalam urutan row-major yang deterministik; pembatalan, batas keluaran, dan anggaran memori puncak efektif dapat menghentikan penjadwalan atau memilih fallback sekuensial

Region := PDF.DecodeLoadedImageRegion(ImageStream, 128, 64, 640, 480);
try
  Canvas.Draw(0, 0, Region);
finally
  Region.Free;
end;

API terkait