Windows字体渲染

时间:2012-08-13 18:20:18

标签: windows fonts rendering

我正在编写一个应用程序,它将数据流作为输入提供给打印机(来自Redmon)。数据流的文本呈现为单色位图,打印机将使用该位图在纸上打印。我计划解析此数据流并了解发送到打印机的文本。我的应用程序将解析来自任何Windows应用程序并转到打印机的数据。

我解析数据流的方法是匹配像素信息(逐字节),如果有完全匹配,那么我可以唯一地识别一个字符。为此,我假设所有Windows应用程序使用相同的窗口渲染器来按像素渲染字体。因此,如果这些应用程序(包括基于java的应用程序)使用相同的字体和字体大小来打印文本,我将始终从任何应用程序获得特定字符的相同字节序列。这是一个正确的假设还是windows为应用程序提供了各种选项来呈现打印文本?

还有一个库可用于使用单色位图数据进行字符识别吗?

注意:我使用的打印机是ESC / POS兼容打印机。这些打印机的打印机驱动程序将要打印的数据作为单色位图发送。

1 个答案:

答案 0 :(得分:0)

我不熟悉ESC / POS打印机,但是如果你能保证驱动程序总是将文本呈现为单色位图,那么相同字体和大小的字符相同的可能性非常高,但它们不是100% 。首先,您还需要考虑旋转,缩放和剪切。您需要考虑整个变换矩阵,而不仅仅是字体大小。

至少还有两个我能想到的失败点:1)文本覆盖透明胶片; 2)如果机器安装了具有相同名称的备用字体。例如,可以从许多来源获得像Helvetica这样的常见字体,并且它们之间的字符不相同。第三种可能的失败是应用程序忽略了打印机是单色的并且以彩色或灰度打印的事实。将彩色或灰度转换为单色会产生不同颜色的不同位图。

至于OCR软件,Wikipedia有一个很好的OCR SDK比较图表。