Commit Graph

272 Commits

Author SHA1 Message Date
Laurenz ec04c3de2f Extract `typst-render` crate 2023-11-08 13:16:13 +01:00
Laurenz c12a19a075 Switch to crates.io version of self-replace 2023-11-08 12:59:52 +01:00
Laurenz 51a8d26a12 Pin iai version 2023-11-08 12:59:48 +01:00
Laurenz 4794bd35fa Switch to workspace dependencies 2023-11-08 12:56:35 +01:00
Laurenz 7bb4f6df44 Version bump 2023-10-31 01:36:21 +01:00
Laurenz 360cc9b957 Version bump 2023-09-13 16:57:27 +02:00
Laurenz 2e86052340 Specify resolver 2023-08-25 17:57:15 +02:00
Laurenz da8367e189 Version bump 2023-08-07 17:19:41 +02:00
Laurenz ebfdb1dafa Move everything into `crates/` directory 2023-07-02 20:07:43 +02:00
Laurenz 2dfd44fedd Version bump 2023-06-30 16:21:57 +02:00
Laurenz 7b92bd7c34 Basic package management 2023-06-27 18:40:17 +02:00
Laurenz 3a8b9cce47 Version bump 2023-06-09 16:24:34 +02:00
Yang Hau 0dc1776202
refactor: Replace once_cell to std lib (#1402) 2023-06-07 14:42:58 +02:00
Lino Le Van 5400570efa
feat(cli): export as png (#1159)
Co-authored-by: Laurenz <laurmaedje@gmail.com>
2023-05-23 12:20:12 +02:00
Laurenz Stampfl 752817ae74
Add support for date & time handling (#435) 2023-05-23 10:41:20 +02:00
Laurenz f692a5efc6 Version bump 2023-05-20 22:05:55 +02:00
Laurenz 88cb8c2626 Bump comemo 2023-05-16 16:43:35 +02:00
Kevin Stevens 156aef10c4
Switch from unicode_xid to unicode_ident (#1208) 2023-05-15 09:35:46 +02:00
Laurenz 47dff3765d Remove 'static bound on `World`
Thanks to improvements in comemo, tracked types don't need to be 'static anymore. This means that the 'static bound on the `World` is now lifted and that the `Route` doesn't need to use unsafe code anymore to manage its lifetime.
2023-05-11 10:50:30 +02:00
HarmoGlace 856557353b
Add rust minimum version in `Cargo.toml` (#902) 2023-05-03 10:37:44 +02:00
Laurenz ad347632ab Make ligatures copyable and searchable
Fixes #479
Fixes #1040
2023-05-03 10:33:18 +02:00
Martin Haug 17cef8dcee
Add ICC profiles to images in PDF and update `usvg`, `svg2pdf` (#822) 2023-05-02 13:53:20 +02:00
Laurenz b1e0de0078 Version bump 2023-04-26 15:54:05 +02:00
Laurenz 3680c854a2 Touch up docs 2023-04-26 15:37:21 +02:00
Alex Saveau 1d42d6674c
Upgrade a bunch of deps and remove two unused ones (#968) 2023-04-26 11:22:43 +02:00
Laurenz 2a10862f45 Enable debug symbols in development 2023-04-24 15:21:12 +02:00
Laurenz 3cc0f1ef0d Disable stacker on WASM 2023-04-24 15:20:42 +02:00
Sébastien d'Herbais de Thun 561ff979d5
Add instrumentation (Part 1) (#761) 2023-04-23 14:33:56 +02:00
Laurenz 35302d2004 Handle SVG with text 2023-04-18 19:04:46 +02:00
Laurenz b51cb131bd Bump comemo 2023-04-17 19:59:45 +02:00
Laurenz 89cf4054d6 Reduce amount of hashing 2023-04-13 14:23:46 +02:00
Laurenz fe2640c552 Version bump 2023-04-11 22:34:25 +02:00
Daniel Csillag 5bc73be90f
Optimization to `Introspector::extract` (#734) 2023-04-11 19:11:44 +02:00
Ralph Langendam 94e052b8cc
Update tiny-skia (#166) 2023-04-07 11:38:18 +02:00
Laurenz b3faef4b80 Bump version 2023-04-05 01:41:15 +02:00
figsoda 613c644f04
Default workspace members to cli (#484) 2023-04-01 14:22:47 +02:00
Filip Andersson dffaef0832
Make release builds using LTO (#396) 2023-03-29 23:13:03 +02:00
Laurenz d71c933cca Bump dependencies 2023-03-27 15:49:04 +02:00
arctic-penguin 88e1134eec
strip cli target (#143)
Stripping `typst-cli` reduces the file size from 24 MB to 18 MB.
2023-03-24 09:08:58 +01:00
Laurenz d6aaae0cea Fix font embedding bugs 2023-03-19 20:58:03 +01:00
Laurenz ab841188e3 Bump `ecow` 2023-03-01 11:27:10 +01:00
Laurenz a1d47695a2 Switch to ecow 2023-02-23 12:20:47 +01:00
Martin Haug 58adf1d025 Add XMP 2023-02-12 23:32:14 +01:00
Laurenz 7d28e6499e Set Typst versions to `0.0.0` 2023-02-06 11:53:49 +01:00
Laurenz d4d702017c Documentation provider 2023-02-06 11:52:31 +01:00
Laurenz 1de53730bc Symbol values and modules 2023-01-27 12:04:36 +01:00
Laurenz 33585d9a3f Small fixes 2023-01-27 11:38:04 +01:00
Laurenz 760936af49 Remove ReX 2023-01-22 13:19:48 +01:00
Laurenz f3980c7045 Basic autocompletion 2022-12-14 10:10:26 +01:00
Laurenz 4c73456fc1 Move highlighting into new IDE module 2022-12-14 10:02:19 +01:00
Laurenz 5110a41de1 Introduce virtual typesetter 2022-12-02 13:21:36 +01:00
Laurenz 9db6e533cd Make content a bit more compact 2022-11-26 15:34:02 +01:00
Laurenz 46921a8c28 Separate test crate
This removes the not-really-cyclic dependency that confuses rust-analyzer. See also: https://github.com/rust-lang/rust-analyzer/issues/2414
2022-11-03 16:13:35 +01:00
Laurenz 37a7afddfa Split crates 2022-11-03 13:35:39 +01:00
Laurenz c0e972b91a Reduce dependencies from compiler on library 2022-10-18 00:04:12 +02:00
Laurenz e218226655 Merge some modules 2022-10-17 20:04:22 +02:00
Laurenz 54b38c4790 Bump dependencies 2022-10-15 17:37:01 +02:00
Laurenz 5a8534a395 Parse basic math syntax 2022-10-04 13:45:16 +02:00
Laurenz 7ef6cb31df Bump ttf-parser 2022-09-30 11:23:09 +02:00
Laurenz 8b4210669b Add `comemo` as git dependency 2022-09-25 19:43:26 +02:00
Laurenz fffb55f79a JSON reading 2022-09-25 17:37:16 +02:00
Laurenz ddd3b6a82b Tracked memoization 2022-09-21 20:25:57 +02:00
Laurenz 757a701c1a A New World 2022-09-20 16:37:15 +02:00
Laurenz e29f55bb29 Remove font store 2022-09-19 17:44:40 +02:00
Laurenz 9362c279de CSV reading 2022-07-27 00:09:15 +02:00
Laurenz 891af17260 Bump lipsum 2022-06-13 19:44:57 +02:00
Laurenz ed6550fdb0 Bump dependencies 2022-06-10 23:54:16 +02:00
Laurenz 806d9f0d9a Pure functions! 2022-05-26 17:14:44 +02:00
Laurenz 3965e10281 Hack in ReX for now 2022-05-18 19:09:57 +02:00
Laurenz 507c5fc925 Text replacement show rules 2022-05-04 00:14:31 +02:00
Martin Haug 649c101f07 Add blind text function 2022-04-25 14:20:47 +02:00
Laurenz c5b3f8ee98 Switch to `unscanny` 2022-04-16 22:23:57 +02:00
Laurenz c3a387b8f7 Segment by script 2022-04-12 22:23:08 +02:00
Laurenz beca01c826 Methods 2022-03-18 23:43:58 +01:00
Laurenz b71113d37a Hyphenation 2022-03-08 19:49:26 +01:00
Laurenz 4f85fc3acd Remove dependency on itertools 2022-02-26 00:13:44 +01:00
Laurenz 2bf32c51bc Remove layout cache 2022-02-22 12:42:02 +01:00
Laurenz 61d1e1a683 Remove layout-cache feature 2022-02-18 17:33:13 +01:00
Laurenz 68503b9a07 Redesigned template layout 2022-02-07 20:00:21 +01:00
Martin Haug 9a9c6f22c4 Add evasion of glyph shape for under- and overlines 2022-02-04 00:30:23 +01:00
Martin Haug 4f66907d08 Add Code Block syntax highlighting 2022-01-27 22:04:45 +01:00
Laurenz 3739ab7720 Export into rendered images 2022-01-24 17:39:49 +01:00
Laurenz db158719d6 Simplify CLI 2022-01-24 16:44:52 +01:00
Laurenz 5d5d8a21cf Bump and lock dependencies 2022-01-01 12:23:00 +01:00
Laurenz 958f74f777 Set Rules Episode VIII: The First Macro 2021-12-16 14:43:02 +01:00
Laurenz 40b87d4066 Set Rules Episode II: Attack of the properties 2021-12-07 16:36:39 +01:00
Martin Haug 738ff7e1f5 Reduce the size of the `FramesEntry` struct and bump edition 2021-12-13 15:56:14 +01:00
Martin Haug 7c829c5c1b Bump pdf-writer, svg2pdf and error messages
Co-Authored-By: Laurenz <laurmaedje@gmail.com>
2021-12-07 00:06:54 +01:00
Martin Haug f15ee7efb6 Add SVG capabilities 2021-12-06 14:58:57 +01:00
Laurenz 2982020480 Bump pdf-writer 2021-12-04 21:55:23 +01:00
Laurenz e915cc4ef0 No more duplicate debug prints due to incremental tests 2021-11-29 23:22:53 +01:00
Laurenz 8a88f71cb1 Transformations 2021-11-23 22:04:08 +01:00
Laurenz 02f114d072 Remove decorum 2021-11-22 15:50:35 +01:00
Laurenz cef46e6c40 Strokes 2021-11-20 15:51:07 +01:00
Laurenz 5e06941c63 Iterate over grapheme clusters instead of chars 2021-10-05 17:57:30 +02:00
Laurenz 2760e11145 Put rand behind layout cache feature 2021-09-29 00:09:41 +02:00
Laurenz d2618acd8d Bump pdf-writer 2021-09-09 12:16:55 +02:00
Laurenz 0001a965d7 Parse command line arguments with pico-args 2021-08-27 14:08:17 +02:00
Laurenz 7a2e3c80b5 PDF bug fixes
- Write correct subtype for CID Font
- Write CIDToGIDMap attribute
- Deduplicate CMap pairings
- Bump pdf-writer for string primitive fix
2021-08-24 17:18:50 +02:00
Laurenz 0806af4aec Kerned PDF output 2021-08-23 13:21:44 +02:00
Martin fdab7158c9
Pattern properties (#42)
Included in this package are:
* Code review I: The unnamed review.
* Code Review II: How I met your review.
* Code Review III: Code, the final frontier. These are the voyages of the USS Review ...
2021-08-19 15:07:11 +02:00
Martin c44ecbfbd2
Move to exclusively oneshot benchmarks with Iai fork (#41) 2021-08-18 18:12:26 +02:00
Laurenz 3c92bad9a7 Pretty-printed diagnostics with traceback 2021-08-01 00:00:36 +02:00
Laurenz 859275b17b Bump dependencies 2021-06-30 22:56:45 +02:00
Laurenz 1c43d8af12 Bump dependencies 2021-06-30 00:52:50 +02:00
Martin Haug 21d919e2d2 Put incremental compilation behind feature 2021-06-29 12:33:24 +02:00
Martin 80a9b300d1 Ref count the frames 2021-06-18 13:01:55 +02:00
Laurenz 7218892c72 Refactor path handling 2021-06-01 12:55:07 +02:00
Laurenz 00ac68b845 Fix and improve
- Set context location to resolved path during module evaluation.
- Dump module diagnostics on import
- Use same-file for more robustness than fs::canonicalize
2021-05-31 22:33:40 +02:00
Laurenz 0bfee5b777 Refactored loading and cache architecture 2021-05-28 12:46:43 +02:00
Martin Haug e27f6c1014 Add hash impls for all nodes
This prepares the incremental PR.

Co-Authored-By: Laurenz <laurmaedje@gmail.com>
2021-05-26 22:57:29 +02:00
Laurenz 6292d25afb Reengineer font and resource loading 🏞 2021-04-23 17:46:14 +02:00
Laurenz 72478946c2 Make frames serializable 📚
This also makes serialization support non-optional since it's too much feature-management for too little benefit.
2021-04-21 21:17:25 +02:00
Laurenz 076e767b0e Do binary search and find the outermost glyph with the text index 🔍
Co-Authored-By: Martin <mhaug@live.de>
2021-04-07 00:24:42 +02:00
Laurenz 464a6ff75e Deduplicate ttf-parser and rustybuzz face 🥞 2021-04-06 15:13:20 +02:00
Laurenz de20a21a58 Reshaping with unsafe-to-break
Co-Authored-By: Martin <mhaug@live.de>
2021-04-05 22:32:09 +02:00
Laurenz 79948c0c5e BiDi reordering 🔃
Co-Authored-By: Martin <mhaug@live.de>
2021-03-30 14:31:50 +02:00
Laurenz 309b8f20a8 Line break iterating run shaper 🌵
Co-Authored-By: Martin <mhaug@live.de>
2021-03-29 15:02:15 +02:00
Laurenz 73615f7e3c Text shaping 🚀
- Shapes text with rustybuzz
- Font fallback with family list
- Tofus are shown in the first font

Co-Authored-By: Martin <mhaug@live.de>
2021-03-24 17:12:34 +01:00
Laurenz 6720520ec0 Render svg emoji 🐳 2021-03-23 15:32:36 +01:00
Laurenz 3fb1f59f1e Bump tiny-skia to 0.5 🔼 2021-03-23 13:17:00 +01:00
Laurenz 3c74e4566a Faster compile times and test execution
- Optimize only dependencies, not the main crate
- Don't generate debug info
- Don't generate PDFs for all tets by default
2021-03-13 14:18:31 +01:00
Laurenz 45abcf6b2b Remove dependencies on itoa and ryu ⬇️ 2021-03-02 15:45:01 +01:00
Laurenz 0f0416054f Move value tests + smarter number formatting 🔢 2021-01-15 15:43:59 +01:00
Laurenz cfcb36b159 Move test files into category subfolders 🚚 2021-01-14 16:47:29 +01:00
Laurenz 0cfce1de7e Switch to miniz_oxide 🔼 2020-12-11 12:37:20 +01:00
Laurenz 1cbd5f3051 Refine test infrastructure
- Tests diagnostics
- More and better separated image tests
2020-12-10 22:45:45 +01:00
Laurenz fdc1b378a3 Compress images in PDFs ⚙ 2020-11-30 22:07:08 +01:00
Laurenz b4f809f1ea Move benchmarks into separate crate ♾
So that CI does not have to build criterion each time.
2020-11-25 19:28:04 +01:00
Laurenz e30d896c7b Switch to tiny-skia 🎨 2020-11-25 18:46:47 +01:00
Laurenz f105663037 Basic image support 🖼
- [image] function
- Image rendering in tests
- Supports JPEG and PNG
- No PDF export so far
2020-11-20 16:36:22 +01:00
Laurenz 2e6e6244cc Switch to pdf-writer ⬆️ 2020-11-19 23:46:51 +01:00
Laurenz 7ec7c49144 Don't panic 🌶 2020-11-05 13:07:13 +01:00
Laurenz 22697f0c0c Simple regression testing with file-based comparisons 2020-10-13 12:34:11 +02:00
Laurenz 1736bfc194 Rename typstc -> typst ✏ 2020-10-13 11:47:29 +02:00
Laurenz dd4a4545a6 Move main back into src/ 📨 2020-10-12 21:26:58 +02:00
Laurenz 38157b0e0c Synchronous layout 🪀 2020-10-12 17:10:01 +02:00
Laurenz 92c01da360 Switch back to custom geometry types, unified with layout primitives 🏞 2020-10-10 22:19:36 +02:00
Laurenz a41d7ab47d Expression evaluation with Eval trait 🧮 2020-10-04 20:07:01 +02:00
Laurenz 0fc25d732d Port to kurbo 🎋 2020-10-03 13:23:59 +02:00
Laurenz 3533268b1f Refactor parser 🏞 2020-10-02 15:43:29 +02:00
Laurenz ee11f87175 Enable features by default 💜 2020-09-30 12:53:02 +02:00
Laurenz fd9959fd04 Add end-to-end typesetting benchmark 🖊 2020-08-19 20:51:36 +02:00
Laurenz 30f16bbf64 Add Value type and replace dyn-nodes with call-exprs 🏗
- In addition to syntax trees there are now `Value`s, which syntax trees can be evaluated into (e.g. the tree is `5+5` and the value is `10`)
- Parsing is completely pure, function calls are not parsed into nodes, but into simple call expressions, which are resolved later
- Functions aren't dynamic nodes anymore, but simply functions which receive their arguments as a table and the layouting context
- Functions may return any `Value`
- Layouting is powered by functions which return the new `Commands` value, which informs the layouting engine what to do
- When a function returns a non-`Commands` value, the layouter simply dumps the value into the document in monospace
2020-08-16 22:39:21 +02:00
Laurenz 0ac2e86feb Add basic parsing benchmark 🌩 2020-08-14 19:54:49 +02:00
Laurenz dbfb3d2ced Formatting, documentation and small improvements 🧽 2020-08-03 16:04:55 +02:00
Laurenz cbbc46215f Layout elements and pure rust rendering 🥏 2020-08-02 21:17:42 +02:00
Laurenz d5ff97f42e Move binary into separate crate and tidy dependencies 🎭 2020-08-02 16:56:14 +02:00
Laurenz 2188ef6b89 Update Cargo.toml and CI configuration ⚙ 2020-08-02 11:58:47 +02:00
Laurenz 06dbac6efd Port font handling to fontdock and ttf-parser 🛳
- Use fontdock for indexing fonts and querying
- Typst binary now automatically indexes and uses system fonts in addition to a fixed font folder!
- Removes subsetting support for now (was half-finished anyways, plan is to use harfbuzz for subsetting in the future)
- Adds font width configuration support
2020-08-01 00:10:54 +02:00