Native Linux Cairo renderer

HPDFHeadlessCairoDevice, bir yüklenmiş PDF sayfasını Cairo image surface'leri ve FreeType ile RGB PNG'ye render eder — display sunucusu veya PDF reader olmadan

THPDFHeadlessDocument.GetRenderAccess(PageIndex)'ten seri bir ödünç view sağlayın ve rendering dönene kadar o belgeyi yüklenmiş ve değişmemiş tutun

Document := THPDFHeadlessDocument.Create;
try
  Document.LoadFromFile('input.pdf');
  Options := THPDFHeadlessRenderOptions.Default;
  Info := HPDFRenderHeadlessPagePNGFile(
    Document.GetRenderAccess(0), 'page.png', Options);
finally
  Document.Free;
end;

Runtime bağımlılıkları

Native Linux, libcairo.so.2'yi, libfreetype.so.6'yı ve standart-yazı-tipi provider'ının Fontconfig bağımlılığını kullanır; Helvetica, Times ve Courier substitution'ı için uygun yazı tipleri kurun

HOTPDF_CAIRO_LIBRARY ve HOTPDF_FREETYPE_LIBRARY, ilk render'dan önce açık uyumlu kütüphane path'leri seçebilir; başarılı modüller yüklü kalır — çünkü native yazı-tipi cache'leri yok etme callback'lerini tutabilir

Host, o native cache'ler HotPDF yazı-tipi-yok-etme callback'lerini tutabilecekken kendi HotPDF executable'ını, DLL'ini veya paket kodunu yüklü tutmalıdır; cache lifetime'ından bağımsız bir host modülünü kaldırmak bu profilin dışındadır

Windows, aynı köprü üzerinden uyumlu libcairo-2.dll ve libfreetype-6.dll kullanır; runtime binary'leri ve lisanslamaları uygulamaya aittir

ICCBased renkler, ayrıca liblcms2.so.2 yükler; JPEG libturbojpeg.so.0 kullanır ve JPEG 2000, OpenJPEG 2.5-uyumlu bir libopenjp2.so.7 kullanır; bu bağımlılıklar, yalnızca karşılık gelen girdiler için yüklenir

HOTPDF_LCMS_LIBRARY, HOTPDF_TURBOJPEG_LIBRARY ve HOTPDF_OPENJPEG_LIBRARY bu path'leri geçersiz kılar; Windows default'ları lcms2.dll, turbojpeg.dll ve openjp2.dll'dir

Rendering profili

Desteklenen içerik, path kurma ve boyamayı, nonzero ve even-odd fill kurallarını, clipping'i, iç-ice graphics state'i, CTM transform'larını, satır style'ını, DeviceGray/RGB/CMYK renklerini, normal alpha'yı ve kendi kaynakları, Matrix ve BBox'ıyla tekrar Form XObject'leri içerir

Satır genişlikleri sıfır olabilir: 0 w veya ExtGState LW=0 tarafından istenen PDF hairline'ları tek-piksel device-space stroke kullanır; negatif genişlikler reddedilir

ExtGState D ve content-stream d operator'ü sınırlı dash doğrulamasını paylaşır: solid boş pattern'ler, tek-uzunluklu tekrarlar, sıfır-uzunluklu entry'ler, kesirli uzunluklar ve imzalı phase'ler desteklenir

Bir dash pattern, 1e9'a kadar en fazla 256 sonlu negatif-olmayan uzunluk kabul eder — boş-olmadığında en az bir pozitif uzunluk ve mutlak değeri en fazla 1e9 olan sonlu bir phase ile; her element operation işi tüketir ve geçici depolama working-byte kabulüne katılır

Operand array'leri, sayısal dash array'leri ve TJ metin array'leri dâhil PDF comment'leri kabul eder; bozuk lexical value'lar ve eksik kapanış köşeli parantezleri, sessizce kaybolmak yerine paylaşılan scanner tarafından tutulur ve renderer tarafından reddedilir

Yatay metin, metin matrix'leri, açık PDF genişlikleri, kanonik Helvetica/Times/Courier advance'leri, character ve kelime boşluğu, yatay ölçek ve TJ ayarlamaları için paylaşılan glyph interpreter'ı kullanır

Gömülü desteklenen yazı tipi programları, çözümlenmiş glyph ID'lerle FreeType kullanır; Unicode ToUnicode eşlemeleri belge metin API'si üzerinden kullanılabilir kalırken, standart-yazı-tipi raster şekilleri kurulu substitute'lara dayanır

Composite metin, Identity-H'yi, Identity-V'yi, açık gömülü encoding CMap stream'lerini ve built-in UniJIS, UniGB, UniCNS ve UniKS UCS2/UTF16 yatay ve dikey eşlemelerini destekler; ayrı kurulmuş CMap kaynakları gerekmez

Dikey glyph boyama, default ve açık DW2/W2 konumlandırma vektörlerini, text rise'ı, yatay ölçeği, metin ve grafik matrix'lerini ve TJ yer değiştirmesini onurlandırır; UTF-16 eşlemeleri supplementary character kodlarını kabul eder

Sekiz metin rendering modunun tümü desteklenir — ET'te clip'e biriken dikey fill/stroke/görünmez outline'lar dâhil; gömülü encoding CMap stream'leri kendi WMode'larını ve nonidentity CID eşlemelerini korur

Saydam birleşik fill-and-stroke operation'ları, fill'in stroke'a sızmasını önlemek için object knockout compositing kullanır; Type3 glyph procedure'leri kendi sınırlı kaynaklarını ve font matrix'lerini yürütür

Görseller, 1/2/4/8/16-bit örnekleri ve Decode array'lerini, stencil'i, açık, color-key ve soft mask'leri, farklı boyutlu mask'leri ve Matte recovery'yi kabul eder; eksik Interpolate, nearest-neighbor örnekleme kullanır ve true bilinear örnekleme seçer

JPX codestream'leri, karışık hassasiyeti, subsampling'i ve açık opaklığı — 26 bite kadar — imzalı veya imzasız kaynak bileşenleri olarak kabul eder ve sınırlı 8 veya 16-bit örneklere normalize eder; JPX görselleri için image dictionary BitsPerComponent'ı ve stencil-olmayan Decode entry'leri PDF image profilinin gerektirdiği gibi yok sayılır

Indexed paletler ve doğrulanmış ICCBased profile-to-sRGB transform'ları görseller ve path renkleri için desteklenir; profilsiz DeviceCMYK, basit device dönüşümünü korur

ICCBased transform'lar, Gray, RGB, CMYK, Lab ve XYZ profile signature'larını kabul eder ve bildirilen bileşen sayısını ve bileşen aralıklarını katı şekilde doğrular

Lab profile operand'ları, default aralıklarla [0 100 -128 127 -128 127] fiziksel L a b koordinatları kullanır; XYZ operand'ları, bileşen başına default imzasız 1.15 aralığı [0 65535/32768] ile fiziksel X Y Z koordinatları kullanır

XYZ profile girdileri, native bir uyumluluk uzantısıdır ve archival PDF uyumunu ima etmez; Lab ve XYZ kaynak profilleri, desteklenen bir saydamlık blending uzayı seçmez

Bir ICC stream'inin Range'i, bileşen başına iki sonlu sıralı value gerektirir ve renk operand'larını sınırlar; ham görsel Decode default'ları ve Indexed lookup value'ları o bileşen aralıklarını kullanır

CalGray, CalRGB ve Lab, path'leri, metni, görselleri ve Indexed palet bazlarını destekler; parametreler katı doğrulanır, CalRGB Matrix entry'leri PDF kolon sıralamasını izler ve Lab bileşenleri ile görsel Decode default'ları bildirilen aralıkları kullanır

CIE renkleri, Bradford kromatik adaptasyonu ve göreli sRGB output kullanır; BlackPoint metadata'ısı doğrulanırken, ek black-point kompanzasyonu ve rendering-intent state politikaları ayrı uzantılar olarak kalır

Separation ve DeviceN composite renkleri, path'ler, metin, Indexed bazları ve paketlenmiş görseller için bir ile otuz iki arasında tint bileşeni korur; device veya CIE alternatif renkleri, sınırlı örnekleme, üstel, stitching veya hesap makinesi tint function'ları kullanır

ICCBased Lab/XYZ ve CalGray/CalRGB/Lab alternatif renk kaynakları, desteklenen bir saydamlık grubuna dönüştürmeden önce fiziksel koordinatlarını tint transform'u boyunca korur

Çok boyutlu örnekleme tint function'ları, doğrusal ve kübik enterpolasyonu, Domain'i, Encode'ı, Decode'u, output Range'i ve 32 bite kadar paketlenmiş örnek derinliklerini destekler; kübik değerlendirme, mevcut scalar dört-knot konvansiyonunu tensor çarpımlarıyla genişletir — kısa boyutlar için doğrusal fallback ve sınırlı iş ve cancellation ile

Enterpolasyon konvansiyonları ve ayrı formül ve reader kanıtları için bkz. Native örnekleme renk function'ları

Sadece None renk kapsayan Separation None ve DeviceN uzayları ne renk ne knockout şekli katkıda bulunur; karışık None bileşenleri yine de alternatif tint transform'a ulaşır

Separation All, tint'ini her mevcut output renk kabına uygular — nötr RGB sayfa output'u kullanarak ve CMYK grupları içindeki her process bileşenini koruyarak

CMYK grupları, blending'den önce orijinal dört-bileşenli alternatif tint value'ları alır; spot separation plakaları, NChannel process/renk-kabı seçimi ve mixing-hint simülasyonu ayrı uzantılar olarak kalır

Terminal görsel callback'i, native JPEG, JPEG 2000, CCITT veya JBIG2 decoding'den önce belge decryption'ını ve önceki stream filter'larını korur; JBIG2, aritmetik ve Huffman metnini, MMR'i ve paylaşılan global dictionary'leri destekler

JPEG 2000, subsampled ve imzalı bileşenleri, çıkarılan renk ve örnek bildirimlerini, gömülü ICC profillerini, açık renk-uzayı override'larını ve SMaskInData üzerinden ayrı veya ilişkili opaklığı destekler; bileşen value'ları sekiz veya on altı bite normalize edilir ve görsel Decode array'i yok sayılır

Gömülü veya açık Lab/XYZ ICC profilleri fiziksel bileşen aralıkları kullanır; ilişkili opaklık, fiziksel koordinat eşlemesini uygulamadan önce normalize edilmiş saklanan örneklerden kaldırılır — Lab offset kanallarını koruyarak

Graphics-state SMask, Alpha ve Luminosity gruplarını, arka plan renklerini, Form matrix'lerini, saved-state restoration'ı ve örneklenmiş, üstel, stitching ve sınırlı hesap makinesi transfer function'larını destekler; bir görselin kendi soft mask'i, graphics-state soft mask'ini geçersiz kılar

On altı standart PDF blend modunun tümü desteklenir; Form ve sayfa grupları, isolated ve nonisolated kompozisyonu, object knockout'u ve DeviceGray, DeviceRGB, DeviceCMYK, CalGray, CalRGB veya tek-, üç- ve dört-bileşenli ICCBased blending uzaylarını destekler

Kalibre gruplar, native bileşen value'larını bir grup sınırına kadar tutar ve device veya Lab kaynak renklerini ters kalibre transform'lar üzerinden kabul eder; Lab'in kendisi geçerli bir blending uzayı değildir

Kalibre Luminosity mask'ler grup koordinatlarını korur ve transfer function'ını uygulamadan önce CIE XYZ-Y'yi — grup opaklığı ve arka plan renkleri dâhil — değerlendirir

Knockout compositing, object'in geometrik şeklini soft-mask opaklığından ayrı tutar; stencil delikleri önceki object'leri korurken, maskeli bir path, boyanmış geometrisi boyunca onları değiştirir

İç-ice knockout grupları, children'larının geometrik şekillerinin — sıfır-opaklık object'ler dâhil — birleşimini tutar; nonisolated child gruplar, kapsayan knockout grubunun başlangıç arka planını kullanır

CMYK grupları, tamamlayıcı CMY ve siyah bileşenlerini ayrı sınırlı görsel düzlemlerde korur ve birleşik sonucu grup sınırlarında dönüştürür; ayrılamaz blend modları, seçilen mode'a göre siyahı korur veya değiştirir

Nonisolated gruplar, ek sınırlı bir opaklık geçişi render eder, başlangıç arka plan katkısını kaldırır ve gelen grup alpha'sını ve blend modunu bir kez uygular; sayfa saydamlık grupları, sayfa arka planına kompoze etmeden önce isolated bir surface kullanır

Nonisolated bir Form, kapsayan blending uzayını kalıtır; açık bir grup CS entry'si, başlangıç arka planını başka bir uzaya geçirtmez

Mevcut normal anotasyon görünümleri, dönüştürülmüş BBox'larından Rect'lerine sığdırılır; RenderAnnotations=false, her iki usage'da görünümleri atlar

Usage, hruView'e default'ludur — Hidden ve NoView anotasyonlarını ve Invisible set'li bilinmeyen anotasyon türlerini atlar; yalnızca Invisible set'liyken, desteklenen normal görünlümü ISO 32000 standart anotasyon türleri — PDF 2.0 RichMedia ve Projection dâhil — görünür kalır

RichMedia ve Projection kabulü, geçerli media asset'li veya ilişkili default 3D view'lı mevcut statik normal görünümleri kapsar; media oynatma ve interaktif 3D aktivasyon bu raster path'inin dışındadır

hruPrint, yalnızca Print set'li ve Hidden temizlenmiş anotasyonları boyar; Invisible, her iki usage'da bilinmeyen anotasyon türlerini bastırır, NoView printing'i bastırmaz ve NoZoom basılmış görünüm boyutunu değiştirmez

Normal bir görünüm eksikken, desteklenen anotasyon metadata'sı geçici bir görünümlle render edilir; geometri, Unicode FreeText, statik ikonlar ve kalan sınırlar için bkz. native anotasyon fallback

View output için, anotasyon NoZoom, UserUnit'i korurken görünüm boyutundan render ölçeğini kaldırır; NoRotate, her iki usage'da sayfa rotasyonu boyunca sığdırılmış görünümü dik tutar ve ikisi de dönüştürülmüş üst-sol Rect çapasını ve sayfa clip'ini korur

Mevcut normal görünlümü metin anotasyonları, açık flag'lerinden bağımsız olarak view output'ta NoZoom ve NoRotate davranır; print output, NoZoom'u yok sayarken NoRotate davranışlarını korur

Usage, statik raster görünürlüğünü ve anotasyon geometrisini kontrol eder; yalnızca-etkileşim flag'leri hover veya editing davranışı oluşturmaz ve mevcut extraction-izin callback'i, print izni vermeden zorunlu kalır

Statik output'ta optional content

Rendering, catalog'un default OCProperties/D yapılandırmasını tüketir, grup state'lerini BaseState'ten başlatır, ON ve OFF override'larını uygular ve görünürlüğü belirlerken eşleşen Intent value'larını kullanır

Üyelik dictionary'leri, AnyOn, AllOn, AnyOff ve AllOff destekler; özyinelemeli VE ifadeleri, VE daha basit politikaya üstünlük vermekle And, Or ve tek-operand'lı Not destekler

Null, kullanılamayan ve bayat grup referanslarının üyelik effect'i yoktur; yapılandırmanın intent'lerinin dışındaki gruplar görünürlüğü kontrol etmez ve uygulanabilir grupları olmayan bir üyelik veya ifade, içeriği görünür bırakır

İç-ice /OC marked content, görsel ve Form XObject'ler ve anotasyonlar, sonuçlanan state'e saygı duyar; gizli marked bölüm hâlâ renkleri, matrix'leri, clipping'i ve metin konumunu güncellerken, gizli bütün XObject'ler ve anotasyonlar atlanabilir

Sıradan marked-content property dictionary'leri — iç-ice inline value'lar dâhil — kullanılabilir kalır; content array'leri, marked-content state'ini bileşen stream'leri boyunca korur ve child stream'ler kendi marked-content nesting'ini tutar

Bağımsız final-form rasterization, hem view hem print mode'larında — ISO 32000-1:2008 8.11.4.5 bölümünün belirttiği gibi — interaktif AS usage önerilerini otomatik uygulamadan default yapılandırmayı kullanır; açık ViewerState, kalıcı manuel seçim ve geçici event state'iyle View, Print, Export, Zoom, Language ve User önerilerini etkinleştirir

Eksik optional-content özellikleri veya nil bir ödünç catalog, optional-content yapılarına görünürlük effect'i bırakmaz; bozuk canlı üyelikler, ifade cycle'ları ve yapılandırılmış iş, bellek veya özyineleme limitleri, PNG yayımından önce başarısız olur

Affine appearance matrix'leri ve nonzero BBox kökenleri, bu flag'ler altında normal fit'lerini korur; aşırı küçük bir render ölçeği, yine de Cairo'nun başlangıç sayfa matrix'ini sayısal olarak noninvertible yapabilir

Render edilen sayfa, MediaBox/CropBox kesişimini, kalıtılan sayfa kutularını ve çeyrek-dönüş Rotate'i ve sayfanın UserUnit'ini kullanır; ölçek 1, etkin sayfa punto'su başına bir piksel üretir ve surface boyutları yukarı yuvarlanır

sh operator'ü, iki-girdili domain'ler, shading matrix'leri, radial-circle seçimi, Extend uçları, BBox ve mevcut path clip'leriyle function-based, axial ve radial shading'leri boyar (ShadingTypes 1–3)

Desteklenen renk function'ları ve scalar function array'leri, device, kalibre, ICC Lab/XYZ ve Separation/DeviceN kaynak renkleri üzerinden dönüştürür; mevcut fill opaklığı, blend modları, graphics-state soft mask'leri ve transparency-group knockout, sonuçlanan shading'e uygulanır

Mevcut path ve renk korunur; shading Background, sh tarafından yok sayılır ve AntiAlias, piksel-merkezi renk örneklemeyle bir device ipucudur

Desteklenmeyen ExtGState entry'leri ve desteklenmeyen content operator'leri bu profilin dışında kalır

Üçgen mesh shading'leri

ShadingTypes 4 ve 5, edge yeniden kullanımı, keyfi lattice geometrisi, byte-hizalı vertex kayıtları, 32 bite kadar koordinat hassasiyeti ve 16 bite kadar bileşen hassasiyetiyle free-form ve lattice Gouraud üçgen mesh'leri boyar

Vertex bileşenleri, renk dönüşümünden önce device piksel merkezlerinde enterpole edilir; opsiyonel tek-girdili bir function veya bileşen function array'i, kalibre, ICC ve özel renk uzayları dâhil enterpole edilen parametreyi değerlendirir

Indexed kaynaklar, enterpole edilen indeksleri en yakın palet entry'sine yuvarlar; onaltılık lookup string'leri whitespace, karışık-büyük-küçük-harf digit'leri ve tek final nibble padding'iyle bir kez decode edilirken, literal lookup string'leri decoded baytlarını korur

Mevcut transform'lar, clipping, BBox, fill opaklığı, blend modu, soft mask'ler, nonmarking renk kapları ve grup knockout, tamamlanan mesh'e uygulanır; tutulan stream baytları, geçici sayfa surface'i ve iki lattice satırı, working-memory kabulüne katılır

Vertex parsing, üçgen rasterization ve function'lar, toplam operation'ları ve cancellation polling'ini paylaşır; bozuk veya kesilmiş kayıtlar ve eksiksiz lattice satırları, output yayımından önce başarısız olur

Odaklı kabul, kapalı barycentric eşitlikleri ve ayrı MuPDF ve Poppler output'u denetler; kanıt kayıtları, vertex padding'i, kullanılmayan flag bit'lerini ve mesh saydamlığını kaynak-reader başarısızlıkları olarak ayrı tutar ve nonmarking renkler ve normalize edilmiş Indexed value'lar için açık alternatif reader eşitlikleri kullanır

Coons ve tensor patch mesh'leri

ShadingTypes 6 ve 7, önceki-edge yeniden kullanımı, byte-hizalı kayıtlar, düşük-iki-bit flag semantiği ve üçgen mesh'lerle aynı koordinat ve bileşen hassasiyetleriyle kübik Coons sınırlarını ve tensor kontrol ağlarını boyar

Köşe bileşenleri, opsiyonel function'lar ve renk dönüşümünden önce patch parametrelerinde bilinear enterpole edilir; Coons sınırları, eşdeğer bir bicubic Bernstein ağına yükseltilir — onun ikinci-türev sınırları, en fazla 0.125 output-piksel geometri hatasıyla subdivisions seçer

Polinom inversions, piksel parametrelerini rafine eder; katlanmış coverage, eşit v için en büyük v parametresini ve ardından en büyük u parametresini seçerken, sonraki patch'ler, tamamlanan shading object saydamlığını almadan önce önceki renkleri değiştirir

Paylaşılan mesh compositor'ı, clipping'i, BBox'ı, shading pattern'lerini, nonmarking renk kaplarını, opaklığı, blending'i, soft mask'leri ve grup knockout'u uygular; iki subdivision satırı ve piksel-başına parametre ve sıra array'leri, aktif working-byte kabulüne katılır

Kontrol-noktası parsing'i, subdivision, rasterization ve renk function'ları, operation limitlerini ve cancellation'ı paylaşır; odaklı kabul, katlanmış patch'ler için bağımsız Coons ve tensor eşitlikleri ve kübik kökler kullanır ve kaynak-reader başarısızlıklarını sıradan RGB equation-sayfası doğrulamasından ayrı kaydeder

Kalıtılan metin state'i

Form, Type3 ve pattern child stream'leri, başlangıç graphics state'lerinden geçerli font object'ini, yazı tipi boyutunu, character boşluğunu, kelime boşluğunu, yatay ölçeği, leading'i, rendering modunu ve rise'ı kalıtır; aynı font adına sahip bir child kaynağı, yerel bir Tf onu seçene kadar kalıtılan bir yazı tipini değiştirmez

Saved graphics state, metin parametrelerini geri yükler ve TD ve çift-quote operator'leri, sonraki child stream'ler için leading ve boşluk değişikliklerini tutar; her child, kendi metin matrix'leriyle başlar

Bağımsız anotasyon görünümleri, sayfa içeriğinin nihai metin state'ini tutmadan default metin parametrelerinden başlar

Rendering modu 3'teki Type3 metni, görünür glyph grafik katkısı taşımaz; odaklı Type3 iç-ice-metin kanıtı, MuPDF'in default-parametre sapmasını, kalıtılan-state eşitliklerinden ayrı tutarken, Poppler o fixture'larda kalıtılan parametreleri izler

Tiling ve shading pattern'leri

Pattern renk uzayları, renkli ve renksiz tiling pattern'leri, TilingType 1–3, shading pattern'leri, PatternMatrix, hücre BBox, pozitif veya negatif boşluk, pattern seçimi, saved-state restoration ve fill veya stroke boyamayı destekler

Renksiz pattern'ler bileşenlerini desteklenen bir temel renk uzayından alır ve image stencil boyayabilir; renksiz bir tanım içindeki açık renk değişiklikleri, renkli görseller ve doğrudan shading'ler geçersiz PDF içeriğidir ve iç-ice Form'lar ve Type3 procedure'leri üzerinden de reddedilir

Seçili pattern'ler, tanımlarını çözümlleyen content stream'in default koordinat uzayını korur; sonraki cm operation'ları ve Form içinde kullanılan kalıtılan bir pattern o kökeni değiştirmez

Tanımlar, parent'ın başlangıç desteklenen graphics state'iyle ve default saydamlık parametreleriyle başlar; tiling tanımları, nonisolated bir non-knockout grup oluştururken, shading tanımları object knockout kullanır

Saydam ve üst üste binen tiling hücreleri, mevcut arka plana karşı değerlendirilir; gelen object alpha'sı ve blend modu, tamamlanan pattern boyanırken bir kez uygulanır — iç-ice pattern'ler, metin, stroke'lar ve görsel mask'leri dâhil

Shading-pattern ExtGState, opaklık ve soft mask'ler dâhil desteklenen shading parametrelerini zenginleştirir; Background, shading'den önce boyanır, BBox her iki katkıyı kırpır ve nonmarking None renkleri ne renk ne şekil katkıda bulunur

Pattern değerlendirmesi, iki sayfa surface'ini ve decoded hücre içeriğini kabul eder, görünen hücre numaralandırmasını mevcut clip'e sınırlar ve hücreleri render ederken ve arka plan katkısını kaldırırken cancellation poll eder

Odaklı fixture'lar, kapalı koordinat, renk ve kompozit eşitliklerini native piksellerle ve bağımsız reader output'uyla karşılaştırır; kanıt dosyaları, kalıtılan Form pattern kökenleri, shading-pattern ExtGState opaklığı ve nonmarking None renkleri için reader farklarını tutar — o case'ler için ayrı sıradan vektör eşitlik sayfalarıyla

CID-keyed CFF yazı tipleri

Gömülü CIDFontType0 yazı tipleri, gerçek CFF CID'lerini bağımsız ve OpenType container'larında çözümler — nonidentity eşlemeleri, CID 65535, gömülü Encoding CMap'leri, dikey W2 kökenleri, dönüştürülebilir outline'lar ve metin clipping'i dâhil

Bağımsız CFF yüzler, CID ile yüklenir ve SFNT-sarılmış yüzler, kompakt glyph indeksiyle yüklenir; köprü, Linux LP64 ve Windows LLP64 için doğru FreeType yüz layout'unu kullanır

Map edilmemiş bir character kodu veya olmayan istenen CID, orijinal kod için notdefchar ve notdefrange'e başvurur ve replacement yoksa zorunlu CID 0 glyph'ini kullanır; range'ler sabit CID hedeflerine sahiptir ve character entry'leri üstünlük verir — mevcut glyph'ler istenen CID'lerini korurken

Odaklı kabul, 28 geçerli kaynak için bildirilmiş poligon konturları ve köken eşitlikleri kullanır; ayrı MuPDF ve Poppler karşılaştırmaları ve sıradan RGB eşitlik sayfalarıyla

Kanıt dosyaları, CID-keyed OpenType glyph seçimi ve atlanan notdef substitution'ları için kaynak-reader farklarını tutar; atlanma alternatifi ayrı ölçülür ve zorunlu native kaynak eşitliğinin yerine geçmez

Sınırlar ve cancellation

Kesin built-in Type0 encoding'leri, 200 paketlenmiş encoding adının tümünü kapsar: Identity-H ve Identity-V, on altı UCS2 ve UTF16 eşlemesi ve düzleştirilmiş dikey character override'larla 182 ek legacy ve Unicode map'i

Karışık tek-bayttan dört-bayta operand'lar, per-byte codespace sınırları ve en-uzun-prefix geçersiz-kod recovery'si kullanır; UTF8 ve UTF32 decoding'i ve ters encoding, supplementary scalar'ları ve önemli baştaki sıfır baytları korur

Encoding ve ToUnicode stream'leri, dictionary üstünlüğüyle ve lokal character, range, Unicode-sequence ve notdef override'larıyla body usecmap'ini ve dictionary UseCMap adlarını veya stream'lerini çözümler

Her child CMap, kendi writing modunu tutar — WMode atlandığında yataya default'lu; açık dikey mod, kalıtılan eşlemeleri ve yazı tipinin dikey metriklerini seçer

CMap kalıtımı, THPDFCMapBounds layout'unu değiştirmeden thread-lokal iç-ice depth limitleri kullanır; cycle'lar, bozuk parent'lar ve aşırı depth, output yayımından önce başarısız olur ve finally block'ları, cancellation veya exception'lardan sonra limitleri geri alır

Odaklı kanıt, o built-in tabloları olmayan bağımsız bir reader'da adlandırılmış UTF8 ve UTF32 kaynak başarısızlıklarını tutar, ayrı gömülü-map eşlikçilerini doğrular ve birden çok kodun aynı CID'i seçtiğinde kaynak metin farklarını kaydeder

Tests/Linux/Run-HeadlessLegacyCMapAcceptance.sh, native Linux'ta kesin encoding interval'lerini, karışık-genişlikli kaynak PDF'leri, iç-ice rendering'i, thread izolasyonunu ve cancellation recovery'sini derler ve test eder

Tests/Linux/Run-HeadlessLegacyCMapWindowsAcceptance.py, eşleşen native Windows executable'larını çalıştırır, kaynak, binary, PNG ve diagnostic hash'lerini kaydeder ve ardından sabit yakalamaları ayrı MuPDF ve Poppler denetimleri için native Linux depolamasına aktarır

Paketlenmiş map'ler, kendi kaynak hash'lerini ve eksiksiz redistribution bildirimlerini korur; CMap data lisansını kaynak ve binary dağıtımlarla birlikte saklayın

PDF ad value'larındaki ve content ad operand'larındaki onaltılık escape'ler, yazı tiplerini, renk uzaylarını, blend modlarını ve kaynakları çözümllemeden önce bir kez decode edilir; decoding'in ürettiği literal hash, semantik adın parçası kalır

Paylaşılan yazı tipi decoder'ı, bu semantiği font dictionary value'larına, adlandırılmış encoding'lere, Differences glyph adlarına ve CIDToGIDMap'e uygular — ödünç object'leri değiştirmeden veya string value'larını decode etmeden

Escape'li renderer adları, doğrusal decoding, geçici working-byte kabulü, toplam operation limitleri ve cancellation polling kullanır; odaklı kabul, eşdeğer native PNG baytlarını ve metni, bağımsız MuPDF ve Poppler output'uyla karşılaştırır

Shading raster işi ve renk function'ları, toplam operation limitlerini ve cancellation polling'ini paylaşır; geçici surface ve en fazla 8.192 dönüştürülmüş renkli kesin-koordinatlı bir cache, aktif working-byte kabulüne katılır

Odaklı shading kabulü, kapalı geometri/function/renk eşitlikleri ve ayrı vektör eşitlik sayfaları kullanır — BBox clipping'i, dejenere geometri, renk dönüşümü, özel renk-kabı adları ve knockout tessellation için kaynak-reader farklarını tutarak

Options, surface piksellerini, aktif yönetilen buffer'ları, kümülatif decoded baytları, kodlanmış PNG baytları, token ve operator işini ve özyinelemeli veya graphics-state depth'ini sınırlar

Yazı tipi decoding, muhafazakâr kabul ödeneği kullanır: 32 MiB geçici kapasite, decoded font-stream boyutunun 64 katı, özyinelemeli denetlenen array slot'larının 128 katı ve aktif toplamdaki tutulan decoder tahmininin iki katı

CID tabloları, 65.536 tutulan entry kabul eder; numaralandırma gerçek charstring'leri sınırlar ve notdef array'leri decoder deep-copy ve tutulan-byte muhasebesine katılır

CMap parsing'i ve notdef araması, thread-lokal iç-ice entry sınırlarını ve iş polling'ini paylaşır; renderer scope'ları toplam token ve operation limitlerini paylaşır ve uzun lexical taramalar, en fazla her 256 baytta bir poll eder

Interpreter ayrıca, glyph kayıtları oluşturmadan önce input operand baytlarından ve en uzun ToUnicode eşlemesinden glyph-başına Unicode dizisi kapasitesi reserve eder — böylece tekrar uzun eşlemeler working-memory kabulünü bypass edemez

Küçük bir working-memory bütçesi, eventual tahsisi sığacak olsa bile basit bir yazı tipini reddedebilir; bu denetimler, yönetilen buffer'ları ve CPU image surface'lerini kapsarken, Cairo, Fontconfig, FreeType cache'leri ve toplam process RSS muhasebenin dışındadır

Saydamlık, soft-mask, arka plan, opaklık ve object-knockout surface'leri, aktif surface bütçesine katılır; transfer function'ları toplam operation bütçesini paylaşır, ICC ve görsel codec'leri muhafazakâr kabul kullanır ve native JBIG2 decoder, bitmap/context tahsisini kümülatif sınırlar ve decoding sırasında cancellation poll eder

Tamamlayıcı CMY, siyah ve geometrik şekil traversal'ları, toplam operation, decoding ve cancellation limitlerini paylaşır; aynı çözümlenmiş stream'i kullanan profiller, tek bir doğrulanmış transform'u ve aktif kabul rezervasyonunu sayfa rendering'i bitene kadar paylaşır

Tutulan function stream'leri, function değerlendirmesi ve graphics-state kayıtları, working-byte kabulüne katılır; özyinelemeli tint function'ları, çok boyutlu enterpolasyon ve hesap makinesi instruction'ları, operation ve cancellation limitlerini paylaşır

Ödünç cancellation token'ı, sınırlı decoding, tokenization, operator'ler, glyph resolver çağrıları, görsel satırları, özyineleme, PNG encoding ve yayımdan önce poll edilir; lifetime'ı çağıranına aittir

Renderer, extraction iznini ödünç belge politikası üzerinden denetler ve kaynak object value'larını ve kaynak baytlarını korur

Output ownership

HPDFRenderHeadlessPagePNG, çağıranın-sahip olduğu bir stream'e yazmadan önce rendering'i ve PNG encoding'i private tamamlar; nihai bir stream I/O başarısızlığı, zaten kabul edilmiş baytları tutabilir

HPDFRenderHeadlessPagePNGFile, kaynak identity'sini denetler, hedef dizinde münhasıran bir staging dosyası oluşturur, onu flush eder, identity ve cancellation'ı yeniden denetler ve hedefi atomik değiştirir

Windows yayımı, en fazla sekiz atomik replacement girişimi ve 1, 2, 4, 8, 16, 16 ve 16 milisaniyelik yedi bekleme kullanır — yalnızca access-denied, sharing-violation ve lock-violation hatalarını yeniden denerken; cancellation, her girişimden önce ve her beklemenin iki yanında denetlenir

Başarısız Windows yayımı, yakalanan nihai Windows hata kodunu EHPDFHeadlessRenderError üzerinden raporlar; cancellation, renderer'ın cancellation diagnostic'ini korur ve hiçbir path, mevcut hedefi silmez veya non-atomic kopyalamaya fallback yapmaz

Rendering, bütçe, cancellation ve staging başarısızlıkları, mevcut bir hedefi korur ve owned yayımlanmamış staging dosyalarını kaldırır; kaynak-path ve hardlink alias'ları reddedilir

Kabul

Windows runtime kabulü, eşleşen native console executable'larını ve izole, SHA256-pinned portable DLL import closure'ını kullanır; ayrı bir WSL process, Windows-üretilmiş PNG dosyalarına karşı bağımsız MuPDF ve Poppler piksel, eşitlik ve geometri denetimleri çalıştırır

Windows standart-yazı-tipi substitute'ları, Unicode metin ve gerçek outline'lar için — clipping ve fill-and-stroke modları dâhil — açık Cairo GDI yüzler kullanır; gömülü yazı tipleri, FreeType glyph eşlemelerini korur

OpenJPEG çağrıları, Windows stdcall ABI'sini ve Win32 decorated export'larını kullanırken, stream ve mesaj callback'leri C callback konvansiyonunu korur

Tests/Linux/Run-HeadlessCairoAcceptance.sh, taze native ELF build'leri gerçekleştirir, DISPLAY'i ve WAYLAND_DISPLAY'i temizler, doğrudan-bağlı masaüstü kütüphaneleri reddeder ve bağımsız pypdf/MuPDF oracle'ları çalıştırır

Fixture'lar, standart yazı tiplerini, Unicode TrueType'ı, Type3'ü, tüm metin rendering ve blend modlarını, alpha ve knockout'u, RGB saydamlık gruplarını, örnek derinliklerini ve Decode'u, görsel mask'leri ve Matte'yi, Indexed ve ICC renklerini, terminal codec'leri, AES-şifreli filter zincirlerini, sayfa geometrisini, anotasyon transform'larını, bütçeleri, cancellation'ı, kaynak korumasını ve atomik output'u çalıştırır

Sayaçlar için bkz. THPDFHeadlessRenderResult; hata handling için bkz. EHPDFHeadlessRenderError