Отрисовка TrueType контуров

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Отрисовка TrueType контуров

Сообщение Sasha » 08.12.2015 22:34:33

Здравствуйте.

Знает ли кто-нибудь, как рисовать контуры символов, которые прочитаны из файлов ttf? Я считал точки из файла, определит какие точки на кривой, какие вне кривой, и построил кривые Безье, как написано в википедии, но символ явно не так выглядит, круг не круглый, овал не овальный, такое впечатление, что точки вне кривой должны стоять не там.
Sasha
новенький
 
Сообщения: 41
Зарегистрирован: 07.12.2015 01:27:43

Re: Отрисовка TrueType контуров

Сообщение zub » 08.12.2015 23:23:35

ЕМНИП там для нескольких подряд идущих точек "не на кривой" вычисляются "средние" точки "на кривой" т.е. кривые всегда квадратичные.
Моя аналогичная тема http://forum.lazarus.freepascal.org/ind ... 980.0.html картинки там насколько помню видно только зарегистрированным пользователям.
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Отрисовка TrueType контуров

Сообщение Mikhail » 09.12.2015 13:16:27

Sasha писал(а):Здравствуйте.

Знает ли кто-нибудь, как рисовать контуры символов, которые прочитаны из файлов ttf? Я считал точки из файла, определит какие точки на кривой, какие вне кривой, и построил кривые Безье, как написано в википедии, но символ явно не так выглядит, круг не круглый, овал не овальный, такое впечатление, что точки вне кривой должны стоять не там.

А как читаете файлы, напрямую или FreeType используете?
Mikhail
энтузиаст
 
Сообщения: 565
Зарегистрирован: 24.10.2013 16:06:47

Re: Отрисовка TrueType контуров

Сообщение Sasha » 09.12.2015 21:34:58

zub писал(а):ЕМНИП там для нескольких подряд идущих точек "не на кривой" вычисляются "средние" точки "на кривой" т.е. кривые всегда квадратичные.
Моя аналогичная тема http://forum.lazarus.freepascal.org/ind ... 980.0.html картинки там насколько помню видно только зарегистрированным пользователям.


Спасибо буду ковырять в этом направлении. На самом деле странно, неужели нельзя было сразу такие точки записать, чтобы количество расчётов было минимальным, а так для отображения лишние вычисления.

Добавлено спустя 6 минут 3 секунды:
Mikhail писал(а):
Sasha писал(а):Здравствуйте.

Знает ли кто-нибудь, как рисовать контуры символов, которые прочитаны из файлов ttf? Я считал точки из файла, определит какие точки на кривой, какие вне кривой, и построил кривые Безье, как написано в википедии, но символ явно не так выглядит, круг не круглый, овал не овальный, такое впечатление, что точки вне кривой должны стоять не там.

А как читаете файлы, напрямую или FreeType используете?


Читаю файлы напрямую. Мне нужны только точки символов, а для этого можно обойтись одним модулем.
Sasha
новенький
 
Сообщения: 41
Зарегистрирован: 07.12.2015 01:27:43

Re: Отрисовка TrueType контуров

Сообщение zub » 09.12.2015 21:56:01

Это формат хранения на диске, никто не мешает преобразовать данные из ttf в более подходящие для отображения

>>читаю файлы напрямую. Мне нужны только точки символов, а для этого можно обойтись одним модулем.
в лазаре есть штатные средства для чтения ttf
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Отрисовка TrueType контуров

Сообщение Sasha » 09.12.2015 22:20:58

zub писал(а):в лазаре есть штатные средства для чтения ttf

С них я и начал, но они слишком навороченные для такой простой задачи как вытаскивание точек символа.
Sasha
новенький
 
Сообщения: 41
Зарегистрирован: 07.12.2015 01:27:43

Re: Отрисовка TrueType контуров

Сообщение Sasha » 11.12.2015 01:23:17

Спасибо zub`у за сылку, сделал как там написанно и всё нормально отрисовывается.
Sasha
новенький
 
Сообщения: 41
Зарегистрирован: 07.12.2015 01:27:43

Re: Отрисовка TrueType контуров

Сообщение Mirage » 12.12.2015 04:16:03

В итоге, для FPC есть либа, позволяющая вытащить из TTF кривые, чтобы их осталось только отрисовать?
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: Отрисовка TrueType контуров

Сообщение zub » 12.12.2015 13:17:28

Eсть. components\lazutils\easylazfreetype.pas
Я из easylazfreetype вытягиваю контуры, с помощью glu триангулирую их и рисую
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Отрисовка TrueType контуров

Сообщение Sasha » 12.12.2015 23:22:58

glu триангуляцию умеет делать, блин, а я сам триангулятор делал, но всё равно не так уж это и плохо, зато всё в одном файле без сторонних библиотек.

Добавлено спустя 6 минут 44 секунды:
zub писал(а):Eсть. components\lazutils\easylazfreetype.pas
Я из easylazfreetype вытягиваю контуры, с помощью glu триангулирую их и рисую


По поводу контуров. FPC-шная библиотека даёт точки для сглаженых контуров или она даёт только опорные точки?
Sasha
новенький
 
Сообщения: 41
Зарегистрирован: 07.12.2015 01:27:43

Re: Отрисовка TrueType контуров

Сообщение zub » 13.12.2015 12:19:38

easylazfreetype выдает тоже самое что есть в ttf - набор точек с атрибутами "на кривой"\"не на кривой". токже умеет отрисовывать глифы, в том числе с антиалиасингом (см. lazarus\examples\lazfreetype). но пользовать его для рисования я не пробовал.

>>glu триангуляцию умеет делать, блин, а я сам триангулятор делал,
glu умеет и триангуляцию и тесселяцию, правда для тесселяции идущий в составе винды glu32.dll не очень подходит - я использую месавский
>>но всё равно не так уж это и плохо, зато всё в одном файле без сторонних библиотек.
Если получился надежный и быстрый триангулятор почему бы не выложить исходники?
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Отрисовка TrueType контуров

Сообщение Mirage » 14.12.2015 04:53:53

zub писал(а):easylazfreetype выдает тоже самое что есть в ttf - набор точек с атрибутами "на кривой"\"не на кривой". токже умеет отрисовывать глифы, в том числе с антиалиасингом (см. lazarus\examples\lazfreetype). но пользовать его для рисования я не пробовал.


А, т.е. она таки не выдает то, что можно отрисовать. Нужен какой-то процессинг.
И тем не менее может сама рисовать, т.е. поди тянет еще кучу ненужных зависимостей?
Пичалька...
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: Отрисовка TrueType контуров

Сообщение zub » 14.12.2015 10:26:12

В ней есть свой растеризатор, как он работает я не вдавался в подробности. Зависимостей насколько я понимаю никаких нет, всё написано паскале и с виду является портом сишного кода, видимо FreeType.

>>А, т.е. она таки не выдает то, что можно отрисовать. Нужен какой-то процессинг.
А что хотим рисовать? если растр - изучаем встроенный растеризатор. Если вектор - вот набор точек безье кривых... Что может понадобиться еще?

>>Пичалька...
Вовсе нет, всё прекрасно работает
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Отрисовка TrueType контуров

Сообщение Mirage » 15.12.2015 01:23:58

zub писал(а): Зависимостей насколько я понимаю никаких нет


:shock: Неужто даже без classes обошлись?

zub писал(а):А что хотим рисовать? если растр - изучаем встроенный растеризатор. Если вектор - вот набор точек безье кривых... Что может понадобиться еще?


Рисовать хотим буквы полигонами. Но насколько я понял из вышеприведенной дискуссии, набор точек нужно обработать, получить в результате еще точки и потом уже можно рисовать.
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: Отрисовка TrueType контуров

Сообщение zub » 15.12.2015 02:13:08

>>набор точек нужно обработать, получить в результате еще точки и потом уже можно рисовать.
Набор полигонов для буквы размером 10 пикселов и "пол экрана" должен чуток различаться - поэтому аппроксимация безье и последующая триангуляция логично ложится на плечи програмиста.

В итоге, для FPC есть либа, позволяющая вытащить из TTF кривые, чтобы их осталось только отрисовать?

В ттфе нет полигонов, только безье контуры, А вот либа позволяющая вытащить из ттфа "кривые, чтобы их осталось только отрисовать" в FPC есть))
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 233

Рейтинг@Mail.ru