|
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))) |