Patrick Walton
efc8a8bfd7
Add the stub legalizer code to the C API
2017-07-09 13:59:33 -07:00
Patrick Walton
8bcf6de4f5
Add stub code for the legalizer, which will convert curves into monotonic segments.
2017-07-08 16:46:26 -07:00
Patrick Walton
9a9ef90cc9
Generate edge descriptors for instanced rendering when Levien AA is in use
2017-07-07 14:19:33 -07:00
Patrick Walton
0edb604612
Rename "bezieroid" to "B-quad"
2017-07-06 11:39:52 -07:00
Patrick Walton
56101cea9a
Add `no_mangle` in a few places
2017-07-05 19:50:49 -07:00
Patrick Walton
f2835071c7
Initial software tessellation code
2017-07-05 17:03:05 -07:00
Patrick Walton
a066e77c72
Clear out old bezieroids when partitioning a new path. Oops!
2017-07-04 11:51:58 -07:00
Patrick Walton
410d2aa6cd
Don't give up so quickly when performing Newton-Raphson
2017-07-03 20:25:55 -04:00
Patrick Walton
5393f63738
Set left endpoint indices properly on MIN points; basic paths without curves now partition properly
2017-07-03 20:02:59 -04:00
Patrick Walton
0468bbcc24
Fix more random silly bugs; a basic monotone polygon partitions correctly now
2017-07-03 19:26:55 -04:00
Patrick Walton
ffd167a342
Various bug fixes
2017-07-03 15:32:22 -04:00
Patrick Walton
b546ffebcc
Fix issues with jemalloc; remove the needless path index from `Subpath`
2017-07-02 16:41:33 -04:00
Patrick Walton
d695a3d11f
Implement some missing geometry methods, and remove the `Path` type.
...
With the removal of the `Path` type, partitioning multiple paths becomes the responsibility of the user of the library. The reason is that users of the partitioner will frequently want to parallelize over paths via e.g. rayon or Grand Central Dispatch, and we shouldn't mandate a particular parallelism technique.
2017-07-02 15:48:57 -04:00
Patrick Walton
2fde50113c
Initial commit of Pathfinder 2, still incomplete
2017-06-30 17:43:19 -07:00
Patrick Walton
93c928bf5c
Move Pathfinder to `pathfinder-classic` in preparation for Pathfinder 2
2017-06-27 14:13:11 -07:00
Patrick Walton
b75cd9e5a9
Add an API allowing for custom vector paths
2017-03-03 13:32:51 -08:00
Patrick Walton
7862bec2bb
Speed up `lorem-ipsum`, especially in debug builds
2017-02-28 21:47:17 -08:00
Patrick Walton
45ade674be
Refactor `lorem-ipsum`
2017-02-28 12:33:42 -08:00
Patrick Walton
a9c4c7aa3e
Implement most of the basic arithmetic and control structures in the hinting VM
2017-02-27 12:52:14 -08:00
Patrick Walton
6d66cfc30a
Begin to implement the interpreter
2017-02-26 12:12:34 -08:00
Patrick Walton
37736b27b9
Fix interpreter a bit; Arial fpgm now parses
2017-02-24 12:19:32 -08:00
Patrick Walton
88d1e3163d
Analyze branch targets in TrueType instructions
2017-02-24 09:38:46 -08:00
Patrick Walton
9c07c1a4a6
Parse TrueType instructions
2017-02-23 21:56:33 -08:00
Patrick Walton
d29775c345
Add skeleton code for TrueType hinting, not functional yet
2017-02-23 17:41:52 -08:00
Patrick Walton
b86133a4ef
Initial experimental support for subpixel antialiasing
2017-02-22 16:31:44 -08:00
Patrick Walton
5e9b8c9423
Implement basic support for WOFF 1.0
2017-02-22 14:19:27 -08:00
Patrick Walton
9490fa2d3b
Split the `otf` module up into `containers` and `tables`.
...
Putting all container format parsing in `otf/mod.rs` won't scale as we add more, such as WOFF.
2017-02-22 10:22:14 -08:00
Patrick Walton
9fda8f6534
Move the subpixel positioning logic in `lorem-ipsum` to the Typesetter abstraction
2017-02-21 21:50:00 -08:00
Patrick Walton
68f5694b6b
Factor out more code from `lorem-ipsum` into a new `GlyphStore` abstraction
2017-02-21 15:51:39 -08:00
Patrick Walton
abacb5a4c9
Move some code from `lorem-ipsum` into a new `Typesetter` object so others can use it
2017-02-21 13:06:48 -08:00
Patrick Walton
49408b95cb
Add support for subpixel offsets.
...
Closes #11 .
2017-02-20 16:01:15 -08:00
Patrick Walton
e2014cff13
Add some missing CFF opcodes and refactor a bit
2017-02-16 20:39:25 -08:00
Patrick Walton
6ac37c5085
Support cubic Béziers for fonts with CFF outlines
2017-02-16 19:37:21 -08:00
Patrick Walton
a508322f34
Merge pull request #10 from stshine/gitignore
...
Add .gitignore
2017-02-16 16:23:55 -08:00
Pu Xingyu
c8e6d27520
Add .gitignore
...
Add gitignore file to ease development.
2017-02-16 16:06:17 +08:00
Patrick Walton
51e20b2a35
Mention Linux packages in the README
...
Closes #8 .
2017-02-15 18:20:15 -08:00
Patrick Walton
e71dd1241f
Implement partial support for the CFF format
...
Curves are not yet supported.
2017-02-15 18:18:37 -08:00
Patrick Walton
4ffc3b9e41
Mention how to move and zoom in the demo
2017-02-14 13:46:53 -08:00
Patrick Walton
1b10ffdd54
Try to fix Linux/Windows
2017-02-14 12:29:30 -08:00
Patrick Walton
731360bc9d
Try to fix RGBA atlas generation in OpenGL
2017-02-13 12:32:15 -08:00
Patrick Walton
b000f6d882
Fix the case where the first and last points are both off-curve
2017-02-13 11:56:10 -08:00
Patrick Walton
cd11deab46
Support RGBA atlases, needed for WebRender
2017-02-10 19:07:23 -08:00
Patrick Walton
959293839f
Read shaders from disk instead of compiling them into the binary
2017-02-10 17:44:22 -08:00
Patrick Walton
c4c19076c7
Allow the same glyph at different sizes to be rendered into the same atlas.
2017-02-10 17:20:05 -08:00
Patrick Walton
d306ef01d1
Complete the documentation
2017-02-10 16:04:13 -08:00
Patrick Walton
6261c87b89
Read the OS/2 metrics to determine the right line spacing
2017-02-09 20:02:32 -08:00
Patrick Walton
55e1502eb2
Add build instructions
2017-02-09 17:40:37 -08:00
Patrick Walton
96daa32b90
Move direction calculation from the TCS to the TES to properly handle cusps
2017-02-09 17:09:19 -08:00
Patrick Walton
1e50bf78ba
Implement basic kerning via the 'kern' table
2017-02-08 17:10:49 -08:00
Patrick Walton
5ecfadc3be
Update for unorm change in `compute-shader`
2017-02-08 16:29:23 -08:00
Patrick Walton
a0b23592b5
Allow specific fonts in collections to be selected
2017-02-08 15:34:16 -08:00
Patrick Walton
ed4bc9b5b6
Add a README and a license
2017-02-08 14:10:42 -08:00
Patrick Walton
428a91aefa
Get things working on Windows
2017-02-08 13:55:36 -08:00
Patrick Walton
851b40ea6c
Document the crate
2017-02-07 20:20:14 -08:00
Patrick Walton
ccf17493e0
Rename `GlyphRanges` to `GlyphMapping` and document it
2017-02-07 20:02:10 -08:00
Patrick Walton
dcd3eefa33
Refactor the API to consume builders
2017-02-07 19:32:32 -08:00
Patrick Walton
9b6e8d1f41
Add some documentation
2017-02-07 17:19:36 -08:00
Patrick Walton
0e3aeb782d
Fix a couple of integer overflows
2017-02-07 16:53:37 -08:00
Patrick Walton
a6711af84f
Add support for Format 12 cmaps
2017-02-07 16:04:15 -08:00
Patrick Walton
66d239cf2f
Break at word boundaries
2017-02-07 14:40:03 -08:00
Patrick Walton
e9fd5d6b1b
Work around driver bugs on Apple Radeon GPUs
2017-02-07 14:39:36 -08:00
Patrick Walton
4be3938ab7
Reformat the lorem ipsum text
2017-02-06 18:13:58 -08:00
Patrick Walton
65153b65ee
Fix subpixel positioning
2017-02-06 18:02:16 -08:00
Patrick Walton
7cd7210304
Fix winding rule to paint negative winding numbers
2017-02-06 15:28:23 -08:00
Patrick Walton
bc6efc9b62
Compute shelf height properly
2017-02-06 14:45:06 -08:00
Patrick Walton
8033149e8b
Fix calculation of glyph offset in indirect-mapped tables
2017-02-06 12:54:32 -08:00
Patrick Walton
23f7f88f43
Add support for composite glyphs
2017-02-06 11:44:26 -08:00
Patrick Walton
5453afa7a1
Add errors throughout
2017-02-03 18:25:56 -08:00
Patrick Walton
78c03a9594
Fix TTC handling
2017-02-03 18:03:51 -08:00
Patrick Walton
316123123a
Add error handling to the OTF format
2017-02-03 17:52:33 -08:00
Patrick Walton
23fa035178
Rename "glyph buffer" to "outline", since "glyph" is ambiguous
2017-02-03 17:18:05 -08:00
Patrick Walton
d5be9e1f16
Rename "batch" to "atlas" and "atlas" to "rect packer"
2017-02-03 17:04:57 -08:00
Patrick Walton
86fec9ff54
Fix local path in Cargo.toml
2017-02-03 15:18:48 -08:00
Patrick Walton
da7c70f035
Handle glyph outlines in which the first point is off-curve correctly.
...
These show up in Helvetica.dfont and Times.dfont.
2017-02-03 15:18:07 -08:00
Patrick Walton
ce383385df
Add partial support for Mac `.dfont` suitcases
2017-02-03 13:13:54 -08:00
Patrick Walton
4418f5b07c
Audit public members some
2017-02-02 17:00:37 -08:00
Patrick Walton
3fb592e05a
Fix up examples and tests
2017-02-02 16:40:46 -08:00
Patrick Walton
c41cd1f150
Remove local path mistakenly added to Cargo.toml
2017-02-02 16:07:07 -08:00
Patrick Walton
b7e9763e5a
Update the benchmark
2017-02-02 16:06:36 -08:00
Patrick Walton
94406a1d62
Add a simple benchmarking tool. Only benchmarks GPU time, not CPU for
...
now.
2017-01-31 18:33:24 -08:00
Patrick Walton
6ae7601283
Add borders between glyphs in the atlas; allow the atlas to be dumped in the demo
2017-01-30 20:04:39 -08:00
Patrick Walton
5bccf88445
Make zooming work better; fix atlas sizing bugs
2017-01-30 18:33:44 -08:00
Patrick Walton
a927294790
Add rudimentary support for TTC
2017-01-27 13:01:21 -08:00
Patrick Walton
8fbb875654
Stop leaking glyph buffers
2017-01-27 11:31:24 -08:00
Patrick Walton
04ae5651ec
Add more text to the Lorem Ipsum demo and fix handling of empty glyphs
...
in the loca table
2017-01-26 20:56:14 -08:00
Patrick Walton
89a2bf54b0
Add a new example and a toy shaper
2017-01-26 18:53:50 -08:00
Patrick Walton
1deaf9136e
Don't require users of the library to load OTF tables individually
2017-01-26 10:27:38 -08:00
Patrick Walton
30daf10cdd
Fix syntax on Linux; drop GL version to 3.3
2017-01-25 20:25:54 -08:00
Patrick Walton
2f181f23aa
Add a draft GLSL accumulation step, currently untested
2017-01-25 19:22:04 -08:00
Patrick Walton
1336bb790e
Add a geometry-shader-based path for debugging.
...
This is useful for testing via llvmpipe or softpipe on Linux, because
no software Mesa backend supports tessellation shaders.
2017-01-25 18:53:11 -08:00
Patrick Walton
d5b61e382e
Get things basically working
2017-01-25 17:08:00 -08:00
Patrick Walton
50ad78db2a
Draft end-to-end support for the new algorithm. Not working yet.
2017-01-24 15:30:14 -08:00
Patrick Walton
1cd3a1e6bd
Migrate the glyph buffers to be OpenGL buffers
2017-01-23 22:03:40 -08:00
Patrick Walton
0569831969
Fix shader compilation errors; convert the coverage buffer to a texture
2017-01-23 19:39:51 -08:00
Patrick Walton
f1ec3385de
Draft shader code for the new tessellation-based algorithm
2017-01-23 15:33:12 -08:00
Patrick Walton
bdf6ebab24
Draft complete end-to-end code. Not working yet.
2017-01-11 20:44:10 -08:00
Patrick Walton
7056a7632b
Create buffers and create skeleton OpenCL shaders
2017-01-10 19:57:08 -08:00
Patrick Walton
d59bafced1
Implement batch creation
2017-01-10 13:37:01 -08:00
Patrick Walton
941aaea676
Encode contours. 0.3-0.4 µs per glyph or so.
2017-01-09 19:49:00 -08:00
Patrick Walton
fd73145b9d
Remove some debugging printlns
2017-01-09 18:32:56 -08:00