If you register TrueType Font files and use them in a report, will it 
bundle them with the report so you can use them on any machine?

Regards,

Nate

On 10/5/10 7:56 PM, Paul McNett wrote:
> dabo Commit
> Revision 6076
> Date: 2010-10-05 16:56:06 -0700 (Tue, 05 Oct 2010)
> Author: Paul
> Trac: http://trac.dabodev.com/changeset/6076
>
> Changed:
> U   trunk/dabo/lib/reportWriter.py
> U   trunk/dabo/settings.py
>
> Log:
> ReportWriter patch by Jacek, that addresses unicode issues and adds a way to 
> register
> TrueType Font files and directories. Thanks! Trac #1382
>
>
>
> Diff:
> Modified: trunk/dabo/lib/reportWriter.py
> ===================================================================
> --- trunk/dabo/lib/reportWriter.py    2010-10-05 21:47:01 UTC (rev 6075)
> +++ trunk/dabo/lib/reportWriter.py    2010-10-05 23:56:06 UTC (rev 6076)
> @@ -56,6 +56,10 @@
>   from dabo.lib.caselessDict import CaselessDict
>   from reportlab.lib.utils import ImageReader
>   from dabo.lib.utils import ustr, resolvePathAndUpdate
> +from reportlab.pdfbase.pdfmetrics import registerFont
> +from reportlab.pdfbase.ttfonts import TTFont, TTFError
> +from reportlab.pdfbase.pdfmetrics import getRegisteredFontNames
> +from reportlab.rl_config import TTFSearchPath
>   import Image as PILImage
>   import reportUtils
>
> @@ -73,6 +77,28 @@
>       ParaClass = platypus.Paragraph
>
>
> +def addReportTTFontFilePath(paths):
> +     if isinstance(paths, basestring):
> +             paths = (paths,)
> +     for path in paths:
> +             TTFSearchPath.append(path)
> +
> +
> +if dabo.reportTTFontFilePath:
> +     addReportTTFontFilePath(dabo.reportTTFontFilePath)
> +
> +
> +def addReportTTFontFilePath(paths):
> +     if isinstance(paths, basestring):
> +             paths = (paths,)
> +     for path in paths:
> +             TTFSearchPath.append(path)
> +
> +
> +if dabo.reportTTFontFilePath:
> +     addReportTTFontFilePath(dabo.reportTTFontFilePath)
> +
> +
>   ## Can't use None for uninitialized group values, because None
>   ## could be a meaningful value in the dataset.
>   UNINITIALIZED_VALUE = 'UNINITIALIZED_f49dc68b-1e4c-43ad-81c1-227c1e4f59e6'
> @@ -108,7 +134,29 @@
>               # callback to the rw to draw the cached pagecount strings
>               self.__rw.drawPageCounts(page, len(self.__saved_page_states))
>
> +     def setFont(self, psfontname, size, leading=None):
> +             if psfontname not in getRegisteredFontNames():
> +                     if psfontname in dabo.reportTTFontFileMap:
> +                             psfontfile = 
> dabo.reportTTFontFileMap[psfontname]
> +                     else:
> +                             psfontfile = "%s.ttf" % psfontname
> +                     try:
> +                             registerFont(TTFont(psfontname, psfontfile))
> +                     except TTFError:
> +                             dabo.log.info(_("Font file can not be found: 
> %s") % psfontfile)
> +             canvas.Canvas.setFont(self, psfontname, size, leading)
>
> +     def setFont(self, psfontname, size, leading=None):
> +             if psfontname not in getRegisteredFontNames():
> +                     if psfontname in dabo.reportTTFontFileMap:
> +                             psfontfile = 
> dabo.reportTTFontFileMap[psfontname]
> +                     else:
> +                             psfontfile = "%s.ttf" % psfontname
> +                     try:
> +                             registerFont(TTFont(psfontname, psfontfile))
> +                     except TTFError:
> +                             dabo.log.info(_("Font file can not be found: 
> %s") % psfontfile)
> +             canvas.Canvas.setFont(self, psfontname, size, leading)
>
>   class ReportObjectCollection(list):
>       """Abstract ordered list of things like variables, groups, and band 
> objects."""
> @@ -1330,13 +1378,18 @@
>                               s = obj.getProp("expr", returnException=True)
>
>                       if s is None:
> -                             s = self.NoneDisplay
> -                     if isinstance(s, basestring):
> +                             s = self.NoneDisplay
> +                     if isinstance(s, unicode):
> +                             pass
> +                     elif isinstance(s, str):
>                               try:
> -                                     s = s.encode(self.Encoding)
> +                                     s = unicode(s, "utf-8")
>                               except UnicodeDecodeError:
> -                                     # s must have already been encoded, and 
> the default encoding is ascii.
> -                                     pass
> +                                     try:
> +                                             s = unicode(s, self.Encoding)
> +                                     except UnicodeDecodeError:
> +                                             # s must have already been 
> encoded, and the default encoding is ascii.
> +                                             pass
>                       else:
>                               s = unicode(s)
>                       func(posx, 0, s)
> @@ -2543,7 +2596,7 @@
>                       except AttributeError:
>                               ret = _("<  None>")
>               return ret
> -
> +
>       def _setNoneDisplay(self, val):
>               self._noneDisplay = val
>
>
> Modified: trunk/dabo/settings.py
> ===================================================================
> --- trunk/dabo/settings.py    2010-10-05 21:47:01 UTC (rev 6075)
> +++ trunk/dabo/settings.py    2010-10-05 23:56:06 UTC (rev 6076)
> @@ -201,6 +201,9 @@
>   dbConsoleFormat = dbFileFormat = "%(asctime)s - %(levelname)s - %(message)s"
>   dbMaxLogFileSize = 5242880          # 5 MB
>
> +# Report fonts configuration.
> +reportTTFontFilePath = None
> +reportTTFontFileMap = {}
>
>   ### Settings - end
>
>
>
>
[excessive quoting removed by server]

_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-dev
Searchable Archives: http://leafe.com/archives/search/dabo-dev
This message: http://leafe.com/archives/byMID/[email protected]

Reply via email to