crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Экспорт шрифтов
ufna
  опции профиля:
сообщение 6.4.2010, 22:51
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 362
Регистрация: 24.5.2008
Из: Курган/СПб
Пользователь №: 182

Спасибо сказали: 29 раз(а)




Репутация:   5  


Добрый день,

В программе пользователь может выбирать различные шрифты из QFontComboBox, использовать их. Потом сохраняет все данные в файл. Но затем мне нужно открыть это на машине, где этих шрифтов нет. Как их можно экспортировать из системы пользователя?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
SABROG
  опции профиля:
сообщение 7.4.2010, 22:09
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Как я понял сама Qt имеет имена всех файлов и может их соотнести с семейством:

Q_GLOBAL_STATIC(QFontDatabasePrivate, privateDb) 
...
class QFontDatabasePrivate
{
public:
...
struct ApplicationFont {
        QString fileName;
        QByteArray data;
#if defined(Q_OS_WIN)
        HANDLE handle;
        bool memoryFont;
        QVector<FONTSIGNATURE> signatures;
#elif defined(Q_WS_MAC)
        ATSFontContainerRef handle;
#endif
        QStringList families;
    };
    QVector<ApplicationFont> applicationFonts;

К сожалению QFontDatabasePrivate это не d_ptr. Класс определен в .cpp файле и его include в свою программу влечет за собой вставку ненужного кода, но помимо этого еще ничего не собирается. Хаком добраться до него не получается. Похоже единственный вариант это определить копию интерфейса QFontDatabasePrivate и QFontDatabase в своей программе. Вытащить наружу указатель d и сделать reinterpret_cast на экземпляр класса QFontDatabase. Только делать копии интерфейсов большой гемор.
---
Ложный след, так можно достучаться только до тех файлов, которые сам добавил.

Сообщение отредактировал SABROG - 7.4.2010, 23:04
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


5 чел. читают эту тему (гостей: 5, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.1.2025, 17:15