【问题标题】:What is the Win32 API LogFont.lfCharSet value for the "Unicode" character set?“Unicode”字符集的 Win32 API LogFont.lfCharSet 值是多少?
【发布时间】:2016-04-12 08:10:15
【问题描述】:

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

我的问题是通用的 Win32 LogFont,而不是 Delphi 或 Nevrona Rave。 Nevrona 文档中的一条提示说,需要将 TReportSystem.ReportPrinter.FontCharset 设置为所使用字体的适当 Win32 API LogFont.lfCharset 字节。

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

有谁知道用于 Unicode ttf 字体的 lfCharset 字节值?

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

【问题讨论】:

    标签: winapi unicode fonts character-encoding


    【解决方案1】:

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

    【讨论】:

    • 我尝试了所有预定义的 *_CHARSET 值,结果好坏参半。由于该字体在应用程序中使用的其他任何地方都有效,因此我将其归结为 Nevrona 的 RAVE 4 TRPRenderPDF 或 TRPRender 模块中的一个错误
    • 虽然您的回答没有解决我的问题,但确实回答了我的问题。调试和修改 RAVE 4 模块的结果好坏参半,但结果令人无法接受。如果在这种情况下需要条形码,我将通过将条形码绘制到位图以图形方式创建它们,然后在 PDF 生成过程中渲染位图。谢谢!
    • 对任何阅读本文的人的评论:在这种情况下,我正在使用的 Nevrona RAVE (4) 版本已经远远超过了它的支持生命周期。我正在使用仍在使用它的遗留生产系统这一事实很好地表明了 Delphi 和 Nevrona 软件的质量。这些报告组件的当前版本可能不存在此问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 2018-10-20
    • 2011-08-20
    相关资源
    最近更新 更多