Причина, по которой субпиксельное сглаживание невозможно, заключается в том, что за кадром CALayers
, по сути, являются просто текстурами OpenGL.
Это означает, что они являются растровыми изображениями, обрабатываемыми и визуализируемыми непосредственно графическим процессором. Графический процессор ничего не знает о тексте и поэтому не может применять субпиксельное сглаживание.
Для обработки субпиксельного сглаживания необходимо будет пересчитывать значения пикселей содержимого слоя каждый раз, когда слой был изменен, что будет непомерно дорого, и удалит всю точку размещения слоя на графическом процессоре, что сделать компоновку и рендеринг чрезвычайно быстрым.
Причина, по которой текст на непрозрачных фонах может использовать SPAA, заключается в том, что текст предварительно визуализируется с субпиксельным сглаживанием перед сохранением текстуры слоя в графическом процессоре. Это невозможно, если фон текста прозрачный.
Вам придется жить с этим ограничением. К счастью, это больше не будет проблемой, когда все мы в конечном итоге получим дисплеи HiDPI ... взгляните на iPhone, который вообще не выполняет субпиксельное сглаживание. На iPhone текст выглядит просто отлично благодаря высокому разрешению экрана.