On Mar 27, 2008, at 11:12 AM, Gerriet M. Denkmann wrote:


On 27 Mar 2008, at 10:08, Uli Kusterer wrote:
On 27.03.2008, at 09:32, Gerriet M. Denkmann wrote:
float widthOfTab = [usedFont advancementForGlyph:(NSGlyph)' '].width * 4;


I'm pretty new to the text engine myself, but I don't think an NSGlyph can be generated by typecasting a char. Since Monaco or Courier are monospaced, it just so happens that you get the same width as the space would be. But the glyph with number 0x20 is probably a completely different width than the glyph corresponding to a space in other languages.

Yes. You are certainly right. Silly mistake of mine.
There should be something like: -[NSFont glyphForChar: (NSString *)aString ] which returns NSNotFound if the font does not contain the first char in aString.
But I did not find any such method.

You are assuming that there is a one-to-one correspondence between characters and glyphs. There isn't. Consider simple cases such as ligatures (the way that "f" and "l" may combine to a single character where the top of the "f" blends in with the top of the "l"), or degenerate cases like the way that the entire word "Zapfino" in the Zapfino font is a single glyph. It gets worse once you consider internationalization - many languages have different glyphs depending on if the character is the first character of a word, in the middle, or at the end of the word (so if you get a glyph for a single character, you've got a 66% chance of getting the wrong one).



Glenn Andreas                      [EMAIL PROTECTED]
 <http://www.gandreas.com/> wicked fun!
Cardographer | the custom playing card designer


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to