So when I was writing the first iteration of the tiny web
browser I looked around on the Internet for stories from other
people who had done the same sort of thing, so that I could
hopefully avoid some of the dumber mistakes people had made, and
if I was very lucky, perhaps I might even pick up some tricks to
make my implementation smaller or faster. Sadly, though, I found
nothing. So I forged ahead with my design, and said that when I
was done, I would put my experiences up so that other people
didn't have to repeat my mistakes, and could possibly learn from
what I did correctly.
The first thing I think I did correctly was to break the
stream up into elements, all of which had content to paint, and
all of which had a bitfield of formatting flags. In my gadget, I
would figure out the bounds for any given element, splitting a
long bit of content up into several lines each with their own
bounds. When the time came to paint the html, I would just loop
through the elements, set the colour and font based on the format
flags, and draw the string at the bounds. This made the drawing
extremely fast, which was a good thing.
(Next issue, Limitations...)