Tôi muốn tạo sơ đồ chất lượng cao cho bản trình bày. Tôi đang sử dụng matplotlib của Python để tạo đồ họa. Thật không may, việc xuất PDF dường như bỏ qua cài đặt phông chữ của tôi.Xuất PDF Matplotlib sử dụng phông chữ sai
Tôi đã thử đặt phông chữ bằng cách chuyển một đối tượng FontProperties
đến các chức năng vẽ văn bản và bằng cách đặt tùy chọn trên toàn cầu. Đối với hồ sơ, đây là một MWe để tạo lại vấn đề:
import scipy
import matplotlib
matplotlib.use('cairo')
import matplotlib.pylab as pylab
import matplotlib.font_manager as fm
data = scipy.arange(5)
for font in ['Helvetica', 'Gill Sans']:
fig = pylab.figure()
ax = fig.add_subplot(111)
ax.bar(data, data)
ax.set_xticks(data)
ax.set_xticklabels(data, fontproperties = fm.FontProperties(family = font))
pylab.savefig('foo-%s.pdf' % font)
Trong cả hai trường hợp, sản lượng sản xuất là giống hệt nhau và sử dụng Helvetica (và vâng, tôi làm đã cả các phông chữ được cài đặt).
Chỉ cần chắc chắn, sau đây không giúp được gì:
matplotlib.rc('font', family = 'Gill Sans')
Cuối cùng, nếu tôi thay thế các phụ trợ, thay vì sử dụng trình xem bản địa:
matplotlib.use('MacOSX')
tôi làm get phông chữ chính xác được hiển thị - nhưng chỉ trong giao diện người xem. Đầu ra PDF lại một lần nữa sai.
Để chắc chắn - tôi thể thiết lập phông chữ khác - nhưng chỉ các lớp khác của gia đình phông chữ: Tôi có thể thiết lập serif
phông chữ hoặc fantasy
hoặc monospace
. Nhưng tất cả các phông chữ sans-serif dường như mặc định với Helvetica.
Bạn đã nói, "Đối số" gia đình "[không] có nghĩa là chỉ định tên của phông chữ" - xin lỗi nhưng [tài liệu] (http://matplotlib.sourceforge.net/api/font_manager_api.html# matplotlib.font_manager.FontProperties) nói khác: “Các mục ** có thể ** bao gồm tên họ phông chữ chung […]. ** Trong trường hợp đó **, phông chữ thực tế được sử dụng sẽ được tra cứu… ”(nhấn mạnh của tôi). Hơn nữa, * nó hoạt động * trong GUI. Dù sao, tôi sẽ thử các giải pháp được đề xuất của bạn. Cảm ơn. –
Bằng cách sử dụng 'fname =…', tôi nhận được một dòng chữ TrueError "TrueType" bị thiếu bảng "trong dòng 776 của backend_pdf.py, trong' embedTTFType3' khi gọi 'savefig'. Tôi không ở nhà với TTF và PDF nhưng tôi * đã * nhúng Gill Sans vào các tệp PDF thông qua các tuyến đường khác, vì vậy tôi không chắc chắn điều gì ở đây không ổn. –
Bạn đang đúng về việc sử dụng tên phông chữ thực tế làm đối số gia đình. Thông báo lỗi giống như một lỗi. Vui lòng gửi nó tại trình theo dõi Sourceforge, đề cập đến phông chữ chính xác, phiên bản matplotlib và truy xuất đầy đủ. –