2009-12-17 3 views
1

현재 ImageMagick의 변환 명령을 사용하여 .ttf 글꼴 파일에서 텍스트 미리보기 (.png)를 만듭니다. 전반적으로, 일부 유효한 .ttf 파일을 읽지 못하는 경우에도 자동 텍스트 위치 지정에서 더 좋습니다. 속도는 크지 않지만 수용 가능합니다.글꼴에서 텍스트 미리보기를 만드는 방법

PIL의 ImageFont는 텍스트 정렬에 좋지 않은 것처럼 보입니다. 종종 캔버스 외부의 첫 번째 문자의 왼쪽 아래 구석을 인쇄합니다.

위의 두 가지 외에 더 나은 선택 사항을 알고있는 사람이 있습니까? myfonts.com과 같은 사이트에서 텍스트 미리보기 부분에 전력을 공급하는 데 막대한 트래픽이 필요한 기술이 필요한지 궁금합니다. PIL 글꼴의

편집

예는 올바르게 글꼴을 그리는 데 실패했습니다. 실시 예에 사용 된 폰트 Hanford script

import Image, ImageDraw, ImageFont 
font = ImageFont.truetype('HANFORD_.TTF', 122) 
text_width, text_height = font.getsize('Hanford script') 
print text_width, text_height 
>>> 833 47 
img = Image.new('RGBA', (text_width, text_height)) 
draw = ImageDraw.Draw(img) 
draw.text((0, 0), 'Hanford script', font=font, fill=(0, 0, 0)) 
img.save('output.png') 

출력 이미지 만 "핸 포드 스크립트"의 상위 절반을 포함한다.

나는 ImageMagick과의 변환 명령을 시도 :

convert -font "HANFORD_.TTF" -background transparent -gravity center -size 830x80 label:'Hanford script' output.png 

출력 이미지가 내가 PIL로 무엇을 가지고 동일했다.

PIL 또는 imagemagick이 올바른 텍스트 크기를 얻을 수없는 유일한 글꼴이 아닙니다. Ginga과 같은 다른 글꼴을 사용하면 텍스트 높이를 증폭시켜 출력 이미지의 위쪽 절반이 비어있게됩니다. 그 이유는 누구나 아는가?

+0

당신이 가지고있는 문제를 보여주는 ImageFont와 함께 몇 가지 샘플 코드를 추가하면 누군가가 그것을 피하는 방법을 보여줄 수 있습니다. 필자는 PIL이 완벽하게 적절한 솔루션을 제공 할 것으로 기대합니다. –

+0

@Peter, 몇 가지 예를 추가했습니다. 감사합니다 – jack

+0

불행히도 주요 질문은 아직 답이 없습니다. PIL과 다른 소프트웨어가 텍스트 높이를 잘못 계산하는 이유 중 하나는 글꼴 작성자가 오름차순 및 오름차순 값을 잘못 정의했기 때문입니다. PIL은 FreeType 라이브러리를 사용하여이 계산을 수행하므로 글꼴이 잘못된 경우 최종 결과가 틀립니다. 이제 폰트가 맞지만 PIL이 오산하는 상황이 있습니다. 이 HANFORD_.TTF 글꼴을 사용하면 PIL이 잘못 계산되어 http://stackoverflow.com/questions/13821882/pil-cut-off-letters의 패치가 문제를 해결합니다. – mmgp

답변

1

터져 솔루션의 종류,하지만, 말했듯 이미지 파일에 렌더링 할 백엔드.

이미지가 디스크에 잘 맞지 않을 수도 있습니다. 물론 상황이 적절하게 캐시되어있을 것입니다.

0

이것은 일종의 외벽이지만, sIFR (Scalable Inman Flash Replacement)을 보았습니까? 웹 디자이너는 사용자가 로컬에 설치하지 않아도 사용하기로 선택한 글꼴로 텍스트를 렌더링하여 짧은 텍스트 청크 (제목 등)를 삽입 할 수 있습니다.

sIFR을 사용하여 간단한 웹 페이지를 만들고 로컬로 제공하면 자신의 목적에 부합 할 수 있습니다.

나는 내가 이러한 사이트가 Pango, 아니면 그냥 베어 본 Freetype에서 같은 것을 사용하여 약간의 사용자 지정 코드에 의해 구동되는 것을 상상 ... :-)

관련 문제