mantech 53 8 января, 2022 Опубликовано 8 января, 2022 (изменено) · Жалоба 06.01.2022 в 22:04, mantech сказал: Альфа канал для этого можно использовать Вообщем, как и ожидалось, альфу тут использовать нельзя, ибо альфа - это коэффициент прозрачности, а не яркости. Чтобы его превратить в яркость, нужно на нижнем слое в тех же координатах отрисовать точку с базовым цветом, а уж потом изменять его прозрачность. Следовательно, данной точкой я испорчу картинку на нижнем слое, при том, что шрифт придется рисовать только на верхнем, что крайне неудобно, гораздо проще пересчитать цветовые составляющие, тем более, что там действительно не нужна плавучка. Минус тут только один - перед расчетом нужно прочитать пред. значение точки, что притормаживает вывод при больших размерах символов, т.к. экранная область сконфигурирована на ускорение записи, а не чтения... Но правды ради, по сравнению со временем растеризации, потери на чтение незначительны, т.к. это нужно только для контурных точек. Изменено 8 января, 2022 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 8 января, 2022 Опубликовано 8 января, 2022 · Жалоба 3 hours ago, mantech said: Но правды ради, по сравнению со временем растеризации, потери на чтение незначительны Так растеризацию достаточно выполнить один раз, а дальше использовать кэш. Для вывода логично иметь отдельные функции для однородного и "сложного" фона. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 53 8 января, 2022 Опубликовано 8 января, 2022 · Жалоба 37 минут назад, aaarrr сказал: Так растеризацию достаточно выполнить один раз, а дальше использовать кэш. Кэш нужно довольно большой, т.к. наряду с символами высотой 20-30 пикс. используем и высоты по 150-200 пикс, что с учетом количества символов и нескольких типов шрифтов довольно накладно. Поэтому решил закэшировать только системный фонт, тот, который используется в настоечной форме гуя... Да и не такое уж большое время занимает растеризация проверил, символ "0" с размером в 150пикс растеризуется за 150мксек. Другой вопрос, на который пока не могу ответить, как выравнивать символы. Например цифры и большинство букв можно печатать напрямую, у них практически одна высота, но как быть с Q или Й, У запятой? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 8 января, 2022 Опубликовано 8 января, 2022 · Жалоба 49 minutes ago, mantech said: Кэш нужно довольно большой ~1.5Мбайт на 224 символа с размером 150. Что тут экономить? 49 minutes ago, mantech said: Другой вопрос, на который пока не могу ответить, как выравнивать символы. Например цифры и большинство букв можно печатать напрямую, у них практически одна высота, но как быть с Q или Й, У запятой? Так при растеризации должны получаться x, y и advance.x, advance.y для каждого глифа. Пример растеризации без и с гамма-коррекцией (не очень удачный, т.к. гамма для какого-то левого экрана): glyph_A.bmp glyph_O.bmp Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 53 8 января, 2022 Опубликовано 8 января, 2022 (изменено) · Жалоба 18 минут назад, aaarrr сказал: x, y и advance.x, advance.y x y - это я так понимаю высота и ширина, а что эти адвансы должны показывать ? 18 минут назад, aaarrr сказал: Пример растеризации У меня почти так и есть.. Экран с потертым резистивным тачем для отладки, поэтому и качество фотки не айс.. Изменено 8 января, 2022 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 8 января, 2022 Опубликовано 8 января, 2022 · Жалоба 2 hours ago, mantech said: x y - это я так понимаю высота и ширина Смещения относительно baseline. 2 hours ago, mantech said: качество фотки не айс Просто ничего не видно. Для такого размера гамма-коррекция уже не так актуальна, это на мелких шрифтах искажается форма. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 53 8 января, 2022 Опубликовано 8 января, 2022 · Жалоба 27 минут назад, aaarrr сказал: Просто ничего не видно. Да, не очень... Вообщем, скажу я, ковыряться с этими шрифтами еще тот "кайф", путем ковыряния в исходниках нашел то, что у них называется основная линия (baseline), но это не то, что я думал, это линия основания шрифта, НО, у таких символов, как "q" или "у", эти закорючки внизу идут ниже этой линии, и они придумали descent-фактор, который нужно учитывать вниз от осн. линии... Вообщем посчитав все эти высоты и снижения наконец-то получил желаемый результат... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 8 января, 2022 Опубликовано 8 января, 2022 · Жалоба 1 hour ago, mantech said: желаемый результат Надписи сверху и посередине выглядят точно как кириллица в китаефоне - межсимвольные интервалы завышены и гуляют. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 53 8 января, 2022 Опубликовано 8 января, 2022 · Жалоба 1 минуту назад, aaarrr сказал: межсимвольные интервалы завышены и гуляют этим я еще не занимался, там просто по константе прибавляется, пока с высотами решал... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться