.. note::
    :class: sphx-glr-download-link-note

    Click :ref:`here <sphx_glr_download_gallery_misc_ftface_props.py>` to download the full example code
.. rst-class:: sphx-glr-example-title

.. _sphx_glr_gallery_misc_ftface_props.py:


===============
Font properties
===============

This example lists the attributes of an `FT2Font` object, which describe global
font properties.  For individual character metrics, use the `Glyph` object, as
returned by `load_char`.




.. rst-class:: sphx-glr-script-out

 Out:

 .. code-block:: none

    Num faces   : 1
    Num glyphs  : 5343
    Family name : DejaVu Sans
    Style name  : Oblique
    PS name     : DejaVuSans-Oblique
    Num fixed   : 0
    Bbox                : (-2080, -717, 3398, 2187)
    EM                  : 2048
    Ascender            : 1901
    Descender           : -483
    Height              : 2384
    Max adv width       : 3461
    Max adv height      : 2384
    Underline pos       : -175
    Underline thickness : 90
    Italic           : True
    Bold             : False
    Scalable         : True
    Fixed sizes      : False
    Fixed width      : False
    SFNT             : False
    Horizontal       : False
    Vertical         : False
    Kerning          : False
    Fast glyphs      : False
    Multiple masters : False
    Glyph names      : False
    External stream  : False




|


.. code-block:: python


    import os

    import matplotlib
    import matplotlib.ft2font as ft


    font = ft.FT2Font(
        # Use a font shipped with Matplotlib.
        os.path.join(matplotlib.get_data_path(),
                     'fonts/ttf/DejaVuSans-Oblique.ttf'))

    print('Num faces   :', font.num_faces)        # number of faces in file
    print('Num glyphs  :', font.num_glyphs)       # number of glyphs in the face
    print('Family name :', font.family_name)      # face family name
    print('Style name  :', font.style_name)       # face style name
    print('PS name     :', font.postscript_name)  # the postscript name
    print('Num fixed   :', font.num_fixed_sizes)  # number of embedded bitmap in face

    # the following are only available if face.scalable
    if font.scalable:
        # the face global bounding box (xmin, ymin, xmax, ymax)
        print('Bbox                :', font.bbox)
        # number of font units covered by the EM
        print('EM                  :', font.units_per_EM)
        # the ascender in 26.6 units
        print('Ascender            :', font.ascender)
        # the descender in 26.6 units
        print('Descender           :', font.descender)
        # the height in 26.6 units
        print('Height              :', font.height)
        # maximum horizontal cursor advance
        print('Max adv width       :', font.max_advance_width)
        # same for vertical layout
        print('Max adv height      :', font.max_advance_height)
        # vertical position of the underline bar
        print('Underline pos       :', font.underline_position)
        # vertical thickness of the underline
        print('Underline thickness :', font.underline_thickness)

    for style in ('Italic',
                  'Bold',
                  'Scalable',
                  'Fixed sizes',
                  'Fixed width',
                  'SFNT',
                  'Horizontal',
                  'Vertical',
                  'Kerning',
                  'Fast glyphs',
                  'Multiple masters',
                  'Glyph names',
                  'External stream'):
        bitpos = getattr(ft, style.replace(' ', '_').upper()) - 1
        print('%-17s:' % style, bool(font.style_flags & (1 << bitpos)))


.. _sphx_glr_download_gallery_misc_ftface_props.py:


.. only :: html

 .. container:: sphx-glr-footer
    :class: sphx-glr-footer-example



  .. container:: sphx-glr-download

     :download:`Download Python source code: ftface_props.py <ftface_props.py>`



  .. container:: sphx-glr-download

     :download:`Download Jupyter notebook: ftface_props.ipynb <ftface_props.ipynb>`


.. only:: html

 .. rst-class:: sphx-glr-signature

    Keywords: matplotlib code example, codex, python plot, pyplot
    `Gallery generated by Sphinx-Gallery
    <https://sphinx-gallery.readthedocs.io>`_
