TTF字体表
Matplotlib支持FreeType字体。下面是一个使用‘table’命令构建字体表的小示例,该表按字符代码显示字形。
用法python font_table_ttf.py somefile.ttf
import sysimport osimport matplotlibfrom matplotlib.ft2font import FT2Fontfrom matplotlib.font_manager import FontPropertiesimport matplotlib.pyplot as plt# the font table gridlabelc = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9','A', 'B', 'C', 'D', 'E', 'F']labelr = ['00', '10', '20', '30', '40', '50', '60', '70', '80', '90','A0', 'B0', 'C0', 'D0', 'E0', 'F0']if len(sys.argv) > 1:fontname = sys.argv[1]else:fontname = os.path.join(matplotlib.get_data_path(),'fonts', 'ttf', 'DejaVuSans.ttf')font = FT2Font(fontname)codes = sorted(font.get_charmap().items())# a 16,16 array of character stringschars = [['' for c in range(16)] for r in range(16)]colors = [[(0.95, 0.95, 0.95) for c in range(16)] for r in range(16)]plt.figure(figsize=(8, 4), dpi=120)for ccode, glyphind in codes:if ccode >= 256:continuer, c = divmod(ccode, 16)s = chr(ccode)chars[r][c] = slightgrn = (0.5, 0.8, 0.5)plt.title(fontname)tab = plt.table(cellText=chars,rowLabels=labelr,colLabels=labelc,rowColours=[lightgrn] * 16,colColours=[lightgrn] * 16,cellColours=colors,cellLoc='center',loc='upper left')for key, cell in tab.get_celld().items():row, col = keyif row > 0 and col > 0:cell.set_text_props(fontproperties=FontProperties(fname=fontname))plt.axis('off')plt.show()
