fullbleed 2.3.0__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.
- {fullbleed-2.3.0 → fullbleed-2.4.0}/Cargo.lock +1 -1
- {fullbleed-2.3.0 → fullbleed-2.4.0}/Cargo.toml +1 -1
- {fullbleed-2.3.0 → fullbleed-2.4.0}/PKG-INFO +24 -6
- {fullbleed-2.3.0 → fullbleed-2.4.0}/README.md +23 -5
- {fullbleed-2.3.0 → fullbleed-2.4.0}/fullbleed-agent-contract.json +968 -1
- {fullbleed-2.3.0 → fullbleed-2.4.0}/llms.txt +2 -1
- {fullbleed-2.3.0 → fullbleed-2.4.0}/pyproject.toml +1 -1
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed/_abi.py +15 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/agent_contract.py +61 -7
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/cli.py +161 -152
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/mcp.py +29 -1
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/assets.rs +129 -1
- fullbleed-2.4.0/src/authoring.rs +2390 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/canvas.rs +139 -3
- fullbleed-2.4.0/src/chart.rs +1114 -0
- fullbleed-2.4.0/src/chart_document.rs +392 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/css_native.rs +8 -0
- fullbleed-2.4.0/src/document_metadata.rs +86 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/error.rs +2 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/flowable.rs +921 -61
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/font.rs +24 -2
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/html.rs +376 -96
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/html_dom.rs +5 -0
- fullbleed-2.4.0/src/icc.rs +188 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/jit.rs +392 -60
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/lib.rs +558 -106
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/pdf.rs +1370 -192
- fullbleed-2.4.0/src/pdf_identity.rs +263 -0
- fullbleed-2.4.0/src/pdf_print_contract.rs +347 -0
- fullbleed-2.4.0/src/pdf_profile.rs +163 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/pdf_raster.rs +199 -12
- fullbleed-2.4.0/src/pdf_table.rs +77 -0
- fullbleed-2.4.0/src/pdf_vt.rs +200 -0
- fullbleed-2.4.0/src/pdf_vt_inspect.rs +219 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/pdfinspect.rs +61 -78
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/python/abi_exports.rs +44 -1
- fullbleed-2.4.0/src/python/pdf_vt.rs +166 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/python.rs +174 -59
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/python_abi.rs +3 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/raster.rs +31 -9
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/spill.rs +255 -2
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/style.rs +1 -1
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/svg.rs +683 -78
- fullbleed-2.4.0/src/table_header_tests.rs +350 -0
- fullbleed-2.4.0/src/table_semantics.rs +455 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/xml.rs +11 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/COPYRIGHT +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/FONT_LICENSE_AUDIT.json +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/FONT_LICENSE_AUDIT.md +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/LICENSE +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/LICENSING.md +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/THIRD_PARTY_LICENSES.md +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/build.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/build_backend/fullbleed_build_backend.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/crates/fullbleed_audit_contract/Cargo.lock +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/crates/fullbleed_audit_contract/Cargo.toml +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/crates/fullbleed_audit_contract/LICENSE +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/crates/fullbleed_audit_contract/README.md +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/crates/fullbleed_audit_contract/specs/fullbleed.audit_registry.v1.yaml +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/crates/fullbleed_audit_contract/specs/section508_html_registry.v1.yaml +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/crates/fullbleed_audit_contract/specs/wcag20aa_registry.v1.yaml +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/crates/fullbleed_audit_contract/src/json.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/crates/fullbleed_audit_contract/src/lib.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/crates/fullbleed_audit_contract/src/sha256.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/docs/specs/fullbleed.a11y.verify.v1.schema.json +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/docs/specs/fullbleed.audit_registry.v1.yaml +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/docs/specs/fullbleed.pmr.v1.schema.json +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/docs/specs/section508_html_registry.v1.yaml +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/docs/specs/wcag20aa_registry.v1.yaml +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed/__init__.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed/__main__.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed/accessibility/__init__.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed/accessibility/engine.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed/accessibility/runtime.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed/accessibility/types.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed/audit_prototype.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed/audit_section508.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed/audit_wcag.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed/ui/__init__.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed/ui/accessibility.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed/ui/cav/__init__.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed/ui/cav/_core.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed/ui/cav/agency_letter.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed/ui/cav/court_motion_form.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed/ui/cav/declaration_form.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed/ui/cav/instruction_sheet.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed/ui/cav/investment_portfolio_report.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed/ui/cav/marriage_record.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed/ui/cav/profiles.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed/ui/cav/recorded_plat.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed/ui/cav/redaction_request_form.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed/ui/cav/warranty_deed.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed/ui/core.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed/ui/primitives.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed/ui/style.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_assets/__init__.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_assets/bootstrap.min.css +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_assets/fonts/Inter-Variable.ttf +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_assets/fonts/NotoSans-Regular.ttf +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_assets/fonts/NotoSansMath-Regular.ttf +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_assets/fonts/NotoSansSymbols-Regular.ttf +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_assets/fonts/NotoSansSymbols2-Regular.ttf +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_assets/icons/bootstrap-icons.svg +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/__init__.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/__main__.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/agent.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/agent_acceptance.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/assets.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/cache.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/finalize.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/__init__.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/.gitignore +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/AGENTS.md +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/COMPLIANCE.md +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/SCAFFOLDING.md +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/components/__init__.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/components/body.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/components/fb_ui.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/components/footer.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/components/header.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/components/primitives.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/components/styles/body.css +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/components/styles/footer.css +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/components/styles/header.css +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/components/styles/primitives.css +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/report.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/styles/report.css +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/init/styles/tokens.css +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/accessible/README.md +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/accessible/output/.gitignore +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/accessible/output/.gitkeep +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/accessible/report.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/accessible/styles/report.css +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/accessible/vendor/fonts/Inter-Variable.ttf +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/invoice/output/.gitignore +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/invoice/output/.gitkeep +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/invoice/report.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/invoice/templates/invoice.css +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/invoice/templates/invoice.html +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/COMPLIANCE.md +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/README.md +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/SCAFFOLDING.md +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/assets/brand-mark.svg +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/assets/reference-pattern.svg +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/__init__.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/appendix.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/architecture.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/cover.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/data_pages.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/fb_ui.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/primitives.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/styles/appendix.css +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/styles/architecture.css +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/styles/cover.css +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/styles/data.css +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/styles/primitives.css +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/styles/visuals.css +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/visuals.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/data/reference.json +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/output/.gitignore +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/report.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/styles/report.css +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/reference/styles/tokens.css +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/statement/output/.gitignore +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/statement/output/.gitkeep +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/statement/report.py +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/statement/templates/statement.css +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/python/fullbleed_cli/scaffold_templates/new/statement/templates/statement.html +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/skills/fullbleed/SKILL.md +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/skills/fullbleed/agents/openai.yaml +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/skills/fullbleed/references/compliance.md +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/skills/fullbleed/references/selection.md +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/skills/fullbleed/references/workflows.md +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/base64.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/css_queries.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/debug.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/doc_context.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/doc_template.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/finalize.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/flate_native.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/font_subset.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/frame.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/glyph_report.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/html_entities.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/html_entities_0.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/html_entities_1.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/html_entities_2.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/html_entities_3.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/html_entities_4.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/html_entities_5.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/image_native.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/jpeg_native.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/math.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/metrics.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/native_shape.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/page_data.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/page_template.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/parallel.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/pdf_encodings.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/pdf_native.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/perf.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/plan.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/raster_native.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/sfnt.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/sfnt_cff.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/sfnt_outline.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/text_shape.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/types.rs +0 -0
- {fullbleed-2.3.0 → fullbleed-2.4.0}/src/unicode_data.rs +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fullbleed
|
|
3
|
-
Version: 2.
|
|
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
|
|
@@ -170,6 +170,11 @@ Fixed-geometry slots may remain inside immutable page-space transforms and clips
|
|
|
170
170
|
captures that active coordinate-state program once and replays it in each compact record overlay;
|
|
171
171
|
it does not rerun layout or clone the complete page display list.
|
|
172
172
|
|
|
173
|
+
Base-14/WinAnsi slot paint keeps the measured byte-patch linker. Registered embedded fonts use a
|
|
174
|
+
command-level overlay program so each bound value is shaped and included in the font subset while
|
|
175
|
+
the compiled layout, pagination, and static page stream remain shared. The throughput figures above
|
|
176
|
+
describe the Base-14 fast lane; they are not claims for registered-font shaping.
|
|
177
|
+
|
|
173
178
|
The fixed-copy result remains scoped to identical content; the variable-data result is scoped to
|
|
174
179
|
paint-only text whose geometry does not reflow. Neither is a claim that arbitrary new HTML or
|
|
175
180
|
size-changing records render 200x faster. See
|
|
@@ -208,7 +213,7 @@ python -m pip install fullbleed
|
|
|
208
213
|
From a local wheel:
|
|
209
214
|
|
|
210
215
|
```bash
|
|
211
|
-
python -m pip install C:\path\to\fullbleed-2.
|
|
216
|
+
python -m pip install C:\path\to\fullbleed-2.4.0-cp310-abi3-win_amd64.whl
|
|
212
217
|
```
|
|
213
218
|
|
|
214
219
|
From a source checkout with Rust installed, no Python build package is needed:
|
|
@@ -590,18 +595,22 @@ Render/verify/plan key flags:
|
|
|
590
595
|
Profile targets: `none`, `pdfa1a`, `pdfa1b`, `pdfa2a`, `pdfa2b`, `pdfa2u`, `pdfa3a`, `pdfa3b`, `pdfa3u`, `pdfa4`, `pdfa4e`, `pdfa4f`, `pdfx4`, `pdfua1`, `pdfua2`, `pdfvt1`, `wtpdf1r`, `wtpdf1a`, `tagged`.
|
|
591
596
|
Aliases: `a`, `ua`, `vt`, `wt1r`, `wt1a`, `pdf/a`, `pdf/ua`, `pdf/vt`.
|
|
592
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.
|
|
593
602
|
Run `python tools/validate_pdf_profiles.py --download-verapdf --install-pdf-oxide --strict-external`
|
|
594
603
|
to regenerate profile specimens, capture inspect/JIT evidence, replay
|
|
595
604
|
deterministic hashes, validate PDF/A and PDF/UA with veraPDF, and validate
|
|
596
605
|
PDF/X-4 with `pdf_oxide`. WTPDF profiles are validated with veraPDF
|
|
597
606
|
`wt1r`/`wt1a` and include PDF Declaration evidence. `pdfa4f` emits and
|
|
598
607
|
checks an associated `EmbeddedFiles` name tree. `pdfvt1` also emits and checks a parsed
|
|
599
|
-
DPart graph (`DPartRoot`, `DPartRootNode`,
|
|
608
|
+
DPart graph (`DPartRoot`, `DPartRootNode`, `NodeNameList [/Job /Record /Document]`, leaf page range,
|
|
600
609
|
and page `/DPart` references), including a supplemental multipage specimen
|
|
601
610
|
for `/Start` and `/End`, reported as granular booleans plus
|
|
602
611
|
`pdfvt_dpart_graph_valid`; use a dedicated PDF/VT preflight tool
|
|
603
612
|
for third-party PDF/VT certification, or wire one into the same harness with
|
|
604
|
-
`--pdfvt-cmd "tool --input {pdf}" --require-dedicated-pdfvt`.
|
|
613
|
+
`--pdfvt-cmd "tool --input {pdf}" --pdfvt-version-cmd "tool --version" --require-dedicated-pdfvt`.
|
|
605
614
|
- Watermarking: `--watermark-text`, `--watermark-html`, `--watermark-image`, `--watermark-layer`, `--watermark-semantics`, `--watermark-opacity`, `--watermark-rotation`
|
|
606
615
|
- Artifacts: `--emit-jit`, `--emit-perf`, `--emit-glyph-report`, `--emit-page-data`, `--emit-compose-plan`, `--emit-image`, `--image-dpi`, `--deterministic-hash`
|
|
607
616
|
- Assets: `--asset`, `--asset-kind`, `--asset-name`, `--asset-trusted`, `--allow-remote-assets`
|
|
@@ -913,6 +922,14 @@ Entrypoint formats:
|
|
|
913
922
|
- `module_name:factory_or_engine`
|
|
914
923
|
- `path/to/file.py:factory_or_engine`
|
|
915
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
|
+
|
|
916
933
|
## Python API Quick Start
|
|
917
934
|
|
|
918
935
|
```python
|
|
@@ -1079,8 +1096,9 @@ Module exports:
|
|
|
1079
1096
|
The compiled lane runs parsing/layout once. `render_pdf_batch` virtualizes identical untagged page
|
|
1080
1097
|
content. The fixed binding methods accept columnar `dict[str, list[str]]` data and emit distinct
|
|
1081
1098
|
fixed-geometry text overlays per record while sharing static paint. They require exact slot keys,
|
|
1082
|
-
equal non-zero column lengths, page-local
|
|
1083
|
-
|
|
1099
|
+
equal non-zero column lengths, page-local text, and an untagged profile. Base-14 text uses the
|
|
1100
|
+
direct byte-patch lane; registered fonts are shaped into a command-level overlay. Bound values do
|
|
1101
|
+
not trigger layout or reflow.
|
|
1084
1102
|
|
|
1085
1103
|
The reflow binding methods use the same exact-column contract but execute the compiled parsed-DOM
|
|
1086
1104
|
program. `{{slot}}` values are literal text and may reshape, wrap, resize blocks, and change page
|
|
@@ -127,6 +127,11 @@ Fixed-geometry slots may remain inside immutable page-space transforms and clips
|
|
|
127
127
|
captures that active coordinate-state program once and replays it in each compact record overlay;
|
|
128
128
|
it does not rerun layout or clone the complete page display list.
|
|
129
129
|
|
|
130
|
+
Base-14/WinAnsi slot paint keeps the measured byte-patch linker. Registered embedded fonts use a
|
|
131
|
+
command-level overlay program so each bound value is shaped and included in the font subset while
|
|
132
|
+
the compiled layout, pagination, and static page stream remain shared. The throughput figures above
|
|
133
|
+
describe the Base-14 fast lane; they are not claims for registered-font shaping.
|
|
134
|
+
|
|
130
135
|
The fixed-copy result remains scoped to identical content; the variable-data result is scoped to
|
|
131
136
|
paint-only text whose geometry does not reflow. Neither is a claim that arbitrary new HTML or
|
|
132
137
|
size-changing records render 200x faster. See
|
|
@@ -165,7 +170,7 @@ python -m pip install fullbleed
|
|
|
165
170
|
From a local wheel:
|
|
166
171
|
|
|
167
172
|
```bash
|
|
168
|
-
python -m pip install C:\path\to\fullbleed-2.
|
|
173
|
+
python -m pip install C:\path\to\fullbleed-2.4.0-cp310-abi3-win_amd64.whl
|
|
169
174
|
```
|
|
170
175
|
|
|
171
176
|
From a source checkout with Rust installed, no Python build package is needed:
|
|
@@ -547,18 +552,22 @@ Render/verify/plan key flags:
|
|
|
547
552
|
Profile targets: `none`, `pdfa1a`, `pdfa1b`, `pdfa2a`, `pdfa2b`, `pdfa2u`, `pdfa3a`, `pdfa3b`, `pdfa3u`, `pdfa4`, `pdfa4e`, `pdfa4f`, `pdfx4`, `pdfua1`, `pdfua2`, `pdfvt1`, `wtpdf1r`, `wtpdf1a`, `tagged`.
|
|
548
553
|
Aliases: `a`, `ua`, `vt`, `wt1r`, `wt1a`, `pdf/a`, `pdf/ua`, `pdf/vt`.
|
|
549
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.
|
|
550
559
|
Run `python tools/validate_pdf_profiles.py --download-verapdf --install-pdf-oxide --strict-external`
|
|
551
560
|
to regenerate profile specimens, capture inspect/JIT evidence, replay
|
|
552
561
|
deterministic hashes, validate PDF/A and PDF/UA with veraPDF, and validate
|
|
553
562
|
PDF/X-4 with `pdf_oxide`. WTPDF profiles are validated with veraPDF
|
|
554
563
|
`wt1r`/`wt1a` and include PDF Declaration evidence. `pdfa4f` emits and
|
|
555
564
|
checks an associated `EmbeddedFiles` name tree. `pdfvt1` also emits and checks a parsed
|
|
556
|
-
DPart graph (`DPartRoot`, `DPartRootNode`,
|
|
565
|
+
DPart graph (`DPartRoot`, `DPartRootNode`, `NodeNameList [/Job /Record /Document]`, leaf page range,
|
|
557
566
|
and page `/DPart` references), including a supplemental multipage specimen
|
|
558
567
|
for `/Start` and `/End`, reported as granular booleans plus
|
|
559
568
|
`pdfvt_dpart_graph_valid`; use a dedicated PDF/VT preflight tool
|
|
560
569
|
for third-party PDF/VT certification, or wire one into the same harness with
|
|
561
|
-
`--pdfvt-cmd "tool --input {pdf}" --require-dedicated-pdfvt`.
|
|
570
|
+
`--pdfvt-cmd "tool --input {pdf}" --pdfvt-version-cmd "tool --version" --require-dedicated-pdfvt`.
|
|
562
571
|
- Watermarking: `--watermark-text`, `--watermark-html`, `--watermark-image`, `--watermark-layer`, `--watermark-semantics`, `--watermark-opacity`, `--watermark-rotation`
|
|
563
572
|
- Artifacts: `--emit-jit`, `--emit-perf`, `--emit-glyph-report`, `--emit-page-data`, `--emit-compose-plan`, `--emit-image`, `--image-dpi`, `--deterministic-hash`
|
|
564
573
|
- Assets: `--asset`, `--asset-kind`, `--asset-name`, `--asset-trusted`, `--allow-remote-assets`
|
|
@@ -870,6 +879,14 @@ Entrypoint formats:
|
|
|
870
879
|
- `module_name:factory_or_engine`
|
|
871
880
|
- `path/to/file.py:factory_or_engine`
|
|
872
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
|
+
|
|
873
890
|
## Python API Quick Start
|
|
874
891
|
|
|
875
892
|
```python
|
|
@@ -1036,8 +1053,9 @@ Module exports:
|
|
|
1036
1053
|
The compiled lane runs parsing/layout once. `render_pdf_batch` virtualizes identical untagged page
|
|
1037
1054
|
content. The fixed binding methods accept columnar `dict[str, list[str]]` data and emit distinct
|
|
1038
1055
|
fixed-geometry text overlays per record while sharing static paint. They require exact slot keys,
|
|
1039
|
-
equal non-zero column lengths, page-local
|
|
1040
|
-
|
|
1056
|
+
equal non-zero column lengths, page-local text, and an untagged profile. Base-14 text uses the
|
|
1057
|
+
direct byte-patch lane; registered fonts are shaped into a command-level overlay. Bound values do
|
|
1058
|
+
not trigger layout or reflow.
|
|
1041
1059
|
|
|
1042
1060
|
The reflow binding methods use the same exact-column contract but execute the compiled parsed-DOM
|
|
1043
1061
|
program. `{{slot}}` values are literal text and may reshape, wrap, resize blocks, and change page
|