[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Hang in font panel with certain fonts
From: |
Fred Kiefer |
Subject: |
Re: Hang in font panel with certain fonts |
Date: |
Sun, 25 Jan 2015 19:31:54 +0100 |
Am 25.01.2015 um 19:09 schrieb Riccardo Mottola <riccardo.mottola@libero.it>:
> using Eric's code, the size of CGFloat on my machine is4:
>
> CGFloat size: 4
>
>
> Fred Kiefer wrote:
>> By using %f you assume that you have a float here not a double. Which should
>> settle the question about CGFloat.
>> And the NSLog statement is exactly what I would like to know, but rather
>> before the if statement and not after the assignment. And maybe you should
>> also inspect __new_height although it gets assigned with h.
>
> #define WANT_LINE_HEIGHT(h) \
> do { \
> CGFloat __new_height = (h); \
> if (max_line_height > 0 && __new_height > max_line_height) \
> __new_height = max_line_height; \
> NSLog(@"lh = %f, h = %f, gt? %d", line_height, h, line_height > h); \
> if (__new_height > line_height) \
> { \
> line_height = __new_height; \
> COMPUTE_BASELINE; \
> goto restart; \
> } \
> } while (0)
>
>
> This is the first printout:
>
> 2015-01-25 18:47:59.315 Ink[3603] layoutGlyphsInLayoutManager index 0 howMany > 0
> 2015-01-25 18:47:59.338 Ink[3603] f_ascender: 10.285714
> 2015-01-25 18:47:59.341 Ink[3603] Main glyph layout loop. i:0
> 2015-01-25 18:47:59.343 Ink[3603] lh = 12.857142, h = 12.857143, gt? 0
>
>
> This is the printout of the loop after it has run for a while:
>
> 2015-01-25 18:48:13.700 Ink[3603] lh = 12.857142, h = 12.857143, gt? 0
> 2015-01-25 18:48:13.702 Ink[3603] f_ascender: 10.285714
>
> We see the values remain constant.
>
> I thought that __new_height might interest you and this is what I get:
>
> 2015-01-25 19:05:50.664 Ink[4657] f_ascender: 10.285714
> 2015-01-25 19:05:50.666 Ink[4657] Main glyph layout loop. i:0
> 2015-01-25 19:05:50.669 Ink[4657] nh = 12.857143, lh = 12.857142, h =
> 12.857143, gt? 0
> 2015-01-25 19:05:50.672 Ink[4657] f_ascender: 10.285714
> 2015-01-25 19:05:50.674 Ink[4657] Main glyph layout loop. i:0
> 2015-01-25 19:05:50.676 Ink[4657] nh = 12.857143, lh = 12.857143, h =
> 12.857143, gt? 0
> 2015-01-25 19:05:50.679 Ink[4657] 2-WantLineHeight completed
>
> and the loop end: that log line "fixes" our problem. At this point I start to
> guess that we have a math error amplified or triggered by compiler
> optimizations. Forcing the printout of __new_line forces the compiler not to
> perform a certain optimization and the code works again.
>
> Do you have any clue on how to improve/fix the code? Or at least a better
> explanation of my rough idea?
That matches what I wrote a few mails back. Why don't you roll back all you
changes and compile this file into assembly code, with both debug and non debug
settings and post the asm of these few lines? I know this is hard, as the
method is really long and you will have to extract the lines from it.
Fred
- Re: Hang in font panel with certain fonts, (continued)
- Re: Hang in font panel with certain fonts, Fred Kiefer, 2015/01/17
- Re: Hang in font panel with certain fonts, Fred Kiefer, 2015/01/17
- Re: Hang in font panel with certain fonts, Riccardo Mottola, 2015/01/17
- Re: Hang in font panel with certain fonts, Fred Kiefer, 2015/01/17
- Re: Hang in font panel with certain fonts, Riccardo Mottola, 2015/01/18
- Re: Hang in font panel with certain fonts, Fred Kiefer, 2015/01/18
- Re: Hang in font panel with certain fonts, Riccardo Mottola, 2015/01/18
- Re: Hang in font panel with certain fonts, Fred Kiefer, 2015/01/20
- Re: Hang in font panel with certain fonts, Eric Wasylishen, 2015/01/20
- Re: Hang in font panel with certain fonts, Riccardo Mottola, 2015/01/25
- Re: Hang in font panel with certain fonts,
Fred Kiefer <=
- Re: Hang in font panel with certain fonts, Riccardo Mottola, 2015/01/29
Re: Hang in font panel with certain fonts, Riccardo Mottola, 2015/01/09