ReactOS  0.4.14-dev-1314-gacf135d
afglobal.c File Reference
#include "afglobal.h"
#include "afranges.h"
#include "afshaper.h"
#include "afwrtsys.h"
#include "aferrors.h"
#include "afpic.h"
#include "afscript.h"
#include "afstyles.h"
Include dependency graph for afglobal.c:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define FT_COMPONENT   trace_afglobal
 
#define WRITING_SYSTEM(ws, WS)   /* empty */
 
#define SCRIPT(s, S, d, h, H, ss)
 
#define STYLE(s, S, d, ws, sc, ss, c)
 
#define WRITING_SYSTEM(ws, WS)   &af_ ## ws ## _writing_system_class,
 
#define SCRIPT(s, S, d, h, H, ss)   &af_ ## s ## _script_class,
 
#define STYLE(s, S, d, ws, sc, ss, c)   &af_ ## s ## _style_class,
 

Functions

static FT_Error af_face_globals_compute_style_coverage (AF_FaceGlobals globals)
 
 af_face_globals_new (FT_Face face, AF_FaceGlobals *aglobals, AF_Module module)
 
 af_face_globals_free (AF_FaceGlobals globals)
 
 af_face_globals_get_metrics (AF_FaceGlobals globals, FT_UInt gindex, FT_UInt options, AF_StyleMetrics *ametrics)
 
 af_face_globals_is_digit (AF_FaceGlobals globals, FT_UInt gindex)
 

Variables

 af_writing_system_classes []
 
 af_script_classes []
 
 af_style_classes []
 

Macro Definition Documentation

◆ FT_COMPONENT

#define FT_COMPONENT   trace_afglobal

Definition at line 32 of file afglobal.c.

◆ SCRIPT [1/2]

#define SCRIPT (   s,
  S,
  d,
  h,
  H,
  ss 
)
Value:
af_ ## s ## _script_class, \
AF_SCRIPT_ ## S, \
af_ ## s ## _uniranges, \
af_ ## s ## _nonbase_uniranges, \
AF_ ## H, \
ss )
Definition: movable.cpp:7
GLdouble s
Definition: gl.h:2039
#define AF_DEFINE_SCRIPT_CLASS( script_class, script, ranges, nonbase_ranges, top_to_bottom, std_charstring)
#define ss
Definition: i386-dis.c:432
#define H

Definition at line 87 of file afglobal.c.

◆ SCRIPT [2/2]

#define SCRIPT (   s,
  S,
  d,
  h,
  H,
  ss 
)    &af_ ## s ## _script_class,

Definition at line 87 of file afglobal.c.

◆ STYLE [1/2]

#define STYLE (   s,
  S,
  d,
  ws,
  sc,
  ss,
  c 
)
Value:
af_ ## s ## _style_class, \
AF_STYLE_ ## S, \
ws, \
sc, \
ss, \
c )
const char * ws
Definition: skip_ws.cpp:7
Definition: movable.cpp:7
const GLubyte * c
Definition: glext.h:8905
#define AF_DEFINE_STYLE_CLASS( style_class, style, writing_system, script, blue_stringset, coverage)
GLdouble s
Definition: gl.h:2039
#define ss
Definition: i386-dis.c:432

Definition at line 101 of file afglobal.c.

◆ STYLE [2/2]

#define STYLE (   s,
  S,
  d,
  ws,
  sc,
  ss,
  c 
)    &af_ ## s ## _style_class,

Definition at line 101 of file afglobal.c.

◆ WRITING_SYSTEM [1/2]

#define WRITING_SYSTEM (   ws,
  WS 
)    /* empty */

Definition at line 73 of file afglobal.c.

◆ WRITING_SYSTEM [2/2]

#define WRITING_SYSTEM (   ws,
  WS 
)    &af_ ## ws ## _writing_system_class,

Definition at line 73 of file afglobal.c.

Function Documentation

◆ af_face_globals_compute_style_coverage()

static FT_Error af_face_globals_compute_style_coverage ( AF_FaceGlobals  globals)
static

Definition at line 135 of file afglobal.c.

136  {
137  FT_Error error;
138  FT_Face face = globals->face;
139  FT_CharMap old_charmap = face->charmap;
140  FT_UShort* gstyles = globals->glyph_styles;
141  FT_UInt ss;
142  FT_UInt i;
143  FT_UInt dflt = ~0U; /* a non-valid value */
144 
145 
146  /* the value AF_STYLE_UNASSIGNED means `uncovered glyph' */
147  for ( i = 0; i < (FT_UInt)globals->glyph_count; i++ )
148  gstyles[i] = AF_STYLE_UNASSIGNED;
149 
150  error = FT_Select_Charmap( face, FT_ENCODING_UNICODE );
151  if ( error )
152  {
153  /*
154  * Ignore this error; we simply use the fallback style.
155  * XXX: Shouldn't we rather disable hinting?
156  */
157  error = FT_Err_Ok;
158  goto Exit;
159  }
160 
161  /* scan each style in a Unicode charmap */
162  for ( ss = 0; AF_STYLE_CLASSES_GET[ss]; ss++ )
163  {
164  AF_StyleClass style_class =
166  AF_ScriptClass script_class =
167  AF_SCRIPT_CLASSES_GET[style_class->script];
169 
170 
171  if ( !script_class->script_uni_ranges )
172  continue;
173 
174  /*
175  * Scan all Unicode points in the range and set the corresponding
176  * glyph style index.
177  */
178  if ( style_class->coverage == AF_COVERAGE_DEFAULT )
179  {
180  if ( (FT_UInt)style_class->script ==
181  globals->module->default_script )
182  dflt = ss;
183 
184  for ( range = script_class->script_uni_ranges;
185  range->first != 0;
186  range++ )
187  {
188  FT_ULong charcode = range->first;
189  FT_UInt gindex;
190 
191 
192  gindex = FT_Get_Char_Index( face, charcode );
193 
194  if ( gindex != 0 &&
195  gindex < (FT_ULong)globals->glyph_count &&
196  ( gstyles[gindex] & AF_STYLE_MASK ) == AF_STYLE_UNASSIGNED )
197  gstyles[gindex] = (FT_UShort)ss;
198 
199  for (;;)
200  {
201  charcode = FT_Get_Next_Char( face, charcode, &gindex );
202 
203  if ( gindex == 0 || charcode > range->last )
204  break;
205 
206  if ( gindex < (FT_ULong)globals->glyph_count &&
207  ( gstyles[gindex] & AF_STYLE_MASK ) == AF_STYLE_UNASSIGNED )
208  gstyles[gindex] = (FT_UShort)ss;
209  }
210  }
211 
212  /* do the same for the script's non-base characters */
213  for ( range = script_class->script_uni_nonbase_ranges;
214  range->first != 0;
215  range++ )
216  {
217  FT_ULong charcode = range->first;
218  FT_UInt gindex;
219 
220 
221  gindex = FT_Get_Char_Index( face, charcode );
222 
223  if ( gindex != 0 &&
224  gindex < (FT_ULong)globals->glyph_count &&
225  ( gstyles[gindex] & AF_STYLE_MASK ) == (FT_UShort)ss )
226  gstyles[gindex] |= AF_NONBASE;
227 
228  for (;;)
229  {
230  charcode = FT_Get_Next_Char( face, charcode, &gindex );
231 
232  if ( gindex == 0 || charcode > range->last )
233  break;
234 
235  if ( gindex < (FT_ULong)globals->glyph_count &&
236  ( gstyles[gindex] & AF_STYLE_MASK ) == (FT_UShort)ss )
237  gstyles[gindex] |= AF_NONBASE;
238  }
239  }
240  }
241  else
242  {
243  /* get glyphs not directly addressable by cmap */
244  af_shaper_get_coverage( globals, style_class, gstyles, 0 );
245  }
246  }
247 
248  /* handle the remaining default OpenType features ... */
249  for ( ss = 0; AF_STYLE_CLASSES_GET[ss]; ss++ )
250  {
251  AF_StyleClass style_class = AF_STYLE_CLASSES_GET[ss];
252 
253 
254  if ( style_class->coverage == AF_COVERAGE_DEFAULT )
255  af_shaper_get_coverage( globals, style_class, gstyles, 0 );
256  }
257 
258  /* ... and finally the default OpenType features of the default script */
259  af_shaper_get_coverage( globals, AF_STYLE_CLASSES_GET[dflt], gstyles, 1 );
260 
261  /* mark ASCII digits */
262  for ( i = 0x30; i <= 0x39; i++ )
263  {
264  FT_UInt gindex = FT_Get_Char_Index( face, i );
265 
266 
267  if ( gindex != 0 && gindex < (FT_ULong)globals->glyph_count )
268  gstyles[gindex] |= AF_DIGIT;
269  }
270 
271  Exit:
272  /*
273  * By default, all uncovered glyphs are set to the fallback style.
274  * XXX: Shouldn't we disable hinting or do something similar?
275  */
276  if ( globals->module->fallback_style != AF_STYLE_UNASSIGNED )
277  {
278  FT_Long nn;
279 
280 
281  for ( nn = 0; nn < globals->glyph_count; nn++ )
282  {
283  if ( ( gstyles[nn] & AF_STYLE_MASK ) == AF_STYLE_UNASSIGNED )
284  {
285  gstyles[nn] &= ~AF_STYLE_MASK;
286  gstyles[nn] |= globals->module->fallback_style;
287  }
288  }
289  }
290 
291 #ifdef FT_DEBUG_LEVEL_TRACE
292 
293  FT_TRACE4(( "\n"
294  "style coverage\n"
295  "==============\n"
296  "\n" ));
297 
298  for ( ss = 0; AF_STYLE_CLASSES_GET[ss]; ss++ )
299  {
300  AF_StyleClass style_class = AF_STYLE_CLASSES_GET[ss];
301  FT_UInt count = 0;
302  FT_Long idx;
303 
304 
305  FT_TRACE4(( "%s:\n", af_style_names[style_class->style] ));
306 
307  for ( idx = 0; idx < globals->glyph_count; idx++ )
308  {
309  if ( ( gstyles[idx] & AF_STYLE_MASK ) == style_class->style )
310  {
311  if ( !( count % 10 ) )
312  FT_TRACE4(( " " ));
313 
314  FT_TRACE4(( " %d", idx ));
315  count++;
316 
317  if ( !( count % 10 ) )
318  FT_TRACE4(( "\n" ));
319  }
320  }
321 
322  if ( !count )
323  FT_TRACE4(( " (none)\n" ));
324  if ( count % 10 )
325  FT_TRACE4(( "\n" ));
326  }
327 
328 #endif /* FT_DEBUG_LEVEL_TRACE */
329 
330  FT_Set_Charmap( face, old_charmap );
331  return error;
332  }
#define AF_DIGIT
Definition: afglobal.h:82
int FT_Error
Definition: fttypes.h:300
AF_Script script
Definition: aftypes.h:450
signed long FT_Long
Definition: fttypes.h:242
unsigned long FT_ULong
Definition: fttypes.h:253
#define error(str)
Definition: mkdosfs.c:1605
AF_Script_UniRange script_uni_ranges
Definition: aftypes.h:343
GLuint GLuint GLsizei count
Definition: gl.h:1545
#define U(x)
Definition: wordpad.c:45
FT_Get_Next_Char(FT_Face face, FT_ULong char_code, FT_UInt *agindex)
Definition: ftobjs.c:3722
#define AF_STYLE_MASK
Definition: afglobal.h:77
AF_Coverage coverage
Definition: aftypes.h:452
FT_Long glyph_count
Definition: afglobal.h:108
return FT_Err_Ok
Definition: ftbbox.c:511
#define AF_STYLE_CLASSES_GET
Definition: afpic.h:33
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
AF_Module module
Definition: afglobal.h:137
AF_Style style
Definition: aftypes.h:447
#define AF_SCRIPT_CLASSES_GET
Definition: afpic.h:32
#define FT_TRACE4(varformat)
Definition: ftdebug.h:161
unsigned int idx
Definition: utils.c:41
AF_Script_UniRange script_uni_nonbase_ranges
Definition: aftypes.h:344
FT_Get_Char_Index(FT_Face face, FT_ULong charcode)
Definition: ftobjs.c:3668
FT_Select_Charmap(FT_Face face, FT_Encoding encoding)
Definition: ftobjs.c:3457
static void Exit(void)
Definition: sock.c:1331
FT_Error af_shaper_get_coverage(AF_FaceGlobals globals, AF_StyleClass style_class, FT_UShort *gstyles, FT_Bool default_script)
Definition: afshaper.c:577
FT_Set_Charmap(FT_Face face, FT_CharMap charmap)
Definition: ftobjs.c:3499
GLenum GLint * range
Definition: glext.h:7539
FT_UShort * glyph_styles
Definition: afglobal.h:109
unsigned int FT_UInt
Definition: fttypes.h:231
#define AF_NONBASE
Definition: afglobal.h:84
#define AF_STYLE_UNASSIGNED
Definition: afglobal.h:79
unsigned short FT_UShort
Definition: fttypes.h:209
#define ss
Definition: i386-dis.c:432
GLenum GLuint GLint GLenum face
Definition: glext.h:7025

Referenced by af_face_globals_new().

◆ af_face_globals_free()

af_face_globals_free ( AF_FaceGlobals  globals)

Definition at line 387 of file afglobal.c.

388  {
389  if ( globals )
390  {
391  FT_Memory memory = globals->face->memory;
392  FT_UInt nn;
393 
394 
395  for ( nn = 0; nn < AF_STYLE_MAX; nn++ )
396  {
397  if ( globals->metrics[nn] )
398  {
399  AF_StyleClass style_class =
401  AF_WritingSystemClass writing_system_class =
403 
404 
405  if ( writing_system_class->style_metrics_done )
406  writing_system_class->style_metrics_done( globals->metrics[nn] );
407 
408  FT_FREE( globals->metrics[nn] );
409  }
410  }
411 
412 #ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
413  hb_font_destroy( globals->hb_font );
414  hb_buffer_destroy( globals->hb_buf );
415 #endif
416 
417  /* no need to free `globals->glyph_styles'; */
418  /* it is part of the `globals' array */
419  FT_FREE( globals );
420  }
421  }
AF_StyleMetrics metrics[AF_STYLE_MAX]
Definition: afglobal.h:119
static char memory[1024 *256]
Definition: process.c:116
#define AF_STYLE_CLASSES_GET
Definition: afpic.h:33
#define FT_FREE(ptr)
Definition: ftmemory.h:329
AF_WritingSystem writing_system
Definition: aftypes.h:449
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
Definition: ftsystem.h:66
unsigned int FT_UInt
Definition: fttypes.h:231
AF_WritingSystem_DoneMetricsFunc style_metrics_done
Definition: aftypes.h:283
#define AF_WRITING_SYSTEM_CLASSES_GET
Definition: afpic.h:31
FT_Memory memory
Definition: freetype.h:1112

Referenced by af_face_globals_new(), af_loader_reset(), and af_property_get_face_globals().

◆ af_face_globals_get_metrics()

af_face_globals_get_metrics ( AF_FaceGlobals  globals,
FT_UInt  gindex,
FT_UInt  options,
AF_StyleMetrics ametrics 
)

Definition at line 425 of file afglobal.c.

429  {
431 
433  AF_WritingSystemClass writing_system_class;
434  AF_StyleClass style_class;
435 
437 
438 
439  if ( gindex >= (FT_ULong)globals->glyph_count )
440  {
441  error = FT_THROW( Invalid_Argument );
442  goto Exit;
443  }
444 
445  /* if we have a forced style (via `options'), use it, */
446  /* otherwise look into `glyph_styles' array */
447  if ( style == AF_STYLE_NONE_DFLT || style + 1 >= AF_STYLE_MAX )
448  style = (AF_Style)( globals->glyph_styles[gindex] &
450 
451  style_class = AF_STYLE_CLASSES_GET[style];
452  writing_system_class = AF_WRITING_SYSTEM_CLASSES_GET
453  [style_class->writing_system];
454 
455  metrics = globals->metrics[style];
456  if ( !metrics )
457  {
458  /* create the global metrics object if necessary */
459  FT_Memory memory = globals->face->memory;
460 
461 
462  if ( FT_ALLOC( metrics, writing_system_class->style_metrics_size ) )
463  goto Exit;
464 
465  metrics->style_class = style_class;
466  metrics->globals = globals;
467 
468  if ( writing_system_class->style_metrics_init )
469  {
470  error = writing_system_class->style_metrics_init( metrics,
471  globals->face );
472  if ( error )
473  {
474  if ( writing_system_class->style_metrics_done )
475  writing_system_class->style_metrics_done( metrics );
476 
477  FT_FREE( metrics );
478  goto Exit;
479  }
480  }
481 
482  globals->metrics[style] = metrics;
483  }
484 
485  Exit:
486  *ametrics = metrics;
487 
488  return error;
489  }
#define FT_ALLOC(ptr, size)
Definition: ftmemory.h:303
int FT_Error
Definition: fttypes.h:300
unsigned long FT_ULong
Definition: fttypes.h:253
#define error(str)
Definition: mkdosfs.c:1605
GLsizei GLenum const GLvoid GLuint GLsizei GLfloat * metrics
Definition: glext.h:11745
AF_StyleMetrics metrics[AF_STYLE_MAX]
Definition: afglobal.h:119
FT_Long glyph_count
Definition: afglobal.h:108
return FT_Err_Ok
Definition: ftbbox.c:511
static char memory[1024 *256]
Definition: process.c:116
#define AF_STYLE_CLASSES_GET
Definition: afpic.h:33
#define FT_THROW(e)
Definition: ftdebug.h:213
FT_Offset style_metrics_size
Definition: aftypes.h:280
smooth NULL
Definition: ftsmooth.c:416
#define FT_FREE(ptr)
Definition: ftmemory.h:329
static void Exit(void)
Definition: sock.c:1331
AF_WritingSystem_InitMetricsFunc style_metrics_init
Definition: aftypes.h:281
AF_WritingSystem writing_system
Definition: aftypes.h:449
enum AF_Style_ AF_Style
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
Definition: ftsystem.h:66
FT_UShort * glyph_styles
Definition: afglobal.h:109
AF_WritingSystem_DoneMetricsFunc style_metrics_done
Definition: aftypes.h:283
#define AF_STYLE_UNASSIGNED
Definition: afglobal.h:79
Arabic default style
Definition: afstyles.h:93
#define AF_WRITING_SYSTEM_CLASSES_GET
Definition: afpic.h:31
FT_Memory memory
Definition: freetype.h:1112

Referenced by af_loader_load_glyph().

◆ af_face_globals_is_digit()

af_face_globals_is_digit ( AF_FaceGlobals  globals,
FT_UInt  gindex 
)

Definition at line 493 of file afglobal.c.

495  {
496  if ( gindex < (FT_ULong)globals->glyph_count )
497  return (FT_Bool)( globals->glyph_styles[gindex] & AF_DIGIT );
498 
499  return (FT_Bool)0;
500  }
#define AF_DIGIT
Definition: afglobal.h:82
unsigned long FT_ULong
Definition: fttypes.h:253
FT_Long glyph_count
Definition: afglobal.h:108
FT_BEGIN_HEADER typedef unsigned char FT_Bool
Definition: fttypes.h:108
FT_UShort * glyph_styles
Definition: afglobal.h:109

Referenced by af_loader_load_glyph().

◆ af_face_globals_new()

af_face_globals_new ( FT_Face  face,
AF_FaceGlobals aglobals,
AF_Module  module 
)

Definition at line 336 of file afglobal.c.

339  {
340  FT_Error error;
342  AF_FaceGlobals globals = NULL;
343 
344 
345  memory = face->memory;
346 
347  /* we allocate an AF_FaceGlobals structure together */
348  /* with the glyph_styles array */
349  if ( FT_ALLOC( globals,
350  sizeof ( *globals ) +
351  (FT_ULong)face->num_glyphs * sizeof ( FT_UShort ) ) )
352  goto Exit;
353 
354  globals->face = face;
355  globals->glyph_count = face->num_glyphs;
356  /* right after the globals structure come the glyph styles */
357  globals->glyph_styles = (FT_UShort*)( globals + 1 );
358  globals->module = module;
359  globals->stem_darkening_for_ppem = 0;
360  globals->darken_x = 0;
361  globals->darken_y = 0;
362  globals->standard_vertical_width = 0;
363  globals->standard_horizontal_width = 0;
364  globals->scale_down_factor = 0;
365 
366 #ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
367  globals->hb_font = hb_ft_font_create( face, NULL );
368  globals->hb_buf = hb_buffer_create();
369 #endif
370 
372  if ( error )
373  {
374  af_face_globals_free( globals );
375  globals = NULL;
376  }
377  else
379 
380  Exit:
381  *aglobals = globals;
382  return error;
383  }
#define FT_ALLOC(ptr, size)
Definition: ftmemory.h:303
int FT_Error
Definition: fttypes.h:300
HMODULE module
Definition: main.cpp:47
unsigned long FT_ULong
Definition: fttypes.h:253
#define error(str)
Definition: mkdosfs.c:1605
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList
FT_Long glyph_count
Definition: afglobal.h:108
static char memory[1024 *256]
Definition: process.c:116
AF_Module module
Definition: afglobal.h:137
smooth NULL
Definition: ftsmooth.c:416
FT_Fixed scale_down_factor
Definition: afglobal.h:136
FT_UInt increase_x_height
Definition: afglobal.h:117
static void Exit(void)
Definition: sock.c:1331
FT_Pos standard_vertical_width
Definition: afglobal.h:126
WORD face[3]
Definition: mesh.c:4747
af_face_globals_free(AF_FaceGlobals globals)
Definition: afglobal.c:387
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
Definition: ftsystem.h:66
FT_UShort * glyph_styles
Definition: afglobal.h:109
#define AF_PROP_INCREASE_X_HEIGHT_MAX
Definition: afglobal.h:88
static FT_Error af_face_globals_compute_style_coverage(AF_FaceGlobals globals)
Definition: afglobal.c:135
FT_UShort stem_darkening_for_ppem
Definition: afglobal.h:123
FT_Pos standard_horizontal_width
Definition: afglobal.h:129
unsigned short FT_UShort
Definition: fttypes.h:209
GLenum GLuint GLint GLenum face
Definition: glext.h:7025

Referenced by af_loader_reset(), and af_property_get_face_globals().

Variable Documentation

◆ af_script_classes

af_script_classes[]

Definition at line 91 of file afglobal.c.

◆ af_style_classes

af_style_classes[]

Definition at line 105 of file afglobal.c.

◆ af_writing_system_classes

af_writing_system_classes[]

Definition at line 77 of file afglobal.c.