ReactOS  0.4.14-dev-315-gbb6fece
pcf.h File Reference
#include <ft2build.h>
Include dependency graph for pcf.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  PCF_TableRec_
 
struct  PCF_TocRec_
 
struct  PCF_ParsePropertyRec_
 
struct  PCF_PropertyRec_
 
struct  PCF_Compressed_MetricRec_
 
struct  PCF_MetricRec_
 
struct  PCF_AccelRec_
 
struct  PCF_EncodingRec_
 
struct  PCF_FaceRec_
 
struct  PCF_DriverRec_
 

Macros

#define LSBFirst   0
 
#define MSBFirst   1
 
#define PCF_FILE_VERSION
 
#define PCF_FORMAT_MASK   0xFFFFFF00UL
 
#define PCF_DEFAULT_FORMAT   0x00000000UL
 
#define PCF_INKBOUNDS   0x00000200UL
 
#define PCF_ACCEL_W_INKBOUNDS   0x00000100UL
 
#define PCF_COMPRESSED_METRICS   0x00000100UL
 
#define PCF_FORMAT_MATCH(a, b)   ( ( (a) & PCF_FORMAT_MASK ) == ( (b) & PCF_FORMAT_MASK ) )
 
#define PCF_GLYPH_PAD_MASK   ( 3 << 0 )
 
#define PCF_BYTE_MASK   ( 1 << 2 )
 
#define PCF_BIT_MASK   ( 1 << 3 )
 
#define PCF_SCAN_UNIT_MASK   ( 3 << 4 )
 
#define PCF_BYTE_ORDER(f)   ( ( (f) & PCF_BYTE_MASK ) ? MSBFirst : LSBFirst )
 
#define PCF_BIT_ORDER(f)   ( ( (f) & PCF_BIT_MASK ) ? MSBFirst : LSBFirst )
 
#define PCF_GLYPH_PAD_INDEX(f)   ( (f) & PCF_GLYPH_PAD_MASK )
 
#define PCF_GLYPH_PAD(f)   ( 1 << PCF_GLYPH_PAD_INDEX( f ) )
 
#define PCF_SCAN_UNIT_INDEX(f)   ( ( (f) & PCF_SCAN_UNIT_MASK ) >> 4 )
 
#define PCF_SCAN_UNIT(f)   ( 1 << PCF_SCAN_UNIT_INDEX( f ) )
 
#define PCF_FORMAT_BITS(f)
 
#define PCF_SIZE_TO_INDEX(s)   ( (s) == 4 ? 2 : (s) == 2 ? 1 : 0 )
 
#define PCF_INDEX_TO_SIZE(b)   ( 1 << b )
 
#define PCF_FORMAT(bit, byte, glyph, scan)
 
#define PCF_PROPERTIES   ( 1 << 0 )
 
#define PCF_ACCELERATORS   ( 1 << 1 )
 
#define PCF_METRICS   ( 1 << 2 )
 
#define PCF_BITMAPS   ( 1 << 3 )
 
#define PCF_INK_METRICS   ( 1 << 4 )
 
#define PCF_BDF_ENCODINGS   ( 1 << 5 )
 
#define PCF_SWIDTHS   ( 1 << 6 )
 
#define PCF_GLYPH_NAMES   ( 1 << 7 )
 
#define PCF_BDF_ACCELERATORS   ( 1 << 8 )
 
#define GLYPHPADOPTIONS   4 /* I'm not sure about this */
 

Typedefs

typedef FT_BEGIN_HEADER struct PCF_TableRec_ PCF_TableRec
 
typedef FT_BEGIN_HEADER struct PCF_TableRec_PCF_Table
 
typedef struct PCF_TocRec_ PCF_TocRec
 
typedef struct PCF_TocRec_PCF_Toc
 
typedef struct PCF_ParsePropertyRec_ PCF_ParsePropertyRec
 
typedef struct PCF_ParsePropertyRec_PCF_ParseProperty
 
typedef struct PCF_PropertyRec_ PCF_PropertyRec
 
typedef struct PCF_PropertyRec_PCF_Property
 
typedef struct PCF_Compressed_MetricRec_ PCF_Compressed_MetricRec
 
typedef struct PCF_Compressed_MetricRec_PCF_Compressed_Metric
 
typedef struct PCF_MetricRec_ PCF_MetricRec
 
typedef struct PCF_MetricRec_PCF_Metric
 
typedef struct PCF_AccelRec_ PCF_AccelRec
 
typedef struct PCF_AccelRec_PCF_Accel
 
typedef struct PCF_EncodingRec_ PCF_EncodingRec
 
typedef struct PCF_EncodingRec_PCF_Encoding
 
typedef struct PCF_FaceRec_ PCF_FaceRec
 
typedef struct PCF_FaceRec_PCF_Face
 
typedef struct PCF_DriverRec_ PCF_DriverRec
 
typedef struct PCF_DriverRec_PCF_Driver
 

Functions

 pcf_load_font (FT_Stream stream, PCF_Face face, FT_Long face_index)
 

Macro Definition Documentation

◆ GLYPHPADOPTIONS

#define GLYPHPADOPTIONS   4 /* I'm not sure about this */

Definition at line 235 of file pcf.h.

◆ LSBFirst

#define LSBFirst   0

Definition at line 177 of file pcf.h.

◆ MSBFirst

#define MSBFirst   1

Definition at line 178 of file pcf.h.

◆ PCF_ACCEL_W_INKBOUNDS

#define PCF_ACCEL_W_INKBOUNDS   0x00000100UL

Definition at line 187 of file pcf.h.

◆ PCF_ACCELERATORS

#define PCF_ACCELERATORS   ( 1 << 1 )

Definition at line 226 of file pcf.h.

◆ PCF_BDF_ACCELERATORS

#define PCF_BDF_ACCELERATORS   ( 1 << 8 )

Definition at line 233 of file pcf.h.

◆ PCF_BDF_ENCODINGS

#define PCF_BDF_ENCODINGS   ( 1 << 5 )

Definition at line 230 of file pcf.h.

◆ PCF_BIT_MASK

#define PCF_BIT_MASK   ( 1 << 3 )

Definition at line 195 of file pcf.h.

◆ PCF_BIT_ORDER

#define PCF_BIT_ORDER (   f)    ( ( (f) & PCF_BIT_MASK ) ? MSBFirst : LSBFirst )

Definition at line 200 of file pcf.h.

◆ PCF_BITMAPS

#define PCF_BITMAPS   ( 1 << 3 )

Definition at line 228 of file pcf.h.

◆ PCF_BYTE_MASK

#define PCF_BYTE_MASK   ( 1 << 2 )

Definition at line 194 of file pcf.h.

◆ PCF_BYTE_ORDER

#define PCF_BYTE_ORDER (   f)    ( ( (f) & PCF_BYTE_MASK ) ? MSBFirst : LSBFirst )

Definition at line 198 of file pcf.h.

◆ PCF_COMPRESSED_METRICS

#define PCF_COMPRESSED_METRICS   0x00000100UL

Definition at line 188 of file pcf.h.

◆ PCF_DEFAULT_FORMAT

#define PCF_DEFAULT_FORMAT   0x00000000UL

Definition at line 185 of file pcf.h.

◆ PCF_FILE_VERSION

#define PCF_FILE_VERSION
Value:
( ( 'p' << 24 ) | \
( 'c' << 16 ) | \
( 'f' << 8 ) | 1 )

Definition at line 180 of file pcf.h.

◆ PCF_FORMAT

#define PCF_FORMAT (   bit,
  byte,
  glyph,
  scan 
)
Value:
( ( PCF_SIZE_TO_INDEX( scan ) << 4 ) | \
( ( (bit) == MSBFirst ? 1 : 0 ) << 3 ) | \
( ( (byte) == MSBFirst ? 1 : 0 ) << 2 ) | \
( PCF_SIZE_TO_INDEX( glyph ) << 0 ) )
#define PCF_SIZE_TO_INDEX(s)
Definition: pcf.h:216
#define MSBFirst
Definition: pcf.h:178

Definition at line 219 of file pcf.h.

◆ PCF_FORMAT_BITS

#define PCF_FORMAT_BITS (   f)
Value:
( (f) & ( PCF_GLYPH_PAD_MASK | \
#define PCF_GLYPH_PAD_MASK
Definition: pcf.h:193
#define PCF_BYTE_MASK
Definition: pcf.h:194
#define PCF_BIT_MASK
Definition: pcf.h:195
#define PCF_SCAN_UNIT_MASK
Definition: pcf.h:196
#define f
Definition: ke_i.h:83

Definition at line 210 of file pcf.h.

◆ PCF_FORMAT_MASK

#define PCF_FORMAT_MASK   0xFFFFFF00UL

Definition at line 183 of file pcf.h.

◆ PCF_FORMAT_MATCH

#define PCF_FORMAT_MATCH (   a,
  b 
)    ( ( (a) & PCF_FORMAT_MASK ) == ( (b) & PCF_FORMAT_MASK ) )

Definition at line 190 of file pcf.h.

◆ PCF_GLYPH_NAMES

#define PCF_GLYPH_NAMES   ( 1 << 7 )

Definition at line 232 of file pcf.h.

◆ PCF_GLYPH_PAD

#define PCF_GLYPH_PAD (   f)    ( 1 << PCF_GLYPH_PAD_INDEX( f ) )

Definition at line 204 of file pcf.h.

◆ PCF_GLYPH_PAD_INDEX

#define PCF_GLYPH_PAD_INDEX (   f)    ( (f) & PCF_GLYPH_PAD_MASK )

Definition at line 202 of file pcf.h.

◆ PCF_GLYPH_PAD_MASK

#define PCF_GLYPH_PAD_MASK   ( 3 << 0 )

Definition at line 193 of file pcf.h.

◆ PCF_INDEX_TO_SIZE

#define PCF_INDEX_TO_SIZE (   b)    ( 1 << b )

Definition at line 217 of file pcf.h.

◆ PCF_INK_METRICS

#define PCF_INK_METRICS   ( 1 << 4 )

Definition at line 229 of file pcf.h.

◆ PCF_INKBOUNDS

#define PCF_INKBOUNDS   0x00000200UL

Definition at line 186 of file pcf.h.

◆ PCF_METRICS

#define PCF_METRICS   ( 1 << 2 )

Definition at line 227 of file pcf.h.

◆ PCF_PROPERTIES

#define PCF_PROPERTIES   ( 1 << 0 )

Definition at line 225 of file pcf.h.

◆ PCF_SCAN_UNIT

#define PCF_SCAN_UNIT (   f)    ( 1 << PCF_SCAN_UNIT_INDEX( f ) )

Definition at line 208 of file pcf.h.

◆ PCF_SCAN_UNIT_INDEX

#define PCF_SCAN_UNIT_INDEX (   f)    ( ( (f) & PCF_SCAN_UNIT_MASK ) >> 4 )

Definition at line 206 of file pcf.h.

◆ PCF_SCAN_UNIT_MASK

#define PCF_SCAN_UNIT_MASK   ( 3 << 4 )

Definition at line 196 of file pcf.h.

◆ PCF_SIZE_TO_INDEX

#define PCF_SIZE_TO_INDEX (   s)    ( (s) == 4 ? 2 : (s) == 2 ? 1 : 0 )

Definition at line 216 of file pcf.h.

◆ PCF_SWIDTHS

#define PCF_SWIDTHS   ( 1 << 6 )

Definition at line 231 of file pcf.h.

Typedef Documentation

◆ PCF_Accel

◆ PCF_AccelRec

◆ PCF_Compressed_Metric

◆ PCF_Compressed_MetricRec

◆ PCF_Driver

◆ PCF_DriverRec

◆ PCF_Encoding

◆ PCF_EncodingRec

◆ PCF_Face

◆ PCF_FaceRec

◆ PCF_Metric

◆ PCF_MetricRec

◆ PCF_ParseProperty

◆ PCF_ParsePropertyRec

◆ PCF_Property

◆ PCF_PropertyRec

◆ PCF_Table

◆ PCF_TableRec

◆ PCF_Toc

◆ PCF_TocRec

Function Documentation

◆ pcf_load_font()

pcf_load_font ( FT_Stream  stream,
PCF_Face  face,
FT_Long  face_index 
)

Definition at line 1333 of file pcfread.c.

1336  {
1337  FT_Face root = FT_FACE( face );
1338  FT_Error error;
1339  FT_Memory memory = FT_FACE( face )->memory;
1340  FT_Bool hasBDFAccelerators;
1341 
1342 
1343  error = pcf_read_TOC( stream, face );
1344  if ( error )
1345  goto Exit;
1346 
1347  root->num_faces = 1;
1348  root->face_index = 0;
1349 
1350  /* If we are performing a simple font format check, exit immediately. */
1351  if ( face_index < 0 )
1352  return FT_Err_Ok;
1353 
1355  if ( error )
1356  goto Exit;
1357 
1358  /* Use the old accelerators if no BDF accelerators are in the file. */
1359  hasBDFAccelerators = pcf_has_table_type( face->toc.tables,
1360  face->toc.count,
1362  if ( !hasBDFAccelerators )
1363  {
1365  if ( error )
1366  goto Exit;
1367  }
1368 
1369  /* metrics */
1371  if ( error )
1372  goto Exit;
1373 
1374  /* bitmaps */
1376  if ( error )
1377  goto Exit;
1378 
1379  /* encodings */
1381  if ( error )
1382  goto Exit;
1383 
1384  /* BDF style accelerators (i.e. bounds based on encoded glyphs) */
1385  if ( hasBDFAccelerators )
1386  {
1388  if ( error )
1389  goto Exit;
1390  }
1391 
1392  /* XXX: TO DO: inkmetrics and glyph_names are missing */
1393 
1394  /* now construct the face object */
1395  {
1396  PCF_Property prop;
1397 
1398 
1399  root->face_flags |= FT_FACE_FLAG_FIXED_SIZES |
1402 
1403  if ( face->accel.constantWidth )
1404  root->face_flags |= FT_FACE_FLAG_FIXED_WIDTH;
1405 
1407  goto Exit;
1408 
1409  prop = pcf_find_property( face, "FAMILY_NAME" );
1410  if ( prop && prop->isString )
1411  {
1412 
1413 #ifdef PCF_CONFIG_OPTION_LONG_FAMILY_NAMES
1414 
1416 
1417 
1418  if ( !driver->no_long_family_names )
1419  {
1420  /* Prepend the foundry name plus a space to the family name. */
1421  /* There are many fonts just called `Fixed' which look */
1422  /* completely different, and which have nothing to do with each */
1423  /* other. When selecting `Fixed' in KDE or Gnome one gets */
1424  /* results that appear rather random, the style changes often if */
1425  /* one changes the size and one cannot select some fonts at all. */
1426  /* */
1427  /* We also check whether we have `wide' characters; all put */
1428  /* together, we get family names like `Sony Fixed' or `Misc */
1429  /* Fixed Wide'. */
1430 
1431  PCF_Property foundry_prop, point_size_prop, average_width_prop;
1432 
1433  int l = ft_strlen( prop->value.atom ) + 1;
1434  int wide = 0;
1435 
1436 
1437  foundry_prop = pcf_find_property( face, "FOUNDRY" );
1438  point_size_prop = pcf_find_property( face, "POINT_SIZE" );
1439  average_width_prop = pcf_find_property( face, "AVERAGE_WIDTH" );
1440 
1441  if ( point_size_prop && average_width_prop )
1442  {
1443  if ( average_width_prop->value.l >= point_size_prop->value.l )
1444  {
1445  /* This font is at least square shaped or even wider */
1446  wide = 1;
1447  l += ft_strlen( " Wide" );
1448  }
1449  }
1450 
1451  if ( foundry_prop && foundry_prop->isString )
1452  {
1453  l += ft_strlen( foundry_prop->value.atom ) + 1;
1454 
1455  if ( FT_NEW_ARRAY( root->family_name, l ) )
1456  goto Exit;
1457 
1458  ft_strcpy( root->family_name, foundry_prop->value.atom );
1459  ft_strcat( root->family_name, " " );
1460  ft_strcat( root->family_name, prop->value.atom );
1461  }
1462  else
1463  {
1464  if ( FT_NEW_ARRAY( root->family_name, l ) )
1465  goto Exit;
1466 
1467  ft_strcpy( root->family_name, prop->value.atom );
1468  }
1469 
1470  if ( wide )
1471  ft_strcat( root->family_name, " Wide" );
1472  }
1473  else
1474 
1475 #endif /* PCF_CONFIG_OPTION_LONG_FAMILY_NAMES */
1476 
1477  {
1478  if ( FT_STRDUP( root->family_name, prop->value.atom ) )
1479  goto Exit;
1480  }
1481  }
1482  else
1483  root->family_name = NULL;
1484 
1485  /*
1486  * Note: We shift all glyph indices by +1 since we must
1487  * respect the convention that glyph 0 always corresponds
1488  * to the `missing glyph'.
1489  *
1490  * This implies bumping the number of `available' glyphs by 1.
1491  */
1492  root->num_glyphs = (FT_Long)( face->nmetrics + 1 );
1493 
1494  root->num_fixed_sizes = 1;
1495  if ( FT_NEW_ARRAY( root->available_sizes, 1 ) )
1496  goto Exit;
1497 
1498  {
1499  FT_Bitmap_Size* bsize = root->available_sizes;
1500  FT_Short resolution_x = 0, resolution_y = 0;
1501 
1502 
1503  FT_ZERO( bsize );
1504 
1505  /* for simplicity, we take absolute values of integer properties */
1506 
1507 #if 0
1508  bsize->height = face->accel.maxbounds.ascent << 6;
1509 #endif
1510 
1511 #ifdef FT_DEBUG_LEVEL_TRACE
1512  if ( face->accel.fontAscent + face->accel.fontDescent < 0 )
1513  FT_TRACE0(( "pcf_load_font: negative height\n" ));
1514 #endif
1515  if ( FT_ABS( face->accel.fontAscent +
1516  face->accel.fontDescent ) > 0x7FFF )
1517  {
1518  bsize->height = 0x7FFF;
1519  FT_TRACE0(( "pcf_load_font: clamping height to value %d\n",
1520  bsize->height ));
1521  }
1522  else
1523  bsize->height = FT_ABS( (FT_Short)( face->accel.fontAscent +
1524  face->accel.fontDescent ) );
1525 
1526  prop = pcf_find_property( face, "AVERAGE_WIDTH" );
1527  if ( prop )
1528  {
1529 #ifdef FT_DEBUG_LEVEL_TRACE
1530  if ( prop->value.l < 0 )
1531  FT_TRACE0(( "pcf_load_font: negative average width\n" ));
1532 #endif
1533  if ( ( FT_ABS( prop->value.l ) > 0x7FFFL * 10 - 5 ) )
1534  {
1535  bsize->width = 0x7FFF;
1536  FT_TRACE0(( "pcf_load_font: clamping average width to value %d\n",
1537  bsize->width ));
1538  }
1539  else
1540  bsize->width = FT_ABS( (FT_Short)( ( prop->value.l + 5 ) / 10 ) );
1541  }
1542  else
1543  {
1544  /* this is a heuristical value */
1545  bsize->width = (FT_Short)FT_MulDiv( bsize->height, 2, 3 );
1546  }
1547 
1548  prop = pcf_find_property( face, "POINT_SIZE" );
1549  if ( prop )
1550  {
1551 #ifdef FT_DEBUG_LEVEL_TRACE
1552  if ( prop->value.l < 0 )
1553  FT_TRACE0(( "pcf_load_font: negative point size\n" ));
1554 #endif
1555  /* convert from 722.7 decipoints to 72 points per inch */
1556  if ( FT_ABS( prop->value.l ) > 0x504C2L ) /* 0x7FFF * 72270/7200 */
1557  {
1558  bsize->size = 0x7FFF;
1559  FT_TRACE0(( "pcf_load_font: clamping point size to value %d\n",
1560  bsize->size ));
1561  }
1562  else
1563  bsize->size = FT_MulDiv( FT_ABS( prop->value.l ),
1564  64 * 7200,
1565  72270L );
1566  }
1567 
1568  prop = pcf_find_property( face, "PIXEL_SIZE" );
1569  if ( prop )
1570  {
1571 #ifdef FT_DEBUG_LEVEL_TRACE
1572  if ( prop->value.l < 0 )
1573  FT_TRACE0(( "pcf_load_font: negative pixel size\n" ));
1574 #endif
1575  if ( FT_ABS( prop->value.l ) > 0x7FFF )
1576  {
1577  bsize->y_ppem = 0x7FFF << 6;
1578  FT_TRACE0(( "pcf_load_font: clamping pixel size to value %d\n",
1579  bsize->y_ppem ));
1580  }
1581  else
1582  bsize->y_ppem = FT_ABS( (FT_Short)prop->value.l ) << 6;
1583  }
1584 
1585  prop = pcf_find_property( face, "RESOLUTION_X" );
1586  if ( prop )
1587  {
1588 #ifdef FT_DEBUG_LEVEL_TRACE
1589  if ( prop->value.l < 0 )
1590  FT_TRACE0(( "pcf_load_font: negative X resolution\n" ));
1591 #endif
1592  if ( FT_ABS( prop->value.l ) > 0x7FFF )
1593  {
1594  resolution_x = 0x7FFF;
1595  FT_TRACE0(( "pcf_load_font: clamping X resolution to value %d\n",
1596  resolution_x ));
1597  }
1598  else
1599  resolution_x = FT_ABS( (FT_Short)prop->value.l );
1600  }
1601 
1602  prop = pcf_find_property( face, "RESOLUTION_Y" );
1603  if ( prop )
1604  {
1605 #ifdef FT_DEBUG_LEVEL_TRACE
1606  if ( prop->value.l < 0 )
1607  FT_TRACE0(( "pcf_load_font: negative Y resolution\n" ));
1608 #endif
1609  if ( FT_ABS( prop->value.l ) > 0x7FFF )
1610  {
1611  resolution_y = 0x7FFF;
1612  FT_TRACE0(( "pcf_load_font: clamping Y resolution to value %d\n",
1613  resolution_y ));
1614  }
1615  else
1616  resolution_y = FT_ABS( (FT_Short)prop->value.l );
1617  }
1618 
1619  if ( bsize->y_ppem == 0 )
1620  {
1621  bsize->y_ppem = bsize->size;
1622  if ( resolution_y )
1623  bsize->y_ppem = FT_MulDiv( bsize->y_ppem, resolution_y, 72 );
1624  }
1625  if ( resolution_x && resolution_y )
1626  bsize->x_ppem = FT_MulDiv( bsize->y_ppem,
1627  resolution_x,
1628  resolution_y );
1629  else
1630  bsize->x_ppem = bsize->y_ppem;
1631  }
1632 
1633  /* set up charset */
1634  {
1635  PCF_Property charset_registry, charset_encoding;
1636 
1637 
1638  charset_registry = pcf_find_property( face, "CHARSET_REGISTRY" );
1639  charset_encoding = pcf_find_property( face, "CHARSET_ENCODING" );
1640 
1641  if ( charset_registry && charset_registry->isString &&
1642  charset_encoding && charset_encoding->isString )
1643  {
1644  if ( FT_STRDUP( face->charset_encoding,
1645  charset_encoding->value.atom ) ||
1646  FT_STRDUP( face->charset_registry,
1647  charset_registry->value.atom ) )
1648  goto Exit;
1649  }
1650  }
1651  }
1652 
1653  Exit:
1654  if ( error )
1655  {
1656  /* This is done to respect the behaviour of the original */
1657  /* PCF font driver. */
1658  error = FT_THROW( Invalid_File_Format );
1659  }
1660 
1661  return error;
1662  }
int FT_Error
Definition: fttypes.h:300
signed long FT_Long
Definition: fttypes.h:242
FT_Pos x_ppem
Definition: freetype.h:378
#define error(str)
Definition: mkdosfs.c:1605
#define FT_FACE_FLAG_FAST_GLYPHS
Definition: freetype.h:1245
#define FT_ABS(a)
Definition: ftobjs.h:74
static FT_Bool pcf_has_table_type(PCF_Table tables, FT_ULong ntables, FT_ULong type)
Definition: pcfread.c:412
pcf_find_property(PCF_Face face, const FT_String *prop)
Definition: pcfread.c:458
union PCF_PropertyRec_::@3877 value
#define ft_strcat
Definition: ftstdlib.h:85
#define FT_FACE_FLAG_FIXED_SIZES
Definition: freetype.h:1239
FT_Long l
Definition: pcf.h:75
return FT_Err_Ok
Definition: ftbbox.c:511
static char memory[1024 *256]
Definition: process.c:116
#define PCF_BDF_ACCELERATORS
Definition: pcf.h:233
#define FT_FACE_DRIVER(x)
Definition: ftobjs.h:634
FT_BEGIN_HEADER typedef unsigned char FT_Bool
Definition: fttypes.h:108
#define FT_THROW(e)
Definition: ftdebug.h:213
static FT_Error pcf_get_properties(FT_Stream stream, PCF_Face face)
Definition: pcfread.c:480
smooth NULL
Definition: ftsmooth.c:416
static FT_Error pcf_interpret_style(PCF_Face pcf)
Definition: pcfread.c:1223
#define FT_FACE_FLAG_FIXED_WIDTH
Definition: freetype.h:1240
r l[0]
Definition: byte_order.h:167
FT_MulDiv(FT_Long a, FT_Long b, FT_Long c)
Definition: ftcalc.c:416
#define FT_TRACE0(varformat)
Definition: ftdebug.h:157
#define FT_ZERO(p)
Definition: ftmemory.h:237
#define FT_FACE_FLAG_HORIZONTAL
Definition: freetype.h:1242
static void Exit(void)
Definition: sock.c:1331
static FT_Error pcf_get_metrics(FT_Stream stream, PCF_Face face)
Definition: pcfread.c:679
FT_Pos y_ppem
Definition: freetype.h:379
FT_Short width
Definition: freetype.h:374
FT_String * atom
Definition: pcf.h:74
static FT_Error pcf_get_bitmaps(FT_Stream stream, PCF_Face face)
Definition: pcfread.c:808
FT_Byte isString
Definition: pcf.h:70
static const WCHAR L[]
Definition: oid.c:1250
Definition: parse.h:22
signed short FT_Short
Definition: fttypes.h:198
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
Definition: ftsystem.h:66
#define FT_NEW_ARRAY(ptr, count)
Definition: ftmemory.h:333
#define FT_FACE(x)
Definition: ftobjs.h:630
#define FT_SET_ERROR(expression)
Definition: ftmemory.h:42
static FT_Error pcf_read_TOC(FT_Stream stream, PCF_Face face)
Definition: pcfread.c:95
struct PCF_DriverRec_ * PCF_Driver
static FT_Error pcf_get_accel(FT_Stream stream, PCF_Face face, FT_ULong type)
Definition: pcfread.c:1107
#define PCF_ACCELERATORS
Definition: pcf.h:226
static FT_Error pcf_get_encodings(FT_Stream stream, PCF_Face face)
Definition: pcfread.c:937
#define FT_STRDUP(dst, str)
Definition: ftmemory.h:364
struct @1625::@1626 driver
#define ft_strcpy
Definition: ftstdlib.h:87
#define ft_strlen
Definition: ftstdlib.h:88
FT_Short height
Definition: freetype.h:373
GLenum GLuint GLint GLenum face
Definition: glext.h:7025

Referenced by PCF_Face_Init().