Не думаю, что все это необходимо в ядре. Более расширенный функционал по работе со шрифтами имеет смысл выносить в библиотеку.pavelyakov wrote: Толщина шрифта регулируется?
Наклонный текст поддерживается?
Сможешь реализовать ф-цию загрузки разных шрифтов для колибри ( мб. специальный формат ) ?
Масштабирование растровых системных шрифтов с AEB эффектом
-
to infinity and beyond
Да, планирую сделать библиотеку. Я, можно сказать, ещё только начал.
Leency
А как это получилось? Похоже на рисование шрифта без стирания предыдущего, скорей всего было. Я исправил рисование меняющихся цифр с фоном (часы, диспетчер задач).
Leency
А как это получилось? Похоже на рисование шрифта без стирания предыдущего, скорей всего было. Я исправил рисование меняющихся цифр с фоном (часы, диспетчер задач).
В алгоритм закрался багLeency
> Предыдущий вариант viewtopic.php?p=62042#p62042
> Текущий вариант http://i.imgur.com/8DhcvhO.png
А как это получилось? Похоже на рисование шрифта без стирания предыдущего, скорей всего было. Я исправил рисование меняющихся цифр с фоном (часы, диспетчер задач).
Попробуй открыть окно и медленно перемещай его вбок, текст будет плавно "плыть":
Привет
Привет
Привет
Привет
Привет
Из хаоса в космос
Дело не в алгоритме, а в стиле оформления. При сглаживании считываются пиксели экрана (или буфера), и смешиваются с цветом шрифта. Не знаю, что именно там происходит, но при стандартном стиле наблюдается только эффект наслоения в openDialog при движении стрелками. Собственно, на выделенной строке видно, что шрифт выводится некошерным способом.
Нужно определить в чет отличие твоего последнего кода от того что был в сообщении viewtopic.php?f=36&t=3084&start=15#p62027 когда этой проблемы не было.
Из хаоса в космос
Отличие в том, что тогда ты использовал стандартный стиль оформления. Исправления в коде правильные, сравни часы. С другой стороны, посмотри на слово "Settings", оранжевый цвет говорит о том, что оно рисуется на белом фоне, а не на фоне выделения.
... алгоритм нужно доработать...
- Attachments
-
-
16.PNG (19.17 KiB)Viewed 7931 times
-
Вообще, действительно наблюдаются какие-то глюки с openDialog. Я подумал, может быть там предыдущий текст сначала стирается нулевыми символами вместо вывода с белым фоном и пробелами. В моей реализации нулевой символ всегда означает конец строки.
Так, теперь буквы y, w, v выглядят лучше. А остальные наверно хуже?
Так, теперь буквы y, w, v выглядят лучше. А остальные наверно хуже?
- Attachments
-
-
Oh, upgrade.PNG (19.26 KiB)Viewed 7895 times
-
А толщину линии некоторых больших букв не подкорректировать? Так лучше но толщина, например, где W, где изгибы как-то сливаются..Pathoswithin wrote:Вообще, действительно наблюдаются какие-то глюки с openDialog. Я подумал, может быть там предыдущий текст сначала стирается нулевыми символами вместо вывода с белым фоном и пробелами. В моей реализации нулевой символ всегда означает конец строки.
Так, теперь буквы y, w, v выглядят лучше. А остальные наверно хуже?
тут у больших букв один я вижу недостаток, это изгибы, в некоторых местах толщины не хватает, в некоторых с лишком много
у маленького размера все норм, в глаза ничего не бросается
Технологии меняют мир, а я - меняю технологии.
Всё, ничего лучше придумать не могу. Но может кто-то придумает? Сейчас алгоритм работает просто:
1 2 3
4 5 6
7 8 9
10
1.) После рисования чёрного квадрата 4, в белом квадрате 5 рисуется треугольник, если квадрат 2 чёрный, а квадрат 1 белый.
2.) Если 1 чёрный, то рисуется только если 3 и 7 белые.
3.) В первом случае, если 7 чёрный, а 6, 8 и 10 белые, то треугольник растягивается между 5 и 8.
Если не проверять 10, то "V" и "Y" будут выглядеть лучше, но остальные как в предыдущем варианте.
И ещё 3 зеркальных алгоритма.
Попробую ещё подрихтовать сам шрифт.
1 2 3
4 5 6
7 8 9
10
1.) После рисования чёрного квадрата 4, в белом квадрате 5 рисуется треугольник, если квадрат 2 чёрный, а квадрат 1 белый.
2.) Если 1 чёрный, то рисуется только если 3 и 7 белые.
3.) В первом случае, если 7 чёрный, а 6, 8 и 10 белые, то треугольник растягивается между 5 и 8.
Если не проверять 10, то "V" и "Y" будут выглядеть лучше, но остальные как в предыдущем варианте.
И ещё 3 зеркальных алгоритма.
Попробую ещё подрихтовать сам шрифт.
- Attachments
-
-
Any better.PNG (33.83 KiB)Viewed 7840 times
-
"v" можно заменить на ее предыдущий вариант http://prntscr.com/7xz0rs ( http://kolibri-n.org/inf/other/screens )
Из хаоса в космос
Дело не только в добавлении недостающих треугольников (а точнее пикселей), но и в отрезании лишних. попытка вывести простой алгоритм к успеху не привела. на разном масштабе от исходных увеличенных а в 2 раза пикселей надо отрезать (добавить) одно, а на увеличении 2.5 уже другое. (Пробовал в тетради в клеточку). Получается некая Маска, своя для каждого символа и увеличения. Может эти маски (собранные в библиотеку) и использовать при увеличении шрифтов (когда необходимо)? или свой алгоритм для каждой группы символов (Прямые, косые, полукруглые)? или алгоритм сглаживания только для сегмента символа? или при увеличении использовать двухбитные пиксели ( 00 - белый, 11 - черный, 10 - темносерый, 01 - светлосерый )???
Юзер, просто юзер...со времён MS-DOS.
По поводу "волнистых" пиксельных прямых: можно аппроксимировать пиксельную прямую или пиксельную кривую по центрам пикселей соответственно прямой или кривой 2-4 степени. Правда, в случае шрифтов нужно как-то разбивать шрифт на отдельные сегменты.
Идеально масштабировать мизерные растровые 1-битовые шрифты пожалуй невозможно. Здесь есть два пути: либо использовать n-битовые с оттенками серого, что потребует совсем другой, сложный алгоритм, либо просто использовать шрифты побольше. В обоих случаях многократно возрастает вес шрифта, и логичней использовать векторные шрифты. Короче, уже есть FreeType и TrueType, а здесь задача выжать максимум из минимума.
Сделал проверку квадрата 12 вместо 6, подрихтовал некоторые буквы. Вроде теперь неплохо.
Сделал проверку квадрата 12 вместо 6, подрихтовал некоторые буквы. Вроде теперь неплохо.
- Attachments
-
-
finaly.PNG (33.85 KiB)Viewed 7781 times
-
Момент истины...
- Attachments
-
-
Amen.PNG (20 KiB)Viewed 7742 times
-
Who is online
Users browsing this forum: No registered users and 14 guests