Commit Graph

111 Commits

Author SHA1 Message Date
Patrick Walton 0e39b409ae Use de Casteljau subdivision to split curves instead of doing that repeatedly in the shader.
This doesn't seem to negatively affect performance on the CPU and reduces complexity overall.
2017-08-07 10:19:32 -07:00
Patrick Walton 8730df37a7 Quadratics work now for simple cases 2017-07-11 17:20:03 -07:00
Patrick Walton a7ba7d200e First draft of switch to quadratic Béziers 2017-07-10 20:07:10 -07:00
Patrick Walton 49026ae3c3 Fix off by one error 2017-07-10 14:52:43 -07:00
Patrick Walton a7b61969ff Fix compile errors in `partitionfinder.h` 2017-07-10 14:01:05 -07:00
Patrick Walton bd3d8aae44 Merge branch 'master' of github.com:pcwalton/pathfinder 2017-07-10 12:17:04 -07:00
Patrick Walton ca01e7eb6e Subdivide cubic Béziers in the legalizer if not monotonically increasing in X. 2017-07-10 12:16:58 -07:00
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