[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: [pygame] Tentative patch for "metrics" font method
Guillaume Proux wrote:
Hi,
I just started using Freevo (based on pygame) and I have some issues
with fonts.
Apparently if one tries to render a string where not all chars are in
the font, there is no error and we get garbage out.
There is ONE function in SDL_TTF that can tell if a character is in
the font or not. This is GlyphMetrics. So I made a tentative patch (i
don't have a dev env ready therefore I haven't even compiled it so I
would appreciate if somebody could try it out) to add the metrics
method to fonts.
If a call to this method returns None, then it will mean that this
character cannot be rendered, which is what I will need in Freevo to
decide to switch to a different font.
Please let me know if this actually compiles and if it works!
I compiled it on Windows with Mingw. The line:
int minx, int maxx, int miny, int maxy, int advance;
is incorrect. I removed the additional int's. I also saw that
font_metrics returned NULL on the last line. I assumed this it returns
None in this case:
Py_INCREF(Py_None);
return Py_None;
With these changes it compiled and ran. It would be nice if a test case
were included. I could not get it to return None. It always returned a
tuple.
Some other concerns. In several checks font_metrics returns NULL when
string[0] is 0 without raising an exception. Also, raising an exception
instead of returning None might be more Pythonic when a character is not
in the font. But I can't think of a good exception in this case as
ValueError should be raised for an empty string.
--
Lenard Lindstrom
<len-l@xxxxxxxxx>