Re: [Bitbucket] Issue #22: add '~/.fonts' (for user fonts on Ubuntu) to TTFSearchPath (rptlab/reportlab)

Robin Becker <[email protected]>
Newsgroups gmane.comp.python.reportlab.user
Message-ID <[email protected]>
On 25/02/2014 08:38, Andy Robinson wrote:
> On 24 February 2014 22:40, Marius Gedminas <[email protected]> wrote:
>> I believe the new standard is ~/.local/share/fonts/ [1] (where the
>> ~/.local/share part can be overridden by the $XDG_DATA_HOME environment
>> variable[2]).
>>
>> [1] https://github.com/ValveSoftware/steam-for-linux/issues/2307
>> [2] http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
>
>
> That is very useful to know about - thank you.
>
> Now the Python 3.x thing is largely behind us, we can start to
> 'featurise' a bit more rapidly, and we aim to do a 3.1 fairly soon
> (which will have an accompanying commercial package).  I think we
> should add....
>
> - a user font directory as discussed above
> - we introduced a hook for people to add their own monkeypatches, but
> currently it looks for files in the site-packages area where reportlab
> is installed.   IMHO we should also look for somewhere more
> traditional like a dot-file in the home directory
>
.........
the problem with all the extension mechanisms is that they need to be 
prioritised somehow. We have two kinds of extension mechanisms one for settings 
which supposedly end up in

The standard paths variables should live in rl_settings.py; what is the priority 
between

~/.fonts

~/.local/share/fonts

$XDG_DATA/fonts

indeed does it matter?


Currently in py33 branch when we start up we're doing this in rl_config (ie the 
settings case)

_overrides = {}
try:
	rl_exec('from reportlab.local_rl_settings import *',_overrides)
except ImportError:
	pass
try:
	rl_exec('from local_rl_settings import *',_overrides)
except ImportError:
	pass
_DEFAULTS={}
rl_exec('from reportlab.rl_settings import *',_DEFAULTS)
_DEFAULTS.update(_overrides)


so we get our settings overrides from PYTHONPATH local_rl_settings then 
reportlab.local_rl_settings. Presumably ~/.fonts & ~/.local/share/fonts & 
$XDG_DATA/fonts should live in rl_settings.py somewhere near the start of the lists.

For the monkey patching referred to by Andy we have

try:
	import reportlab.local_rl_mods
except ImportError:
	pass

at the end of reportlab.__init__.py. This has nothing to do with settings, but 
can be used to do awful things to reportlab's code. At least one user, D Hughes, 
used this mechanism to create a tracking canvas for some special purpose. He 
would have preferred this import to live outside of reportlab ie on the 
PYTHONPATH somewhere. That can be done in the same way as for the settings by adding

try:
	import local_rl_mods
except ImportError:
	pass

after the above.

So now we can also consider adding ~/.local_rl_settings & ~/.local_rl_mods as 
importables (although we would need to handle the imports with imp). I propose 
these should come between reportlab.local_rl_xxx and PYTHONPATH local_rl_xxx.

Anyone still following?
-- 
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.