Add text selection (semi-functional); save as PDF; fix width issues (different vscale/wscale)

This commit is contained in:
bluepython508
2025-11-04 14:03:12 +00:00
parent c023daf180
commit 75754935be
6 changed files with 386 additions and 118 deletions

170
Cargo.lock generated
View File

@@ -628,6 +628,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb"
dependencies = [
"crc32fast",
"libz-rs-sys",
"miniz_oxide",
]
@@ -637,6 +638,15 @@ version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4"
[[package]]
name = "float-cmp"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b09cf3155332e944990140d967ff5eceb70df778b34f77d8075db46e4704e6d8"
dependencies = [
"num-traits",
]
[[package]]
name = "fnv"
version = "1.0.7"
@@ -977,6 +987,18 @@ dependencies = [
"zune-jpeg",
]
[[package]]
name = "hayro-write"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cc05d8b4bc878b9aee48d980ecb25ed08f1dd9fad6da5ab4d9b7c56ec03a0cf6"
dependencies = [
"flate2",
"hayro-syntax",
"log",
"pdf-writer",
]
[[package]]
name = "heck"
version = "0.5.0"
@@ -1278,6 +1300,12 @@ version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "edcd27d72f2f071c64249075f42e205ff93c9a4c5f6c6da53e79ed9f9832c285"
[[package]]
name = "imagesize"
version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09e54e57b4c48b40f7aec75635392b12b3421fa26fe8b4332e63138ed278459c"
[[package]]
name = "indexmap"
version = "2.12.0"
@@ -1290,6 +1318,12 @@ dependencies = [
"serde_core",
]
[[package]]
name = "infer"
version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a588916bfdfd92e71cacef98a63d9b1f0d74d6599980d11894290e7ddefffcf7"
[[package]]
name = "itertools"
version = "0.13.0"
@@ -1314,6 +1348,52 @@ dependencies = [
"mutate_once",
]
[[package]]
name = "krilla"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "199be5f63da6e19b71051fd5276258a8e55449ac48e2e7492c68238f38ca9f3b"
dependencies = [
"base64",
"bumpalo",
"comemo",
"flate2",
"float-cmp 0.10.0",
"gif",
"hayro-write",
"image-webp",
"imagesize 0.14.0",
"once_cell",
"pdf-writer",
"png 0.17.16",
"rayon",
"rustc-hash",
"rustybuzz",
"siphasher",
"skrifa",
"smallvec",
"subsetter",
"tiny-skia-path",
"xmp-writer",
"yoke 0.8.0",
"zune-jpeg",
]
[[package]]
name = "krilla-svg"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8d3eec075c9507dfdbfb4b9bc3b2aeac074ed422b61bcfd93517616d6b3d19c3"
dependencies = [
"flate2",
"fontdb",
"krilla",
"png 0.17.16",
"resvg",
"tiny-skia",
"usvg",
]
[[package]]
name = "kurbo"
version = "0.11.3"
@@ -1369,6 +1449,15 @@ dependencies = [
"redox_syscall",
]
[[package]]
name = "libz-rs-sys"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "840db8cf39d9ec4dd794376f38acc40d0fc65eec2a8f484f7fd375b84602becd"
dependencies = [
"zlib-rs",
]
[[package]]
name = "linked-hash-map"
version = "0.5.6"
@@ -1657,6 +1746,18 @@ version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
[[package]]
name = "pdf-writer"
version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "92a79477295a713c2ed425aa82a8b5d20cec3fdee203706cbe6f3854880c1c81"
dependencies = [
"bitflags 2.10.0",
"itoa",
"memchr",
"ryu",
]
[[package]]
name = "percent-encoding"
version = "2.3.2"
@@ -2315,7 +2416,7 @@ version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731"
dependencies = [
"float-cmp",
"float-cmp 0.9.0",
]
[[package]]
@@ -2339,6 +2440,18 @@ dependencies = [
"syn",
]
[[package]]
name = "subsetter"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cb6895a12ac5599bb6057362f00e8a3cf1daab4df33f553a55690a44e4fed8d0"
dependencies = [
"kurbo 0.12.0",
"rustc-hash",
"skrifa",
"write-fonts",
]
[[package]]
name = "svgtypes"
version = "0.15.3"
@@ -2888,6 +3001,32 @@ dependencies = [
"syn",
]
[[package]]
name = "typst-pdf"
version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "99160d071220909c1993d7530abe94c0bceffd6e10be7bb629eae2f73d596f26"
dependencies = [
"az",
"bytemuck",
"comemo",
"ecow",
"image",
"indexmap",
"infer",
"krilla",
"krilla-svg",
"rustc-hash",
"serde",
"smallvec",
"typst-assets",
"typst-library",
"typst-macros",
"typst-syntax",
"typst-timing",
"typst-utils",
]
[[package]]
name = "typst-realize"
version = "0.14.0"
@@ -3158,7 +3297,7 @@ dependencies = [
"data-url",
"flate2",
"fontdb",
"imagesize",
"imagesize 0.13.0",
"kurbo 0.11.3",
"log",
"pico-args",
@@ -3462,6 +3601,19 @@ version = "0.46.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59"
[[package]]
name = "write-fonts"
version = "0.43.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "886614b5ce857341226aa091f3c285e450683894acaaa7887f366c361efef79d"
dependencies = [
"font-types",
"indexmap",
"kurbo 0.12.0",
"log",
"read-fonts",
]
[[package]]
name = "writeable"
version = "0.5.5"
@@ -3496,6 +3648,12 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec7a2a501ed189703dba8b08142f057e887dfc4b2cc4db2d343ac6376ba3e0b9"
[[package]]
name = "xmp-writer"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ce9e2f4a404d9ebffc0a9832cf4f50907220ba3d7fffa9099261a5cab52f2dd7"
[[package]]
name = "yaml-rust"
version = "0.4.5"
@@ -3562,8 +3720,10 @@ dependencies = [
"codespan-reporting",
"pkg-config",
"system-deps",
"ttf-parser",
"typst",
"typst-kit",
"typst-pdf",
"typst-render",
]
@@ -3676,6 +3836,12 @@ dependencies = [
"syn",
]
[[package]]
name = "zlib-rs"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2f06ae92f42f5e5c42443fd094f245eb656abf56dd7cce9b8b263236565e00f2"
[[package]]
name = "zune-core"
version = "0.4.12"