我无法使用TrueType字体从Supplementary Multilingual Plane(SMP)添加字符 . 我为埃及象形文字和楔形文字字符下载了一些字体,将它们添加到PDF中,然而,它似乎不起作用 .
这是使用reportlab包的我的python(2.7)代码:
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
if __name__ == "__main__":
# register fonts
pdfmetrics.registerFont(TTFont('gardiner', '/usr/share/fonts/truetype/ttf-ancient-scripts/Gardiner313.ttf'))
pdfmetrics.registerFont(TTFont('aegyptus', '/usr/share/fonts/truetype/ttf-ancient-scripts/Aegyptus313.ttf'))
pdfmetrics.registerFont(TTFont('noto', 'NotoSansCuneiform-Regular.ttf'))
# Test with first 20 glphs in each block
hieroglyph_test_string = " ".join([unichr(0x13000 + x) for x in range(20)])
cuneiform_test_string = " ".join([unichr(0x12000 + x) for x in range(20)])
my_canvas = canvas.Canvas("bmp1_test.pdf", pagesize=letter)
y_pos, y_decrement = [letter[1] - 50], 50
def test_font(font_name, chars):
my_canvas.setFont(font_name, 20)
my_canvas.drawString(50, y_pos[0], chars)
y_pos[0] -= y_decrement
print "\nWrote: %s\n" % (chars,)
test_font('gardiner', hieroglyph_test_string)
test_font('aegyptus', cuneiform_test_string)
test_font('noto', cuneiform_test_string)
my_canvas.save()
But it just displays as boxes in the PDF.
我知道字体已安装,because the chars print on my terminal just fine,好像要嘲笑我 .
我在这里缺少任何步骤吗?