Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(256)

Side by Side Diff: src/autofit/afloader.c

Issue 23555005: Update freetype to the latest version of Android external/freetype (Closed) Base URL: https://chromium.googlesource.com/chromium/src/third_party/freetype.git@master
Patch Set: Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/autofit/afloader.h ('k') | src/autofit/afpic.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /***************************************************************************/ 1 /***************************************************************************/
2 /* */ 2 /* */
3 /* afloader.c */ 3 /* afloader.c */
4 /* */ 4 /* */
5 /* Auto-fitter glyph loading routines (body). */ 5 /* Auto-fitter glyph loading routines (body). */
6 /* */ 6 /* */
7 /* Copyright 2003-2009, 2011 by */ 7 /* Copyright 2003-2009, 2011-2012 by */
8 /* David Turner, Robert Wilhelm, and Werner Lemberg. */ 8 /* David Turner, Robert Wilhelm, and Werner Lemberg. */
9 /* */ 9 /* */
10 /* This file is part of the FreeType project, and may only be used, */ 10 /* This file is part of the FreeType project, and may only be used, */
11 /* modified, and distributed under the terms of the FreeType project */ 11 /* modified, and distributed under the terms of the FreeType project */
12 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 12 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */
13 /* this file you indicate that you have read the license and */ 13 /* this file you indicate that you have read the license and */
14 /* understand and accept it fully. */ 14 /* understand and accept it fully. */
15 /* */ 15 /* */
16 /***************************************************************************/ 16 /***************************************************************************/
17 17
(...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after
426 /* for mono-width fonts (like Andale, Courier, etc.) we need */ 426 /* for mono-width fonts (like Andale, Courier, etc.) we need */
427 /* to keep the original rounded advance width; ditto for */ 427 /* to keep the original rounded advance width; ditto for */
428 /* digits if all have the same advance width */ 428 /* digits if all have the same advance width */
429 #if 0 429 #if 0
430 if ( !FT_IS_FIXED_WIDTH( slot->face ) ) 430 if ( !FT_IS_FIXED_WIDTH( slot->face ) )
431 slot->metrics.horiAdvance = loader->pp2.x - loader->pp1.x; 431 slot->metrics.horiAdvance = loader->pp2.x - loader->pp1.x;
432 else 432 else
433 slot->metrics.horiAdvance = FT_MulFix( slot->metrics.horiAdvance, 433 slot->metrics.horiAdvance = FT_MulFix( slot->metrics.horiAdvance,
434 x_scale ); 434 x_scale );
435 #else 435 #else
436 if ( FT_IS_FIXED_WIDTH( slot->face ) || 436 if ( scaler->render_mode != FT_RENDER_MODE_LIGHT &&
437 ( af_face_globals_is_digit( loader->globals, glyph_index ) && 437 ( FT_IS_FIXED_WIDTH( slot->face ) ||
438 metrics->digits_have_same_width ) ) 438 ( af_face_globals_is_digit( loader->globals, glyph_index ) &&
439 metrics->digits_have_same_width ) ) )
439 { 440 {
440 slot->metrics.horiAdvance = FT_MulFix( slot->metrics.horiAdvance, 441 slot->metrics.horiAdvance = FT_MulFix( slot->metrics.horiAdvance,
441 metrics->scaler.x_scale ); 442 metrics->scaler.x_scale );
442 443
443 /* Set delta values to 0. Otherwise code that uses them is */ 444 /* Set delta values to 0. Otherwise code that uses them is */
444 /* going to ruin the fixed advance width. */ 445 /* going to ruin the fixed advance width. */
445 slot->lsb_delta = 0; 446 slot->lsb_delta = 0;
446 slot->rsb_delta = 0; 447 slot->rsb_delta = 0;
447 } 448 }
448 else 449 else
449 { 450 {
450 /* non-spacing glyphs must stay as-is */ 451 /* non-spacing glyphs must stay as-is */
451 if ( slot->metrics.horiAdvance ) 452 if ( slot->metrics.horiAdvance )
452 slot->metrics.horiAdvance = loader->pp2.x - loader->pp1.x; 453 slot->metrics.horiAdvance = loader->pp2.x - loader->pp1.x;
453 } 454 }
454 #endif 455 #endif
455 456
456 slot->metrics.vertAdvance = FT_MulFix( slot->metrics.vertAdvance, 457 slot->metrics.vertAdvance = FT_MulFix( slot->metrics.vertAdvance,
457 metrics->scaler.y_scale ); 458 metrics->scaler.y_scale );
458 459
459 slot->metrics.horiAdvance = FT_PIX_ROUND( slot->metrics.horiAdvance ); 460 slot->metrics.horiAdvance = FT_PIX_ROUND( slot->metrics.horiAdvance );
460 slot->metrics.vertAdvance = FT_PIX_ROUND( slot->metrics.vertAdvance ); 461 slot->metrics.vertAdvance = FT_PIX_ROUND( slot->metrics.vertAdvance );
461 462
462 /* now copy outline into glyph slot */ 463 /* now copy outline into glyph slot */
463 FT_GlyphLoader_Rewind( internal->loader ); 464 FT_GlyphLoader_Rewind( internal->loader );
464 error = FT_GlyphLoader_CopyPoints( internal->loader, gloader ); 465 error = FT_GlyphLoader_CopyPoints( internal->loader, gloader );
465 if ( error ) 466 if ( error )
466 goto Exit; 467 goto Exit;
467 468
468 slot->outline = internal->loader->base.outline; 469 /* reassign all outline fields except flags to protect them */
470 slot->outline.n_contours = internal->loader->base.outline.n_contours;
471 slot->outline.n_points = internal->loader->base.outline.n_points;
472 slot->outline.points = internal->loader->base.outline.points;
473 slot->outline.tags = internal->loader->base.outline.tags;
474 slot->outline.contours = internal->loader->base.outline.contours;
475
469 slot->format = FT_GLYPH_FORMAT_OUTLINE; 476 slot->format = FT_GLYPH_FORMAT_OUTLINE;
470 } 477 }
471 478
472 Exit: 479 Exit:
473 return error; 480 return error;
474 } 481 }
475 482
476 483
477 /* Load a glyph. */ 484 /* Load a glyph. */
478 485
479 FT_LOCAL_DEF( FT_Error ) 486 FT_LOCAL_DEF( FT_Error )
480 af_loader_load_glyph( AF_Loader loader, 487 af_loader_load_glyph( AF_Loader loader,
481 FT_Face face, 488 FT_Face face,
482 FT_UInt gindex, 489 FT_UInt gindex,
483 FT_UInt32 load_flags ) 490 FT_Int32 load_flags )
484 { 491 {
485 FT_Error error; 492 FT_Error error;
486 FT_Size size = face->size; 493 FT_Size size = face->size;
487 AF_ScalerRec scaler; 494 AF_ScalerRec scaler;
488 495
489 496
490 if ( !size ) 497 if ( !size )
491 return AF_Err_Invalid_Argument; 498 return AF_Err_Invalid_Argument;
492 499
493 FT_ZERO( &scaler ); 500 FT_ZERO( &scaler );
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
538 545
539 error = af_loader_load_g( loader, &scaler, gindex, load_flags, 0 ); 546 error = af_loader_load_g( loader, &scaler, gindex, load_flags, 0 );
540 } 547 }
541 } 548 }
542 Exit: 549 Exit:
543 return error; 550 return error;
544 } 551 }
545 552
546 553
547 /* END */ 554 /* END */
OLDNEW
« no previous file with comments | « src/autofit/afloader.h ('k') | src/autofit/afpic.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698