198 {
203 FT_Bool hinting, scaled, force_scaling;
205
208
211
212
213 force_scaling =
FALSE;
214
215
216
217
220 {
221
222 if ( glyph_index != 0 )
223 {
225 glyph_index );
226 if ( glyph_index == 0 )
227 return FT_THROW( Invalid_Argument );
228 }
229 }
231 return FT_THROW( Invalid_Argument );
232
235
239 {
242 }
243
244#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
245
246
247
248
249
251 {
255
256
257 if (
size->strike_index != 0xFFFFFFFFUL &&
260 {
262
263
266 glyph_index,
271
273 {
277
278
281
284
288
292
294
296 {
299 }
300 else
301 {
304 }
305
306
307
309 glyph_index,
313
315 face->vertical_info &&
316 face->vertical.number_Of_VMetrics > 0 );
317
318
319 if ( has_vertical_info )
320 {
322 glyph_index,
326 }
327 else
328 {
329
330 if (
face->os2.version != 0xFFFFU )
332 (
face->os2.sTypoAscender -
face->os2.sTypoDescender );
333 else
335 (
face->horizontal.Ascender -
face->horizontal.Descender );
336 }
337
339 }
340 }
341 }
342
343#endif
344
345
347 return FT_THROW( Invalid_Argument );
348
349
350
351
352
354 {
357 glyph_index );
358
359
362
365
368
369 if ( top_upm != sub_upm )
370 {
373
374 force_scaling =
TRUE;
375 }
376 }
377 else
378 {
381 }
382
385
386
387
390
391 glyph->
hint = hinting;
394
395 {
396#ifdef CFF_CONFIG_OPTION_OLD_ENGINE
398#endif
399
402
403
408
409
412
415
416
418 &charstring, &charstring_len );
420 goto Glyph_Build_Finished;
421
424 goto Glyph_Build_Finished;
425
426#ifdef CFF_CONFIG_OPTION_OLD_ENGINE
427
430 charstring,
431 charstring_len,
432 0 );
433 else
434#endif
435 {
437
439 charstring,
440 charstring_len );
441
442
443
445 {
446
447
448
450 force_scaling =
TRUE;
451 glyph->
hint = hinting;
452
454 charstring,
455 charstring_len );
456 }
457 }
458
460
462 goto Glyph_Build_Finished;
463
464#ifdef FT_CONFIG_OPTION_INCREMENTAL
465
466
467 if (
face->root.internal->incremental_interface )
468 {
471 }
472 else
473#endif
474
475
476
477
478 {
480
481
482 if ( csindex->offsets )
483 {
485 csindex->offsets[glyph_index] - 1;
487 }
488 }
489
490 Glyph_Build_Finished:
491
494
495 }
496
497#ifdef FT_CONFIG_OPTION_INCREMENTAL
498
499
501 face->root.internal->incremental_interface &&
502 face->root.internal->incremental_interface->funcs->get_glyph_metrics )
503 {
505
506
511
512 error =
face->root.internal->incremental_interface->funcs->get_glyph_metrics(
513 face->root.internal->incremental_interface->object,
515
519 }
520
521#endif
522
524 {
525
526
527
528
529
530
532 {
534
535
538 internal->glyph_matrix = font_matrix;
539 internal->glyph_delta = font_offset;
541 }
542 else
543 {
547
548
549 if (
face->horizontal.number_Of_HMetrics )
550 {
553
554
556 glyph_index,
557 &horiBearingX,
558 &horiAdvance );
559 metrics->horiAdvance = horiAdvance;
560 metrics->horiBearingX = horiBearingX;
562 }
563 else
564 {
565
568 }
569
571
572 has_vertical_info =
FT_BOOL(
face->vertical_info &&
573 face->vertical.number_Of_VMetrics > 0 );
574
575
576 if ( has_vertical_info )
577 {
580
581
583 glyph_index,
584 &vertBearingY,
585 &vertAdvance );
586 metrics->vertBearingY = vertBearingY;
587 metrics->vertAdvance = vertAdvance;
588 }
589 else
590 {
591
592 if (
face->os2.version != 0xFFFFU )
594 face->os2.sTypoDescender );
595 else
597 face->horizontal.Descender );
598 }
599
601
603
605 if (
size &&
size->root.metrics.y_ppem < 24 )
607
609
610
611 if ( font_matrix.xx != 0x10000L || font_matrix.yy != 0x10000L ||
612 font_matrix.xy != 0 || font_matrix.yx != 0 )
613 {
615
617 font_matrix.xx );
619 font_matrix.yy );
620 }
621
622 if ( font_offset.x || font_offset.y )
623 {
625 font_offset.x,
626 font_offset.y );
627
628 metrics->horiAdvance += font_offset.x;
629 metrics->vertAdvance += font_offset.y;
630 }
631
633 {
634
640
641
642
643 if ( !hinting || !
decoder.builder.hints_funcs )
644 for (
n =
cur->n_points;
n > 0;
n--,
vec++ )
645 {
648 }
649
650
653 }
654
655
657
660
663
664 if ( has_vertical_info )
665 {
670 }
671 else
672 {
676 }
677 }
678 }
679
681 }
ios_base &_STLP_CALL internal(ios_base &__s)
_STLP_MOVE_TO_STD_NAMESPACE void _STLP_CALL advance(_InputIterator &__i, _Distance __n)
cff_get_glyph_data(TT_Face face, FT_UInt glyph_index, FT_Byte **pointer, FT_ULong *length)
cff_free_glyph_data(TT_Face face, FT_Byte **pointer, FT_ULong length)
cff_charset_cid_to_gindex(CFF_Charset charset, FT_UInt cid)
cff_fd_select_get(CFF_FDSelect fdselect, FT_UInt glyph_index)
FT_BEGIN_HEADER typedef TT_Face CFF_Face
FT_BEGIN_HEADER struct CFF_IndexRec_ * CFF_Index
#define FT_LOAD_VERTICAL_LAYOUT
#define FT_LOAD_TARGET_MODE(x)
FT_BEGIN_HEADER struct FT_Glyph_Metrics_ FT_Glyph_Metrics
#define FT_LOAD_SBITS_ONLY
#define FT_LOAD_NO_BITMAP
#define FT_LOAD_NO_RECURSE
#define FT_LOAD_ADVANCE_ONLY
#define FT_LOAD_NO_HINTING
FT_MulDiv(FT_Long a, FT_Long b, FT_Long c)
FT_MulFix(FT_Long a, FT_Long b)
#define FT_HINTING_FREETYPE
#define FT_OUTLINE_HIGH_PRECISION
#define FT_OUTLINE_REVERSE_FILL
FT_BEGIN_HEADER typedef signed long FT_Pos
ft_synthesize_vertical_metrics(FT_Glyph_Metrics *metrics, FT_Pos advance)
#define FT_FACE_DRIVER(x)
FT_Outline_Translate(const FT_Outline *outline, FT_Pos xOffset, FT_Pos yOffset)
FT_Outline_Transform(const FT_Outline *outline, const FT_Matrix *matrix)
FT_Outline_Get_CBox(const FT_Outline *outline, FT_BBox *acbox)
FT_BEGIN_HEADER typedef unsigned char FT_Bool
GLsizei GLenum const GLvoid GLuint GLsizei GLfloat * metrics
struct @1789::@1790 driver
FT_BEGIN_HEADER struct PS_DriverRec_ * PS_Driver
struct PSAux_ServiceRec_ * PSAux_Service
SFNT_Interface * SFNT_Service
CFF_SubFont subfonts[CFF_MAX_CID_FONTS]
CFF_FDSelectRec fd_select
CFF_FontRecDictRec font_dict
FT_Slot_Internal internal
FT_Fixed linearHoriAdvance
FT_Fixed linearVertAdvance
FT_Bool glyph_transformed
void(* ps_decoder_init)(PS_Decoder *ps_decoder, void *decoder, FT_Bool is_t1)
const CFF_Decoder_FuncsRec * cff_decoder_funcs
TT_Load_Table_Func load_eblc
TT_Load_SBit_Image_Func load_sbit_image
struct TT_FaceRec_ * TT_Face