misc/libfreetype/src/psnames/psmodule.c
author belphegorr <szabibibi@gmail.com>
Mon, 23 Jul 2012 19:15:59 +0300
changeset 7263 644eabbc9218
parent 5172 88f2e05288ba
permissions -rw-r--r--
Added a new function: AddNewEvent, which only adds an event to the list if it doesn't already exist. Kept the old one as it might me useful to be able to add an event more than once.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5172
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
     1
/***************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
     2
/*                                                                         */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
     3
/*  psmodule.c                                                             */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
     4
/*                                                                         */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
     5
/*    PSNames module implementation (body).                                */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
     6
/*                                                                         */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
     7
/*  Copyright 1996-2001, 2002, 2003, 2005, 2006, 2007, 2008 by             */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
     8
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
     9
/*                                                                         */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    10
/*  This file is part of the FreeType project, and may only be used,       */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    11
/*  modified, and distributed under the terms of the FreeType project      */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    12
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    13
/*  this file you indicate that you have read the license and              */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    14
/*  understand and accept it fully.                                        */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    15
/*                                                                         */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    16
/***************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    17
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    18
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    19
#include <ft2build.h>
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    20
#include FT_INTERNAL_OBJECTS_H
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    21
#include FT_SERVICE_POSTSCRIPT_CMAPS_H
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    22
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    23
#include "psmodule.h"
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    24
#include "pstables.h"
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    25
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    26
#include "psnamerr.h"
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    27
#include "pspic.h"
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    28
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    29
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    30
#ifdef FT_CONFIG_OPTION_POSTSCRIPT_NAMES
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    31
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    32
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    33
#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    34
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    35
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    36
#define VARIANT_BIT         0x80000000UL
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    37
#define BASE_GLYPH( code )  ( (FT_UInt32)( (code) & ~VARIANT_BIT ) )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    38
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    39
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    40
  /* Return the Unicode value corresponding to a given glyph.  Note that */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    41
  /* we do deal with glyph variants by detecting a non-initial dot in    */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    42
  /* the name, as in `A.swash' or `e.final'; in this case, the           */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    43
  /* VARIANT_BIT is set in the return value.                             */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    44
  /*                                                                     */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    45
  static FT_UInt32
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    46
  ps_unicode_value( const char*  glyph_name )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    47
  {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    48
    /* If the name begins with `uni', then the glyph name may be a */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    49
    /* hard-coded unicode character code.                          */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    50
    if ( glyph_name[0] == 'u' &&
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    51
         glyph_name[1] == 'n' &&
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    52
         glyph_name[2] == 'i' )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    53
    {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    54
      /* determine whether the next four characters following are */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    55
      /* hexadecimal.                                             */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    56
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    57
      /* XXX: Add code to deal with ligatures, i.e. glyph names like */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    58
      /*      `uniXXXXYYYYZZZZ'...                                   */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    59
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    60
      FT_Int       count;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    61
      FT_UInt32    value = 0;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    62
      const char*  p     = glyph_name + 3;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    63
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    64
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    65
      for ( count = 4; count > 0; count--, p++ )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    66
      {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    67
        char          c = *p;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    68
        unsigned int  d;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    69
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    70
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    71
        d = (unsigned char)c - '0';
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    72
        if ( d >= 10 )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    73
        {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    74
          d = (unsigned char)c - 'A';
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    75
          if ( d >= 6 )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    76
            d = 16;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    77
          else
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    78
            d += 10;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    79
        }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    80
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    81
        /* Exit if a non-uppercase hexadecimal character was found   */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    82
        /* -- this also catches character codes below `0' since such */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    83
        /* negative numbers cast to `unsigned int' are far too big.  */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    84
        if ( d >= 16 )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    85
          break;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    86
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    87
        value = ( value << 4 ) + d;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    88
      }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    89
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    90
      /* there must be exactly four hex digits */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    91
      if ( count == 0 )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    92
      {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    93
        if ( *p == '\0' )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    94
          return value;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    95
        if ( *p == '.' )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    96
          return (FT_UInt32)( value | VARIANT_BIT );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    97
      }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    98
    }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    99
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   100
    /* If the name begins with `u', followed by four to six uppercase */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   101
    /* hexadecimal digits, it is a hard-coded unicode character code. */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   102
    if ( glyph_name[0] == 'u' )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   103
    {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   104
      FT_Int       count;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   105
      FT_UInt32    value = 0;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   106
      const char*  p     = glyph_name + 1;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   107
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   108
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   109
      for ( count = 6; count > 0; count--, p++ )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   110
      {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   111
        char          c = *p;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   112
        unsigned int  d;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   113
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   114
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   115
        d = (unsigned char)c - '0';
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   116
        if ( d >= 10 )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   117
        {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   118
          d = (unsigned char)c - 'A';
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   119
          if ( d >= 6 )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   120
            d = 16;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   121
          else
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   122
            d += 10;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   123
        }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   124
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   125
        if ( d >= 16 )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   126
          break;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   127
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   128
        value = ( value << 4 ) + d;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   129
      }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   130
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   131
      if ( count <= 2 )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   132
      {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   133
        if ( *p == '\0' )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   134
          return value;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   135
        if ( *p == '.' )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   136
          return (FT_UInt32)( value | VARIANT_BIT );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   137
      }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   138
    }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   139
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   140
    /* Look for a non-initial dot in the glyph name in order to */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   141
    /* find variants like `A.swash', `e.final', etc.            */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   142
    {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   143
      const char*  p   = glyph_name;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   144
      const char*  dot = NULL;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   145
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   146
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   147
      for ( ; *p; p++ )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   148
      {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   149
        if ( *p == '.' && p > glyph_name )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   150
        {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   151
          dot = p;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   152
          break;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   153
        }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   154
      }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   155
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   156
      /* now look up the glyph in the Adobe Glyph List */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   157
      if ( !dot )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   158
        return (FT_UInt32)ft_get_adobe_glyph_index( glyph_name, p );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   159
      else
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   160
        return (FT_UInt32)( ft_get_adobe_glyph_index( glyph_name, dot ) |
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   161
                            VARIANT_BIT );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   162
    }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   163
  }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   164
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   165
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   166
  /* ft_qsort callback to sort the unicode map */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   167
  FT_CALLBACK_DEF( int )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   168
  compare_uni_maps( const void*  a,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   169
                    const void*  b )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   170
  {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   171
    PS_UniMap*  map1 = (PS_UniMap*)a;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   172
    PS_UniMap*  map2 = (PS_UniMap*)b;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   173
    FT_UInt32   unicode1 = BASE_GLYPH( map1->unicode );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   174
    FT_UInt32   unicode2 = BASE_GLYPH( map2->unicode );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   175
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   176
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   177
    /* sort base glyphs before glyph variants */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   178
    if ( unicode1 == unicode2 )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   179
    {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   180
      if ( map1->unicode > map2->unicode )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   181
        return 1;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   182
      else if ( map1->unicode < map2->unicode )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   183
        return -1;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   184
      else
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   185
        return 0;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   186
    }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   187
    else
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   188
    {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   189
      if ( unicode1 > unicode2 )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   190
        return 1;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   191
      else if ( unicode1 < unicode2 )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   192
        return -1;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   193
      else
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   194
        return 0;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   195
    }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   196
  }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   197
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   198
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   199
  /* support for extra glyphs not handled (well) in AGL; */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   200
  /* we add extra mappings for them if necessary         */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   201
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   202
#define EXTRA_GLYPH_LIST_SIZE  10
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   203
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   204
  static const FT_UInt32  ft_extra_glyph_unicodes[EXTRA_GLYPH_LIST_SIZE] =
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   205
  {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   206
    /* WGL 4 */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   207
    0x0394,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   208
    0x03A9,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   209
    0x2215,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   210
    0x00AD,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   211
    0x02C9,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   212
    0x03BC,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   213
    0x2219,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   214
    0x00A0,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   215
    /* Romanian */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   216
    0x021A,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   217
    0x021B
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   218
  };
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   219
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   220
  static const char  ft_extra_glyph_names[] =
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   221
  {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   222
    'D','e','l','t','a',0,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   223
    'O','m','e','g','a',0,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   224
    'f','r','a','c','t','i','o','n',0,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   225
    'h','y','p','h','e','n',0,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   226
    'm','a','c','r','o','n',0,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   227
    'm','u',0,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   228
    'p','e','r','i','o','d','c','e','n','t','e','r','e','d',0,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   229
    's','p','a','c','e',0,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   230
    'T','c','o','m','m','a','a','c','c','e','n','t',0,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   231
    't','c','o','m','m','a','a','c','c','e','n','t',0
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   232
  };
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   233
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   234
  static const FT_Int
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   235
  ft_extra_glyph_name_offsets[EXTRA_GLYPH_LIST_SIZE] =
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   236
  {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   237
     0,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   238
     6,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   239
    12,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   240
    21,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   241
    28,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   242
    35,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   243
    38,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   244
    53,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   245
    59,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   246
    72
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   247
  };
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   248
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   249
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   250
  static void
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   251
  ps_check_extra_glyph_name( const char*  gname,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   252
                             FT_UInt      glyph,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   253
                             FT_UInt*     extra_glyphs,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   254
                             FT_UInt     *states )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   255
  {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   256
    FT_UInt  n;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   257
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   258
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   259
    for ( n = 0; n < EXTRA_GLYPH_LIST_SIZE; n++ )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   260
    {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   261
      if ( ft_strcmp( ft_extra_glyph_names +
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   262
                        ft_extra_glyph_name_offsets[n], gname ) == 0 )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   263
      {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   264
        if ( states[n] == 0 )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   265
        {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   266
          /* mark this extra glyph as a candidate for the cmap */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   267
          states[n]     = 1;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   268
          extra_glyphs[n] = glyph;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   269
        }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   270
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   271
        return;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   272
      }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   273
    }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   274
  }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   275
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   276
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   277
  static void
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   278
  ps_check_extra_glyph_unicode( FT_UInt32  uni_char,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   279
                                FT_UInt   *states )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   280
  {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   281
    FT_UInt  n;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   282
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   283
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   284
    for ( n = 0; n < EXTRA_GLYPH_LIST_SIZE; n++ )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   285
    {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   286
      if ( uni_char == ft_extra_glyph_unicodes[n] )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   287
      {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   288
        /* disable this extra glyph from being added to the cmap */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   289
        states[n] = 2;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   290
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   291
        return;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   292
      }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   293
    }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   294
  }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   295
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   296
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   297
  /* Build a table that maps Unicode values to glyph indices. */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   298
  static FT_Error
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   299
  ps_unicodes_init( FT_Memory             memory,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   300
                    PS_Unicodes           table,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   301
                    FT_UInt               num_glyphs,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   302
                    PS_GetGlyphNameFunc   get_glyph_name,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   303
                    PS_FreeGlyphNameFunc  free_glyph_name,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   304
                    FT_Pointer            glyph_data )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   305
  {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   306
    FT_Error  error;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   307
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   308
    FT_UInt  extra_glyph_list_states[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   309
    FT_UInt  extra_glyphs[EXTRA_GLYPH_LIST_SIZE];
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   310
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   311
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   312
    /* we first allocate the table */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   313
    table->num_maps = 0;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   314
    table->maps     = 0;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   315
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   316
    if ( !FT_NEW_ARRAY( table->maps, num_glyphs + EXTRA_GLYPH_LIST_SIZE ) )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   317
    {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   318
      FT_UInt     n;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   319
      FT_UInt     count;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   320
      PS_UniMap*  map;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   321
      FT_UInt32   uni_char;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   322
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   323
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   324
      map = table->maps;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   325
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   326
      for ( n = 0; n < num_glyphs; n++ )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   327
      {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   328
        const char*  gname = get_glyph_name( glyph_data, n );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   329
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   330
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   331
        if ( gname )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   332
        {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   333
          ps_check_extra_glyph_name( gname, n,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   334
                                     extra_glyphs, extra_glyph_list_states );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   335
          uni_char = ps_unicode_value( gname );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   336
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   337
          if ( BASE_GLYPH( uni_char ) != 0 )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   338
          {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   339
            ps_check_extra_glyph_unicode( uni_char,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   340
                                          extra_glyph_list_states );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   341
            map->unicode     = uni_char;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   342
            map->glyph_index = n;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   343
            map++;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   344
          }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   345
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   346
          if ( free_glyph_name )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   347
            free_glyph_name( glyph_data, gname );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   348
        }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   349
      }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   350
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   351
      for ( n = 0; n < EXTRA_GLYPH_LIST_SIZE; n++ )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   352
      {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   353
        if ( extra_glyph_list_states[n] == 1 )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   354
        {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   355
          /* This glyph name has an additional representation. */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   356
          /* Add it to the cmap.                               */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   357
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   358
          map->unicode     = ft_extra_glyph_unicodes[n];
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   359
          map->glyph_index = extra_glyphs[n];
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   360
          map++;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   361
        }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   362
      }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   363
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   364
      /* now compress the table a bit */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   365
      count = (FT_UInt)( map - table->maps );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   366
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   367
      if ( count == 0 )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   368
      {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   369
        /* No unicode chars here! */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   370
        FT_FREE( table->maps );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   371
        if ( !error )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   372
          error = PSnames_Err_No_Unicode_Glyph_Name;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   373
      }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   374
      else
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   375
      {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   376
        /* Reallocate if the number of used entries is much smaller. */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   377
        if ( count < num_glyphs / 2 )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   378
        {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   379
          (void)FT_RENEW_ARRAY( table->maps, num_glyphs, count );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   380
          error = PSnames_Err_Ok;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   381
        }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   382
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   383
        /* Sort the table in increasing order of unicode values, */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   384
        /* taking care of glyph variants.                        */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   385
        ft_qsort( table->maps, count, sizeof ( PS_UniMap ),
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   386
                  compare_uni_maps );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   387
      }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   388
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   389
      table->num_maps = count;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   390
    }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   391
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   392
    return error;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   393
  }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   394
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   395
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   396
  static FT_UInt
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   397
  ps_unicodes_char_index( PS_Unicodes  table,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   398
                          FT_UInt32    unicode )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   399
  {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   400
    PS_UniMap  *min, *max, *mid, *result = NULL;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   401
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   402
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   403
    /* Perform a binary search on the table. */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   404
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   405
    min = table->maps;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   406
    max = min + table->num_maps - 1;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   407
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   408
    while ( min <= max )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   409
    {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   410
      FT_UInt32  base_glyph;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   411
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   412
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   413
      mid = min + ( ( max - min ) >> 1 );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   414
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   415
      if ( mid->unicode == unicode )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   416
      {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   417
        result = mid;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   418
        break;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   419
      }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   420
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   421
      base_glyph = BASE_GLYPH( mid->unicode );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   422
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   423
      if ( base_glyph == unicode )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   424
        result = mid; /* remember match but continue search for base glyph */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   425
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   426
      if ( min == max )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   427
        break;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   428
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   429
      if ( base_glyph < unicode )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   430
        min = mid + 1;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   431
      else
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   432
        max = mid - 1;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   433
    }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   434
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   435
    if ( result )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   436
      return result->glyph_index;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   437
    else
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   438
      return 0;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   439
  }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   440
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   441
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   442
  static FT_UInt32
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   443
  ps_unicodes_char_next( PS_Unicodes  table,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   444
                         FT_UInt32   *unicode )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   445
  {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   446
    FT_UInt    result    = 0;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   447
    FT_UInt32  char_code = *unicode + 1;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   448
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   449
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   450
    {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   451
      FT_UInt     min = 0;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   452
      FT_UInt     max = table->num_maps;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   453
      FT_UInt     mid;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   454
      PS_UniMap*  map;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   455
      FT_UInt32   base_glyph;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   456
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   457
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   458
      while ( min < max )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   459
      {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   460
        mid = min + ( ( max - min ) >> 1 );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   461
        map = table->maps + mid;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   462
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   463
        if ( map->unicode == char_code )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   464
        {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   465
          result = map->glyph_index;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   466
          goto Exit;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   467
        }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   468
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   469
        base_glyph = BASE_GLYPH( map->unicode );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   470
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   471
        if ( base_glyph == char_code )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   472
          result = map->glyph_index;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   473
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   474
        if ( base_glyph < char_code )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   475
          min = mid + 1;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   476
        else
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   477
          max = mid;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   478
      }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   479
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   480
      if ( result )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   481
        goto Exit;               /* we have a variant glyph */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   482
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   483
      /* we didn't find it; check whether we have a map just above it */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   484
      char_code = 0;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   485
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   486
      if ( min < table->num_maps )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   487
      {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   488
        map       = table->maps + min;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   489
        result    = map->glyph_index;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   490
        char_code = BASE_GLYPH( map->unicode );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   491
      }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   492
    }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   493
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   494
  Exit:
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   495
    *unicode = char_code;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   496
    return result;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   497
  }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   498
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   499
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   500
#endif /* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   501
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   502
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   503
  static const char*
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   504
  ps_get_macintosh_name( FT_UInt  name_index )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   505
  {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   506
    if ( name_index >= FT_NUM_MAC_NAMES )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   507
      name_index = 0;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   508
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   509
    return ft_standard_glyph_names + ft_mac_names[name_index];
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   510
  }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   511
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   512
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   513
  static const char*
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   514
  ps_get_standard_strings( FT_UInt  sid )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   515
  {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   516
    if ( sid >= FT_NUM_SID_NAMES )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   517
      return 0;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   518
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   519
    return ft_standard_glyph_names + ft_sid_names[sid];
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   520
  }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   521
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   522
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   523
#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   524
  FT_DEFINE_SERVICE_PSCMAPSREC(pscmaps_interface, 
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   525
    (PS_Unicode_ValueFunc)     ps_unicode_value,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   526
    (PS_Unicodes_InitFunc)     ps_unicodes_init,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   527
    (PS_Unicodes_CharIndexFunc)ps_unicodes_char_index,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   528
    (PS_Unicodes_CharNextFunc) ps_unicodes_char_next,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   529
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   530
    (PS_Macintosh_NameFunc)    ps_get_macintosh_name,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   531
    (PS_Adobe_Std_StringsFunc) ps_get_standard_strings,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   532
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   533
    t1_standard_encoding,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   534
    t1_expert_encoding
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   535
  )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   536
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   537
#else
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   538
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   539
  FT_DEFINE_SERVICE_PSCMAPSREC(pscmaps_interface, 
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   540
    0,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   541
    0,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   542
    0,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   543
    0,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   544
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   545
    (PS_Macintosh_NameFunc)    ps_get_macintosh_name,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   546
    (PS_Adobe_Std_StringsFunc) ps_get_standard_strings,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   547
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   548
    t1_standard_encoding,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   549
    t1_expert_encoding
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   550
  )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   551
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   552
#endif /* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   553
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   554
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   555
  FT_DEFINE_SERVICEDESCREC1(pscmaps_services, 
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   556
    FT_SERVICE_ID_POSTSCRIPT_CMAPS, &FT_PSCMAPS_INTERFACE_GET
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   557
  )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   558
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   559
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   560
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   561
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   562
  static FT_Pointer
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   563
  psnames_get_service( FT_Module    module,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   564
                       const char*  service_id )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   565
  {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   566
    FT_UNUSED( module );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   567
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   568
    return ft_service_list_lookup( FT_PSCMAPS_SERVICES_GET, service_id );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   569
  }
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   570
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   571
#endif /* FT_CONFIG_OPTION_POSTSCRIPT_NAMES */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   572
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   573
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   574
#ifndef FT_CONFIG_OPTION_POSTSCRIPT_NAMES
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   575
#define PUT_PS_NAMES_SERVICE(a) 0
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   576
#else
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   577
#define PUT_PS_NAMES_SERVICE(a) a
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   578
#endif
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   579
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   580
  FT_DEFINE_MODULE(psnames_module_class,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   581
  
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   582
    0,  /* this is not a font driver, nor a renderer */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   583
    sizeof ( FT_ModuleRec ),
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   584
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   585
    "psnames",  /* driver name                         */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   586
    0x10000L,   /* driver version                      */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   587
    0x20000L,   /* driver requires FreeType 2 or above */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   588
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   589
    PUT_PS_NAMES_SERVICE((void*)&FT_PSCMAPS_INTERFACE_GET),   /* module specific interface */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   590
    (FT_Module_Constructor)0,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   591
    (FT_Module_Destructor) 0,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   592
    (FT_Module_Requester)  PUT_PS_NAMES_SERVICE(psnames_get_service)
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   593
  )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   594
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   595
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   596
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   597
/* END */