freetype
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [ft] Width of space element


From: Lawrence D'Oliveiro
Subject: Re: [ft] Width of space element
Date: Sat, 26 Nov 2016 09:51:46 +1300

I wrote:

> I wrote:
> 
>> Watch out for hinting and size settings:
>> ...
>                       (ord(char), size, hinting, font.glyph.metrics, 
> font.glyph.metrics)
                                                   ^^^^^^^^^^^^^^^^^^^

*Sigh* ... Anyway, while I’m at it, why not add some more metric info:

    import sys
    import freetype2 as freetype
    from freetype2 import \
        FT

    l = freetype.Library()
    font = l.new_face("corefonts/arial.ttf")
    sys.stdout.write("family name = %s\n" % font.family_name)
    for size in (1.0, 24.0) :
        font.set_char_size(size = size, resolution = freetype.base_dpi)
        for char in (" ", "W") :
            for hinting, load_flags in \
                (
                    ("no", FT.LOAD_NO_HINTING),
                    ("yes", FT.LOAD_DEFAULT),
                ) \
            :
                font.load_char(char_code = ord(char), load_flags = load_flags)
                sys.stdout.write \
                  (
                        "char %d, size = %.3g, hinting = %s, metrics = %s,"
                        " glyph metrics = %s, linear advance = (%.3g, %.3g), 
advance = %s\n"
                    %
                        (
                            ord(char),
                            size,
                            hinting,
                            font.size["metrics"],
                            font.glyph.metrics,
                            font.glyph.linearHoriAdvance,
                            font.glyph.linearVertAdvance,
                            font.glyph.advance,
                        )
                  )
            #end for load_flags
        #end for char
    #end for size

producing output

    family name = Arial
    char 32, size = 1, hinting = no, metrics = {'y_scale': 0.03125, 'y_ppem': 
1, 'descender': 0.0, 'x_ppem': 1, 'max_advance': 2.0, 'height': 1.0, 'x_scale': 
0.03125, 'ascender': 1.0}, glyph metrics = {'horiBearingX': 0.0, 
'horiBearingY': 0.0, 'vertBearingX': -0.140625, 'vertBearingY': 0.46875, 
'height': 0.0, 'vertAdvance': 0.9375, 'width': 0.0, 'horiAdvance': 0.28125}, 
linear advance = (0.278, 0.938), advance = Vector(0.281, 0.000)
    char 32, size = 1, hinting = yes, metrics = {'y_scale': 0.03125, 'y_ppem': 
1, 'descender': 0.0, 'x_ppem': 1, 'max_advance': 2.0, 'height': 1.0, 'x_scale': 
0.03125, 'ascender': 1.0}, glyph metrics = {'horiBearingX': 0.0, 
'horiBearingY': 0.0, 'vertBearingX': -1.0, 'vertBearingY': 0.0, 'height': 0.0, 
'vertAdvance': 1.0, 'width': 0.0, 'horiAdvance': 0.0}, linear advance = (0.278, 
0.938), advance = Vector(0.000, 0.000)
    char 87, size = 1, hinting = no, metrics = {'y_scale': 0.03125, 'y_ppem': 
1, 'descender': 0.0, 'x_ppem': 1, 'max_advance': 2.0, 'height': 1.0, 'x_scale': 
0.03125, 'ascender': 1.0}, glyph metrics = {'horiBearingX': 0.015625, 
'horiBearingY': 0.71875, 'vertBearingX': -0.453125, 'vertBearingY': 0.109375, 
'height': 0.71875, 'vertAdvance': 0.9375, 'width': 0.921875, 'horiAdvance': 
0.9375}, linear advance = (0.944, 0.938), advance = Vector(0.938, 0.000)
    char 87, size = 1, hinting = yes, metrics = {'y_scale': 0.03125, 'y_ppem': 
1, 'descender': 0.0, 'x_ppem': 1, 'max_advance': 2.0, 'height': 1.0, 'x_scale': 
0.03125, 'ascender': 1.0}, glyph metrics = {'horiBearingX': 0.0, 
'horiBearingY': 1.0, 'vertBearingX': -1.0, 'vertBearingY': 0.0, 'height': 1.0, 
'vertAdvance': 1.0, 'width': 1.0, 'horiAdvance': 1.0}, linear advance = (0.944, 
0.938), advance = Vector(1.000, 0.000)
    char 32, size = 24, hinting = no, metrics = {'y_scale': 0.9375, 'y_ppem': 
30, 'descender': -6.0, 'x_ppem': 30, 'max_advance': 60.0, 'height': 35.0, 
'x_scale': 0.9375, 'ascender': 27.0}, glyph metrics = {'horiBearingX': 0.0, 
'horiBearingY': 0.0, 'vertBearingX': -4.15625, 'vertBearingY': 14.078125, 
'height': 0.0, 'vertAdvance': 28.15625, 'width': 0.0, 'horiAdvance': 8.328125}, 
linear advance = (8.33, 28.2), advance = Vector(8.328, 0.000)
    char 32, size = 24, hinting = yes, metrics = {'y_scale': 0.9375, 'y_ppem': 
30, 'descender': -6.0, 'x_ppem': 30, 'max_advance': 60.0, 'height': 35.0, 
'x_scale': 0.9375, 'ascender': 27.0}, glyph metrics = {'horiBearingX': 0.0, 
'horiBearingY': 0.0, 'vertBearingX': -5.0, 'vertBearingY': 14.0, 'height': 0.0, 
'vertAdvance': 28.0, 'width': 0.0, 'horiAdvance': 8.0}, linear advance = (8.33, 
28.2), advance = Vector(8.000, 0.000)
    char 87, size = 24, hinting = no, metrics = {'y_scale': 0.9375, 'y_ppem': 
30, 'descender': -6.0, 'x_ppem': 30, 'max_advance': 60.0, 'height': 35.0, 
'x_scale': 0.9375, 'ascender': 27.0}, glyph metrics = {'horiBearingX': 
0.359375, 'horiBearingY': 21.46875, 'vertBearingX': -13.796875, 'vertBearingY': 
3.34375, 'height': 21.46875, 'vertAdvance': 28.15625, 'width': 27.625, 
'horiAdvance': 28.3125}, linear advance = (28.3, 28.2), advance = 
Vector(28.312, 0.000)
    char 87, size = 24, hinting = yes, metrics = {'y_scale': 0.9375, 'y_ppem': 
30, 'descender': -6.0, 'x_ppem': 30, 'max_advance': 60.0, 'height': 35.0, 
'x_scale': 0.9375, 'ascender': 27.0}, glyph metrics = {'horiBearingX': 0.0, 
'horiBearingY': 22.0, 'vertBearingX': -15.0, 'vertBearingY': 3.0, 'height': 
22.0, 'vertAdvance': 28.0, 'width': 29.0, 'horiAdvance': 30.0}, linear advance 
= (28.3, 28.2), advance = Vector(30.000, 0.000)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]