freetype
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [ft] Fw: outline points


From: Wojciech Mamrak
Subject: Re: [ft] Fw: outline points
Date: Mon, 24 Dec 2012 00:56:32 +0100

> Pomyślałem sobie, że skoro jest funkcja renderująca zamieniajaca outline
> na obraz to musi gdzies istniec funkcja zamieniająca obwiednie na
> punkty.

The question is: is there any way to receive set of points describing
an outline of given glyph instead of a set of rules and control points
describing the bezier functions, from which outline is composed of?

Freetype does it internally, but I don't think it is worth and
reasonable to try to use these intrinsics. They can change at any time
with new versions, and you can spend more time on finding how to use
them that you would spend to write your own implementation. There is
plenty of resources on the web.

Jest, ale to zapewne jakieś wnętrzności. Nie mam czasu, i uważam że
nie warto grzebać, szczególnie że źródła mogą się zmienić w każdej
chwili. Jest dużo materiałów nt. krzywych beziera. Współrzędne punktow
masz podane. Wystarczy niemal tylko podstawić do wzorów funkcji.

> 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.

To wciąż wydaje mi się sprzeczne :)

W dniu 23 grudnia 2012 22:26 użytkownik Pankracy <address@hidden> napisał:
> 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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]