Sophie

Sophie

distrib > Fedora > 18 > i386 > by-pkgid > bf21b4394f4d7fa09e3626145d3315e0 > files > 219

python-matplotlib-doc-1.2.0-14.fc18.i686.rpm

.. _misc-ftface_props:

misc example code: ftface_props.py
==================================

[`source code <ftface_props.py>`_]

::

    #!/usr/bin/env python
    
    from __future__ import print_function
    """
    This is a demo script to show you how to use all the properties of an
    FT2Font object.  These describe global font properties.  For
    individual character metrices, use the Glyp object, as returned by
    load_char
    """
    import matplotlib
    from matplotlib.ft2font import FT2Font
    
    #fname = '/usr/local/share/matplotlib/VeraIt.ttf'
    fname = matplotlib.get_data_path() + '/fonts/ttf/VeraIt.ttf'
    #fname = '/usr/local/share/matplotlib/cmr10.ttf'
    
    font = FT2Font(fname)
    
    # these constants are used to access the style_flags and face_flags
    FT_FACE_FLAG_SCALABLE          = 1 << 0
    FT_FACE_FLAG_FIXED_SIZES       = 1 << 1
    FT_FACE_FLAG_FIXED_WIDTH       = 1 << 2
    FT_FACE_FLAG_SFNT              = 1 << 3
    FT_FACE_FLAG_HORIZONTAL        = 1 << 4
    FT_FACE_FLAG_VERTICAL          = 1 << 5
    FT_FACE_FLAG_KERNING           = 1 << 6
    FT_FACE_FLAG_FAST_GLYPHS       = 1 << 7
    FT_FACE_FLAG_MULTIPLE_MASTERS  = 1 << 8
    FT_FACE_FLAG_GLYPH_NAMES       = 1 << 9
    FT_FACE_FLAG_EXTERNAL_STREAM   = 1 << 10
    FT_STYLE_FLAG_ITALIC           = 1 << 0
    FT_STYLE_FLAG_BOLD             = 1 << 1
    
    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('Syle name   :', font.style_name)      # face syle 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)
    
    print('Italics       :', font.style_flags & FT_STYLE_FLAG_ITALIC          != 0)
    print('Bold          :', font.style_flags & FT_STYLE_FLAG_BOLD            != 0)
    print('Scalable      :', font.style_flags & FT_FACE_FLAG_SCALABLE         != 0)
    print('Fixed sizes   :', font.style_flags & FT_FACE_FLAG_FIXED_SIZES      != 0)
    print('Fixed width   :', font.style_flags & FT_FACE_FLAG_FIXED_WIDTH      != 0)
    print('SFNT          :', font.style_flags & FT_FACE_FLAG_SFNT             != 0)
    print('Horizontal    :', font.style_flags & FT_FACE_FLAG_HORIZONTAL       != 0)
    print('Vertical      :', font.style_flags & FT_FACE_FLAG_VERTICAL         != 0)
    print('Kerning       :', font.style_flags & FT_FACE_FLAG_KERNING          != 0)
    print('Fast glyphs   :', font.style_flags & FT_FACE_FLAG_FAST_GLYPHS      != 0)
    print('Mult. masters :', font.style_flags & FT_FACE_FLAG_MULTIPLE_MASTERS != 0)
    print('Glyph names   :', font.style_flags & FT_FACE_FLAG_GLYPH_NAMES      != 0)
    
    print(dir(font))
    
    cmap = font.get_charmap()
    print(font.get_kerning)
    

Keywords: python, matplotlib, pylab, example, codex (see :ref:`how-to-search-examples`)