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

Side by Side Diff: third_party/freetype/src/truetype/ttpload.c

Issue 1413673003: Update bundled freetype to 2.6.1 (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: DEPS for corpus Created 5 years, 1 month 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
OLDNEW
1 /***************************************************************************/ 1 /***************************************************************************/
2 /* */ 2 /* */
3 /* ttpload.c */ 3 /* ttpload.c */
4 /* */ 4 /* */
5 /* TrueType-specific tables loader (body). */ 5 /* TrueType-specific tables loader (body). */
6 /* */ 6 /* */
7 /* Copyright 1996-2002, 2004-2013 by */ 7 /* Copyright 1996-2015 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 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 } 111 }
112 112
113 if ( face->num_locations != (FT_ULong)face->root.num_glyphs + 1 ) 113 if ( face->num_locations != (FT_ULong)face->root.num_glyphs + 1 )
114 { 114 {
115 FT_TRACE2(( "glyph count mismatch! loca: %d, maxp: %d\n", 115 FT_TRACE2(( "glyph count mismatch! loca: %d, maxp: %d\n",
116 face->num_locations - 1, face->root.num_glyphs )); 116 face->num_locations - 1, face->root.num_glyphs ));
117 117
118 /* we only handle the case where `maxp' gives a larger value */ 118 /* we only handle the case where `maxp' gives a larger value */
119 if ( face->num_locations <= (FT_ULong)face->root.num_glyphs ) 119 if ( face->num_locations <= (FT_ULong)face->root.num_glyphs )
120 { 120 {
121 FT_Long new_loca_len = 121 FT_ULong new_loca_len =
122 ( (FT_Long)( face->root.num_glyphs ) + 1 ) << shift; 122 ( (FT_ULong)face->root.num_glyphs + 1 ) << shift;
123 123
124 TT_Table entry = face->dir_tables; 124 TT_Table entry = face->dir_tables;
125 TT_Table limit = entry + face->num_tables; 125 TT_Table limit = entry + face->num_tables;
126 126
127 FT_Long pos = FT_Stream_Pos( stream ); 127 FT_Long pos = (FT_Long)FT_STREAM_POS();
128 FT_Long dist = 0x7FFFFFFFL; 128 FT_Long dist = 0x7FFFFFFFL;
129 129
130 130
131 /* compute the distance to next table in font file */ 131 /* compute the distance to next table in font file */
132 for ( ; entry < limit; entry++ ) 132 for ( ; entry < limit; entry++ )
133 { 133 {
134 FT_Long diff = entry->Offset - pos; 134 FT_Long diff = (FT_Long)entry->Offset - pos;
135 135
136 136
137 if ( diff > 0 && diff < dist ) 137 if ( diff > 0 && diff < dist )
138 dist = diff; 138 dist = diff;
139 } 139 }
140 140
141 if ( entry == limit ) 141 if ( entry == limit )
142 { 142 {
143 /* `loca' is the last table */ 143 /* `loca' is the last table */
144 dist = stream->size - pos; 144 dist = (FT_Long)stream->size - pos;
145 } 145 }
146 146
147 if ( new_loca_len <= dist ) 147 if ( new_loca_len <= (FT_ULong)dist )
148 { 148 {
149 face->num_locations = face->root.num_glyphs + 1; 149 face->num_locations = (FT_ULong)face->root.num_glyphs + 1;
150 table_len = new_loca_len; 150 table_len = new_loca_len;
151 151
152 FT_TRACE2(( "adjusting num_locations to %d\n", 152 FT_TRACE2(( "adjusting num_locations to %d\n",
153 face->num_locations )); 153 face->num_locations ));
154 } 154 }
155 else
156 {
157 face->root.num_glyphs = face->num_locations
158 ? (FT_Long)face->num_locations - 1 : 0;
159
160 FT_TRACE2(( "adjusting num_glyphs to %d\n",
161 face->root.num_glyphs ));
162 }
155 } 163 }
156 } 164 }
157 165
158 /* 166 /*
159 * Extract the frame. We don't need to decompress it since 167 * Extract the frame. We don't need to decompress it since
160 * we are able to parse it directly. 168 * we are able to parse it directly.
161 */ 169 */
162 if ( FT_FRAME_EXTRACT( table_len, face->glyph_locations ) ) 170 if ( FT_FRAME_EXTRACT( table_len, face->glyph_locations ) )
163 goto Exit; 171 goto Exit;
164 172
(...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after
592 if ( gindex < record_size ) 600 if ( gindex < record_size )
593 result = record + nn * record_size + gindex; 601 result = record + nn * record_size + gindex;
594 break; 602 break;
595 } 603 }
596 604
597 return result; 605 return result;
598 } 606 }
599 607
600 608
601 /* END */ 609 /* END */
OLDNEW
« no previous file with comments | « third_party/freetype/src/truetype/ttpload.h ('k') | third_party/freetype/src/truetype/ttsubpix.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698