Laurenz
57f5c0a1b1
Set Rules Episode V: The Tests Strike Back
2021-12-15 11:12:38 +01:00
Laurenz
ae38be9097
Set Rules Episode IV: A New Fold
2021-12-15 11:11:57 +01:00
Laurenz
fe21c4d399
Set Rules Episode III: Revenge of the packer
2021-12-09 13:42:52 +01:00
Laurenz
40b87d4066
Set Rules Episode II: Attack of the properties
2021-12-07 16:36:39 +01:00
Laurenz
26bdc1f0f6
Set Rules Episode I: The Phantom Style
2021-12-05 12:54:03 +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
Martin Haug
d971ac9a8c
Add a producer info for the PDF
2021-12-02 17:24:52 +01:00
Laurenz
bfa9962632
Remove baseline weirdness
2021-12-02 14:48:12 +01:00
Laurenz
f3bdc9d3da
Syntax highlighting
2021-11-30 18:55:50 +01:00
Laurenz
e4e4c1876f
Fix square and circle width & height
2021-11-29 16:13:53 +01:00
Laurenz
67705e2038
Fix vertical image expansion
2021-11-29 15:09:29 +01:00
Laurenz
cae60ea0cc
Go back to wrapping inline nodes
2021-11-29 13:12:50 +01:00
Laurenz
e36b8ed374
Layout bugfixes
2021-11-29 12:06:38 +01:00
Laurenz
50bd863471
More independent placed node
2021-11-26 23:51:18 +01:00
Laurenz
3a15922d2f
X/Y abstractions
2021-11-26 16:32:06 +01:00
Laurenz
393d74f9bb
Layout improvements
2021-11-25 20:51:16 +01:00
Laurenz
304d9dd110
Small style changes
2021-11-24 17:00:10 +01:00
Laurenz
8a88f71cb1
Transformations
2021-11-23 22:04:08 +01:00
Laurenz
c77c5a0f0a
Simpler alignment resolving
2021-11-23 14:25:50 +01:00
Laurenz
4f9e5819bb
2d alignments with plus operator
2021-11-23 12:45:20 +01:00
Laurenz
d3f6040ced
Horizon alignment
2021-11-23 11:58:16 +01:00
Laurenz
02f114d072
Remove decorum
2021-11-22 15:50:35 +01:00
Laurenz
0a974d86ba
Welcome to Tigerland
2021-11-22 15:26:56 +01:00
Laurenz
ed50661378
Castable optional and smart values
2021-11-29 16:47:35 +01:00
Laurenz
cef46e6c40
Strokes
2021-11-20 15:51:07 +01:00
Laurenz
70c0dd7674
Small fixes
2021-11-19 13:16:43 +01:00
Laurenz
5a59bb4821
Page fill
2021-11-18 12:50:28 +01:00
Laurenz
b2e6a29789
Refactoring
2021-11-18 00:58:32 +01:00
Laurenz
d9c529347d
Configurable paragraph alignment
2021-11-17 23:54:43 +01:00
Laurenz
095fa52be5
Placed node
2021-11-17 23:09:23 +01:00
Laurenz
e869c899bc
More intuitive auto image sizing in grid
2021-11-17 22:29:23 +01:00
Laurenz
89f2e71852
Align node
2021-11-17 17:09:19 +01:00
Laurenz
9a800daa82
Image fit modes
2021-11-16 21:32:29 +01:00
Laurenz
0cdf17216f
Abstraction for fr resolving
2021-11-16 18:15:47 +01:00
Laurenz
79638d4bbd
Don't wrap already layoutable nodes into flows/pars unnecessarily
2021-11-16 12:47:14 +01:00
Laurenz
73c4701749
Introduce `SizedNode`
2021-11-16 11:40:42 +01:00
Laurenz
0e0f340502
Revert page and inline levels
2021-11-16 10:41:30 +01:00
Laurenz
bc118634ac
Remove alignment from stack
2021-11-16 10:22:46 +01:00
Laurenz
210c4d9373
Move `lang` functionality into `par`
2021-11-16 00:37:33 +01:00
Laurenz
370802de13
Simplify `FlowNode` a bit
2021-11-16 00:32:41 +01:00
Laurenz
972c940e07
Introduce `FlowNode`
2021-11-16 00:12:43 +01:00
Martin Haug
bcde4a3e51
Fix a grid constraint
2021-11-27 15:05:26 +01:00
Martin Haug
5677766715
Fix some comments
2021-11-24 20:07:44 +01:00
Laurenz
0ad0fa5a05
RTL tracking test
2021-11-20 13:26:28 +01:00
Martin Haug
c020707ebc
Add tracking to font function
2021-11-20 12:36:03 +01:00
Laurenz
63c274e7f6
Make clippy happier and remove `Str`
2021-11-15 17:06:43 +01:00
Laurenz
8a38899c98
Tidying
2021-11-14 15:06:34 +01:00
Laurenz
14048937b8
Search for fonts in the project directory
2021-11-14 13:13:27 +01:00
Laurenz
38c5c36241
Final touches
2021-11-08 13:06:11 +01:00
Laurenz
75fffc1f9b
Fine-grained capturing
2021-11-08 11:52:09 +01:00
Laurenz
95866d5fc9
Tidy up AST
2021-11-08 01:37:49 +01:00
Laurenz
8117ca9950
Deduplicate trivia search
2021-11-06 15:49:39 +01:00
Laurenz
41bdafb578
Faster parser
2021-11-06 15:49:39 +01:00
Laurenz
515fe89c5e
Style changes
...
Co-Authored-By: Martin <mhaug@live.de>
2021-11-05 13:46:42 +01:00
Martin Haug
cf2e527a02
Code Review: No Patrick, question marks are not an instrument
2021-11-05 13:46:41 +01:00
Martin Haug
5c952d56d0
New error handling
2021-11-05 13:46:41 +01:00
Laurenz
f0c9635db5
Notes
2021-11-05 13:46:41 +01:00
Laurenz
65fac0e57c
Refactoring
...
Co-Authored-By: Martin <mhaug@live.de>
2021-11-05 13:46:41 +01:00
Martin Haug
42afb27cef
Add documentation
2021-11-05 13:44:50 +01:00
Martin Haug
49fb3cd4e2
Code Review: Life is Like a Box of Iterators
2021-11-05 13:44:50 +01:00
Martin Haug
7d34a548cc
Reorganize syntax module
2021-11-05 13:44:50 +01:00
Martin Haug
2e7d359e59
Unicode escape error moved to tokenizer
2021-11-05 13:44:49 +01:00
Martin Haug
c569e14c07
Improve error handling
2021-11-05 13:44:49 +01:00
Martin Haug
1c0ac793d2
Slim `NodeKind` memory footprint
2021-11-05 13:44:49 +01:00
Martin Haug
84d35efee3
Less owning, more iterating
2021-11-05 13:44:49 +01:00
Martin Haug
4875633acf
Change parser
2021-11-05 13:44:49 +01:00
Laurenz
ea6ee3f667
Fix page breaks in lists and enums
2021-11-02 10:42:32 +01:00
Laurenz
c4a87e5e7c
Number style -> type
2021-11-02 10:39:45 +01:00
Laurenz
072e7c710c
Reduce namespace pollution
2021-11-02 10:39:45 +01:00
Martin Haug
8ccb7d6f15
Smallcaps, sub- and superscript, ligature ctrls...
2021-11-02 10:39:45 +01:00
Laurenz
5b344b663a
Reorganize modules
...
Instead of separating functionality into layout and library, everything lives in the library now. This way, related things live side by side and there are no duplicate file names in the two directories.
2021-10-31 15:52:35 +01:00
Laurenz
feff013abb
More useful `Spec` helpers
2021-10-31 14:40:15 +01:00
Laurenz
564cb7e989
Fix panic in pad node
2021-10-31 13:51:28 +01:00
Laurenz
4645d1a517
Switch to borrowed strings in `split_lines`
2021-10-29 16:36:09 +02:00
Laurenz
1af194f383
Dedent code blocks
2021-10-29 16:26:47 +02:00
Laurenz
de6786eb28
Allow multiple template bodies
2021-10-29 16:04:55 +02:00
Laurenz
d1ecb7e52e
Add `move` function
2021-10-28 16:51:57 +02:00
Laurenz
5c534fb428
Simplify node construction
2021-10-26 17:14:11 +02:00
Laurenz
fb0cd3df6e
Fr in stack and par
2021-10-26 14:56:10 +02:00
Laurenz
1ca4ff69e2
Trim `mailto:` and `tel:` from links
2021-10-26 14:51:57 +02:00
Laurenz
3968181622
Replace `..` syntax with `range` function
2021-10-25 13:38:32 +02:00
Laurenz
adf52a873f
Drop `iso-` prefix for A papers
2021-10-23 22:52:40 +02:00
Laurenz
b42ecbd6a6
Simplify decorations
2021-10-23 20:24:35 +02:00
Laurenz
5becb32ba4
Introduce page / block / inline levels
2021-10-23 20:23:47 +02:00
Laurenz
c627847cb3
Remove directions from grid
2021-10-23 20:22:47 +02:00
Laurenz
6690bc2354
Revise block node contract
...
Frames produced by block nodes are now always treated as exactly one per
given region and a frame must not be larger than its respective region.
Any overflow must be handled internally. This means that stack and grid
don't need to search for fitting regions anymore, since the child has
already does that for them. This commit further moves stack spacing into
a new `SpacingNode`.
2021-10-23 20:22:47 +02:00
Laurenz
1e74f7c407
New `ShapeNode`
...
Replaces `BackgroundNode` and `FixedNode`
2021-10-23 20:22:47 +02:00
Laurenz
5f4dde0a6b
Remove inline alignment from stack
...
The current inline alignment is very broken and leads to lots of subtle weirdness. Getting rid of it simplifies the stack's interface a lot. At a later point either:
- inline alignment will be added back in a better way, or
- all nodes will be able to expand or align themselves, meaning that the stack's children take care of their alignment
2021-10-23 20:22:47 +02:00
Laurenz
9ac125dea8
Rename `State` to `Style` and move it into its own module
2021-10-10 21:04:10 +02:00
Laurenz
d4cc8c775d
Move paint and colors into `geom`
2021-10-10 20:26:58 +02:00
Laurenz
f4ed775df0
Make `none` spreadable
2021-10-10 12:16:28 +02:00
Laurenz
c0f5cd011f
Slim down and organize paper sizes
...
Co-Authored-By: Martin <mhaug@live.de>
2021-10-07 14:11:56 +02:00
Laurenz
61fdc85b13
Refactor a bit
2021-10-05 23:23:09 +02:00
Laurenz
b69c0355ec
Don't fit images to remaining height
...
Makes them really small if there's only little space left ...
2021-10-05 20:05:15 +02:00
Laurenz
3d0dcbea18
Error on out-of-range values in `rgb`
2021-10-05 19:55:15 +02:00
Laurenz
25b053ed93
Rename `length` to `size` in `square()`
2021-10-05 19:55:00 +02:00
Laurenz
ae05dc0876
Always use first positional argument in `expect()`
...
This changes `#h(100)` from "missing argument: spacing" to "expected linear, found integer".
2021-10-05 19:45:38 +02:00
Laurenz
0a23bfbc23
Add `assert` function
2021-10-05 19:37:38 +02:00
Laurenz
58d1cc68d9
Let `h`, `v` and `pagebreak` return template
2021-10-05 19:30:12 +02:00
Laurenz
155673c15e
Paper longhand for page function
2021-10-05 19:23:45 +02:00
Laurenz
4ff1519bea
Fill shorthand for font function
2021-10-05 19:19:55 +02:00
Laurenz
5e06941c63
Iterate over grapheme clusters instead of chars
2021-10-05 17:57:30 +02:00
Laurenz
00be5d36c4
Change indent requirements to allow alignment
...
Previously the following wouldn't work correctly because "Fourth" would have been a child of "Third".
```
3. Third
⎵. Fourth
```
2021-10-05 17:25:58 +02:00
Laurenz
4b2c6334d0
Change precedence of range expression
2021-10-05 17:19:48 +02:00
Laurenz
c25c6a35b2
Simpler and more versatile row and column gutter arguments
2021-10-02 19:35:02 +02:00
Laurenz
1d60525690
Fix panic in grid due to empty auto row
2021-10-02 18:41:03 +02:00
Laurenz
2818ceee44
New default fonts
2021-09-30 22:50:14 +02:00
Laurenz
30f302f7ff
Treat lone hashtag as text
2021-09-30 19:41:28 +02:00
Laurenz
9e78dbe525
Better function and closure pretty printing
2021-09-30 19:07:17 +02:00
Laurenz
6d26e15fbe
Support `else if`
2021-09-30 19:07:06 +02:00
Laurenz
9e95502622
No hashtag before else anymore
2021-09-30 18:28:25 +02:00
Laurenz
989d344d3d
Implement `Display` for `Tracepoint`
2021-09-29 00:10:39 +02:00
Laurenz
a0065eef86
Make file system loader serializable
2021-09-29 00:10:21 +02:00
Laurenz
0e89facb53
Allow linear values for text edges
2021-09-28 10:53:54 +02:00
Laurenz
f1ab290572
Refactor line reordering from callback to iterator
2021-09-27 22:45:29 +02:00
Laurenz
ed0c804017
Add spacing capabilities to stack function
...
- Named argument `spacing` controls spacing between any two template arguments
- Arbitrary linears in the list can produce arbitrary spacing
2021-09-27 22:23:26 +02:00
Laurenz
e10b3d838a
Fix panic due to bad alignments in stack function
2021-09-27 13:45:18 +02:00
Laurenz
ff37a2893d
More useful incremental checks
...
Co-Authored-By: Martin <mhaug@live.de>
2021-09-27 11:40:28 +02:00
Laurenz
1982a0639e
Expand all but last region for broken up auto rows
2021-09-27 11:39:31 +02:00
Laurenz
6c478face4
Fix paragraph constraints
...
Co-Authored-By: Martin <mhaug@live.de>
2021-09-27 11:38:18 +02:00
Laurenz
19e17cc6ac
Simplify decoration handling
2021-09-26 12:43:45 +02:00
Laurenz
a493b9533a
More useful `Debug` impls
2021-09-26 12:24:24 +02:00
Laurenz
72eb243e26
Simplify source file loading logic
2021-09-25 23:44:33 +02:00
Laurenz
5594868f8b
Prevent paragraph from overflowing due to trailing linebreak
2021-09-25 23:35:27 +02:00
Laurenz
ea921aca5d
Blocks directly in template also scope
2021-09-15 13:12:07 +02:00
Laurenz
5de791d9e6
Rename `SyntaxTree` to `Markup`
...
Also `SyntaxNode` -> `MarkupNode`.
2021-09-15 13:05:01 +02:00
Laurenz
c18321a4c2
Bugfix and tidying
2021-09-15 13:05:00 +02:00
Laurenz
87e776fceb
Add `BoolExt` trait with `flip` method
2021-09-14 12:27:21 +02:00
Laurenz
18190f377a
Reimplement `Debug` for layout nodes
2021-09-10 15:10:35 +02:00
Laurenz
b0b4607725
Set the correct base for grid cells
2021-09-10 15:10:34 +02:00
Laurenz
50a464488c
Fix fr rows in infinite region
2021-09-10 15:10:34 +02:00
Laurenz
f592662aa0
Rename `Arguments` to `Args`
2021-09-10 12:27:33 +02:00
Laurenz
d2618acd8d
Bump pdf-writer
2021-09-09 12:16:55 +02:00
Laurenz
7f48e8fe66
Make user-facing "debug" representation use Debug instead of Display
2021-08-31 16:25:12 +02:00
Laurenz
3481d8cc81
More utility functions
...
- join("a", "b", "c", sep: ", ")
- int("12")
- float("31.4e-1")
- str(10)
- sorted((3, 2, 1))
2021-08-31 12:59:53 +02:00
Laurenz
ee84bf7408
Add abs() function
2021-08-30 16:59:09 +02:00
Laurenz
ff25573224
Lower- and uppercase string conversion functions
2021-08-30 16:39:16 +02:00
Laurenz
e4e79990da
Allow body for font function once again
2021-08-29 15:09:54 +02:00
Laurenz
411aba5b6f
Subset CFF subrs referenced by FD array
2021-08-29 14:46:51 +02:00
Laurenz
d101612414
Primitive CFF1 subsetting
...
The subsetting strategy is somewhat crazy for now: Simply zero the glyph data for all unused glyphs. While the CFF table itself doesn't shrink, the actual embedded font is compressed and greatly benefits from the repeated zeros.
This already compresses the fonts a lot (~90% for NotoSerifCJK), but they are still quite large.
Therefore, the plan of action:
- First, find more data that can be zeroed out.
- Then _maybe_ see whether we can instead properly rebuild the subsetted font.
2021-08-28 23:53:46 +02:00
Laurenz
73b63ffb99
Refactor subsetter
...
- Gracefully handle failed subsetting of one table
- Remove need for creating a ttf-parser face
2021-08-27 14:11:49 +02:00
Laurenz
dff2175558
Subset post table
2021-08-27 14:08:32 +02:00
Laurenz
17ea0d4ba9
Make font fallback disableable
2021-08-27 14:08:31 +02:00
Laurenz
7eeafbd464
Font family things
...
- Better default font family order
- Remove weird leading dots from font family names
- Public API for retrieving all found font families
2021-08-27 14:08:31 +02:00
Laurenz
0001a965d7
Parse command line arguments with pico-args
2021-08-27 14:08:17 +02:00
Laurenz
0471e51bc4
Compress all PDF streams
2021-08-25 13:45:49 +02:00
Laurenz
f2882bf854
Support decoding of mac roman names
...
This allows discovery of Apple fonts without unicode name entries.
2021-08-25 13:24:30 +02:00
Laurenz
821536b253
Subset glyf and loca tables
2021-08-25 12:12:47 +02:00
Laurenz
6f84cf3c22
Basic subsetting architecture
...
Constructs a brand new font file where only necessary tables are contained.
2021-08-24 23:43:51 +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
148a06c070
Switch from state to decorations for underline/strikethrough/overline
2021-08-24 00:41:15 +02:00
Martin
d546453880
Links! ( #43 )
...
Co-authored-by: Laurenz <laurmaedje@gmail.com>
2021-08-23 23:56:33 +02:00
Laurenz
0806af4aec
Kerned PDF output
2021-08-23 13:21:44 +02:00
Laurenz
c0377de653
Shorter/clearer field name for geometry types
...
Size { width, height } => Size { w, h }
Spec { horizontal, vertical } => Spec { x, y }
Gen { cross, main } => Gen { inline, block }
2021-08-21 19:08:47 +02:00
Laurenz
0dd4ae0a7a
Prune derives
2021-08-21 17:30:21 +02:00
Laurenz
f38eb10c2b
Make better use of existing variables in grid
2021-08-21 15:28:44 +02:00
Laurenz
f71c38b38d
Turn backlog into iterator
2021-08-21 15:28:26 +02:00
Laurenz
a6f260ca39
Refactor layouting a bit
...
Notably:
- Handle aspect ratio in fixed node
- Inline constraint inflation into pad node
2021-08-19 15:52:15 +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
011865ab5c
Memory loader
2021-08-18 14:25:49 +02:00
Laurenz
594809e35b
Library functions behave more imperatively
...
- Templates scope state changes
- State-modifying function operate in place instead of returning a template
- Internal template representation contains actual owned nodes instead of a pointer to a syntax tree + an expression map
- No more wide calls
2021-08-17 22:20:37 +02:00
Laurenz
c53d98a22f
More logical ordering and naming
2021-08-17 12:49:48 +02:00
Laurenz
9a798ce6f6
Make percentages for h and v relative to area instead of font size
2021-08-17 00:17:28 +02:00
Laurenz
9462fb17b3
Convert single-field structs to tuple structs
2021-08-16 19:15:03 +02:00
Laurenz
cb0aab3cfa
Change how functions are called
2021-08-16 18:14:58 +02:00
Laurenz
ba6b91e2ee
Editable source files
2021-08-16 14:40:02 +02:00
Laurenz
7e6e7e928c
Adjust macros to new version
2021-08-14 23:53:57 +02:00
Laurenz
6ae6d86b9c
Separate type for string values
2021-08-14 15:55:39 +02:00
Laurenz
fcb4e45118
Fix bug on unix again
2021-08-13 19:37:51 +02:00
Laurenz
f6814b7732
Optimize memory sizes
2021-08-13 18:17:24 +02:00
Laurenz
6a3385e4e7
Argument collection and spreading
2021-08-13 16:55:45 +02:00
Laurenz
144f208821
Add file information to spans
2021-08-13 14:33:58 +02:00
Laurenz
d002cdf451
Named arguments for user defined functions
2021-08-12 16:07:42 +02:00
Laurenz
ccb4be4da4
Make range-end exclusive
2021-08-12 14:54:52 +02:00
Laurenz
eaa3cbaa9c
Array and dictionary indexing
2021-08-12 13:56:23 +02:00
Laurenz
8207c31aec
Minor refactorings
...
- Reorder parser methods and use `Pos` everywhere
- Remove tab special handling for columns and adapt heading/list/enum indent handling
- Don't panic when a file has an empty path
2021-08-10 11:28:12 +02:00
Laurenz
3932bb2cb9
New source loading architecture
2021-08-09 11:26:41 +02:00
Laurenz
3c92bad9a7
Pretty-printed diagnostics with traceback
2021-08-01 00:00:36 +02:00
Laurenz
fbd3d19113
Call args span now includes parens
2021-07-31 22:41:06 +02:00
Laurenz
1ee1d078e2
Fatal errors
...
- Makes errors fatal, so that a phase is only reached when all previous phases were error-free
- Parsing still recovers and can produce multiple errors
- Evaluation fails fast and can thus produce only a single error (except for parse errors due to an import)
- The single error that could occur during execution is removed for now
- Removes Value::Error variant
2021-07-30 18:49:19 +02:00
Laurenz
42a27b48df
Change derive order
2021-07-29 22:27:10 +02:00
Laurenz
2c6127dea6
Refactor state
2021-07-29 13:28:19 +02:00
Laurenz
7d15dc634b
Move font family and refactor alignment
2021-07-29 12:28:54 +02:00
Laurenz
853361338b
Better addition and iteration for array, dict and template
2021-07-29 12:01:06 +02:00
Laurenz
312dcd070c
Move EcoString and OptionExt into util
2021-07-29 11:35:49 +02:00
Laurenz
6ebe621834
Use last instead of next_back
2021-07-27 18:53:09 +02:00
Laurenz
39a561f2bb
Slightly more expressive method name
2021-07-26 00:29:41 +02:00
Laurenz
7aa3d2c2d6
No more excessive region cloning
2021-07-26 00:29:37 +02:00
Laurenz
56cbf96fe2
Move incremental test into separate function
2021-07-26 00:08:08 +02:00
Laurenz
88d3be2581
Remove PageState::new
2021-07-25 23:41:04 +02:00
Laurenz
c97b3078eb
Merge font and par state into text state
2021-07-25 12:10:44 +02:00
Laurenz
ec5384c97f
State-based monospace handling
2021-07-25 01:16:38 +02:00
Laurenz
dcfbf95220
Fix comment
2021-07-25 01:03:38 +02:00
Laurenz
adb71ee040
Move and refactor
2021-07-25 01:03:38 +02:00
Laurenz
927f1154fa
More efficient function representation
2021-07-21 16:55:32 +02:00
Laurenz
929f4d64fe
Switch Loader from Option to io::Result
2021-07-21 12:27:40 +02:00