mirror of
https://github.com/storytold/craft-libs.git
synced 2026-10-31 15:49:54 +00:00
hayro-postscript 0.1.0 is the token scanner hayro-cmap uses for the CMap streams PDFs embed. Its object reader skipped each `<<` or `>>` by calling itself again, so a stream holding a long run of `<` or `>` bytes recursed once per pair and aborted the process with a stack overflow. Vendor the crates.io package unchanged and patch `object::read` to skip those runs in a loop, returning the same next object as before. Wire it in like the other Hayro crates: workspace exclude, [patch.crates-io] entry, SOURCE.json with registry and local hashes, the backend test script, NOTICE, ATTRIBUTION.md and the reader README. Tests cover a million `<` and a million `>` bytes, `<< /A 1 >>` and nested `<<<< /X >>>>` runs.
hayro-postscript
A lightweight PostScript scanner.
This crate provides a scanner for tokenizing PostScript programs into typed objects. It currently only implements a very small subset of the PostScript language, with the main goal of being enough to parse CMAP files, but the scope might be expanded upon in the future.
The supported types include integers and real numbers, name objects, strings and arrays. Unsupported is anything else, including dictionaries, procedures, etc. An error will be returned in case any of these is encountered.
Safety
This crate forbids unsafe code via a crate-level attribute.
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.