ReactOS  0.4.13-dev-982-g9853eab
ttobjs.c File Reference
#include <ft2build.h>
#include "ttgload.h"
#include "ttpload.h"
#include "tterrors.h"
Include dependency graph for ttobjs.c:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  tt_sfnt_id_rec_
 

Macros

#define FT_COMPONENT   trace_ttobjs
 
#define TRICK_NAMES_MAX_CHARACTERS   19
 
#define TRICK_NAMES_COUNT   23
 
#define TRICK_SFNT_IDS_PER_FACE   3
 
#define TRICK_SFNT_IDS_NUM_FACES   26
 
#define TRICK_SFNT_ID_cvt   0
 
#define TRICK_SFNT_ID_fpgm   1
 
#define TRICK_SFNT_ID_prep   2
 

Typedefs

typedef struct tt_sfnt_id_rec_ tt_sfnt_id_rec
 

Functions

static FT_Bool tt_check_trickyness_family (FT_String *name)
 
static FT_UInt32 tt_synth_sfnt_checksum (FT_Stream stream, FT_ULong length)
 
static FT_ULong tt_get_sfnt_checksum (TT_Face face, FT_UShort i)
 
static FT_Bool tt_check_trickyness_sfnt_ids (TT_Face face)
 
static FT_Bool tt_check_trickyness (FT_Face face)
 
static FT_Bool tt_check_single_notdef (FT_Face ttface)
 
 tt_face_init (FT_Stream stream, FT_Face ttface, FT_Int face_index, FT_Int num_params, FT_Parameter *params)
 
 tt_face_done (FT_Face ttface)
 
 tt_size_init (FT_Size ttsize)
 
 tt_size_done (FT_Size ttsize)
 
 tt_size_reset (TT_Size size, FT_Bool only_height)
 
 tt_driver_init (FT_Module ttdriver)
 
 tt_driver_done (FT_Module ttdriver)
 
 tt_slot_init (FT_GlyphSlot slot)
 

Macro Definition Documentation

◆ FT_COMPONENT

#define FT_COMPONENT   trace_ttobjs

Definition at line 46 of file ttobjs.c.

◆ TRICK_NAMES_COUNT

#define TRICK_NAMES_COUNT   23

◆ TRICK_NAMES_MAX_CHARACTERS

#define TRICK_NAMES_MAX_CHARACTERS   19

◆ TRICK_SFNT_ID_cvt

#define TRICK_SFNT_ID_cvt   0

◆ TRICK_SFNT_ID_fpgm

#define TRICK_SFNT_ID_fpgm   1

◆ TRICK_SFNT_ID_prep

#define TRICK_SFNT_ID_prep   2

◆ TRICK_SFNT_IDS_NUM_FACES

#define TRICK_SFNT_IDS_NUM_FACES   26

◆ TRICK_SFNT_IDS_PER_FACE

#define TRICK_SFNT_IDS_PER_FACE   3

Typedef Documentation

◆ tt_sfnt_id_rec

Function Documentation

◆ tt_check_single_notdef()

static FT_Bool tt_check_single_notdef ( FT_Face  ttface)
static

Definition at line 505 of file ttobjs.c.

506  {
507  FT_Bool result = FALSE;
508 
509  TT_Face face = (TT_Face)ttface;
510  FT_UInt asize;
511  FT_ULong i;
512  FT_ULong glyph_index = 0;
513  FT_UInt count = 0;
514 
515 
516  for( i = 0; i < face->num_locations; i++ )
517  {
518  tt_face_get_location( face, i, &asize );
519  if ( asize > 0 )
520  {
521  count += 1;
522  if ( count > 1 )
523  break;
524  glyph_index = i;
525  }
526  }
527 
528  /* Only have a single outline. */
529  if ( count == 1 )
530  {
531  if ( glyph_index == 0 )
532  result = TRUE;
533  else
534  {
535  /* FIXME: Need to test glyphname == .notdef ? */
536  FT_Error error;
537  char buf[8];
538 
539 
540  error = FT_Get_Glyph_Name( ttface, glyph_index, buf, 8 );
541  if ( !error &&
542  buf[0] == '.' && !ft_strncmp( buf, ".notdef", 8 ) )
543  result = TRUE;
544  }
545  }
546 
547  return result;
548  }
int FT_Error
Definition: fttypes.h:300
#define TRUE
Definition: types.h:120
#define ft_strncmp
Definition: ftstdlib.h:89
unsigned long FT_ULong
Definition: fttypes.h:253
#define error(str)
Definition: mkdosfs.c:1605
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
GLuint GLuint GLsizei count
Definition: gl.h:1545
FT_BEGIN_HEADER typedef unsigned char FT_Bool
Definition: fttypes.h:108
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
struct TT_FaceRec_ * TT_Face
Definition: tttypes.h:973
unsigned int FT_UInt
Definition: fttypes.h:231
GLuint64EXT * result
Definition: glext.h:11304
FT_Get_Glyph_Name(FT_Face face, FT_UInt glyph_index, FT_Pointer buffer, FT_UInt buffer_max)
Definition: ftobjs.c:4047
GLenum GLuint GLint GLenum face
Definition: glext.h:7025
tt_face_get_location(TT_Face face, FT_UInt gindex, FT_UInt *asize)
Definition: ttpload.c:195

Referenced by tt_face_init().

◆ tt_check_trickyness()

static FT_Bool tt_check_trickyness ( FT_Face  face)
static

Definition at line 483 of file ttobjs.c.

484  {
485  if ( !face )
486  return FALSE;
487 
488  /* For first, check the face name for quick check. */
489  if ( face->family_name &&
490  tt_check_trickyness_family( face->family_name ) )
491  return TRUE;
492 
493  /* Type42 fonts may lack `name' tables, we thus try to identify */
494  /* tricky fonts by checking the checksums of Type42-persistent */
495  /* sfnt tables (`cvt', `fpgm', and `prep'). */
497  return TRUE;
498 
499  return FALSE;
500  }
#define TRUE
Definition: types.h:120
static FT_Bool tt_check_trickyness_sfnt_ids(TT_Face face)
Definition: ttobjs.c:270
static FT_Bool tt_check_trickyness_family(FT_String *name)
Definition: ttobjs.c:146
GLenum GLuint GLint GLenum face
Definition: glext.h:7025

Referenced by tt_face_init().

◆ tt_check_trickyness_family()

static FT_Bool tt_check_trickyness_family ( FT_String name)
static

Definition at line 146 of file ttobjs.c.

147  {
148 
149 #define TRICK_NAMES_MAX_CHARACTERS 19
150 #define TRICK_NAMES_COUNT 23
151 
152  static const char trick_names[TRICK_NAMES_COUNT]
154  {
155  /*
156  PostScript names are given in brackets if they differ from the
157  family name. The version numbers, together with the copyright or
158  release year data, are taken from fonts available to the
159  developers.
160 
161  Note that later versions of the fonts might be no longer tricky;
162  for example, `MingLiU' version 7.00 (file `mingliu.ttc' from
163  Windows 7) is an ordinary TTC with non-tricky subfonts.
164  */
165 
166  "cpop", /* dftt-p7.ttf; version 1.00, 1992 [DLJGyShoMedium] */
167  "DFGirl-W6-WIN-BF", /* dftt-h6.ttf; version 1.00, 1993 */
168  "DFGothic-EB", /* DynaLab Inc. 1992-1995 */
169  "DFGyoSho-Lt", /* DynaLab Inc. 1992-1995 */
170  "DFHSGothic-W5", /* DynaLab Inc. 1992-1995 */
171  "DFHSMincho-W3", /* DynaLab Inc. 1992-1995 */
172  "DFHSMincho-W7", /* DynaLab Inc. 1992-1995 */
173  "DFKaiSho-SB", /* dfkaisb.ttf */
174  "DFKaiShu",
175  "DFKai-SB", /* kaiu.ttf; version 3.00, 1998 [DFKaiShu-SB-Estd-BF] */
176  "DLC", /* dftt-m7.ttf; version 1.00, 1993 [DLCMingBold] */
177  /* dftt-f5.ttf; version 1.00, 1993 [DLCFongSung] */
178  "DLCHayMedium", /* dftt-b5.ttf; version 1.00, 1993 */
179  "DLCHayBold", /* dftt-b7.ttf; version 1.00, 1993 */
180  "DLCKaiMedium", /* dftt-k5.ttf; version 1.00, 1992 */
181  "DLCLiShu", /* dftt-l5.ttf; version 1.00, 1992 */
182  "DLCRoundBold", /* dftt-r7.ttf; version 1.00, 1993 */
183  "HuaTianKaiTi?", /* htkt2.ttf */
184  "HuaTianSongTi?", /* htst3.ttf */
185  "Ming(for ISO10646)", /* hkscsiic.ttf; version 0.12, 2007 [Ming] */
186  /* iicore.ttf; version 0.07, 2007 [Ming] */
187  "MingLiU", /* mingliu.ttf */
188  /* mingliu.ttc; version 3.21, 2001 */
189  "MingMedium", /* dftt-m5.ttf; version 1.00, 1993 [DLCMingMedium] */
190  "PMingLiU", /* mingliu.ttc; version 3.21, 2001 */
191  "MingLi43", /* mingli.ttf; version 1.00, 1992 */
192  };
193 
194  int nn;
195 
196 
197  for ( nn = 0; nn < TRICK_NAMES_COUNT; nn++ )
198  if ( ft_strstr( name, trick_names[nn] ) )
199  return TRUE;
200 
201  return FALSE;
202  }
#define TRUE
Definition: types.h:120
#define ft_strstr
Definition: ftstdlib.h:92
#define TRICK_NAMES_COUNT
Definition: name.c:36
#define TRICK_NAMES_MAX_CHARACTERS

Referenced by tt_check_trickyness().

◆ tt_check_trickyness_sfnt_ids()

static FT_Bool tt_check_trickyness_sfnt_ids ( TT_Face  face)
static

Definition at line 270 of file ttobjs.c.

271  {
272 #define TRICK_SFNT_IDS_PER_FACE 3
273 #define TRICK_SFNT_IDS_NUM_FACES 26
274 
275  static const tt_sfnt_id_rec sfnt_id[TRICK_SFNT_IDS_NUM_FACES]
277 
278 #define TRICK_SFNT_ID_cvt 0
279 #define TRICK_SFNT_ID_fpgm 1
280 #define TRICK_SFNT_ID_prep 2
281 
282  { /* MingLiU 1995 */
283  { 0x05BCF058UL, 0x000002E4UL }, /* cvt */
284  { 0x28233BF1UL, 0x000087C4UL }, /* fpgm */
285  { 0xA344A1EAUL, 0x000001E1UL } /* prep */
286  },
287  { /* MingLiU 1996- */
288  { 0x05BCF058UL, 0x000002E4UL }, /* cvt */
289  { 0x28233BF1UL, 0x000087C4UL }, /* fpgm */
290  { 0xA344A1EBUL, 0x000001E1UL } /* prep */
291  },
292  { /* DFGothic-EB */
293  { 0x12C3EBB2UL, 0x00000350UL }, /* cvt */
294  { 0xB680EE64UL, 0x000087A7UL }, /* fpgm */
295  { 0xCE939563UL, 0x00000758UL } /* prep */
296  },
297  { /* DFGyoSho-Lt */
298  { 0x11E5EAD4UL, 0x00000350UL }, /* cvt */
299  { 0xCE5956E9UL, 0x0000BC85UL }, /* fpgm */
300  { 0x8272F416UL, 0x00000045UL } /* prep */
301  },
302  { /* DFHSGothic-W5 */
303  { 0x1262EB4EUL, 0x00000350UL }, /* cvt */
304  { 0xE86A5D64UL, 0x00007940UL }, /* fpgm */
305  { 0x7850F729UL, 0x000005FFUL } /* prep */
306  },
307  { /* DFHSMincho-W3 */
308  { 0x122DEB0AUL, 0x00000350UL }, /* cvt */
309  { 0x3D16328AUL, 0x0000859BUL }, /* fpgm */
310  { 0xA93FC33BUL, 0x000002CBUL } /* prep */
311  },
312  { /* DFHSMincho-W7 */
313  { 0x125FEB26UL, 0x00000350UL }, /* cvt */
314  { 0xA5ACC982UL, 0x00007EE1UL }, /* fpgm */
315  { 0x90999196UL, 0x0000041FUL } /* prep */
316  },
317  { /* DFKaiShu */
318  { 0x11E5EAD4UL, 0x00000350UL }, /* cvt */
319  { 0x5A30CA3BUL, 0x00009063UL }, /* fpgm */
320  { 0x13A42602UL, 0x0000007EUL } /* prep */
321  },
322  { /* DFKaiShu, variant */
323  { 0x11E5EAD4UL, 0x00000350UL }, /* cvt */
324  { 0xA6E78C01UL, 0x00008998UL }, /* fpgm */
325  { 0x13A42602UL, 0x0000007EUL } /* prep */
326  },
327  { /* DLCLiShu */
328  { 0x07DCF546UL, 0x00000308UL }, /* cvt */
329  { 0x40FE7C90UL, 0x00008E2AUL }, /* fpgm */
330  { 0x608174B5UL, 0x0000007AUL } /* prep */
331  },
332  { /* DLCHayBold */
333  { 0xEB891238UL, 0x00000308UL }, /* cvt */
334  { 0xD2E4DCD4UL, 0x0000676FUL }, /* fpgm */
335  { 0x8EA5F293UL, 0x000003B8UL } /* prep */
336  },
337  { /* HuaTianKaiTi */
338  { 0xFFFBFFFCUL, 0x00000008UL }, /* cvt */
339  { 0x9C9E48B8UL, 0x0000BEA2UL }, /* fpgm */
340  { 0x70020112UL, 0x00000008UL } /* prep */
341  },
342  { /* HuaTianSongTi */
343  { 0xFFFBFFFCUL, 0x00000008UL }, /* cvt */
344  { 0x0A5A0483UL, 0x00017C39UL }, /* fpgm */
345  { 0x70020112UL, 0x00000008UL } /* prep */
346  },
347  { /* NEC fadpop7.ttf */
348  { 0x00000000UL, 0x00000000UL }, /* cvt */
349  { 0x40C92555UL, 0x000000E5UL }, /* fpgm */
350  { 0xA39B58E3UL, 0x0000117CUL } /* prep */
351  },
352  { /* NEC fadrei5.ttf */
353  { 0x00000000UL, 0x00000000UL }, /* cvt */
354  { 0x33C41652UL, 0x000000E5UL }, /* fpgm */
355  { 0x26D6C52AUL, 0x00000F6AUL } /* prep */
356  },
357  { /* NEC fangot7.ttf */
358  { 0x00000000UL, 0x00000000UL }, /* cvt */
359  { 0x6DB1651DUL, 0x0000019DUL }, /* fpgm */
360  { 0x6C6E4B03UL, 0x00002492UL } /* prep */
361  },
362  { /* NEC fangyo5.ttf */
363  { 0x00000000UL, 0x00000000UL }, /* cvt */
364  { 0x40C92555UL, 0x000000E5UL }, /* fpgm */
365  { 0xDE51FAD0UL, 0x0000117CUL } /* prep */
366  },
367  { /* NEC fankyo5.ttf */
368  { 0x00000000UL, 0x00000000UL }, /* cvt */
369  { 0x85E47664UL, 0x000000E5UL }, /* fpgm */
370  { 0xA6C62831UL, 0x00001CAAUL } /* prep */
371  },
372  { /* NEC fanrgo5.ttf */
373  { 0x00000000UL, 0x00000000UL }, /* cvt */
374  { 0x2D891CFDUL, 0x0000019DUL }, /* fpgm */
375  { 0xA0604633UL, 0x00001DE8UL } /* prep */
376  },
377  { /* NEC fangot5.ttc */
378  { 0x00000000UL, 0x00000000UL }, /* cvt */
379  { 0x40AA774CUL, 0x000001CBUL }, /* fpgm */
380  { 0x9B5CAA96UL, 0x00001F9AUL } /* prep */
381  },
382  { /* NEC fanmin3.ttc */
383  { 0x00000000UL, 0x00000000UL }, /* cvt */
384  { 0x0D3DE9CBUL, 0x00000141UL }, /* fpgm */
385  { 0xD4127766UL, 0x00002280UL } /* prep */
386  },
387  { /* NEC FA-Gothic, 1996 */
388  { 0x00000000UL, 0x00000000UL }, /* cvt */
389  { 0x4A692698UL, 0x000001F0UL }, /* fpgm */
390  { 0x340D4346UL, 0x00001FCAUL } /* prep */
391  },
392  { /* NEC FA-Minchou, 1996 */
393  { 0x00000000UL, 0x00000000UL }, /* cvt */
394  { 0xCD34C604UL, 0x00000166UL }, /* fpgm */
395  { 0x6CF31046UL, 0x000022B0UL } /* prep */
396  },
397  { /* NEC FA-RoundGothicB, 1996 */
398  { 0x00000000UL, 0x00000000UL }, /* cvt */
399  { 0x5DA75315UL, 0x0000019DUL }, /* fpgm */
400  { 0x40745A5FUL, 0x000022E0UL } /* prep */
401  },
402  { /* NEC FA-RoundGothicM, 1996 */
403  { 0x00000000UL, 0x00000000UL }, /* cvt */
404  { 0xF055FC48UL, 0x000001C2UL }, /* fpgm */
405  { 0x3900DED3UL, 0x00001E18UL } /* prep */
406  },
407  { /* MINGLI.TTF, 1992 */
408  { 0x00170003UL, 0x00000060UL }, /* cvt */
409  { 0xDBB4306EUL, 0x000058AAUL }, /* fpgm */
410  { 0xD643482AUL, 0x00000035UL } /* prep */
411  }
412  };
413 
415  int num_matched_ids[TRICK_SFNT_IDS_NUM_FACES];
416  FT_Bool has_cvt, has_fpgm, has_prep;
417  FT_UShort i;
418  int j, k;
419 
420 
421  FT_MEM_SET( num_matched_ids, 0,
422  sizeof ( int ) * TRICK_SFNT_IDS_NUM_FACES );
423  has_cvt = FALSE;
424  has_fpgm = FALSE;
425  has_prep = FALSE;
426 
427  for ( i = 0; i < face->num_tables; i++ )
428  {
429  checksum = 0;
430 
431  switch( face->dir_tables[i].Tag )
432  {
433  case TTAG_cvt:
435  has_cvt = TRUE;
436  break;
437 
438  case TTAG_fpgm:
440  has_fpgm = TRUE;
441  break;
442 
443  case TTAG_prep:
445  has_prep = TRUE;
446  break;
447 
448  default:
449  continue;
450  }
451 
452  for ( j = 0; j < TRICK_SFNT_IDS_NUM_FACES; j++ )
453  if ( face->dir_tables[i].Length == sfnt_id[j][k].Length )
454  {
455  if ( !checksum )
457 
458  if ( sfnt_id[j][k].CheckSum == checksum )
459  num_matched_ids[j]++;
460 
461  if ( num_matched_ids[j] == TRICK_SFNT_IDS_PER_FACE )
462  return TRUE;
463  }
464  }
465 
466  for ( j = 0; j < TRICK_SFNT_IDS_NUM_FACES; j++ )
467  {
468  if ( !has_cvt && !sfnt_id[j][TRICK_SFNT_ID_cvt].Length )
469  num_matched_ids[j]++;
470  if ( !has_fpgm && !sfnt_id[j][TRICK_SFNT_ID_fpgm].Length )
471  num_matched_ids[j]++;
472  if ( !has_prep && !sfnt_id[j][TRICK_SFNT_ID_prep].Length )
473  num_matched_ids[j]++;
474  if ( num_matched_ids[j] == TRICK_SFNT_IDS_PER_FACE )
475  return TRUE;
476  }
477 
478  return FALSE;
479  }
static FT_ULong tt_get_sfnt_checksum(TT_Face face, FT_UShort i)
Definition: ttobjs.c:239
#define TRICK_SFNT_IDS_NUM_FACES
#define TRICK_SFNT_ID_cvt
#define TRUE
Definition: types.h:120
unsigned long FT_ULong
Definition: fttypes.h:253
FT_BEGIN_HEADER typedef unsigned char FT_Bool
Definition: fttypes.h:108
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define TTAG_fpgm
Definition: tttags.h:57
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
#define TRICK_SFNT_IDS_PER_FACE
UCHAR CheckSum(LPSTR p, ULONG Len)
Definition: serial.c:197
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
static cab_ULONG checksum(const cab_UBYTE *data, cab_UWORD bytes, cab_ULONG csum)
Definition: fdi.c:353
#define TTAG_cvt
Definition: tttags.h:50
#define TRICK_SFNT_ID_prep
#define FT_MEM_SET(dest, byte, count)
Definition: ftmemory.h:225
unsigned short FT_UShort
Definition: fttypes.h:209
#define UL
Definition: tui.h:83
int k
Definition: mpi.c:3369
GLenum GLuint GLint GLenum face
Definition: glext.h:7025
#define TRICK_SFNT_ID_fpgm
#define TTAG_prep
Definition: tttags.h:92

Referenced by tt_check_trickyness().

◆ tt_driver_done()

tt_driver_done ( FT_Module  ttdriver)

Definition at line 1395 of file ttobjs.c.

1396  {
1397  FT_UNUSED( ttdriver );
1398  }
#define FT_UNUSED(arg)
Definition: ftconfig.h:101

◆ tt_driver_init()

tt_driver_init ( FT_Module  ttdriver)

Definition at line 1358 of file ttobjs.c.

1359  {
1360 
1361 #ifdef TT_USE_BYTECODE_INTERPRETER
1362 
1363  TT_Driver driver = (TT_Driver)ttdriver;
1364 
1365  driver->interpreter_version = TT_INTERPRETER_VERSION_35;
1366 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
1367  driver->interpreter_version = TT_INTERPRETER_VERSION_38;
1368 #endif
1369 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
1370  driver->interpreter_version = TT_INTERPRETER_VERSION_40;
1371 #endif
1372 
1373 #else /* !TT_USE_BYTECODE_INTERPRETER */
1374 
1375  FT_UNUSED( ttdriver );
1376 
1377 #endif /* !TT_USE_BYTECODE_INTERPRETER */
1378 
1379  return FT_Err_Ok;
1380  }
#define TT_INTERPRETER_VERSION_38
Definition: ftdriver.h:748
typedefFT_BEGIN_HEADER struct TT_DriverRec_ * TT_Driver
Definition: ttobjs.h:39
return FT_Err_Ok
Definition: ftbbox.c:511
struct @1603::@1604 driver
#define TT_INTERPRETER_VERSION_35
Definition: ftdriver.h:747
#define TT_INTERPRETER_VERSION_40
Definition: ftdriver.h:749
#define FT_UNUSED(arg)
Definition: ftconfig.h:101

◆ tt_face_done()

tt_face_done ( FT_Face  ttface)

Definition at line 740 of file ttobjs.c.

741  {
742  TT_Face face = (TT_Face)ttface;
746 
747 
748  if ( !face )
749  return;
750 
751  memory = ttface->memory;
752  stream = ttface->stream;
753  sfnt = (SFNT_Service)face->sfnt;
754 
755  /* for `extended TrueType formats' (i.e. compressed versions) */
756  if ( face->extra.finalizer )
757  face->extra.finalizer( face->extra.data );
758 
759  if ( sfnt )
760  sfnt->done_face( face );
761 
762  /* freeing the locations table */
764 
766 
767  /* freeing the CVT */
768  FT_FREE( face->cvt );
769  face->cvt_size = 0;
770 
771  /* freeing the programs */
772  FT_FRAME_RELEASE( face->font_program );
773  FT_FRAME_RELEASE( face->cvt_program );
774  face->font_program_size = 0;
775  face->cvt_program_size = 0;
776 
777 #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
778  tt_done_blend( face );
779  face->blend = NULL;
780 #endif
781  }
TT_Done_Face_Func done_face
Definition: sfnt.h:568
SFNT_Interface * SFNT_Service
Definition: sfnt.h:628
SFNT_Service sfnt
Definition: ttdriver.c:206
static char memory[1024 *256]
Definition: process.c:116
tt_face_free_hdmx(TT_Face face)
Definition: ttpload.c:602
smooth NULL
Definition: ftsmooth.c:416
#define FT_FREE(ptr)
Definition: ftmemory.h:329
struct TT_FaceRec_ * TT_Face
Definition: tttypes.h:973
if(!(yy_init))
Definition: macro.lex.yy.c:714
FT_Stream stream
Definition: freetype.h:1113
Definition: parse.h:22
GLuint GLuint stream
Definition: glext.h:7522
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
Definition: ftsystem.h:66
#define FT_FRAME_RELEASE(bytes)
Definition: ftstream.h:526
FT_Memory memory
Definition: freetype.h:1112
GLenum GLuint GLint GLenum face
Definition: glext.h:7025
tt_face_done_loca(TT_Face face)
Definition: ttpload.c:289

◆ tt_face_init()

tt_face_init ( FT_Stream  stream,
FT_Face  ttface,
FT_Int  face_index,
FT_Int  num_params,
FT_Parameter params 
)

Definition at line 578 of file ttobjs.c.

583  {
584  FT_Error error;
587  TT_Face face = (TT_Face)ttface;
588 
589 
590  FT_TRACE2(( "TTF driver\n" ));
591 
592  library = ttface->driver->root.library;
593 
595  if ( !sfnt )
596  {
597  FT_ERROR(( "tt_face_init: cannot access `sfnt' module\n" ));
598  error = FT_THROW( Missing_Module );
599  goto Exit;
600  }
601 
602  /* create input stream from resource */
603  if ( FT_STREAM_SEEK( 0 ) )
604  goto Exit;
605 
606  /* check that we have a valid TrueType file */
607  FT_TRACE2(( " " ));
608  error = sfnt->init_face( stream, face, face_index, num_params, params );
609 
610  /* Stream may have changed. */
611  stream = face->root.stream;
612 
613  if ( error )
614  goto Exit;
615 
616  /* We must also be able to accept Mac/GX fonts, as well as OT ones. */
617  /* The 0x00020000 tag is completely undocumented; some fonts from */
618  /* Arphic made for Chinese Windows 3.1 have this. */
619  if ( face->format_tag != 0x00010000L && /* MS fonts */
620  face->format_tag != 0x00020000L && /* CJK fonts for Win 3.1 */
621  face->format_tag != TTAG_true && /* Mac fonts */
622  face->format_tag != TTAG_0xA5kbd && /* `Keyboard.dfont' (legacy Mac OS X) */
623  face->format_tag != TTAG_0xA5lst ) /* `LastResort.dfont' (legacy Mac OS X) */
624  {
625  FT_TRACE2(( " not a TTF font\n" ));
626  goto Bad_Format;
627  }
628 
629 #ifdef TT_USE_BYTECODE_INTERPRETER
630  ttface->face_flags |= FT_FACE_FLAG_HINTER;
631 #endif
632 
633  /* If we are performing a simple font format check, exit immediately. */
634  if ( face_index < 0 )
635  return FT_Err_Ok;
636 
637  /* Load font directory */
638  error = sfnt->load_face( stream, face, face_index, num_params, params );
639  if ( error )
640  goto Exit;
641 
642  if ( tt_check_trickyness( ttface ) )
643  ttface->face_flags |= FT_FACE_FLAG_TRICKY;
644 
646  if ( error )
647  goto Exit;
648 
649  if ( FT_IS_SCALABLE( ttface ) )
650  {
651 #ifdef FT_CONFIG_OPTION_INCREMENTAL
652  if ( !ttface->internal->incremental_interface )
653 #endif
654  {
656 
657  /* having a (non-zero) `glyf' table without */
658  /* a `loca' table is not valid */
659  if ( face->glyf_len && FT_ERR_EQ( error, Table_Missing ) )
660  goto Exit;
661  if ( error )
662  goto Exit;
663  }
664 
665  /* `fpgm', `cvt', and `prep' are optional */
667  if ( error && FT_ERR_NEQ( error, Table_Missing ) )
668  goto Exit;
669 
671  if ( error && FT_ERR_NEQ( error, Table_Missing ) )
672  goto Exit;
673 
675  if ( error && FT_ERR_NEQ( error, Table_Missing ) )
676  goto Exit;
677 
678  /* Check the scalable flag based on `loca'. */
679 #ifdef FT_CONFIG_OPTION_INCREMENTAL
680  if ( !ttface->internal->incremental_interface )
681 #endif
682  {
683  if ( ttface->num_fixed_sizes &&
684  face->glyph_locations &&
685  tt_check_single_notdef( ttface ) )
686  {
687  FT_TRACE5(( "tt_face_init:"
688  " Only the `.notdef' glyph has an outline.\n"
689  " "
690  " Resetting scalable flag to FALSE.\n" ));
691 
692  ttface->face_flags &= ~FT_FACE_FLAG_SCALABLE;
693  }
694  }
695  }
696 
697 #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
698 
699  {
700  FT_UInt instance_index = (FT_UInt)face_index >> 16;
701 
702 
703  if ( FT_HAS_MULTIPLE_MASTERS( ttface ) &&
704  instance_index > 0 )
705  {
706  error = TT_Set_Named_Instance( face, instance_index );
707  if ( error )
708  goto Exit;
709 
710  tt_apply_mvar( face );
711  }
712  }
713 
714 #endif /* TT_CONFIG_OPTION_GX_VAR_SUPPORT */
715 
716  /* initialize standard glyph loading routines */
718 
719  Exit:
720  return error;
721 
722  Bad_Format:
723  error = FT_THROW( Unknown_File_Format );
724  goto Exit;
725  }
int FT_Error
Definition: fttypes.h:300
FT_Face_Internal internal
Definition: freetype.h:1120
SFNT_Interface * SFNT_Service
Definition: sfnt.h:628
static FT_Bool tt_check_single_notdef(FT_Face ttface)
Definition: ttobjs.c:505
#define error(str)
Definition: mkdosfs.c:1605
#define TTAG_0xA5lst
Definition: tttags.h:113
SFNT_Service sfnt
Definition: ttdriver.c:206
#define FT_FACE_FLAG_SCALABLE
Definition: freetype.h:1238
tt_face_load_loca(TT_Face face, FT_Stream stream)
Definition: ttpload.c:62
TT_Init_Glyph_Loading(TT_Face face)
Definition: ttgload.c:742
FT_Library library
Definition: cffdrivr.c:654
return FT_Err_Ok
Definition: ftbbox.c:511
FT_Driver driver
Definition: freetype.h:1111
FT_ModuleRec root
Definition: ftobjs.h:829
#define TTAG_0xA5kbd
Definition: tttags.h:110
tt_face_load_cvt(TT_Face face, FT_Stream stream)
Definition: ttpload.c:318
TT_Init_Face_Func init_face
Definition: sfnt.h:566
#define FT_ERROR(varformat)
Definition: ftdebug.h:181
GLenum const GLfloat * params
Definition: glext.h:5645
#define FT_THROW(e)
Definition: ftdebug.h:213
#define TTAG_true
Definition: tttags.h:98
FT_Library library
Definition: ftobjs.h:536
FT_Long face_flags
Definition: freetype.h:1073
tt_face_load_hdmx(TT_Face face, FT_Stream stream)
Definition: ttpload.c:522
struct TT_FaceRec_ * TT_Face
Definition: tttypes.h:973
static void Exit(void)
Definition: sock.c:1331
#define FT_TRACE2(varformat)
Definition: ftdebug.h:159
#define FT_ERR_EQ(x, e)
Definition: fttypes.h:591
#define FT_ERR_NEQ(x, e)
Definition: fttypes.h:593
Definition: parse.h:22
static FT_Bool tt_check_trickyness(FT_Face face)
Definition: ttobjs.c:483
#define FT_FACE_FLAG_HINTER
Definition: freetype.h:1249
#define FT_STREAM_SEEK(position)
Definition: ftstream.h:489
TT_Load_Face_Func load_face
Definition: sfnt.h:567
#define FT_HAS_MULTIPLE_MASTERS(face)
Definition: freetype.h:1402
unsigned int FT_UInt
Definition: fttypes.h:231
tt_face_load_prep(TT_Face face, FT_Stream stream)
Definition: ttpload.c:461
#define FT_TRACE5(varformat)
Definition: ftdebug.h:162
#define FT_FACE_FLAG_TRICKY
Definition: freetype.h:1251
FT_Get_Module_Interface(FT_Library library, const char *mod_name)
Definition: ftobjs.c:4865
tt_face_load_fpgm(TT_Face face, FT_Stream stream)
Definition: ttpload.c:399
FT_Int num_fixed_sizes
Definition: freetype.h:1081
#define FT_IS_SCALABLE(face)
Definition: freetype.h:1312
GLenum GLuint GLint GLenum face
Definition: glext.h:7025

◆ tt_get_sfnt_checksum()

static FT_ULong tt_get_sfnt_checksum ( TT_Face  face,
FT_UShort  i 
)
static

Definition at line 239 of file ttobjs.c.

241  {
242 #if 0 /* if we believe the written value, use following part. */
243  if ( face->dir_tables[i].CheckSum )
244  return face->dir_tables[i].CheckSum;
245 #endif
246 
247  if ( !face->goto_table )
248  return 0;
249 
250  if ( face->goto_table( face,
251  face->dir_tables[i].Tag,
252  face->root.stream,
253  NULL ) )
254  return 0;
255 
256  return (FT_ULong)tt_synth_sfnt_checksum( face->root.stream,
257  face->dir_tables[i].Length );
258  }
unsigned long FT_ULong
Definition: fttypes.h:253
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
smooth NULL
Definition: ftsmooth.c:416
static FT_UInt32 tt_synth_sfnt_checksum(FT_Stream stream, FT_ULong length)
Definition: ttobjs.c:213
GLenum GLuint GLint GLenum face
Definition: glext.h:7025

Referenced by tt_check_trickyness_sfnt_ids().

◆ tt_size_done()

tt_size_done ( FT_Size  ttsize)

Definition at line 1221 of file ttobjs.c.

1222  {
1223  TT_Size size = (TT_Size)ttsize;
1224 
1225 
1226 #ifdef TT_USE_BYTECODE_INTERPRETER
1227  tt_size_done_bytecode( ttsize );
1228 #endif
1229 
1230  size->ttmetrics.valid = FALSE;
1231  }
struct TT_SizeRec_ * TT_Size
Definition: tttypes.h:1631
GLsizeiptr size
Definition: glext.h:5919

◆ tt_size_init()

tt_size_init ( FT_Size  ttsize)

Definition at line 1191 of file ttobjs.c.

1192  {
1193  TT_Size size = (TT_Size)ttsize;
1195 
1196 
1197 #ifdef TT_USE_BYTECODE_INTERPRETER
1198  size->bytecode_ready = -1;
1199  size->cvt_ready = -1;
1200 #endif
1201 
1202  size->ttmetrics.valid = FALSE;
1203  size->strike_index = 0xFFFFFFFFUL;
1204 
1205  return error;
1206  }
struct TT_SizeRec_ * TT_Size
Definition: tttypes.h:1631
int FT_Error
Definition: fttypes.h:300
#define error(str)
Definition: mkdosfs.c:1605
return FT_Err_Ok
Definition: ftbbox.c:511
GLsizeiptr size
Definition: glext.h:5919
#define UL
Definition: tui.h:83

◆ tt_size_reset()

tt_size_reset ( TT_Size  size,
FT_Bool  only_height 
)

Definition at line 1251 of file ttobjs.c.

1253  {
1254  TT_Face face;
1255  FT_Size_Metrics* size_metrics;
1256 
1257 
1258  face = (TT_Face)size->root.face;
1259 
1260  /* nothing to do for CFF2 */
1261  if ( face->is_cff2 )
1262  return FT_Err_Ok;
1263 
1264  size->ttmetrics.valid = FALSE;
1265 
1266  size_metrics = &size->hinted_metrics;
1267 
1268  /* copy the result from base layer */
1269  *size_metrics = size->root.metrics;
1270 
1271  if ( size_metrics->x_ppem < 1 || size_metrics->y_ppem < 1 )
1272  return FT_THROW( Invalid_PPem );
1273 
1274  /* This bit flag, if set, indicates that the ppems must be */
1275  /* rounded to integers. Nearly all TrueType fonts have this bit */
1276  /* set, as hinting won't work really well otherwise. */
1277  /* */
1278  if ( face->header.Flags & 8 )
1279  {
1280  /* the TT spec always asks for ROUND, not FLOOR or CEIL */
1281  size_metrics->ascender = FT_PIX_ROUND(
1282  FT_MulFix( face->root.ascender,
1283  size_metrics->y_scale ) );
1284  size_metrics->descender = FT_PIX_ROUND(
1285  FT_MulFix( face->root.descender,
1286  size_metrics->y_scale ) );
1287  size_metrics->height = FT_PIX_ROUND(
1288  FT_MulFix( face->root.height,
1289  size_metrics->y_scale ) );
1290  }
1291 
1292  size->ttmetrics.valid = TRUE;
1293 
1294  if ( only_height )
1295  {
1296  /* we must not recompute the scaling values here since */
1297  /* `tt_size_reset' was already called (with only_height = 0) */
1298  return FT_Err_Ok;
1299  }
1300 
1301  if ( face->header.Flags & 8 )
1302  {
1303  /* base scaling values on integer ppem values, */
1304  /* as mandated by the TrueType specification */
1305  size_metrics->x_scale = FT_DivFix( size_metrics->x_ppem << 6,
1306  face->root.units_per_EM );
1307  size_metrics->y_scale = FT_DivFix( size_metrics->y_ppem << 6,
1308  face->root.units_per_EM );
1309 
1310  size_metrics->max_advance = FT_PIX_ROUND(
1311  FT_MulFix( face->root.max_advance_width,
1312  size_metrics->x_scale ) );
1313  }
1314 
1315  /* compute new transformation */
1316  if ( size_metrics->x_ppem >= size_metrics->y_ppem )
1317  {
1318  size->ttmetrics.scale = size_metrics->x_scale;
1319  size->ttmetrics.ppem = size_metrics->x_ppem;
1320  size->ttmetrics.x_ratio = 0x10000L;
1321  size->ttmetrics.y_ratio = FT_DivFix( size_metrics->y_ppem,
1322  size_metrics->x_ppem );
1323  }
1324  else
1325  {
1326  size->ttmetrics.scale = size_metrics->y_scale;
1327  size->ttmetrics.ppem = size_metrics->y_ppem;
1328  size->ttmetrics.x_ratio = FT_DivFix( size_metrics->x_ppem,
1329  size_metrics->y_ppem );
1330  size->ttmetrics.y_ratio = 0x10000L;
1331  }
1332 
1333  size->metrics = size_metrics;
1334 
1335 #ifdef TT_USE_BYTECODE_INTERPRETER
1336  size->cvt_ready = -1;
1337 #endif /* TT_USE_BYTECODE_INTERPRETER */
1338 
1339  return FT_Err_Ok;
1340  }
FT_DivFix(FT_Long a, FT_Long b)
Definition: ftcalc.c:608
#define TRUE
Definition: types.h:120
FT_UShort x_ppem
Definition: freetype.h:1640
FT_Fixed y_scale
Definition: freetype.h:1644
WORD face[3]
Definition: mesh.c:4747
return FT_Err_Ok
Definition: ftbbox.c:511
#define FT_THROW(e)
Definition: ftdebug.h:213
FT_Pos descender
Definition: freetype.h:1647
struct TT_FaceRec_ * TT_Face
Definition: tttypes.h:973
GLsizeiptr size
Definition: glext.h:5919
if(!(yy_init))
Definition: macro.lex.yy.c:714
static const WCHAR L[]
Definition: oid.c:1250
FT_MulFix(FT_Long a, FT_Long b)
Definition: ftcalc.c:509
FT_Pos max_advance
Definition: freetype.h:1649
FT_Fixed x_scale
Definition: freetype.h:1643
FT_UShort y_ppem
Definition: freetype.h:1641
#define FT_PIX_ROUND(x)
Definition: ftobjs.h:93
GLenum GLuint GLint GLenum face
Definition: glext.h:7025

Referenced by tt_size_request().

◆ tt_slot_init()

tt_slot_init ( FT_GlyphSlot  slot)

Definition at line 1416 of file ttobjs.c.

1417  {
1418  return FT_GlyphLoader_CreateExtra( slot->internal->loader );
1419  }
FT_GlyphLoader_CreateExtra(FT_GlyphLoader loader)
Definition: ftgloadr.c:166
Definition: vfat.h:184

◆ tt_synth_sfnt_checksum()

static FT_UInt32 tt_synth_sfnt_checksum ( FT_Stream  stream,
FT_ULong  length 
)
static

Definition at line 213 of file ttobjs.c.

215  {
216  FT_Error error;
217  FT_UInt32 checksum = 0;
218  FT_UInt i;
219 
220 
221  if ( FT_FRAME_ENTER( length ) )
222  return 0;
223 
224  for ( ; length > 3; length -= 4 )
225  checksum += (FT_UInt32)FT_GET_ULONG();
226 
227  for ( i = 3; length > 0; length--, i-- )
228  checksum += (FT_UInt32)FT_GET_BYTE() << ( i * 8 );
229 
230  FT_FRAME_EXIT();
231 
232  return checksum;
233  }
int FT_Error
Definition: fttypes.h:300
#define FT_GET_BYTE()
Definition: ftstream.h:287
#define error(str)
Definition: mkdosfs.c:1605
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
GLenum GLuint GLenum GLsizei length
Definition: glext.h:5579
static cab_ULONG checksum(const cab_UBYTE *data, cab_UWORD bytes, cab_ULONG csum)
Definition: fdi.c:353
#define FT_FRAME_EXIT()
Definition: ftstream.h:517
unsigned int FT_UInt
Definition: fttypes.h:231
#define FT_GET_ULONG()
Definition: ftstream.h:293
#define FT_FRAME_ENTER(size)
Definition: ftstream.h:512

Referenced by tt_get_sfnt_checksum().