> Might there be a key place that does some sort of equivalent of a
> "PutPixel(i, j, value)" that I could watch while debugging my
> Cairo-based case? Or does the algorithm not lend itself to that? I
> figure someone must be turning on that offending pixel, and
> detecting that case might illuminate the problem.
The two central routines are Vertical_Sweep_Span and
Horizontal_Sweep_Span in combination with the drop-out control
functions Vertical_Sweep_Drop and Horizontal_Sweep_Drop. The generic
calls to them happen in the function Draw_Sweep. The first pass
handles the vertical sweep, the second pass (if asked for) does a
horizontal sweep which basically only checks for drop-outs.
For each scanline, the start and end points of spans are calculated,
sorted, and passed to the *_Sweep_Span routines. They blacken all
pixels fully covered by the spans – this is trivial – and then decide
how to render the partially covered ones and what to do with gaps –
this is tricky. I've tried to improve the drop-out handling in 2.3.10
(the documentation in the TrueType specification is very bad
unfortunately); I've probably worsened your particular case.
Werner
_______________________________________________
Freetype mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/freetype