2017-03-31 27 views
1

コード128をロードするためにCreateFontを使用して、スリップにバーコードを出力しようとしています。 CreateFontはNULLを返していませんが、正しいフォントを見つけることができないようで、プレーンテキストとしてコードが印刷されるので、何か他のものを読み込んでいます。POSプリンタでのバーコードフォントの印刷

これはバーコード機能です。

void EpicSlipPrinter::addBarcode (const QString& text) 
{ 
    HFONT tempFont = CreateFont (60 , 0 , 0 , 0 , 0 ,0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , L"Code 128"); 
    oFont = (HFONT)SelectObject (mPrinterHandle , tempFont); 

    INT ixPosition = iPaperWidth/2; 

    SIZE sz = getTextDimensions (text , 3 , 3 , 600 , 0 , 0); 

    SetTextAlign (mPrinterHandle , TA_CENTER); 

    TextOut (mPrinterHandle , ixPosition , iyPosition , text , text.length()); 

    SelectObject (mPrinterHandle , oFont); 
    DeleteObject(tempFont); 
} 

テキストパラメータは、私が何を考えが起こっている間違いなく正しいのcreateFontは、指定されたフォントを見つけることができないということで、何か他のものをデフォルトされます。フォントが正しくロードされ、Windowsアプリケーションから選択できます。コードをWordに入力すると、スキャナから読み取ることができるバーコードが表示されます。

私の質問は、なぜ誰かがCreateFontがコード128を読み込んでいないことを知っていますか?また、別の問題がありますか?

答えて

1

fdwCharSetには、ANSI_CHARSETに対応する0が指定されているため、フォントマッパーは現在のコードページをサポートするものを探しています。これらの特殊フォントにはSYMBOL_CHARSETを使用してみてください。

+0

私が住んでいる限り、私はMicrosoftのフォントマッパーを理解できません。フォント名は最も重要な入力でなければならないが、そうではない。 –

+0

@マークランソム:フォント名を常に使用する際の問題は、他のスクリプトでテキストを印刷しようとしたときにフォントのリンクができないことです。 DirectWriteのような新しいAPIは、この文字セットの遺産を完全に避けているようです。 –

+0

ドキュメントとは一貫していませんが、DEFAULT_CHARSETを使用することができます.DEFAULT_CHARSETは、フォント名の先例を示すようです。 (これはMarlettや私が試した特殊記号のフォントで動作します。 私はCode 128を持っていません。) –

関連する問題