Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Вс окт 22, 2017 7:38 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 65 сообщений ]  На страницу Пред. 1 2 3 4 5 След.
Автор Сообщение
СообщениеДобавлено: Вс фев 13, 2011 5:58 pm 
Не в сети

Зарегистрирован: Чт ноя 25, 2010 8:26 pm
Сообщения: 41
Sorcerer писал(а):
Файл freetype.a лежит в $(MENUETDEV)/lib

Нужно задать еще путь к библиотеке
Код:
-L$(MENUETDEV)/lib


Хотя... Этот путь наверное в mld прописан. Можно еще переименовать библиотеку в libfreetype.a


Вернуться к началу
СообщениеДобавлено: Вс фев 13, 2011 6:16 pm 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
Спасибо... Помогло. Не заметил, что имя неправильное у файла.
теперь все так же, как с другими примерами menuetlibc, подключающими библиотеки:
/home/sourcerer/projects/me/lib/libc.a(remove.o): In function `remove':
remove.c:(.text+0x9a): undefined reference to `__stack_chk_fail'

И не линкуется. Интересно, это исправлял уже кто-нибудь, или нет? menuetlibc у меня один из последних, насколько я понимаю, потому что в нем есть упоминания о Колибри, а не только о menuet... И в каком направлении ковырять? Скомпилированную menuetlibc от Asper'а использовать не могу, потому что у меня не mingw и не cygwin...


Вернуться к началу
СообщениеДобавлено: Пн фев 14, 2011 1:32 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1599
Sorcerer, Яндекс советует добавить -fno-stack-protector к опциям компиляции. Опции компиляции можно добавить - на выбор - в исходном тексте mgcc или в osrules.mak, с учётом того, что и там, и там есть две ветки, срабатывающие в разных случаях.

_________________
Сделаем мир лучше!


Вернуться к началу
СообщениеДобавлено: Пн фев 14, 2011 9:30 pm 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
CleverMouse писал(а):
Sorcerer, Яндекс советует добавить -fno-stack-protector к опциям компиляции. Опции компиляции можно добавить - на выбор - в исходном тексте mgcc или в osrules.mak, с учётом того, что и там, и там есть две ветки, срабатывающие в разных случаях.

Спасибо большое! Я думал, это я такой идиот или неудачник, поэтому и не искал в поиске... Добавление опции не помогло, а вот другие советы, кажется, помогли. Например, совет создать dummy-функцию __stack_chk_fail(void) помог скомпилировать те тесты, которые у меня раньше не компилировались, и они работают. А моя простая программка - нет, библиотека все-таки собралась неправильно, и дело в параметрах сборки, потому что, как выяснилось, некоторые o-файлы включились в архив несколько раз (ума не приложу, как так получилось).
Но, кажется, собрать freetype для Колибри гораздо более реально, чем я предполагал, и, судя по всему, гораздо быстрее, чем изобретать свой велосипед.
Конечно, это уже делали до меня, и не раз. И все же я надеюсь, что смогу довести все до ума.


Вернуться к началу
СообщениеДобавлено: Пн фев 14, 2011 10:42 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн апр 16, 2007 6:38 pm
Сообщения: 1222
Sorcerer, это отлично! Всячески желаю успехов, и в своей разрабатываемой программе обязательно сделаю поддержку таких векторных шрифтов (BGI уже используются и работают, но тормознуты и некрасивы). Нужна будет помощь (кроме как с Си, и компиляцией из него), буду рад помочь (в том же тестировании, например)

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Вернуться к началу
СообщениеДобавлено: Пн мар 28, 2011 10:58 am 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
Шрифты, шрифты... Наконец собрал freetype 1.3.1 по-человечески. Линкуется статически. Проверял только на ftstrpnm - генерирует pnm-изображение с текстом про лису и ленивого пса по данному шрифту (брал Libertation Mono).


Вложения:
freetype.7z [31.24 КБ]
89 скачиваний
Вернуться к началу
СообщениеДобавлено: Пн мар 28, 2011 11:19 am 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
Результат выглядит вот так:
Вложение:
render.png
render.png [ 668 байт | 2401 просмотр ]


Поддерживаются сглаживание, пиксель-хинтинг и всё такое. Бинарник в сжатом виде занимает 50 килобайт, а файл шрифта, который я использовал (Libertation Mono, с поддержкой русского и английского) - около 110 килобайт. Имеется поддержка арабского, но нет поддержки японского и китайского.
В теории на флоппик влезет, если потеснить игрушки и всё такое. (FreeType2, кажется, потяжелее будет)

UPD: русский поддерживается в теории. На практике вывести строку на русском мне не удалось. Пробовал передавать UTF-8, CP-1251, CP-1252 и IBM866-строки, все равно :( Пойду читать мануалы.

Вопрос к знатокам: есть ли возможность сделать COFF-библиотеку с использованием gcc, и если да, то как?


Вернуться к началу
СообщениеДобавлено: Пн мар 28, 2011 2:32 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Sorcerer

Для этого надо компилировать все файлы в один (опция -combine).


Вернуться к началу
СообщениеДобавлено: Пн мар 28, 2011 3:12 pm 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
А можно какую-нибудь рыбу, чтобы было понятно, что и как? Файл у меня и так один объектный.


Вернуться к началу
СообщениеДобавлено: Пн мар 28, 2011 3:17 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Посмотри svn://kolibrios.org/programs/develop/libraries/pixlib
Обязятельные "START" и "VERSION", остальное - твои функции.

Gcc любит добавлять в объектники отладочную информацию. Надо внимательно смотреть опции компиляции.


Вернуться к началу
СообщениеДобавлено: Пн мар 28, 2011 11:32 pm 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
Ковыряюсь с обертками для функций freetype. Текущая версия библиотеки (1.3.1) в kpack-ованном виде занимает около 26 килобайт, но, судя по всему, скоро размер на несколько килобайт увеличится. Пока что она лишь выводит свою версию, и создает TT_Engine, поэтому не вижу смысла ее выкладывать сюда. Как только эта штуковина взлетит, так сразу и выложу. Впереди неделька-другая свободного времени, и есть большие шансы на то, что за это время я успею всё допилить.

Выводить текст с помощью freetype можно будет так же просто, как, например, использовать box_lib. Нужно лишь загрузить библиотеку, импортировать нужные функции, загрузить файл шрифта, передать функциям указатели на файл шрифта, текст и область памяти для вывода, и всё.

Благодарности:
Спойлер: Показать
Радует, что newlib, судя по всему, хорошо соответствует стандартам ANSI C - почти никаких правок исходного кода самой freetype делать не пришлось. Отдельное спасибо Serge за работу!
А еще спасибо всем, кто помогает Колибри! ;)


Вернуться к началу
СообщениеДобавлено: Вт мар 29, 2011 11:50 pm 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
Библиотека freetype 1.3 для Колибри. Тепленькая, только что из компилятора и линковщика.
Вложение:
kolibri-freetype-1.3.7z [93.33 КБ]
86 скачиваний

В архиве лежат: библиотека (dll), файл для линковки с исходным кодом (libfreetype.a), шрифт Libertation (какой под руку попался из linux) и тестовая программа ftpnm.kex.

Что со всем этим делать обычному пользователю?
1) Понадобится архив amz из темы про newlib.
2) Нужно скопировать libc.obj в /rd/1/lib/ (придется часть файлов с рамдиска удалить скорее всего),
3) В файл system.env прописать правильные пути к файлам библиотек,
4) Затем скопировать этот файл в /rd/1/.
5) После этого открываем доску отладки, и закрываем (в Колибри нет pipes, и stdout идет на доску отладки, так что чистый файл boardlog.txt не повредит).
6) Затем открываем доску отладки вновь и
7) Запускаем ftpnm.kex из папки со шрифтом. Если всё хорошо - на доске появится сообщение "P4" и еще несколько цифр. Если всё плохо - то подробно будет рассказано, чего не хватает (библиотеки, шрифта, или благоприятной фазы луны). Будем надеяться, что всё хорошо.
8) Если всё действительно хорошо, то можно закрывать доску отладки и смотреть на файл /rd/1/boardlog.txt. Если никаких лишних сообщений на доску отладки не приходило, то boardlog.txt можно переименовать в файл с расширением pnm, скопировать его на жесткий диск или флешку, и затем просмотреть в каком-нибудь графическом просмотрщике.
9) После всего этого можно порадоваться, что freetype теперь работает в Колибри, и его можно использовать в любых программах.

А как писать программы с использованием freetype?
Для этих целей я использую mingw, fasm, заголовочные файлы freetype 1.3 (взять их можно из архива с официального сайта freetype), порт newlib (файлы amz-dev из темы про newlib, а так же заголовочные файлы с SVN) и свою голову.
Код пишу в строгом соответствии с freetype api reference (разумеется, этот файл тоже есть в том же архиве), затем компилирую и линкую так, как это описано в теме про newlib:
i586-mingw32msvc-gcc -c *.c -fomit-frame-pointer -I include/ -D__DYNAMIC_REENT__ -O2
i586-mingw32msvc-ld -nostdlib -pie -s -T pe_app.lds --image-base 0 --stack 0x100000 -Map test.map ftstrpnm.o common.o -L ./ -lfreetypeimp -lcimp -lamz -o my_app.exe
fasm demo.asm ftpnm.kex

Я не уверен, можно ли использовать эту библиотеку в программах на fasm, но мне кажется, что можно (а как - это уже совсем другой вопрос). Надеюсь, что более компетентные в этом вопросе люди всё расскажут и покажут.

Спасибо всем за помощь!

Надеюсь, что в Колибри будут более-менее нормальные шрифты значительно раньше того момента, когда наши дети будут писать письма своим внукам :mrgreen: Почему-то мне кажется, что осталось поработать совсем немного (не считая переписывания части программ на использование масштабируемых шрифтов).


Вернуться к началу
СообщениеДобавлено: Ср мар 30, 2011 12:24 am 
Не в сети
Аватара пользователя

Зарегистрирован: Пт июн 27, 2008 3:22 pm
Сообщения: 974
Sorcerer

Тебе всё-таки удалось собрать freetype в библиотеку. Молодец! :)
Большой шаг в сторону браузера, офисных программ и т.п.

Ну тут уже больше всех должен радоваться Albom.


Вернуться к началу
СообщениеДобавлено: Ср мар 30, 2011 2:01 am 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Sorcerer
Ура, заработало!!!
С fasm никаких проблем нет. Народ пишет программы и дллки под Windows, здесь то же самое. Конечно требуются некоторые телодвижения по сравнению с С (опять таблицы импорта или extrn объявления), но не большие чем для работы с COFF DLL.
Спойлер: Показать
Собрать бы ещё Freetype2. Я бы пересобрал Cairo. У них там специальный frontend к фритайпу. Мечтательно :roll:


Вернуться к началу
СообщениеДобавлено: Ср мар 30, 2011 8:48 am 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
Решил поковырять и freetype2. Объектники компилируются легко (использую компиляцию из одной папки, все по инструкции), осталось правильно настроить include для сборки только необходимых модулей. Линковщик ругается только на FT_ERROR и FT_TRACE1 (на них ругается и при сборке ./configure --host=i586-mingw32msvc --build=i686-linux-elf, видимо, дело в заголовочных файлах), и еще почему-то на _setjmp.
По непонятной причине def-файл создается где-то в дебрях makefile'ов для visual studio (эх, вот бы сделали как в первом фритайпе, sh-скрипт, и всё), попробую потом его оттуда выдрать. Без def же библиотека не соберется как положено, правильно?


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 65 сообщений ]  На страницу Пред. 1 2 3 4 5 След.

Часовой пояс: UTC+03:00


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB