[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [ft] Fw: outline points
From: |
Pankracy |
Subject: |
Re: [ft] Fw: outline points |
Date: |
Sun, 23 Dec 2012 22:26:53 +0100 |
User-agent: |
Thunderbird 2.0.0.24 (X11/20100623) |
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.
- [ft] Fw: outline points, Werner LEMBERG, 2012/12/23
- Re: [ft] Fw: outline points, Wojciech Mamrak, 2012/12/23
- Re: [ft] Fw: outline points,
Pankracy <=
- Re: [ft] Fw: outline points, Wojciech Mamrak, 2012/12/23
- Re: [ft] Fw: outline points, Ineiev, 2012/12/23
- Re: [ft] Fw: outline points, Werner LEMBERG, 2012/12/24
- Re: [ft] Fw: outline points, Pankracy, 2012/12/24
- Re: [ft] Fw: outline points, Werner LEMBERG, 2012/12/24
- Re: [ft] Fw: outline points, Wojciech Mamrak, 2012/12/24
- Re: [ft] Fw: outline points, Werner LEMBERG, 2012/12/24
- Re: [ft] Fw: outline points, Wojciech Mamrak, 2012/12/24
- Re: [ft] outline points, Grzegorz Rolek, 2012/12/23
- Re: [ft] outline points, Grzegorz Rolek, 2012/12/23