Роман М. писал(а):
Первое, с чего начинается портирование подсистемы Hosts - это модуль
HostFonts.
Поэтому требуется определить на какой библиотеке его исполнять.
Некоторые моменты:- несоответствие "родной" Линуксу UTF-8 и двухбайтовой UTF-16 у КП;
- требуется определять метрики строк и текста;
- наличие набора шрифтов разного рода (TrueType, PCF, ...);
- сглаживание шрифтов особенно актуально с наличием ЖК-мониторов.
Есть FreeType, Pango, xlib, Qt, GDK, ...
Ваши соображения? А, может, уже готовые наработки имеются?
К переносу ГУИ на Линукс, на мой взгляд, надо подходить более комплексно.
Модуль HostFonts, о котором идет речь, в первую очередь предназначен для того, чтобы обеспечить создание шрифтов для формирования ГУИ. Больше того, "Fonts are used by models, which contain formatted text, by views, which draw text, and by command which operate on text" (из документации к Fonts).
Так вот, штука заключается в том, что в HostFonts шрифты создаются не сами по себе (как почти следует из документации к Fonts), а все-же в зависимости от текущей реализации каркаса. В текущей реализации HostFonts опирается на WinAPI (разумеется), как и весь остальной каркас. И шрифты создаются таким образом, что внутри себя содержат дескриптор, получаемый через CreateFont. И этот дескриптор неявно затем используется во всех операциях со шрифтами.
Делаем промежуточный вывод - шрифт используется такой, какой предоставляется средой, используемой каркасом. Еще раз повторю, что в текущей реализации весь каркас опирается на WinAPI.
Теперь представим, что мы уже имеем готовый каркас для Linux, пока не важно, на чем он основан.
Разумно предположить, что шрифты, используемые каркасом, содержат в себе некий дескриптор, используемый неявно во всех операциях с этими самыми шрифтами.
Возникает вопрос: умеет ли каркас пользоваться указанным дескриптором? Или по-другому: Если мы упремся и сделаем привязку к FreeType, будет ли оставшийся каркас (помимо HostFonts) уметь пользоваться этой привязкой?
На мой взгляд к задаче портирования следует подходить не со стороны шрифта (хотя, по правде сказать, от наличия привязки к FT я бы не отказался), а со стороны выбора среды исполнения.
В этом направлении сделано уже немало, есть работающие (ну, скажем так, прошедшие стадию proof of concept) привязки к wxWidgets и сие направление мне кажется очень перспективным. Но я, в силу весомых причин (в декабре родился третий ребенок в семье), не могу сейчас плотно участвовать в разработке неопределенное время. Поэтому могу предложить взять мои наработки и продолжить работать с ними.
PS. В КП, насколько я понял, используется UTF-8. Или я что-то не так понял?