Thread: [ocemp-devel] PATCH: removed useless font style emulation [draw/String.py]
Status: Beta
Brought to you by:
marcusva
From: Regis D. <rde...@be...> - 2006-09-08 16:10:26
Attachments:
String.py.removed_useless_font_style_emulation.patch
|
Hello, This bug is about the font style "fake rendering" OcempGUI enables (see ocempgui/draw/String.py and pygame/sysfont.py), sometimes leading to a dumpy display. When the pygame.font.SysFont function creates a Font object, it already checks for boldness and italicness : - if the requested font exists and has the expected boldness and italicness, pygame doesn't enable "fake renderings" so that the characters are displayed as they were designed. - if the requested font exists but has not the expected boldness and/or italicness, pygame enables appropriate "fake renderings". It is useful when you have to use a basic font without all possible styles ; in this case, the expected style is emulated thanks to an internal pygame rendering algorithm (with more or less pretty results). OcempGUI provides two helpers functions to create Font objects. The 1st one takes a filename, and the 2nd one is based on a font name. In both, "fake renderings" are enabled (see apply_font_style function) if requested style is not regular (bold and/or italic and/or underline). As the 1st helper function (create_file_font) doesn't use pygame.font.SysFont as a Font factory, I have no idea how to check when applying style. As the 2nd one (create_system_font) uses pygame.font.SysFont as a factory, returned Font objects are already checked for boldness and italicness. So re-applying style is useless. Moreover, if you requested a bold and/or italic font and that there is a system font with such a style, you'll get dumpy characters (bold-ed twice and/or italic-ed twice). This patch consists in just checking underline-ness in create_system_font, because it's not part of pygame.font.SysFont's job. This should lead to a much better display for bold and/or italic fonts. Could you consider applying this patch in the next release ? Thank you, Regis. PS: I'll send a cumulative patch in a 3rd mail. Hope this will be convenient. -- ------------------------------------------------------------------------ Regis C. Desgroppes, software geek Parkeon (former Schlumberger e-City) - AFC - R&D e-mail: rde...@be... phone : +33 (0)3 81 54 68 73 fax : +33 (0)3 81 54 49 90 ------------------------------------------------------------------------ C++ mailing: Scott Meyers <http://groups.yahoo.com/group/scott_meyers/join>, Herb Sutter <http://groups.yahoo.com/group/herb_sutter/join>, Boost users <http://groups.yahoo.com/group/Boost-Users/join> no software patents <http://www.nosoftwarepatents.com> Given enough eyeballs, all bugs are shallow. (Eric S Raymond) |
From: <ma...@sy...> - 2006-09-09 07:33:38
|
Regis Desgroppes <rde...@be...>: > Hello, > [...] > OcempGUI provides two helpers functions to create Font objects. The 1st > one takes a filename, and the 2nd one is based on a font name. > In both, "fake renderings" are enabled (see apply_font_style function) > if requested style is not regular (bold and/or italic and/or underline). > As the 1st helper function (create_file_font) doesn't use > pygame.font.SysFont as a Font factory, I have no idea how to check when > applying style. In my opinion, the String module should not care about that. Usually the developer or user, who selects that font, knows about it and its default style (hard to imagine, that a user selecting a "Helvetica Bold" font file does not know, that it might be bold already). > As the 2nd one (create_system_font) uses pygame.font.SysFont as a > factory, returned Font objects are already checked for boldness and > italicness. So re-applying style is useless. Moreover, if you requested > a bold and/or italic font and that there is a system font with such a > style, you'll get dumpy characters (bold-ed twice and/or italic-ed twice). That's interesting. I thought, that this is handled automatically by pygame. > This patch consists in just checking underline-ness in > create_system_font, because it's not part of pygame.font.SysFont's job. > This should lead to a much better display for bold and/or italic fonts. > > Could you consider applying this patch in the next release ? Agreed and applied in CVS for both, the HEAD and rel_0_2 branch. Thanks a lot once more . Regards Marcus |