1 /***************************************************************************/ |
|
2 /* */ |
|
3 /* ftotval.c */ |
|
4 /* */ |
|
5 /* FreeType API for validating OpenType tables (body). */ |
|
6 /* */ |
|
7 /* Copyright 2004, 2006, 2008, 2010 by */ |
|
8 /* David Turner, Robert Wilhelm, and Werner Lemberg. */ |
|
9 /* */ |
|
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 */ |
|
12 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ |
|
13 /* this file you indicate that you have read the license and */ |
|
14 /* understand and accept it fully. */ |
|
15 /* */ |
|
16 /***************************************************************************/ |
|
17 |
|
18 #include <ft2build.h> |
|
19 #include FT_INTERNAL_OBJECTS_H |
|
20 #include FT_SERVICE_OPENTYPE_VALIDATE_H |
|
21 #include FT_OPENTYPE_VALIDATE_H |
|
22 |
|
23 |
|
24 /* documentation is in ftotval.h */ |
|
25 |
|
26 FT_EXPORT_DEF( FT_Error ) |
|
27 FT_OpenType_Validate( FT_Face face, |
|
28 FT_UInt validation_flags, |
|
29 FT_Bytes *BASE_table, |
|
30 FT_Bytes *GDEF_table, |
|
31 FT_Bytes *GPOS_table, |
|
32 FT_Bytes *GSUB_table, |
|
33 FT_Bytes *JSTF_table ) |
|
34 { |
|
35 FT_Service_OTvalidate service; |
|
36 FT_Error error; |
|
37 |
|
38 |
|
39 if ( !face ) |
|
40 { |
|
41 error = FT_Err_Invalid_Face_Handle; |
|
42 goto Exit; |
|
43 } |
|
44 |
|
45 if ( !( BASE_table && |
|
46 GDEF_table && |
|
47 GPOS_table && |
|
48 GSUB_table && |
|
49 JSTF_table ) ) |
|
50 { |
|
51 error = FT_Err_Invalid_Argument; |
|
52 goto Exit; |
|
53 } |
|
54 |
|
55 FT_FACE_FIND_GLOBAL_SERVICE( face, service, OPENTYPE_VALIDATE ); |
|
56 |
|
57 if ( service ) |
|
58 error = service->validate( face, |
|
59 validation_flags, |
|
60 BASE_table, |
|
61 GDEF_table, |
|
62 GPOS_table, |
|
63 GSUB_table, |
|
64 JSTF_table ); |
|
65 else |
|
66 error = FT_Err_Unimplemented_Feature; |
|
67 |
|
68 Exit: |
|
69 return error; |
|
70 } |
|
71 |
|
72 |
|
73 FT_EXPORT_DEF( void ) |
|
74 FT_OpenType_Free( FT_Face face, |
|
75 FT_Bytes table ) |
|
76 { |
|
77 FT_Memory memory; |
|
78 |
|
79 |
|
80 if ( !face ) |
|
81 return; |
|
82 |
|
83 memory = FT_FACE_MEMORY( face ); |
|
84 |
|
85 FT_FREE( table ); |
|
86 } |
|
87 |
|
88 |
|
89 /* END */ |
|