"Each letter and digit in this typeface is made up of exactly one of each of the Tetris pieces: (I), (J), (L), (O), (S), (T), and (Z). Furthermore, the letter is designed so that it can actually be constructed by stacking these pieces one at a time and be supported by previous pieces, as in Tetris. These designs were found by hand, aided by the BurrTools software which enabled searching for whether the Tetris pieces could fit inside a candidate outline for a letter. The piece colors roughly follow The Tetris Company's standard colors, or you can switch to black pieces. The initial rotations follow the standard Super Rotation System."
There is nothing less anoying than seeing a really custom font repeat a letter.
https://github.com/robertmuth/TetrisScroller
It has a pretty much complete ascii font but I am cheating in that I allow one non tetris piece with only 3 pixels arranged as an angle. There is also a simple tool that tries to find a covering of a given font.
https://erikdemaine.org/papers/Origamizer_SoCG2017/paper.pdf
^ provides an algorithm for generating any 3D solid via folding a 2D net (origami style)
I did it with the Harfbuzz shaper which now have experimental support for embedding WebAssembly programs to shape fonts.
Talk where I show it off: https://www.youtube.com/watch?v=Ms1Drb9Vw9M
Source code: https://github.com/Erk-/programmable-fonts
You can also see actual uses of this WebAssembly embedding to show that is not just for fun here: https://github.com/harfbuzz/harfbuzz-wasm-examples
This is precisely the sort of beautiful thing I love finding on HN.[a]
Your work put a smile on my face.
Thank you for sharing it here!
---
[a] For those here who only want to see the demo, it starts at 22:50: https://youtu.be/Ms1Drb9Vw9M?t=1370
---
PS. I also submitted your demo to HN. I think it deserves its own post: >>40737961
One of most practiced pattern is the chevron, where you draw a > shape with holes, but otherwise fill the whose board. This stemmed from the Japanese arcade version of Tetris by Sega (or Segatet for those in the known). This version was hugely popular in the arcade (it stayed for an incredibly 10 years in the top100 earner in some arcade magazine), and some player were destroying the game so much that they invented this challenge. This was recognized in Segatet successor Tetris the Grand Master (TGM3), and formally named "Secret Grade". One example here: https://www.youtube.com/watch?v=ZgzcAkjp0J8 , and another there with TGM3 signature speed https://www.youtube.com/watch?v=32wzKc0cHQU .
But in general, Shuey is the master of arbitrary making pattern. Look at him drawing a Luigi: https://www.youtube.com/watch?v=_tipJDjeKuY .
Note that since then, an algorithm for arbitrary pattern generation has been devised by Michael Birken: https://www.youtube.com/watch?v=PJkHwulsac4
(sort of related: the playing forever algorithm may be interpreted as a pattern creation https://tetris.wiki/Playing_forever )
For example https://erikdemaine.org/fonts/tetris/?text=%7D6G6C+8%40%3F%3...
(And, incidentally, how the URL encodes the value used for text generation, so that you can share links to actual examples ...)
Pretty neat.-
PS. Nice Rickroll, BTW :)
Right now I especially dislike letters: 'B', 'G', 'I', 'N'. For comparison, I like 'F' and '1', they both look very natural to me; 'A' and 'S' get a pass too. 'Q' gets a special mention for its long tail.
That being said, the project is super cool and looks great already.
(Or an additional "Obscure in textbox" checkbox or something along those lines ...)
Also, can we get a checkbox for "pause after animation"? I want to take a minute to check out the letters before it starts animating again. I know you can click off Animate after it finishes, but if I share this, others may not be so keen.
(The "historical exploration" of type, and typesetting, even if an introduction, is great ...)
He is also the maintainer of KaTeX, which I depend on.
(Thanks Erik!)
... that one is great - in a different way - but great nonetheless.-
https://erikdemaine.org/papers/PushingBlocks_CGTA/
And I clicked this submission because of his name, after all the time.
I didn't fully go through or understand the proof, but it was a refreshing addition to the classic problems I had to understand for college at the time.
Didn't need it, just fed my curiosity.
And when I clicked this link, my curiosity was fed again.
Seems like it's worth having heard of him, even as a non-scientist, because his subjects are just so interesting. Reminds me of Scott Aaronson in that regard.
Culberson, Joseph. "Sokoban is PSPACE-complete." (1997). https://era.library.ualberta.ca/items/f551dfd8-c8e6-4e78-883...
Thanks for the links!
That said, there were definitely way too much history generated when typing into a text field. I just implemented a planned compromise, where you only get a history event when changing a "committed" text field (meaning you previously defocused the field). Hopefully this is the best of both worlds!
Regarding the second question, there's already a 2-second delay. I wonder if there should be a slider to specify the delay?
repo: https://github.com/hsfzxjy/Bad-Apple-Font
youtube[1]: https://www.youtube.com/watch?v=GF2sn2DXjlA
youtube[2]: https://www.youtube.com/watch?v=qFd8vsr8nag
At the time it was also discussed on here at [1].
[0]: https://blog.erk.dev/posts/anifont/
[1]: >>37317055
Note that the piece distribution algorithm is usually not a pure random() function, but one that's optimized to remove or reduce piece repetitions. For TGM it's history based (keep in memory the 4 last pieces type, reroll in case of repetition, with a 4 or 6 reroll limit depending on the game). IIRC Shuey uses a ruleset that uses the standard 7-bag algorithm (it's a Fisher-Yates with 7 elements; put all 7 types in a collection and deplete them one by one, randomly).
- Game of life using Tetris
- Logic gates using Tetris
- Full microprocessor using Tetris
- Full computer emulation using Tetris ... :)