我正在尝试使用CreateFont加载Code 128字体,以便我可以在单据上输出条形码。 CreateFont没有返回NULL,但似乎无法找到正确的字体,并且正在加载其他内容,因为我将代码打印为纯文本。
这是条形码功能。
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 );
}
text参数肯定是正确的,所以我认为发生的事情是CreateFont无法找到指定的字体并且默认为其他东西。字体已正确加载,可以从Windows应用程序中选择,如果我在Word中键入代码,那么我会得到一个可以从扫描仪中读取的条形码。
我的问题是,是否有人知道为什么CreateFont没有加载Code 128或者我是否还有其他问题?
答案 0 :(得分:1)
你为fdwCharSet指定了0,它对应于ANSI_CHARSET,因此字体映射器正在寻找支持当前代码页的东西。尝试将SYMBOL_CHARSET用于这些专业字体。