我无法使用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,好像要嘲笑我 .

我在这里缺少任何步骤吗?