Как раскрасить отдельные символы и поддерживать правильное расстояние / кернинг / выравнивание?

Я хочу использовать Graphics.DrawString для рисования символов с использованием отдельных цветов.

Проблема заключается в том, что каждый раз, когда я вызываю DrawString, я должен знать, где его расположить (используя точку или прямоугольник) относительно других символов.

Это почти возможно, если принять во внимание кернинг и перенос, которые происходят при использовании DrawString в прямоугольнике со StringFormat. StringFormat важен для указания выравнивания, обтекания, обрезки и т. Д.

В идеале я бы мог рассказать DrawString, как раскрасить каждого персонажа в отдельности. Другой вариант, если я могу измерить строку в прямоугольнике, используя StringFormat, а затем получить позиции X и Y каждого индекса символа, чтобы я мог нарисовать каждую из них своей собственной кистью.

Я пытался измерить каждый символ по отдельности, но это не сработает, потому что комбинация символов в строке отличается от ширины каждого символа, измеряемого отдельно.

РЕДАКТИРОВАТЬВот что происходит, когда я беру строку, получаю массив Region, заполняю эти области чередующимся красным и синим цветом, а затем пытаюсь нарисовать каждый отдельный символ в этих регионах:

Я вызываю DrawString следующим образом:

g.DrawString(character, font, brush, region.GetBounds(g));

Также попробовал следующее:

Rectangle bounds = Region.GetBounds(g);
g.DrawString(character, font, brush, new PointF(bounds.Left, bounds.Top));

А также,

g.DrawString(character, font, brush, region.GetBounds(g), stringFormat);

Те же результаты.

Ответы на вопрос(1)

Ваш ответ на вопрос