Kuf is a small program for generating patterns that conform to the rules of square kufic calligraphy, written in ANSI C.

It's probably going to integrate with btprnt, and may be used with the Candy Crystal Rainbow Codex.


Kuf is written as a literate program via worgle. The woven HTML output can be read online using the loom.




Below are logs about the progress of Kuf, extracted from the zet of this wiki.

2021-07-17 15:58:07: re-examining (kuf) after many months away from it. the only thing preventing me from using this is the lack of a correction filter. that's the missing part, then I'd consider this project 'completed'

2021-01-07 17:44:49: (kuf) is now at the (loom): the TOC page can be found here.

2021-01-07 17:39:12: thinking I may add (kuf) to the loom early, before I upload the code itself. Right now, it is complete enough for display.

2021-01-07 17:23:52: then some square primitives, defined as macros? these could be used to make initial drawings, which could then be processed by the block filter to make tesselations "technically correct".

2021-01-07 17:22:50: A block can now be written to a PBM file. What should happen now is a more generic PBM file that can write an arbitrary NxM array of squares (not blocks) to a PBM file.

2021-01-07 15:39:00: the block generator seems to work now. gonna make a PBM exporter next and turn that into the example file.

2021-01-07 11:13:33: almost done being able to generate a block with (kuf). I must say, it's very promising that I'm able to jump right back into this project after a 5 month hiatus. I think that's one point for (literate_programming).

2021-01-06 18:04:42: initial eastwall solver implemented, but untested.

2021-01-06 17:44:42: I'm using cardinal directions to represent sides, and it's really exposing how directionally challenged I am.

2021-01-06 17:24:25: really anything that ends up being a song or picture in the end usually ends up being a satisfying investment of time.

2021-01-06 17:18:13: this (kuf) project is very satisfying to code up. it's got a very nice bottoms-up structure to it that feels very clean. I love systems composed using only a handful of simple operations.

2021-01-06 11:52:07: once I build blocks, hoping to create some integrations with (btprnt) inside of (monolith). Then, get it used in the (codex).

2021-01-06 11:45:37: an initial implementation was made yesterday. it can now generate squares (4x4) tilesets. now extending things to make blocks (8x8 tilesets).

home | index