Ваша задача не имеет особого смысла. Если у вас есть гарнитура, вы не хотите заполнять ее заливкой, а вместо этого визуализируете ее непосредственно как заполненный многоугольник. Определение того, какие части входят и выходят из гарнитуры, особенно для шрифта с засечками, если это не даст надежных результатов.
Типичный схематический алгоритм для заполненного многоугольника выглядит следующим образом (стек или рекурсия не требуются), и его также можно применить к растровому изображению при определенных условиях (я приду к этому):
Для каждой строки (или столбца, в зависимости от того, что лучше подходит вашей структуре данных), переключайте заливку на каждом пересечении виртуальной линии, за которой вы следуете, и всех линий (границ) многоугольника.
Предположим, что это (может быть средняя строка символа O):
00010010001001000
^ ^ ^ ^
| | | stop
| | start
| stop
start
Результат:
00011110001111000
Это работает и для растровых изображений, но только , если у вас всегда есть две границы для запуска и остановки.