~ubuntu-branches/ubuntu/vivid/emscripten/vivid

« back to all changes in this revision

Viewing changes to tests/freetype/src/base/ftsnames.c

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2013-05-02 13:11:51 UTC
  • Revision ID: package-import@ubuntu.com-20130502131151-q8dvteqr1ef2x7xz
Tags: upstream-1.4.1~20130504~adb56cb
ImportĀ upstreamĀ versionĀ 1.4.1~20130504~adb56cb

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/***************************************************************************/
 
2
/*                                                                         */
 
3
/*  ftsnames.c                                                             */
 
4
/*                                                                         */
 
5
/*    Simple interface to access SFNT name tables (which are used          */
 
6
/*    to hold font names, copyright info, notices, etc.) (body).           */
 
7
/*                                                                         */
 
8
/*    This is _not_ used to retrieve glyph names!                          */
 
9
/*                                                                         */
 
10
/*  Copyright 1996-2001, 2002, 2009 by                                     */
 
11
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 
12
/*                                                                         */
 
13
/*  This file is part of the FreeType project, and may only be used,       */
 
14
/*  modified, and distributed under the terms of the FreeType project      */
 
15
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 
16
/*  this file you indicate that you have read the license and              */
 
17
/*  understand and accept it fully.                                        */
 
18
/*                                                                         */
 
19
/***************************************************************************/
 
20
 
 
21
 
 
22
#include <ft2build.h>
 
23
#include FT_SFNT_NAMES_H
 
24
#include FT_INTERNAL_TRUETYPE_TYPES_H
 
25
#include FT_INTERNAL_STREAM_H
 
26
 
 
27
 
 
28
#ifdef TT_CONFIG_OPTION_SFNT_NAMES
 
29
 
 
30
 
 
31
  /* documentation is in ftsnames.h */
 
32
 
 
33
  FT_EXPORT_DEF( FT_UInt )
 
34
  FT_Get_Sfnt_Name_Count( FT_Face  face )
 
35
  {
 
36
    return ( face && FT_IS_SFNT( face ) ) ? ((TT_Face)face)->num_names : 0;
 
37
  }
 
38
 
 
39
 
 
40
  /* documentation is in ftsnames.h */
 
41
 
 
42
  FT_EXPORT_DEF( FT_Error )
 
43
  FT_Get_Sfnt_Name( FT_Face       face,
 
44
                    FT_UInt       idx,
 
45
                    FT_SfntName  *aname )
 
46
  {
 
47
    FT_Error  error = FT_Err_Invalid_Argument;
 
48
 
 
49
 
 
50
    if ( aname && face && FT_IS_SFNT( face ) )
 
51
    {
 
52
      TT_Face  ttface = (TT_Face)face;
 
53
 
 
54
 
 
55
      if ( idx < (FT_UInt)ttface->num_names )
 
56
      {
 
57
        TT_NameEntryRec*  entry = ttface->name_table.names + idx;
 
58
 
 
59
 
 
60
        /* load name on demand */
 
61
        if ( entry->stringLength > 0 && entry->string == NULL )
 
62
        {
 
63
          FT_Memory  memory = face->memory;
 
64
          FT_Stream  stream = face->stream;
 
65
 
 
66
 
 
67
          if ( FT_NEW_ARRAY  ( entry->string, entry->stringLength ) ||
 
68
               FT_STREAM_SEEK( entry->stringOffset )                ||
 
69
               FT_STREAM_READ( entry->string, entry->stringLength ) )
 
70
          {
 
71
            FT_FREE( entry->string );
 
72
            entry->stringLength = 0;
 
73
          }
 
74
        }
 
75
 
 
76
        aname->platform_id = entry->platformID;
 
77
        aname->encoding_id = entry->encodingID;
 
78
        aname->language_id = entry->languageID;
 
79
        aname->name_id     = entry->nameID;
 
80
        aname->string      = (FT_Byte*)entry->string;
 
81
        aname->string_len  = entry->stringLength;
 
82
 
 
83
        error = FT_Err_Ok;
 
84
      }
 
85
    }
 
86
 
 
87
    return error;
 
88
  }
 
89
 
 
90
 
 
91
#endif /* TT_CONFIG_OPTION_SFNT_NAMES */
 
92
 
 
93
 
 
94
/* END */