Advanced Rendering Semantics
Việc dựng trang đã nạp giữ nguyên trạng thái Form XObject lồng nhau trong khi áp dụng nhóm trong suốt, soft mask, thủ tục glyph Type 3, và giải mã vùng ảnh hiển thị có nhận biết độ phân giải
Stroke nét đứt của path
Bộ dựng path thuần giữ nguyên trọn vẹn mảng dash và pha của nó, bao gồm mảng có độ dài lẻ, độ dài phân số, và dash có độ dài bằng không nhưng vẫn được sơn với cap tròn hoặc cap vuông; dash pattern được khởi động lại tại mỗi đường con
Stroke màu đặc và clip stroke bằng gradient pattern dùng chung một đường hình học dash có giới hạn, giữ nguyên join bên trong các đoạn sơn liên tục, và nối các đoạn sơn xuyên qua điểm bắt đầu của contour kín
Độ dài dash giữ theo scale trung bình của phép biến đổi hiện tại mà renderer đang dùng, còn việc chia đường cong dùng adaptive flattening trong không gian thiết bị; phần tô và clip đang chờ vẫn dùng path gốc chưa chia
Nhóm trong suốt
- Giá trị
/Matrixcủa Form XObject được kết hợp với ma trận biến đổi hiện tại trước khi nội dung nhóm chạy - Nhóm isolated dùng một mặt phẳng alpha riêng để nội dung đen vẫn phân biệt được với pixel trong suốt
- Nhóm knockout thay thế đóng góp của nhóm trước trong các vùng sơn chồng lấn
- Nội dung nhóm bắt đầu từ blend mode Normal: blend mode, alpha hằng, và soft mask đang có hiệu lực tại
Doáp dụng cho cả nhóm - Nhóm được vẽ với blend mode khác sẽ pha trộn màu và alpha của chính nó với backdrop; nhóm không isolated mà các graphics state riêng của nó blend bình thường được vẽ trên nền đen và trên nền trắng để khôi phục alpha
- Nhóm được chia thành các tile 768 pixel có giới hạn trong khi vẽ GDI, pha halftone, nhóm lồng nhau, soft mask, và compositing giữ tọa độ thiết bị tuyệt đối
- Byte Form được giải mã và token hóa một lần trước khi thực thi tile, và các mask cục bộ tạm thời của tile được giải phóng trước tile kế tiếp
- Nhóm lồng nhau được hỗ trợ với đệ quy có giới hạn và khôi phục hoàn toàn trạng thái đồ họa sau mỗi lần gọi Form
Soft mask
- Mask
/S /Alphavà/S /Luminosityđược tính từ mask group - Mask group được vẽ với blending Normal, bất kể blend mode mà graphics state đặt mask mang theo
- Mask luminosity giải quyết
/CScủa nhóm trong suốt và đánh trọng số màu đã giải quyết bằng xấp xỉ PDF DeviceGray, như các viewer phổ biến vẫn làm; đặtRenderColorimetricLuminosityMasksđể lấy CIE Y đo màu cho các không gian dựa trên CIE thay thế /BCđược xác thực theo đúng số thành phần của không gian blend và cung cấp luminosity đã chuyển đổi bên ngoài nội dung mask đã vẽ- Sơn Separation và DeviceN được chuyển đổi qua không gian Lab hoặc ICCBased thay thế của nó để thành phần spot không bao giờ rò rỉ vào soft mask
- Hàm chuyển
/TRhỗ trợ hàm sampled, hàm mũ, stitching, và hàm máy tính PostScript qua bộ đánh giá hàm dùng chung /SMask /Nonexóa mask đang hoạt động, cònqhoặcQvẫn bảo toàn mask state như bình thường- Mask đã biên dịch chỉ được tái sử dụng khi dictionary nguồn, ma trận biến đổi hiện tại, và ý định dựng đều khớp
Hàm chuyển và sampled
/TR2 được ưu tiên hơn /TR; một hàm đơn được áp dụng cho mọi kênh output RGB, còn mảng bốn hàm thì áp dụng độc lập ba phần tử đầu tiên, đồng thời giữ nguyên các entry /Identity và /Default
Áp dụng một trạng thái chuyển mới thay thế mọi kênh một cách nguyên tử, nên các mục identity không thể kế thừa giá trị tra cứu từ trạng thái đồ họa trước đó
Hàm sampled Type 0 hỗ trợ một đến bốn chiều đầu vào và đầu ra, giá trị /BitsPerSample 1, 2, 4, 8, 12, 16, 24, và 32, ánh xạ /Encode đảo hoặc thuận, dải /Decode độc lập, nội suy đa tuyến, nội suy khối đa chiều, và spline khối tự nhiên cho dữ liệu một chiều /Order 3
Byte mẫu đã giải mã, chiều đã xác thực, ánh xạ, và đạo hàm khối dùng chung một LRU tám mục giới hạn 64 MiB mỗi luồng dựng, trong khi hàm quá khổ hoặc sai định dạng thất bại mà không thay thế một phần bảng tra cứu chuyển đang hoạt động
Màn hình halftone
Mảng ngưỡng Type 6, Type 10, và Type 16 thực thi trực tiếp với độ dài đã giải mã chính xác, ngưỡng 16-bit big-endian, so sánh thành phần cộng, và dải tuần hoàn nhỏ gọn tránh mở rộng màn hình nghiêng hoặc hai hình chữ nhật
Dictionary Type 5 chọn màn hình /Red, /Green, và /Blue độc lập với dự phòng /Gray và /Default bắt buộc, trong khi mỗi màn hình được chọn có thể ghi đè hàm chuyển toàn cục
Byte ngưỡng đã xác thực và hình học chuẩn hóa của chúng dùng chung một LRU 64 mục giới hạn 64 MiB mỗi trình dựng, và chiều sai, cấp phát quá khổ, dictionary Type 5 lồng nhau, hoặc không khớp độ dài payload để lại toàn bộ trạng thái màn hình đang hoạt động ở chế độ continuous-tone
Glyph Type 3
CharProcs Type 3 chạy qua toàn bộ engine toán tử nội dung với phạm vi tài nguyên hiện tại của font dictionary, hỗ trợ Form, clip, ảnh, pattern, và đệ quy có giới hạn
d0 và d1 cung cấp số liệu glyph trong khi thủ tục d1 giữ màu do caller chọn theo yêu cầu của mô hình ảnh PDF
CharProcs lặp lại tái sử dụng danh sách hiển thị đã giải mã và token hóa khi font, glyph, ma trận thiết bị tuyến tính, và trạng thái màu khớp; phép tịnh tiến vẫn động nên các ký tự lặp lại ở vị trí khác nhau dùng chung một mục
LRU theo trình dựng giữ tối đa 256 mục và 131.072 token, bỏ qua mọi CharProc trên 16.384 token, và báo cáo hành vi của nó qua GetLastType3GlyphCacheStats
Vùng ảnh bị clip và thu nhỏ
Image XObject thẳng trục chỉ yêu cầu các giới hạn nguồn hiển thị và truyền kích thước pixel thiết bị hiển thị vào đường dẫn giải mã
Ảnh có soft mask được giải mã nguyên khối ở kích thước mà nó được vẽ, và mask của nó ở cùng kích thước, để mask luôn khớp với ảnh trong khi clip giới hạn phần được vẽ; mask JPEG dùng bộ giải mã DCT cỡ thu nhỏ
Khi dựng, một vùng đã giải mã có kích thước ít nhất gấp đôi kích thước vẽ theo cả hai chiều sẽ được thu về đúng kích thước vẽ bằng phép lấy trung bình theo diện tích trước khi được vẽ hoặc cache; ảnh lớn được vẽ nhỏ khi đó vừa với cache giải mã, nên một nhóm được vẽ hai lần hoặc một trang lặp lại dùng lại được nó, và soft mask của nó được áp dụng từng pixel ở kích thước đó. Ảnh mask stencil giữ nguyên độ phân giải đầy đủ, và các phương thức giải mã vùng công khai trả về kích thước như đã tài liệu hóa
JPEG 2000 kết hợp API vùng nguyên bản của bộ giải mã với một mức độ phân giải lũy thừa hai được chọn để đáp ứng cả hai kích thước đích trước khi tái tạo wavelet và mở rộng raster
Codestream JPEG 2000 địa chỉ hóa tile cũng có thể giải mã trực tiếp một tile đã xác thực qua THPDFJpeg2000Decoder.LoadTileFromByteArray, với siêu dữ liệu lưới tile và giới hạn byte đầu ra do bộ giải mã cung cấp
Khi một vùng nguyên bản giao với nhiều tile độc lập, LoadRegionFromByteArrayParallel gán trạng thái OpenJPEG riêng cho mỗi worker và ghép các raster đã hoàn thành theo thứ tự hàng-cột xác định; hủy bỏ, giới hạn đầu ra, và ngân sách bộ nhớ đỉnh hiệu quả có thể dừng lập lịch hoặc chọn dự phòng tuần tự
Region := PDF.DecodeLoadedImageRegion(ImageStream, 128, 64, 640, 480);
try
Canvas.Draw(0, 0, Region);
finally
Region.Free;
end;