discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Slow localized text drawing


From: Fred Kiefer
Subject: Re: Slow localized text drawing
Date: Wed, 03 Dec 2008 09:14:22 +0100
User-agent: Thunderbird 2.0.0.18 (X11/20081112)

I don't quite understand these values. Where did you get them from? Is
the first line some debug output you added to characterIsMember: ?

Does this mean that the character set of your Helvetica font reports
back that it has a length of 0x10000, but the value 0x161 is reported as
not being a member?

This looks like there could be a problem in the method
coveredCharacterSet for GSXFTFontInfo. Are you on a big or little endian
machine? We do some swapping there and I never trust that code :-)
(I can only ever test it on m y own machine)

Fred

UBoss UBoss wrote:
> more info : hope this helps
> 
> CHAR SET is member 0x161  length 0x10000  _data[byte] 0x00
> SUBSTITUTE FONT <NSFont: 0x85dd6e0> Bitstream Vera Sans 12.000 0.000
> 0.000 12.000 0.000 0.000 N P 12 ENC iso10646-1 CHARSET <NSBitmapCharSet:
> 0x860a758> AFMDCT {Ascender = 12; CapHeight = 15; Descender = "-3";
> EncodingScheme = "iso10646-1"; FamilyName = "Bitstream Vera Sans";
> FontName = "Bitstream Vera Sans"; Weight = medium; XHeight = 9; }
> FONT NumGlyphs 257 INFO <GSXftFontInfo: 0x85dd728>
> 
> 
> for me all looks correct, don't know where to look for more deeper info,
> so made quick fix to continue in development if  unichar is not found in
> characterIsMember then test if font is unicode  YES ok skip finding
> substitute font NO try to find substitute, work for me now, if i have
> more time i'll try to look deeper.
> 
> 
> On Fri, Nov 28, 2008 at 8:32 PM, Fred Kiefer <fredkiefer@gmx.de
> <mailto:fredkiefer@gmx.de>> wrote:
> 
>     UBoss UBoss wrote:
>     > Using gnustep stable
>     >     make - 2.0.6
>     >     base -  1.16.3
>     >     gui -  0.14.0
>     >     back - 0.14.0 (Xlib, X11)
>     >
>     > OS: solaris 10
>     >
>     > using font Helvetica (included in gnustep)  (iso10646-1 = unicode)
>     >
>     > when drawing Loclaized string (Latin2) - [NSString allioc]
>     initWithData:
>     > <Latin2 chars as data> encoding:NSISOLatin2StringEcoding]
>     > into textFiled, NSBrowserCell ...
>     > the responses of application is too slow (about 3-5sec per one
>     nonASCII
>     > char)
>     >
>     >  after searching in sources found that slow piece of code is  in
>     > gui/Sources/NSAttributedString.m
>     > method
>     >   fixFontAttributeInRange
>     >  ....
>     >  on line  ....  subFont = [self _substituteFontFor: uchar font: font];
>     >
>     > returned subFont is nil
>     >
>     > after commenting out this line application responses is OK,
>     drawing is OK.
>     >
>     > question is why is there substitue if using unicode font ?
>     >
>     > Hope this helps..
> 
>     Let me explain a bit what goes on here:
> 
>     You end up in this code, when the font does not seem to support the
>     given characters. In your case the charcter set returned by the font
>     doesn't seem to match the characters supported by the font. What the
>     code now tries to do is find a replacement font that will support this
>     characters. In your case this goes wrong, most likely because the other
>     fonts also have wrong character sets assigned and all seem to not
>     support that character. This of course is a rather heavy operation and
>     repeated for each single character.
> 
>     First of all we should now try to find out, what goes wrong in your
>     specific case and over all we need to come up with a better
>     implementation here, where we handle fonts and characters in groups per
>     scripts.
> 
>     You wrote that you are using the xlib backend, for this backend we have
>     three different font mechanisms:
>     GSXftFontInfo
>     XGFontInfo
>     XGFontSetFontInfo
> 
>     If you haven't set up something specifically you will be using the first
>     one. For this class the method coveredCharacterSet is fully implemented
>     and should be working correctly (At least that is what I hope, having
>     implemented it myself). But I have no experience with it on Solaris.
> 
>     Solaris may also be missing XFT or you may have switched off
>     anti-aliasing then XGFontInfo would be used. For that class
>     coveredCharacterSet hasn't been implemented, so it would be ignored by
>     the NSAtrributedString.
> 
>     Now the only font provided with GNUstep itself is the Helvetica nfont
>     that comes along with back and it is only used by the art backend.
> 
>     All of that is confusing me.
> 
>     It would be nice to report back some information about the font
>     character set as seen within the fixFontAttributeInRange method.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]