«Каноническая» форма сглаживания выполняется путем растеризации с более высоким разрешением, чем ваша цель (например, с двойным разрешением в каждом измерении).
Затем вы (в виртуальном смысле) накладываете на нее сетку с заданным разрешением. Вы подсчитываете количество ячеек, которые были заполнены, и выбираете свой цвет на основе этого - если все ячейки заполнены, вы используете цвет фона. Если ни одна из ячеек не заполнена, вы используете цвет фона. Важная часть: если некоторые ячейки заполнены, вы выбираете цвет между ними в зависимости от того, какой процент этих ячеек заполнен. например, при 2x в каждом направлении, с черным передним планом и белым фоном, вы можете выбрать черный (все ячейки заполнены), белый (без ячейки заполнены) или любой из трех промежуточных оттенков серого (1, 2 или 3 ячейки заполнены) .
Эти промежуточные уровни серого (или любого другого цвета, в конечном итоге основанного на цветах переднего плана и фона) воспринимаются как заполнение «зубчатых» краев. Например, пиксель, который находится на 75% пути от белого к черному, будет восприниматься почти как меньший пиксель, который полностью черный.
Конечно, существуют и другие методы сглаживания, в основном направленные на уменьшение вычислительных накладных расходов при растеризации при более высоком разрешении. Они очень актуальны для таких вещей, как анимация, но для создания файла PNG этот метод относительно прост и, вероятно, достаточно быстр.