View | Details | Raw Unified | Return to bug 52167
Collapse All | Expand All

(-)fontconfig-2.3.2.20050721.orig/src/fcfreetype.c (-28 / +39 lines)
Lines 2453-2474 Link Here
2453
		if (glyph && 
2453
		if (glyph && 
2454
		    FcFreeTypeCheckGlyph (face, ucs4, glyph, blanks, &advance))
2454
		    FcFreeTypeCheckGlyph (face, ucs4, glyph, blanks, &advance))
2455
		{
2455
		{
2456
		    if (!has_advance)
2456
		    if (advance != 0)
2457
		    {
2457
		    {
2458
			has_advance = FcTrue;
2458
		        if (!has_advance)
2459
			advance_one = advance;
2459
			{
2460
			    has_advance = FcTrue;
2461
			    advance_one = advance;
2462
			}
2463
			else if (!APPROXIMATELY_EQUAL (advance, advance_one))
2464
			{
2465
			    if (fixed_advance)
2466
			    {
2467
				dual_advance = FcTrue;
2468
				fixed_advance = FcFalse;
2469
				advance_two = advance;
2470
			    }
2471
			    else if (!APPROXIMATELY_EQUAL (advance, advance_two))
2472
				dual_advance = FcFalse;
2473
			}
2460
		    }
2474
		    }
2461
		    else if (!APPROXIMATELY_EQUAL (advance, advance_one))
2462
                    {
2463
                        if (fixed_advance)
2464
                        {
2465
                            dual_advance = FcTrue;
2466
                            fixed_advance = FcFalse;
2467
                            advance_two = advance;
2468
                        }
2469
                        else if (!APPROXIMATELY_EQUAL (advance, advance_two))
2470
                            dual_advance = FcFalse;
2471
                    }
2472
2475
2473
		    leaf = FcCharSetFindLeafCreate (fcs, ucs4);
2476
		    leaf = FcCharSetFindLeafCreate (fcs, ucs4);
2474
		    if (!leaf)
2477
		    if (!leaf)
Lines 2511-2532 Link Here
2511
		    if (glyph && FcFreeTypeCheckGlyph (face, ucs4, 
2514
		    if (glyph && FcFreeTypeCheckGlyph (face, ucs4, 
2512
						       glyph, blanks, &advance))
2515
						       glyph, blanks, &advance))
2513
		    {
2516
		    {
2514
			if (!has_advance)
2517
			if (advance != 0)
2515
			{
2518
			{
2516
			    has_advance = FcTrue;
2519
			    if (!has_advance)
2517
			    advance_one = advance;
2520
			    {
2521
				has_advance = FcTrue;
2522
				advance_one = advance;
2523
			    }
2524
			    else if (!APPROXIMATELY_EQUAL (advance, advance_one))
2525
			    {
2526
				if (fixed_advance)
2527
				{
2528
				    dual_advance = FcTrue;
2529
				    fixed_advance = FcFalse;
2530
				    advance_two = advance;
2531
				}
2532
				else if (!APPROXIMATELY_EQUAL (advance, advance_two))
2533
				    dual_advance = FcFalse;
2534
			    }
2518
			}
2535
			}
2519
		        else if (!APPROXIMATELY_EQUAL (advance, advance_one))
2520
                        {
2521
                            if (fixed_advance)
2522
                            {
2523
                                dual_advance = FcTrue;
2524
                                fixed_advance = FcFalse;
2525
                                advance_two = advance;
2526
                            }
2527
                            else if (!APPROXIMATELY_EQUAL (advance, advance_two))
2528
                                dual_advance = FcFalse;
2529
                        }
2530
2536
2531
			if (!leaf)
2537
			if (!leaf)
2532
			{
2538
			{
Lines 2625-2630 Link Here
2625
	    printf ("Bitmap extra char 0x%x\n", ucs4);
2631
	    printf ("Bitmap extra char 0x%x\n", ucs4);
2626
    }
2632
    }
2627
#endif
2633
#endif
2634
    if (face->family_name != NULL &&
2635
	(!strcmp(face->family_name,"Luxi Mono") ||
2636
	 !strcmp(face->family_name,"Nimbus Mono L")))
2637
	    fixed_advance = FcTrue;
2638
    
2628
    if (fixed_advance)
2639
    if (fixed_advance)
2629
	*spacing = FC_MONO;
2640
	*spacing = FC_MONO;
2630
    else if (dual_advance && APPROXIMATELY_EQUAL (2 * FC_MIN (advance_one, advance_two), FC_MAX (advance_one, advance_two)))
2641
    else if (dual_advance && APPROXIMATELY_EQUAL (2 * FC_MIN (advance_one, advance_two), FC_MAX (advance_one, advance_two)))

Return to bug 52167