2012-08-13 5 views
0

입력으로 프린터에가는 데이터 스트림을 가져 오는 응용 프로그램을 작성 중입니다 (Redmon). 데이터 스트림에는 프린터가 용지에 인쇄하기 위해 사용할 단색 비트 맵으로 렌더링 된 텍스트가 있습니다. 이 데이터 스트림을 구문 분석하고 프린터로 전송되는 텍스트를 이해할 계획입니다. 내 응용 프로그램은 모든 Windows 응용 프로그램에서 오는 데이터를 구문 분석하고 프린터로갑니다.Windows 글꼴 렌더링

데이터 스트림을 구문 분석하는 방법은 픽셀 정보 (바이트 단위)를 일치 시켜서 정확하게 일치하는 경우 문자를 고유하게 식별 할 수 있습니다. 이를 위해 나는 모든 윈도우 응용 프로그램이 동일한 윈도우 렌더러를 사용하여 픽셀 측면에서 글꼴을 렌더링한다고 가정합니다. 따라서 자바를 기반으로하는 응용 프로그램을 포함하여 이러한 응용 프로그램이 텍스트 인쇄에 동일한 글꼴과 글꼴 크기를 사용하면 모든 응용 프로그램의 특정 문자에 대해 항상 동일한 바이트 시퀀스를 얻게됩니다. 이것은 올바른 가정입니까, 아니면 응용 프로그램이 텍스트를 인쇄하기 위해 다양한 옵션을 제공합니까?

또한 단색 비트 맵 데이터를 사용하여 문자 인식을 수행하는 데 사용할 수있는 라이브러리가 있습니까?

참고 : 사용중인 프린터는 ESC/POS 호환 프린터입니다. 이러한 프린터의 프린터 드라이버는 인쇄 할 데이터를 단색 비트 맵으로 보냅니다.

+1

Brr이 경우 작동하지 않습니다. 왜냐하면 프린터 드라이버는 비트 맵을 프린터로 전송하지 않기 때문입니다. 그들은 자신의 언어를 가지고 있으며, 값싼 언어는 매우 독점적 인 언어를 가지고 있습니다. XPS 프린터를 기본 프린터로 선택하면 이제 쉽게 읽을 수있는 XPS 문서를 얻을 수 있습니다. –

+0

@HansPassant : 답장을 보내 주셔서 감사합니다! 사실 저는 단색 비트 맵으로 인쇄 할 텍스트를 보내는 ESC/POS 프린터 드라이버를 사용하고 있습니다. 인쇄 응용 프로그램이 Notepad/Word/Notepad ++이면이 비트 맵 데이터를 성공적으로 검사 할 수도 있습니다. 하지만 모든 Windows 응용 프로그램이 주어진 글꼴 및 글꼴 크기에 대해 동일한 단색 비트 맵을 보내도록하고 싶었습니다. – mabicha

답변

0

저는 ESC/POS 프린터에 익숙하지 않지만 드라이버가 항상 텍스트를 흑백 비트 맵으로 렌더링하도록 보장 할 수 있다면 동일한 글꼴과 크기에 대해 문자가 동일 할 가능성은 매우 높지만 100은 아닙니다 %. 먼저 회전, 크기 조정 및 전단을 고려해야합니다. 글꼴 크기뿐만 아니라 전체 변형 행렬을 고려해야합니다.

내가 생각할 수있는 다른 두 가지 오류 점이 있습니다. 1) 투명 필름으로 겹쳐진 텍스트와 2) 동일한 이름으로 설치된 대체 글꼴이있는 컴퓨터. 예를 들어, Helvetica와 같은 일반적인 글꼴은 여러 소스에서 가져올 수 있으며 문자는 둘 사이에서 동일하지 않습니다. 세 번째 가능한 오류는 프린터가 단색이며 컬러 또는 회색조로 인쇄된다는 사실을 무시하는 응용 프로그램입니다. 컬러 또는 회색조를 흑백으로 변환하면 다른 색상의 비트 맵이 생성됩니다.

OCR 소프트웨어의 경우 Wikipedia에는 OCR SDK의 멋진 비교 차트가 있습니다.

+0

감사 캐리 !! 나는 다음과 같은 방식으로 처음 2 개의 실패 지점을 피할 수 있다고 생각한다. 1) "워터 마킹"과 같은 것을 의미한다고 여기는가? 소프트웨어를 실행하는 응용 프로그램이 투명 필름을 인쇄하지 않습니다. 2) Helvetica의 경우 Windows 기본 글꼴 파일과 같은 공통 소스에서 글꼴을 사용하도록 컴퓨터를 설정할 수 있습니다. 나는 제 3의 경우에 대해 확신하지 못합니다. 소프트웨어를 실행할 응용 프로그램이 단색 프린터 또는 컬러 프린터로 인쇄 할 것인지 확인하려고합니다. – mabicha

+0

또한 프린터 용 Windows에서 글꼴 렌더링이 어떻게 작동하는지에 대한 정보를 얻을 수있는 소스 (책, 블로그 등)를 제안 해 주실 수 있습니까? – mabicha

+1

죄송합니다, Windows 글꼴 렌더링에 대한 좋은 참조를 모르겠습니다. 요컨대, 텍스트는 인쇄 드라이버에 의해 렌더링됩니다. 드라이버는 선 그리기를 사용하여 비트 맵 또는 다각형으로 텍스트를 그릴 수 있습니다. 근대 글꼴은 거의 항상 폴리곤으로 그려집니다. 비트 맵의 ​​크기가 너무 작기 때문입니다.그러나 드라이버는 ESC/POS 프린터가 수행해야하는 비트 맵 텍스트 만 생성한다는 사실을 Windows에 알릴 수 있습니다. 비트 맵 글꼴 렌더링은 매우 간단하며 원하는 크기에 가장 가까운 글꼴에서 비트 맵을 선택한 다음 정확하게 일치하지 않는 경우 크기를 조정하여 장치에 블리 팅합니다. –