Board.KolibriOS.org

Official KolibriOS board
It is currently Fri Aug 23, 2019 4:35 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 81 posts ]  Go to page Previous 1 2 3 4 5 6 Next
Author Message
 Post subject: Re: TrueType
PostPosted: Fri Nov 09, 2012 7:14 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Я тут подумал.Можно же хранить загруженные шрифты в именованных областях памяти.


Top
   
 Post subject: Re: TrueType
PostPosted: Sun Nov 11, 2012 11:24 am 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Увеличил скорость отрисовки путем одноразовой загрузки шрифта в память, для этого добавлена новая функция font_init. Пока что она не грузит дополнительные шрифты, но поправить - дело двух минут. Вместо get_width стоит заглушка, её нужно исправить, но времени на это у меня сейчас нет.
Исправленная версия дает терпимую скорость отрисовки в qemu и абсолютно достаточную для комфортной работы на реальной машине. Если бы рисовалось всё в фреймбуфер перед выводом на экран (чтоб не дергать по сто раз 7ю системную функцию) - скорость была бы отличной и в qemu.

С этим нужно что-то делать.


Attachments:
c.7z [608.25 KiB]
Downloaded 165 times
Top
   
 Post subject: Re: TrueType
PostPosted: Sun Apr 07, 2013 9:17 pm 
Offline
User avatar

Joined: Mon Nov 19, 2012 5:22 pm
Posts: 455
Исходники можно?

_________________
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!


Top
   
 Post subject: Re: TrueType
PostPosted: Sun Apr 07, 2013 9:26 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Специально загрузил файл, последний в этой теме. Убедился - исходники из него никуда не делись. Баги тоже :)


Top
   
 Post subject: Re: TrueType
PostPosted: Sun Apr 07, 2013 9:32 pm 
Offline
User avatar

Joined: Mon Nov 19, 2012 5:22 pm
Posts: 455
Так это последние наработки? Тогда всё, вопросов нет, кончились)

_________________
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!


Top
   
 Post subject: Re: TrueType
PostPosted: Sun Apr 07, 2013 9:45 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
На самом деле, у меня есть версия с нуля - но она пока что только в Linux работает. И её нужно конкретно править.


Top
   
 Post subject: Re: TrueType
PostPosted: Tue Jul 23, 2013 4:14 am 
Offline
User avatar

Joined: Mon Nov 19, 2012 5:22 pm
Posts: 455
Я вот подкорректировал библиотеку для своих нужд. Сделал так, что она выводит Юникод-строки, загружает шрифт из файла (в архив положил один, с ним у меня она нормально работает). Рисует только на заданном фоне. И ещё умеет рисовать в память. Функция text_out_mem рисует строку в память и возвращает указатель на память с рисунком. Формат такой - dword ширина рисунка, BBGGRR...BBGGRR сам рисунок. Высота известна в параметре к функции потому и не добавлял в буфер. После использования его следует освободить ф. 68,13 . Вот. Пока я ей не занимаюсь(сейчас другие задачи, да и текущих функций мне хватает). В архив положил файлик с прототипами функций(вроде там по названиям всё понятно). Кушает много стека, я выделял 10КБ. Да ещё. Если не ошибаюсь, то раньше был баг с определением ширины строки. В результате появлялись лишние пробелы. Вот теперь этого бага не видно. Не знаю, в чём он был, но сейчас нету :|


Attachments:
ttf.zip [230.21 KiB]
Downloaded 134 times

_________________
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
Top
   
 Post subject: Re: TrueType
PostPosted: Mon Mar 24, 2014 3:44 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5054
Переписка с Робертом. Что как делать, надеюсь, он не против.

Насчёт шрифта два варианта: если библиотека та, что мной выложена, то в unsigned char *FontData находится путь к шрифту. Иначе шрифт зашит в библиотеке(но тогда там функция init_font выглядит так: int __stdcall init_font(stbtt_fontinfo *font) ).
"stbtt_fontinfo *font - это что за структура??" - сам не знаю :D . Я просто давал пустой буфер в 200байт и всё отлично работало. Сейчас пример проги в читаемый вид переделаю.

Так, пардон, ошибся. unsigned char *FontData - это загруженный в память файл шрифта(просто загруженный, без всякой обработки)

Вот рабочий пример. Пути только поправить надо. Шрифты многие открывает, по крайней мере arial.ttf из ХРюши нормально рисует. Вот.
И ещё.

Code:
typedef struct stbtt_fontinfo
{
void * userdata;
unsigned char * data; // pointer to .ttf file
int fontstart; // offset of start of font

int numGlyphs; // number of glyphs, needed for range checking

int loca,head,glyf,hhea,hmtx,kern; // table locations as offset from start of .ttf
int index_map; // a cmap mapping for our chosen character encoding
int indexToLocFormat; // format needed to map from glyph index to glyph
} stbtt_fontinfo;


Так что 200байт - много :) Видимо просто личные данные шрифта для его рисования.
Файл TTF.ASM

Кирилл
> Иначе шрифт зашит в библиотеке
а в библиотеке уже есть зашитый шрифт?

Роберт
В правленной мной, нет. В прежних да.


Attachments:
TTF.asm [2.66 KiB]
Downloaded 117 times

_________________
Через тернии к звездам
Top
   
 Post subject: Re: TrueType
PostPosted: Mon Mar 24, 2014 4:53 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Вообще над этим портом нужно знатно поработать. Выбрать API, добавить менеджер шрифтов (чтоб не хранить по сто раз один и тот же шрифт в памяти).


Top
   
 Post subject: Re: TrueType
PostPosted: Mon Mar 31, 2014 2:26 am 
Offline
User avatar

Joined: Mon Nov 19, 2012 5:22 pm
Posts: 455
Это второе. Первое, что надо сделать - это научить библиотеку нормально рисовать мелкие буквы. В винде мелкие буквы четко видно, в линуксе гораздо хуже. Точно не понял, но, видимо, где-то в файле шрифта лежат готовые буквы для маленького размера(ну не всегда, конечно). Их винда и юзает.

_________________
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!


Top
   
 Post subject: Re: TrueType
PostPosted: Mon Mar 31, 2014 7:43 am 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Ноуп, это плохо. Потому что это издевательство над буквами. 256 градаций прозрачности достаточно для нормальных маленьких букв.
И да, в шрифт не кладут маленькие буквы, плохие системы сами решают, как калечить несчастные буквы небольших размеров.


Top
   
 Post subject: Re: TrueType
PostPosted: Wed Nov 12, 2014 2:08 am 
Offline
User avatar

Joined: Sun May 11, 2014 9:21 pm
Posts: 97
bubach wrote:
here's a link to a small truetype support file in C.
http://mollyrocket.com/forums/viewtopic.php?t=736
SoUrcerer wrote:
So, I managed to compile this library.
The link seems broken. :cry:
I would like to see the c source.

_________________
Greetings from Seppe


Top
   
 Post subject: Re: TrueType
PostPosted: Wed Nov 12, 2014 9:14 am 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
You can find sources at svn, programs/libraries/truetype or something like this.


Top
   
 Post subject: Re: TrueType
PostPosted: Wed Nov 12, 2014 11:51 am 
Offline
Mentor/Kernel Developer
User avatar

Joined: Fri Jun 30, 2006 9:01 am
Posts: 1248
http://websvn.kolibrios.org/listing.php ... f1298b64c5

_________________
"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
   
 Post subject: Re: TrueType
PostPosted: Wed Nov 12, 2014 4:01 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5054
No, please use this one viewtopic.php?f=24&t=2059&view=unread#p50614

_________________
Через тернии к звездам


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 81 posts ]  Go to page Previous 1 2 3 4 5 6 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:  
cron
Powered by phpBB® Forum Software © phpBB Limited