That will take some (re)reading, but is much appreciated.  The fact that the 
Canvas is not involved is deeply discouraging: one should not have to edit a 
class method in order to involve a higher-resolution output device :(

Bill


-----Original Message-----
From: [email protected] 
[mailto:[email protected]] On Behalf Of Henrik 
Johansen
Sent: Monday, April 19, 2010 9:47 AM
To: [email protected]
Subject: Re: [Pharo-project] Fonts for dummies


On Apr 19, 2010, at 4:16 25PM, Schwab,Wilhelm K wrote:

> 
> What about what Microsoft (sorry...) calls font metrics?  By involving a 
> device context (canvas in our world), one can find out how big a particular 
> string will be on the target device's resolution, and allowing for kerning.
> 
> So far, I have found #heightOf: and #widthOf: in the Font hierarchy, which 
> means they know nothing of the intended device, and do not (obviously anyway) 
> seem to know about kerning.  Are there glaringly missing features here, or is 
> this simply an consequence of printing being done via PostScript and 
> therefore still in terms of point sizes?
> 
> Bill

StrikeFonts take their glyphs from a bitmap, thus will have constant pixel 
sizes. (decentKern is used for italic glyphs though) As far as I know, kerning 
is not done for StrikeFonts, the only related use is of ascentKern when making 
a bitmap for italic derivatives of basefonts.
Changing StrikeFonts to include kerning info will mean rewriting the 
string-rendering primitive, so I wouldn't get my hopes up it is likely to 
happen anytime soon.


For FreeTypeFonts, getWidthOf: uses AbstractFont>>pixelSize, which again uses 
TextStyle>>pointsToPixels: , which relies on TextStyles>>pixelsPerInch.
pixelsPerInch _could_ be set based on information gathered at startup about 
resolution and screen size, but is not done currently, so a default of 96 is 
used.
FreeTypeFont>> widthOfString:from:to: returns a width which takes 
FreeTypeFont>> kerning into account. (in theory, see the comment for 
FreeTypeFont>> clarifications)

In essence, if those features are important to you:
- Use FreeTypeFonts.
- Set TextStyle pixelsPerInch: to a computed value at startup.

Cheers,
Henry



_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

Reply via email to