canvas_ity
notabase
canvas_ity | notabase | |
---|---|---|
7 | 10 | |
318 | 680 | |
- | - | |
2.5 | 7.7 | |
2 months ago | 2 months ago | |
C++ | TypeScript | |
ISC License | GNU Affero General Public License v3.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
canvas_ity
-
Writing a TrueType font renderer
I have a small TTF implementation that's in the neighborhood of that size and is open source. It's part of my canvas_ity single-header library [0] that's around 2300 LOC / 36 KB object size and implements a C++ version of most of the 2D HTML5 canvas spec [1].
The core implementation of the TTF parsing and drawing is in L1526-L1846 with another small bit at L3205-L3274 of src/canvas_ity.hpp.
It's something of a toy implementation that only supports western left-to-right text, and doesn't do any hinting at all, nor kerning, nor shaping. But it's enough to draw a basic "Hello world!" using any typical TTF file.
The test suite in test/test.cpp L84-304 embeds a few custom Base64-encoded TTF files. They're small and only have a few glyphs but they do exercise a number of interesting edge cases in the OpenType TTF spec [2]. Have a look at the HTML5 port of the test suite at test/test.html in different browsers to see how their canvas implementations render those fonts.
[0] https://github.com/a-e-k/canvas_ity
[1] https://www.w3.org/TR/2015/REC-2dcontext-20151119/
[2] https://standards.iso.org/ittf/PubliclyAvailableStandards/c0...
-
The Lone Developer Problem
Agreed, that sort of documentation is pure gold when done well.
It's something I always try to pay forward by doing in my own code. For example, one of my own solo projects was an STB-style single-header -like rasterizer library for C++. I started the implementation half of the library with a short outline of the rendering pipeline's dataflow and the top-level functions responsible for each stage:
https://github.com/a-e-k/canvas_ity/blob/f32fbb37e2fe7c0fcae...
-
Ask HN: What have you created that deserves a second chance on HN?
https://github.com/a-e-k/canvas_ity
This is an STB-style single-header C++ library with no dependencies beyond the standard C++ library. In about 2300 lines of 78-column code (not counting blanks or comments), or 1300 semicolons, it implements an API based on the basic W3C specification to draw 2D vector graphics into an image buffer:
- Strokes and fills (with antialiasing and gamma-correct blending)
- Linear and radial gradients
- Patterns (with repeat modes and bi-cubic resampling)
- Line caps and line joins (handling high curvature)
- Dash patterns and dash offsets
- Transforms
- Lines, quadratic and cubic Beziers, arcs, and rectangles
- Text (very basic, but does its own TTF font file parsing!)
- Raster images (i.e., sprites)
- Clipping (via masking)
- Compositing modes (Porter-Duff)
- Drop shadows with Gaussian blurs
I also uncovered a number of interesting browser quirks along the way with the HTML5 port of my testing suite.
- Hello, PNG
- A tiny, single-header -like 2D rasterizer for C++
-
canvas_ity - A tiny, single-header <canvas>-like 2D rasterizer
Repository: https://github.com/a-e-k/canvas_ity
- Show HN: Canvas_ity – A tiny, single-header -like 2D rasterizer for C++
notabase
-
Ask HN: What have you created that deserves a second chance on HN?
https://notabase.io - a note-taking app for networked thinking.
It supports page stacking, linked references, block references, a graph view, and all that good stuff. Think of it as similar to Roam Research / Obsidian.
It's also open source so you can self-host it. Here's the code: https://github.com/churichard/notabase
I'm hoping to add support for shareable links soon. Open to other ideas or feedback!
-
What is the best school planner app that could sync with PC?
you can check out this page https://alternativeto.net/software/joplin/?platform=online but the best I could find are - https://www.taskade.com/ https://standardnotes.com/ https://notesnook.com/ https://bundlednotes.com/ https://diaroapp.com/ https://notabase.io/ https://boostnote.io/ etc.
- Self hosted app with web clipper feature
-
Switching Rich Text Editors, Part 1: Picking Tiptap
When evaluating rich text editors for the note-taking app I started about a year ago (https://notabase.io), I ended up going with Slate because of its flexible schema and customizable plugin architecture.
I sort of regret that choice now. I ran into a lot of bugs when integrating it which I had to manually work around; issues go months without being addressed; and there still isn't good cross-platform support, especially for Android. With a more active contributor base, Slate could be a fantastic library, but I get the feeling that it's in maintenance mode now, with not many major changes in the past year and a v1.0 still far in the future.
Tiptap looks like it might be a good choice now, but I find it off-putting that I can't insert links in the demo editor on Tiptap's website (https://tiptap.dev), especially for my use case (a note-taking app whose core concept revolves around links).
-
Ask HN: What is your “I don't care if this succeeds” project?
I'm working on an open source note-taking app called Notabase [1]. It's built primarily for my use - I just never liked most existing note-taking apps and wanted to make one that fit the way that I think. I made it open source [2] so other people can build on top of my ideas, and released a hosted version so that other people can use it if they like it. It would be nice if other people found it helpful, but regardless it's something that I intrinsically enjoy working on.
[1]: https://notabase.io
-
Show HN: MdSilo – A knowledge silo runs in your web browser
You can try Notabase https://notabase.io/, which is better for self-hosting.
if you prefer mdSilo, need to toggle the Offline mode false in code and use the third-part services: vercel and supabase
What are some alternatives?
nanovgXC - Lightweight vector graphics library implementing exact-coverage antialiasing in OpenGL
budibase - Budibase is an open-source low code platform that helps you build internal tools in minutes 🚀
tinf - Tiny inflate library (inflate, gzip, zlib)
dflex - The sophisticated Drag and Drop library you've been waiting for 🥳
Tephra - A modern, high-performance C++17 graphics and compute library based on Vulkan
slate - A completely customizable framework for building rich text editors. (Currently in beta.)
art - @Bigfan/art is a React custom renderer for HTML5 Canvas.
rich-markdown-editor - The open source React and Prosemirror based markdown editor that powers Outline. Want to try it out? Create an account:
osxphotos - Python app to work with pictures and associated metadata from Apple Photos on macOS. Also includes a package to provide programmatic access to the Photos library, pictures, and metadata.
tiptap - The headless rich text editor framework for web artisans.
fpng - Super fast C++ .PNG writer/reader
quill - Quill is a modern WYSIWYG editor built for compatibility and extensibility.