Re: Built-in versus embedded fonts

Robin Becker <[email protected]>
Newsgroups gmane.comp.python.reportlab.user
Message-ID <[email protected]>
On 24/06/2015 07:17, Glenn Linderman wrote:
.............
> The rest is experimentation based on this discussion thread.
>
> I don't have the latest version of reportlab, but I think it is the latest one
> released.... there is a reportlab-3.1.8.dist-info in my site-packages, so I'll
> assume that is the version number.
>
> Glenn
........

Glenn, I'm not sure exactly where your PDFu class is going wrong, but
in latest code this works as expected using the new Canvas argument


############################################################
from reportlab.pdfgen.canvas import Canvas
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfbase.pdfmetrics import registerFont, registerFontFamily
registerFont(TTFont('times','times.ttf'),)
registerFont(TTFont('times-bold','timesbd.ttf'),)
registerFont(TTFont('times-italic','timesi.ttf'),)
registerFont(TTFont('times-bolditalic','timesbi.ttf'),)
registerFontFamily('times',
		normal='times',
		bold='times-bold',
		italic='times-italic',
		boldItalic='times-bolditalic',)
sample = 'Hello World'
from reportlab.pdfbase.pdfmetrics import stringWidth
print "stringWidth(%r,'times',12) = %s" % (sample,stringWidth(sample, 'times',12))

canv = Canvas('thello.pdf',initialFontName='times')
print "canv.stringWidth(%r) = %s" % (sample,canv.stringWidth(sample))

canv.drawString(72,72,sample)
canv.save()
############################################################


this also works exactly as expected using the hacky rl_config stuff

############################################################
from reportlab import rl_config
from reportlab.pdfgen.canvas import Canvas
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfbase.pdfmetrics import registerFont, registerFontFamily
rl_config._SAVED['canvas_basefontname'] = 'times'
rl_config._startUp()
registerFont(TTFont('times','times.ttf'))
registerFont(TTFont('times-bold','timesbd.ttf'))
registerFont(TTFont('times-italic','timesi.ttf'))
registerFont(TTFont('times-bolditalic','timesbi.ttf'))
registerFontFamily('times',
		normal='times',
		bold='times-bold',
		italic='times-italic',
		boldItalic='times-bolditalic')

sample = 'Hello World'
from reportlab.pdfbase.pdfmetrics import stringWidth
print "stringWidth(%r,'times',12) = %s" % (sample,stringWidth(sample, 'times',12))

canv = Canvas('thello1.pdf')
print "canv.stringWidth(%r) = %s" % (sample,canv.stringWidth(sample))

canv.drawString(72,72,sample)
canv.save()
############################################################

If I add these lines immediately prior to the final for loop in your example

myPDFinit()		
myPDF.register_fonts()
print myPDF.canv._fontname
print myPDF.rlfonts.keys()
for txt in ('012', 'abc', 'ABC'):

then I see this in the output

> C:\Users\rptlab\Downloads>rl-test.py
> Times-New-Roman
> ['Times-BoldItalic', 'Times-Italic', 'Times-Bold', 'Times']
> ('thiswid:', 30.0)
> Traceback (most recent call last):
>   File "C:\Users\rptlab\Downloads\rl-test.py", line 82, in <module>


so perhaps you should consider making the font set up code a bit more transparent
--
Robin Becker
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.