Quantcast

get_fontconfig_fonts

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

get_fontconfig_fonts

Jouni K. Seppänen
Because of the problem described here:

http://thread.gmane.org/gmane.comp.python.matplotlib.general/20328

I modified font_manager.py to use subprocess.Popen instead of
commands.getstatusoutput, since subprocess seems to deal with EINTR
while the commands module does not. While looking at it, I changed the
command being run from

fc-list file

to

fc-list '' file

because the former doesn't return any fonts on any system I have access
to (maybe it would if I had a font whose name includes the word "file"),
but the latter looks more like it is the intended command. Since the
get_fontconfig_fonts function has not returned anything useful for some
time (though presumably it has at some point in the past), this change
might have big effects somewhere else.

Would this change be appropriate for the bugfix branch?

--
Jouni K. Seppänen
http://www.iki.fi/jks


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Matplotlib-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: get_fontconfig_fonts

Michael Droettboom-3
Sorry about that bug.  Obviously it wasn't tested properly.

It seems like the only side effect of this change is that matplotlib
will pull in fonts from non-standard locations defined in their
fontconfig configuration.  (It's already pulling them from standard
locations that are hardcoded in font_manager.py).  There's a chance that
some of these fonts will cause matplotlib to explode -- but no more so
than if there were in a standard location.

I think it seems like a pretty benign change -- unless there's something
in particular you're thinking of that I'm not...

Mike

Jouni K. Seppänen wrote:

> Because of the problem described here:
>
> http://thread.gmane.org/gmane.comp.python.matplotlib.general/20328
>
> I modified font_manager.py to use subprocess.Popen instead of
> commands.getstatusoutput, since subprocess seems to deal with EINTR
> while the commands module does not. While looking at it, I changed the
> command being run from
>
> fc-list file
>
> to
>
> fc-list '' file
>
> because the former doesn't return any fonts on any system I have access
> to (maybe it would if I had a font whose name includes the word "file"),
> but the latter looks more like it is the intended command. Since the
> get_fontconfig_fonts function has not returned anything useful for some
> time (though presumably it has at some point in the past), this change
> might have big effects somewhere else.
>
> Would this change be appropriate for the bugfix branch?
>
>  

--
Michael Droettboom
Science Software Branch
Operations and Engineering Division
Space Telescope Science Institute
Operated by AURA for NASA


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Matplotlib-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: get_fontconfig_fonts

Jouni K. Seppänen
No, that's exactly what I was thinking about - some newly-found font
might break matplotlib, or might change somebody's output because of the
font matching algorithm. Actually, the font matching system can
sometimes break things:

http://thread.gmane.org/gmane.comp.python.matplotlib.general/18255/focus=18260

Did that ever get fixed?

Jouni

Michael Droettboom <[hidden email]> writes:

> Sorry about that bug.  Obviously it wasn't tested properly.
>
> It seems like the only side effect of this change is that matplotlib
> will pull in fonts from non-standard locations defined in their
> fontconfig configuration.  (It's already pulling them from standard
> locations that are hardcoded in font_manager.py).  There's a chance that
> some of these fonts will cause matplotlib to explode -- but no more so
> than if there were in a standard location.
>
> I think it seems like a pretty benign change -- unless there's something
> in particular you're thinking of that I'm not...
>
> Mike
>
> Jouni K. Seppänen wrote:
>> Because of the problem described here:
>>
>> http://thread.gmane.org/gmane.comp.python.matplotlib.general/20328
>>
>> I modified font_manager.py to use subprocess.Popen instead of
>> commands.getstatusoutput, since subprocess seems to deal with EINTR
>> while the commands module does not. While looking at it, I changed the
>> command being run from
>>
>> fc-list file
>>
>> to
>>
>> fc-list '' file
>>
>> because the former doesn't return any fonts on any system I have access
>> to (maybe it would if I had a font whose name includes the word "file"),
>> but the latter looks more like it is the intended command. Since the
>> get_fontconfig_fonts function has not returned anything useful for some
>> time (though presumably it has at some point in the past), this change
>> might have big effects somewhere else.
>>
>> Would this change be appropriate for the bugfix branch?
>>
>>  

--
Jouni K. Seppänen
http://www.iki.fi/jks


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Matplotlib-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: get_fontconfig_fonts

Michael Droettboom-3
Jouni K. Seppänen wrote:
> No, that's exactly what I was thinking about - some newly-found font
> might break matplotlib, or might change somebody's output because of the
> font matching algorithm.
> Actually, the font matching system can
> sometimes break things:
>
> http://thread.gmane.org/gmane.comp.python.matplotlib.general/18255/focus=18260
>  
Sorry that fell by the wayside.  On further investigation, there are two
bugs here:

1) The "stretch" metric is not read from .afm files: it's always set to
"normal", therefore, when specifying "Helvetica" which exists in a
number of widths, it has an equal chance of choosing any of them
depending on dictionary ordering.  Note that now {'family': 'Helvetica',
'stretch': 'narrow'} should and does return "Helvetica-Narrow".  Both
"Helvetica" and "Helvetica-Narrow" are of the same font family, so that
in itself is not a bug (it's the same mechanism that makes {'family':
'Helvetica', 'weight': 'bold'} give "Helvetica-Bold").

2) When pdf.use14corefonts is True, it will actually pull an afm font
file from anywhere, not just from mpl-data/fonts/pdfcorefonts.  There's
actually some logic in the FontManager to collect files from only that
directory when "pdf.use14corefonts" is True, but that's only triggered
at cache-build time.  That's how bug 1) resulted in adding a font that
isn't a PDF core font to a PDF file.  But it would be just as easy to
specify some other random "afm" font on the system and break things in
the same way.

Lastly, to support all this, the cache needs to be thrown away, so I
added support for versioning of the cache file -- if it doesn't match
what the currently-installed matplotlib expects, it's thrown away and
regenerated.

Mike

> Did that ever get fixed?
>
> Jouni
>
> Michael Droettboom <[hidden email]> writes:
>
>  
>> Sorry about that bug.  Obviously it wasn't tested properly.
>>
>> It seems like the only side effect of this change is that matplotlib
>> will pull in fonts from non-standard locations defined in their
>> fontconfig configuration.  (It's already pulling them from standard
>> locations that are hardcoded in font_manager.py).  There's a chance that
>> some of these fonts will cause matplotlib to explode -- but no more so
>> than if there were in a standard location.
>>
>> I think it seems like a pretty benign change -- unless there's something
>> in particular you're thinking of that I'm not...
>>
>> Mike
>>
>> Jouni K. Seppänen wrote:
>>    
>>> Because of the problem described here:
>>>
>>> http://thread.gmane.org/gmane.comp.python.matplotlib.general/20328
>>>
>>> I modified font_manager.py to use subprocess.Popen instead of
>>> commands.getstatusoutput, since subprocess seems to deal with EINTR
>>> while the commands module does not. While looking at it, I changed the
>>> command being run from
>>>
>>> fc-list file
>>>
>>> to
>>>
>>> fc-list '' file
>>>
>>> because the former doesn't return any fonts on any system I have access
>>> to (maybe it would if I had a font whose name includes the word "file"),
>>> but the latter looks more like it is the intended command. Since the
>>> get_fontconfig_fonts function has not returned anything useful for some
>>> time (though presumably it has at some point in the past), this change
>>> might have big effects somewhere else.
>>>
>>> Would this change be appropriate for the bugfix branch?
>>>
>>>  
>>>      
>
>  

--
Michael Droettboom
Science Software Branch
Operations and Engineering Division
Space Telescope Science Institute
Operated by AURA for NASA


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Matplotlib-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
Loading...