src/java.desktop/share/native/libfreetype/src/truetype/ttobjs.c
author prr
Thu, 09 May 2019 16:09:39 -0700
changeset 54876 da3834261f0c
parent 50479 70e706c85f1d
permissions -rw-r--r--
8222362: Upgrade to Freetype 2.10.0 Reviewed-by: serb, erikj
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
54876
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
     1
/****************************************************************************
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
     2
 *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
     3
 * ttobjs.c
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
     4
 *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
     5
 *   Objects manager (body).
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
     6
 *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
     7
 * Copyright (C) 1996-2019 by
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
     8
 * David Turner, Robert Wilhelm, and Werner Lemberg.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
     9
 *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    10
 * This file is part of the FreeType project, and may only be used,
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    11
 * modified, and distributed under the terms of the FreeType project
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    12
 * license, LICENSE.TXT.  By continuing to use, modify, or distribute
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    13
 * this file you indicate that you have read the license and
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    14
 * understand and accept it fully.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    15
 *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    16
 */
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    17
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    18
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    19
#include <ft2build.h>
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    20
#include FT_INTERNAL_DEBUG_H
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    21
#include FT_INTERNAL_STREAM_H
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    22
#include FT_TRUETYPE_TAGS_H
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    23
#include FT_INTERNAL_SFNT_H
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    24
#include FT_DRIVER_H
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    25
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    26
#include "ttgload.h"
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    27
#include "ttpload.h"
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    28
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    29
#include "tterrors.h"
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    30
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    31
#ifdef TT_USE_BYTECODE_INTERPRETER
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    32
#include "ttinterp.h"
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    33
#endif
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    34
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    35
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    36
#include "ttgxvar.h"
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    37
#endif
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    38
54876
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    39
  /**************************************************************************
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    40
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    41
   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    42
   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    43
   * messages during execution.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    44
   */
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    45
#undef  FT_COMPONENT
54876
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    46
#define FT_COMPONENT  ttobjs
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    47
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    48
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    49
#ifdef TT_USE_BYTECODE_INTERPRETER
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    50
54876
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    51
  /**************************************************************************
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    52
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    53
   *                      GLYPH ZONE FUNCTIONS
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    54
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    55
   */
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    56
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    57
54876
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    58
  /**************************************************************************
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    59
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    60
   * @Function:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    61
   *   tt_glyphzone_done
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    62
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    63
   * @Description:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    64
   *   Deallocate a glyph zone.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    65
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    66
   * @Input:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    67
   *   zone ::
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    68
   *     A pointer to the target glyph zone.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    69
   */
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    70
  FT_LOCAL_DEF( void )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    71
  tt_glyphzone_done( TT_GlyphZone  zone )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    72
  {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    73
    FT_Memory  memory = zone->memory;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    74
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    75
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    76
    if ( memory )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    77
    {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    78
      FT_FREE( zone->contours );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    79
      FT_FREE( zone->tags );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    80
      FT_FREE( zone->cur );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    81
      FT_FREE( zone->org );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    82
      FT_FREE( zone->orus );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    83
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    84
      zone->max_points   = zone->n_points   = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    85
      zone->max_contours = zone->n_contours = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    86
      zone->memory       = NULL;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    87
    }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    88
  }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    89
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    90
54876
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    91
  /**************************************************************************
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    92
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    93
   * @Function:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    94
   *   tt_glyphzone_new
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    95
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    96
   * @Description:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    97
   *   Allocate a new glyph zone.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    98
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    99
   * @Input:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   100
   *   memory ::
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   101
   *     A handle to the current memory object.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   102
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   103
   *   maxPoints ::
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   104
   *     The capacity of glyph zone in points.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   105
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   106
   *   maxContours ::
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   107
   *     The capacity of glyph zone in contours.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   108
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   109
   * @Output:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   110
   *   zone ::
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   111
   *     A pointer to the target glyph zone record.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   112
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   113
   * @Return:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   114
   *   FreeType error code.  0 means success.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   115
   */
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   116
  FT_LOCAL_DEF( FT_Error )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   117
  tt_glyphzone_new( FT_Memory     memory,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   118
                    FT_UShort     maxPoints,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   119
                    FT_Short      maxContours,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   120
                    TT_GlyphZone  zone )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   121
  {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   122
    FT_Error  error;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   123
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   124
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   125
    FT_ZERO( zone );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   126
    zone->memory = memory;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   127
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   128
    if ( FT_NEW_ARRAY( zone->org,      maxPoints   ) ||
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   129
         FT_NEW_ARRAY( zone->cur,      maxPoints   ) ||
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   130
         FT_NEW_ARRAY( zone->orus,     maxPoints   ) ||
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   131
         FT_NEW_ARRAY( zone->tags,     maxPoints   ) ||
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   132
         FT_NEW_ARRAY( zone->contours, maxContours ) )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   133
    {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   134
      tt_glyphzone_done( zone );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   135
    }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   136
    else
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   137
    {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   138
      zone->max_points   = maxPoints;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   139
      zone->max_contours = maxContours;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   140
    }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   141
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   142
    return error;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   143
  }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   144
#endif /* TT_USE_BYTECODE_INTERPRETER */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   145
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   146
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   147
  /* Compare the face with a list of well-known `tricky' fonts. */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   148
  /* This list shall be expanded as we find more of them.       */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   149
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   150
  static FT_Bool
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   151
  tt_check_trickyness_family( FT_String*  name )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   152
  {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   153
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   154
#define TRICK_NAMES_MAX_CHARACTERS  19
50479
70e706c85f1d 8203367: Upgrade to freetype 2.9.1
prr
parents: 49234
diff changeset
   155
#define TRICK_NAMES_COUNT           26
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   156
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   157
    static const char trick_names[TRICK_NAMES_COUNT]
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   158
                                 [TRICK_NAMES_MAX_CHARACTERS + 1] =
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   159
    {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   160
      /*
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   161
         PostScript names are given in brackets if they differ from the
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   162
         family name.  The version numbers, together with the copyright or
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   163
         release year data, are taken from fonts available to the
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   164
         developers.
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   165
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   166
         Note that later versions of the fonts might be no longer tricky;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   167
         for example, `MingLiU' version 7.00 (file `mingliu.ttc' from
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   168
         Windows 7) is an ordinary TTC with non-tricky subfonts.
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   169
       */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   170
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   171
      "cpop",               /* dftt-p7.ttf; version 1.00, 1992 [DLJGyShoMedium] */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   172
      "DFGirl-W6-WIN-BF",   /* dftt-h6.ttf; version 1.00, 1993 */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   173
      "DFGothic-EB",        /* DynaLab Inc. 1992-1995 */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   174
      "DFGyoSho-Lt",        /* DynaLab Inc. 1992-1995 */
50479
70e706c85f1d 8203367: Upgrade to freetype 2.9.1
prr
parents: 49234
diff changeset
   175
      "DFHei-Md-HK-BF",     /* maybe DynaLab Inc. */
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   176
      "DFHSGothic-W5",      /* DynaLab Inc. 1992-1995 */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   177
      "DFHSMincho-W3",      /* DynaLab Inc. 1992-1995 */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   178
      "DFHSMincho-W7",      /* DynaLab Inc. 1992-1995 */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   179
      "DFKaiSho-SB",        /* dfkaisb.ttf */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   180
      "DFKaiShu",
50479
70e706c85f1d 8203367: Upgrade to freetype 2.9.1
prr
parents: 49234
diff changeset
   181
      "DFKaiShu-Md-HK-BF",  /* maybe DynaLab Inc. */
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   182
      "DFKai-SB",           /* kaiu.ttf; version 3.00, 1998 [DFKaiShu-SB-Estd-BF] */
50479
70e706c85f1d 8203367: Upgrade to freetype 2.9.1
prr
parents: 49234
diff changeset
   183
      "DFMing-Bd-HK-BF",    /* maybe DynaLab Inc. */
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   184
      "DLC",                /* dftt-m7.ttf; version 1.00, 1993 [DLCMingBold] */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   185
                            /* dftt-f5.ttf; version 1.00, 1993 [DLCFongSung] */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   186
      "DLCHayMedium",       /* dftt-b5.ttf; version 1.00, 1993 */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   187
      "DLCHayBold",         /* dftt-b7.ttf; version 1.00, 1993 */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   188
      "DLCKaiMedium",       /* dftt-k5.ttf; version 1.00, 1992 */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   189
      "DLCLiShu",           /* dftt-l5.ttf; version 1.00, 1992 */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   190
      "DLCRoundBold",       /* dftt-r7.ttf; version 1.00, 1993 */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   191
      "HuaTianKaiTi?",      /* htkt2.ttf */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   192
      "HuaTianSongTi?",     /* htst3.ttf */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   193
      "Ming(for ISO10646)", /* hkscsiic.ttf; version 0.12, 2007 [Ming] */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   194
                            /* iicore.ttf; version 0.07, 2007 [Ming] */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   195
      "MingLiU",            /* mingliu.ttf */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   196
                            /* mingliu.ttc; version 3.21, 2001 */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   197
      "MingMedium",         /* dftt-m5.ttf; version 1.00, 1993 [DLCMingMedium] */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   198
      "PMingLiU",           /* mingliu.ttc; version 3.21, 2001 */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   199
      "MingLi43",           /* mingli.ttf; version 1.00, 1992 */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   200
    };
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   201
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   202
    int  nn;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   203
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   204
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   205
    for ( nn = 0; nn < TRICK_NAMES_COUNT; nn++ )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   206
      if ( ft_strstr( name, trick_names[nn] ) )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   207
        return TRUE;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   208
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   209
    return FALSE;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   210
  }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   211
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   212
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   213
  /* XXX: This function should be in the `sfnt' module. */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   214
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   215
  /* Some PDF generators clear the checksums in the TrueType header table. */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   216
  /* For example, Quartz ContextPDF clears all entries, or Bullzip PDF     */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   217
  /* Printer clears the entries for subsetted subtables.  We thus have to  */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   218
  /* recalculate the checksums  where necessary.                           */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   219
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   220
  static FT_UInt32
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   221
  tt_synth_sfnt_checksum( FT_Stream  stream,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   222
                          FT_ULong   length )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   223
  {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   224
    FT_Error   error;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   225
    FT_UInt32  checksum = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   226
    FT_UInt    i;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   227
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   228
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   229
    if ( FT_FRAME_ENTER( length ) )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   230
      return 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   231
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   232
    for ( ; length > 3; length -= 4 )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   233
      checksum += (FT_UInt32)FT_GET_ULONG();
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   235
    for ( i = 3; length > 0; length--, i-- )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   236
      checksum += (FT_UInt32)FT_GET_BYTE() << ( i * 8 );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   237
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   238
    FT_FRAME_EXIT();
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   239
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   240
    return checksum;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   241
  }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   242
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   243
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   244
  /* XXX: This function should be in the `sfnt' module. */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   245
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   246
  static FT_ULong
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   247
  tt_get_sfnt_checksum( TT_Face    face,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   248
                        FT_UShort  i )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   249
  {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   250
#if 0 /* if we believe the written value, use following part. */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   251
    if ( face->dir_tables[i].CheckSum )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   252
      return face->dir_tables[i].CheckSum;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   253
#endif
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   254
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   255
    if ( !face->goto_table )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   256
      return 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   257
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   258
    if ( face->goto_table( face,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   259
                           face->dir_tables[i].Tag,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   260
                           face->root.stream,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   261
                           NULL ) )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   262
      return 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   263
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   264
    return (FT_ULong)tt_synth_sfnt_checksum( face->root.stream,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   265
                                             face->dir_tables[i].Length );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   266
  }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   267
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   268
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   269
  typedef struct tt_sfnt_id_rec_
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   270
  {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   271
    FT_ULong  CheckSum;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   272
    FT_ULong  Length;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   273
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   274
  } tt_sfnt_id_rec;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   275
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   276
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   277
  static FT_Bool
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   278
  tt_check_trickyness_sfnt_ids( TT_Face  face )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   279
  {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   280
#define TRICK_SFNT_IDS_PER_FACE   3
50479
70e706c85f1d 8203367: Upgrade to freetype 2.9.1
prr
parents: 49234
diff changeset
   281
#define TRICK_SFNT_IDS_NUM_FACES  29
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   282
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   283
    static const tt_sfnt_id_rec sfnt_id[TRICK_SFNT_IDS_NUM_FACES]
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   284
                                       [TRICK_SFNT_IDS_PER_FACE] = {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   285
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   286
#define TRICK_SFNT_ID_cvt   0
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   287
#define TRICK_SFNT_ID_fpgm  1
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   288
#define TRICK_SFNT_ID_prep  2
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   289
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   290
      { /* MingLiU 1995 */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   291
        { 0x05BCF058UL, 0x000002E4UL }, /* cvt  */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   292
        { 0x28233BF1UL, 0x000087C4UL }, /* fpgm */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   293
        { 0xA344A1EAUL, 0x000001E1UL }  /* prep */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   294
      },
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   295
      { /* MingLiU 1996- */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   296
        { 0x05BCF058UL, 0x000002E4UL }, /* cvt  */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   297
        { 0x28233BF1UL, 0x000087C4UL }, /* fpgm */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   298
        { 0xA344A1EBUL, 0x000001E1UL }  /* prep */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   299
      },
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   300
      { /* DFGothic-EB */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   301
        { 0x12C3EBB2UL, 0x00000350UL }, /* cvt  */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   302
        { 0xB680EE64UL, 0x000087A7UL }, /* fpgm */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   303
        { 0xCE939563UL, 0x00000758UL }  /* prep */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   304
      },
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   305
      { /* DFGyoSho-Lt */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   306
        { 0x11E5EAD4UL, 0x00000350UL }, /* cvt  */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   307
        { 0xCE5956E9UL, 0x0000BC85UL }, /* fpgm */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   308
        { 0x8272F416UL, 0x00000045UL }  /* prep */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   309
      },
50479
70e706c85f1d 8203367: Upgrade to freetype 2.9.1
prr
parents: 49234
diff changeset
   310
      { /* DFHei-Md-HK-BF */
70e706c85f1d 8203367: Upgrade to freetype 2.9.1
prr
parents: 49234
diff changeset
   311
        { 0x1257EB46UL, 0x00000350UL }, /* cvt  */
70e706c85f1d 8203367: Upgrade to freetype 2.9.1
prr
parents: 49234
diff changeset
   312
        { 0xF699D160UL, 0x0000715FUL }, /* fpgm */
70e706c85f1d 8203367: Upgrade to freetype 2.9.1
prr
parents: 49234
diff changeset
   313
        { 0xD222F568UL, 0x000003BCUL }  /* prep */
70e706c85f1d 8203367: Upgrade to freetype 2.9.1
prr
parents: 49234
diff changeset
   314
      },
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   315
      { /* DFHSGothic-W5 */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   316
        { 0x1262EB4EUL, 0x00000350UL }, /* cvt  */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   317
        { 0xE86A5D64UL, 0x00007940UL }, /* fpgm */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   318
        { 0x7850F729UL, 0x000005FFUL }  /* prep */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   319
      },
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   320
      { /* DFHSMincho-W3 */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   321
        { 0x122DEB0AUL, 0x00000350UL }, /* cvt  */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   322
        { 0x3D16328AUL, 0x0000859BUL }, /* fpgm */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   323
        { 0xA93FC33BUL, 0x000002CBUL }  /* prep */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   324
      },
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   325
      { /* DFHSMincho-W7 */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   326
        { 0x125FEB26UL, 0x00000350UL }, /* cvt  */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   327
        { 0xA5ACC982UL, 0x00007EE1UL }, /* fpgm */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   328
        { 0x90999196UL, 0x0000041FUL }  /* prep */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   329
      },
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   330
      { /* DFKaiShu */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   331
        { 0x11E5EAD4UL, 0x00000350UL }, /* cvt  */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   332
        { 0x5A30CA3BUL, 0x00009063UL }, /* fpgm */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   333
        { 0x13A42602UL, 0x0000007EUL }  /* prep */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   334
      },
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   335
      { /* DFKaiShu, variant */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   336
        { 0x11E5EAD4UL, 0x00000350UL }, /* cvt  */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   337
        { 0xA6E78C01UL, 0x00008998UL }, /* fpgm */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   338
        { 0x13A42602UL, 0x0000007EUL }  /* prep */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   339
      },
50479
70e706c85f1d 8203367: Upgrade to freetype 2.9.1
prr
parents: 49234
diff changeset
   340
      { /* DFKaiShu-Md-HK-BF */
70e706c85f1d 8203367: Upgrade to freetype 2.9.1
prr
parents: 49234
diff changeset
   341
        { 0x11E5EAD4UL, 0x00000360UL }, /* cvt  */
70e706c85f1d 8203367: Upgrade to freetype 2.9.1
prr
parents: 49234
diff changeset
   342
        { 0x9DB282B2UL, 0x0000C06EUL }, /* fpgm */
70e706c85f1d 8203367: Upgrade to freetype 2.9.1
prr
parents: 49234
diff changeset
   343
        { 0x53E6D7CAUL, 0x00000082UL }  /* prep */
70e706c85f1d 8203367: Upgrade to freetype 2.9.1
prr
parents: 49234
diff changeset
   344
      },
70e706c85f1d 8203367: Upgrade to freetype 2.9.1
prr
parents: 49234
diff changeset
   345
      { /* DFMing-Bd-HK-BF */
70e706c85f1d 8203367: Upgrade to freetype 2.9.1
prr
parents: 49234
diff changeset
   346
        { 0x1243EB18UL, 0x00000350UL }, /* cvt  */
70e706c85f1d 8203367: Upgrade to freetype 2.9.1
prr
parents: 49234
diff changeset
   347
        { 0xBA0A8C30UL, 0x000074ADUL }, /* fpgm */
70e706c85f1d 8203367: Upgrade to freetype 2.9.1
prr
parents: 49234
diff changeset
   348
        { 0xF3D83409UL, 0x0000037BUL }  /* prep */
70e706c85f1d 8203367: Upgrade to freetype 2.9.1
prr
parents: 49234
diff changeset
   349
      },
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   350
      { /* DLCLiShu */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   351
        { 0x07DCF546UL, 0x00000308UL }, /* cvt  */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   352
        { 0x40FE7C90UL, 0x00008E2AUL }, /* fpgm */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   353
        { 0x608174B5UL, 0x0000007AUL }  /* prep */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   354
      },
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   355
      { /* DLCHayBold */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   356
        { 0xEB891238UL, 0x00000308UL }, /* cvt  */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   357
        { 0xD2E4DCD4UL, 0x0000676FUL }, /* fpgm */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   358
        { 0x8EA5F293UL, 0x000003B8UL }  /* prep */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   359
      },
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   360
      { /* HuaTianKaiTi */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   361
        { 0xFFFBFFFCUL, 0x00000008UL }, /* cvt  */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   362
        { 0x9C9E48B8UL, 0x0000BEA2UL }, /* fpgm */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   363
        { 0x70020112UL, 0x00000008UL }  /* prep */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   364
      },
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   365
      { /* HuaTianSongTi */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   366
        { 0xFFFBFFFCUL, 0x00000008UL }, /* cvt  */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   367
        { 0x0A5A0483UL, 0x00017C39UL }, /* fpgm */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   368
        { 0x70020112UL, 0x00000008UL }  /* prep */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   369
      },
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   370
      { /* NEC fadpop7.ttf */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   371
        { 0x00000000UL, 0x00000000UL }, /* cvt  */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   372
        { 0x40C92555UL, 0x000000E5UL }, /* fpgm */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   373
        { 0xA39B58E3UL, 0x0000117CUL }  /* prep */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   374
      },
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   375
      { /* NEC fadrei5.ttf */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   376
        { 0x00000000UL, 0x00000000UL }, /* cvt  */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   377
        { 0x33C41652UL, 0x000000E5UL }, /* fpgm */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   378
        { 0x26D6C52AUL, 0x00000F6AUL }  /* prep */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   379
      },
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   380
      { /* NEC fangot7.ttf */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   381
        { 0x00000000UL, 0x00000000UL }, /* cvt  */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   382
        { 0x6DB1651DUL, 0x0000019DUL }, /* fpgm */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   383
        { 0x6C6E4B03UL, 0x00002492UL }  /* prep */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   384
      },
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   385
      { /* NEC fangyo5.ttf */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   386
        { 0x00000000UL, 0x00000000UL }, /* cvt  */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   387
        { 0x40C92555UL, 0x000000E5UL }, /* fpgm */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   388
        { 0xDE51FAD0UL, 0x0000117CUL }  /* prep */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   389
      },
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   390
      { /* NEC fankyo5.ttf */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   391
        { 0x00000000UL, 0x00000000UL }, /* cvt  */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   392
        { 0x85E47664UL, 0x000000E5UL }, /* fpgm */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   393
        { 0xA6C62831UL, 0x00001CAAUL }  /* prep */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   394
      },
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   395
      { /* NEC fanrgo5.ttf */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   396
        { 0x00000000UL, 0x00000000UL }, /* cvt  */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   397
        { 0x2D891CFDUL, 0x0000019DUL }, /* fpgm */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   398
        { 0xA0604633UL, 0x00001DE8UL }  /* prep */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   399
      },
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   400
      { /* NEC fangot5.ttc */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   401
        { 0x00000000UL, 0x00000000UL }, /* cvt  */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   402
        { 0x40AA774CUL, 0x000001CBUL }, /* fpgm */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   403
        { 0x9B5CAA96UL, 0x00001F9AUL }  /* prep */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   404
      },
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   405
      { /* NEC fanmin3.ttc */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   406
        { 0x00000000UL, 0x00000000UL }, /* cvt  */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   407
        { 0x0D3DE9CBUL, 0x00000141UL }, /* fpgm */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   408
        { 0xD4127766UL, 0x00002280UL }  /* prep */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   409
      },
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   410
      { /* NEC FA-Gothic, 1996 */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   411
        { 0x00000000UL, 0x00000000UL }, /* cvt  */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   412
        { 0x4A692698UL, 0x000001F0UL }, /* fpgm */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   413
        { 0x340D4346UL, 0x00001FCAUL }  /* prep */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   414
      },
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   415
      { /* NEC FA-Minchou, 1996 */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   416
        { 0x00000000UL, 0x00000000UL }, /* cvt  */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   417
        { 0xCD34C604UL, 0x00000166UL }, /* fpgm */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   418
        { 0x6CF31046UL, 0x000022B0UL }  /* prep */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   419
      },
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   420
      { /* NEC FA-RoundGothicB, 1996 */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   421
        { 0x00000000UL, 0x00000000UL }, /* cvt  */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   422
        { 0x5DA75315UL, 0x0000019DUL }, /* fpgm */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   423
        { 0x40745A5FUL, 0x000022E0UL }  /* prep */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   424
      },
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   425
      { /* NEC FA-RoundGothicM, 1996 */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   426
        { 0x00000000UL, 0x00000000UL }, /* cvt  */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   427
        { 0xF055FC48UL, 0x000001C2UL }, /* fpgm */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   428
        { 0x3900DED3UL, 0x00001E18UL }  /* prep */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   429
      },
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   430
        { /* MINGLI.TTF, 1992 */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   431
        { 0x00170003UL, 0x00000060UL }, /* cvt  */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   432
        { 0xDBB4306EUL, 0x000058AAUL }, /* fpgm */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   433
        { 0xD643482AUL, 0x00000035UL }  /* prep */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   434
      }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   435
    };
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   436
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   437
    FT_ULong   checksum;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   438
    int        num_matched_ids[TRICK_SFNT_IDS_NUM_FACES];
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   439
    FT_Bool    has_cvt, has_fpgm, has_prep;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   440
    FT_UShort  i;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   441
    int        j, k;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   442
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   443
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   444
    FT_MEM_SET( num_matched_ids, 0,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   445
                sizeof ( int ) * TRICK_SFNT_IDS_NUM_FACES );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   446
    has_cvt  = FALSE;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   447
    has_fpgm = FALSE;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   448
    has_prep = FALSE;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   449
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   450
    for ( i = 0; i < face->num_tables; i++ )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   451
    {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   452
      checksum = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   453
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   454
      switch( face->dir_tables[i].Tag )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   455
      {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   456
      case TTAG_cvt:
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   457
        k = TRICK_SFNT_ID_cvt;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   458
        has_cvt  = TRUE;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   459
        break;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   460
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   461
      case TTAG_fpgm:
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   462
        k = TRICK_SFNT_ID_fpgm;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   463
        has_fpgm = TRUE;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   464
        break;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   465
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   466
      case TTAG_prep:
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   467
        k = TRICK_SFNT_ID_prep;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   468
        has_prep = TRUE;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   469
        break;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   470
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   471
      default:
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   472
        continue;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   473
      }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   474
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   475
      for ( j = 0; j < TRICK_SFNT_IDS_NUM_FACES; j++ )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   476
        if ( face->dir_tables[i].Length == sfnt_id[j][k].Length )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   477
        {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   478
          if ( !checksum )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   479
            checksum = tt_get_sfnt_checksum( face, i );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   480
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   481
          if ( sfnt_id[j][k].CheckSum == checksum )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   482
            num_matched_ids[j]++;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   483
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   484
          if ( num_matched_ids[j] == TRICK_SFNT_IDS_PER_FACE )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   485
            return TRUE;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   486
        }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   487
    }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   488
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   489
    for ( j = 0; j < TRICK_SFNT_IDS_NUM_FACES; j++ )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   490
    {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   491
      if ( !has_cvt  && !sfnt_id[j][TRICK_SFNT_ID_cvt].Length )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   492
        num_matched_ids[j]++;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   493
      if ( !has_fpgm && !sfnt_id[j][TRICK_SFNT_ID_fpgm].Length )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   494
        num_matched_ids[j]++;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   495
      if ( !has_prep && !sfnt_id[j][TRICK_SFNT_ID_prep].Length )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   496
        num_matched_ids[j]++;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   497
      if ( num_matched_ids[j] == TRICK_SFNT_IDS_PER_FACE )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   498
        return TRUE;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   499
    }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   500
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   501
    return FALSE;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   502
  }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   503
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   504
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   505
  static FT_Bool
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   506
  tt_check_trickyness( FT_Face  face )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   507
  {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   508
    if ( !face )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   509
      return FALSE;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   510
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   511
    /* For first, check the face name for quick check. */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   512
    if ( face->family_name                               &&
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   513
         tt_check_trickyness_family( face->family_name ) )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   514
      return TRUE;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   515
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   516
    /* Type42 fonts may lack `name' tables, we thus try to identify */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   517
    /* tricky fonts by checking the checksums of Type42-persistent  */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   518
    /* sfnt tables (`cvt', `fpgm', and `prep').                     */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   519
    if ( tt_check_trickyness_sfnt_ids( (TT_Face)face ) )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   520
      return TRUE;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   521
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   522
    return FALSE;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   523
  }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   524
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   525
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   526
  /* Check whether `.notdef' is the only glyph in the `loca' table. */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   527
  static FT_Bool
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   528
  tt_check_single_notdef( FT_Face  ttface )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   529
  {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   530
    FT_Bool   result = FALSE;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   531
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   532
    TT_Face   face = (TT_Face)ttface;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   533
    FT_UInt   asize;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   534
    FT_ULong  i;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   535
    FT_ULong  glyph_index = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   536
    FT_UInt   count       = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   537
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   538
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   539
    for( i = 0; i < face->num_locations; i++ )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   540
    {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   541
      tt_face_get_location( face, i, &asize );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   542
      if ( asize > 0 )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   543
      {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   544
        count += 1;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   545
        if ( count > 1 )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   546
          break;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   547
        glyph_index = i;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   548
      }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   549
    }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   550
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   551
    /* Only have a single outline. */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   552
    if ( count == 1 )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   553
    {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   554
      if ( glyph_index == 0 )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   555
        result = TRUE;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   556
      else
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   557
      {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   558
        /* FIXME: Need to test glyphname == .notdef ? */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   559
        FT_Error error;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   560
        char buf[8];
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   561
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   562
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   563
        error = FT_Get_Glyph_Name( ttface, glyph_index, buf, 8 );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   564
        if ( !error                                            &&
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   565
             buf[0] == '.' && !ft_strncmp( buf, ".notdef", 8 ) )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   566
          result = TRUE;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   567
      }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   568
    }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   569
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   570
    return result;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   571
  }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   572
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   573
54876
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   574
  /**************************************************************************
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   575
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   576
   * @Function:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   577
   *   tt_face_init
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   578
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   579
   * @Description:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   580
   *   Initialize a given TrueType face object.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   581
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   582
   * @Input:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   583
   *   stream ::
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   584
   *     The source font stream.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   585
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   586
   *   face_index ::
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   587
   *     The index of the TrueType font, if we are opening a
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   588
   *     collection, in bits 0-15.  The numbered instance
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   589
   *     index~+~1 of a GX (sub)font, if applicable, in bits
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   590
   *     16-30.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   591
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   592
   *   num_params ::
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   593
   *     Number of additional generic parameters.  Ignored.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   594
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   595
   *   params ::
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   596
   *     Additional generic parameters.  Ignored.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   597
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   598
   * @InOut:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   599
   *   face ::
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   600
   *     The newly built face object.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   601
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   602
   * @Return:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   603
   *   FreeType error code.  0 means success.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   604
   */
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   605
  FT_LOCAL_DEF( FT_Error )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   606
  tt_face_init( FT_Stream      stream,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   607
                FT_Face        ttface,      /* TT_Face */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   608
                FT_Int         face_index,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   609
                FT_Int         num_params,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   610
                FT_Parameter*  params )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   611
  {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   612
    FT_Error      error;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   613
    FT_Library    library;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   614
    SFNT_Service  sfnt;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   615
    TT_Face       face = (TT_Face)ttface;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   616
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   617
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   618
    FT_TRACE2(( "TTF driver\n" ));
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   619
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   620
    library = ttface->driver->root.library;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   621
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   622
    sfnt = (SFNT_Service)FT_Get_Module_Interface( library, "sfnt" );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   623
    if ( !sfnt )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   624
    {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   625
      FT_ERROR(( "tt_face_init: cannot access `sfnt' module\n" ));
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   626
      error = FT_THROW( Missing_Module );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   627
      goto Exit;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   628
    }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   629
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   630
    /* create input stream from resource */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   631
    if ( FT_STREAM_SEEK( 0 ) )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   632
      goto Exit;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   633
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   634
    /* check that we have a valid TrueType file */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   635
    FT_TRACE2(( "  " ));
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   636
    error = sfnt->init_face( stream, face, face_index, num_params, params );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   637
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   638
    /* Stream may have changed. */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   639
    stream = face->root.stream;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   640
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   641
    if ( error )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   642
      goto Exit;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   643
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   644
    /* We must also be able to accept Mac/GX fonts, as well as OT ones. */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   645
    /* The 0x00020000 tag is completely undocumented; some fonts from   */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   646
    /* Arphic made for Chinese Windows 3.1 have this.                   */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   647
    if ( face->format_tag != 0x00010000L  && /* MS fonts                             */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   648
         face->format_tag != 0x00020000L  && /* CJK fonts for Win 3.1                */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   649
         face->format_tag != TTAG_true    && /* Mac fonts                            */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   650
         face->format_tag != TTAG_0xA5kbd && /* `Keyboard.dfont' (legacy Mac OS X)   */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   651
         face->format_tag != TTAG_0xA5lst )  /* `LastResort.dfont' (legacy Mac OS X) */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   652
    {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   653
      FT_TRACE2(( "  not a TTF font\n" ));
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   654
      goto Bad_Format;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   655
    }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   656
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   657
#ifdef TT_USE_BYTECODE_INTERPRETER
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   658
    ttface->face_flags |= FT_FACE_FLAG_HINTER;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   659
#endif
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   660
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   661
    /* If we are performing a simple font format check, exit immediately. */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   662
    if ( face_index < 0 )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   663
      return FT_Err_Ok;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   664
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   665
    /* Load font directory */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   666
    error = sfnt->load_face( stream, face, face_index, num_params, params );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   667
    if ( error )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   668
      goto Exit;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   669
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   670
    if ( tt_check_trickyness( ttface ) )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   671
      ttface->face_flags |= FT_FACE_FLAG_TRICKY;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   672
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   673
    error = tt_face_load_hdmx( face, stream );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   674
    if ( error )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   675
      goto Exit;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   676
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   677
    if ( FT_IS_SCALABLE( ttface ) )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   678
    {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   679
#ifdef FT_CONFIG_OPTION_INCREMENTAL
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   680
      if ( !ttface->internal->incremental_interface )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   681
#endif
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   682
      {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   683
        error = tt_face_load_loca( face, stream );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   684
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   685
        /* having a (non-zero) `glyf' table without */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   686
        /* a `loca' table is not valid              */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   687
        if ( face->glyf_len && FT_ERR_EQ( error, Table_Missing ) )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   688
          goto Exit;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   689
        if ( error )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   690
          goto Exit;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   691
      }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   692
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   693
      /* `fpgm', `cvt', and `prep' are optional */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   694
      error = tt_face_load_cvt( face, stream );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   695
      if ( error && FT_ERR_NEQ( error, Table_Missing ) )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   696
        goto Exit;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   697
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   698
      error = tt_face_load_fpgm( face, stream );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   699
      if ( error && FT_ERR_NEQ( error, Table_Missing ) )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   700
        goto Exit;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   701
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   702
      error = tt_face_load_prep( face, stream );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   703
      if ( error && FT_ERR_NEQ( error, Table_Missing ) )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   704
        goto Exit;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   705
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   706
      /* Check the scalable flag based on `loca'. */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   707
#ifdef FT_CONFIG_OPTION_INCREMENTAL
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   708
      if ( !ttface->internal->incremental_interface )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   709
#endif
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   710
      {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   711
        if ( ttface->num_fixed_sizes          &&
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   712
             face->glyph_locations            &&
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   713
             tt_check_single_notdef( ttface ) )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   714
        {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   715
          FT_TRACE5(( "tt_face_init:"
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   716
                      " Only the `.notdef' glyph has an outline.\n"
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   717
                      "             "
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   718
                      " Resetting scalable flag to FALSE.\n" ));
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   719
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   720
          ttface->face_flags &= ~FT_FACE_FLAG_SCALABLE;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   721
        }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   722
      }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   723
    }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   724
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   725
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   726
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   727
    {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   728
      FT_UInt  instance_index = (FT_UInt)face_index >> 16;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   729
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   730
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   731
      if ( FT_HAS_MULTIPLE_MASTERS( ttface ) &&
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   732
           instance_index > 0                )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   733
      {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   734
        error = TT_Set_Named_Instance( face, instance_index );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   735
        if ( error )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   736
          goto Exit;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   737
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   738
        tt_apply_mvar( face );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   739
      }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   740
    }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   741
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   742
#endif /* TT_CONFIG_OPTION_GX_VAR_SUPPORT */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   743
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   744
    /* initialize standard glyph loading routines */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   745
    TT_Init_Glyph_Loading( face );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   746
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   747
  Exit:
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   748
    return error;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   749
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   750
  Bad_Format:
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   751
    error = FT_THROW( Unknown_File_Format );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   752
    goto Exit;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   753
  }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   754
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   755
54876
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   756
  /**************************************************************************
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   757
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   758
   * @Function:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   759
   *   tt_face_done
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   760
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   761
   * @Description:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   762
   *   Finalize a given face object.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   763
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   764
   * @Input:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   765
   *   face ::
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   766
   *     A pointer to the face object to destroy.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   767
   */
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   768
  FT_LOCAL_DEF( void )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   769
  tt_face_done( FT_Face  ttface )           /* TT_Face */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   770
  {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   771
    TT_Face       face = (TT_Face)ttface;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   772
    FT_Memory     memory;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   773
    FT_Stream     stream;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   774
    SFNT_Service  sfnt;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   775
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   776
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   777
    if ( !face )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   778
      return;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   779
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   780
    memory = ttface->memory;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   781
    stream = ttface->stream;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   782
    sfnt   = (SFNT_Service)face->sfnt;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   783
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   784
    /* for `extended TrueType formats' (i.e. compressed versions) */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   785
    if ( face->extra.finalizer )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   786
      face->extra.finalizer( face->extra.data );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   787
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   788
    if ( sfnt )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   789
      sfnt->done_face( face );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   790
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   791
    /* freeing the locations table */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   792
    tt_face_done_loca( face );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   793
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   794
    tt_face_free_hdmx( face );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   795
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   796
    /* freeing the CVT */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   797
    FT_FREE( face->cvt );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   798
    face->cvt_size = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   799
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   800
    /* freeing the programs */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   801
    FT_FRAME_RELEASE( face->font_program );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   802
    FT_FRAME_RELEASE( face->cvt_program );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   803
    face->font_program_size = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   804
    face->cvt_program_size  = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   805
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   806
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   807
    tt_done_blend( face );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   808
    face->blend = NULL;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   809
#endif
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   810
  }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   811
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   812
54876
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   813
  /**************************************************************************
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   814
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   815
   *                          SIZE  FUNCTIONS
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   816
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   817
   */
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   818
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   819
#ifdef TT_USE_BYTECODE_INTERPRETER
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   820
54876
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   821
  /**************************************************************************
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   822
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   823
   * @Function:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   824
   *   tt_size_run_fpgm
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   825
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   826
   * @Description:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   827
   *   Run the font program.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   828
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   829
   * @Input:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   830
   *   size ::
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   831
   *     A handle to the size object.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   832
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   833
   *   pedantic ::
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   834
   *     Set if bytecode execution should be pedantic.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   835
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   836
   * @Return:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   837
   *   FreeType error code.  0 means success.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   838
   */
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   839
  FT_LOCAL_DEF( FT_Error )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   840
  tt_size_run_fpgm( TT_Size  size,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   841
                    FT_Bool  pedantic )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   842
  {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   843
    TT_Face         face = (TT_Face)size->root.face;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   844
    TT_ExecContext  exec;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   845
    FT_Error        error;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   846
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   847
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   848
    exec = size->context;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   849
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   850
    error = TT_Load_Context( exec, face, size );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   851
    if ( error )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   852
      return error;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   853
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   854
    exec->callTop = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   855
    exec->top     = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   856
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   857
    exec->period    = 64;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   858
    exec->phase     = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   859
    exec->threshold = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   860
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   861
    exec->instruction_trap = FALSE;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   862
    exec->F_dot_P          = 0x4000L;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   863
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   864
    exec->pedantic_hinting = pedantic;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   865
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   866
    {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   867
      FT_Size_Metrics*  size_metrics = &exec->metrics;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   868
      TT_Size_Metrics*  tt_metrics   = &exec->tt_metrics;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   869
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   870
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   871
      size_metrics->x_ppem   = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   872
      size_metrics->y_ppem   = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   873
      size_metrics->x_scale  = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   874
      size_metrics->y_scale  = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   875
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   876
      tt_metrics->ppem  = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   877
      tt_metrics->scale = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   878
      tt_metrics->ratio = 0x10000L;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   879
    }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   880
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   881
    /* allow font program execution */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   882
    TT_Set_CodeRange( exec,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   883
                      tt_coderange_font,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   884
                      face->font_program,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   885
                      (FT_Long)face->font_program_size );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   886
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   887
    /* disable CVT and glyph programs coderange */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   888
    TT_Clear_CodeRange( exec, tt_coderange_cvt );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   889
    TT_Clear_CodeRange( exec, tt_coderange_glyph );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   890
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   891
    if ( face->font_program_size > 0 )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   892
    {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   893
      TT_Goto_CodeRange( exec, tt_coderange_font, 0 );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   894
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   895
      FT_TRACE4(( "Executing `fpgm' table.\n" ));
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   896
      error = face->interpreter( exec );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   897
#ifdef FT_DEBUG_LEVEL_TRACE
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   898
      if ( error )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   899
        FT_TRACE4(( "  interpretation failed with error code 0x%x\n",
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   900
                    error ));
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   901
#endif
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   902
    }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   903
    else
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   904
      error = FT_Err_Ok;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   905
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   906
    size->bytecode_ready = error;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   907
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   908
    if ( !error )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   909
      TT_Save_Context( exec, size );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   910
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   911
    return error;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   912
  }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   913
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   914
54876
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   915
  /**************************************************************************
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   916
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   917
   * @Function:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   918
   *   tt_size_run_prep
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   919
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   920
   * @Description:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   921
   *   Run the control value program.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   922
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   923
   * @Input:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   924
   *   size ::
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   925
   *     A handle to the size object.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   926
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   927
   *   pedantic ::
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   928
   *     Set if bytecode execution should be pedantic.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   929
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   930
   * @Return:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   931
   *   FreeType error code.  0 means success.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   932
   */
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   933
  FT_LOCAL_DEF( FT_Error )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   934
  tt_size_run_prep( TT_Size  size,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   935
                    FT_Bool  pedantic )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   936
  {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   937
    TT_Face         face = (TT_Face)size->root.face;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   938
    TT_ExecContext  exec;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   939
    FT_Error        error;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   940
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   941
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   942
    exec = size->context;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   943
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   944
    error = TT_Load_Context( exec, face, size );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   945
    if ( error )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   946
      return error;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   947
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   948
    exec->callTop = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   949
    exec->top     = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   950
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   951
    exec->instruction_trap = FALSE;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   952
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   953
    exec->pedantic_hinting = pedantic;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   954
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   955
    TT_Set_CodeRange( exec,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   956
                      tt_coderange_cvt,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   957
                      face->cvt_program,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   958
                      (FT_Long)face->cvt_program_size );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   959
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   960
    TT_Clear_CodeRange( exec, tt_coderange_glyph );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   961
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   962
    if ( face->cvt_program_size > 0 )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   963
    {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   964
      TT_Goto_CodeRange( exec, tt_coderange_cvt, 0 );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   965
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   966
      FT_TRACE4(( "Executing `prep' table.\n" ));
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   967
      error = face->interpreter( exec );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   968
#ifdef FT_DEBUG_LEVEL_TRACE
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   969
      if ( error )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   970
        FT_TRACE4(( "  interpretation failed with error code 0x%x\n",
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   971
                    error ));
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   972
#endif
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   973
    }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   974
    else
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   975
      error = FT_Err_Ok;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   976
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   977
    size->cvt_ready = error;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   978
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   979
    /* UNDOCUMENTED!  The MS rasterizer doesn't allow the following */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   980
    /* graphics state variables to be modified by the CVT program.  */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   981
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   982
    exec->GS.dualVector.x = 0x4000;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   983
    exec->GS.dualVector.y = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   984
    exec->GS.projVector.x = 0x4000;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   985
    exec->GS.projVector.y = 0x0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   986
    exec->GS.freeVector.x = 0x4000;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   987
    exec->GS.freeVector.y = 0x0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   988
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   989
    exec->GS.rp0 = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   990
    exec->GS.rp1 = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   991
    exec->GS.rp2 = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   992
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   993
    exec->GS.gep0 = 1;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   994
    exec->GS.gep1 = 1;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   995
    exec->GS.gep2 = 1;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   996
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   997
    exec->GS.loop = 1;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   998
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   999
    /* save as default graphics state */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1000
    size->GS = exec->GS;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1001
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1002
    TT_Save_Context( exec, size );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1003
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1004
    return error;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1005
  }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1006
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1007
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1008
  static void
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1009
  tt_size_done_bytecode( FT_Size  ftsize )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1010
  {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1011
    TT_Size    size   = (TT_Size)ftsize;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1012
    TT_Face    face   = (TT_Face)ftsize->face;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1013
    FT_Memory  memory = face->root.memory;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1014
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1015
    if ( size->context )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1016
    {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1017
      TT_Done_Context( size->context );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1018
      size->context = NULL;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1019
    }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1020
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1021
    FT_FREE( size->cvt );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1022
    size->cvt_size = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1023
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1024
    /* free storage area */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1025
    FT_FREE( size->storage );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1026
    size->storage_size = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1027
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1028
    /* twilight zone */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1029
    tt_glyphzone_done( &size->twilight );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1030
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1031
    FT_FREE( size->function_defs );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1032
    FT_FREE( size->instruction_defs );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1033
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1034
    size->num_function_defs    = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1035
    size->max_function_defs    = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1036
    size->num_instruction_defs = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1037
    size->max_instruction_defs = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1038
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1039
    size->max_func = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1040
    size->max_ins  = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1041
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1042
    size->bytecode_ready = -1;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1043
    size->cvt_ready      = -1;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1044
  }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1045
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1046
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1047
  /* Initialize bytecode-related fields in the size object.       */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1048
  /* We do this only if bytecode interpretation is really needed. */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1049
  static FT_Error
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1050
  tt_size_init_bytecode( FT_Size  ftsize,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1051
                         FT_Bool  pedantic )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1052
  {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1053
    FT_Error   error;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1054
    TT_Size    size = (TT_Size)ftsize;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1055
    TT_Face    face = (TT_Face)ftsize->face;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1056
    FT_Memory  memory = face->root.memory;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1057
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1058
    FT_UShort       n_twilight;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1059
    TT_MaxProfile*  maxp = &face->max_profile;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1060
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1061
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1062
    /* clean up bytecode related data */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1063
    FT_FREE( size->function_defs );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1064
    FT_FREE( size->instruction_defs );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1065
    FT_FREE( size->cvt );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1066
    FT_FREE( size->storage );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1067
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1068
    if ( size->context )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1069
      TT_Done_Context( size->context );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1070
    tt_glyphzone_done( &size->twilight );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1071
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1072
    size->bytecode_ready = -1;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1073
    size->cvt_ready      = -1;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1074
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1075
    size->context = TT_New_Context( (TT_Driver)face->root.driver );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1076
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1077
    size->max_function_defs    = maxp->maxFunctionDefs;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1078
    size->max_instruction_defs = maxp->maxInstructionDefs;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1079
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1080
    size->num_function_defs    = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1081
    size->num_instruction_defs = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1082
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1083
    size->max_func = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1084
    size->max_ins  = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1085
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1086
    size->cvt_size     = face->cvt_size;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1087
    size->storage_size = maxp->maxStorage;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1088
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1089
    /* Set default metrics */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1090
    {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1091
      TT_Size_Metrics*  tt_metrics = &size->ttmetrics;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1092
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1093
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1094
      tt_metrics->rotated   = FALSE;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1095
      tt_metrics->stretched = FALSE;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1096
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1097
      /* set default engine compensation */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1098
      tt_metrics->compensations[0] = 0;   /* gray     */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1099
      tt_metrics->compensations[1] = 0;   /* black    */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1100
      tt_metrics->compensations[2] = 0;   /* white    */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1101
      tt_metrics->compensations[3] = 0;   /* reserved */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1102
    }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1103
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1104
    /* allocate function defs, instruction defs, cvt, and storage area */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1105
    if ( FT_NEW_ARRAY( size->function_defs,    size->max_function_defs    ) ||
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1106
         FT_NEW_ARRAY( size->instruction_defs, size->max_instruction_defs ) ||
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1107
         FT_NEW_ARRAY( size->cvt,              size->cvt_size             ) ||
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1108
         FT_NEW_ARRAY( size->storage,          size->storage_size         ) )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1109
      goto Exit;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1110
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1111
    /* reserve twilight zone */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1112
    n_twilight = maxp->maxTwilightPoints;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1113
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1114
    /* there are 4 phantom points (do we need this?) */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1115
    n_twilight += 4;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1116
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1117
    error = tt_glyphzone_new( memory, n_twilight, 0, &size->twilight );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1118
    if ( error )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1119
      goto Exit;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1120
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1121
    size->twilight.n_points = n_twilight;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1122
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1123
    size->GS = tt_default_graphics_state;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1124
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1125
    /* set `face->interpreter' according to the debug hook present */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1126
    {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1127
      FT_Library  library = face->root.driver->root.library;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1128
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1129
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1130
      face->interpreter = (TT_Interpreter)
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1131
                            library->debug_hooks[FT_DEBUG_HOOK_TRUETYPE];
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1132
      if ( !face->interpreter )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1133
        face->interpreter = (TT_Interpreter)TT_RunIns;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1134
    }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1135
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1136
    /* Fine, now run the font program! */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1137
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1138
    /* In case of an error while executing `fpgm', we intentionally don't */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1139
    /* clean up immediately – bugs in the `fpgm' are so fundamental that  */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1140
    /* all following hinting calls should fail.  Additionally, `fpgm' is  */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1141
    /* to be executed just once; calling it again is completely useless   */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1142
    /* and might even lead to extremely slow behaviour if it is malformed */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1143
    /* (containing an infinite loop, for example).                        */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1144
    error = tt_size_run_fpgm( size, pedantic );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1145
    return error;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1146
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1147
  Exit:
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1148
    if ( error )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1149
      tt_size_done_bytecode( ftsize );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1150
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1151
    return error;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1152
  }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1153
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1154
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1155
  FT_LOCAL_DEF( FT_Error )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1156
  tt_size_ready_bytecode( TT_Size  size,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1157
                          FT_Bool  pedantic )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1158
  {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1159
    FT_Error  error = FT_Err_Ok;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1160
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1161
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1162
    if ( size->bytecode_ready < 0 )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1163
      error = tt_size_init_bytecode( (FT_Size)size, pedantic );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1164
    else
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1165
      error = size->bytecode_ready;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1166
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1167
    if ( error )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1168
      goto Exit;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1169
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1170
    /* rescale CVT when needed */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1171
    if ( size->cvt_ready < 0 )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1172
    {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1173
      FT_UInt  i;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1174
      TT_Face  face = (TT_Face)size->root.face;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1175
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1176
54876
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1177
      /* Scale the cvt values to the new ppem.            */
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1178
      /* By default, we use the y ppem value for scaling. */
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1179
      FT_TRACE6(( "CVT values:\n" ));
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1180
      for ( i = 0; i < size->cvt_size; i++ )
54876
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1181
      {
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1182
        size->cvt[i] = FT_MulFix( face->cvt[i], size->ttmetrics.scale );
54876
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1183
        FT_TRACE6(( "  %3d: %d (%f)\n",
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1184
                    i, face->cvt[i], size->cvt[i] / 64.0 ));
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1185
      }
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1186
      FT_TRACE6(( "\n" ));
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1187
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1188
      /* all twilight points are originally zero */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1189
      for ( i = 0; i < (FT_UInt)size->twilight.n_points; i++ )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1190
      {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1191
        size->twilight.org[i].x = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1192
        size->twilight.org[i].y = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1193
        size->twilight.cur[i].x = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1194
        size->twilight.cur[i].y = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1195
      }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1196
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1197
      /* clear storage area */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1198
      for ( i = 0; i < (FT_UInt)size->storage_size; i++ )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1199
        size->storage[i] = 0;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1200
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1201
      size->GS = tt_default_graphics_state;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1202
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1203
      error = tt_size_run_prep( size, pedantic );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1204
    }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1205
    else
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1206
      error = size->cvt_ready;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1207
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1208
  Exit:
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1209
    return error;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1210
  }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1211
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1212
#endif /* TT_USE_BYTECODE_INTERPRETER */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1213
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1214
54876
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1215
  /**************************************************************************
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1216
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1217
   * @Function:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1218
   *   tt_size_init
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1219
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1220
   * @Description:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1221
   *   Initialize a new TrueType size object.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1222
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1223
   * @InOut:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1224
   *   size ::
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1225
   *     A handle to the size object.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1226
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1227
   * @Return:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1228
   *   FreeType error code.  0 means success.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1229
   */
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1230
  FT_LOCAL_DEF( FT_Error )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1231
  tt_size_init( FT_Size  ttsize )           /* TT_Size */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1232
  {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1233
    TT_Size   size  = (TT_Size)ttsize;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1234
    FT_Error  error = FT_Err_Ok;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1235
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1236
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1237
#ifdef TT_USE_BYTECODE_INTERPRETER
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1238
    size->bytecode_ready = -1;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1239
    size->cvt_ready      = -1;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1240
#endif
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1241
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1242
    size->ttmetrics.valid = FALSE;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1243
    size->strike_index    = 0xFFFFFFFFUL;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1244
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1245
    return error;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1246
  }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1247
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1248
54876
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1249
  /**************************************************************************
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1250
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1251
   * @Function:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1252
   *   tt_size_done
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1253
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1254
   * @Description:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1255
   *   The TrueType size object finalizer.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1256
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1257
   * @Input:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1258
   *   size ::
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1259
   *     A handle to the target size object.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1260
   */
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1261
  FT_LOCAL_DEF( void )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1262
  tt_size_done( FT_Size  ttsize )           /* TT_Size */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1263
  {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1264
    TT_Size  size = (TT_Size)ttsize;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1265
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1266
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1267
#ifdef TT_USE_BYTECODE_INTERPRETER
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1268
    tt_size_done_bytecode( ttsize );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1269
#endif
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1270
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1271
    size->ttmetrics.valid = FALSE;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1272
  }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1273
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1274
54876
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1275
  /**************************************************************************
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1276
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1277
   * @Function:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1278
   *   tt_size_reset
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1279
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1280
   * @Description:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1281
   *   Reset a TrueType size when resolutions and character dimensions
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1282
   *   have been changed.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1283
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1284
   * @Input:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1285
   *   size ::
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1286
   *     A handle to the target size object.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1287
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1288
   *   only_height ::
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1289
   *     Only recompute ascender, descender, and height;
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1290
   *     this flag is used for variation fonts where
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1291
   *     `tt_size_reset' is used as an iterator function.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1292
   */
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1293
  FT_LOCAL_DEF( FT_Error )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1294
  tt_size_reset( TT_Size  size,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1295
                 FT_Bool  only_height )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1296
  {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1297
    TT_Face           face;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1298
    FT_Size_Metrics*  size_metrics;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1299
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1300
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1301
    face = (TT_Face)size->root.face;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1302
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1303
    /* nothing to do for CFF2 */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1304
    if ( face->is_cff2 )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1305
      return FT_Err_Ok;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1306
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1307
    size->ttmetrics.valid = FALSE;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1308
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1309
    size_metrics = &size->hinted_metrics;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1310
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1311
    /* copy the result from base layer */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1312
    *size_metrics = size->root.metrics;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1313
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1314
    if ( size_metrics->x_ppem < 1 || size_metrics->y_ppem < 1 )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1315
      return FT_THROW( Invalid_PPem );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1316
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1317
    /* This bit flag, if set, indicates that the ppems must be       */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1318
    /* rounded to integers.  Nearly all TrueType fonts have this bit */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1319
    /* set, as hinting won't work really well otherwise.             */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1320
    /*                                                               */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1321
    if ( face->header.Flags & 8 )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1322
    {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1323
      /* the TT spec always asks for ROUND, not FLOOR or CEIL */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1324
      size_metrics->ascender = FT_PIX_ROUND(
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1325
                                 FT_MulFix( face->root.ascender,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1326
                                            size_metrics->y_scale ) );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1327
      size_metrics->descender = FT_PIX_ROUND(
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1328
                                 FT_MulFix( face->root.descender,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1329
                                            size_metrics->y_scale ) );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1330
      size_metrics->height = FT_PIX_ROUND(
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1331
                               FT_MulFix( face->root.height,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1332
                                          size_metrics->y_scale ) );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1333
    }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1334
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1335
    size->ttmetrics.valid = TRUE;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1336
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1337
    if ( only_height )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1338
    {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1339
      /* we must not recompute the scaling values here since       */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1340
      /* `tt_size_reset' was already called (with only_height = 0) */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1341
      return FT_Err_Ok;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1342
    }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1343
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1344
    if ( face->header.Flags & 8 )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1345
    {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1346
      /* base scaling values on integer ppem values, */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1347
      /* as mandated by the TrueType specification   */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1348
      size_metrics->x_scale = FT_DivFix( size_metrics->x_ppem << 6,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1349
                                         face->root.units_per_EM );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1350
      size_metrics->y_scale = FT_DivFix( size_metrics->y_ppem << 6,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1351
                                         face->root.units_per_EM );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1352
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1353
      size_metrics->max_advance = FT_PIX_ROUND(
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1354
                                    FT_MulFix( face->root.max_advance_width,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1355
                                               size_metrics->x_scale ) );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1356
    }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1357
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1358
    /* compute new transformation */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1359
    if ( size_metrics->x_ppem >= size_metrics->y_ppem )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1360
    {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1361
      size->ttmetrics.scale   = size_metrics->x_scale;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1362
      size->ttmetrics.ppem    = size_metrics->x_ppem;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1363
      size->ttmetrics.x_ratio = 0x10000L;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1364
      size->ttmetrics.y_ratio = FT_DivFix( size_metrics->y_ppem,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1365
                                           size_metrics->x_ppem );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1366
    }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1367
    else
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1368
    {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1369
      size->ttmetrics.scale   = size_metrics->y_scale;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1370
      size->ttmetrics.ppem    = size_metrics->y_ppem;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1371
      size->ttmetrics.x_ratio = FT_DivFix( size_metrics->x_ppem,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1372
                                           size_metrics->y_ppem );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1373
      size->ttmetrics.y_ratio = 0x10000L;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1374
    }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1375
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1376
    size->metrics = size_metrics;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1377
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1378
#ifdef TT_USE_BYTECODE_INTERPRETER
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1379
    size->cvt_ready = -1;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1380
#endif /* TT_USE_BYTECODE_INTERPRETER */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1381
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1382
    return FT_Err_Ok;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1383
  }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1384
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1385
54876
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1386
  /**************************************************************************
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1387
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1388
   * @Function:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1389
   *   tt_driver_init
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1390
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1391
   * @Description:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1392
   *   Initialize a given TrueType driver object.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1393
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1394
   * @Input:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1395
   *   driver ::
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1396
   *     A handle to the target driver object.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1397
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1398
   * @Return:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1399
   *   FreeType error code.  0 means success.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1400
   */
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1401
  FT_LOCAL_DEF( FT_Error )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1402
  tt_driver_init( FT_Module  ttdriver )     /* TT_Driver */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1403
  {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1404
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1405
#ifdef TT_USE_BYTECODE_INTERPRETER
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1406
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1407
    TT_Driver  driver = (TT_Driver)ttdriver;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1408
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1409
    driver->interpreter_version = TT_INTERPRETER_VERSION_35;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1410
#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1411
    driver->interpreter_version = TT_INTERPRETER_VERSION_38;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1412
#endif
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1413
#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1414
    driver->interpreter_version = TT_INTERPRETER_VERSION_40;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1415
#endif
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1416
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1417
#else /* !TT_USE_BYTECODE_INTERPRETER */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1418
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1419
    FT_UNUSED( ttdriver );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1420
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1421
#endif /* !TT_USE_BYTECODE_INTERPRETER */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1422
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1423
    return FT_Err_Ok;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1424
  }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1425
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1426
54876
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1427
  /**************************************************************************
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1428
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1429
   * @Function:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1430
   *   tt_driver_done
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1431
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1432
   * @Description:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1433
   *   Finalize a given TrueType driver.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1434
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1435
   * @Input:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1436
   *   driver ::
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1437
   *     A handle to the target TrueType driver.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1438
   */
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1439
  FT_LOCAL_DEF( void )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1440
  tt_driver_done( FT_Module  ttdriver )     /* TT_Driver */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1441
  {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1442
    FT_UNUSED( ttdriver );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1443
  }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1444
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1445
54876
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1446
  /**************************************************************************
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1447
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1448
   * @Function:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1449
   *   tt_slot_init
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1450
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1451
   * @Description:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1452
   *   Initialize a new slot object.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1453
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1454
   * @InOut:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1455
   *   slot ::
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1456
   *     A handle to the slot object.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1457
   *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1458
   * @Return:
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1459
   *   FreeType error code.  0 means success.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
  1460
   */
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1461
  FT_LOCAL_DEF( FT_Error )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1462
  tt_slot_init( FT_GlyphSlot  slot )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1463
  {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1464
    return FT_GlyphLoader_CreateExtra( slot->internal->loader );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1465
  }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1466
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1467
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
  1468
/* END */