2014-02-24 3 views
0

reportlab에서?와 같은 비정상적인 글리프를 표시 할 수 있습니까? 그렇다면 어떻게?reportlab에서 비정상적인 글리프 표시

글립 문자가 들어있는 Symbola 글꼴을 설치했지만, Symbolic으로 설정된 글꼴이있는 PDFTextObject를 사용하여 표시하면 Symbol 글꼴이 상자로 표시됩니다.

다음은 문제를 재현하는 코드입니다. 우분투에서는 사용자별로 글꼴을 설치하기 위해 사용자 홈 디렉토리에 .fonts이라는 폴더에 넣을 수 있습니다. Reportlab은이 폴더를 보지 않으므로 명시적인 위치를 제공했습니다.

from reportlab.pdfgen import canvas 
from reportlab.lib.pagesizes import A4 
width, height = A4 
from reportlab.lib.colors import red 
from reportlab.pdfbase import pdfmetrics 
from reportlab.pdfbase.ttfonts import TTFont 
# NOTE: provide the location of Symbola.ttf on your setup... 
pdfmetrics.registerFont(TTFont("Symbola", "/home/my-user-name/.fonts/Symbola.ttf")) 
c = canvas.Canvas("test-symbola-font.pdf") 
to = c.beginText() 
to.setTextOrigin(50,height-50) 
to.setFont("Symbola", 30) 
to.setFillColor(red) 
to.textLine(u"Some symbols: ") 
c.drawText(to) 
c.showPage() 
c.save() 

3 이모티콘 글리프 (공기 및 확인 기호 일을 손에서 손으로 충격을 얼굴, 얼굴) Symbola에 있지만 물음표 주변에 상자로 PDF로 렌더링됩니다. 이는 bitbucket의 mercurial repo (pip 보고서 버전 2.7)와 정상 pip 설치 버전 (pip 보고서 3.0 - 이상)의 reportlab의 'default'분기 모두에 해당됩니다.

두 경우 모두 Symbola의 글리프가 포함되어 있지만 포함 된 글리프를 결정하는 방법을 찾지 못했습니다! pdffonts는 포함 된 Symbola 글꼴을 "CID TrueType"이 아닌 "TrueType"으로보고합니다. 16 비트 트루 타입입니다. 아마도 문제입니까? 나는 acrobat의 프리 플라이트 유틸리티로 생성 된 pdf를 살펴 봤는데 실제로 3 개의 문자 모양이 빠져있다.

내 시스템에서 Symbola 글꼴이 잘 작동하고 있습니다. 이모티콘이 브라우저, 터미널 등에서 표시됩니다. 실제로 Symbola에서 오는 지 확인했습니다.

업데이트 : Acrobat에서보고 된 누락 된 글리프는 코드 포인트 U + F080, U + F081 및 U + F082를 갖습니다 (즉, 코드 포인트는 PDF의 텍스트에 있음). 잘못된 것입니다 (U + 1F631, U + 1F64C 및 U_1F44C이어야 함).

+0

최소한의 예제 코드를 제공해 주시겠습니까? – Fookatchu

+0

에 예제가 추가되었습니다. 이것이 버그이며 나의 무지가 아니라는 것을 확신하게함으로써 나는 [버그] (https://bitbucket.org/rptlab/reportlab/issue/24/missing-glyphs-from-embedded-emoji-font)를 기록했다. – drevicko

+0

어쩌면 이것은 글꼴이 아니라 유니 코드 문제 일 수 있습니다. reportlab은 str 객체가 아닌 unicode 객체를 원합니다. 이 경우 잘못 인코딩되었을 수있는 str을 제공합니다. 나는 그 글자가 없거나 글립 문자를 볼 수 있기 때문에 이것이 내가 생각할 수있는 전부입니다. – Fookatchu

답변

0

이것은 bug in reportlab이며, has been fixed입니다. 이 버그를 발견했다면, 수은 저장소를 체크 아웃하고 거기에서 pip 설치 (가상 환경으로 설치하는 것이 좋습니다!). 이 픽스는 조만간 출시 될 것으로 예상됩니다.