| OLD | NEW |
| 1 /***************************************************************************/ | 1 /***************************************************************************/ |
| 2 /* */ | 2 /* */ |
| 3 /* cffdrivr.c */ | 3 /* cffdrivr.c */ |
| 4 /* */ | 4 /* */ |
| 5 /* OpenType font driver implementation (body). */ | 5 /* OpenType font driver implementation (body). */ |
| 6 /* */ | 6 /* */ |
| 7 /* Copyright 1996-2013 by */ | 7 /* Copyright 1996-2013 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 |
| 18 | 18 |
| 19 #include "../../include/ft2build.h" | 19 #include <ft2build.h> |
| 20 #include "../../include/freetype/freetype.h" | 20 #include FT_FREETYPE_H |
| 21 #include "../../include/freetype/internal/ftdebug.h" | 21 #include FT_INTERNAL_DEBUG_H |
| 22 #include "../../include/freetype/internal/ftstream.h" | 22 #include FT_INTERNAL_STREAM_H |
| 23 #include "../../include/freetype/internal/sfnt.h" | 23 #include FT_INTERNAL_SFNT_H |
| 24 #include "../../include/freetype/internal/services/svcid.h" | 24 #include FT_SERVICE_CID_H |
| 25 #include "../../include/freetype/internal/services/svpsinfo.h" | 25 #include FT_SERVICE_POSTSCRIPT_INFO_H |
| 26 #include "../../include/freetype/internal/services/svpostnm.h" | 26 #include FT_SERVICE_POSTSCRIPT_NAME_H |
| 27 #include "../../include/freetype/internal/services/svttcmap.h" | 27 #include FT_SERVICE_TT_CMAP_H |
| 28 | 28 |
| 29 #include "cffdrivr.h" | 29 #include "cffdrivr.h" |
| 30 #include "cffgload.h" | 30 #include "cffgload.h" |
| 31 #include "cffload.h" | 31 #include "cffload.h" |
| 32 #include "cffcmap.h" | 32 #include "cffcmap.h" |
| 33 #include "cffparse.h" | 33 #include "cffparse.h" |
| 34 | 34 |
| 35 #include "cfferrs.h" | 35 #include "cfferrs.h" |
| 36 #include "cffpic.h" | 36 #include "cffpic.h" |
| 37 | 37 |
| 38 #include "../../include/freetype/internal/services/svxf86nm.h" | 38 #include FT_SERVICE_XFREE86_NAME_H |
| 39 #include "../../include/freetype/internal/services/svgldict.h" | 39 #include FT_SERVICE_GLYPH_DICT_H |
| 40 #include "../../include/freetype/internal/services/svprop.h" | 40 #include FT_SERVICE_PROPERTIES_H |
| 41 #include "../../include/freetype/ftcffdrv.h" | 41 #include FT_CFF_DRIVER_H |
| 42 | |
| 43 | 42 |
| 44 | 43 |
| 45 /*************************************************************************/ | 44 /*************************************************************************/ |
| 46 /* */ | 45 /* */ |
| 47 /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ | 46 /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ |
| 48 /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ | 47 /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ |
| 49 /* messages during execution. */ | 48 /* messages during execution. */ |
| 50 /* */ | 49 /* */ |
| 51 #undef FT_COMPONENT | 50 #undef FT_COMPONENT |
| 52 #define FT_COMPONENT trace_cffdriver | 51 #define FT_COMPONENT trace_cffdriver |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 158 FT_Int32 load_flags ) | 157 FT_Int32 load_flags ) |
| 159 { | 158 { |
| 160 FT_Error error; | 159 FT_Error error; |
| 161 CFF_GlyphSlot slot = (CFF_GlyphSlot)cffslot; | 160 CFF_GlyphSlot slot = (CFF_GlyphSlot)cffslot; |
| 162 CFF_Size size = (CFF_Size)cffsize; | 161 CFF_Size size = (CFF_Size)cffsize; |
| 163 | 162 |
| 164 | 163 |
| 165 if ( !slot ) | 164 if ( !slot ) |
| 166 return FT_THROW( Invalid_Slot_Handle ); | 165 return FT_THROW( Invalid_Slot_Handle ); |
| 167 | 166 |
| 167 FT_TRACE1(( "cff_glyph_load: glyph index %d\n", glyph_index )); |
| 168 |
| 168 /* check whether we want a scaled outline or bitmap */ | 169 /* check whether we want a scaled outline or bitmap */ |
| 169 if ( !size ) | 170 if ( !size ) |
| 170 load_flags |= FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING; | 171 load_flags |= FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING; |
| 171 | 172 |
| 172 /* reset the size object if necessary */ | 173 /* reset the size object if necessary */ |
| 173 if ( load_flags & FT_LOAD_NO_SCALE ) | 174 if ( load_flags & FT_LOAD_NO_SCALE ) |
| 174 size = NULL; | 175 size = NULL; |
| 175 | 176 |
| 176 if ( size ) | 177 if ( size ) |
| 177 { | 178 { |
| (...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 580 */ | 581 */ |
| 581 static FT_Error | 582 static FT_Error |
| 582 cff_property_set( FT_Module module, /* CFF_Driver */ | 583 cff_property_set( FT_Module module, /* CFF_Driver */ |
| 583 const char* property_name, | 584 const char* property_name, |
| 584 const void* value ) | 585 const void* value ) |
| 585 { | 586 { |
| 586 FT_Error error = FT_Err_Ok; | 587 FT_Error error = FT_Err_Ok; |
| 587 CFF_Driver driver = (CFF_Driver)module; | 588 CFF_Driver driver = (CFF_Driver)module; |
| 588 | 589 |
| 589 | 590 |
| 590 if ( !ft_strcmp( property_name, "hinting-engine" ) ) | 591 if ( !ft_strcmp( property_name, "darkening-parameters" ) ) |
| 592 { |
| 593 FT_Int* darken_params = (FT_Int*)value; |
| 594 |
| 595 FT_Int x1 = darken_params[0]; |
| 596 FT_Int y1 = darken_params[1]; |
| 597 FT_Int x2 = darken_params[2]; |
| 598 FT_Int y2 = darken_params[3]; |
| 599 FT_Int x3 = darken_params[4]; |
| 600 FT_Int y3 = darken_params[5]; |
| 601 FT_Int x4 = darken_params[6]; |
| 602 FT_Int y4 = darken_params[7]; |
| 603 |
| 604 |
| 605 if ( x1 < 0 || x2 < 0 || x3 < 0 || x4 < 0 || |
| 606 y1 < 0 || y2 < 0 || y3 < 0 || y4 < 0 || |
| 607 x1 > x2 || x2 > x3 || x3 > x4 || |
| 608 y1 > 500 || y2 > 500 || y3 > 500 || y4 > 500 ) |
| 609 return FT_THROW( Invalid_Argument ); |
| 610 |
| 611 driver->darken_params[0] = x1; |
| 612 driver->darken_params[1] = y1; |
| 613 driver->darken_params[2] = x2; |
| 614 driver->darken_params[3] = y2; |
| 615 driver->darken_params[4] = x3; |
| 616 driver->darken_params[5] = y3; |
| 617 driver->darken_params[6] = x4; |
| 618 driver->darken_params[7] = y4; |
| 619 |
| 620 return error; |
| 621 } |
| 622 else if ( !ft_strcmp( property_name, "hinting-engine" ) ) |
| 591 { | 623 { |
| 592 FT_UInt* hinting_engine = (FT_UInt*)value; | 624 FT_UInt* hinting_engine = (FT_UInt*)value; |
| 593 | 625 |
| 594 | 626 |
| 595 #ifndef CFF_CONFIG_OPTION_OLD_ENGINE | 627 #ifndef CFF_CONFIG_OPTION_OLD_ENGINE |
| 596 if ( *hinting_engine != FT_CFF_HINTING_ADOBE ) | 628 if ( *hinting_engine != FT_CFF_HINTING_ADOBE ) |
| 597 error = FT_ERR( Unimplemented_Feature ); | 629 error = FT_ERR( Unimplemented_Feature ); |
| 598 else | 630 else |
| 599 #endif | 631 #endif |
| 600 driver->hinting_engine = *hinting_engine; | 632 driver->hinting_engine = *hinting_engine; |
| (...skipping 17 matching lines...) Expand all Loading... |
| 618 | 650 |
| 619 | 651 |
| 620 static FT_Error | 652 static FT_Error |
| 621 cff_property_get( FT_Module module, /* CFF_Driver */ | 653 cff_property_get( FT_Module module, /* CFF_Driver */ |
| 622 const char* property_name, | 654 const char* property_name, |
| 623 const void* value ) | 655 const void* value ) |
| 624 { | 656 { |
| 625 FT_Error error = FT_Err_Ok; | 657 FT_Error error = FT_Err_Ok; |
| 626 CFF_Driver driver = (CFF_Driver)module; | 658 CFF_Driver driver = (CFF_Driver)module; |
| 627 | 659 |
| 628 FT_UInt hinting_engine = driver->hinting_engine; | 660 |
| 629 FT_Bool no_stem_darkening = driver->no_stem_darkening; | 661 if ( !ft_strcmp( property_name, "darkening-parameters" ) ) |
| 662 { |
| 663 FT_Int* darken_params = driver->darken_params; |
| 664 FT_Int* val = (FT_Int*)value; |
| 630 | 665 |
| 631 | 666 |
| 632 if ( !ft_strcmp( property_name, "hinting-engine" ) ) | 667 val[0] = darken_params[0]; |
| 668 val[1] = darken_params[1]; |
| 669 val[2] = darken_params[2]; |
| 670 val[3] = darken_params[3]; |
| 671 val[4] = darken_params[4]; |
| 672 val[5] = darken_params[5]; |
| 673 val[6] = darken_params[6]; |
| 674 val[7] = darken_params[7]; |
| 675 |
| 676 return error; |
| 677 } |
| 678 else if ( !ft_strcmp( property_name, "hinting-engine" ) ) |
| 633 { | 679 { |
| 634 FT_UInt* val = (FT_UInt*)value; | 680 FT_UInt hinting_engine = driver->hinting_engine; |
| 681 FT_UInt* val = (FT_UInt*)value; |
| 635 | 682 |
| 636 | 683 |
| 637 *val = hinting_engine; | 684 *val = hinting_engine; |
| 638 | 685 |
| 639 return error; | 686 return error; |
| 640 } | 687 } |
| 641 else if ( !ft_strcmp( property_name, "no-stem-darkening" ) ) | 688 else if ( !ft_strcmp( property_name, "no-stem-darkening" ) ) |
| 642 { | 689 { |
| 643 FT_Bool* val = (FT_Bool*)value; | 690 FT_Bool no_stem_darkening = driver->no_stem_darkening; |
| 691 FT_Bool* val = (FT_Bool*)value; |
| 644 | 692 |
| 645 | 693 |
| 646 *val = no_stem_darkening; | 694 *val = no_stem_darkening; |
| 647 | 695 |
| 648 return error; | 696 return error; |
| 649 } | 697 } |
| 650 | 698 |
| 651 FT_TRACE0(( "cff_property_get: missing property `%s'\n", | 699 FT_TRACE0(( "cff_property_get: missing property `%s'\n", |
| 652 property_name )); | 700 property_name )); |
| 653 return FT_THROW( Missing_Property ); | 701 return FT_THROW( Missing_Property ); |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 778 0, /* FT_Face_AttachFunc */ | 826 0, /* FT_Face_AttachFunc */ |
| 779 cff_get_advances, | 827 cff_get_advances, |
| 780 | 828 |
| 781 cff_size_request, | 829 cff_size_request, |
| 782 | 830 |
| 783 CFF_SIZE_SELECT | 831 CFF_SIZE_SELECT |
| 784 ) | 832 ) |
| 785 | 833 |
| 786 | 834 |
| 787 /* END */ | 835 /* END */ |
| OLD | NEW |