Home | History | Annotate | Download | only in truetype

Lines Matching refs:loader

5 /*    TrueType Glyph Loader (body).                                        */
144 tt_get_metrics( TT_Loader loader,
147 TT_Face face = (TT_Face)loader->face;
154 (FT_Bool)!( loader->load_flags &
159 (FT_Bool)!( loader->load_flags &
164 loader->left_bearing = left_bearing;
165 loader->advance = advance_width;
166 loader->top_bearing = top_bearing;
167 loader->vadvance = advance_height;
169 if ( !loader->linear_def )
171 loader->linear_def = 1;
172 loader->linear = advance_width;
180 tt_get_metrics_incr_overrides( TT_Loader loader,
183 TT_Face face = (TT_Face)loader->face;
198 metrics.bearing_x = loader->left_bearing;
200 metrics.advance = loader->advance;
216 metrics.bearing_y = loader->top_bearing;
217 metrics.advance = loader->vadvance;
230 loader->left_bearing = left_bearing;
231 loader->advance = advance_width;
232 loader->top_bearing = top_bearing;
233 loader->vadvance = advance_height;
235 if ( !loader->linear_def )
237 loader->linear_def = 1;
238 loader->linear = advance_width;
285 TT_Access_Glyph_Frame( TT_Loader loader,
291 FT_Stream stream = loader->stream;
303 loader->cursor = stream->cursor;
304 loader->limit = stream->limit;
311 TT_Forget_Glyph_Frame( TT_Loader loader )
313 FT_Stream stream = loader->stream;
321 TT_Load_Glyph_Header( TT_Loader loader )
323 FT_Byte* p = loader->cursor;
324 FT_Byte* limit = loader->limit;
330 loader->n_contours = FT_NEXT_SHORT( p );
332 loader->bbox.xMin = FT_NEXT_SHORT( p );
333 loader->bbox.yMin = FT_NEXT_SHORT( p );
334 loader->bbox.xMax = FT_NEXT_SHORT( p );
335 loader->bbox.yMax = FT_NEXT_SHORT( p );
337 FT_TRACE5(( " # of contours: %d\n", loader->n_contours ));
338 FT_TRACE5(( " xMin: %4d xMax: %4d\n", loader->bbox.xMin,
339 loader->bbox.xMax ));
340 FT_TRACE5(( " yMin: %4d yMax: %4d\n", loader->bbox.yMin,
341 loader->bbox.yMax ));
342 loader->cursor = p;
575 TT_Load_Composite_Glyph( TT_Loader loader )
578 FT_Byte* p = loader->cursor;
579 FT_Byte* limit = loader->limit;
580 FT_GlyphLoader gloader = loader->gloader;
671 FT_Stream stream = loader->stream;
678 loader->ins_pos = (FT_ULong)( FT_STREAM_POS() +
684 loader->cursor = p;
734 TT_Hint_Glyph( TT_Loader loader,
737 TT_GlyphZone zone = &loader->zone;
748 if ( loader->glyph->control_len > 0xFFFFL )
752 loader->glyph->control_len ));
754 n_ins = (FT_UInt)( loader->glyph->control_len );
768 loader->exec->GS = ((TT_Size)loader->size)->GS;
774 loader->exec->metrics.x_scale = 1 << 16;
775 loader->exec->metrics.y_scale = 1 << 16;
781 loader->exec->metrics.x_scale =
782 ((TT_Size)loader->size)->metrics.x_scale;
783 loader->exec->metrics.y_scale =
784 ((TT_Size)loader->size)->metrics.y_scale;
801 FT_GlyphLoader gloader = loader->gloader;
805 error = TT_Set_CodeRange( loader->exec, tt_coderange_glyph,
806 loader->exec->glyphIns, n_ins );
810 loader->exec->is_composite = is_composite;
811 loader->exec->pts = *zone;
813 debug = FT_BOOL( !( loader->load_flags & FT_LOAD_NO_SCALE ) &&
814 ((TT_Size)loader->size)->debug );
816 error = TT_Run_Context( loader->exec, debug );
817 if ( error && loader->exec->pedantic_hinting )
822 ( loader->exec->GS.scan_type << 5 ) | FT_CURVE_TAG_HAS_SCANMODE;
828 if ( !loader->preserve_pps )
830 loader->pp1 = zone->cur[zone->n_points - 4];
831 loader->pp2 = zone->cur[zone->n_points - 3];
832 loader->pp3 = zone->cur[zone->n_points - 2];
833 loader->pp4 = zone->cur[zone->n_points - 1];
851 TT_Process_Simple_Glyph( TT_Loader loader )
853 FT_GlyphLoader gloader = loader->gloader;
864 outline->points[n_points ] = loader->pp1;
865 outline->points[n_points + 1] = loader->pp2;
866 outline->points[n_points + 2] = loader->pp3;
867 outline->points[n_points + 3] = loader->pp4;
878 if ( ((TT_Face)loader->face)->doblend )
882 FT_Memory memory = loader->face->memory;
886 error = TT_Vary_Get_Glyph_Deltas( (TT_Face)(loader->face),
887 loader->glyph_index,
904 if ( IS_HINTED( loader->load_flags ) )
906 tt_prepare_zone( &loader->zone, &gloader->current, 0, 0 );
908 FT_ARRAY_COPY( loader->zone.orus, loader->zone.cur,
909 loader->zone.n_points + 4 );
913 if ( ( loader->load_flags & FT_LOAD_NO_SCALE ) == 0 )
917 FT_Fixed x_scale = ((TT_Size)loader->size)->metrics.x_scale;
918 FT_Fixed y_scale = ((TT_Size)loader->size)->metrics.y_scale;
927 loader->pp1 = outline->points[n_points - 4];
928 loader->pp2 = outline->points[n_points - 3];
929 loader->pp3 = outline->points[n_points - 2];
930 loader->pp4 = outline->points[n_points - 1];
933 if ( IS_HINTED( loader->load_flags ) )
935 loader->zone.n_points += 4;
937 error = TT_Hint_Glyph( loader, 0 );
954 TT_Process_Composite_Component( TT_Loader loader,
959 FT_GlyphLoader gloader = loader->gloader;
1075 if ( !( loader->load_flags & FT_LOAD_NO_SCALE ) )
1077 FT_Fixed x_scale = ((TT_Size)loader->size)->metrics.x_scale;
1078 FT_Fixed y_scale = ((TT_Size)loader->size)->metrics.y_scale;
1112 TT_Process_Composite_Glyph( TT_Loader loader,
1121 outline = &loader->gloader->base.outline;
1124 error = FT_GLYPHLOADER_CHECK_POINTS( loader->gloader,
1130 outline->points[outline->n_points ] = loader->pp1;
1131 outline->points[outline->n_points + 1] = loader->pp2;
1132 outline->points[outline->n_points + 2] = loader->pp3;
1133 outline->points[outline->n_points + 3] = loader->pp4;
1143 FT_Stream stream = loader->stream;
1150 if ( FT_STREAM_SEEK( loader->ins_pos ) ||
1157 max_ins = ((TT_Face)loader->face)->max_profile.maxSizeOfInstructions;
1161 if ( (FT_Int)n_ins > loader->byte_len )
1165 n_ins, loader->byte_len ));
1169 tmp = loader->exec->glyphSize;
1170 error = Update_Max( loader->exec->memory,
1173 (void*)&loader->exec->glyphIns,
1175 loader->exec->glyphSize = (FT_UShort)tmp;
1182 if ( FT_STREAM_READ( loader->exec->glyphIns, n_ins ) )
1185 loader->glyph->control_data = loader->exec->glyphIns;
1186 loader->glyph->control_len = n_ins;
1191 tt_prepare_zone( &loader->zone, &loader->gloader->base,
1196 for ( i = start_point; i < loader->zone.n_points; i++ )
1197 loader->zone.tags[i] &= ~FT_CURVE_TAG_TOUCH_BOTH;
1199 loader->zone.n_points += 4;
1201 return TT_Hint_Glyph( loader, 1 );
1208 #define TT_LOADER_SET_PP( loader ) \
1210 (loader)->pp1.x = (loader)->bbox.xMin - (loader)->left_bearing; \
1211 (loader)->pp1.y = 0; \
1212 (loader)->pp2.x = (loader)->pp1.x + (loader)->advance; \
1213 (loader)->pp2.y = 0; \
1214 (loader)->pp3.x = 0; \
1215 (loader)->pp3.y = (loader)->top_bearing + (loader)->bbox.yMax; \
1216 (loader)->pp4.x = 0; \
1217 (loader)->pp4.y = (loader)->pp3.y - (loader)->vadvance; \
1231 load_truetype_glyph( TT_Loader loader,
1239 TT_Face face = (TT_Face)loader->face;
1240 FT_GlyphLoader gloader = loader->gloader;
1270 loader->glyph_index = glyph_index;
1272 if ( ( loader->load_flags & FT_LOAD_NO_SCALE ) == 0 )
1274 x_scale = ((TT_Size)loader->size)->metrics.x_scale;
1275 y_scale = ((TT_Size)loader->size)->metrics.y_scale;
1283 tt_get_metrics( loader, glyph_index );
1292 /* the loader stream to a memory stream reading the data returned */
1304 loader->byte_len = glyph_data.length;
1310 loader->stream = &inc_stream;
1317 (FT_UInt*)&loader->byte_len );
1319 if ( loader->byte_len > 0 )
1323 if ( !loader->glyf_offset &&
1326 if ( !loader->glyf_offset )
1334 error = face->access_glyph_frame( loader, glyph_index,
1335 loader->glyf_offset + offset,
1336 loader->byte_len );
1343 error = face->read_glyph_header( loader );
1348 if ( loader->byte_len == 0 || loader->n_contours == 0 )
1350 loader->bbox.xMin = 0;
1351 loader->bbox.xMax = 0;
1352 loader->bbox.yMin = 0;
1353 loader->bbox.yMax = 0;
1360 TT_LOADER_SET_PP( loader );
1363 tt_get_metrics_incr_overrides( loader, glyph_index );
1368 if ( ((TT_Face)(loader->face))->doblend )
1371 FT_Memory memory = loader->face->memory;
1374 error = TT_Vary_Get_Glyph_Deltas( (TT_Face)(loader->face),
1379 loader->pp1.x += deltas[0].x; loader->pp1.y += deltas[0].y;
1380 loader->pp2.x += deltas[1].x; loader->pp2.y += deltas[1].y;
1381 loader->pp3.x += deltas[2].x; loader->pp3.y += deltas[2].y;
1382 loader->pp4.x += deltas[3].x; loader->pp4.y += deltas[3].y;
1389 if ( ( loader->load_flags & FT_LOAD_NO_SCALE ) == 0 )
1391 loader->pp1.x = FT_MulFix( loader->pp1.x, x_scale );
1392 loader->pp2.x = FT_MulFix( loader->pp2.x, x_scale );
1393 loader->pp3.y = FT_MulFix( loader->pp3.y, y_scale );
1394 loader->pp4.y = FT_MulFix( loader->pp4.y, y_scale );
1403 TT_LOADER_SET_PP( loader );
1406 tt_get_metrics_incr_overrides( loader, glyph_index );
1415 if ( loader->n_contours > 0 )
1417 error = face->read_simple_glyph( loader );
1422 face->forget_glyph_frame( loader );
1425 error = TT_Process_Simple_Glyph( loader );
1437 else if ( loader->n_contours == -1 )
1448 error = face->read_composite_glyph( loader );
1453 ins_pos = loader->ins_pos;
1456 face->forget_glyph_frame( loader );
1493 loader->pp1.x += deltas[i + 0].x; loader->pp1.y += deltas[i + 0].y;
1494 loader->pp2.x += deltas[i + 1].x; loader->pp2.y += deltas[i + 1].y;
1495 loader->pp3.x += deltas[i + 2].x; loader->pp3.y += deltas[i + 2].y;
1496 loader->pp4.x += deltas[i + 3].x; loader->pp4.y += deltas[i + 3].y;
1503 if ( ( loader->load_flags & FT_LOAD_NO_SCALE ) == 0 )
1505 loader->pp1.x = FT_MulFix( loader->pp1.x, x_scale );
1506 loader->pp2.x = FT_MulFix( loader->pp2.x, x_scale );
1507 loader->pp3.y = FT_MulFix( loader->pp3.y, y_scale );
1508 loader->pp4.y = FT_MulFix( loader->pp4.y, y_scale );
1514 if ( loader->load_flags & FT_LOAD_NO_RECURSE )
1517 loader
1534 FT_Stream old_stream = loader->stream;
1535 FT_Int old_byte_len = loader->byte_len;
1552 pp[0] = loader->pp1;
1553 pp[1] = loader->pp2;
1554 pp[2] = loader->pp3;
1555 pp[3] = loader->pp4;
1559 error = load_truetype_glyph( loader, subglyph->index,
1569 loader->pp1 = pp[0];
1570 loader->pp2 = pp[1];
1571 loader->pp3 = pp[2];
1572 loader->pp4 = pp[3];
1586 TT_Process_Composite_Component( loader, subglyph, start_point,
1590 loader->stream = old_stream;
1591 loader->byte_len = old_byte_len;
1594 loader->ins_pos = ins_pos;
1595 if ( IS_HINTED( loader->load_flags ) &&
1604 TT_Process_Composite_Glyph( loader, start_point, start_contour );
1622 face->forget_glyph_frame( loader );
1638 compute_glyph_metrics( TT_Loader loader,
1642 TT_Face face = (TT_Face)loader->face;
1644 TT_GlyphSlot glyph = loader->glyph;
1645 TT_Size size = (TT_Size)loader->size;
1649 if ( ( loader->load_flags & FT_LOAD_NO_SCALE ) == 0 )
1655 bbox = loader->bbox;
1660 FT_Pos advance = loader->linear;
1669 ( loader->load_flags & FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH ) == 0 )
1679 glyph->metrics.horiAdvance = loader->pp2.x - loader->pp1.x;
1683 IS_HINTED( loader->load_flags ) )
1712 top = (FT_Short)FT_DivFix( loader->pp3.y - bbox.yMax,
1715 if ( loader->pp3.y <= loader->pp4.y )
1718 advance = (FT_UShort)FT_DivFix( loader->pp3.y - loader->pp4.y,
1782 if ( !( loader->load_flags & FT_LOAD_NO_SCALE ) )
1864 tt_loader_init( TT_Loader loader,
1877 FT_MEM_ZERO( loader, sizeof ( TT_LoaderRec ) );
1929 loader->exec = exec;
1930 loader->instructions = exec->glyphIns;
1942 loader->glyf_offset = 0;
1952 loader->glyf_offset = 0;
1959 loader->glyf_offset = FT_STREAM_POS();
1962 /* get face's glyph loader */
1965 FT_GlyphLoader gloader = glyph->internal->loader;
1969 loader->gloader = gloader;
1972 loader->load_flags = load_flags;
1974 loader->face = (FT_Face)face;
1975 loader->size = (FT_Size)size;
1976 loader->glyph = (FT_GlyphSlot)glyph;
1977 loader->stream = stream;
2018 TT_LoaderRec loader;
2042 (void)tt_loader_init( &loader, size, glyph, load_flags, TRUE );
2043 (void)load_truetype_glyph( &loader, glyph_index, 0, TRUE );
2044 glyph->linearHoriAdvance = loader.linear;
2045 glyph->linearVertAdvance = loader.top_bearing + loader.bbox.yMax -
2046 loader.vadvance;
2065 error = tt_loader_init( &loader, size, glyph, load_flags, FALSE );
2074 error = load_truetype_glyph( &loader, glyph_index, 0, FALSE );
2079 glyph->num_subglyphs = loader.gloader->base.num_subglyphs;
2080 glyph->subglyphs = loader.gloader->base.subglyphs;
2084 glyph->outline = loader.gloader->base.outline;
2091 if ( loader.pp1.x )
2092 FT_Outline_Translate( &glyph->outline, -loader.pp1.x, 0 );
2099 if ( loader.exec->GS.scan_control )
2102 switch ( loader.exec->GS.scan_type )
2129 compute_glyph_metrics( &loader, glyph_index );