Есть ли в Mac OSX версия функции GetFontData для Windows? - PullRequest
3 голосов
/ 03 мая 2011

У нас есть приложение, которое позволяет нашим пользователям создавать готовые к печати PDF-документы, используя переменные данные (имена, названия, номера телефонов и т. Д.), Которые вводит их клиент через веб-сайт электронной коммерции.Чтобы упростить переменные данные, мы должны встроить всю карту символов шрифта.В Windows мы использовали функцию Windows API GetFontData (...) следующим образом:

#ifdef Q_WS_WIN
    //this is windows specific code
    HDC DC = CreateCompatibleDC(NULL);
    HFONT hFont = font.handle();
    HFONT oFont=(HFONT)SelectObject(DC,hFont);

    DWORD fontLength = ::GetFontData(DC, 0, 0, 0, 0);

    if(fontLength != GDI_ERROR)
    {
        fontData.GrowAllocation(fontLength);

        if(::GetFontData(DC, 0, 0, fontData.GetBuffer(), fontLength) == GDI_ERROR)
        {
            fontData.Clear();
        }
        else
        {
            fontData.SetLength(fontLength);
            returnVal = true;
        }
    }

    SelectObject(DC,oFont);
    DeleteDC(DC);
    //End of windows specific code
#elif defined(Q_WS_MAC)



#endif

Этот метод очень успешно работает в нашей версии для Windows;однако мы портируем приложение на Qt для платформы Mac OSX.

Мой первый вопрос: есть ли Qt-способ доступа к необработанным данным шрифта из QFont, QFontDatabase и т. Д., Который мы могли бы использовать для встраивания в pdf?Мы не смогли найти способ.Обратите внимание на оболочку #ifdef в приведенном выше коде.Обратите внимание, что переменная fontData является автономным буфером памяти, который управляет своей собственной памятью, пожалуйста, не обращайте внимания.

Мой второй вопрос: Если не существует способа доступа к данным шрифта в Qt независимо от ОС, что такоеOSX эквивалентно окнам GetFontData?

Спасибо

Ответы [ 2 ]

0 голосов
/ 03 мая 2011

Самый последний (до тех пор, пока Apple не наймет новых людей со шрифтами и снова не заразится неизлечимой болезнью) API текста и шрифтов будет Базовый текст . Я никогда не использовал его, так как погоня за настроением Apple вредна для моего личного и финансового состояния, я перестал использовать API только для Apple. :)

Шутка в сторону, похоже, что CTFont обеспечивает доступ ко всем таблицам шрифта. Я не вижу ничего, что подготавливает шрифт для встраивания, но это, вероятно, дает вам лучший шанс.

0 голосов
/ 03 мая 2011

Я только просмотрел документацию для GetFontData, и я не очень много знаю о Qt (хотя звучит так, что решение Qt было бы предпочтительнее), но вы можете посмотреть на класс ObjC для шрифтов, NSFont .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...