{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n# Font properties\n\nThis example lists the attributes of an `.FT2Font` object, which describe\nglobal font properties. For individual character metrics, use the `.Glyph`\nobject, as returned by `.load_char`.\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import os\n\nimport matplotlib\nimport matplotlib.ft2font as ft\n\nfont = ft.FT2Font(\n # Use a font shipped with Matplotlib.\n os.path.join(matplotlib.get_data_path(),\n 'fonts/ttf/DejaVuSans-Oblique.ttf'))\n\nprint('Num instances: ', font.num_named_instances) # number of named instances in file\nprint('Num faces: ', font.num_faces) # number of faces in file\nprint('Num glyphs: ', font.num_glyphs) # number of glyphs in the face\nprint('Family name: ', font.family_name) # face family name\nprint('Style name: ', font.style_name) # face style name\nprint('PS name: ', font.postscript_name) # the postscript name\nprint('Num fixed: ', font.num_fixed_sizes) # number of embedded bitmaps\n\n# the following are only available if face.scalable\nif font.scalable:\n # the face global bounding box (xmin, ymin, xmax, ymax)\n print('Bbox: ', font.bbox)\n # number of font units covered by the EM\n print('EM: ', font.units_per_EM)\n # the ascender in 26.6 units\n print('Ascender: ', font.ascender)\n # the descender in 26.6 units\n print('Descender: ', font.descender)\n # the height in 26.6 units\n print('Height: ', font.height)\n # maximum horizontal cursor advance\n print('Max adv width: ', font.max_advance_width)\n # same for vertical layout\n print('Max adv height: ', font.max_advance_height)\n # vertical position of the underline bar\n print('Underline pos: ', font.underline_position)\n # vertical thickness of the underline\n print('Underline thickness:', font.underline_thickness)\n\nfor flag in ft.StyleFlags:\n name = flag.name.replace('_', ' ').title() + ':'\n print(f\"{name:17}\", flag in font.style_flags)\n\nfor flag in ft.FaceFlags:\n name = flag.name.replace('_', ' ').title() + ':'\n print(f\"{name:17}\", flag in font.face_flags)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.2" } }, "nbformat": 4, "nbformat_minor": 0 }