kategoria: ANSI C
[#1] Biblioteka FreeType - jak tworzy się edytory tekstu WYSIWYG?
Hej,
Interesuje mnie takie zagadnienie, zupełnie z punktu informatyki i programowania.
Chodzi o prosty edytor tekstu operujący na czcionkach wektorowych
(z możliwością wybrania dowolnej czcionki np. True Type, zmiany jej wielkości w zdaniu i np. koloru)..
równie dobrze można mówić o podstawowym interpreterze HTML-a (tekstu i tagów)

Ale haczyk jest taki, że można użyć tylko głównego Api systemowego, tzn. zrobić sobie okienko,
i używać funkcji graficznych, bez używania gotowych pól typu edit box, memo itp.

Sam temat rasteryzowania czcionki wektorowej jest dość skomplikowany,
ale istnieje np. darmowa biblioteka Free Type napisana w ANSI C (wiec pewnie można ją w miare prosty sposób przełożyć na dowolny system),
która kompleksowo ogarnia chyba wszystkie dostępne formaty, więc temat rasteryzacji pomińmy.
Biblioteka FREE TYPE

Natomiast to co mnie interesuje, to w jaki sposób wszystkie literki tworzące duże i skomplikowane dokumenty
są przechowywane w pamieci i obsługiwane tak że komputer nie jest zamulony. Niemożliwe, żeby
za każdą wpisaną literką całosć była od nowa rasteryzowana bo zamuliłoby to każdy komputer.

Myślę, że po wpisaniu danej literki - jest ona od razu zamieniana na bitmapę zwykła lub antyzliasingową
np. przez właśnie FreeType, i po prostu blitowana na ekran do wspólnej bitmapy. Dopiero jesli np. dokument
jest powiększany lub nastęnuje zmiana wielkości tekstu następuje ponowna rasteryzacja i ingerencja w bitmapę..
no nie wiem tak mi się wydaje..

Może Ktoś coś wie więcej jak się ogarnia takie rzeczy?

Tutaj krótki opis Pana ze StackOverflow na skomplikowania procesu rasteryzacji czcionek wektorowych:
https://stackoverflow.com/questions/10335247/rasterize-truetype-character-glyph-data
[wyróżniony] [#2] Re: Biblioteka FreeType - jak tworzy się edytory tekstu WYSIWYG?

@mateusz_s, post #1

freetype masz na amidze jako library, masz tez wersje ttengine od krashana, on jest specem od "trzcionek"
[wyróżniony] [#3] Re: Biblioteka FreeType - jak tworzy się edytory tekstu WYSIWYG?

@mateusz_s, post #1

System od wersji 2.0 obsluguje fonty wektorowe - sluzy do tego m.in. bullet.library. Kwestie, o ktorych piszesz w wiekszosci rozwiazuje za ciebie system.
Tekst w takim prostym edytorze tekstowym moze byc np. przechowywany w postaci listy linii, z ktorych kazda zawiera z kolei liste obiektow tekstowych. Kazdy taki obiekt zawiera definicje uzytej czcionki (np. nazwe, wiekosc, atrybuty typu bold itp), wysokosc i szerokosc zrasteryzowanego tekstu oraz sam tekst. Wyswietlanie polega na przejsciu przez liste linii - dla kazdej linii iterujesz przez obiekty linii dwukrotnie: 1 raz po to by wyliczyc wysokosc i szerokosc linii (te operacje mozna ominac cachujac wartosc w elemencie linii i aktualizujac w momecie modyfikacji obiektow tekstowych linii), drugi raz wyswietlajac po kolei teksty z kazdego obiektu tekstowego zdefiniowana dla niego czcionka.
Jesli chcialbys rasteryzacje robic na wlasna reke, to sa trzy podejscia, ktore sa najczesciej wykorzystywane:
1. Kazda litera o zadanej wielkosci jest rasteryzowana do bitmapy w momencie pierwszego uzycie i nastepnie cacheowana w pamieci. W momencie wyswietlania na ekranie jakiejs linii, kazda litera z kazdego obiektu tekstowego jest osobno wyswietlana z cache na ekranie.
2. Kazdy tekst z obiektu tekstowego jest rasteryzowany w momecie jego utworzenia/zmiany i cachowany w tym obiekcie. Wyswietlenie wymaga iteracji przez wszystkie obiekty linii i kopiowanie kazdej z osobna na ekran.
3. Kazda linia jest rasteryzowana w momecie utworzenia/zmiany i cachowana w elemencie linii. Kazde wyswietlenie linii powoduje jednorazowe wrzucenie na ekran calego stringu.

Jesli pisalbys C++, to lista linii mogla by przechowywac liste obiektow klasy generycznej z publicznymi metodami w rodzaju np. update, measure, render itp. Obiekt tekstowy bylby pochodna klasy generycznej.
Stad juz tylko krok do dodania innych klas pochodnych np. obiektu obrazka, tabelki. i juz masz Worda. :))
[#4] Re: Biblioteka FreeType - jak tworzy się edytory tekstu WYSIWYG?

@docent, post #3

dzięki za info :D
[#5] Re: Biblioteka FreeType - jak tworzy się edytory tekstu WYSIWYG?

@mateusz_s, post #4

Odgrzewam starego kotleta, bo instaluje sobie Limpid Clock,
a tu proszę, patrzę i jeśli chcemy mieć wersję z antyaliasingiem czcionek
to trzeba zainstalować bibliotekę ttengine.library, której autorem jest @Krashan.

I wg opisu korzysta ona z biblioteki Free Type o której wspomniałem na początku
i ponoć jest bardzo szybka.

Szacun..
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem