[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)