fullbleed 2.3.1__tar.gz → 2.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. {fullbleed-2.3.1 → fullbleed-2.4.0}/Cargo.lock +1 -1
  2. {fullbleed-2.3.1 → fullbleed-2.4.0}/Cargo.toml +1 -1
  3. {fullbleed-2.3.1 → fullbleed-2.4.0}/PKG-INFO +16 -4
  4. {fullbleed-2.3.1 → fullbleed-2.4.0}/README.md +15 -3
  5. {fullbleed-2.3.1 → fullbleed-2.4.0}/fullbleed-agent-contract.json +968 -1
  6. {fullbleed-2.3.1 → fullbleed-2.4.0}/llms.txt +2 -1
  7. {fullbleed-2.3.1 → fullbleed-2.4.0}/pyproject.toml +1 -1
  8. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed/_abi.py +15 -0
  9. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/agent_contract.py +61 -7
  10. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/cli.py +161 -152
  11. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/mcp.py +29 -1
  12. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/assets.rs +129 -1
  13. fullbleed-2.4.0/src/authoring.rs +2390 -0
  14. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/canvas.rs +139 -3
  15. fullbleed-2.4.0/src/chart.rs +1114 -0
  16. fullbleed-2.4.0/src/chart_document.rs +392 -0
  17. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/css_native.rs +8 -0
  18. fullbleed-2.4.0/src/document_metadata.rs +86 -0
  19. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/error.rs +2 -0
  20. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/flowable.rs +909 -61
  21. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/font.rs +24 -2
  22. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/html.rs +376 -96
  23. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/html_dom.rs +5 -0
  24. fullbleed-2.4.0/src/icc.rs +188 -0
  25. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/jit.rs +392 -60
  26. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/lib.rs +501 -106
  27. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/pdf.rs +1220 -167
  28. fullbleed-2.4.0/src/pdf_identity.rs +263 -0
  29. fullbleed-2.4.0/src/pdf_print_contract.rs +347 -0
  30. fullbleed-2.4.0/src/pdf_profile.rs +163 -0
  31. fullbleed-2.4.0/src/pdf_table.rs +77 -0
  32. fullbleed-2.4.0/src/pdf_vt.rs +200 -0
  33. fullbleed-2.4.0/src/pdf_vt_inspect.rs +219 -0
  34. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/pdfinspect.rs +61 -78
  35. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/python/abi_exports.rs +44 -1
  36. fullbleed-2.4.0/src/python/pdf_vt.rs +166 -0
  37. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/python.rs +174 -59
  38. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/python_abi.rs +3 -0
  39. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/raster.rs +31 -9
  40. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/spill.rs +255 -2
  41. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/style.rs +1 -1
  42. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/svg.rs +683 -78
  43. fullbleed-2.4.0/src/table_header_tests.rs +350 -0
  44. fullbleed-2.4.0/src/table_semantics.rs +455 -0
  45. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/xml.rs +11 -0
  46. {fullbleed-2.3.1 → fullbleed-2.4.0}/COPYRIGHT +0 -0
  47. {fullbleed-2.3.1 → fullbleed-2.4.0}/FONT_LICENSE_AUDIT.json +0 -0
  48. {fullbleed-2.3.1 → fullbleed-2.4.0}/FONT_LICENSE_AUDIT.md +0 -0
  49. {fullbleed-2.3.1 → fullbleed-2.4.0}/LICENSE +0 -0
  50. {fullbleed-2.3.1 → fullbleed-2.4.0}/LICENSING.md +0 -0
  51. {fullbleed-2.3.1 → fullbleed-2.4.0}/THIRD_PARTY_LICENSES.md +0 -0
  52. {fullbleed-2.3.1 → fullbleed-2.4.0}/build.rs +0 -0
  53. {fullbleed-2.3.1 → fullbleed-2.4.0}/build_backend/fullbleed_build_backend.py +0 -0
  54. {fullbleed-2.3.1 → fullbleed-2.4.0}/crates/fullbleed_audit_contract/Cargo.lock +0 -0
  55. {fullbleed-2.3.1 → fullbleed-2.4.0}/crates/fullbleed_audit_contract/Cargo.toml +0 -0
  56. {fullbleed-2.3.1 → fullbleed-2.4.0}/crates/fullbleed_audit_contract/LICENSE +0 -0
  57. {fullbleed-2.3.1 → fullbleed-2.4.0}/crates/fullbleed_audit_contract/README.md +0 -0
  58. {fullbleed-2.3.1 → fullbleed-2.4.0}/crates/fullbleed_audit_contract/specs/fullbleed.audit_registry.v1.yaml +0 -0
  59. {fullbleed-2.3.1 → fullbleed-2.4.0}/crates/fullbleed_audit_contract/specs/section508_html_registry.v1.yaml +0 -0
  60. {fullbleed-2.3.1 → fullbleed-2.4.0}/crates/fullbleed_audit_contract/specs/wcag20aa_registry.v1.yaml +0 -0
  61. {fullbleed-2.3.1 → fullbleed-2.4.0}/crates/fullbleed_audit_contract/src/json.rs +0 -0
  62. {fullbleed-2.3.1 → fullbleed-2.4.0}/crates/fullbleed_audit_contract/src/lib.rs +0 -0
  63. {fullbleed-2.3.1 → fullbleed-2.4.0}/crates/fullbleed_audit_contract/src/sha256.rs +0 -0
  64. {fullbleed-2.3.1 → fullbleed-2.4.0}/docs/specs/fullbleed.a11y.verify.v1.schema.json +0 -0
  65. {fullbleed-2.3.1 → fullbleed-2.4.0}/docs/specs/fullbleed.audit_registry.v1.yaml +0 -0
  66. {fullbleed-2.3.1 → fullbleed-2.4.0}/docs/specs/fullbleed.pmr.v1.schema.json +0 -0
  67. {fullbleed-2.3.1 → fullbleed-2.4.0}/docs/specs/section508_html_registry.v1.yaml +0 -0
  68. {fullbleed-2.3.1 → fullbleed-2.4.0}/docs/specs/wcag20aa_registry.v1.yaml +0 -0
  69. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed/__init__.py +0 -0
  70. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed/__main__.py +0 -0
  71. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed/accessibility/__init__.py +0 -0
  72. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed/accessibility/engine.py +0 -0
  73. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed/accessibility/runtime.py +0 -0
  74. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed/accessibility/types.py +0 -0
  75. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed/audit_prototype.py +0 -0
  76. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed/audit_section508.py +0 -0
  77. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed/audit_wcag.py +0 -0
  78. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed/ui/__init__.py +0 -0
  79. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed/ui/accessibility.py +0 -0
  80. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed/ui/cav/__init__.py +0 -0
  81. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed/ui/cav/_core.py +0 -0
  82. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed/ui/cav/agency_letter.py +0 -0
  83. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed/ui/cav/court_motion_form.py +0 -0
  84. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed/ui/cav/declaration_form.py +0 -0
  85. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed/ui/cav/instruction_sheet.py +0 -0
  86. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed/ui/cav/investment_portfolio_report.py +0 -0
  87. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed/ui/cav/marriage_record.py +0 -0
  88. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed/ui/cav/profiles.py +0 -0
  89. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed/ui/cav/recorded_plat.py +0 -0
  90. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed/ui/cav/redaction_request_form.py +0 -0
  91. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed/ui/cav/warranty_deed.py +0 -0
  92. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed/ui/core.py +0 -0
  93. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed/ui/primitives.py +0 -0
  94. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed/ui/style.py +0 -0
  95. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_assets/__init__.py +0 -0
  96. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_assets/bootstrap.min.css +0 -0
  97. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_assets/fonts/Inter-Variable.ttf +0 -0
  98. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_assets/fonts/NotoSans-Regular.ttf +0 -0
  99. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_assets/fonts/NotoSansMath-Regular.ttf +0 -0
  100. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_assets/fonts/NotoSansSymbols-Regular.ttf +0 -0
  101. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_assets/fonts/NotoSansSymbols2-Regular.ttf +0 -0
  102. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_assets/icons/bootstrap-icons.svg +0 -0
  103. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/__init__.py +0 -0
  104. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/__main__.py +0 -0
  105. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/agent.py +0 -0
  106. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/agent_acceptance.py +0 -0
  107. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/assets.py +0 -0
  108. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/cache.py +0 -0
  109. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/finalize.py +0 -0
  110. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold.py +0 -0
  111. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/__init__.py +0 -0
  112. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/.gitignore +0 -0
  113. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/AGENTS.md +0 -0
  114. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/COMPLIANCE.md +0 -0
  115. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/SCAFFOLDING.md +0 -0
  116. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/components/__init__.py +0 -0
  117. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/components/body.py +0 -0
  118. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/components/fb_ui.py +0 -0
  119. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/components/footer.py +0 -0
  120. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/components/header.py +0 -0
  121. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/components/primitives.py +0 -0
  122. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/components/styles/body.css +0 -0
  123. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/components/styles/footer.css +0 -0
  124. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/components/styles/header.css +0 -0
  125. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/components/styles/primitives.css +0 -0
  126. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/report.py +0 -0
  127. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/styles/report.css +0 -0
  128. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/styles/tokens.css +0 -0
  129. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/accessible/README.md +0 -0
  130. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/accessible/output/.gitignore +0 -0
  131. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/accessible/output/.gitkeep +0 -0
  132. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/accessible/report.py +0 -0
  133. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/accessible/styles/report.css +0 -0
  134. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/accessible/vendor/fonts/Inter-Variable.ttf +0 -0
  135. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/invoice/output/.gitignore +0 -0
  136. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/invoice/output/.gitkeep +0 -0
  137. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/invoice/report.py +0 -0
  138. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/invoice/templates/invoice.css +0 -0
  139. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/invoice/templates/invoice.html +0 -0
  140. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/COMPLIANCE.md +0 -0
  141. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/README.md +0 -0
  142. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/SCAFFOLDING.md +0 -0
  143. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/assets/brand-mark.svg +0 -0
  144. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/assets/reference-pattern.svg +0 -0
  145. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/__init__.py +0 -0
  146. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/appendix.py +0 -0
  147. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/architecture.py +0 -0
  148. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/cover.py +0 -0
  149. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/data_pages.py +0 -0
  150. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/fb_ui.py +0 -0
  151. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/primitives.py +0 -0
  152. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/styles/appendix.css +0 -0
  153. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/styles/architecture.css +0 -0
  154. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/styles/cover.css +0 -0
  155. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/styles/data.css +0 -0
  156. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/styles/primitives.css +0 -0
  157. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/styles/visuals.css +0 -0
  158. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/visuals.py +0 -0
  159. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/data/reference.json +0 -0
  160. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/output/.gitignore +0 -0
  161. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/report.py +0 -0
  162. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/styles/report.css +0 -0
  163. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/styles/tokens.css +0 -0
  164. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/statement/output/.gitignore +0 -0
  165. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/statement/output/.gitkeep +0 -0
  166. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/statement/report.py +0 -0
  167. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/statement/templates/statement.css +0 -0
  168. {fullbleed-2.3.1 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/statement/templates/statement.html +0 -0
  169. {fullbleed-2.3.1 → fullbleed-2.4.0}/skills/fullbleed/SKILL.md +0 -0
  170. {fullbleed-2.3.1 → fullbleed-2.4.0}/skills/fullbleed/agents/openai.yaml +0 -0
  171. {fullbleed-2.3.1 → fullbleed-2.4.0}/skills/fullbleed/references/compliance.md +0 -0
  172. {fullbleed-2.3.1 → fullbleed-2.4.0}/skills/fullbleed/references/selection.md +0 -0
  173. {fullbleed-2.3.1 → fullbleed-2.4.0}/skills/fullbleed/references/workflows.md +0 -0
  174. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/base64.rs +0 -0
  175. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/css_queries.rs +0 -0
  176. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/debug.rs +0 -0
  177. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/doc_context.rs +0 -0
  178. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/doc_template.rs +0 -0
  179. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/finalize.rs +0 -0
  180. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/flate_native.rs +0 -0
  181. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/font_subset.rs +0 -0
  182. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/frame.rs +0 -0
  183. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/glyph_report.rs +0 -0
  184. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/html_entities.rs +0 -0
  185. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/html_entities_0.rs +0 -0
  186. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/html_entities_1.rs +0 -0
  187. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/html_entities_2.rs +0 -0
  188. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/html_entities_3.rs +0 -0
  189. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/html_entities_4.rs +0 -0
  190. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/html_entities_5.rs +0 -0
  191. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/image_native.rs +0 -0
  192. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/jpeg_native.rs +0 -0
  193. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/math.rs +0 -0
  194. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/metrics.rs +0 -0
  195. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/native_shape.rs +0 -0
  196. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/page_data.rs +0 -0
  197. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/page_template.rs +0 -0
  198. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/parallel.rs +0 -0
  199. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/pdf_encodings.rs +0 -0
  200. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/pdf_native.rs +0 -0
  201. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/pdf_raster.rs +0 -0
  202. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/perf.rs +0 -0
  203. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/plan.rs +0 -0
  204. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/raster_native.rs +0 -0
  205. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/sfnt.rs +0 -0
  206. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/sfnt_cff.rs +0 -0
  207. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/sfnt_outline.rs +0 -0
  208. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/text_shape.rs +0 -0
  209. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/types.rs +0 -0
  210. {fullbleed-2.3.1 → fullbleed-2.4.0}/src/unicode_data.rs +0 -0
@@ -4,7 +4,7 @@ version = 4
4
4
 
5
5
  [[package]]
6
6
  name = "fullbleed"
7
- version = "2.3.1"
7
+ version = "2.4.0"
8
8
  dependencies = [
9
9
  "fullbleed_audit_contract",
10
10
  "subsetter",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "fullbleed"
3
- version = "2.3.1"
3
+ version = "2.4.0"
4
4
  edition = "2024"
5
5
  rust-version = "1.85"
6
6
  license = "MIT"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fullbleed
3
- Version: 2.3.1
3
+ Version: 2.4.0
4
4
  Classifier: Development Status :: 5 - Production/Stable
5
5
  Classifier: License :: OSI Approved :: MIT License
6
6
  Classifier: Operating System :: MacOS
@@ -213,7 +213,7 @@ python -m pip install fullbleed
213
213
  From a local wheel:
214
214
 
215
215
  ```bash
216
- python -m pip install C:\path\to\fullbleed-2.3.1-cp310-abi3-win_amd64.whl
216
+ python -m pip install C:\path\to\fullbleed-2.4.0-cp310-abi3-win_amd64.whl
217
217
  ```
218
218
 
219
219
  From a source checkout with Rust installed, no Python build package is needed:
@@ -595,18 +595,22 @@ Render/verify/plan key flags:
595
595
  Profile targets: `none`, `pdfa1a`, `pdfa1b`, `pdfa2a`, `pdfa2b`, `pdfa2u`, `pdfa3a`, `pdfa3b`, `pdfa3u`, `pdfa4`, `pdfa4e`, `pdfa4f`, `pdfx4`, `pdfua1`, `pdfua2`, `pdfvt1`, `wtpdf1r`, `wtpdf1a`, `tagged`.
596
596
  Aliases: `a`, `ua`, `vt`, `wt1r`, `wt1a`, `pdf/a`, `pdf/ua`, `pdf/vt`.
597
597
  Output intent metadata (`--output-intent-identifier|--output-intent-info|--output-intent-components`) requires `--output-intent-icc`.
598
+ `pdfx4` and `pdfvt1` force PDF 1.6 and require a title and explicit write date
599
+ (`--timestamp current`, a fixed UTC date, or `--timestamp-source SOURCE_DATE_EPOCH`).
600
+ [PDF/VT composition](docs/pdf-vt.md) documents record hierarchies, `--pdf-vt-job`,
601
+ private DPM, conservative reuse hints, and the independent release-validation boundary.
598
602
  Run `python tools/validate_pdf_profiles.py --download-verapdf --install-pdf-oxide --strict-external`
599
603
  to regenerate profile specimens, capture inspect/JIT evidence, replay
600
604
  deterministic hashes, validate PDF/A and PDF/UA with veraPDF, and validate
601
605
  PDF/X-4 with `pdf_oxide`. WTPDF profiles are validated with veraPDF
602
606
  `wt1r`/`wt1a` and include PDF Declaration evidence. `pdfa4f` emits and
603
607
  checks an associated `EmbeddedFiles` name tree. `pdfvt1` also emits and checks a parsed
604
- DPart graph (`DPartRoot`, `DPartRootNode`, one-level `NodeNameList`, leaf page range,
608
+ DPart graph (`DPartRoot`, `DPartRootNode`, `NodeNameList [/Job /Record /Document]`, leaf page range,
605
609
  and page `/DPart` references), including a supplemental multipage specimen
606
610
  for `/Start` and `/End`, reported as granular booleans plus
607
611
  `pdfvt_dpart_graph_valid`; use a dedicated PDF/VT preflight tool
608
612
  for third-party PDF/VT certification, or wire one into the same harness with
609
- `--pdfvt-cmd "tool --input {pdf}" --require-dedicated-pdfvt`.
613
+ `--pdfvt-cmd "tool --input {pdf}" --pdfvt-version-cmd "tool --version" --require-dedicated-pdfvt`.
610
614
  - Watermarking: `--watermark-text`, `--watermark-html`, `--watermark-image`, `--watermark-layer`, `--watermark-semantics`, `--watermark-opacity`, `--watermark-rotation`
611
615
  - Artifacts: `--emit-jit`, `--emit-perf`, `--emit-glyph-report`, `--emit-page-data`, `--emit-compose-plan`, `--emit-image`, `--image-dpi`, `--deterministic-hash`
612
616
  - Assets: `--asset`, `--asset-kind`, `--asset-name`, `--asset-trusted`, `--allow-remote-assets`
@@ -918,6 +922,14 @@ Entrypoint formats:
918
922
  - `module_name:factory_or_engine`
919
923
  - `path/to/file.py:factory_or_engine`
920
924
 
925
+ ## Rust chart compilation
926
+
927
+ For Rust-based visual/source frontends, the engine also provides
928
+ [document-context chart compilation](docs/chart-typography.md): normal CSS font
929
+ selection and size, project-font legend measurement/wrapping, semantic tables,
930
+ and observable layout failures. Generated SVG is derived output, not authoring
931
+ source.
932
+
921
933
  ## Python API Quick Start
922
934
 
923
935
  ```python
@@ -170,7 +170,7 @@ python -m pip install fullbleed
170
170
  From a local wheel:
171
171
 
172
172
  ```bash
173
- python -m pip install C:\path\to\fullbleed-2.3.1-cp310-abi3-win_amd64.whl
173
+ python -m pip install C:\path\to\fullbleed-2.4.0-cp310-abi3-win_amd64.whl
174
174
  ```
175
175
 
176
176
  From a source checkout with Rust installed, no Python build package is needed:
@@ -552,18 +552,22 @@ Render/verify/plan key flags:
552
552
  Profile targets: `none`, `pdfa1a`, `pdfa1b`, `pdfa2a`, `pdfa2b`, `pdfa2u`, `pdfa3a`, `pdfa3b`, `pdfa3u`, `pdfa4`, `pdfa4e`, `pdfa4f`, `pdfx4`, `pdfua1`, `pdfua2`, `pdfvt1`, `wtpdf1r`, `wtpdf1a`, `tagged`.
553
553
  Aliases: `a`, `ua`, `vt`, `wt1r`, `wt1a`, `pdf/a`, `pdf/ua`, `pdf/vt`.
554
554
  Output intent metadata (`--output-intent-identifier|--output-intent-info|--output-intent-components`) requires `--output-intent-icc`.
555
+ `pdfx4` and `pdfvt1` force PDF 1.6 and require a title and explicit write date
556
+ (`--timestamp current`, a fixed UTC date, or `--timestamp-source SOURCE_DATE_EPOCH`).
557
+ [PDF/VT composition](docs/pdf-vt.md) documents record hierarchies, `--pdf-vt-job`,
558
+ private DPM, conservative reuse hints, and the independent release-validation boundary.
555
559
  Run `python tools/validate_pdf_profiles.py --download-verapdf --install-pdf-oxide --strict-external`
556
560
  to regenerate profile specimens, capture inspect/JIT evidence, replay
557
561
  deterministic hashes, validate PDF/A and PDF/UA with veraPDF, and validate
558
562
  PDF/X-4 with `pdf_oxide`. WTPDF profiles are validated with veraPDF
559
563
  `wt1r`/`wt1a` and include PDF Declaration evidence. `pdfa4f` emits and
560
564
  checks an associated `EmbeddedFiles` name tree. `pdfvt1` also emits and checks a parsed
561
- DPart graph (`DPartRoot`, `DPartRootNode`, one-level `NodeNameList`, leaf page range,
565
+ DPart graph (`DPartRoot`, `DPartRootNode`, `NodeNameList [/Job /Record /Document]`, leaf page range,
562
566
  and page `/DPart` references), including a supplemental multipage specimen
563
567
  for `/Start` and `/End`, reported as granular booleans plus
564
568
  `pdfvt_dpart_graph_valid`; use a dedicated PDF/VT preflight tool
565
569
  for third-party PDF/VT certification, or wire one into the same harness with
566
- `--pdfvt-cmd "tool --input {pdf}" --require-dedicated-pdfvt`.
570
+ `--pdfvt-cmd "tool --input {pdf}" --pdfvt-version-cmd "tool --version" --require-dedicated-pdfvt`.
567
571
  - Watermarking: `--watermark-text`, `--watermark-html`, `--watermark-image`, `--watermark-layer`, `--watermark-semantics`, `--watermark-opacity`, `--watermark-rotation`
568
572
  - Artifacts: `--emit-jit`, `--emit-perf`, `--emit-glyph-report`, `--emit-page-data`, `--emit-compose-plan`, `--emit-image`, `--image-dpi`, `--deterministic-hash`
569
573
  - Assets: `--asset`, `--asset-kind`, `--asset-name`, `--asset-trusted`, `--allow-remote-assets`
@@ -875,6 +879,14 @@ Entrypoint formats:
875
879
  - `module_name:factory_or_engine`
876
880
  - `path/to/file.py:factory_or_engine`
877
881
 
882
+ ## Rust chart compilation
883
+
884
+ For Rust-based visual/source frontends, the engine also provides
885
+ [document-context chart compilation](docs/chart-typography.md): normal CSS font
886
+ selection and size, project-font legend measurement/wrapping, semantic tables,
887
+ and observable layout failures. Generated SVG is derived output, not authoring
888
+ source.
889
+
878
890
  ## Python API Quick Start
879
891
 
880
892
  ```python