Winapi “的Win32 API LogFont.lfCharSet值是多少?”;Unicode“;字符集?

Winapi “的Win32 API LogFont.lfCharSet值是多少?”;Unicode“;字符集?,winapi,unicode,fonts,character-encoding,Winapi,Unicode,Fonts,Character Encoding,我正在开发一个传统的Delphi6/Nevrona Rave 4应用程序。我有一些使用Code128A.ttf字体的报告。它们可以很好地打印到打印机上。但是,我正在更新程序,以使用TReportSystem.RenderObject、TRPRenderPDF生成PDF输出。PDF正确生成,但Code128A字体除外,该字体显示为ANSI 我的问题是通用Win32 LogFont,而不是Delphi或Nevrona Rave。Nevrona文档中的一条线索是,TReportSystem.Repor

我正在开发一个传统的Delphi6/Nevrona Rave 4应用程序。我有一些使用Code128A.ttf字体的报告。它们可以很好地打印到打印机上。但是,我正在更新程序,以使用TReportSystem.RenderObject、TRPRenderPDF生成PDF输出。PDF正确生成,但Code128A字体除外,该字体显示为ANSI

我的问题是通用Win32 LogFont,而不是Delphi或Nevrona Rave。Nevrona文档中的一条线索是,TReportSystem.ReportPrinter.FontCharset需要设置为所使用字体的相应Win32 API LogFont.lfCharset字节

当我使用Windows CharacterMap应用程序(在高级模式下)查看Code128A.ttf字体时,它告诉我Code128A字体的字符集是“Unicode”。它不显示相应的lfCharset字节值

有人知道Unicode ttf字体使用的lfCharset字节值吗


在我尝试所有预定义字节之前,我希望得到一个答案,如果这些字节都不起作用,请尝试未定义的字节。

没有为Unicode定义的
lfCharset
值。这将首先破坏指定字符集的目的。使用字体实际实现的字符集。看起来它的大多数条形码图示符在大多数字符集中都可用(一些字符集的图示符较少)。因此,如果必须设置字符集,请尝试将
lfCharset
设置为0(
ANSI\u CHARSET
)或1(
DEFAULT\u CHARSET
)。

我尝试了所有预定义的*\u字符集值,结果不一。由于应用程序中使用的字体在其他任何地方都可以使用,因此我认为这是Nevrona的RAVE 4 TRPRenderPDF或TRPRender模块中的一个错误。尽管您的回答没有解决我的问题,但它确实回答了我的问题。调试和修改RAVE 4模块的结果好坏参半,但不可接受。如果在这种情况下需要条形码,我将通过将条形码绘制为位图,然后在PDF生成过程中渲染位图,以图形方式创建条形码。非常感谢。任何阅读本文的人都有一个评论:我在本例中使用的Nevrona RAVE(4)版本已经过了它的支持生命周期。事实上,我使用的是仍在使用它的遗留生产系统,这是Delphi和Nevrona软件质量的一个很好的指标。这些报告组件的当前版本可能没有此问题。