В общем идея:
- сейчас в gtkhtml - используется некое подобие SAX парсера, на основе которого сложно создать что-то подобное поддержке CSS. Конечно можно, так как все таки дерево элементов существует, но долго и есть другой вариант;
- нужно заменить парсер на использование libxml;
- заменить рендеринг на использующий XmlTree
- использовать рендеринг в два прохода:
- первичный рендеринг только html без css c созданием запросов на css
- вторичный при доступности css применять его к дереву и вызывать перерисовку;
- в теории мы получим немного более медленный рендеринг - запускающийся только после получения полного дерева, сейчас редеринг идет в параллель с парсингом.
Сейчас реализовал только замену парсера(мой fork на github) и тестовые приложения для проверки применения css. Для парсинга используется libcroco. За основу тестовых приложений взят код - позволяющий применить css к xml c использованием пространств имен.