#!/usr/bin/env python
"""
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
