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