[reportlab-users] Font size, baseline and typography stuff
Dinu Gherman
gherman at darwin.in-berlin.de
Fri Aug 5 09:34:51 EDT 2011
"Robin Becker" <robin at reportlab.com>:
> Not all fonts use the same scale unfortunately; I think that most
> truetype fonts come with a unitsperEm value of 2048. In ttfonts.py I
> think we adjust the bounding boxes to be in 1/1000. I guess that's
> so the bounding boxes can be used without knowing the original scale.
Right. I noticed when fiddling with TrueType fonts years
ago. I'll have a look into some old code to run a few
tests on my font pool, before I can give more detailed
information.
> It might be possible with access to the curves. We do have that with
> tools in the graphics extension _renderPM (at least for those fonts
> we can cope with).
>
> eg
>
>> C:\tmp>cat xheight.py
>> from reportlab.graphics.charts.textlabels import _text2Path
>> from reportlab.pdfbase import pdfmetrics, ttfonts
>>
>> pdfmetrics.registerFont(ttfonts.TTFont('Vera','Vera.ttf'))
>>
>> px = _text2Path('x',fontName='Vera',fontSize=2048)
>> pX = _text2Path('X',fontName='Vera',fontSize=2048)
>>
>> print 'x',px.getBounds()
>> print 'X',pX.getBounds()
>>
>> C:\tmp>xheight.py
>> x (59, 0, 1145, 1120)
>> X (61, 0, 1339, 1493)
>
> so we seem able to get the path for x and X and there is a
> difference in the curve heights (and luckily both seem to stay on
> and above the baseline ie 0)
>
> Of course I'm using a fairly large value for the fontSize so the x
> height seems to be fontSize * (1120-0)/2048. and for X fontSize *
> (1493-0)/2048.
>
>> In the PDF generated by my script I approximated this
>> as shown by the dashed lines using an x-height equal
>> to the x-width which is not really acceptable, though.
>
> Anyhow if I use that in your code it seems better; see attached.
That's really nice, indeed! I didn't know the glyphs' paths
were accessible like this. One could even seperate them in-
dividually from the single path for a character.
I'm just not sure I would expect this to be inside the
charts package, though, but maybe in pdfmetrics...
In any case this is very helpful, thanks!
Regards,
Dinu
More information about the reportlab-users
mailing list