Здравствуйте, уважаемые форумчане. Использую в своём проекте библиотеку freetype http://www.freetype.org/
Исходники этой библиотеки включены в исходники Qt: <Qt dir>\Src\qtbase\src\3rdparty\freetype\
Под Линуксом оказалось очень просто использовать эту библиотеку:
в pro-файл добавляем
LIBS += -lz -lfreetype
INCLUDEPATH += $$MOC_DIR \
/usr/include/freetype2 \
/usr/include
Автоматически не получилось. Но кое в чём продвинулся. Добавил в PATH необходимые пути (недавно сносил Qt4 и ставил Qt5). Из директории исходников библиотеки запустил mingw32-make. Он собрал мне "freetype.a" (и ещё кучу объектников) Что с ней дальше делать?
В директории с созданной freetype.a есть также файл freetype.def c таким содержимым:
LIBRARY freetype.dll
DESCRIPTION FreeType 2 DLL
EXPORTS
FTC_CMapCache_Lookup
FTC_CMapCache_New
FTC_ImageCache_Lookup
FTC_ImageCache_LookupScaler
FTC_ImageCache_New
FTC_Manager_Done
....
Оказалось, что можно. Решение такое: freetype.a переименовываем в freetype.lib и добавляем как статическую библиотеку к проекту. В результате в pro-файл добавится такое:
unix|win32: LIBS += -L$$PWD/ -lfreetype
INCLUDEPATH += $$PWD/
DEPENDPATH += $$PWD/
win32: PRE_TARGETDEPS += $$PWD/freetype.lib
else:unix: PRE_TARGETDEPS += $$PWD/libfreetype.a
LIBS += -L$$PWD/ -lfreetype
PRE_TARGETDEPS += $$PWD/freetype ....
.
В продолжение этой темы... Юрию спасибо за помощь. Недавно вышел релиз программы Правда вышел только под Windows и Linux. Под Mac не вышел. Причина следующая: программа использует для красоты всякие экзотические шрифты (типа таких http://designmodo.com/linecons-free/ , http://designmodo.com/linecons-free/). При использовании этих шрифтов на Windows или Linux, символы рисуются нормально, а под Мас-ом нет. Под Маком надписи на виджетах (например, название кнопки) из таких шрифтов пишутся квадратиками (как будто шрифт не распознан, глифы не найдены). НО! При выведении текста из такого шрифта в графическом виджете (например, QWebView) символы шрифта рисуются ЦВЕТНЫМИ картинками.
Помогите разобраться, что за фигня?
Появилась одна версия. Вот что написано в доработках библиотеки freeType:
Behdad Esfahbod (on behalf of Google) contributed support for color embedded bitmaps (eg. color emoji). A new load flag, FT_LOAD_COLOR, makes FreeType load color embedded-bitmaps, following this draft specification https://color-emoji.googlecode.com/git/specification/v1.html
Для символов есть глифы и есть цветные биткарты. Причём биткарты имеют преимущество перед глифами.
Я попробовал у виджетов выставлять специальный флаг:
QFont f;
f.setFamily(face->family_name);
f.setPixelSize(32);
f.setStyleStrategy(QFont::ForceOutline);
label_widget->setFont(f);
Появилась ещё одна зацепка: если шрифт установить в систему (в Маке), то всё работает нормально (как в винде и линуксе). В чём разница между установленным и неустановленным шрифтом? В чём отличаются механизмы использования?
Выяснилась проблема, но решения не появилось. Под Маком при выполнении
QFontDatabase::addApplicationFont(font_name);
шрифт добавляется в приложение криво. Функция не возвращает ошибку (то есть типа шрифтв добавлен верно), но семейство ему выдаётся вообще другое. В моём случае всем добавляемым таким образом шрифтам выдавалось семейство "Lucida Grande". Разумеется позже программа не могла найти шрифт с указанным мной именем.Найден косяк.
В QFontDatabase::addApplicationFont() под MacOS нужна обязательно указывать полный путь к файлу-шрифту. Под другими ОС можно указывать просто имя, находясь в его директории.
может быть, следует явно указать, что искать нужно именно в текущей директории
"./файл"
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)