Live data from Hacker News

The Littlest CPU Rasterizer

ginsweater.com

1–10 of 18 posts

Re: The Littlest CPU Rasterizer

#6
i was trying to build a word cloud algorithm and then I had a question: how do you rasterize letter shapes?

I looked at pyCairo but I couldn't figure out how to use it. http://cairographics.org/documentation/pycairo/3/

I asked on StackOverflow no answer http://stackoverflow.com/questions/21915335/getting-the-bitm...

i found the true-type format shape files and extracted polygons from those - which i also don't know how to rasterize.

i know this not really a response to the posted link - which is very low level and interesting - but maybe someone here knows an answer.

Re: The Littlest CPU Rasterizer

#7
post #6

i was trying to build a word cloud algorithm and then I had a question: how do you rasterize letter shapes? I looked at pyCairo but I couldn't figure out how to use it. http://cairographics.org/documentation/pycairo/3/ I asked on StackOverflow no answer http://stackoverflow.com/questions/21915335/getting-the-bitm... i found the true-type format shape files and extracted polygons from those - which i also don't know h…

For concave shapes like letters the best choice would probably be a scanline-based rasterization algorithm.

Sort all polygon edges from top to bottom and walk through that list line-by-line, keeping track of all active edges for each scanline. For those you can then find all intersections and fill the ranges in-between. By using an even-odd rule you can make sure that concave polygons and polygons with holes are filled properly.

Re: The Littlest CPU Rasterizer

#8
post #6

i was trying to build a word cloud algorithm and then I had a question: how do you rasterize letter shapes? I looked at pyCairo but I couldn't figure out how to use it. http://cairographics.org/documentation/pycairo/3/ I asked on StackOverflow no answer http://stackoverflow.com/questions/21915335/getting-the-bitm... i found the true-type format shape files and extracted polygons from those - which i also don't know h…

I think FreeType is the go-to solution for text rendering.

http://www.freetype.org/

My take on the word cloud problem:

  1. Sort words by frequency. Map the highest and lowest frequencies to some maximum and minimum font size.
  2. Render each word into an individual image with FreeType.
  3. Find some pleasing way to arrange the word images using only their bounding boxes.
  4. Render the word images into a final image, picking a random pleasant color to tint each word as you go.
EDIT: Or did you mean, "how does font rendering work"? In that case, I think it mostly boils down to rasterizing line segments and Bezier curves, along with algorithms for kerning and for trying to fit the text to the pixel grid. FreeType's documentation goes into great detail about what exactly a modern text renderer has to deal with, yet I found it to be very accessible as someone with little prior knowledge of the field. I recommend giving it a look:

http://www.freetype.org/freetype2/documentation.html

Re: The Littlest CPU Rasterizer

#9
post #6

i was trying to build a word cloud algorithm and then I had a question: how do you rasterize letter shapes? I looked at pyCairo but I couldn't figure out how to use it. http://cairographics.org/documentation/pycairo/3/ I asked on StackOverflow no answer http://stackoverflow.com/questions/21915335/getting-the-bitm... i found the true-type format shape files and extracted polygons from those - which i also don't know h…

If you have access to a GPU (or can evaluate quadratic functions of barycentric coordinates) Loop and Blinn's 2005 algorithm is brilliant http://research.microsoft.com/en-us/um/people/cloop/loopblin...

Re: The Littlest CPU Rasterizer

#10
Fun! When I saw spherical harmonics I was confused about why spherical harmonics would come into play in a voxel universe (isn't everything flat?). Digging into it a bit I found out more about spherical harmonic lighting: http://www.research.scea.com/gdc2003/spherical-harmonic-ligh...
Post reply on HN