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

Side by Side Diff: src/cff/cffgload.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/cff/cfferrs.h ('k') | src/cff/cffload.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 /* cffgload.c */ 3 /* cffgload.c */
4 /* */ 4 /* */
5 /* OpenType Glyph Loader (body). */ 5 /* OpenType Glyph Loader (body). */
6 /* */ 6 /* */
7 /* Copyright 1996-2011 by */ 7 /* Copyright 1996-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 1488 matching lines...) Expand 10 before | Expand all | Expand 10 after
1506 { 1506 {
1507 FT_Int nargs; 1507 FT_Int nargs;
1508 1508
1509 1509
1510 FT_TRACE4(( " vvcurveto\n" )); 1510 FT_TRACE4(( " vvcurveto\n" ));
1511 1511
1512 if ( num_args < 4 ) 1512 if ( num_args < 4 )
1513 goto Stack_Underflow; 1513 goto Stack_Underflow;
1514 1514
1515 /* if num_args isn't of the form 4n or 4n+1, */ 1515 /* if num_args isn't of the form 4n or 4n+1, */
1516 /* we reduce it to 4n+1 */ 1516 /* we enforce it by clearing the second bit */
1517 1517
1518 nargs = num_args - num_args % 4; 1518 nargs = num_args & ~2;
1519 if ( num_args - nargs > 0 )
1520 nargs += 1;
1521 1519
1522 if ( cff_builder_start_point( builder, x, y ) ) 1520 if ( cff_builder_start_point( builder, x, y ) )
1523 goto Fail; 1521 goto Fail;
1524 1522
1525 args -= nargs; 1523 args -= nargs;
1526 1524
1527 if ( nargs & 1 ) 1525 if ( nargs & 1 )
1528 { 1526 {
1529 x += args[0]; 1527 x += args[0];
1530 args++; 1528 args++;
(...skipping 22 matching lines...) Expand all
1553 { 1551 {
1554 FT_Int nargs; 1552 FT_Int nargs;
1555 1553
1556 1554
1557 FT_TRACE4(( " hhcurveto\n" )); 1555 FT_TRACE4(( " hhcurveto\n" ));
1558 1556
1559 if ( num_args < 4 ) 1557 if ( num_args < 4 )
1560 goto Stack_Underflow; 1558 goto Stack_Underflow;
1561 1559
1562 /* if num_args isn't of the form 4n or 4n+1, */ 1560 /* if num_args isn't of the form 4n or 4n+1, */
1563 /* we reduce it to 4n+1 */ 1561 /* we enforce it by clearing the second bit */
1564 1562
1565 nargs = num_args - num_args % 4; 1563 nargs = num_args & ~2;
1566 if ( num_args - nargs > 0 )
1567 nargs += 1;
1568 1564
1569 if ( cff_builder_start_point( builder, x, y ) ) 1565 if ( cff_builder_start_point( builder, x, y ) )
1570 goto Fail; 1566 goto Fail;
1571 1567
1572 args -= nargs; 1568 args -= nargs;
1573 if ( nargs & 1 ) 1569 if ( nargs & 1 )
1574 { 1570 {
1575 y += args[0]; 1571 y += args[0];
1576 args++; 1572 args++;
1577 nargs--; 1573 nargs--;
(...skipping 27 matching lines...) Expand all
1605 FT_TRACE4(( op == cff_op_vhcurveto ? " vhcurveto\n" 1601 FT_TRACE4(( op == cff_op_vhcurveto ? " vhcurveto\n"
1606 : " hvcurveto\n" )); 1602 : " hvcurveto\n" ));
1607 1603
1608 if ( cff_builder_start_point( builder, x, y ) ) 1604 if ( cff_builder_start_point( builder, x, y ) )
1609 goto Fail; 1605 goto Fail;
1610 1606
1611 if ( num_args < 4 ) 1607 if ( num_args < 4 )
1612 goto Stack_Underflow; 1608 goto Stack_Underflow;
1613 1609
1614 /* if num_args isn't of the form 8n, 8n+1, 8n+4, or 8n+5, */ 1610 /* if num_args isn't of the form 8n, 8n+1, 8n+4, or 8n+5, */
1615 /* we reduce it to the largest one which fits */ 1611 /* we enforce it by clearing the second bit */
1616 1612
1617 nargs = num_args - num_args % 4; 1613 nargs = num_args & ~2;
1618 if ( num_args - nargs > 0 )
1619 nargs += 1;
1620 1614
1621 args -= nargs; 1615 args -= nargs;
1622 if ( check_points( builder, ( nargs / 4 ) * 3 ) ) 1616 if ( check_points( builder, ( nargs / 4 ) * 3 ) )
1623 goto Stack_Underflow; 1617 goto Stack_Underflow;
1624 1618
1625 phase = ( op == cff_op_hvcurveto ); 1619 phase = ( op == cff_op_hvcurveto );
1626 1620
1627 while ( nargs >= 4 ) 1621 while ( nargs >= 4 )
1628 { 1622 {
1629 nargs -= 4; 1623 nargs -= 4;
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
1956 1950
1957 case cff_op_endchar: 1951 case cff_op_endchar:
1958 FT_TRACE4(( " endchar\n" )); 1952 FT_TRACE4(( " endchar\n" ));
1959 1953
1960 /* We are going to emulate the seac operator. */ 1954 /* We are going to emulate the seac operator. */
1961 if ( num_args >= 4 ) 1955 if ( num_args >= 4 )
1962 { 1956 {
1963 /* Save glyph width so that the subglyphs don't overwrite it. */ 1957 /* Save glyph width so that the subglyphs don't overwrite it. */
1964 FT_Pos glyph_width = decoder->glyph_width; 1958 FT_Pos glyph_width = decoder->glyph_width;
1965 1959
1960
1966 error = cff_operator_seac( decoder, 1961 error = cff_operator_seac( decoder,
1967 0L, args[-4], args[-3], 1962 0L, args[-4], args[-3],
1968 (FT_Int)( args[-2] >> 16 ), 1963 (FT_Int)( args[-2] >> 16 ),
1969 (FT_Int)( args[-1] >> 16 ) ); 1964 (FT_Int)( args[-1] >> 16 ) );
1970 1965
1971 decoder->glyph_width = glyph_width; 1966 decoder->glyph_width = glyph_width;
1972 } 1967 }
1973 else 1968 else
1974 { 1969 {
1975 if ( !error ) 1970 if ( !error )
(...skipping 722 matching lines...) Expand 10 before | Expand all | Expand 10 after
2698 /* if we have a CID subfont, use its matrix (which has already */ 2693 /* if we have a CID subfont, use its matrix (which has already */
2699 /* been multiplied with the root matrix) */ 2694 /* been multiplied with the root matrix) */
2700 2695
2701 /* this scaling is only relevant if the PS hinter isn't active */ 2696 /* this scaling is only relevant if the PS hinter isn't active */
2702 if ( cff->num_subfonts ) 2697 if ( cff->num_subfonts )
2703 { 2698 {
2704 FT_ULong top_upm, sub_upm; 2699 FT_ULong top_upm, sub_upm;
2705 FT_Byte fd_index = cff_fd_select_get( &cff->fd_select, 2700 FT_Byte fd_index = cff_fd_select_get( &cff->fd_select,
2706 glyph_index ); 2701 glyph_index );
2707 2702
2708 if ( fd_index >= cff->num_subfonts ) 2703 if ( fd_index >= cff->num_subfonts )
2709 fd_index = (FT_Byte)( cff->num_subfonts - 1 ); 2704 fd_index = (FT_Byte)( cff->num_subfonts - 1 );
2710 2705
2711 top_upm = cff->top_font.font_dict.units_per_em; 2706 top_upm = cff->top_font.font_dict.units_per_em;
2712 sub_upm = cff->subfonts[fd_index]->font_dict.units_per_em; 2707 sub_upm = cff->subfonts[fd_index]->font_dict.units_per_em;
2713 2708
2714 2709
2715 font_matrix = cff->subfonts[fd_index]->font_dict.font_matrix; 2710 font_matrix = cff->subfonts[fd_index]->font_dict.font_matrix;
2716 font_offset = cff->subfonts[fd_index]->font_dict.font_offset; 2711 font_offset = cff->subfonts[fd_index]->font_dict.font_offset;
2717 2712
2718 if ( top_upm != sub_upm ) 2713 if ( top_upm != sub_upm )
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
2954 2949
2955 metrics->width = cbox.xMax - cbox.xMin; 2950 metrics->width = cbox.xMax - cbox.xMin;
2956 metrics->height = cbox.yMax - cbox.yMin; 2951 metrics->height = cbox.yMax - cbox.yMin;
2957 2952
2958 metrics->horiBearingX = cbox.xMin; 2953 metrics->horiBearingX = cbox.xMin;
2959 metrics->horiBearingY = cbox.yMax; 2954 metrics->horiBearingY = cbox.yMax;
2960 2955
2961 if ( has_vertical_info ) 2956 if ( has_vertical_info )
2962 metrics->vertBearingX = metrics->horiBearingX - 2957 metrics->vertBearingX = metrics->horiBearingX -
2963 metrics->horiAdvance / 2; 2958 metrics->horiAdvance / 2;
2964 else 2959 else
2965 { 2960 {
2966 if ( load_flags & FT_LOAD_VERTICAL_LAYOUT ) 2961 if ( load_flags & FT_LOAD_VERTICAL_LAYOUT )
2967 ft_synthesize_vertical_metrics( metrics, 2962 ft_synthesize_vertical_metrics( metrics,
2968 metrics->vertAdvance ); 2963 metrics->vertAdvance );
2969 } 2964 }
2970 } 2965 }
2971 } 2966 }
2972 2967
2973 return error; 2968 return error;
2974 } 2969 }
2975 2970
2976 2971
2977 /* END */ 2972 /* END */
OLDNEW
« no previous file with comments | « src/cff/cfferrs.h ('k') | src/cff/cffload.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698