Font rendering strategy

stephane ducasse stephane.ducasse at free.fr
Sun Apr 29 13:23:35 UTC 2007


thanks a lot for the explanation.
So I have the impression that we could have a selected number of  
fonts per default
using the scheme of juan so that we have a nice looking Squeak and  
your schema to get the
full access and power. Sounds really promising.

Stef

On 29 avr. 07, at 14:43, Andrew Tween wrote:

> Hi Stef,
>
> ----- Original Message -----
> From: "stephane ducasse" <stephane.ducasse at free.fr>
> To: "The general-purpose Squeak developers list"
> <squeak-dev at lists.squeakfoundation.org>
> Sent: Sunday, April 29, 2007 10:52 AM
> Subject: Font rendering strategy
>
>
>> Hi guys
>>
>> I want to thanks andy and juan for their work!
>> Now I need your brain and knowledge.
>> I'm totally ignorant of font problems/challenges but
>>
>> How can we get the best of both works?
>
> The two approaches are different, and each solves a different set  
> of problems.
> What ~I~ want from a font system is...
>     1. Automatic access to all the fonts in my host OS.
>     2. The ability to use them at any point size.
>     3. The ability to render in any colour, on any background  
> (including a
> transparent background)
>     4. Optional support for sub-pixel anti-aliasing, without  
> compromising points
> 1, 2 and 3.
>     5. Unicode support (in my case, not so much for language  
> support, but rather
> for access to mathematical symbols)
>     6. Better support for printing (e.g. scale up a TextMorph's  
> contents to my
> printers dpi, and output as a .png)
>     7. Support for different underline/strikethrough styles (e.g.  
> text in black,
> underline in red; jagged underline; double strikethrough)
>     8. Support for subscript/superscript; raised/lowered text.
>
> FreeType solves points 1 and 2, but they could also be solved by  
> grabbing font
> info, glyphs, and metrics directly from the OS.
> Something similar to the Win32 Native Fonts package. (This is  
> something I would
> like to do in the future - with the ability to grab ClearType/sub- 
> pixelled
> glyphs on Windows, and something similar on Macs).
>
> The BitBlt plugin enables 3 & 4.
>
> Points 6, 7 & 8,  I haven't done much with.
> But, for example, I render underline and strikethrough as a  
> separate BitBlt
> operation, rather than modifying the glyphs to include
> underlining/strikethrough. So it should be easier to include  
> different styles.
>
>
>> What are the exact pros and cons in terms of:
>> - font
>
> My approach gives you access to fonts, without requiring that you  
> import them.
> Juan's approach allows you to selectively import fonts, and to  
> subsequently edit
> them.
>
> My approach allows easy use of any point size.
>
> Juan's approach caches the glyphs/metrics in the image, so if the  
> image is
> distributed, then the font (file) does not need to exist on the  
> target machine.
> My approach deliberately clears any cached glyphs/metrics on image  
> save so
> that...
>     a. there is no danger of violating font licenses by shipping  
> cached data
>     b. if the same font exists on the target machine, but is a  
> different
> version, then the target machine's version wins (Arial on Windows  
> 98 is not
> necessarily the same as Arial on Vista, or on Mac OS X)
>
> I also support kerning and sub-pixel positioning for nice 'WYSIWYG'  
> text layout.
>
>> - size
>
> :) Size of what?
> The image? My approach has more code, but I don't cache glyphs/ 
> metrics in the
> saved image.
> VM? My approach requires the FT2Plugin, & the FreeType library on  
> Windows/Mac.
>
>> - memory consumption
>
> I have a glyph cache whose maximum memory consumption can be set by  
> the user
> through a Preference.
> The default is 5 MBytes.
> The FreeType library also has a fixed overhead, plus an overhead  
> per font that
> is used (not every font on the host OS, only those that are  
> actually used within
> the image).
> I have tested my stuff on a 7 year old PIII with 64MBytes RAM, and  
> it runs quite
> happily.
>
> With Juan's approach it will depend upon the number of fonts/point  
> sizes that
> are imported into the image.
>
>>
>> It seems that juan work is excellent for OS independence.
>
> Yes.
> Shipping glyphs in the image  is a good way to ensure that they are  
> available on
> all platforms.
> But I am not sure of the legality of that. For monochrome bitmap  
> glyphs I think
> it is ok. But when the glyphs have been anti-aliased, or sub-pixel  
> anti-aliased,
> I don't know?
>
> I take a different approach and revert to using a strike font if  
> any one of the
> FT2Plugin, the FreeType library, or a particular font file is  
> absent from the
> user's machine. So any image, or project, should still be runnable  
> and useable
> on any OS.
>
> Cheers,
> Andy
>
>
>




More information about the Squeak-dev mailing list