Date: 2026-02-24 Purpose: Catalog remaining functional gaps beyond the high-level 99.7% operator coverage metric. Only incomplete or missing functionality is listed here.
| Limitation | Severity | Detail |
|---|---|---|
| Font hinting not applied | Low-Medium | Type 1 hint data is parsed and consumed during CharString execution but not applied to glyph outlines. Affects rendering quality at small sizes / low DPI. GhostScript also largely ignores hints for raster output, so practical impact is minimal. |
| Feature | Status | Detail |
|---|---|---|
| UseCIEColor | COMPLETE | Device color spaces remapped through Default* CIE resources when UseCIEColor is true in page device (PLRM 6.2.5). Default resources: CIEBasedA (Gray), CIEBasedABC/sRGB (RGB), pass-through (CMYK). |
| ProcessColorModel | COMPLETE | PLRM-standard name wired as fallback for ColorModel in convert_to_device_color(). All device PS files updated. |
| Color Space | Status | Impact |
|---|---|---|
| Pattern via setcolorspace | [/Pattern] setcolorspace raises UNDEFINED error (only works via name form or setpattern) |
LOW — Most documents use setpattern directly. |
| Filter | Status | Notes |
|---|---|---|
| CCITTFaxEncode | Not implemented | Encode direction (rarely needed for rendering) |
| ReusableStreamDecode | COMPLETE | Implemented with full buffering and setfileposition seek support |
| Type | Status | Detail |
|---|---|---|
| Types 2-5 | Accepted, not processed | Dictionary validation passes but no halftone-specific rendering behavior. Falls through to device defaults. |
| Types 6, 10, 16 | Accepted, not processed | Same as above |
Practical impact: Low. PostForge's raster devices (PNG, SVG, TIFF) use Cairo which handles its own halftoning, and the PDF device generates vector output directly.
settransfer, setcolortransfer, setblackgeneration, setundercolorremoval — all stored in graphics state but not applied during rendering.
Practical impact: Low-Medium. Primarily relevant for physical print devices.
- TilingType-specific pixel-grid matrix adjustment not performed (may cause subtle seam artifacts)
- PaintProc not clipped to BBox during pattern cell capture
settrapparams, currenttrapparams, settrapzone — implemented as no-ops. In-RIP trapping is for physical color separations only. Accepted without error to prevent document failures.
- IdiomRecognition user parameter (boolean, default true) — stored, no idiom matching (implementation-dependent per PLRM 3.12)
- AccurateScreens, HalftoneMode user parameters — stored, device-dependent
- LicenseID system parameter — stored, administrative
- Level 3 resource categories registered: IdiomSet, ControlLanguage, Localization, PDL, HWOptions (empty,
findresourcereturnsundefinedresourcefor missing entries)
Most PLRM-defined page device keys (MediaClass, MediaColor, MediaWeight, MediaType, InsertSheet, LeadingEdge, ManualFeed, Duplex, Tumble, Collate, NumCopies, etc.) are accepted without error but have no effect on output.
Practical impact: Low. Printer-specific parameters irrelevant to screen/file output.
| Gap | Category | Notes |
|---|---|---|
| Font hinting | Fonts | Minimal visual impact for raster output |
| Halftone Types 2-7 processing | Graphics | Only matters for physical print devices |
| Transfer function application | Graphics | Only matters for physical print devices |
| Pattern TilingType matrix adjustment | Graphics | Subtle rendering artifact |
Taking into account both operator presence AND functional completeness:
| Area | Operator Presence | Functional Completeness | Notes |
|---|---|---|---|
| Core Language | 100% | 100% | |
| Font Rendering | 100% | ~98% | Hinting not applied (minimal visual impact) |
| Font PDF Embedding | 100% | ~99% | Covers Type 1, Type 42, Type 0, CIDFont, CFF/Type1C |
| Color Spaces | 100% | ~99% | ICCBased Tier 2 + DeviceCMYK Tier 3 (ICC via lcms2); UseCIEColor + ProcessColorModel; PLRM fallback |
| Filters | ~97% | ~97% | CCITTFaxDecode + ReusableStreamDecode done; CCITTFaxEncode not implemented |
| Images | 100% | ~98% | |
| Halftones | 100% | ~30% | Only Type 1 actually processed |
| Transfer/UCR/BG | 100% | 0% (stored only) | Values stored but never applied |
| Patterns/Forms | 100% | ~95% | Minor TilingType/BBox gaps |
| Shading | 100% | 100% | |
| Resources | 100% | 100% | Level 3 categories registered |
| Page Devices | 100% | ~75% | Core keys + trapping stubs + ProcessColorModel; media params ignored |
Overall Functional Completeness: ~94%
(vs 99.7% operator presence — the gap is in depth, not breadth)