2014-12-11 10 views
1

enter image description hereJava 2d drawString 불규칙한 문자 간격

이미지를 자세히 보시기 바랍니다. 이것은이 생성 된 방법입니다

BufferedImage ret = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB); 
Graphics2D g = ret.createGraphics(); 
Map<TextAttribute, Object> attributes = new HashMap<TextAttribute, Object>(); 
attributes.put(TextAttribute.TRACKING, -0.120F); 
attributes.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON); 
Font arial = new Font("Arial", Font.PLAIN, 10).deriveFont(attributes); 
g.setFont(arial); 
g.setColor(Color.BLUE); 
g.drawString("Pumps", 0, 20); 

내 문제는 'P'사이의 공간 인 'U' 'U'와 'm'사이에 공간에 비교했다. 문자 사이의 공백은 텍스트 또는 이미지 처리 소프트웨어에 존재하지 않습니다. 내가 잘못하고 있니? 텍스트 그리기 기능이있는 대체 Java 라이브러리에 대한 빠른 연구가 실패했습니다.

+0

더 나은 도움을 위해 빨리 SSCCE/MCVE, 짧고, 실행 가능한, 컴파일 가능한 게시 – mKorbel

답변

3

TextAttribute.TRACKING위한 Javadoc 말한다 :

트랙킹 값은 각 글리프 클러스터에 추가해야 할 량을 결정하는 변환 폰트의 포인트 크기를 곱한 값과 폰트를 통과한다. 양수 추적 값은 선택적 합자의 형성을 금지합니다. 추적 값은 일반적으로 -0.1에서 0.3 사이입니다. 이 범위를 벗어나는 값은 일반적으로 바람직하지 않습니다.

-0.12를 사용하여 운이 약간 나아졌습니다.

하지만 픽셀 수가 적은 텍스트를 그리려면 기본적으로 할 수있는 일이별로 없습니다. 작게 그려진 텍스트를 확대하면 항상 나빠질 것입니다.

그래도 서브 픽셀 렌더링을 켜야합니다. 즉, 지원하는 화면에 있다고 가정하면 더 잘 보이게됩니다. 지금은 그레이 스케일을가집니다.