Board.KolibriOS.org

Official KolibriOS board
It is currently Wed Apr 24, 2019 9:17 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 61 posts ]  Go to page Previous 1 2 3 4 5 Next
Author Message
PostPosted: Thu Mar 29, 2012 1:17 am 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1304
Ну вот, собссно, и сабж :D
Attachment:
fonts.png
fonts.png [ 13.08 KiB | Viewed 3058 times ]


Сверху новый шрифт, снизу - два старых. Слева - время вывода строчки из 40 символов в тактах CPU (впрочем, зачем нужно комментировать - листинг же).

Новый шрифт очень похож на системный номер 0. Изобретать велосипед пришлось по двум причинам:
1) я хочу выкинуть растровые фонты из ядра, и заменить их векторными. Нужна совместимость.
2) нужно было напрямую сравнить размер и скорость отрисовки у двух "почти одинаковых" шрифтов.

Результат мне нравится: даже самый маленький растровый шрифт почти вдвое больше векторного, и на 25-40% медленнее.
На более крупных шрифтах разница будет заметнее - в разы.


Last edited by art_zh on Thu Mar 29, 2012 2:02 am, edited 1 time in total.

Top
   
PostPosted: Thu Mar 29, 2012 1:29 am 
А побольше? Еще больше! Еще больше!


Top
   
PostPosted: Thu Mar 29, 2012 1:38 am 
Offline
Mentor
User avatar

Joined: Mon Oct 19, 2009 10:58 am
Posts: 411
Скорость, действительно, впечатляет; отличная работа!

Но некоторые глифы выглядят довольно странно (та же 'a'). Я правильно понимаю, что шрифт, аналогичный по начертанию текущему системному, потребовал бы слишком много уникальных "закорючек", и размер кода/шрифта вырос бы, а скорость отрисовки упала? Или смену шрифта принимать скорее как feature и лишний повод для 'сделай сам'?


Top
   
PostPosted: Thu Mar 29, 2012 2:09 am 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1304
Mario
Да будут, будут больше, дай этот причесать!
Уж ты-то должен представлять, сколько времени надо было ухлопать хотя бы на вот этот файлик.

dunkaist
да, кое-где еще заусенцы торчат, надо вылизивать. И еще штук 50 символов недорисованы.
дело не в скорости отрисовки - в трудоемкости кодирования. Ну и с парсером заморочек был вагон.

SoUrcerer
#2522: можно тестировать.
Просто замени файл gui/font.inc и скопируй папку /fonts из А-версии в свое ядро


Top
   
PostPosted: Thu Mar 29, 2012 5:06 pm 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 794
art_zh: ты его чем-то генеришь, или вручную правишь?


Top
   
PostPosted: Thu Mar 29, 2012 5:44 pm 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1304
Пока вручную,
но надо какой-то IDE придумать для редактирования, иначе свихнешься.


Top
   
PostPosted: Thu Mar 29, 2012 6:17 pm 
Только руками! Только хардкор!


Top
   
PostPosted: Thu Aug 23, 2012 1:49 am 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1304
Забавный эффект при перересовке частично перекрытого окна:
Attachment:
FNT.png
FNT.png [ 6.99 KiB | Viewed 3024 times ]

старые системные фонты тратят кучу времени, обнюхивая экранную карту для каждого пикселя.

новый шрифт "шарит по углам", и если хотя бы один угол перекрыт - просто ничего не рисует. Такой вот мини-клиппинг.

Профит (в тактах процессора) - в левом столбце.


Top
   
PostPosted: Mon Aug 27, 2012 5:16 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Больше - хуже или лучше?


Top
   
PostPosted: Mon Aug 27, 2012 8:29 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Fri Jun 30, 2006 9:01 am
Posts: 1247
to eliminate the 'funny effect' you could use following logic:
- if all corners overlapped, dont draw
- no corners overlapped, draw
- some corners overlapped, use the old method: check all pixels

_________________
"Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction." Albert Einstein


Top
   
PostPosted: Mon Aug 27, 2012 10:03 pm 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1304
I'm OK with this - the new font is working 4 times faster because no need in drawing on the overlapped areas.


Top
   
PostPosted: Mon Aug 27, 2012 10:09 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Fri Jun 30, 2006 9:01 am
Posts: 1247
Ok, I can also live with it personally :)

_________________
"Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction." Albert Einstein


Top
   
PostPosted: Tue Aug 28, 2012 3:14 am 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1304
SoUrcerer wrote:
Больше - хуже или лучше?

the code is the same as before, but the test string is a bit longer (90 characters), and the window is partially overlapped

left column = number of CPU clocks needed to write it (see the code there)


Top
   
PostPosted: Fri Aug 31, 2012 1:31 am 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
с пропавшими при перекрытии символами получается ужасно.
Spoiler: Show
Я придумал ещё более быстрый шрифт: он просто ничего не рисует. Как развитие идеи art_zh насчёт [отсутствия] обработки перекрытий. В самом деле, прочие шрифты тратят кучу времени на то, чтобы что-то отрисовывать...

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
PostPosted: Fri Aug 31, 2012 7:08 am 
Gluk
Никто ведь не заставляет использовать. Более того шрифт автор разрабатывал для себя и первоначально не планировал заливать в транк.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 61 posts ]  Go to page Previous 1 2 3 4 5 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited