mirror of
https://github.com/typst/typst
synced 2025-07-27 14:27:56 +08:00
feat: generate human readable table cell IDs
in almost all real-world cases these IDs require less memory than the binary IDs used before, and they are also require less storage in PDF files, since binary data is encoded in hex escape sequences, taking up 4 bytes per byte of data.
This commit is contained in:
parent
157e0fa142
commit
58c6729df4
5
Cargo.lock
generated
5
Cargo.lock
generated
@ -1367,7 +1367,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "krilla"
|
||||
version = "0.4.0"
|
||||
source = "git+https://github.com/saecki/krilla?branch=tag-attributes#a13326781d3959896a468b79dd80741bd3ab2398"
|
||||
source = "git+https://github.com/saecki/krilla?branch=tag-attributes#2556c404d19746f9385b4a4e26e910d9e625c1db"
|
||||
dependencies = [
|
||||
"base64",
|
||||
"bumpalo",
|
||||
@ -1396,7 +1396,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "krilla-svg"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/saecki/krilla?branch=tag-attributes#a13326781d3959896a468b79dd80741bd3ab2398"
|
||||
source = "git+https://github.com/saecki/krilla?branch=tag-attributes#2556c404d19746f9385b4a4e26e910d9e625c1db"
|
||||
dependencies = [
|
||||
"flate2",
|
||||
"fontdb",
|
||||
@ -3139,6 +3139,7 @@ dependencies = [
|
||||
"krilla",
|
||||
"krilla-svg",
|
||||
"serde",
|
||||
"smallvec",
|
||||
"typst-assets",
|
||||
"typst-library",
|
||||
"typst-macros",
|
||||
|
@ -27,6 +27,7 @@ infer = { workspace = true }
|
||||
krilla = { workspace = true }
|
||||
krilla-svg = { workspace = true }
|
||||
serde = { workspace = true }
|
||||
smallvec = { workspace = true }
|
||||
|
||||
[lints]
|
||||
workspace = true
|
||||
|
@ -1,8 +1,10 @@
|
||||
use std::io::Write as _;
|
||||
use std::num::{NonZeroU32, NonZeroUsize};
|
||||
|
||||
use krilla::tagging::{
|
||||
TableCellSpan, TableDataCell, TableHeaderCell, TagBuilder, TagId, TagIdRefs, TagKind,
|
||||
};
|
||||
use smallvec::SmallVec;
|
||||
use typst_library::foundations::{Packed, Smart, StyleChain};
|
||||
use typst_library::model::{TableCell, TableCellKind, TableElem, TableHeaderScope};
|
||||
|
||||
@ -313,11 +315,9 @@ fn should_group_rows(a: TableCellKind, b: TableCellKind) -> bool {
|
||||
}
|
||||
|
||||
fn table_cell_id(table_id: TableId, x: u32, y: u32) -> TagId {
|
||||
let mut bytes = [0; 12];
|
||||
bytes[0..4].copy_from_slice(&table_id.0.to_ne_bytes());
|
||||
bytes[4..8].copy_from_slice(&x.to_ne_bytes());
|
||||
bytes[8..12].copy_from_slice(&y.to_ne_bytes());
|
||||
TagId::from_slice(&bytes)
|
||||
let mut buf = SmallVec::new();
|
||||
_ = write!(&mut buf, "{}x{x}y{y}", table_id.0);
|
||||
TagId::from_smallvec(buf)
|
||||
}
|
||||
|
||||
fn table_header_scope(scope: TableHeaderScope) -> krilla::tagging::TableHeaderScope {
|
||||
|
Loading…
x
Reference in New Issue
Block a user