342 {
346
349
352
353
355
358
363
366 {
369 }
372
373
375
376
377
378
379
380
381
382 if ( face_index > 0 && ( face_index & 0xFFFF ) > 0 )
383 {
384 FT_ERROR((
"BDF_Face_Init: invalid face index\n" ));
386 return FT_THROW( Invalid_Argument );
387 }
388
389 {
391
392
393 FT_TRACE4((
" number of glyphs: allocated %d (used %d)\n",
395 font->glyphs_used ));
396 FT_TRACE4((
" number of unencoded glyphs: allocated %d (used %d)\n",
397 font->unencoded_size,
398 font->unencoded_used ));
399
402
406
413
414
415
416
419 {
422 }
423 else
425
428
429
430
432
436
437 {
439 FT_Short resolution_x = 0, resolution_y = 0;
441
442
444
445
446 if (
font->font_ascent > 0x7FFF ||
font->font_ascent < -0x7FFF )
447 {
448 font->font_ascent =
font->font_ascent < 0 ? -0x7FFF : 0x7FFF;
449 FT_TRACE0((
"BDF_Face_Init: clamping font ascent to value %d\n",
450 font->font_ascent ));
451 }
452 if (
font->font_descent > 0x7FFF ||
font->font_descent < -0x7FFF )
453 {
454 font->font_descent =
font->font_descent < 0 ? -0x7FFF : 0x7FFF;
455 FT_TRACE0((
"BDF_Face_Init: clamping font descent to value %d\n",
456 font->font_descent ));
457 }
458
460
462 if ( prop )
463 {
464#ifdef FT_DEBUG_LEVEL_TRACE
466 FT_TRACE0((
"BDF_Face_Init: negative average width\n" ));
467#endif
468 if ( prop->
value.
l > 0x7FFFL * 10 - 5 ||
469 prop->
value.
l < -( 0x7FFFL * 10 - 5 ) )
470 {
471 bsize->
width = 0x7FFF;
472 FT_TRACE0((
"BDF_Face_Init: clamping average width to value %d\n",
474 }
475 else
477 }
478 else
479 {
480
482 }
483
485 if ( prop )
486 {
487#ifdef FT_DEBUG_LEVEL_TRACE
489 FT_TRACE0((
"BDF_Face_Init: negative point size\n" ));
490#endif
491
492 if ( prop->
value.
l > 0x504C2L ||
493 prop->
value.
l < -0x504C2L )
494 {
495 bsize->
size = 0x7FFF;
496 FT_TRACE0((
"BDF_Face_Init: clamping point size to value %d\n",
498 }
499 else
501 64 * 7200,
502 72270L );
503 }
504 else if (
font->point_size )
505 {
506 if (
font->point_size > 0x7FFF )
507 {
508 bsize->
size = 0x7FFF;
509 FT_TRACE0((
"BDF_Face_Init: clamping point size to value %d\n",
511 }
512 else
514 }
515 else
516 {
517
519 }
520
522 if ( prop )
523 {
524#ifdef FT_DEBUG_LEVEL_TRACE
526 FT_TRACE0((
"BDF_Face_Init: negative pixel size\n" ));
527#endif
528 if ( prop->
value.
l > 0x7FFF || prop->
value.
l < -0x7FFF )
529 {
530 bsize->
y_ppem = 0x7FFF << 6;
531 FT_TRACE0((
"BDF_Face_Init: clamping pixel size to value %d\n",
533 }
534 else
536 }
537
539 if ( prop )
541 else
544 {
545#ifdef FT_DEBUG_LEVEL_TRACE
547 FT_TRACE0((
"BDF_Face_Init: negative X resolution\n" ));
548#endif
550 {
551 resolution_x = 0x7FFF;
552 FT_TRACE0((
"BDF_Face_Init: clamping X resolution to value %d\n",
553 resolution_x ));
554 }
555 else
557 }
558
560 if ( prop )
562 else
565 {
566#ifdef FT_DEBUG_LEVEL_TRACE
568 FT_TRACE0((
"BDF_Face_Init: negative Y resolution\n" ));
569#endif
571 {
572 resolution_y = 0x7FFF;
573 FT_TRACE0((
"BDF_Face_Init: clamping Y resolution to value %d\n",
574 resolution_y ));
575 }
576 else
578 }
579
581 {
583 if ( resolution_y )
585 }
586 if ( resolution_x && resolution_y )
588 resolution_x,
589 resolution_y );
590 else
592 }
593
594
595 {
598
599
602
603 face->default_glyph = 0;
604 for (
n = 0;
n <
font->glyphs_size;
n++ )
605 {
609
611 {
614 else
616 " idx %d is too large for this system\n",
n ));
617 }
618 }
619 }
620
621
622 {
625
626
627 charset_registry =
629 charset_encoding =
631 if ( charset_registry && charset_encoding )
632 {
637 {
639
640
646
647
648
649 s =
face->charset_registry;
650 if ( (
s[0] ==
'i' ||
s[0] ==
'I' ) &&
651 (
s[1] ==
's' ||
s[1] ==
'S' ) &&
652 (
s[2] ==
'o' ||
s[2] ==
'O' ) )
653 {
658 unicode_charmap = 1;
659
662 unicode_charmap = 1;
663 }
664
665 {
667
668
670 charmap.
encoding = FT_ENCODING_NONE;
671
674
675 if ( unicode_charmap )
676 {
677 charmap.
encoding = FT_ENCODING_UNICODE;
680 }
681
683 }
684
686 }
687 }
688
689
690
691 {
693
694
696 charmap.
encoding = FT_ENCODING_ADOBE_STANDARD;
699
701
702
705 }
706 }
707 }
708
711
714 return FT_THROW( Unknown_File_Format );
715 }
bdf_get_font_property(bdf_font_t *font, const char *name)
bdf_load_font(FT_Stream stream, FT_Memory memory, bdf_options_t *opts, bdf_font_t **font)
BDF_Face_Done(FT_Face bdfface)
static FT_Error bdf_interpret_style(BDF_Face bdf)
static const FT_CMap_ClassRec bdf_cmap_class
#define TT_MS_ID_UNICODE_CS
#define TT_PLATFORM_MICROSOFT
#define TT_APPLE_ID_DEFAULT
#define TT_PLATFORM_APPLE_UNICODE
#define FT_FACE_FLAG_FIXED_SIZES
#define FT_FACE_FLAG_FIXED_WIDTH
#define FT_FACE_FLAG_FAST_GLYPHS
#define FT_FACE_FLAG_HORIZONTAL
FT_MulDiv(FT_Long a, FT_Long b, FT_Long c)
#define FT_TRACE0(varformat)
#define FT_ERROR(varformat)
#define FT_TRACE2(varformat)
#define FT_TRACE4(varformat)
FT_BEGIN_HEADER typedef signed long FT_Pos
#define FT_NEW_ARRAY(ptr, count)
#define FT_STRDUP(dst, str)
#define FT_SET_ERROR(expression)
FT_CMap_New(FT_CMap_Class clazz, FT_Pointer init_data, FT_CharMap charmap, FT_CMap *acmap)
#define FT_STREAM_SEEK(position)
FT_BEGIN_HEADER typedef unsigned char FT_Bool
GLenum const GLfloat * params
union bdf_property_t_::@4272 value
#define TT_ADOBE_ID_STANDARD
#define TT_PLATFORM_ADOBE