[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] freetype + unusual font format: What am I doing wrong?



Thanks for digging into this. If multiplying the em width by 2 // 3 is the most difficult step in using a bitmap font with pygame, then I'm happy!

Jason


From: Lenard Lindstrom <len-l@xxxxxxxxx>
To: pygame-users@xxxxxxxx
Sent: Tuesday, October 8, 2013 12:32 AM
Subject: Re: [pygame] freetype + unusual font format: What am I doing wrong?

I looked at the BDF code in freetype2, and then ran a debugger on
pygame.freetype to confirm. In freetype2, when only a "SIZE" record in a
BDF file, the width, in pixels-per-em, is calculated as (height * 2 / 3)
[1], which may not be the point size given in the "SIZE" record. For
c64.dbf this is (8 * 2 / 3) = 5. The width is used as the font size.
This is a quirk of the freetype library. I see no easy work-around.

Lenard Lindstrom

[1] bdfdrivr.c:438, see
http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/src/bdf/bdfdrivr.c?id=VER-2-5-0-1#n438

On 13-10-06 02:44 PM, Lenard Lindstrom wrote:
> Okay, setting the resolution to 45 corrects the sizes:
>
> pygame.freetype.init(resolution=45)
>
> Python 2.7.3
> pygame 1.9.2a0
> pygame.freetype 2.4.10
> radon.bdf 12
> radon.bdf 13
> radon-wide.bdf 12
> radon-wide.bdf 13
> c64.bdf 8
> c64d.bdf 16
>
> I don't know why this is the case. Explicit bitmap font support is not
> built into the freetype module, so is untested.  It is something I
> intended, but have not got around too. Sorry.
>
> Lenard Lindstrom.
>
> On 13-10-05 03:07 PM, Lenard Lindstrom wrote:
>>
[snip]

>> The freetype version of pygame.font.init() is just
>> pygame.freetype.init(). It takes a 'resolution' keyword argument that
>> sets the default pitch used in rendering. I suppose setting the pitch
>> to the screen resolution, in pixels per inch, makes the point size
>> equal pixel size. The pygame.freetype.Font type allows pitch to be
>> set individually for each Font instance. It is this pitch twiddling
>> which allows pygame.freetype.Font to mimic how pygame.font.Font
>> handles the default Pygame font, which is scaled differently from
>> other fonts.
>>
>>
>> On 13-10-05 01:48 PM, Jason Marshall wrote:
>>> Maybe my understanding of size is wrong...
>>> http://www.freetype.org/freetype2/docs/ft2faq.html#other-size
>>>
>>> ------------------------------------------------------------------------
>>>
>>> *From:* Jason Marshall <jmm0@xxxxxxxxx>
>>> *To:* "pygame-users@xxxxxxxx" <pygame-users@xxxxxxxx>
>>> *Sent:* Saturday, October 5, 2013 2:41 PM
>>> *Subject:* Re: [pygame] freetype + unusual font format: What am I
>>> doing wrong?
>>>
>>> Lenard,
>>>
>>> Sorry, updating to pygame-1.9.2a0-12de2da43ecb.win32-py3.3.msi
>>> didn't help.
>>>
>>> By passing a different (wrong) size, I was able to get freetype to
>>> render some fonts but not others. I made a webpage with the only
>>> documentation that I have found, some demo code that can render from
>>> some BDF fonts, and a screenshot:
>>> http://www.marshallworkshop.com/pygame/freetype-bug/
>>>
>>> I suspect that there's a mistake in the documentation for
>>> instantiating the pygame.freetype.Font class. If I follow the
>>> documentation and pass it the font name, style and size, I get an
>>> error.  If I just pass only the font name and a certain (wrong)
>>> size, it sometimes renders.
>>>
>>> Jason
>>>
>>>
>>>
>>>
>>>
>>
>