Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. /*******************************************************************
  2.  *
  3.  *  tttables.h                                                  1.1
  4.  *
  5.  *    TrueType Tables structures and handling (specification).
  6.  *
  7.  *  Copyright 1996-1999 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. #ifndef TTTABLES_H
  19. #define TTTABLES_H
  20.  
  21. #include "ttconfig.h"
  22. #include "tttypes.h"
  23.  
  24. #ifdef __cplusplus
  25.   extern "C" {
  26. #endif
  27.  
  28.   /***********************************************************************/
  29.   /*                                                                     */
  30.   /*                      TrueType Table Types                           */
  31.   /*                                                                     */
  32.   /***********************************************************************/
  33.  
  34.   /* TrueType Collection Header */
  35.  
  36.   struct  TTTCHeader_
  37.   {
  38.     ULong     Tag;
  39.     TT_Fixed  version;
  40.     ULong     DirCount;
  41.     PULong    TableDirectory;
  42.   };
  43.  
  44.   typedef struct TTTCHeader_  TTTCHeader;
  45.   typedef TTTCHeader*         PTTCHeader;
  46.  
  47.  
  48.   /* TrueType Table Directory type */
  49.  
  50.   struct  TTableDir_
  51.   {
  52.     TT_Fixed  version;      /* should be 0x10000 */
  53.     UShort    numTables;    /* number of tables  */
  54.  
  55.     UShort  searchRange;    /* These parameters are only used  */
  56.     UShort  entrySelector;  /* for a dichotomy search in the   */
  57.     UShort  rangeShift;     /* directory. We ignore them.      */
  58.   };
  59.  
  60.   typedef struct TTableDir_  TTableDir;
  61.   typedef TTableDir*         PTableDir;
  62.  
  63.  
  64.   /* The 'TableDir' is followed by 'numTables' TableDirEntries */
  65.  
  66.   struct  TTableDirEntry_
  67.   {
  68.     ULong  Tag;        /*        table type */
  69.     ULong  CheckSum;   /*    table checksum */
  70.     ULong  Offset;     /* table file offset */
  71.     ULong  Length;     /*      table length */
  72.   };
  73.  
  74.   typedef struct TTableDirEntry_  TTableDirEntry;
  75.   typedef TTableDirEntry*         PTableDirEntry;
  76.  
  77.  
  78.   /* 'cmap' tables */
  79.  
  80.   struct  TCMapDir_
  81.   {
  82.     UShort  tableVersionNumber;
  83.     UShort  numCMaps;
  84.   };
  85.  
  86.   typedef struct TCMapDir_  TCMapDir;
  87.   typedef TCMapDir*         PCMapDir;
  88.  
  89.   struct  TCMapDirEntry_
  90.   {
  91.     UShort  platformID;
  92.     UShort  platformEncodingID;
  93.     Long    offset;
  94.   };
  95.  
  96.   typedef struct TCMapDirEntry_  TCMapDirEntry;
  97.   typedef TCMapDirEntry*         PCMapDirEntries;
  98.  
  99.  
  100.   /* 'maxp' Maximum Profiles table */
  101.  
  102.   struct  TMaxProfile_
  103.   {
  104.     TT_Fixed  version;
  105.     UShort    numGlyphs,
  106.               maxPoints,
  107.               maxContours,
  108.               maxCompositePoints,
  109.               maxCompositeContours,
  110.               maxZones,
  111.               maxTwilightPoints,
  112.               maxStorage,
  113.               maxFunctionDefs,
  114.               maxInstructionDefs,
  115.               maxStackElements,
  116.               maxSizeOfInstructions,
  117.               maxComponentElements,
  118.               maxComponentDepth;
  119.   };
  120.  
  121.   typedef struct TMaxProfile_  TMaxProfile;
  122.   typedef TMaxProfile*         PMaxProfile;
  123.  
  124.  
  125.   /* table "gasp" */
  126.  
  127. #define GASP_GRIDFIT  0x01
  128. #define GASP_DOGRAY   0x02
  129.  
  130.   struct  GaspRange_
  131.   {
  132.     UShort  maxPPEM;
  133.     UShort  gaspFlag;
  134.   };
  135.  
  136.   typedef struct GaspRange_  GaspRange;
  137.  
  138.  
  139.   struct  TGasp_
  140.   {
  141.     UShort      version;
  142.     UShort      numRanges;
  143.     GaspRange*  gaspRanges;
  144.   };
  145.  
  146.   typedef struct TGasp_  TGasp;
  147.  
  148.  
  149.   /* table "head" - now defined in freetype.h */
  150.   /* table "hhea" - now defined in freetype.h */
  151.  
  152.  
  153.   /* tables "HMTX" and "VMTX" */
  154.  
  155.   struct  TLongMetrics_
  156.   {
  157.     UShort  advance;
  158.     Short   bearing;
  159.   };
  160.  
  161.   typedef struct TLongMetrics_  TLongMetrics, *PLongMetrics;
  162.  
  163.   typedef Short  TShortMetrics, *PShortMetrics;
  164.  
  165.   /* 'loca' location table type */
  166.  
  167.   struct  TLoca_
  168.   {
  169.     UShort    Size;
  170.     PStorage  Table;
  171.   };
  172.  
  173.   typedef struct TLoca_  TLoca;
  174.  
  175.  
  176.   /* table "name" */
  177.  
  178.   struct  TNameRec_
  179.   {
  180.     UShort  platformID;
  181.     UShort  encodingID;
  182.     UShort  languageID;
  183.     UShort  nameID;
  184.     UShort  stringLength;
  185.     UShort  stringOffset;
  186.  
  187.     /* this last field is not defined in the spec */
  188.     /* but used by the FreeType engine            */
  189.  
  190.     PByte   string;
  191.   };
  192.  
  193.   typedef struct TNameRec_  TNameRec;
  194.  
  195.  
  196.   struct  TName_Table_
  197.   {
  198.     UShort     format;
  199.     UShort     numNameRecords;
  200.     UShort     storageOffset;
  201.     TNameRec*  names;
  202.     PByte      storage;
  203.   };
  204.  
  205.   typedef struct TName_Table_  TName_Table;
  206.  
  207.  
  208. #ifdef __cplusplus
  209.   }
  210. #endif
  211.  
  212. #endif /* TTTABLES_H */
  213.  
  214.  
  215. /* END */
  216.