Wojciech Mamrak pisze: > I am not sure whether I understand your intensions even though I am Polish :) > > W dużym skrócie: > musisz załadować czcionkę, podać code point (unicode) danego znaku, > pobrać jego kontur i dokonać jego dekompozycji (rozkładu) na części > składowe. Kontur opisany jest funkcjami - prostymi i krzywymi Beziera. > One opisane są poprzez punkty kontrolne. > Jak opisany jest kontur znajdziesz tutaj: > > http://www.freetype.org/freetype2/docs/glyphs/glyphs-6.html > > Niestety nie zajmowałem się czymś takim więc nie mam kodu który mógłby > posłużyć za bazę dla ciebie. > FT_GlyphSlotRec ma pole outline typu FT_Outline, następnie patrz > instrukcja dekompozycji opisana wyżej. > Nareszcie w ludzkim języku ;)
Nawet jeśli nie pomożesz stanieś się moim głosem, bo mój angielski koslawy strasznie. 1. Mam już obwiednie/outline. Nie musze niczego dekompozytować. 2. Potrzebuje wszystkich punktów na całej obwiedni. I tu jest problem. Pomyślałem sobie, że skoro jest funkcja renderująca zamieniajaca outline na obraz to musi gdzies istniec funkcja zamieniająca obwiednie na punkty. Nie ma innej możliwości i potrzebuje wyniku tej funkcji czyli zbioru wszystkich punktów. Jestem świadom , że scieżka/path jest pokawałkowana i, ze realna funkcja wylicza z różną dokładnością każdy kawałek. To obojetne. Musze wyznaczyć przecięcie całej obwiedni z linia lub odległośc obwiedni od innej krzywej, a nie moge teo zrobic nie znając wszystkich punktów. Jest jeden warunek. Potrzebuję to z dowolną dokładnoscią, ale to tez istnieje we freetype bo jest to zapisane w dowolnej rozdzielczości. Rendering przebiega w zadanej rozdzielczości wiec moge sobie zażyczyć np. obwiednia na 300dpi. Ideałem było by więc: 1. Wczytanie obwiedni bez skalowania. I to umiem zrobić FT_Load_Char( face, numerek, FT_LOAD_NO_SCALE ); 2. Istnieje funkcja FT_Outline_Get_BBox która podaje rzeczywiste maksymalne punkty na glifie. Nawet jesli glif jest źle zapisany i punkty kontrolne nie leża na krańcach obwiedni. W odróżnieniu od CBox ktory podaje po prostu najwieksze i najmniejsze punkty kontrolne i tyle. Chodzi mi o to jak wyciągnac te punkty z całej obwiedni. Moga być jako ułamki (bo pewnie i takie wyjda, a nie jak w foncie całkowite). Mam nadzieję, że teraz napisałem bardziej jasno i składniej. Nie moge sobie zrederowac po prostu krzywej i wyliczyc odległości od obrazka bo błedy sa bardzo duże. Musze to zrobic na krzywych. Gdzies w kodzie powinno to być. Pewnie wystarczy jakiś brudny hak by dodac funkcję to wyświetlania takich punktów. Ale gdzie nie moge dojsc. Szukałem w różnych funkcjach i się pogubiłem. Prosze pomóż ew. napisz po angielsku w dwóch zdaniach o co mi chodzi a ktos to zrobi. Na oko powinno to byc bardzo proste. Precież rysowanie glifów wylicza te punkty. Wystarczy je tylko wypisać. Pozdrawiam i dziękuje za otwartość. P. _______________________________________________ Freetype mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/freetype
