summaryrefslogtreecommitdiff
path: root/Build/source/texk/ttfdump/libttf
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/ttfdump/libttf')
-rw-r--r--Build/source/texk/ttfdump/libttf/cmap.c972
-rw-r--r--Build/source/texk/ttfdump/libttf/cvt.c57
-rw-r--r--Build/source/texk/ttfdump/libttf/disasm.c17
-rw-r--r--Build/source/texk/ttfdump/libttf/fixed.c8
-rw-r--r--Build/source/texk/ttfdump/libttf/font.c172
-rw-r--r--Build/source/texk/ttfdump/libttf/fpgm.c47
-rw-r--r--Build/source/texk/ttfdump/libttf/gasp.c75
-rw-r--r--Build/source/texk/ttfdump/libttf/gcache.c403
-rw-r--r--Build/source/texk/ttfdump/libttf/glyf.c423
-rw-r--r--Build/source/texk/ttfdump/libttf/gpos.c1006
-rw-r--r--Build/source/texk/ttfdump/libttf/gstate.c38
-rw-r--r--Build/source/texk/ttfdump/libttf/gsub.c556
-rw-r--r--Build/source/texk/ttfdump/libttf/hdmx.c87
-rw-r--r--Build/source/texk/ttfdump/libttf/head.c91
-rw-r--r--Build/source/texk/ttfdump/libttf/hhea.c78
-rw-r--r--Build/source/texk/ttfdump/libttf/hmtx.c89
-rw-r--r--Build/source/texk/ttfdump/libttf/interp.c856
-rw-r--r--Build/source/texk/ttfdump/libttf/kern.c161
-rw-r--r--Build/source/texk/ttfdump/libttf/loca.c95
-rw-r--r--Build/source/texk/ttfdump/libttf/ltsh.c62
-rw-r--r--Build/source/texk/ttfdump/libttf/maxp.c75
-rw-r--r--Build/source/texk/ttfdump/libttf/name.c165
-rw-r--r--Build/source/texk/ttfdump/libttf/os2.c195
-rw-r--r--Build/source/texk/ttfdump/libttf/otfcommon.c1083
-rw-r--r--Build/source/texk/ttfdump/libttf/pclt.c96
-rw-r--r--Build/source/texk/ttfdump/libttf/post.c156
-rw-r--r--Build/source/texk/ttfdump/libttf/prep.c47
-rw-r--r--Build/source/texk/ttfdump/libttf/stack.c96
-rw-r--r--Build/source/texk/ttfdump/libttf/tabledir.c96
-rw-r--r--Build/source/texk/ttfdump/libttf/ttc.c81
-rw-r--r--Build/source/texk/ttfdump/libttf/ttfread.c180
-rw-r--r--Build/source/texk/ttfdump/libttf/ttfutil.c93
-rw-r--r--Build/source/texk/ttfdump/libttf/vdmx.c133
-rw-r--r--Build/source/texk/ttfdump/libttf/vhea.c84
-rw-r--r--Build/source/texk/ttfdump/libttf/vmtx.c93
35 files changed, 0 insertions, 7966 deletions
diff --git a/Build/source/texk/ttfdump/libttf/cmap.c b/Build/source/texk/ttfdump/libttf/cmap.c
deleted file mode 100644
index e75b0adfb60..00000000000
--- a/Build/source/texk/ttfdump/libttf/cmap.c
+++ /dev/null
@@ -1,972 +0,0 @@
-/* cmap.c -- Load and Print the content of cmap table
- * Copyright (C) 1996 Li-Da Lho, All right reserved
- *
- * The structure of a cmap is really complex, it depends on which format the
- * cmap is and loading a cmap is a kind of confusing thing.
- * The structure of CMAP:
- * A cmap begins with a general description of the table
- * USHORT version indicates the version of this cmap.
- * USHORT numEncodings is the number of encodings in the cmap table.
- * Then follow 'numEncodings' of encoding tables, each of which contains
- * the following informations for each subtable. The subtable contains the
- * true data to map character code to glyph index
- * USHORT PlatformID shows which platform the subtable is to be used
- * (e.g. Mac, PC)
- * USHORT Platfrom specific EncodingID shows what kind of encoding scheme
- * this table uses (e.g. Big5, iso8859, Unicode etc.)
- * ULONG offset is the offset from the beginning of the whole cmap table
- * to the beginning of the corresponding subtable
- * ----------------------- --- ---
- * | USHORT version | ^ ^
- * ----------------------- | |
- * | USHORT numEncodings | | |
- * ----------------------- | |
- * | Encoding Table 1 | | |
- * | USHORT PlatformID | | |
- * | USHORT EncodingID | | |
- * | ULONG offset 1 |------ | |
- * ----------------------- | | offset 1 | offset 2
- * | Encoding Table 2 | | | |
- * | USHORT PlatformID | | | |
- * | USHORT EncodingID | | | |
- * | ULONG offset 2 |--- | v |
- * ----------------------- | | --- |
- * | Subtable 1 |<----- |
- * | with format 0 | | v
- * ----------------------- | ---
- * | Subtable 2 |<--
- * | with format 2 |
- * ----------------------|
- *
- * Problem with Character Code vs. Byte Endianess.
- *
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "ttf.h"
-#include "ttfutil.h"
-
-/* $Id: cmap.c,v 1.1.1.1 1998/06/05 07:47:52 robert Exp $ */
-
-typedef union _TwoBytes {
- USHORT u;
- unsigned char c[2];
-} TwoBytes;
-
-static void ttfLoadCMAP(FILE *fp, CMAPPtr cmap, ULONG offset);
-
-static void ttfLoadSubTable(FILE *fp, SubTablePtr subTable, ULONG offset);
-static void ttfPrintSubTable(FILE* fp, SubTablePtr subTable);
-static void ttfFreeSubTable(SubTablePtr subTable);
-
-static void ttfLoadCMAP0(FILE *fp, MapPtr *map);
-static void ttfPrintCMAP0(FILE *fp, MapPtr map);
-static USHORT ttfLookUpCMAP0(MapPtr map, USHORT cc);
-static void ttfFreeCMAP0(MapPtr map);
-
-static void ttfLoadCMAP2(FILE *fp, MapPtr *map);
-static void ttfPrintCMAP2(FILE *fp, MapPtr map);
-static USHORT ttfLookUpCMAP2(MapPtr map, USHORT cc);
-static void ttfFreeCMAP2(MapPtr map);
-
-static void ttfLoadCMAP4(FILE *fp, MapPtr *map);
-static void ttfPrintCMAP4(FILE *fp, MapPtr map);
-static USHORT ttfLookUpCMAP4(MapPtr map, USHORT cc);
-static void ttfFreeCMAP4(MapPtr map);
-
-static void ttfLoadCMAP6(FILE *fp, MapPtr *map);
-static void ttfPrintCMAP6(FILE *fp, MapPtr map);
-static USHORT ttfLookUpCMAP6(MapPtr map, USHORT cc);
-static void ttfFreeCMAP6(MapPtr map);
-
-static void ttfLoadCMAP8(FILE *fp, MapPtr *map);
-static void ttfPrintCMAP8(FILE *fp, MapPtr map);
-static USHORT ttfLookUpCMAP8(MapPtr map, ULONG cc);
-static void ttfFreeCMAP8(MapPtr map);
-
-static void ttfLoadCMAP10(FILE *fp, MapPtr *map);
-static void ttfPrintCMAP10(FILE *fp, MapPtr map);
-static USHORT ttfLookUpCMAP10(MapPtr map, ULONG cc);
-static void ttfFreeCMAP10(MapPtr map);
-
-static void ttfLoadCMAP12(FILE *fp, MapPtr *map);
-static void ttfPrintCMAP12(FILE *fp, MapPtr map);
-static USHORT ttfLookUpCMAP12(MapPtr map, ULONG cc);
-static void ttfFreeCMAP12(MapPtr map);
-
-static void ttfLoadCMAP13(FILE *fp, MapPtr *map);
-static void ttfPrintCMAP13(FILE *fp, MapPtr map);
-static USHORT ttfLookUpCMAP13(MapPtr map, ULONG cc);
-static void ttfFreeCMAP13(MapPtr map);
-
-static void ttfLoadCMAP14(FILE *fp, MapPtr *map);
-static void ttfPrintCMAP14(FILE *fp, MapPtr map);
-static USHORT ttfLookUpCMAP14(MapPtr map, ULONG cc);
-static void ttfFreeCMAP14(MapPtr map);
-
-void ttfInitCMAP(TTFontPtr font)
-{
- ULONG tag = FT_MAKE_TAG ('c', 'm', 'a', 'p');
- TableDirPtr ptd;
-
- if ((ptd = ttfLookUpTableDir(tag,font)) != NULL)
- {
- font->cmap = XCALLOC1 (CMAP);
- ttfLoadCMAP(font->fp,font->cmap,ptd->offset);
- }
-}
-
-static void ttfLoadCMAP(FILE *fp,CMAPPtr cmap,ULONG offset)
-{
- USHORT i,n;
- int k = 0;
-
- xfseek(fp, offset, SEEK_SET, "ttfLoadCMAP");
-
- cmap->version = ttfGetUSHORT(fp);
- cmap->numberOfEncodings = n = ttfGetUSHORT(fp);
- cmap->encoding = XCALLOC (cmap->numberOfEncodings, Encoding);
-
- for (i = 0; i < n; i++)
- {
- int j;
-
- cmap->encoding[i].PlatformID = ttfGetUSHORT(fp);
- cmap->encoding[i].EncodingID = ttfGetUSHORT(fp);
- cmap->encoding[i].offset = ttfGetULONG(fp);
- cmap->encoding[i].mapindex = k++;
- for (j = 0; j < i; j++) {
- if (cmap->encoding[i].offset == cmap->encoding[j].offset)
- {
- cmap->encoding[i].mapindex = cmap->encoding[j].mapindex;
- k--;
- break;
-
- }
- }
- }
- cmap->numberOfMaps = k;
- cmap->subTable = XCALLOC (cmap->numberOfMaps, SubTable);
- for (i = 0; i < n; i++)
- cmap->subTable[cmap->encoding[i].mapindex].offset = cmap->encoding[i].offset;
- for (i = 0; i < k; i++)
- ttfLoadSubTable(fp, cmap->subTable+i, offset);
-}
-void ttfPrintCMAP(FILE *fp,CMAPPtr cmap)
-{
- USHORT i;
-
- fprintf(fp,"'cmap' Table - Character to Glyph Index Mapping Table\n");
- fprintf(fp,"-----------------------------------------------------\n");
- fprintf(fp,"\t 'cmap' version: %d\n", cmap->version);
- fprintf(fp,"\t number of encodings: %d\n", cmap->numberOfEncodings);
- fprintf(fp,"\t number of subtables: %d\n\n", cmap->numberOfMaps);
-
- for (i = 0; i < cmap->numberOfEncodings; i++)
- {
- fprintf(fp, "Encoding %3d.\t PlatformID: %2d\n", i,
- cmap->encoding[i].PlatformID);
- fprintf(fp, "\t\t EcodingID: %2d\n",
- cmap->encoding[i].EncodingID);
- fprintf(fp, "\t\t SubTable: %d, Offset: 0x%08x\n\n",
- cmap->encoding[i].mapindex, cmap->encoding[i].offset);
- }
- for (i = 0; i < cmap->numberOfMaps; i++)
- {
- fprintf(fp,"SubTable %3d.\t",i);
- ttfPrintSubTable(fp, cmap->subTable+i);
- fprintf(fp,"\n");
- }
-}
-USHORT ttfLookUpCMAP(MapPtr map, USHORT cc)
-{
- USHORT idx,format = *map.format;
-
- switch (format)
- {
- case 0:
- idx = ttfLookUpCMAP0(map, cc);
- break;
- case 2:
- idx = ttfLookUpCMAP2(map, cc);
- break;
- case 4:
- idx = ttfLookUpCMAP4(map, cc);
- break;
- case 6:
- idx = ttfLookUpCMAP6(map, cc);
- break;
- case 8:
- idx = ttfLookUpCMAP8(map, cc);
- break;
- case 10:
- idx = ttfLookUpCMAP10(map, cc);
- break;
- case 12:
- idx = ttfLookUpCMAP12(map, cc);
- break;
- case 13:
- idx = ttfLookUpCMAP13(map, cc);
- break;
- case 14:
- idx = ttfLookUpCMAP14(map, cc);
- break;
- default:
- ttfError("Unrecognized CMAP format\n");
- return 0;
- }
- return idx;
-}
-void ttfFreeCMAP(CMAPPtr cmap)
-{
- USHORT i;
-
- if (!cmap)
- return;
-
- free(cmap->encoding);
-
- for (i = 0; i < cmap->numberOfMaps; i++)
- ttfFreeSubTable(cmap->subTable+i);
- free(cmap->subTable);
-
- free(cmap);
-}
-
-static void ttfLoadSubTable(FILE *fp, SubTablePtr subTable, ULONG offset)
-{
- ULONG pos;
- USHORT format;
-
- /* seek to the actuall position for this subtable
- * base: beginning of cmap
- * offset: offset field of each encoding table */
- pos = offset + subTable->offset;
- xfseek(fp, pos, SEEK_SET, "ttfLoadEncoding");
-
- format = ttfGetUSHORT(fp);
-
- switch(format)
- {
- case 0:
- ttfLoadCMAP0(fp, &subTable->map);
- break;
- case 2:
- ttfLoadCMAP2(fp, &subTable->map);
- break;
- case 4:
- ttfLoadCMAP4(fp, &subTable->map);
- break;
- case 6:
- ttfLoadCMAP6(fp, &subTable->map);
- break;
- case 8:
- ttfLoadCMAP8(fp, &subTable->map);
- break;
- case 10:
- ttfLoadCMAP10(fp, &subTable->map);
- break;
- case 12:
- ttfLoadCMAP12(fp, &subTable->map);
- break;
- case 13:
- ttfLoadCMAP13(fp, &subTable->map);
- break;
- case 14:
- ttfLoadCMAP14(fp, &subTable->map);
- break;
- default:
- ttfError("Unrecognized CMAP format\n");
- }
-
- *subTable->map.format = format;
-}
-static void ttfPrintSubTable(FILE* fp, SubTablePtr subTable)
-{
- USHORT format = *subTable->map.format;
-
- switch(format)
- {
- case 0:
- ttfPrintCMAP0(fp, subTable->map);
- break;
- case 2:
- ttfPrintCMAP2(fp, subTable->map);
- break;
- case 4:
- ttfPrintCMAP4(fp, subTable->map);
- break;
- case 6:
- ttfPrintCMAP6(fp, subTable->map);
- break;
- case 8:
- ttfPrintCMAP8(fp, subTable->map);
- break;
- case 10:
- ttfPrintCMAP10(fp, subTable->map);
- break;
- case 12:
- ttfPrintCMAP12(fp, subTable->map);
- break;
- case 13:
- ttfPrintCMAP13(fp, subTable->map);
- break;
- case 14:
- ttfPrintCMAP14(fp, subTable->map);
- break;
- default:
- ttfError("Unrecognized CMAP format\n");
- }
-}
-static void ttfFreeSubTable(SubTablePtr subTable)
-{
- USHORT format = *subTable->map.format;
-
- switch(format)
- {
- case 0:
- ttfFreeCMAP0(subTable->map);
- break;
- case 2:
- ttfFreeCMAP2(subTable->map);
- break;
- case 4:
- ttfFreeCMAP4(subTable->map);
- break;
- case 6:
- ttfFreeCMAP6(subTable->map);
- break;
- case 8:
- ttfFreeCMAP8(subTable->map);
- break;
- case 10:
- ttfFreeCMAP10(subTable->map);
- break;
- case 12:
- ttfFreeCMAP12(subTable->map);
- break;
- case 13:
- ttfFreeCMAP13(subTable->map);
- break;
- case 14:
- ttfFreeCMAP14(subTable->map);
- break;
- }
-}
-
-static void ttfLoadCMAP0(FILE *fp, MapPtr *map)
-{
- BYTE * array;
-
- map->cmap0 = XCALLOC1 (CMAP0);
- map->cmap0->length = ttfGetUSHORT(fp);
- map->cmap0->version = ttfGetUSHORT(fp);
- array = map->cmap0->glyphIndexArray;
-
- /* Attention: we get lots of bytes at once as a work around of the
- * usual ttfGet*, this cause byte sex trouble as will be seen
- * in the following procedures */
- if (fread(array,sizeof(BYTE),256,fp) != 256)
- ttfError("Error when getting glyphIndexArray\n");
-}
-static void ttfPrintCMAP0(FILE *fp, MapPtr map)
-{
- USHORT index;
- int i;
-
- fprintf(fp, " Format 0 - Byte encoding table\n");
- fprintf(fp,"\t\t Length: %6d\n", map.cmap0->length);
- fprintf(fp,"\t\t Version: %6d\n", map.cmap0->version);
- for (i=0;i<256;i++)
- {
- index = ttfLookUpCMAP(map, i);
- fprintf(fp,"\t\t Char %3d -> Index %4d\n",i,index);
- }
-}
-static USHORT ttfLookUpCMAP0(MapPtr map, USHORT cc)
-{
- return map.cmap0->glyphIndexArray[cc & 0x00ff];
-}
-static void ttfFreeCMAP0(MapPtr map)
-{
- free(map.cmap0);
-}
-
-static void ttfLoadCMAP2(FILE *fp, MapPtr *map)
-{
- USHORT * array,i,n = 0;
- USHORT numGlyphId;
- SubHeaderPtr header;
-
- map->cmap2 = XCALLOC1 (CMAP2);
- map->cmap2->length = ttfGetUSHORT(fp);
- map->cmap2->version = ttfGetUSHORT(fp);
- array = map->cmap2->subHeaderKeys;
-
- ttfReadUSHORT (array, 256, fp);
-
- for (i=0;i<256;i++)
- {
- array[i] /= 8;
- if (n< array[i])
- n = array[i]; /* find the max of subHeaderKeys */
- }
- n += 1; /* the number of subHeaders is one plus the max of subHeaderKeys */
-
- map->cmap2->subHeaders = header = XCALLOC (n, SubHeader);
- for (i=0;i<n;i++)
- {
- (header+i)->firstCode = ttfGetUSHORT(fp);
- (header+i)->entryCount = ttfGetUSHORT(fp);
- (header+i)->idDelta = ttfGetSHORT(fp);
- (header+i)->idRangeOffset = ttfGetUSHORT(fp);
-
- /* it makes things easier to let the offset starts from
- * the beginning of glyphIndexArray */
- if ((header+i)->idRangeOffset != 0)
- (header+i)->idRangeOffset -= (sizeof(USHORT) +
- (n-i-1) * sizeof(SubHeader)) ;
- }
-
- /* caculate the length of glyphIndexArray, this is ugly, there should be
- * a better way to get this information. */
- numGlyphId =
- map->cmap2->length - (256 + 3) * sizeof(USHORT) - n * sizeof(SubHeader);
- numGlyphId /= sizeof(USHORT);
- map->cmap2->glyphIndexArray = XCALLOC (numGlyphId, USHORT);
- for (i=0;i<numGlyphId;i++)
- {
- map->cmap2->glyphIndexArray[i] = ttfGetUSHORT(fp);
- }
-}
-static void ttfPrintCMAP2(FILE *fp, MapPtr map)
-{
- USHORT i,j,numGlyphId;
- USHORT *array,n=0,index;
- SubHeaderPtr header;
- TwoBytes tb;
-
- fprintf(fp, " Format 2 - High-byte mapping through table\n");
- fprintf(fp,"\t\t Length: %6d\n", map.cmap2->length);
- fprintf(fp,"\t\t Version: %6d\n", map.cmap2->version);
- array = map.cmap2->subHeaderKeys;
- header = map.cmap2->subHeaders;
-
- for (i=0;i<256;i++)
- {
- /* find the number of subHeader */
- if (n< array[i])
- n = array[i];
- fprintf(fp,"\t\t subHeaderKeys[%d] = %d\n",i,array[i]);
- }
- n += 1; /* the number of subHeaders is one plus the max of subHeaderKeys */
- fprintf(fp,"\t\t Number of SubHeaders is %d\n",n);
-
- for (i=0;i<=n;i++)
- {
- fprintf(fp,"\t\t SubHeader[%d]\n",i);
- fprintf(fp,"\t\t firstCode \t 0x%04x\n",(header+i)->firstCode);
- fprintf(fp,"\t\t entryCount \t %d\n",(header+i)->entryCount);
- fprintf(fp,"\t\t idDelta \t %d\n",(header+i)->idDelta);
- fprintf(fp,"\t\t idRangeOffset \t 0x%04x\n\n",
- (header+i)->idRangeOffset);
- }
-
- /* caculate the length of glyphIndexArray, this is ugly, there should be
- * a better way to get this information. */
- numGlyphId =
- map.cmap2->length - (256 + 3) * sizeof(USHORT) - n * sizeof(SubHeader);
- numGlyphId /= sizeof(USHORT);
- fprintf(fp,"Number of glyphIndex: %d\n", numGlyphId);
- for (i=0;i<numGlyphId;i++)
- {
- fprintf(fp,"\t\t glyphIdArray[%d] = %4d\n",i,
- map.cmap2->glyphIndexArray[i]);
- }
-
- i = 0;
- fprintf(fp,"\t\t First Byte:\t %2x\n",i);
- tb.c[1] = i;
- for(j=0;j<=255;j++)
- {
- tb.c[0] = j;
- index = ttfLookUpCMAP2(map, tb.u);
- fprintf(fp,"\t\t Char %2x -> Index %d\n",j,index);
- }
- for (i=128;i<=255;i++)
- {
- fprintf(fp,"\t\t First Byte:\t %2x\n",i);
- tb.c[1] = i;
- for(j=0;j<=255;j++)
- {
- tb.c[0] = j;
- index = ttfLookUpCMAP2(map, tb.u);
- fprintf(fp,"\t\t Char %2x -> Index %d\n",j,index);
- }
- }
-}
-static USHORT ttfLookUpCMAP2(MapPtr map, USHORT cc)
-{
- USHORT index,idx = 0;
- USHORT *array = map.cmap2->subHeaderKeys;
- SubHeaderPtr headers = map.cmap2->subHeaders;
- SHORT idDelta;
- USHORT firstCode, entryCount, idRangeOffset;
- TwoBytes tb;
- unsigned char first,second;
-
-
- /* On little endian platforms "low byte" is the "first byte".
- * It determines if it is necessary to use the second byte to
- * fully interprete the character code; for example, if the first byte
- * is obviously an ASCII character then it is not necessary to
- * interpret the second byte, on the other hand, if the first byte is
- * zero then the second byte is a ASCII char, when the first byte
- * is not an ASCII char nor zero, those two bytes together determine
- * the meanning of the character code
- */
- tb.u = cc;
- first = tb.c[1];
- second = tb.c[0];
-
- /* select which subHeader to use */
- idx = array[first];
-
- firstCode = (headers+idx)->firstCode;
- entryCount = (headers+idx)->entryCount;
- idDelta = (headers+idx)->idDelta;
- idRangeOffset = (headers+idx)->idRangeOffset / sizeof (USHORT);
-
- if (second >= firstCode && second < firstCode+entryCount)
- {
- /* use idRangeOffset to find where in the glyphIndexArray
- * the correspinding index is */
- idRangeOffset += (second - firstCode);
- index = map.cmap2->glyphIndexArray[idRangeOffset];
- if (index != 0)
- /* if the character is not a missing character then
- * add idDelta to it */
- index += idDelta;
- }
- else
- /* The second code is out ranged then return the
- * missing glyph character */
- index = 0;
-
- return index;
-}
-static void ttfFreeCMAP2(MapPtr map)
-{
- free(map.cmap2->subHeaders);
- free(map.cmap2->glyphIndexArray);
- free(map.cmap2);
-}
-
-static void ttfLoadCMAP4(FILE *fp, MapPtr *map)
-{
- USHORT segCount;
- USHORT len;
-
- map->cmap4 = XCALLOC1 (CMAP4);
- map->cmap4->length = ttfGetUSHORT(fp);
- map->cmap4->version = ttfGetUSHORT(fp);
-
- map->cmap4->segCountX2 = segCount = ttfGetUSHORT(fp);
- map->cmap4->searchRange = ttfGetUSHORT(fp);
- map->cmap4->entrySelector = ttfGetUSHORT(fp);
- map->cmap4->rangeShift = ttfGetUSHORT(fp);
-
- segCount /= 2;
- map->cmap4->endCount = ttfMakeUSHORT (segCount, fp);
-
- map->cmap4->reservedPad = ttfGetUSHORT(fp);
-
- map->cmap4->startCount = ttfMakeUSHORT (segCount, fp);
-
- map->cmap4->idDelta = ttfMakeUSHORT (segCount, fp);
-
- map->cmap4->idRangeOffset = ttfMakeUSHORT (segCount, fp);
-
- /* caculate the length of glyphIndexArray, this is ugly, there should be
- * a better way to get this information. */
- len = map->cmap4->length - 8*sizeof(USHORT) - 4*segCount*sizeof(USHORT);
- len /= sizeof(USHORT);
- map->cmap4->glyphIndexArray = ttfMakeUSHORT (len, fp);
-}
-static void ttfPrintCMAP4(FILE *fp, MapPtr map)
-{
- USHORT i;
- USHORT segCount,len;
-
- fprintf(fp, " Format 4 - Segment mapping to delta values\n");
- fprintf(fp,"\t\t Length: %6d\n", map.cmap4->length);
- fprintf(fp,"\t\t Version: %6d\n", map.cmap4->version);
- segCount = map.cmap4->segCountX2/2;
- fprintf(fp, "\t\t segCount:\t %d\n", segCount);
- fprintf(fp, "\t\t searchRange:\t %d\n", map.cmap4->searchRange);
- fprintf(fp, "\t\t entrySelector:\t %d\n", map.cmap4->entrySelector);
- fprintf(fp, "\t\t rangeShift:\t %d\n", map.cmap4->rangeShift);
-
- for (i=0;i<segCount;i++)
- {
- fprintf(fp, "\t\t Seg %3d :", i);
- fprintf(fp, " St = %04x,", map.cmap4->startCount[i]);
- fprintf(fp, " En = %04x,", map.cmap4->endCount[i]);
- /* should this filed be SHORT or USHORT ?? */
- fprintf(fp, " D = %6d," ,
- (map.cmap4->idDelta[i]));
- fprintf(fp, " RO = %6d," , map.cmap4->idRangeOffset[i]);
-
- /* find the glyphIndex correpsonding to this segment */
- if (map.cmap4->idRangeOffset[i] != 0)
- {
- USHORT j;
- j = map.cmap4->segCountX2/2 - i;
- j = map.cmap4->idRangeOffset[i] -
- j*sizeof(USHORT);
- fprintf(fp, " gId# = %d\n", (int) (j/sizeof(USHORT)));
- }
- else
- fprintf(fp, " gId# = N/A\n");
- }
-
- /* caculate the length of glyphIndexArray, this is ugly, there should be
- * a better way to get this information. */
- len = map.cmap4->length - 8*sizeof(USHORT) - 4*segCount*sizeof(USHORT);
- len /= sizeof(USHORT);
- fprintf(fp,"\t\t Number of glyphIndex %d\n",len);
- for (i=0;i<len;i++)
- {
- fprintf(fp,"\t\t glyphIdArray[%d] = %d\n",i,
- map.cmap4->glyphIndexArray[i]);
- }
-
- for (i=0;i<segCount;i++)
- {
- int j,index;
- fprintf(fp,"Segment %d:\n",i);
- for (j=map.cmap4->startCount[i];
- j<=map.cmap4->endCount[i];j++)
- {
- index = ttfLookUpCMAP4(map, j);
- fprintf(fp,"\t\tChar 0x%04x -> Index %d\n",j,index);
- }
- }
-}
-static USHORT ttfLookUpCMAP4(MapPtr map, USHORT cc)
-{
- USHORT i;
- USHORT index=0, segCount = map.cmap4->segCountX2/2;
-
- for (i=0;i<segCount;i++)
- {
- if (cc <= map.cmap4->endCount[i] &&
- cc >= map.cmap4->startCount[i])
- {
- USHORT j;
- if (map.cmap4->idRangeOffset[i] != 0)
- {
- j = map.cmap4->idRangeOffset[i] -
- (segCount - i)*sizeof(USHORT);
- j = cc - map.cmap4->startCount[i] + j/2;
- index = map.cmap4->glyphIndexArray[j];
- if (index != 0)
- index += map.cmap4->idDelta[i];
- }
- else
- {
- index = cc + map.cmap4->idDelta[i];
- }
- break;
- }
- }
-
- return index;
-}
-static void ttfFreeCMAP4(MapPtr map)
-{
- free(map.cmap4->endCount);
- free(map.cmap4->startCount);
- free(map.cmap4->idDelta);
- free(map.cmap4->idRangeOffset);
- free(map.cmap4->glyphIndexArray);
- free(map.cmap4);
-}
-
-static void ttfLoadCMAP6(FILE *fp, MapPtr *map)
-{
- USHORT len;
-
- map->cmap6 = XCALLOC1 (CMAP6);
- map->cmap6->length = ttfGetUSHORT(fp);
- map->cmap6->version = ttfGetUSHORT(fp);
- map->cmap6->firstCode = ttfGetUSHORT(fp);
- map->cmap6->entryCount = len = ttfGetUSHORT(fp);
- map->cmap6->glyphIndexArray = ttfMakeUSHORT (len, fp);
-}
-static void ttfPrintCMAP6(FILE *fp, MapPtr map)
-{
- USHORT i;
-
- fprintf(fp, " Format 6 - Trimmed table mapping\n");
- fprintf(fp,"\t\t Length: %6d\n", map.cmap6->length);
- fprintf(fp,"\t\t Version: %6d\n", map.cmap6->version);
- fprintf(fp,"\t\t First Code: 0x%04x\n", map.cmap6->firstCode);
- fprintf(fp,"\t\t Entry Count: %d\n", map.cmap6->entryCount);
-
- for (i=0;i<map.cmap6->entryCount;i++)
- {
- fprintf(fp,"\t\t glyphIdArray[%d] = %d\n",i,
- map.cmap6->glyphIndexArray[i]);
- }
-}
-static USHORT ttfLookUpCMAP6(MapPtr map, USHORT cc)
-{
- USHORT index;
-
- index = cc - map.cmap6->firstCode;
- if (index < map.cmap6->entryCount)
- return map.cmap6->glyphIndexArray[index];
- else
- /* index out of range, return missing glyph */
- return 0;
-}
-static void ttfFreeCMAP6(MapPtr map)
-{
- free(map.cmap6->glyphIndexArray);
- free(map.cmap6);
-}
-
-static void ttfLoadCMAP8(FILE *fp, MapPtr *map)
-{
- int i;
-
- map->cmap8 = XCALLOC1 (CMAP8);
- ttfGetUSHORT(fp);
- map->cmap8->length = ttfGetULONG(fp);
- map->cmap8->version = ttfGetULONG(fp);
- if (fread(map->cmap8->is32, sizeof(BYTE), 8192, fp) != 8192)
- ttfError("Error when getting is32\n");
- map->cmap8->nGroups = ttfGetULONG(fp);
- map->cmap8->charGroup = XCALLOC (map->cmap8->nGroups, CharGroup);
- for (i = 0; i < map->cmap8->nGroups; i++) {
- map->cmap8->charGroup[i].startCharCode = ttfGetULONG(fp);
- map->cmap8->charGroup[i].endCharCode = ttfGetULONG(fp);
- map->cmap8->charGroup[i].startGlyphID = ttfGetULONG(fp);
- }
-}
-static void ttfPrintCMAP8(FILE *fp, MapPtr map)
-{
- int i;
-
- fprintf(fp, " Format 8 - Mixed 16-bit and 32-bit coverage\n");
- fprintf(fp,"\t\t Length: %6d\n", map.cmap8->length);
- fprintf(fp,"\t\t Version: %6d\n", map.cmap8->version);
- fprintf(fp,"\t\t nGroups: %6d\n", map.cmap8->nGroups);
- for (i = 0; i < 256; i++) {
- int j;
-
- fprintf(fp, "\t is32 %2x", i);
- for (j = 0; j < 32; j++)
- fprintf(fp, j % 4 ? "%2x" : " %2x", map.cmap8->is32[i << 5 | j]);
- fprintf(fp, "\n");
- }
- for (i = 0; i < map.cmap8->nGroups; i++)
- fprintf(fp, "\t\t Group %4d : startCharCode = %d, endCharCode = %d, startGlyphID = %d\n", i,
- map.cmap8->charGroup[i].startCharCode,
- map.cmap8->charGroup[i].endCharCode,
- map.cmap8->charGroup[i].startGlyphID);
-}
-static USHORT ttfLookUpCMAP8(MapPtr map, ULONG cc)
-{
- int i;
-
- for (i = 0; i < map.cmap8->nGroups; i++)
- if (cc > map.cmap8->charGroup[i].endCharCode)
- continue;
- else if (cc < map.cmap8->charGroup[i].startCharCode)
- break;
- else
- return map.cmap8->charGroup[i].startGlyphID +
- (cc - map.cmap8->charGroup[i].startCharCode);
-
- /* index out of range, return missing glyph */
- return 0;
-}
-static void ttfFreeCMAP8(MapPtr map)
-{
- free(map.cmap8->charGroup);
- free(map.cmap8);
-}
-
-static void ttfLoadCMAP10(FILE *fp, MapPtr *map)
-{
- ULONG len;
-
- map->cmap10 = XCALLOC1 (CMAP10);
- ttfGetUSHORT(fp);
- map->cmap10->length = ttfGetULONG(fp);
- map->cmap10->version = ttfGetULONG(fp);
- map->cmap10->startCharCode = ttfGetULONG(fp);
- map->cmap10->numChars = len = ttfGetULONG(fp);
- map->cmap10->glyphs = ttfMakeUSHORT (len, fp);
-}
-static void ttfPrintCMAP10(FILE *fp, MapPtr map)
-{
- int i;
-
- fprintf(fp, " Format 10 - Trimmed array\n");
- fprintf(fp,"\t\t Length: %6d\n", map.cmap10->length);
- fprintf(fp,"\t\t Version: %6d\n", map.cmap10->version);
- fprintf(fp,"\t\t Start Char Code: 0x%04x\n", map.cmap10->startCharCode);
- fprintf(fp,"\t\t Num Chars: %d\n", map.cmap10->numChars);
-
- for (i = 0; i < map.cmap10->numChars; i++)
- {
- fprintf(fp, "\t\t glyphs[%d] = %d\n", i, map.cmap10->glyphs[i]);
- }
-}
-static USHORT ttfLookUpCMAP10(MapPtr map, ULONG cc)
-{
- ULONG index;
-
- index = cc - map.cmap10->startCharCode;
- if (index < map.cmap10->numChars)
- return map.cmap10->glyphs[index];
- else
- /* index out of range, return missing glyph */
- return 0;
-}
-static void ttfFreeCMAP10(MapPtr map)
-{
- free(map.cmap10->glyphs);
- free(map.cmap10);
-}
-
-static void ttfLoadCMAP12(FILE *fp, MapPtr *map)
-{
- int i;
-
- map->cmap12 = XCALLOC1 (CMAP12);
- ttfGetUSHORT(fp);
- map->cmap12->length = ttfGetULONG(fp);
- map->cmap12->version = ttfGetULONG(fp);
- map->cmap12->nGroups = ttfGetULONG(fp);
- map->cmap12->charGroup = XCALLOC (map->cmap12->nGroups, CharGroup);
- for (i = 0; i < map->cmap12->nGroups; i++) {
- map->cmap12->charGroup[i].startCharCode = ttfGetULONG(fp);
- map->cmap12->charGroup[i].endCharCode = ttfGetULONG(fp);
- map->cmap12->charGroup[i].startGlyphID = ttfGetULONG(fp);
- }
-}
-static void ttfPrintCMAP12(FILE *fp, MapPtr map)
-{
- int i;
-
- fprintf(fp, " Format 12 - Segmented coverage\n");
- fprintf(fp,"\t\t Length: %6d\n", map.cmap12->length);
- fprintf(fp,"\t\t Version: %6d\n", map.cmap12->version);
- fprintf(fp,"\t\t nGroups: %6d\n", map.cmap12->nGroups);
- for (i = 0; i < map.cmap12->nGroups; i++)
- fprintf(fp, "\t\t Group %4d : startCharCode = %d, endCharCode = %d, startGlyphID = %d\n", i,
- map.cmap12->charGroup[i].startCharCode,
- map.cmap12->charGroup[i].endCharCode,
- map.cmap12->charGroup[i].startGlyphID);
-}
-static USHORT ttfLookUpCMAP12(MapPtr map, ULONG cc)
-{
- int i;
-
- for (i = 0; i < map.cmap12->nGroups; i++)
- if (cc > map.cmap12->charGroup[i].endCharCode)
- continue;
- else if (cc < map.cmap12->charGroup[i].startCharCode)
- break;
- else
- return map.cmap12->charGroup[i].startGlyphID +
- (cc - map.cmap12->charGroup[i].startCharCode);
-
- /* index out of range, return missing glyph */
- return 0;
-}
-static void ttfFreeCMAP12(MapPtr map)
-{
- free(map.cmap12->charGroup);
- free(map.cmap12);
-}
-
-static void ttfLoadCMAP13(FILE *fp, MapPtr *map)
-{
- int i;
-
- map->cmap13 = XCALLOC1 (CMAP13);
- ttfGetUSHORT(fp);
- map->cmap13->length = ttfGetULONG(fp);
- map->cmap13->version = ttfGetULONG(fp);
- map->cmap13->nGroups = ttfGetULONG(fp);
- map->cmap13->charGroup = XCALLOC (map->cmap13->nGroups, CharGroup);
- for (i = 0; i < map->cmap13->nGroups; i++) {
- map->cmap13->charGroup[i].startCharCode = ttfGetULONG(fp);
- map->cmap13->charGroup[i].endCharCode = ttfGetULONG(fp);
- map->cmap13->charGroup[i].startGlyphID = ttfGetULONG(fp);
- }
-}
-static void ttfPrintCMAP13(FILE *fp, MapPtr map)
-{
- int i;
-
- fprintf(fp, " Format 13 - Many-to-one range mappings\n");
- fprintf(fp,"\t\t Length: %6d\n", map.cmap13->length);
- fprintf(fp,"\t\t Version: %6d\n", map.cmap13->version);
- fprintf(fp,"\t\t nGroups: %6d\n", map.cmap13->nGroups);
- for (i = 0; i < map.cmap13->nGroups; i++)
- fprintf(fp, "\t\t Group %4d : startCharCode = %d, endCharCode = %d, glyphID = %d\n", i,
- map.cmap13->charGroup[i].startCharCode,
- map.cmap13->charGroup[i].endCharCode,
- map.cmap13->charGroup[i].startGlyphID);
-}
-static USHORT ttfLookUpCMAP13(MapPtr map, ULONG cc)
-{
- int i;
-
- for (i = 0; i < map.cmap13->nGroups; i++)
- if (cc > map.cmap13->charGroup[i].endCharCode)
- continue;
- else if (cc < map.cmap13->charGroup[i].startCharCode)
- break;
- else
- return map.cmap12->charGroup[i].startGlyphID;
-
- /* index out of range, return missing glyph */
- return 0;
-}
-static void ttfFreeCMAP13(MapPtr map)
-{
- free(map.cmap13->charGroup);
- free(map.cmap13);
-}
-
-static void ttfLoadCMAP14(FILE *fp, MapPtr *map)
-{
- map->cmap14 = XCALLOC1 (CMAP14);
- map->cmap14->length = ttfGetULONG(fp);
-}
-static void ttfPrintCMAP14(FILE *fp, MapPtr map)
-{
- fprintf(fp, " Format 14 - Unicode variation sequences\n");
- fprintf(fp,"\t\t Length: %6d\n", map.cmap14->length);
- fprintf(fp,"\t\t *** NOT YET IMPLEMENTED ***\n");
-}
-static USHORT ttfLookUpCMAP14(MapPtr map, ULONG cc)
-{
- return 0;
-}
-static void ttfFreeCMAP14(MapPtr map)
-{
- free(map.cmap14);
-}
-
diff --git a/Build/source/texk/ttfdump/libttf/cvt.c b/Build/source/texk/ttfdump/libttf/cvt.c
deleted file mode 100644
index 6af49920bfc..00000000000
--- a/Build/source/texk/ttfdump/libttf/cvt.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* cvt.c -- Control Value Table
- * Copyright (C) 1996 Li-Da Lho, All right reserved
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "ttf.h"
-#include "ttfutil.h"
-
-/* $Id: cvt.c,v 1.1.1.1 1998/06/05 07:47:52 robert Exp $ */
-
-static void ttfLoadCVT(FILE *fp,FWord *cvt,USHORT lenght,ULONG offset);
-
-void ttfInitCVT(TTFontPtr font)
-{
- ULONG tag = FT_MAKE_TAG ('c', 'v', 't', ' ');
- TableDirPtr ptd;
-
- if ((ptd = ttfLookUpTableDir(tag,font)) != NULL)
- {
- font->cvtLength = ptd->length / sizeof(FWord);
- font->cvt = XCALLOC (font->cvtLength, FWord);
- ttfLoadCVT(font->fp,font->cvt,font->cvtLength,ptd->offset);
- }
-}
-
-static void ttfLoadCVT(FILE *fp,FWord *cvt,USHORT length,ULONG offset)
-{
- xfseek(fp, offset, SEEK_SET, "ttfLoadCVT");
-
- ttfReadFWord (cvt, length, fp);
-}
-
-void ttfPrintCVT(FILE *fp, FWord *cvt, USHORT cvtLength)
-{
- USHORT i;
-
- fprintf(fp,"'cvt ' Table - Control Value Table\n");
- fprintf(fp,"----------------------------------\n");
- fprintf(fp,"Size = %d bytes, %d entries\n", (int) (cvtLength*sizeof(FWord)),
- cvtLength);
-
- for (i=0;i<cvtLength;i++)
- {
- fprintf(fp,"\t %4d. \t %d\n",i,cvt[i]);
- }
- fprintf(fp,"\n");
-}
-
-void ttfFreeCVT(FWord *cvt)
-{
- if (cvt != NULL)
- free(cvt);
-}
diff --git a/Build/source/texk/ttfdump/libttf/disasm.c b/Build/source/texk/ttfdump/libttf/disasm.c
deleted file mode 100644
index 8b26895ebb8..00000000000
--- a/Build/source/texk/ttfdump/libttf/disasm.c
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "ttf.h"
-#include "ttfutil.h"
-
-/* $Id: disasm.c,v 1.1.1.1 1998/06/05 07:47:52 robert Exp $ */
-
-void ttfPrintInstructions(FILE *fp, BYTE * ins)
-{
- /* not implemented yet */
-}
-
-/* Pushing data onto the interpreter stack */
diff --git a/Build/source/texk/ttfdump/libttf/fixed.c b/Build/source/texk/ttfdump/libttf/fixed.c
deleted file mode 100644
index 3ff834b300a..00000000000
--- a/Build/source/texk/ttfdump/libttf/fixed.c
+++ /dev/null
@@ -1,8 +0,0 @@
-/* fixed.c -- dealing with fixed point arithmetic
- * Copyright (C) 1996 Li-Da Lho, All right reserved.
- */
-#include "config.h"
-#include "ttf.h"
-#include "ttfutil.h"
-
-/* $Id: fixed.c,v 1.1.1.1 1998/06/05 07:47:52 robert Exp $ */
diff --git a/Build/source/texk/ttfdump/libttf/font.c b/Build/source/texk/ttfdump/libttf/font.c
deleted file mode 100644
index 4aa74e34e99..00000000000
--- a/Build/source/texk/ttfdump/libttf/font.c
+++ /dev/null
@@ -1,172 +0,0 @@
-/* font.c -- general font init and clean up codes
- * Copyright (C) 1996 Li-Da Lho, All right reserved
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "ttf.h"
-#include "ttfutil.h"
-#include "protos.h"
-
-/* $Id: font.c,v 1.1.1.1 1998/06/05 07:47:52 robert Exp $ */
-
-static void ttfInitInterpreter(TTFontPtr font);
-
-TTFontPtr ttfInitFont(char *filename)
-{
- TTFontPtr font;
-
- font = XCALLOC1 (TTFont);
-
- font->ttfname = filename;
- if ((font->fp = fopen_truetype (filename)) == NULL)
- {
- fprintf(stderr,"Can't open ttf file %s\n",filename);
- free(font);
- return NULL;
- }
-
- ttfLoadFont(font, 0);
- return font;
-}
-void ttfLoadFont(TTFontPtr font, ULONG offset)
-{
- xfseek(font->fp, offset, SEEK_SET, "ttfLoadFont");
-
- /* offset table */
- font->version = ttfGetFixed(font->fp);
- font->numTables = ttfGetUSHORT(font->fp);
-
- ttfInitTableDir(font,offset);
-
- ttfLoadRequiredTables(font);
- ttfLoadOptionalTables(font);
- ttfLoadOpenTypeTables(font);
-
- ttfInitInterpreter(font);
-
- /* initialize the reference count to 1 */
- font->refcount = XCALLOC1 (int);
- *(font->refcount) = 1;
-}
-void ttfFreeFont(TTFontPtr font)
-{
- ttfFreeRequiredTables(font);
-
- ttfFreeOptionalTables(font);
-
- ttfFreeOpenTypeTables(font);
-
- ttfFreeTableDir(font->dir);
- free(font->refcount);
- free(font);
-}
-
-void ttfLoadRequiredTables(TTFontPtr font)
-{
- ttfInitCMAP(font);
- ttfInitNAME(font);
-
- ttfInitMAXP(font);
- ttfInitHEAD(font);
-
- ttfInitGlyphCache(font);
- ttfInitGLYF(font);
-
- ttfInitHHEA(font);
- ttfInitHMTX(font);
-
- ttfInitPOST(font);
- ttfInitOS2(font);
-}
-
-void ttfFreeRequiredTables(TTFontPtr font)
-{
- ttfFreeCMAP(font->cmap);
- ttfFreeNAME(font->name);
-
- ttfCleanUpGlyphCache(font);
- ttfFreeHEAD(font->head);
- ttfFreeMAXP(font->maxp);
-
- ttfFreeHMTX(font->hmtx);
- ttfFreeHHEA(font->hhea);
-
- ttfFreePOST(font->post);
- ttfFreeOS2(font->os2);
-}
-
-void ttfLoadOptionalTables(TTFontPtr font)
-{
- ttfInitCVT(font);
- ttfInitFPGM(font);
- ttfInitGASP(font);
- ttfInitHDMX(font);
- ttfInitKERN(font);
- ttfInitLOCA(font);
- ttfInitPREP(font);
- ttfInitLTSH(font);
- ttfInitPCLT(font);
- ttfInitVDMX(font);
- ttfInitVHEA(font);
- ttfInitVMTX(font);
-}
-void ttfFreeOptionalTables(TTFontPtr font)
-{
- ttfFreeCVT(font->cvt);
- ttfFreeFPGM(font->fpgm);
- ttfFreeGASP(font->gasp);
- ttfFreeHDMX(font->hdmx);
- ttfFreeKERN(font->kern);
- ttfFreeLOCA(font->loca);
- ttfFreePREP(font->prep);
- ttfFreeLTSH(font->ltsh);
- ttfFreePCLT(font->pclt);
- ttfFreeVDMX(font->vdmx);
- ttfFreeVHEA(font->vhea);
- ttfFreeVMTX(font->vmtx);
-}
-
-void ttfLoadOpenTypeTables(TTFontPtr font)
-{
- ttfInitGPOS(font);
- ttfInitGSUB(font);
-}
-void ttfFreeOpenTypeTables(TTFontPtr font)
-{
- ttfFreeGPOS(font->gpos);
- ttfFreeGSUB(font->gsub);
-}
-
-#if 0
-/* Not used */
-/* make a clone of the origional font
- * This is use for fonts that support more than one encoding scheme
- *
- * Problems:
- * 1. which of those members can be shared between two instances
- * 2. How can we free a font safely
- */
-TTFontPtr ttfCloneFont(TTFontPtr font)
-{
- TTFontPtr newfont;
-
- newfont = XTALLOC1 (TTFont);
-
- memcpy(newfont, font, sizeof(TTFont));
- newfont->refcount += 1;
-
- return newfont;
-}
-#endif
-
-static void ttfInitInterpreter(TTFontPtr font)
-{
- ttfInitStorageArea(font);
- ttfInitStack(font);
- ttfInitGraphicsState(font);
-}
diff --git a/Build/source/texk/ttfdump/libttf/fpgm.c b/Build/source/texk/ttfdump/libttf/fpgm.c
deleted file mode 100644
index 99c5c3ca7ba..00000000000
--- a/Build/source/texk/ttfdump/libttf/fpgm.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* fpgm.c -- Font Program
- * Copyright (C) 1996 Li-Da Lho, All right reserved
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "ttf.h"
-#include "ttfutil.h"
-
-/* $Id: fpgm.c,v 1.1.1.1 1998/06/05 07:47:52 robert Exp $ */
-
-static void ttfLoadFPGM(FILE *fp,BYTE *fpgm,USHORT lenght,ULONG offset);
-
-void ttfInitFPGM(TTFontPtr font)
-{
- ULONG tag = FT_MAKE_TAG ('f', 'p', 'g', 'm');
- TableDirPtr ptd;
-
- if ((ptd = ttfLookUpTableDir(tag,font)) != NULL)
- {
- font->fpgmLength = ptd->length;
- font->fpgm = XCALLOC (font->fpgmLength, BYTE);
- ttfLoadFPGM(font->fp,font->fpgm,font->fpgmLength,ptd->offset);
- }
-}
-
-static void ttfLoadFPGM(FILE *fp,BYTE *fpgm,USHORT length,ULONG offset)
-{
- xfseek(fp, offset, SEEK_SET, "ttfLoadFPGM");
-
- if (fread(fpgm, sizeof(BYTE), length, fp) != length)
- ttfError("Error when getting CVT\n");
-}
-
-void ttfPrintFPGM(FILE *fp, BYTE *fpgm, USHORT length)
-{
- ttfPrintInstructions(fp, fpgm);
-}
-
-void ttfFreeFPGM(BYTE *fpgm)
-{
- if (fpgm != NULL)
- free(fpgm);
-}
diff --git a/Build/source/texk/ttfdump/libttf/gasp.c b/Build/source/texk/ttfdump/libttf/gasp.c
deleted file mode 100644
index 9f3aadc467b..00000000000
--- a/Build/source/texk/ttfdump/libttf/gasp.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* gasp.c -- Grid-fitting And Scan-conversion Procedure
- * Copyright (C) 1996 Li-Da Lho, All right reserved
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "ttf.h"
-#include "ttfutil.h"
-
-/* $Id: gasp.c,v 1.1.1.1 1998/06/05 07:47:52 robert Exp $ */
-
-static void ttfLoadGASP(FILE *fp,GASPPtr gasp,ULONG offset);
-
-void ttfInitGASP(TTFontPtr font)
-{
- ULONG tag = FT_MAKE_TAG ('g', 'a', 's', 'p');
- TableDirPtr ptd;
-
- if ((ptd = ttfLookUpTableDir(tag,font)) != NULL)
- {
- font->gasp = XCALLOC1 (GASP);
- ttfLoadGASP(font->fp,font->gasp,ptd->offset);
- }
-}
-
-static void ttfLoadGASP (FILE *fp,GASPPtr gasp,ULONG offset)
-{
- int i;
-
- xfseek(fp, offset, SEEK_SET, "ttfLoadGASP");
-
- gasp->version = ttfGetUSHORT(fp);
- gasp->numRanges = ttfGetUSHORT(fp);
-
- gasp->gaspRange = XCALLOC (gasp->numRanges, GASPRANGE);
-
- for (i=0;i<gasp->numRanges;i++)
- {
- gasp->gaspRange[i].rangeMaxPPEM = ttfGetUSHORT(fp);
- gasp->gaspRange[i].rangeGaspBehavior = ttfGetUSHORT(fp);
- }
-}
-
-void ttfPrintGASP(FILE *fp,GASPPtr gasp)
-{
- int i;
-
- fprintf(fp,"'gasp' Table - Grid-fitting And Scan-conversion Procedure\n");
- fprintf(fp,"---------------------------------------------------------\n");
-
- fprintf(fp,"'gasp' version:\t %d\n",gasp->version);
- fprintf(fp,"numRanges: \t %d\n\n",gasp->numRanges);
-
- for (i=0;i<gasp->numRanges;i++)
- {
- fprintf(fp,"\t gasp Range %d\n",i);
- fprintf(fp,"\t rangeMaxPPEM:\t %d\n",
- gasp->gaspRange[i].rangeMaxPPEM);
- fprintf(fp,"\t rangeGaspBehavior:\t 0x%04x\n\n",
- gasp->gaspRange[i].rangeGaspBehavior);
- }
- fprintf(fp,"\n");
-}
-
-void ttfFreeGASP(GASPPtr gasp)
-{
- if (gasp != NULL)
- {
- free(gasp->gaspRange);
- free(gasp);
- }
-}
diff --git a/Build/source/texk/ttfdump/libttf/gcache.c b/Build/source/texk/ttfdump/libttf/gcache.c
deleted file mode 100644
index b501530a1e1..00000000000
--- a/Build/source/texk/ttfdump/libttf/gcache.c
+++ /dev/null
@@ -1,403 +0,0 @@
-/*
- * gcache.c -- Provide the cache mechanicsm for outlines
- * Copyright (C) 1996 Li-Da Lho, All right reserved
- *
- * This file is a little bit more complicated, the structure of the cache is
- * described as fellow:
- * Basically the cache can be divided onto two parts, the first one is a
- * linear part which is a least recently utilitied list (LRU),
- * the second part is the nonlinear one which is a binary serach tree.
- * Normally each cache element is on the LRU as well as on the BST.
- * Those glyph elements are allocated at once as an array of glyph cache
- * elements at the init phase of glyph cache.
- *
- * font->gcache--
- * |
- * ________|
- * |
- * v
- * ------------------------------------------------------------------
- * |element 0| 1 | 2 | 3 | 4 | 5 | 6 | 7 | ...
- * ------------------------------------------------------------------
- * The first element of the glyph cache array serves as a dummy header
- * for two purposes, one is for the head and tail of the LRU, the other is
- * to point to the root of the BST. As a pointer to the root of the
- * BST, the right subtree points to the root of the BST while the left one is
- * not used and arbitrarly points to itself.
- *
- * After initialization, all the glyph cache element are on the LRU but
- * none of them is on the BST.
- *
- * |-----------------------------------------------------------|
- * | ------------- ------ ------ |
- * |-> |head & tail| <-----> | |<-----> ...<----->| | <--|
- * ------------- ------ ------
- * / \ / \ / \
- * / \ / \ / \
- * left=self right=root left right left right
- *
- * The cached data are pointed by the entries of the glyph cache element
- * in a strait forward fashion.
- *
- * |-----------------------------------------------------------|
- * | ------------- ------ ------ |
- * |-> |head & tail| <-----> | |<-----> ...<----->| | <--|
- * ------------- ------ ------
- * | | -------------|--|--------------------------------
- * | |---->| | |-> array for flag, instruction|
- * | -------------|-----------------------------------
- * | -------------|-----------------------------------
- * |------->| |----> xcoordinates, ycoordinates|
- * -------------------------------------------------
- * Implementation in this way is effecient for the reason that when we
- * need to free the cache, we only need to do the two things
- * 1. free the data pointed by the entries in the dummy header
- * 2. free the dummy header
- *
- * Every time a glyph outline is required and ttfLoadGlyphCached is called,
- * the glyph is searched on the BST with its offset as a key.
- * If the glyph is on the BST then the address of the glyph cache is returned
- * and the glyph cache is moved to the tail of the LRU such that the order of
- * LRU is mantained.
- * When the glyph required is not on the BST, something more complicated should
- * be done.
- * 1. Remove the first element on the LRU from the BST.
- * 2. Load the glyph data to the cache element.
- * 3. Insert the element back to the BST.
- * 4. Move the element to the tail of the LRU.
- *
- * The only problem remain is how to deal with composite components.
- * The asnwer simply is not to support cache for composite components at the
- * current stage for the two reasons:
- * 1. It will makes the code an order of magnitude more complicate to support
- * composite glyf cache.
- * 2. The space occupied by composite glyf is not very much
- *
- * It is not clear right now if it is wise to add tree balancing code.
- * The overhaed introduced by BST seems minimal for 256 elements cache.
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "ttf.h"
-#include "ttfutil.h"
-
-/* $Id: gcache.c,v 1.1.1.1 1998/06/05 07:47:52 robert Exp $ */
-
-static void ttfInitCache(TTFontPtr font);
-static void ttfFreeCache(TTFontPtr font);
-static void ttfRotateCache(TTFontPtr font);
-static void ttfAllocCacheData(TTFontPtr font);
-static void ttfInitCacheData(TTFontPtr font);
-static void ttfFreeCacheData(TTFontPtr font);
-static void ttfInsertBST(TTFontPtr font,GlyphCachePtr gcache);
-static GlyphCachePtr ttfSearchBST(TTFontPtr font,ULONG offset);
-static void ttfDeleteBST(TTFontPtr font,ULONG offset);
-#ifdef MERGEDELETE
-static void merge(GlyphCachePtr *root);
-#endif
-static void copy(GlyphCachePtr *root);
-
-void ttfInitGlyphCache(TTFontPtr font)
-{
- /* this should be made configurable */
- if (font->maxp->numGlyphs > 256)
- font->numCacheElements = 128;
- else
- font->numCacheElements = 64;
-
- font->gcache = XCALLOC (font->numCacheElements+1, GlyphCache);
- ttfInitCache(font);
-
- ttfAllocCacheData(font);
- ttfInitCacheData(font);
-}
-
-void ttfCleanUpGlyphCache(TTFontPtr font)
-{
- ttfFreeCacheData(font);
- ttfFreeCache(font);
-}
-
-/* provide cache mechanism for glyph */
-GLYFPtr ttfLoadGlyphCached(TTFontPtr font,ULONG offset)
-{
-#ifdef OLDCODE
- GLYFPtr glyf;
-
- glyf = &(font->gcache->next->glyf);
- font->gcache->next->offset = offset;
- ttfRotateCache(font);
- ttfLoadGLYF(font->fp,glyf,offset);
- return glyf;
-
-#else
- GlyphCachePtr gcache;
-
- if ((gcache = ttfSearchBST(font,offset)) == NULL)
- {
- /* if the glyph is not in the cache */
- ttfDeleteBST(font,font->gcache->next->offset);
- gcache = font->gcache->next;
- font->gcache->next->offset = offset;
- ttfRotateCache(font);
- ttfLoadGLYF(font->fp,&gcache->glyf,offset);
- ttfInsertBST(font,gcache);
- }
- return &gcache->glyf;
-#endif
-}
-
-/* threading glyph cache headers */
-static void ttfInitCache(TTFontPtr font)
-{
- USHORT i,numCache = font->numCacheElements;
- GlyphCachePtr cur,tmp;
-
- cur = tmp = font->gcache;
- tmp++;
- /* there are numGlyph+1 of cache header, the first one is for
- * mark as the head and tail of the queue */
- for (i=0;i<numCache;i++)
- {
- cur->right = cur->left = NULL;
- cur->next = tmp;
- tmp->prev = cur;
- cur = tmp;
- tmp++;
- }
-
- /* make the LRU circular */
- cur->next = font->gcache;
- font->gcache->prev = cur;
-
- /* make the dummy header point to it self on the BST */
- font->gcache->left = font->gcache;
- font->gcache->offset = 0;
-}
-static void ttfFreeCache(TTFontPtr font)
-{
- free(font->gcache);
-}
-/* move the first element on the LRU the the tail */
-static void ttfRotateCache(TTFontPtr font)
-{
- GlyphCachePtr gcache = font->gcache, tmp = font->gcache->next;
-
- /* remove the first element */
- gcache->next = tmp->next;
- tmp->next->prev = gcache;
- /* add the element to the tail */
- tmp->next = gcache;
- tmp->prev = gcache->prev;
- gcache->prev->next = tmp;
- gcache->prev = tmp;
-}
-static void ttfAllocCacheData(TTFontPtr font)
-{
- USHORT numCache = font->numCacheElements+1;
- USHORT maxPoints = font->maxp->maxPoints;
- USHORT maxContours = font->maxp->maxContours;
- USHORT insLength = font->maxp->maxSizeOfInstructions;
-
- font->gcache->glyf.endPtsOfContours = XCALLOC (numCache*maxContours, USHORT);
- font->gcache->glyf.instructions = XCALLOC (numCache*insLength, BYTE);
- font->gcache->glyf.flags = XCALLOC (numCache*maxPoints, BYTE);
- font->gcache->glyf.xCoordinates = XCALLOC (numCache*maxPoints, SHORT);
- font->gcache->glyf.yCoordinates = XCALLOC (numCache*maxPoints, SHORT);
- font->gcache->glyf.comp = NULL;
-}
-static void ttfInitCacheData(TTFontPtr font)
-{
- USHORT i;
- USHORT numCache = font->numCacheElements;
- USHORT maxPoints = font->maxp->maxPoints;
- USHORT maxContours = font->maxp->maxContours;
- USHORT insLength = font->maxp->maxSizeOfInstructions;
- GlyphCachePtr cur,tmp;
-
- tmp = font->gcache;
- cur = font->gcache->next;
-
- for (i=0;i<numCache;i++)
- {
- /* makes the pointer in the cache element point to correct
- * addresses in the data area */
- cur->glyf.endPtsOfContours = tmp->glyf.endPtsOfContours + maxContours;
- cur->glyf.instructions = tmp->glyf.instructions + insLength;
- cur->glyf.flags = tmp->glyf.flags + maxPoints;
- cur->glyf.xCoordinates = tmp->glyf.xCoordinates + maxPoints;
- cur->glyf.yCoordinates = tmp->glyf.yCoordinates + maxPoints;
- tmp = cur++;
- }
-}
-static void ttfFreeCacheData(TTFontPtr font)
-{
- USHORT i,numCache = font->numCacheElements;
- GlyphCachePtr cur = font->gcache+1;
-
- /* free components of composite glyfs */
- for (i=0;i<numCache;i++)
- {
- ttfFreeGLYF(&cur->glyf);
- cur++;
- }
- free(font->gcache->glyf.endPtsOfContours);
- free(font->gcache->glyf.instructions);
- free(font->gcache->glyf.flags);
- free(font->gcache->glyf.xCoordinates);
- free(font->gcache->glyf.yCoordinates);
-}
-
-/* code to deal with nonlinear part of glyph cache */
-static void ttfInsertBST(TTFontPtr font,GlyphCachePtr gcache)
-{
- GlyphCachePtr root,parent;
-
- parent = font->gcache;
- root = parent->right;
-
- while (root)
- {
- parent = root;
- if (root->offset > gcache->offset)
- root = root->left;
- else
- root = root->right;
- }
-
- if (parent->offset > gcache->offset)
- parent->left = gcache;
- else
- parent->right = gcache;
-}
-static GlyphCachePtr ttfSearchBST(TTFontPtr font,ULONG offset)
-{
- GlyphCachePtr root = font->gcache->right;
-
- while (root)
- {
- if (root->offset == offset)
- return root;
- if (root->offset > offset)
- root = root->left;
- else
- root = root->right;
- }
- return NULL;
-}
-/* Deleting a node form a BST is a little bit tricky.
- * Basically, there are three different situations for deleteing a node
- * 1. The node to delete is a leaf, then just delete the node and make the
- * node's parent point to null.
- * 2. The node has one subtree, the let the node's parent adopt it.
- * 3. The node has both subtrees, in this situation, there are two
- * alternatives
- * a. let the parent adopt one of the subtree and the subtree adopt the
- * other. (delete by merge)
- * b. replace the node with its precedeer, and leave the topology almost
- * unchanged.
- */
-static void ttfDeleteBST(TTFontPtr font,ULONG offset)
-{
- GlyphCachePtr root,parent;
-
- parent = font->gcache;
- root = parent->right;
-
- /* find the node to delete */
- while (root)
- {
- if (root->offset == offset)
- break;
- parent = root;
- if (root->offset > offset)
- root = root->left;
- else
- root = root->right;
- }
- if (root != NULL)
- {
- /* the node to be deleted is on the tree */
- if (root->glyf.numberOfContours < 0)
- /* a composite glyf with components */
- ttfFreeGLYF(&root->glyf);
-
-#ifdef MERGEDELETE
- if (parent == font->gcache)
- /* delete root */
- merge(&parent->right);
- else if (parent->left == root)
- merge(&parent->left);
- else
- merge(&parent->right);
-#else
- if (parent == font->gcache)
- /* delete root */
- copy(&parent->right);
- else if (parent->left == root)
- copy(&parent->left);
- else
- copy(&parent->right);
-#endif
-
- root->left = root->right = NULL;
- }
- else
- ; /* the tree is empty or the node is not on the tree */
-
-}
-
-#ifdef MERGEDELETE
-static void merge(GlyphCachePtr *root)
-{
- GlyphCachePtr tmp;
-
- if ((*root)->right == NULL)
- *root = (*root)->left;
- else if ((*root)->left == NULL)
- *root = (*root)->right;
- else
- {
- /* the node to be attached has both left and right
- * subtrees */
- tmp = (*root)->left;
- while (tmp->right)
- {
- tmp = tmp->right;
- }
- tmp->right = (*root)->right;
- *root = (*root)->left;
- }
-}
-#endif
-static void copy(GlyphCachePtr *root)
-{
- GlyphCachePtr tmp, parent;
-
- if ((*root)->right == NULL)
- *root = (*root)->left;
- else if ((*root)->left == NULL)
- *root = (*root)->right;
- else
- {
- tmp = (*root)->left;
- parent = *root;
- while (tmp->right)
- {
- parent = tmp;
- tmp = tmp->right;
- }
- tmp->right = (*root)->right;
- if (parent != *root)
- {
- parent->right = tmp->left;
- tmp->left = parent;
- }
- *root = tmp;
- }
-}
diff --git a/Build/source/texk/ttfdump/libttf/glyf.c b/Build/source/texk/ttfdump/libttf/glyf.c
deleted file mode 100644
index 9ab63cab99e..00000000000
--- a/Build/source/texk/ttfdump/libttf/glyf.c
+++ /dev/null
@@ -1,423 +0,0 @@
-/* glyf.c -- Load and print Glyf outline data
- * Copyright (C) 1996 Li-Da Lho, All right reserved
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "ttf.h"
-#include "ttfutil.h"
-
-/* $Id: glyf.c,v 1.1.1.1 1998/06/05 07:47:52 robert Exp $ */
-
-static void ttfLoadSimpleGlyph(FILE *fp,GLYFPtr glyf,ULONG offset);
-static void ttfPrintSimpleGlyph(FILE *fp,GLYFPtr glyf);
-static void ttfLoadCompositeGlyph(FILE *fp,GLYFPtr glyf,ULONG offset);
-static void ttfPrintCompositeGlyph(FILE*fp,GLYFPtr glyf);
-static void ttfFreeCompositeGlyph(GLYFPtr glyf);
-double fix2dbl(F2Dot14 fixed);
-
-/* Naming convention about GLYF and Glyph:
- * High level functions which are exported should have their name
- * contain GLYF, on the other hand, low level function (or structures)
- * which is not intended to be exported should have their name
- * contain Glyph
- */
-void ttfInitGLYF(TTFontPtr font)
-{
- ULONG tag = FT_MAKE_TAG ('g', 'l', 'y', 'f');
- TableDirPtr ptd;
-
- if ((ptd = ttfLookUpTableDir(tag, font)) != NULL)
- {
- font->glyphOffset = ptd->offset;
- }
-}
-/* offset: where the specified glyph really starts
- * callers should compute this themself form the loca tables */
-void ttfLoadGLYF(FILE *fp, GLYFPtr glyf, ULONG offset)
-{
- xfseek(fp, offset, SEEK_SET, "ttfLoadGLYF");
-
- glyf->numberOfContours = ttfGetSHORT(fp);
- glyf->xMin = ttfGetFWord(fp);
- glyf->yMin = ttfGetFWord(fp);
- glyf->xMax = ttfGetFWord(fp);
- glyf->yMax = ttfGetFWord(fp);
-
- offset += sizeof(USHORT) + 4*sizeof(FWord);
-
- if (glyf->numberOfContours >= 0)
- ttfLoadSimpleGlyph(fp, glyf, offset);
- else
- ttfLoadCompositeGlyph(fp, glyf, offset);
-}
-void ttfPrintGLYF(FILE *fp, GLYFPtr glyf)
-{
- fprintf(fp,"\t numberOfContours:\t %d%s\n", glyf->numberOfContours,
- glyf->numberOfContours == -1 ? " (Composite)": "");
- fprintf(fp,"\t xMin:\t\t\t %d\n", glyf->xMin);
- fprintf(fp,"\t yMin:\t\t\t %d\n", glyf->yMin);
- fprintf(fp,"\t xMax:\t\t\t %d\n", glyf->xMax);
- fprintf(fp,"\t yMax:\t\t\t %d\n\n", glyf->yMax);
-
- if (glyf->numberOfContours >= 0)
- ttfPrintSimpleGlyph(fp, glyf);
- else
- ttfPrintCompositeGlyph(fp, glyf);
-}
-void ttfFreeGLYF(GLYFPtr glyf)
-{
- if (glyf->numberOfContours < 0)
- ttfFreeCompositeGlyph(glyf);
-}
-static void ttfLoadSimpleGlyph(FILE *fp, GLYFPtr glyf, ULONG offset)
-{
- SHORT nCnts = glyf->numberOfContours;
- USHORT i,nIns,nPts;
-
- xfseek(fp, offset, SEEK_SET, "ttfLoadSimpleGlyph");
-
- if (nCnts != 0)
- {
- ttfReadUSHORT (glyf->endPtsOfContours, nCnts, fp);
- nPts = (glyf->endPtsOfContours)[nCnts-1]+1;
- }
- else
- /* there seems to be something wrong with my interpretation of
- * NOGLYPH chars, doing this way in case there is a char that has
- * zero contour */
- nPts = 0;
-
- /* how to deal with zero instruction glyf properly ?? */
- glyf->instructionLength = nIns = ttfGetUSHORT(fp);
- if (nIns != 0)
- {
- if (fread(glyf->instructions, sizeof(BYTE), nIns, fp) != nIns)
- ttfError("Error when getting instructions\n");
- }
-
- for (i=0;i<nPts;i++)
- {
- BYTE j,c;
- if (((glyf->flags)[i] = c = ttfGetBYTE(fp)) & FLAGS_REPEAT)
- { /* if this flag should be repeated */
- j = ttfGetBYTE(fp); /* j times */
- while (j--)
- {
- i++;
- (glyf->flags)[i] = c;
-
- }
- }
- }
-
- for (i=0;i<nPts;i++)
- {
- BYTE flag;
- flag = (glyf->flags)[i];
-
- if (flag & FLAGS_X_SHORT_VECTOR)
- { /* if the coordinate is a BYTE */
- if (flag & FLAGS_X_SAME)
- (glyf->xCoordinates)[i] = (SHORT) ttfGetBYTE(fp);
- else
- (glyf->xCoordinates)[i] = (SHORT) -ttfGetBYTE(fp);
- }
- else
- { /* the coordiante is a SHORT */
- if (flag & FLAGS_X_SAME)
- (glyf->xCoordinates)[i] = 0;
- else
- (glyf->xCoordinates)[i] = ttfGetSHORT(fp);
- }
- }
- for (i=0;i<nPts;i++)
- {
- BYTE flag;
- flag = (glyf->flags)[i];
-
- if (flag & FLAGS_Y_SHORT_VECTOR)
- { /* if the coordinate is a BYTE */
- if (flag & FLAGS_Y_SAME)
- (glyf->yCoordinates)[i] = (SHORT) ttfGetBYTE(fp);
- else
- (glyf->yCoordinates)[i] = (SHORT) -ttfGetBYTE(fp);
- }
- else
- { /* the coordiante is a SHORT */
- if (flag & FLAGS_Y_SAME)
- (glyf->yCoordinates)[i] = 0;
- else
- (glyf->yCoordinates)[i] = ttfGetSHORT(fp);
- }
- }
-}
-static void ttfPrintSimpleGlyph(FILE *fp, GLYFPtr glyf)
-{
- USHORT i, nPts, nCnts;
- SHORT x=0, y=0;
-
- nPts = (glyf->endPtsOfContours)[glyf->numberOfContours-1]+1;
- nCnts = glyf->numberOfContours;
-
- fprintf(fp,"\t EndPoints\n");
- fprintf(fp,"\t ---------\n");
- for (i=0;i<nCnts;i++)
- fprintf(fp,"\t %d: %2d\n",i,(glyf->endPtsOfContours)[i]);
- fprintf(fp,"\n");
-
- fprintf(fp,"\t Length of Instructions: %2d\n\n",glyf->instructionLength);
- ttfPrintInstructions(fp,glyf->instructions);
-
- fprintf(fp,"\t Flags\n");
- fprintf(fp,"\t -----\n");
- for (i=0;i<nPts;i++)
- {
- BYTE flag;
- char buf[80];
-
- flag = (glyf->flags)[i];
-
- if (flag & FLAGS_Y_SAME)
- sprintf(buf,"YDual ");
- else
- sprintf(buf," ");
- if (flag & FLAGS_X_SAME)
- strcat(buf,"XDual ");
- else
- strcat(buf," ");
- if (flag & FLAGS_REPEAT)
- strcat(buf,"Repeat ");
- else
- strcat(buf," ");
- if (flag & FLAGS_Y_SHORT_VECTOR)
- strcat(buf,"Y-Short ");
- else
- strcat(buf," ");
- if (flag & FLAGS_X_SHORT_VECTOR)
- strcat(buf,"X-Short ");
- else
- strcat(buf," ");
- if (flag & FLAGS_ON_CURVE)
- strcat(buf,"On\n");
- else
- strcat(buf,"Off\n");
-
- fprintf(fp,"\t %2d: %s",i,buf);
- }
- fprintf(fp,"\n");
- fprintf(fp,"\t Coordinates\n");
- fprintf(fp,"\t -----------\n");
- for (i=0;i<nPts;i++)
- {
- x += (glyf->xCoordinates)[i];
- y += (glyf->yCoordinates)[i];
- fprintf(fp,"\t %2d Rel ( %6d, %6d) -> Abs ( %6d, %6d)\n", i,
- (glyf->xCoordinates)[i], (glyf->yCoordinates)[i], x, y);
- }
- fprintf(fp,"\n");
-}
-
-static void ttfLoadCompositeGlyph(FILE *fp, GLYFPtr glyf, ULONG offset)
-{
- USHORT nIns,flags;
- Component *cur;
-
- xfseek(fp, offset, SEEK_SET, "ttfLoadCompositeGlyph");
-
- glyf->comp = cur = XCALLOC1 (Component);
- cur->previous = NULL; /* beginning of a linked list */
-
- do {
- cur->flags = flags = ttfGetUSHORT(fp);
- cur->glyphIndex = ttfGetUSHORT(fp);
- if (flags & ARG_1_AND_2_ARE_WORDS)
- {
- (cur->data).args[0] = ttfGetSHORT(fp);
- (cur->data).args[1] = ttfGetSHORT(fp);
- }
- else
- (cur->data).args[0] = ttfGetUSHORT(fp);
-
- if (flags & WE_HAVE_A_SCALE)
- {
- (cur->data).transform.scale = ttfGetF2Dot14(fp);
- }
- else if (flags & WE_HAVE_AN_X_AND_Y_SCALE)
- {
- (cur->data).transform.vector.xscale = ttfGetF2Dot14(fp);
- (cur->data).transform.vector.yscale = ttfGetF2Dot14(fp);
- }
- else if (flags & WE_HAVE_A_TWO_BY_TWO)
- {
- (cur->data).transform.tensor.xscale = ttfGetF2Dot14(fp);
- (cur->data).transform.tensor.scale01 = ttfGetF2Dot14(fp);
- (cur->data).transform.tensor.scale10 = ttfGetF2Dot14(fp);
- (cur->data).transform.tensor.yscale = ttfGetF2Dot14(fp);
- }
- /* allocate next component */
- cur->next = XCALLOC1 (Component);
- cur->next->previous = cur;
- cur = cur->next; /* move to next component */
- } while (flags & MORE_COMPONENT);
- cur->next = NULL; /* end of the linked list */
-
- if (flags & WE_HAVE_INSTRUCTIONS)
- {
- glyf->instructionLength = nIns = ttfGetUSHORT(fp);
- if (fread(glyf->instructions, sizeof(BYTE), nIns, fp) != nIns)
- ttfError("Error when loading instructions\n");
- }
- else
- {
- glyf->instructionLength = 0;
- }
-}
-static void ttfPrintCompositeGlyph(FILE *fp, GLYFPtr glyf)
-{
- int i = 0;
- char buf[80];
- USHORT flags;
- Component *cur;
-
- cur = glyf->comp;
-
- do {
- flags = cur->flags;
- fprintf(fp, "\t %d: Flags:\t 0x%x\n", i, flags);
- fprintf(fp, "\t Glyf Index:\t %d\n", cur->glyphIndex);
- if (flags & ARGS_ARE_XY_VALUES)
- {
- if (flags & ARG_1_AND_2_ARE_WORDS)
- {
- fprintf(fp, "\t X WOffset:\t %d\n", (cur->data).args[0]);
- fprintf(fp, "\t Y WOffset:\t %d\n", (cur->data).args[1]);
- }
- else
- {
- fprintf(fp, "\t X BOffset:\t %d\n",
- (signed char) ((cur->data).args[0] >> 8 & 0xff));
- fprintf(fp, "\t Y BOffset:\t %d\n",
- (signed char) ((cur->data).args[0] & 0xff));
- }
- }
- else
- {
- /* what the hell are the "patch points" ?? */
- }
-
- if (flags & WE_HAVE_A_SCALE)
- {
- fprintf(fp, "\t X,Y Scale:\t %f\n",
- fix2dbl((cur->data).transform.scale));
- }
- else if (flags & WE_HAVE_AN_X_AND_Y_SCALE)
- {
- fprintf(fp, "\t X Scale:\t %f\n",
- fix2dbl((cur->data).transform.vector.xscale));
- fprintf(fp, "\t Y Scale:\t %f\n",
- fix2dbl((cur->data).transform.vector.yscale));
- }
- else if (flags & WE_HAVE_A_TWO_BY_TWO)
- {
- fprintf(fp, "\t X Scale:\t %f\n",
- fix2dbl((cur->data).transform.tensor.xscale));
- fprintf(fp, "\t X,Y Scale:\t %f\n",
- fix2dbl((cur->data).transform.tensor.scale01));
- fprintf(fp, "\t Y,X Scale:\t %f\n",
- fix2dbl((cur->data).transform.tensor.scale10));
- fprintf(fp, "\t Y Scale:\t %f\n",
- fix2dbl((cur->data).transform.tensor.yscale));
- }
-
- if (flags & ROUND_XY_TO_GRID)
- sprintf(buf, "Round X,Y to Grid ");
- else
- sprintf(buf, " ");
-
- if (flags & NO_OVERLAP)
- strcat(buf, "NO Overlap ");
- else
- strcat(buf, " ");
-
- if (flags & USE_MY_METRICS)
- strcat(buf, "Use My Metrics ");
- else
- strcat(buf, " ");
-
- fprintf(fp, "\t Others:\t %s\n\n", buf);
-
- i++;
- cur = cur->next;
- } while (cur->next != NULL);
-
- fprintf(fp, "\n");
-
- if (flags & WE_HAVE_INSTRUCTIONS)
- {
- fprintf(fp,"\t Length of Instructions: %2d\n\n",
- glyf->instructionLength);
- ttfPrintInstructions(fp, glyf->instructions);
- }
-}
-static void ttfFreeCompositeGlyph(GLYFPtr glyf)
-{
- Component *cur,*next;
-
- cur = glyf->comp;
-
- do {
- next = cur->next;
- free(cur);
- cur = next;
- } while (cur != NULL);
-}
-
-/* what I want:
- * outter procedures should not have any ideas about where the glyph starts,
- *
- * it just provide the TTFont structure and the character code or the index
- * of that glyph. Procedures below should do:
- * 1. look up where the glyph data is.
- * 2. provided some glyph cache mechanism for the reason that
- * a. it is not necessary to load all glyph into memory, especially for
- * eastern languages.
- * b. if a glyph data has been loaded previously, it is not necessary to
- * load it again.
- * c. malloc and free are SLOW !!
- */
-/* Load a glyph by glyph index */
-GLYFPtr ttfLoadGlyphIndex(TTFont *font, USHORT idx)
-{
- ULONG pos;
- GLYFPtr glyf;
-
- /* compute the actual place where the glyph stored */
- pos = font->glyphOffset + ttfLookUpGlyfLOCA(font->loca, idx);
- glyf = ttfLoadGlyphCached(font, pos);
-
- return glyf;
-}
-/* Load a glyph by character code in the current encoding scheme */
-GLYFPtr ttfLoadGlyphCode(TTFont *font,USHORT cc)
-{
- USHORT index;
-
- index = ttfLookUpCMAP(font->encoding->map,cc);
- return ttfLoadGlyphIndex(font,index);
-}
-
-double fix2dbl(F2Dot14 fixed)
-{
- double mantissa, fraction;
-
- mantissa = (double) (fixed >> 14);
-
- fraction = (double) (double)(fixed & 0x3fff) / 16384.0;
-
- return mantissa+fraction;
-}
diff --git a/Build/source/texk/ttfdump/libttf/gpos.c b/Build/source/texk/ttfdump/libttf/gpos.c
deleted file mode 100644
index bc01e29cf24..00000000000
--- a/Build/source/texk/ttfdump/libttf/gpos.c
+++ /dev/null
@@ -1,1006 +0,0 @@
-/* gpos.c -- Glyph Positioning Table
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "ttf.h"
-#include "ttfutil.h"
-
-static USHORT getValueFormat (FILE *fp)
-{
- USHORT valueFormat = ttfGetUSHORT (fp);
-
- if (valueFormat & ValueFormat_Reserved)
- ttfError ("Unrecognized GPOS valueFormat\n");
-
- return valueFormat;
-}
-
-static ValueRecordPtr
-gposMakeValueRecord (USHORT valueFormat, FILE *fp)
-{
- int i;
- ValueRecordPtr value;
-
- if (valueFormat == 0)
- return NULL;
-
- value = XCALLOC1 (ValueRecord);
- for (i = 0; i < 4; i++)
- if (valueFormat & (ValueFormat_XPlacement << i))
- value->valDesign[i] = ttfGetSHORT (fp);
- for (i = 0; i < 4; i++)
- if (valueFormat & (ValueFormat_XPlaDevice << i))
- value->valDevice[i].offset = ttfGetUSHORT (fp);
-
- return value;
-}
-
-static void
-gposLoadValueRecord (ValueRecordPtr value, FILE *fp, ULONG offset)
-{
- int i;
-
- if (value == NULL)
- return;
- for (i = 0; i < 4; i++)
- if (value->valDevice[i].offset)
- value->valDevice[i].device = otfMakeDevice (fp, offset + value->valDevice[i].offset);
-}
-
-static const char *txtDesign[4] = {
- "XPlacement",
- "YPlacement",
- "XAdvance",
- "YAdvance"
-};
-
-static const char *txtDevice[4] = {
- "XPlaDevice",
- "YPlaDevice",
- "XAdvDevice",
- "YAdvDevice"
-};
-
-static void
-gposPrintValueRecord (FILE *fp, const char *str, USHORT valueFormat, ValueRecordPtr value)
-{
- const char *s = ":";
- int i;
-
- for (i = 0; i < 4; i++)
- if (valueFormat & (ValueFormat_XPlacement << i)) {
- fprintf (fp, "%s %s = %d\n", s, txtDesign[i], value->valDesign[i]);
- s = str;
- }
- for (i = 0; i < 4; i++)
- if (value->valDevice[i].device) {
- fprintf (fp, "%s %s:", s, txtDevice[i]);
- otfPrintDevice (fp, value->valDevice[i].device);
- s = str;
- }
-}
-
-static void freeValueRecord (ValueRecordPtr value)
-{
- if (value) {
- int i;
-
- for (i = 0; i < 4; i++)
- if (value->valDevice[i].device)
- free (value->valDevice[i].device);
- free (value);
- }
-}
-
-static AnchorPtr gposMakeAnchor (FILE *fp, ULONG offset)
-{
- AnchorPtr anchor;
- USHORT anchorFormat;
- USHORT xOffset, yOffset;
-
- xfseek (fp, offset, SEEK_SET, "gposMakeAnchor");
-
- anchorFormat = ttfGetUSHORT (fp);
- switch (anchorFormat)
- {
- case 1:
- anchor.anchor1 = XCALLOC1 (Anchor1);
- break;
- case 2:
- anchor.anchor2 = XCALLOC1 (Anchor2);
- break;
- case 3:
- anchor.anchor3 = XCALLOC1 (Anchor3);
- break;
- default:
- ttfError ("Unrecognized GPOS anchorFormat\n");
- }
- anchor.anchor1->anchorFormat = anchorFormat;
- anchor.anchor1->xCoordinate = ttfGetSHORT (fp);
- anchor.anchor1->yCoordinate = ttfGetSHORT (fp);
-
- switch (anchorFormat)
- {
- case 2:
- anchor.anchor2->anchorPoint = ttfGetUSHORT (fp);
- break;
- case 3:
- xOffset = ttfGetUSHORT (fp);
- yOffset = ttfGetUSHORT (fp);
- if (xOffset)
- anchor.anchor3->xDevice = otfMakeDevice (fp, offset + xOffset);
- if (yOffset)
- anchor.anchor3->yDevice = otfMakeDevice (fp, offset + yOffset);
- break;
- }
-
- return anchor;
-}
-
-static void
-gposPrintAnchor (FILE *fp, const char *str, AnchorPtr anchor)
-{
- fprintf (fp, "anchorFormat = %d, xCoordinate = %d, yCoordinate = %d\n",
- anchor.anchor1->anchorFormat, anchor.anchor1->xCoordinate, anchor.anchor1->yCoordinate);
-
- switch (anchor.anchor1->anchorFormat)
- {
- case 2:
- fprintf (fp, "%sanchorPoint = %d\n", str, anchor.anchor2->anchorPoint);
- break;
- case 3:
- if (anchor.anchor3->xDevice) {
- fprintf (fp, "%sxDevice: ", str);
- otfPrintDevice (fp, anchor.anchor3->xDevice);
- }
- if (anchor.anchor3->yDevice) {
- fprintf (fp, "%syDevice: ", str);
- otfPrintDevice (fp, anchor.anchor3->yDevice);
- }
- break;
- }
-}
-
-static void freeAnchor (AnchorPtr anchor)
-{
- if (anchor.anchor3) {
- if (anchor.anchor3->anchorFormat == 3) {
- if (anchor.anchor3->xDevice)
- free (anchor.anchor3->xDevice);
- if (anchor.anchor3->yDevice)
- free (anchor.anchor3->yDevice);
- }
- free (anchor.anchor3);
- }
-}
-
-static MarkRecordPtr
-gposMakeMarkArray (FILE *fp, USHORT *markCount, ULONG offset)
-{
- int i;
- MarkRecordPtr markArray;
- USHORT *aOffset;
-
- xfseek (fp, offset, SEEK_SET, "gposMakeMarkArray");
-
- *markCount = ttfGetUSHORT (fp);
- markArray = XCALLOC (*markCount, MarkRecord);
- aOffset = XCALLOC (*markCount, USHORT);
- for (i = 0; i < *markCount; i++) {
- markArray[i].class = ttfGetUSHORT (fp);
- aOffset[i] = ttfGetUSHORT (fp);
- }
- for (i = 0; i < *markCount; i++)
- markArray[i].markAnchor = gposMakeAnchor (fp, offset + aOffset[i]);
- free (aOffset);
-
- return markArray;
-}
-
-static void
-gposPrintMarkArray (FILE *fp, USHORT markCount, MarkRecordPtr markArray)
-{
- int i;
-
- for (i = 0; i < markCount; i++) {
- fprintf (fp, "\t %2d. class: %d - ", i, markArray[i].class);
- gposPrintAnchor (fp, "\t\t ", markArray[i].markAnchor);
- }
-}
-
-/* Used for both pos41->baseArray and pos61->mark2Array. */
-static AnchorPtr *
-gposMakeBaseArray (FILE *fp, USHORT *baseCount, USHORT classCount, ULONG offset)
-{
- int i;
- AnchorPtr *baseArray;
- USHORT *aOffset;
-
- xfseek (fp, offset, SEEK_SET, "gposMakeBaseArray");
-
- *baseCount = ttfGetUSHORT (fp);
- aOffset = ttfMakeUSHORT (*baseCount * classCount, fp);
- baseArray = XCALLOC (*baseCount * classCount, AnchorPtr);
- for (i = 0; i < *baseCount * classCount; i++)
- if (aOffset[i])
- baseArray[i] = gposMakeAnchor (fp, offset + aOffset[i]);
- free (aOffset);
-
- return baseArray;
-}
-
-static Pos11Ptr makeGPOS11 (FILE *fp, ULONG offset)
-{
- USHORT cOffset;
- Pos11Ptr pos = XCALLOC1 (Pos11);
-
- cOffset = ttfGetUSHORT (fp);
- pos->valueFormat = getValueFormat (fp);
- pos->value = gposMakeValueRecord (pos->valueFormat, fp);
- pos->coverage = otfMakeCoverage (fp, offset + cOffset);
- gposLoadValueRecord (pos->value, fp, offset);
-
- return pos;
-}
-
-static void printGPOS11 (FILE *fp, Pos11Ptr pos)
-{
- fprintf (fp, " - Single Adjustment Value\n\t ");
- otfPrintCoverage (fp, pos->coverage);
- fprintf (fp, "\t valueFormat: 0x%04x\n", pos->valueFormat);
- if (pos->valueFormat) {
- fprintf (fp, "\t value");
- gposPrintValueRecord (fp, "\t\t", pos->valueFormat, pos->value);
- }
-}
-
-static void freeGPOS11 (Pos11Ptr pos)
-{
- freeValueRecord (pos->value);
- otfFreeCoverage (pos->coverage);
-}
-
-static Pos12Ptr makeGPOS12 (FILE *fp, ULONG offset)
-{
- int i;
- USHORT cOffset;
- Pos12Ptr pos = XCALLOC1 (Pos12);
-
- cOffset = ttfGetUSHORT (fp);
- pos->valueFormat = getValueFormat (fp);
- pos->valueCount = ttfGetUSHORT (fp);
- pos->value = XCALLOC (pos->valueCount, ValueRecordPtr);
- for (i = 0; i < pos->valueCount; i++)
- pos->value[i] = gposMakeValueRecord (pos->valueFormat, fp);
- pos->coverage = otfMakeCoverage (fp, offset + cOffset);
- for (i = 0; i < pos->valueCount; i++)
- gposLoadValueRecord (pos->value[i], fp, offset);
-
- return pos;
-}
-
-static void printGPOS12 (FILE *fp, Pos12Ptr pos)
-{
- int i;
-
- fprintf (fp, " - Single Adjustment List\n\t ");
- otfPrintCoverage (fp, pos->coverage);
- fprintf (fp, "\t valueFormat: 0x%04x, valueCount: %d\n", pos->valueFormat, pos->valueCount);
- for (i = 0; i < pos->valueCount; i++) {
- fprintf (fp, "\t %2d. value", i);
- gposPrintValueRecord (fp, "\t\t ", pos->valueFormat, pos->value[i]);
- }
-}
-
-static void freeGPOS12 (Pos12Ptr pos)
-{
- int i;
-
- for (i = 0; i < pos->valueCount; i++)
- freeValueRecord (pos->value[i]);
- free (pos->value);
- otfFreeCoverage (pos->coverage);
-}
-
-static void gposLoadPairSet (Pos21Ptr pos, int i, FILE *fp, ULONG offset)
-{
- int j;
- PairSetPtr pairSet = &pos->pairSet[i];
-
- xfseek (fp, offset, SEEK_SET, "gposLoadPairSet");
-
- pairSet->pairValueCount = ttfGetUSHORT (fp);
- pairSet->pairValue = XCALLOC (pairSet->pairValueCount, PairValueRecord);
- for (j = 0; j < pairSet->pairValueCount; j++) {
- pairSet->pairValue[j].secondGlyph = ttfGetUSHORT (fp);
- pairSet->pairValue[j].value1 = gposMakeValueRecord (pos->valueFormat1, fp);
- pairSet->pairValue[j].value2 = gposMakeValueRecord (pos->valueFormat2, fp);
- }
-}
-
-static Pos21Ptr makeGPOS21 (FILE *fp, ULONG offset)
-{
- int i;
- USHORT cOffset;
- USHORT *pOffset;
- Pos21Ptr pos = XCALLOC1 (Pos21);
-
- cOffset = ttfGetUSHORT (fp);
- pos->valueFormat1 = getValueFormat (fp);
- pos->valueFormat2 = getValueFormat (fp);
- pos->pairSetCount = ttfGetUSHORT (fp);
- pOffset = ttfMakeUSHORT (pos->pairSetCount, fp);
- pos->coverage = otfMakeCoverage (fp, offset + cOffset);
- pos->pairSet = XCALLOC (pos->pairSetCount, PairSet);
- for (i = 0; i < pos->pairSetCount; i++)
- gposLoadPairSet (pos, i, fp, offset + pOffset[i]);
- free (pOffset);
- for (i = 0; i < pos->pairSetCount; i++) {
- int j;
-
- for (j = 0; j < pos->pairSet[i].pairValueCount; j++) {
- gposLoadValueRecord (pos->pairSet[i].pairValue[j].value1, fp, offset);
- gposLoadValueRecord (pos->pairSet[i].pairValue[j].value2, fp, offset);
- }
- }
-
- return pos;
-}
-
-static void printGPOS21 (FILE *fp, Pos21Ptr pos)
-{
- int i;
-
- fprintf (fp, " - Pair Adjustment List\n\t ");
- otfPrintCoverage (fp, pos->coverage);
- fprintf (fp, "\t valueFormat1: 0x%04x, valueFormat2: 0x%04x, pairSetCount: %d\n",
- pos->valueFormat1, pos->valueFormat2, pos->pairSetCount);
- for (i = 0; i < pos->pairSetCount; i++) {
- int j;
-
- fprintf (fp, "\t %2d. pairValueCount: %d\n", i, pos->pairSet[i].pairValueCount);
- for (j = 0; j < pos->pairSet[i].pairValueCount; j++) {
- fprintf (fp, "\t %2d. secondGlyph: %d\n", j,
- pos->pairSet[i].pairValue[j].secondGlyph);
- if (pos->valueFormat1) {
- fprintf (fp, "\t\t value1");
- gposPrintValueRecord (fp, "\t\t\t ", pos->valueFormat1,
- pos->pairSet[i].pairValue[j].value1);
- }
- if (pos->valueFormat2) {
- fprintf (fp, "\t\t value2");
- gposPrintValueRecord (fp, "\t\t\t ", pos->valueFormat2,
- pos->pairSet[i].pairValue[j].value2);
- }
- }
- }
-}
-
-static void freeGPOS21 (Pos21Ptr pos)
-{
- int i;
-
- for (i = 0; i < pos->pairSetCount; i++) {
- int j;
- for (j = 0; j < pos->pairSet[i].pairValueCount; j++) {
- freeValueRecord (pos->pairSet[i].pairValue[j].value1);
- freeValueRecord (pos->pairSet[i].pairValue[j].value2);
- }
- free (pos->pairSet[i].pairValue);
- }
- free (pos->pairSet);
- otfFreeCoverage (pos->coverage);
-}
-
-static Pos22Ptr makeGPOS22 (FILE *fp, ULONG offset)
-{
- int i;
- USHORT cOffset, cOffset1, cOffset2;
- Pos22Ptr pos = XCALLOC1 (Pos22);
-
- cOffset = ttfGetUSHORT (fp);
- pos->valueFormat1 = getValueFormat (fp);
- pos->valueFormat2 = getValueFormat (fp);
- cOffset1 = ttfGetUSHORT (fp);
- cOffset2 = ttfGetUSHORT (fp);
- pos->class1Count = ttfGetUSHORT (fp);
- pos->class2Count = ttfGetUSHORT (fp);
- pos->values = XCALLOC (2 * pos->class1Count * pos->class2Count, ValueRecordPtr);
- for (i = 0; i < 2 * pos->class1Count * pos->class2Count; i++)
- pos->values[i] = gposMakeValueRecord (i & 1 ? pos->valueFormat2 : pos->valueFormat1, fp);
- pos->coverage = otfMakeCoverage (fp, offset + cOffset);
- pos->classDef1 = otfMakeClassDef (fp, offset + cOffset1);
- pos->classDef2 = otfMakeClassDef (fp, offset + cOffset2);
- for (i = 0; i < 2 * pos->class1Count * pos->class2Count; i++)
- gposLoadValueRecord (pos->values[i], fp, offset);
-
- return pos;
-}
-
-static void printGPOS22 (FILE *fp, Pos22Ptr pos)
-{
- int i, num = 0;
-
- fprintf (fp, " - Pair Adjustment Class\n\t ");
- otfPrintCoverage (fp, pos->coverage);
- fprintf (fp, "\t valueFormat1: 0x%04x, valueFormat2: 0x%04x\n",
- pos->valueFormat1, pos->valueFormat2);
- fprintf (fp, "\t ClassDef1 - ");
- otfPrintClassDef (fp, pos->classDef1);
- fprintf (fp, "\t ClassDef2 - ");
- otfPrintClassDef (fp, pos->classDef2);
- fprintf (fp, "\t class1Count: %d, class2Count: %d\n",
- pos->class1Count, pos->class2Count);
- for (i = 0; i < pos->class1Count; i++) {
- int j;
- const char *s = "";
-
- fprintf (fp, "\t %2d.", i);
- for (j = 0; j < pos->class2Count; j++) {
- fprintf (fp, "%s %2d.", s, j);
- s = "\t ";
-
- if (pos->valueFormat1) {
- fprintf (fp, " value1");
- gposPrintValueRecord (fp, "\t\t\t ", pos->valueFormat1,
- pos->values[num]);
- }
- num++;
- if (pos->valueFormat2) {
- fprintf (fp, " value2");
- gposPrintValueRecord (fp, "\t\t\t ", pos->valueFormat2,
- pos->values[num]);
- }
- num++;
- }
- }
-}
-
-static void freeGPOS22 (Pos22Ptr pos)
-{
- int i;
-
- for (i = 0; i < 2 * pos->class1Count * pos->class2Count; i++)
- freeValueRecord (pos->values[i]);
- free (pos->values);
- otfFreeCoverage (pos->coverage);
- otfFreeClassDef (pos->classDef1);
- otfFreeClassDef (pos->classDef2);
-}
-
-static Pos31Ptr makeGPOS31 (FILE *fp, ULONG offset)
-{
- int i;
- USHORT cOffset;
- USHORT *eOffset;
- Pos31Ptr pos = XCALLOC1 (Pos31);
-
- cOffset = ttfGetUSHORT (fp);
- pos->entryExitCount = ttfGetUSHORT (fp);
- eOffset = ttfMakeUSHORT (2 * pos->entryExitCount, fp);
- pos->coverage = otfMakeCoverage (fp, offset + cOffset);
- pos->entryExit = XCALLOC (2 * pos->entryExitCount, AnchorPtr);
- for (i = 0; i < 2 * pos->entryExitCount; i++)
- if (eOffset[i])
- pos->entryExit[i] = gposMakeAnchor (fp, offset + eOffset[i]);
- free (eOffset);
-
- return pos;
-}
-
-static void printGPOS31 (FILE *fp, Pos31Ptr pos)
-{
- int i, num = 0;
-
- fprintf (fp, " - Cursive Attachment\n\t ");
- otfPrintCoverage (fp, pos->coverage);
- fprintf (fp, "\t entryExitCount: %d\n", pos->entryExitCount);
- for (i = 0; i < pos->entryExitCount; i++) {
- int j;
- const char *s = "";
-
- fprintf (fp, "\t %2d. ", i);
- for (j = 0; j < 2; j++) {
- if (pos->entryExit[num].anchor1) {
- fprintf (fp, "%s%sAnchor - ", s, j ? "exit" : "entry");
- gposPrintAnchor (fp, "\t\t ", pos->entryExit[num]);
- s = "\t ";
- }
- num++;
- }
- }
-}
-
-static void freeGPOS31 (Pos31Ptr pos)
-{
- int i;
-
- for (i = 0; i < 2 * pos->entryExitCount; i++)
- freeAnchor (pos->entryExit[i]);
- free (pos->entryExit);
- otfFreeCoverage (pos->coverage);
-}
-
-static Pos41Ptr makeGPOS41 (FILE *fp, ULONG offset)
-{
- USHORT mcOffset, bcOffset, maOffset, baOffset;
- Pos41Ptr pos = XCALLOC1 (Pos41);
-
- mcOffset = ttfGetUSHORT (fp);
- bcOffset = ttfGetUSHORT (fp);
- pos->classCount = ttfGetUSHORT (fp);
- maOffset = ttfGetUSHORT (fp);
- baOffset = ttfGetUSHORT (fp);
- pos->markCoverage = otfMakeCoverage (fp, offset + mcOffset);
- pos->baseCoverage = otfMakeCoverage (fp, offset + bcOffset);
- pos->markArray = gposMakeMarkArray (fp, &pos->markCount, offset + maOffset);
- pos->baseArray = gposMakeBaseArray (fp, &pos->baseCount, pos->classCount, offset + baOffset);
-
- return pos;
-}
-
-static void printGPOS41 (FILE *fp, Pos41Ptr pos)
-{
- int i, num = 0;
-
- fprintf (fp, " - Mark To Base Attachment\n\t mark");
- otfPrintCoverage (fp, pos->markCoverage);
- fprintf (fp, "\t markArray - markCount: %d\n", pos->markCount);
- gposPrintMarkArray (fp, pos->markCount, pos->markArray);
- fprintf (fp, "\t base");
- otfPrintCoverage (fp, pos->baseCoverage);
- fprintf (fp, "\t baseArray - baseCount: %d, classCount: %d\n",
- pos->baseCount, pos->classCount);
- for (i = 0; i < pos->baseCount; i++) {
- int j;
- const char *s = "";
-
- fprintf (fp, "\t %2d. ", i);
- for (j = 0; j < pos->classCount; j++) {
- if (pos->baseArray[num].anchor1) {
- fprintf (fp, "%s%2d. ", s, j);
- gposPrintAnchor (fp, "\t\t ", pos->baseArray[num]);
- s = "\t ";
- }
- num++;
- }
- }
-}
-
-static void freeGPOS41 (Pos41Ptr pos)
-{
- int i;
-
- for (i = 0; i < pos->markCount; i++)
- freeAnchor (pos->markArray[i].markAnchor);
- free (pos->markArray);
- for (i = 0; i < pos->baseCount * pos->classCount; i++)
- freeAnchor (pos->baseArray[i]);
- free (pos->baseArray);
- otfFreeCoverage (pos->markCoverage);
- otfFreeCoverage (pos->baseCoverage);
-}
-
-static void
-gposLoadLigatureArray (LigatureAttachPtr ligatureArray, USHORT classCount, FILE *fp, ULONG offset)
-{
- int i;
- USHORT *aOffset;
-
- xfseek (fp, offset, SEEK_SET, "gposLoadLigatureArray");
-
- ligatureArray->componentCount = ttfGetUSHORT (fp);
- aOffset = ttfMakeUSHORT (ligatureArray->componentCount * classCount, fp);
- ligatureArray->componentRecord = XCALLOC (ligatureArray->componentCount * classCount, AnchorPtr);
- for (i = 0; i < ligatureArray->componentCount * classCount; i++)
- if (aOffset[i])
- ligatureArray->componentRecord[i] = gposMakeAnchor (fp, offset + aOffset[i]);
- free (aOffset);
-}
-
-static LigatureAttachPtr
-gposMakeLigatureArray (FILE *fp, USHORT *ligatureCount, USHORT classCount, ULONG offset)
-{
- int i;
- LigatureAttachPtr ligatureArray;
- USHORT *aOffset;
-
- xfseek (fp, offset, SEEK_SET, "gposMakeLigatureArray");
-
- *ligatureCount = ttfGetUSHORT (fp);
- aOffset = ttfMakeUSHORT (*ligatureCount, fp);
- ligatureArray = XCALLOC (*ligatureCount, LigatureAttach);
- for (i = 0; i < *ligatureCount; i++)
- gposLoadLigatureArray (&ligatureArray[i], classCount, fp, offset + aOffset[i]);
- free (aOffset);
-
- return ligatureArray;
-}
-
-static Pos51Ptr makeGPOS51 (FILE *fp, ULONG offset)
-{
- USHORT mcOffset, lcOffset, maOffset, laOffset;
- Pos51Ptr pos = XCALLOC1 (Pos51);
-
- mcOffset = ttfGetUSHORT (fp);
- lcOffset = ttfGetUSHORT (fp);
- pos->classCount = ttfGetUSHORT (fp);
- maOffset = ttfGetUSHORT (fp);
- laOffset = ttfGetUSHORT (fp);
- pos->markCoverage = otfMakeCoverage (fp, offset + mcOffset);
- pos->ligatureCoverage = otfMakeCoverage (fp, offset + lcOffset);
- pos->markArray = gposMakeMarkArray (fp, &pos->markCount, offset + maOffset);
- pos->ligatureArray = gposMakeLigatureArray (fp, &pos->ligatureCount, pos->classCount, offset + laOffset);
-
- return pos;
-}
-
-static void printGPOS51 (FILE *fp, Pos51Ptr pos)
-{
- int i;
-
- fprintf (fp, " - Mark To Ligature Attachment\n\t mark");
- otfPrintCoverage (fp, pos->markCoverage);
- fprintf (fp, "\t markArray - markCount: %d\n", pos->markCount);
- gposPrintMarkArray (fp, pos->markCount, pos->markArray);
- fprintf (fp, "\t ligature");
- otfPrintCoverage (fp, pos->ligatureCoverage);
- fprintf (fp, "\t ligatureArray - ligatureCount: %d\n", pos->ligatureCount);
- for (i = 0; i < pos->ligatureCount; i++) {
- int j, num = 0;
-
- fprintf (fp, "\t %2d. componentCount: %d, classCount: %d\n", i,
- pos->ligatureArray[i].componentCount, pos->classCount);
- for (j = 0; j < pos->ligatureArray[i].componentCount; j++) {
- int k;
- const char *s = "";
-
- fprintf (fp, "\t %2d. ", j);
- for (k = 0; k < pos->classCount; k++) {
- if (pos->ligatureArray[i].componentRecord[num].anchor1) {
- fprintf (fp, "%s%2d. ", s, k);
- gposPrintAnchor (fp, "\t\t ", pos->ligatureArray[i].componentRecord[num]);
- s = "\t\t ";
- }
- num++;
- }
- }
- }
-}
-
-static void freeGPOS51 (Pos51Ptr pos)
-{
- int i;
-
- for (i = 0; i < pos->markCount; i++)
- freeAnchor (pos->markArray[i].markAnchor);
- free (pos->markArray);
- for (i = 0; i < pos->ligatureCount; i++) {
- int j;
-
- for (j = 0; j < pos->ligatureArray[i].componentCount * pos->classCount; j++)
- freeAnchor (pos->ligatureArray[i].componentRecord[j]);
- }
- free (pos->ligatureArray);
- otfFreeCoverage (pos->markCoverage);
- otfFreeCoverage (pos->ligatureCoverage);
-}
-
-static Pos61Ptr makeGPOS61 (FILE *fp, ULONG offset)
-{
- USHORT c1Offset, c2Offset, a1Offset, a2Offset;
- Pos61Ptr pos = XCALLOC1 (Pos61);
-
- c1Offset = ttfGetUSHORT (fp);
- c2Offset = ttfGetUSHORT (fp);
- pos->classCount = ttfGetUSHORT (fp);
- a1Offset = ttfGetUSHORT (fp);
- a2Offset = ttfGetUSHORT (fp);
- pos->mark1Coverage = otfMakeCoverage (fp, offset + c1Offset);
- pos->mark2Coverage = otfMakeCoverage (fp, offset + c2Offset);
- pos->mark1Array = gposMakeMarkArray (fp, &pos->mark1Count, offset + a1Offset);
- pos->mark2Array = gposMakeBaseArray (fp, &pos->mark2Count, pos->classCount, offset + a2Offset);
-
- return pos;
-}
-
-static void printGPOS61 (FILE *fp, Pos61Ptr pos)
-{
- int i, num = 0;
-
- fprintf (fp, " - Mark To Mark Attachment\n\t mark1");
- otfPrintCoverage (fp, pos->mark1Coverage);
- fprintf (fp, "\t mark1Array - mark1Count: %d\n", pos->mark1Count);
- gposPrintMarkArray (fp, pos->mark1Count, pos->mark1Array);
- fprintf (fp, "\t mark2");
- otfPrintCoverage (fp, pos->mark2Coverage);
- fprintf (fp, "\t mark2Array - mark2Count: %d, classCount: %d\n",
- pos->mark2Count, pos->classCount);
- for (i = 0; i < pos->mark2Count; i++) {
- int j;
- const char *s = "";
-
- fprintf (fp, "\t %2d. ", i);
- for (j = 0; j < pos->classCount; j++) {
- if (pos->mark2Array[num].anchor1) {
- fprintf (fp, "%s%2d. ", s, j);
- gposPrintAnchor (fp, "\t\t ", pos->mark2Array[num]);
- s = "\t ";
- }
- num++;
- }
- }
-}
-
-static void freeGPOS61 (Pos61Ptr pos)
-{
- int i;
-
- for (i = 0; i < pos->mark1Count; i++)
- freeAnchor (pos->mark1Array[i].markAnchor);
- free (pos->mark1Array);
- for (i = 0; i < pos->mark2Count * pos->classCount; i++)
- freeAnchor (pos->mark2Array[i]);
- free (pos->mark2Array);
- otfFreeCoverage (pos->mark1Coverage);
- otfFreeCoverage (pos->mark2Coverage);
-}
-
-#define makeGPOS71 makeOTFCtx1
-#define printGPOS71 printOTFCtx1
-#define freeGPOS71 freeOTFCtx1
-
-#define makeGPOS72 makeOTFCtx2
-#define printGPOS72 printOTFCtx2
-#define freeGPOS72 freeOTFCtx2
-
-#define makeGPOS73 makeOTFCtx3
-#define printGPOS73 printOTFCtx3
-#define freeGPOS73 freeOTFCtx3
-
-#define makeGPOS81 makeOTFChn1
-#define printGPOS81 printOTFChn1
-#define freeGPOS81 freeOTFChn1
-
-#define makeGPOS82 makeOTFChn2
-#define printGPOS82 printOTFChn2
-#define freeGPOS82 freeOTFChn2
-
-#define makeGPOS83 makeOTFChn3
-#define printGPOS83 printOTFChn3
-#define freeGPOS83 freeOTFChn3
-
-static LookupPtr makeGPOSLookup (FILE *fp, USHORT lookupType, ULONG offset)
-{
- LookupPtr lookup;
- USHORT lookupFormat;
-
-again:
- if (lookupType == 0 || lookupType > PosLookup_Max)
- ttfError ("Unrecognized GPOS lookupType\n");
-
- xfseek (fp, offset, SEEK_SET, "makeGPOSLookup");
-
- lookupFormat = ttfGetUSHORT (fp);
- if (lookupFormat & 0xfff0)
- lookupFormat = 0x000f;
-
- switch (lookupType << 4 | lookupFormat)
- {
- case 0x011:
- lookup.pos.pos11 = makeGPOS11 (fp, offset);
- break;
- case 0x012:
- lookup.pos.pos12 = makeGPOS12 (fp, offset);
- break;
- case 0x021:
- lookup.pos.pos21 = makeGPOS21 (fp, offset);
- break;
- case 0x022:
- lookup.pos.pos22 = makeGPOS22 (fp, offset);
- break;
- case 0x031:
- lookup.pos.pos31 = makeGPOS31 (fp, offset);
- break;
- case 0x041:
- lookup.pos.pos41 = makeGPOS41 (fp, offset);
- break;
- case 0x051:
- lookup.pos.pos51 = makeGPOS51 (fp, offset);
- break;
- case 0x061:
- lookup.pos.pos61 = makeGPOS61 (fp, offset);
- break;
- case 0x071:
- lookup.pos.pos71 = makeGPOS71 (fp, offset);
- break;
- case 0x072:
- lookup.pos.pos72 = makeGPOS72 (fp, offset);
- break;
- case 0x073:
- lookup.pos.pos73 = makeGPOS73 (fp, offset);
- break;
- case 0x081:
- lookup.pos.pos81 = makeGPOS81 (fp, offset);
- break;
- case 0x082:
- lookup.pos.pos82 = makeGPOS82 (fp, offset);
- break;
- case 0x083:
- lookup.pos.pos83 = makeGPOS83 (fp, offset);
- break;
- case 0x091:
- lookupType = ttfGetUSHORT (fp);
- if (lookupType == 9)
- ttfError ("Invalid GPOS extensionLookupType\n");
- offset += ttfGetULONG (fp);
- goto again;
- default:
- ttfError ("Unrecognized GPOS lookupFormat\n");
- }
-
- lookup.otf->lookupType = lookupType;
- lookup.otf->lookupFormat = lookupFormat;
-
- return lookup;
-}
-
-static void printGPOSLookup (FILE *fp, LookupPtr lookup)
-{
- switch (lookup.otf->lookupType << 4 | lookup.otf->lookupFormat)
- {
- case 0x011:
- printGPOS11 (fp, lookup.pos.pos11);
- break;
- case 0x012:
- printGPOS12 (fp, lookup.pos.pos12);
- break;
- case 0x021:
- printGPOS21 (fp, lookup.pos.pos21);
- break;
- case 0x022:
- printGPOS22 (fp, lookup.pos.pos22);
- break;
- case 0x031:
- printGPOS31 (fp, lookup.pos.pos31);
- break;
- case 0x041:
- printGPOS41 (fp, lookup.pos.pos41);
- break;
- case 0x051:
- printGPOS51 (fp, lookup.pos.pos51);
- break;
- case 0x061:
- printGPOS61 (fp, lookup.pos.pos61);
- break;
- case 0x071:
- printGPOS71 (fp, lookup.pos.pos71);
- break;
- case 0x072:
- printGPOS72 (fp, lookup.pos.pos72);
- break;
- case 0x073:
- printGPOS73 (fp, lookup.pos.pos73);
- break;
- case 0x081:
- printGPOS81 (fp, lookup.pos.pos81);
- break;
- case 0x082:
- printGPOS82 (fp, lookup.pos.pos82);
- break;
- case 0x083:
- printGPOS83 (fp, lookup.pos.pos83);
- break;
- default:
- ttfError ("Internal error: printGPOSLookup\n");
- }
-}
-
-static void freeGPOSLookup (LookupPtr lookup)
-{
- switch (lookup.otf->lookupType << 4 | lookup.otf->lookupFormat)
- {
- case 0x011:
- freeGPOS11 (lookup.pos.pos11);
- break;
- case 0x012:
- freeGPOS12 (lookup.pos.pos12);
- break;
- case 0x021:
- freeGPOS21 (lookup.pos.pos21);
- break;
- case 0x022:
- freeGPOS22 (lookup.pos.pos22);
- break;
- case 0x031:
- freeGPOS31 (lookup.pos.pos31);
- break;
- case 0x041:
- freeGPOS41 (lookup.pos.pos41);
- break;
- case 0x051:
- freeGPOS51 (lookup.pos.pos51);
- break;
- case 0x061:
- freeGPOS61 (lookup.pos.pos61);
- break;
- case 0x071:
- freeGPOS71 (lookup.pos.pos71);
- break;
- case 0x072:
- freeGPOS72 (lookup.pos.pos72);
- break;
- case 0x073:
- freeGPOS73 (lookup.pos.pos73);
- break;
- case 0x081:
- freeGPOS81 (lookup.pos.pos81);
- break;
- case 0x082:
- freeGPOS82 (lookup.pos.pos82);
- break;
- case 0x083:
- freeGPOS83 (lookup.pos.pos83);
- break;
- default:
- ttfError ("Internal error: freeGPOSLookup\n");
- }
-}
-
-static void ttfLoadGPOS (FILE *fp, GPOSPtr gpos, ULONG offset)
-{
- USHORT sOffset, fOffset, lOffset;
-
- xfseek (fp, offset, SEEK_SET, "ttfLoadGPOS");
-
- gpos->version = ttfGetFixed (fp);
- sOffset = ttfGetUSHORT (fp);
- fOffset = ttfGetUSHORT (fp);
- lOffset = ttfGetUSHORT (fp);
-
- gpos->scriptList = otfMakeScriptList (fp, offset + sOffset);
- gpos->featureList = otfMakeFeatureList (fp, offset + fOffset);
- gpos->lookupList = otfMakeLookupList (fp, offset + lOffset, &makeGPOSLookup);
-}
-
-void ttfInitGPOS (TTFontPtr font)
-{
- ULONG tag = FT_MAKE_TAG ('G', 'P', 'O', 'S');
- TableDirPtr ptd;
-
- if ((ptd = ttfLookUpTableDir (tag, font)) != NULL)
- {
- font->gpos = XCALLOC1 (GPOS);
- ttfLoadGPOS (font->fp, font->gpos, ptd->offset);
- }
-}
-
-void ttfPrintGPOS (FILE *fp, GPOSPtr gpos)
-{
- int b[2];
-
- FixedSplit (gpos->version, b);
-
- fprintf (fp, "'GPOS' Table - Glyph Positioning Data\n");
- fprintf (fp, "-------------------------------------\n");
- fprintf (fp, "\t 'GPOS' Version:\t %d.%d\n",b[1],b[0]);
-
- otfPrintScriptList (fp, gpos->scriptList);
- otfPrintFeatureList (fp, gpos->featureList);
- otfPrintLookupList (fp, gpos->lookupList, &printGPOSLookup);
-}
-
-void ttfFreeGPOS (GPOSPtr gpos)
-{
- if (gpos != NULL)
- {
- otfFreeScriptList (gpos->scriptList);
- otfFreeFeatureList (gpos->featureList);
- otfFreeLookupList (gpos->lookupList, &freeGPOSLookup);
- free (gpos);
- }
-}
diff --git a/Build/source/texk/ttfdump/libttf/gstate.c b/Build/source/texk/ttfdump/libttf/gstate.c
deleted file mode 100644
index d8b7adcca79..00000000000
--- a/Build/source/texk/ttfdump/libttf/gstate.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* gstate.c -- manage graphics state
- * Copyright (C) 1996 Li-Da Lho, All right reserved.
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdlib.h>
-#include "ttf.h"
-#include "ttfutil.h"
-
-/* $Id: gstate.c,v 1.1.1.1 1998/06/05 07:47:52 robert Exp $ */
-
-GraphicsState gsdefault;
-
-void ttfInitGraphicsState(TTFontPtr font)
-{
-#if 0
- font->gstate = GS_DEFAULT;
- font->gstate_init = GS_DEFAULT;
-#endif
-
-#if 0
- ttfExecuteInstruction(font, font->fpgm);
- ttfExecuteInstruction(font, font->prep);
-#endif
-}
-
-void ttfInitStack(TTFontPtr font)
-{
- font->vm.sp = 0;
- font->vm.Stack = XCALLOC (font->maxp->maxStackElements, LONG);
-}
-
-void ttfInitStorageArea(TTFontPtr font)
-{
- font->vm.StorageArea = XCALLOC (font->maxp->maxStorage, LONG);
-}
diff --git a/Build/source/texk/ttfdump/libttf/gsub.c b/Build/source/texk/ttfdump/libttf/gsub.c
deleted file mode 100644
index b0ca3ee5b54..00000000000
--- a/Build/source/texk/ttfdump/libttf/gsub.c
+++ /dev/null
@@ -1,556 +0,0 @@
-/* gsub.c -- Glyph Substitution Table
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "ttf.h"
-#include "ttfutil.h"
-
-static Sub11Ptr makeGSUB11 (FILE *fp, ULONG offset)
-{
- USHORT cOffset;
- Sub11Ptr sub = XCALLOC1 (Sub11);
-
- cOffset = ttfGetUSHORT (fp);
- sub->deltaGlyphID = ttfGetUSHORT (fp);
- sub->coverage = otfMakeCoverage (fp, offset + cOffset);
-
- return sub;
-}
-
-static void printGSUB11 (FILE *fp, Sub11Ptr sub)
-{
- fprintf (fp, " - Single Substitution Delta\n\t ");
- otfPrintCoverage (fp, sub->coverage);
- fprintf (fp, "\t deltaGlyphID: %d\n", sub->deltaGlyphID);
-}
-
-static void freeGSUB11 (Sub11Ptr sub)
-{
- otfFreeCoverage (sub->coverage);
-}
-
-static Sub12Ptr makeGSUB12 (FILE *fp, ULONG offset)
-{
- USHORT cOffset;
- Sub12Ptr sub = XCALLOC1 (Sub12);
-
- cOffset = ttfGetUSHORT (fp);
- sub->glyphCount = ttfGetUSHORT (fp);
- sub->substitute = ttfMakeUSHORT (sub->glyphCount, fp);
- sub->coverage = otfMakeCoverage (fp, offset + cOffset);
-
- return sub;
-}
-
-static void printGSUB12 (FILE *fp, Sub12Ptr sub)
-{
- int i;
-
- fprintf (fp, " - Single Substitution List\n\t ");
- otfPrintCoverage (fp, sub->coverage);
- fprintf (fp, "\t glyphCount: %d\n\t\t substitute: %d",
- sub->glyphCount, sub->substitute[0]);
- for (i = 1; i < sub->glyphCount; i++)
- fprintf (fp, i % 8 ? ", %d" : ",\n\t\t\t %d", sub->substitute[i]);
- fprintf (fp, "\n");
-}
-
-static void freeGSUB12 (Sub12Ptr sub)
-{
- otfFreeCoverage (sub->coverage);
- free (sub->substitute);
-}
-
-static void gsubLoadSequence (SequencePtr sequence, FILE *fp, ULONG offset)
-{
- xfseek (fp, offset, SEEK_SET, "gsubLoadSequence");
-
- sequence->glyphCount = ttfGetUSHORT (fp);
- sequence->substitute = ttfMakeUSHORT (sequence->glyphCount, fp);
-}
-
-static Sub21Ptr makeGSUB21 (FILE *fp, ULONG offset)
-{
- int i;
- USHORT cOffset;
- USHORT *sOffset;
- Sub21Ptr sub = XCALLOC1 (Sub21);
-
- cOffset = ttfGetUSHORT (fp);
- sub->sequenceCount = ttfGetUSHORT (fp);
- sOffset = ttfMakeUSHORT (sub->sequenceCount, fp);
- sub->coverage = otfMakeCoverage (fp, offset + cOffset);
- sub->sequence = XCALLOC (sub->sequenceCount, Sequence);
- for (i = 0; i < sub->sequenceCount; i++)
- gsubLoadSequence (&sub->sequence[i], fp, offset + sOffset[i]);
- free (sOffset);
-
- return sub;
-}
-
-static void printGSUB21 (FILE *fp, Sub21Ptr sub)
-{
- int i;
-
- fprintf (fp, " - Multiple Substitution\n\t ");
- otfPrintCoverage (fp, sub->coverage);
- fprintf (fp, "\t sequenceCount: %d\n", sub->sequenceCount);
- for (i = 0; i < sub->sequenceCount; i++) {
- int j;
-
- fprintf (fp, "\t %2d. glyphCount: %d - ", i, sub->sequence[i].glyphCount);
- for (j = 0; j < sub->sequence[i].glyphCount; j++)
- fprintf (fp, j == 0 ? "- %d" : ", %d", sub->sequence[i].substitute[j]);
- fprintf (fp, "\n");
- }
-}
-
-static void freeGSUB21 (Sub21Ptr sub)
-{
- int i;
-
- otfFreeCoverage (sub->coverage);
- for (i = 0; i < sub->sequenceCount; i++)
- free (sub->sequence[i].substitute);
- free (sub->sequence);
-}
-
-static void gsubLoadAlternateSet (AlternateSetPtr alternateSet, FILE *fp, ULONG offset)
-{
- xfseek (fp, offset, SEEK_SET, "gsubLoadAlternateSet");
-
- alternateSet->glyphCount = ttfGetUSHORT (fp);
- alternateSet->alternate = ttfMakeUSHORT (alternateSet->glyphCount, fp);
-}
-
-static Sub31Ptr makeGSUB31 (FILE *fp, ULONG offset)
-{
- int i;
- USHORT cOffset;
- USHORT *aOffset;
- Sub31Ptr sub = XCALLOC1 (Sub31);
-
- cOffset = ttfGetUSHORT (fp);
- sub->alternateSetCount = ttfGetUSHORT (fp);
- aOffset = ttfMakeUSHORT (sub->alternateSetCount, fp);
- sub->coverage = otfMakeCoverage (fp, offset + cOffset);
- sub->alternateSet = XCALLOC (sub->alternateSetCount, AlternateSet);
- for (i = 0; i < sub->alternateSetCount; i++)
- gsubLoadAlternateSet (&sub->alternateSet[i], fp, offset + aOffset[i]);
- free (aOffset);
-
- return sub;
-}
-
-static void printGSUB31 (FILE *fp, Sub31Ptr sub)
-{
- int i;
-
- fprintf (fp, " - Alternate Substitution\n\t ");
- otfPrintCoverage (fp, sub->coverage);
- fprintf (fp, "\t alternateSetCount: %d\n", sub->alternateSetCount);
- for (i = 0; i < sub->alternateSetCount; i++) {
- int j;
-
- fprintf (fp, "\t %2d. glyphCount: %d ", i, sub->alternateSet[i].glyphCount);
- for (j = 0; j < sub->alternateSet[i].glyphCount; j++)
- fprintf (fp, j == 0 ? "- %d" : ", %d", sub->alternateSet[i].alternate[j]);
- fprintf (fp, "\n");
- }
-}
-
-static void freeGSUB31 (Sub31Ptr sub)
-{
- int i;
-
- otfFreeCoverage (sub->coverage);
- for (i = 0; i < sub->alternateSetCount; i++)
- free (sub->alternateSet[i].alternate);
- free (sub->alternateSet);
-}
-
-static void gsubLoadLigature (LigaturePtr ligature, FILE *fp, ULONG offset)
-{
- xfseek (fp, offset, SEEK_SET, "gsubLoadLigature");
-
- ligature->ligGlyph = ttfGetUSHORT (fp);
- ligature->compCount = ttfGetUSHORT (fp);
- ligature->component = ttfMakeUSHORT (ligature->compCount - 1, fp);
-}
-
-static void gsubLoadLigatureSet (LigatureSetPtr ligatureSet, FILE *fp, ULONG offset)
-{
- int i;
- USHORT *lOffset;
-
- xfseek (fp, offset, SEEK_SET, "gsubLoadLigatureSet");
-
- ligatureSet->ligatureCount = ttfGetUSHORT (fp);
- lOffset = ttfMakeUSHORT (ligatureSet->ligatureCount, fp);
- ligatureSet->ligature = XCALLOC (ligatureSet->ligatureCount, Ligature);
- for (i = 0; i < ligatureSet->ligatureCount; i++)
- gsubLoadLigature (&ligatureSet->ligature[i], fp, offset + lOffset[i]);
- free (lOffset);
-}
-
-static Sub41Ptr makeGSUB41 (FILE *fp, ULONG offset)
-{
- int i;
- USHORT cOffset;
- USHORT *lOffset;
- Sub41Ptr sub = XCALLOC1 (Sub41);
-
- cOffset = ttfGetUSHORT (fp);
- sub->ligSetCount = ttfGetUSHORT (fp);
- lOffset = ttfMakeUSHORT (sub->ligSetCount, fp);
- sub->coverage = otfMakeCoverage (fp, offset + cOffset);
- sub->ligatureSet = XCALLOC (sub->ligSetCount, LigatureSet);
- for (i = 0; i < sub->ligSetCount; i++)
- gsubLoadLigatureSet (&sub->ligatureSet[i], fp, offset + lOffset[i]);
- free (lOffset);
-
- return sub;
-}
-
-static void printGSUB41 (FILE *fp, Sub41Ptr sub)
-{
- int i;
-
- fprintf (fp, " - Ligature Substitution\n\t ");
- otfPrintCoverage (fp, sub->coverage);
- fprintf (fp, "\t ligSetCount: %d\n", sub->ligSetCount);
- for (i = 0; i < sub->ligSetCount; i++) {
- int j;
-
- fprintf (fp, "\t %2d. ligatureCount: %d\n", i, sub->ligatureSet[i].ligatureCount);
- for (j = 0; j < sub->ligatureSet[i].ligatureCount; j++) {
- int k;
-
- fprintf (fp, "\t %2d. ligGlyph: %d, compCount: %d ", j,
- sub->ligatureSet[i].ligature[j].ligGlyph,
- sub->ligatureSet[i].ligature[j].compCount);
- for (k = 0; k < sub->ligatureSet[i].ligature[j].compCount - 1; k++)
- fprintf (fp, k == 0 ? "- %d" : ", %d", sub->ligatureSet[i].ligature[j].component[k]);
- fprintf (fp, "\n");
- }
- }
-}
-
-static void freeGSUB41 (Sub41Ptr sub)
-{
- int i;
-
- otfFreeCoverage (sub->coverage);
- for (i = 0; i < sub->ligSetCount; i++) {
- int j;
-
- for (j = 0; j < sub->ligatureSet[i].ligatureCount; j++)
- free (sub->ligatureSet[i].ligature[j].component);
- free (sub->ligatureSet[i].ligature);
- }
- free (sub->ligatureSet);
-}
-
-#define makeGSUB51 makeOTFCtx1
-#define printGSUB51 printOTFCtx1
-#define freeGSUB51 freeOTFCtx1
-
-#define makeGSUB52 makeOTFCtx2
-#define printGSUB52 printOTFCtx2
-#define freeGSUB52 freeOTFCtx2
-
-#define makeGSUB53 makeOTFCtx3
-#define printGSUB53 printOTFCtx3
-#define freeGSUB53 freeOTFCtx3
-
-#define makeGSUB61 makeOTFChn1
-#define printGSUB61 printOTFChn1
-#define freeGSUB61 freeOTFChn1
-
-#define makeGSUB62 makeOTFChn2
-#define printGSUB62 printOTFChn2
-#define freeGSUB62 freeOTFChn2
-
-#define makeGSUB63 makeOTFChn3
-#define printGSUB63 printOTFChn3
-#define freeGSUB63 freeOTFChn3
-
-static Sub81Ptr makeGSUB81 (FILE *fp, ULONG offset)
-{
- int i;
- USHORT cOffset;
- USHORT *bOffset, *lOffset;
- Sub81Ptr sub = XCALLOC1 (Sub81);
-
- cOffset = ttfGetUSHORT (fp);
- sub->backtrackGlyphCount = ttfGetUSHORT (fp);
- bOffset = ttfMakeUSHORT (sub->backtrackGlyphCount, fp);
- sub->lookaheadGlyphCount = ttfGetUSHORT (fp);
- lOffset = ttfMakeUSHORT (sub->lookaheadGlyphCount, fp);
- sub->glyphCount = ttfGetUSHORT (fp);
- sub->substitute = ttfMakeUSHORT (sub->glyphCount, fp);
- sub->coverage = otfMakeCoverage (fp, offset + cOffset);
- sub->backtrack = XCALLOC (sub->backtrackGlyphCount, CoveragePtr);
- for (i = 0; i < sub->backtrackGlyphCount; i++)
- sub->backtrack[i] = otfMakeCoverage (fp, offset + bOffset[i]);
- free (bOffset);
- sub->lookahead = XCALLOC (sub->lookaheadGlyphCount, CoveragePtr);
- for (i = 0; i < sub->lookaheadGlyphCount; i++)
- sub->lookahead[i] = otfMakeCoverage (fp, offset + lOffset[i]);
- free (lOffset);
-
- return sub;
-}
-
-static void printGSUB81 (FILE *fp, Sub81Ptr sub)
-{
- int i;
-
- fprintf (fp, " - Reverse Chaining Context Single Substitution\n\t ");
- otfPrintCoverage (fp, sub->coverage);
- fprintf (fp, "\t backtrackGlyphCount: %d\n", sub->backtrackGlyphCount);
- for (i = 0; i < sub->backtrackGlyphCount; i++) {
- fprintf (fp, "\t %2d. backtrack", i);
- otfPrintCoverage (fp, sub->backtrack[i]);
- }
- fprintf (fp, "\t lookaheadGlyphCount: %d\n", sub->lookaheadGlyphCount);
- for (i = 0; i < sub->lookaheadGlyphCount; i++) {
- fprintf (fp, "\t %2d. lookahead", i);
- otfPrintCoverage (fp, sub->lookahead[i]);
- }
- fprintf (fp, "\t glyphCount: %d\n\t substitute - %d",
- sub->glyphCount, sub->substitute[0]);
- for (i = 1; i < sub->glyphCount; i++)
- fprintf (fp, i % 8 ? ",\n\t\t %d" : ", %d", sub->substitute[i]);
-}
-
-static void freeGSUB81 (Sub81Ptr sub)
-{
- int i;
-
- otfFreeCoverage (sub->coverage);
- for (i = 0; i < sub->backtrackGlyphCount; i++)
- otfFreeCoverage (sub->backtrack[i]);
- free (sub->backtrack);
- for (i = 0; i < sub->lookaheadGlyphCount; i++)
- otfFreeCoverage (sub->lookahead[i]);
- free (sub->lookahead);
- free (sub->substitute);
-}
-
-static LookupPtr makeGSUBLookup (FILE *fp, USHORT lookupType, ULONG offset)
-{
- LookupPtr lookup;
- USHORT lookupFormat;
-
-again:
- if (lookupType == 0 || lookupType > SubLookup_Max)
- ttfError ("Unrecognized GSUB lookupType\n");
-
- xfseek (fp, offset, SEEK_SET, "makeGSUBLookup");
-
- lookupFormat = ttfGetUSHORT (fp);
- if (lookupFormat & 0xfff0)
- lookupFormat = 0x000f;
-
- switch (lookupType << 4 | lookupFormat)
- {
- case 0x011:
- lookup.sub.sub11 = makeGSUB11 (fp, offset);
- break;
- case 0x012:
- lookup.sub.sub12 = makeGSUB12 (fp, offset);
- break;
- case 0x021:
- lookup.sub.sub21 = makeGSUB21 (fp, offset);
- break;
- case 0x031:
- lookup.sub.sub31 = makeGSUB31 (fp, offset);
- break;
- case 0x041:
- lookup.sub.sub41 = makeGSUB41 (fp, offset);
- break;
- case 0x051:
- lookup.sub.sub51 = makeGSUB51 (fp, offset);
- break;
- case 0x052:
- lookup.sub.sub52 = makeGSUB52 (fp, offset);
- break;
- case 0x053:
- lookup.sub.sub53 = makeGSUB53 (fp, offset);
- break;
- case 0x061:
- lookup.sub.sub61 = makeGSUB61 (fp, offset);
- break;
- case 0x062:
- lookup.sub.sub62 = makeGSUB62 (fp, offset);
- break;
- case 0x063:
- lookup.sub.sub63 = makeGSUB63 (fp, offset);
- break;
- case 0x081:
- lookup.sub.sub81 = makeGSUB81 (fp, offset);
- break;
- case 0x071:
- lookupType = ttfGetUSHORT (fp);
- if (lookupType == 7)
- ttfError ("Invalid GSUB extensionLookupType\n");
- offset += ttfGetULONG (fp);
- goto again;
- default:
- ttfError ("Unrecognized GSUB lookupFormat\n");
- }
-
- lookup.otf->lookupType = lookupType;
- lookup.otf->lookupFormat = lookupFormat;
-
- return lookup;
-}
-
-static void printGSUBLookup (FILE *fp, LookupPtr lookup)
-{
- switch (lookup.otf->lookupType << 4 | lookup.otf->lookupFormat)
- {
- case 0x011:
- printGSUB11 (fp, lookup.sub.sub11);
- break;
- case 0x012:
- printGSUB12 (fp, lookup.sub.sub12);
- break;
- case 0x021:
- printGSUB21 (fp, lookup.sub.sub21);
- break;
- case 0x031:
- printGSUB31 (fp, lookup.sub.sub31);
- break;
- case 0x041:
- printGSUB41 (fp, lookup.sub.sub41);
- break;
- case 0x051:
- printGSUB51 (fp, lookup.sub.sub51);
- break;
- case 0x052:
- printGSUB52 (fp, lookup.sub.sub52);
- break;
- case 0x053:
- printGSUB53 (fp, lookup.sub.sub53);
- break;
- case 0x061:
- printGSUB61 (fp, lookup.sub.sub61);
- break;
- case 0x062:
- printGSUB62 (fp, lookup.sub.sub62);
- break;
- case 0x063:
- printGSUB63 (fp, lookup.sub.sub63);
- break;
- case 0x081:
- printGSUB81 (fp, lookup.sub.sub81);
- break;
- default:
- ttfError ("Internal error: printGSUBLookup\n");
- }
-}
-
-static void freeGSUBLookup (LookupPtr lookup)
-{
- switch (lookup.otf->lookupType << 4 | lookup.otf->lookupFormat)
- {
- case 0x011:
- freeGSUB11 (lookup.sub.sub11);
- break;
- case 0x012:
- freeGSUB12 (lookup.sub.sub12);
- break;
- case 0x021:
- freeGSUB21 (lookup.sub.sub21);
- break;
- case 0x031:
- freeGSUB31 (lookup.sub.sub31);
- break;
- case 0x041:
- freeGSUB41 (lookup.sub.sub41);
- break;
- case 0x051:
- freeGSUB51 (lookup.sub.sub51);
- break;
- case 0x052:
- freeGSUB52 (lookup.sub.sub52);
- break;
- case 0x053:
- freeGSUB53 (lookup.sub.sub53);
- break;
- case 0x061:
- freeGSUB61 (lookup.sub.sub61);
- break;
- case 0x062:
- freeGSUB62 (lookup.sub.sub62);
- break;
- case 0x063:
- freeGSUB63 (lookup.sub.sub63);
- break;
- case 0x081:
- freeGSUB81 (lookup.sub.sub81);
- break;
- default:
- ttfError ("Internal error: freeGSUBLookup\n");
- }
-}
-
-static void ttfLoadGSUB (FILE *fp, GSUBPtr gsub, ULONG offset)
-{
- USHORT sOffset, fOffset, lOffset;
-
- xfseek (fp, offset, SEEK_SET, "ttfLoadGSUB");
-
- gsub->version = ttfGetFixed (fp);
- sOffset = ttfGetUSHORT (fp);
- fOffset = ttfGetUSHORT (fp);
- lOffset = ttfGetUSHORT (fp);
-
- gsub->scriptList = otfMakeScriptList (fp, offset + sOffset);
- gsub->featureList = otfMakeFeatureList (fp, offset + fOffset);
- gsub->lookupList = otfMakeLookupList (fp, offset + lOffset, &makeGSUBLookup);
-}
-
-void ttfInitGSUB (TTFontPtr font)
-{
- ULONG tag = FT_MAKE_TAG ('G', 'S', 'U', 'B');
- TableDirPtr ptd;
-
- if ((ptd = ttfLookUpTableDir (tag, font)) != NULL)
- {
- font->gsub = XCALLOC1 (GSUB);
- ttfLoadGSUB (font->fp, font->gsub, ptd->offset);
- }
-}
-
-void ttfPrintGSUB (FILE *fp, GSUBPtr gsub)
-{
- int b[2];
-
- FixedSplit (gsub->version, b);
-
- fprintf (fp, "'GSUB' Table - Glyph Substitution Data\n");
- fprintf (fp, "--------------------------------------\n");
- fprintf (fp, "\t 'GSUB' Version:\t %d.%d\n",b[1],b[0]);
-
- otfPrintScriptList (fp, gsub->scriptList);
- otfPrintFeatureList (fp, gsub->featureList);
- otfPrintLookupList (fp, gsub->lookupList, &printGSUBLookup);
-}
-
-void ttfFreeGSUB (GSUBPtr gsub)
-{
- if (gsub != NULL)
- {
- otfFreeScriptList (gsub->scriptList);
- otfFreeFeatureList (gsub->featureList);
- otfFreeLookupList (gsub->lookupList, &freeGSUBLookup);
- free (gsub);
- }
-}
diff --git a/Build/source/texk/ttfdump/libttf/hdmx.c b/Build/source/texk/ttfdump/libttf/hdmx.c
deleted file mode 100644
index d91b98eb1b3..00000000000
--- a/Build/source/texk/ttfdump/libttf/hdmx.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/* hdmx.c -- Horizontal Device Metrics
- * Copyright (C) 1996 Li-Da Lho, All right reserved
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "ttf.h"
-#include "ttfutil.h"
-
-/* $Id: hdmx.c,v 1.1.1.1 1998/06/05 07:47:52 robert Exp $ */
-
-static void ttfLoadHDMX(FILE *fp,HDMXPtr hdmx,ULONG offset);
-
-void ttfInitHDMX(TTFontPtr font)
-{
- ULONG tag = FT_MAKE_TAG ('h', 'd', 'm', 'x');
- TableDirPtr ptd;
-
- if ((ptd = ttfLookUpTableDir(tag,font)) != NULL)
- {
- font->hdmx = XCALLOC1 (HDMX);
- font->hdmx->numGlyphs = font->maxp->numGlyphs;
- ttfLoadHDMX(font->fp,font->hdmx,ptd->offset);
- }
-}
-
-static void ttfLoadHDMX (FILE *fp,HDMXPtr hdmx,ULONG offset)
-{
- int i;
-
- xfseek(fp, offset, SEEK_SET, "ttfLoadHDMX");
-
- hdmx->version = ttfGetUSHORT(fp);
- hdmx->numDevices = ttfGetUSHORT(fp);
- hdmx->size = ttfGetLONG(fp);
-
- hdmx->Records = XCALLOC (hdmx->numDevices, DeviceRecord);
-
- for (i=0;i<hdmx->numDevices;i++)
- {
- hdmx->Records[i].PixelSize = ttfGetBYTE(fp);
- hdmx->Records[i].MaxWidth = ttfGetBYTE(fp);
- hdmx->Records[i].Width = XCALLOC (hdmx->size, BYTE);
- fread ((hdmx->Records+i)->Width, sizeof(BYTE), hdmx->numGlyphs+1,fp);
- }
-}
-
-void ttfPrintHDMX(FILE *fp,HDMXPtr hdmx)
-{
- int i;
-
- fprintf(fp,"'hdmx' Table - Horizontal Device Metrics\n");
- fprintf(fp,"----------------------------------------\n");
-
- fprintf(fp,"\t 'hdmx' version:\t %d\n",hdmx->version);
- fprintf(fp,"\t # device records:\t %d\n",hdmx->numDevices);
- fprintf(fp,"\t Record length:\t %d\n",hdmx->size);
-
- for (i=0;i<hdmx->numDevices;i++)
- {
- int j;
- fprintf(fp,"\t DevRec %d: ppem = %d, maxWid = %d\n",
- i,hdmx->Records[i].PixelSize,hdmx->Records[i].MaxWidth);
-
- for (j=0;j<hdmx->numGlyphs;j++)
- fprintf(fp,"\t %d. \t %d\n",j,(hdmx->Records+i)->Width[j]);
- fprintf(fp,"\n");
- }
- fprintf(fp,"\n");
-}
-
-void ttfFreeHDMX(HDMXPtr hdmx)
-{
- int i;
-
- if (hdmx != NULL)
- {
- for (i=0;i<hdmx->numDevices;i++)
- free(hdmx->Records[i].Width);
-
- free(hdmx->Records);
- free(hdmx);
- }
-}
diff --git a/Build/source/texk/ttfdump/libttf/head.c b/Build/source/texk/ttfdump/libttf/head.c
deleted file mode 100644
index bc07fc7baf1..00000000000
--- a/Build/source/texk/ttfdump/libttf/head.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/* head.c -- Header Table
- * Copyright (C) 1996 Li-Da Lho, All right reserved
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "ttf.h"
-#include "ttfutil.h"
-
-/* $Id: head.c,v 1.1.1.1 1998/06/05 07:47:52 robert Exp $ */
-
-static void ttfLoadHEAD(FILE *fp,HEADPtr head,ULONG offset);
-
-void ttfInitHEAD(TTFontPtr font)
-{
- ULONG tag = FT_MAKE_TAG ('h', 'e', 'a', 'd');
- TableDirPtr ptd;
-
- if ((ptd = ttfLookUpTableDir(tag,font)) != NULL)
- {
- font->head = XCALLOC1 (HEAD);
- ttfLoadHEAD(font->fp,font->head,ptd->offset);
- }
-}
-
-static void ttfLoadHEAD(FILE *fp,HEADPtr head,ULONG offset)
-{
- xfseek(fp, offset, SEEK_SET, "ttfLoadHEAD");
-
- head->version = ttfGetFixed(fp);
- head->fontRevision = ttfGetFixed(fp);
- head->checkSumAdj = ttfGetULONG(fp);
- head->magicNumber = ttfGetULONG(fp);
- head->flags = ttfGetUSHORT(fp);
- head->unitsPerEm = ttfGetUSHORT(fp);
-
- ttfReadULONG (head->created, 2, fp);
- ttfReadULONG (head->modified, 2, fp);
-
- head->xMin = ttfGetFWord(fp);
- head->yMin = ttfGetFWord(fp);
- head->xMax = ttfGetFWord(fp);
- head->yMax = ttfGetFWord(fp);
-
- head->macStyle = ttfGetUSHORT(fp);
- head->lowestRecPPEM = ttfGetUSHORT(fp);
-
- head->fontDirectionHint = ttfGetSHORT(fp);
- head->indexToLocFormat = ttfGetSHORT(fp);
- head->glyphDataFormat = ttfGetSHORT(fp);
-}
-
-void ttfPrintHEAD(FILE *fp,HEADPtr head)
-{
- int b1[2],b2[2];
-
- FixedSplit(head->version,b1);
- FixedSplit(head->fontRevision,b2);
-
- fprintf(fp,"'head' Table - Font Header\n");
- fprintf(fp,"--------------------------\n");
- fprintf(fp,"\t 'head' version:\t %d.%d\n",b1[1],b1[0]);
- fprintf(fp,"\t fontReversion:\t\t %d.%d\n",b2[1],b2[0]);
- fprintf(fp,"\t checkSumAdjustment:\t 0x%08x\n",head->checkSumAdj);
- fprintf(fp,"\t magicNumber:\t\t 0x%08x\n",head->magicNumber);
- fprintf(fp,"\t flags:\t\t\t 0x%04x\n",head->flags);
- fprintf(fp,"\t unitsPerEm:\t\t %d\n",head->unitsPerEm);
-
- /* don't know how to compute */
- fprintf(fp,"\t created:\t\t 0x%08x%08x\n", head->created[0], head->created[1]);
- fprintf(fp,"\t modified:\t\t 0x%08x%08x\n", head->modified[0], head->modified[1]);
-
- fprintf(fp,"\t xMin:\t\t\t %d\n",head->xMin);
- fprintf(fp,"\t yMin:\t\t\t %d\n",head->yMin);
- fprintf(fp,"\t xMax:\t\t\t %d\n",head->xMax);
- fprintf(fp,"\t yMax:\t\t\t %d\n",head->yMax);
- fprintf(fp,"\t macStyle bits:\t\t 0x%04x\n",head->macStyle);
- fprintf(fp,"\t lowestRecPPEM:\t\t %d\n",head->lowestRecPPEM);
- fprintf(fp,"\t fontDirectionHint:\t %d\n",head->fontDirectionHint);
- fprintf(fp,"\t indexToLocFormat:\t %d\n",head->indexToLocFormat);
- fprintf(fp,"\t glyphDataFormat:\t %d\n",head->glyphDataFormat);
- fprintf(fp,"\n");
-}
-
-void ttfFreeHEAD(HEADPtr head)
-{
- free(head);
-}
diff --git a/Build/source/texk/ttfdump/libttf/hhea.c b/Build/source/texk/ttfdump/libttf/hhea.c
deleted file mode 100644
index 6d8d9caecf1..00000000000
--- a/Build/source/texk/ttfdump/libttf/hhea.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/* hhea.c -- Horizontal header
- * Copyright (C) 1996 Li-Da Lho, All right reserved
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "ttf.h"
-#include "ttfutil.h"
-
-/* $Id: hhea.c,v 1.1.1.1 1998/06/05 07:47:52 robert Exp $ */
-
-static void ttfLoadHHEA(FILE *fp,HHEAPtr hhea,ULONG offset);
-
-void ttfInitHHEA(TTFontPtr font)
-{
- ULONG tag = FT_MAKE_TAG ('h', 'h', 'e', 'a');
- TableDirPtr ptd;
-
- if ((ptd = ttfLookUpTableDir(tag,font)) != NULL)
- {
- font->hhea = XCALLOC1 (HHEA);
- ttfLoadHHEA(font->fp,font->hhea,ptd->offset);
- }
-}
-
-static void ttfLoadHHEA (FILE *fp,HHEAPtr hhea,ULONG offset)
-{
- int i;
-
- xfseek(fp, offset, SEEK_SET, "ttfLoadHHEA");
-
- hhea->version = ttfGetFixed(fp);
- hhea->Ascender = ttfGetFWord(fp);
- hhea->Descender = ttfGetFWord(fp);
- hhea->LineGap = ttfGetFWord(fp);
- hhea->advanceWidthMax = ttfGetuFWord(fp);
- hhea->minLeftSideBearing = ttfGetFWord(fp);
- hhea->minRightSideBearing = ttfGetFWord(fp);
- hhea->xMaxExtent = ttfGetFWord(fp);
- hhea->caretSlopeRise = ttfGetSHORT(fp);
- hhea->caretSlopeRun = ttfGetSHORT(fp);
- for(i=0;i<5;i++)
- (hhea->reserved)[i] = ttfGetSHORT(fp);
- hhea->metricDataFormat = ttfGetSHORT(fp);
- hhea->numberOfHMetrics = ttfGetUSHORT(fp);
-}
-
-void ttfPrintHHEA(FILE *fp,HHEAPtr hhea)
-{
- int i,b[2];
-
- FixedSplit(hhea->version,b);
-
- fprintf(fp,"'hhea' Table - Horizontal Header\n");
- fprintf(fp,"--------------------------\n");
- fprintf(fp,"\t 'hhea' version:\t %d.%d\n",b[1],b[0]);
- fprintf(fp,"\t yAscender:\t\t %d\n",hhea->Ascender);
- fprintf(fp,"\t yDescender:\t\t %d\n",hhea->Descender);
- fprintf(fp,"\t yLineGap:\t\t %d\n",hhea->LineGap);
- fprintf(fp,"\t advanceWidthMax:\t %d\n",hhea->advanceWidthMax);
- fprintf(fp,"\t minLeftSideBearing:\t %d\n",hhea->minLeftSideBearing);
- fprintf(fp,"\t minRightSideBearing:\t %d\n",hhea->minRightSideBearing);
- fprintf(fp,"\t xMaxExtent:\t\t %d\n",hhea->xMaxExtent);
- fprintf(fp,"\t caretSlopeRise:\t %d\n",hhea->caretSlopeRise);
- fprintf(fp,"\t caretSlopeRun:\t\t %d\n",hhea->caretSlopeRun);
- for (i=0;i<5;i++)
- fprintf(fp,"\t reserved%d:\t\t %d\n",i,(hhea->reserved)[i]);
- fprintf(fp,"\t metricDataFormat:\t %d\n",hhea->metricDataFormat);
- fprintf(fp,"\t numberOfHMetrics:\t %d\n",hhea->numberOfHMetrics);
-}
-
-void ttfFreeHHEA(HHEAPtr hhea)
-{
- free(hhea);
-}
diff --git a/Build/source/texk/ttfdump/libttf/hmtx.c b/Build/source/texk/ttfdump/libttf/hmtx.c
deleted file mode 100644
index dfcd60670d7..00000000000
--- a/Build/source/texk/ttfdump/libttf/hmtx.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/* hmtx.c -- Horizontal Metrics Table
- * Copyright (C) 1997 Li-Da Lho, All right reserved
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "ttf.h"
-#include "ttfutil.h"
-
-/* $Id: hmtx.c,v 1.1.1.1 1998/06/05 07:47:52 robert Exp $ */
-
-static void ttfLoadHMTX(FILE *fp,HMTXPtr hmtx,ULONG offset);
-
-/* Caution: Because of interdependency between tables,
- * table hhea and maxp should be well initalized before
- * ttfInitHMTX is been called
- */
-void ttfInitHMTX(TTFontPtr font)
-{
- ULONG tag = FT_MAKE_TAG ('h', 'm', 't', 'x');
- TableDirPtr ptd;
-
- if ((ptd = ttfLookUpTableDir(tag,font)) != NULL)
- {
- font->hmtx = XCALLOC1 (HMTX);
- font->hmtx->numberOfHMetrics = font->hhea->numberOfHMetrics;
- font->hmtx->numberOfLSB = font->maxp->numGlyphs -
- font->hhea->numberOfHMetrics;
- ttfLoadHMTX(font->fp,font->hmtx,ptd->offset);
- }
-}
-
-static void ttfLoadHMTX(FILE *fp,HMTXPtr hmtx,ULONG offset)
-{
- USHORT i,n = hmtx->numberOfHMetrics,m=hmtx->numberOfLSB;
-
- xfseek(fp, offset, SEEK_SET, "ttfLoadHMTX");
-
- hmtx->hMetrics = XCALLOC (n, longHorMetric);
- for (i=0;i<n;i++)
- {
- (hmtx->hMetrics+i)->advanceWidth = ttfGetuFWord(fp);
- (hmtx->hMetrics+i)->lsb = ttfGetFWord(fp);
- }
-
- /* codes dealing with leftSideBearing entry */
- if (m)
- {
- hmtx->leftSideBearing = XCALLOC (m, FWord);
- for (i=0;i<m;i++)
- {
- (hmtx->leftSideBearing)[i] = ttfGetFWord(fp);
- }
- }
-}
-
-void ttfPrintHMTX(FILE *fp,HMTXPtr hmtx)
-{
- int i;
-
- fprintf(fp,"'hmtx' Table - Horizontal Metrics\n");
- fprintf(fp,"---------------------------------\n");
-
- for (i=0;i<hmtx->numberOfHMetrics;i++)
- {
- fprintf(fp,"\t %4d. advWid: %4d, LSBear: %4d\n",i,
- (hmtx->hMetrics+i)->advanceWidth,
- (hmtx->hMetrics+i)->lsb);
- }
-
- for (i=0;i<hmtx->numberOfLSB;i++)
- {
- fprintf(fp,"\t %4d. LSbear: %4d\n",i+hmtx->numberOfHMetrics,
- (hmtx->leftSideBearing)[i]);
- }
-}
-
-void ttfFreeHMTX(HMTXPtr hmtx)
-{
- free(hmtx->hMetrics);
-
- if (hmtx->numberOfLSB)
- free(hmtx->leftSideBearing);
-
- free(hmtx);
-}
diff --git a/Build/source/texk/ttfdump/libttf/interp.c b/Build/source/texk/ttfdump/libttf/interp.c
deleted file mode 100644
index 030c4bbadde..00000000000
--- a/Build/source/texk/ttfdump/libttf/interp.c
+++ /dev/null
@@ -1,856 +0,0 @@
-/* interp.c -- Instruction Interpreter
- * Copyright (C) 1996 Li-Da Lho, All right reserved.
- */
-#include "config.h"
-#include "ttf.h"
-#include "ttfutil.h"
-
-/* $Id: interp.c,v 1.1.1.1 1998/06/05 07:47:52 robert Exp $ */
-
-/* A bit about error checking: The execution of a TrueType instruction is
- * "atomic" which means that we don't process the error until a single
- * instruction is fully decoded and executed */
-
-/* Pushing data onto the interpreter stack */
-
-void Interp_NPUSHB (VirtualMachine *vm)
-{
- BYTE i,n;
- ULONG l;
-
- n = GetBYTE(vm);
-
- for (i=1;i<=n;i++)
- {
- /* unsigned extension to four bytes */
- l = (ULONG) GetBYTE(vm);
- Push(vm, l);
- }
-}
-
-void Interp_NPUSHW(VirtualMachine *vm)
-{
- BYTE i,n;
- LONG l;
-
- n = GetBYTE(vm);
-
- for (i=1;i<=n;i++)
- {
- /* signed extension to four bytes */
- l = (LONG) GetSHORT(vm);
- Push(vm, l);
- }
-
-}
-
-void Interp_PUSHB(VirtualMachine *vm)
-{
- BYTE opcode,n,i;
- ULONG l;
-
- opcode = (vm->iStream)[vm->ip];
- n = opcode - 0xB0;
-
- for (i=0;i<=n;i++)
- {
- l = (ULONG) GetBYTE(vm);
- Push(vm, l);
- }
-}
-/* PUSHW[abc] Push Words
- * Code Range 0xB8 - 0x0BF
- * From IS w0,w1,...wn
- * Pushes w0,w1,...wn */
-void Interp_PUSHW(VirtualMachine *vm)
-{
- BYTE opcode,n,i;
- LONG l;
-
- opcode = (vm->iStream)[vm->ip];
- n = opcode - 0xB8;
-
- for (i=0;i<=n;i++)
- {
- l = (LONG) GetSHORT(vm);
- Push(vm,l);
- }
-}
-
-/* Managing the Storage Area */
-
-/* RS[] Read Store
- * Code Range 0x43
- * Pops location: Storage Area location (ULONG)
- * Pushes value: Storage Area value (ULONG)
- * Gets Storage Area value */
-void Interp_RS(VirtualMachine *vm)
-{
- ULONG location,value;
-
- location = Pop(vm);
- value = (vm->StorageArea)[location];
- Push(vm,value);
-}
-/* WS[] Write Store
- * Code Range 0x42
- * Pops value: Storage Area value (ULONG)
- * location: Storage Area location (ULONG)
- * Pushes -
- * Sets Storage Area */
-void Interp_WS(VirtualMachine *vm)
-{
- ULONG location,value;
-
- value = Pop(vm);
- location = Pop(vm);
- (vm->StorageArea)[location] = value;
-}
-
-/* Managing the Control Value Table */
-
-/* WCVTP[] Write control Value Table in Pixel units
- * Code Range 0x44
- * Pops value: number in pixels (F26Dot6)
- * location: Control Value Table location (ULONG)
- * Pushes -
- * Sets Control Value Table entry */
-void Interp_WCVTP(VirtualMachine *vm)
-{
- F26Dot6 value;
- ULONG location;
-
- value = Pop(vm);
- location = Pop(vm);
-
- (vm->cvt)[location] = value;
-}
-/* WCVTF[] Write Control Value Table in FUnits
- * Code Range 0x70
- * Pops value: number in FUnits (ULONG) (LONG actually,i think)
- * location: Control Value (ULONG)
- * Pushes -
- * Sets Control Value Table entry
- */
-void Interp_WCVTF(VirtualMachine *vm)
-{
- ULONG location;
- LONG value;
-
- value = Pop(vm);
- location = Pop(vm);
-
- value = ScaleToPoints(vm,value);
- (vm->cvt)[location] = value;
-}
-/* RCVT[] Read Control Value Table
- * Code Range 0x45
- * Pops location: CVT entry number (ULONG)
- * Pushes value: CVT value (F26Dot6)
- * Gets Control Value Table entry
- */
-void Interp_RCVT(VirtualMachine *vm)
-{
- ULONG location;
- F26Dot6 value;
-
- location = Pop(vm);
- value = (vm->cvt)[location];
- Push(vm,value);
-}
-
-/* Managing Graphics State */
-
-/* SVTCA[a] Set freedom and projection vector to Coordinate Axia
- * Code Range 0x00 - 0x01
- * a 0: set to y axis
- * 1: set to x axis
- * Pops -
- * Pushes -
- * Sets projection_vector
- * freedom_vector
- */
-void Interp_SVTCA(VirtualMachine *vm)
-{
- BYTE opcode;
- TTFUnitVector vect;
-
- opcode = (vm->iStream)[vm->ip];
- switch (opcode)
- {
- case 0x00:
- vect.x = 0;
- vect.y = F2Dot14_ONE;
- break;
- case 0x01:
- vect.x = F2Dot14_ONE;
- vect.y = 0;
- break;
- }
- vm->gstate.projection_vector = vm->gstate.freedom_vector = vect;
-}
-/* SPVCA[a] Set projection vector to coordinate axis
- * Code Range 0x02 - 0x03
- * a 0: set to y axis
- * 1: set to x axis
- * Pops -
- * Pushes -
- * Sets projection vector
- */
-void Interp_SPVTCA(VirtualMachine *vm)
-{
- BYTE opcode;
- TTFUnitVector vect;
-
- opcode = (vm->iStream)[vm->ip];
- switch (opcode)
- {
- case 0x02:
- vect.x = 0;
- vect.y = F2Dot14_ONE;
- break;
- case 0x03:
- vect.x = F2Dot14_ONE;
- vect.y = 0;
- break;
- }
- vm->gstate.projection_vector = vect;
-}
-/* SFVTCA[a] Set freedom vector to coordinate axis
- * Code Range 0x04 - 0x05
- * a 0: set to y axis
- * 1: set to x axis
- * Pops -
- * Pushes -
- * Sets freedom vector
- */
-void Interp_SFVTCA(VirtualMachine *vm)
-{
- BYTE opcode;
- TTFUnitVector vect;
-
- opcode = (vm->iStream)[vm->ip];
- switch (opcode)
- {
- case 0x04:
- vect.x = 0;
- vect.y = F2Dot14_ONE;
- break;
- case 0x05:
- vect.x = F2Dot14_ONE;
- vect.y = 0;
- break;
- }
- vm->gstate.freedom_vector = vect;
-}
-/* SPVTL[a] Set projection vector to line
- * Code Range 0x06 - 0x07
- * a 0: set projection_vector to be parallel to line segment from p1
- * to p2
- * 1: set projection_vector to be perpendicular to line segment from
- * p1 to p2; the vector is retated counter clockwise 90 degrees
- * Pops p1: point number (ULONG)
- * p2: point number (ULONG)
- * Pushes -
- * Uses point p1 in the zone pointed at by zp2
- * point p2 in the zone pointed at by zp1
- * Sets projection vector
- */
-void Interp_SPVTL(VirtualMachine *vm)
-{
- ULONG p1,p2;
- BYTE opcode;
- TTFUnitVector vect;
-
- opcode = (vm->iStream)[vm->ip];
- p1 = Pop(vm);
- p2 = Pop(vm);
-
- switch (opcode)
- {
- /* not finished yet */
- case 0x06:
- break;
- case 0x07:
- break;
- }
- vm->gstate.projection_vector = vect;
-}
-/* SFVTL[a] Set freedom vector to line
- * Code Range 0x08 - 0x09
- * a 0: set freedom_vector to be parallel to line segment from p1
- * to p2
- * 1: set freedom_vector to be perpendicular to line segment from
- * p1 to p2; the vector is retated counter clockwise 90 degrees
- * Pops p1: point number (ULONG)
- * p2: point number (ULONG)
- * Pushes -
- * Uses point p1 in the zone pointed at by zp2
- * point p2 in the zone pointed at by zp1
- * Sets freedom vector
- */
-void Interp_SFVTL(VirtualMachine *vm)
-{
- ULONG p1,p2;
- BYTE opcode;
- TTFUnitVector vect;
-
- opcode = (vm->iStream)[vm->ip];
- p1 = Pop(vm);
- p2 = Pop(vm);
- switch (opcode)
- {
- /* not finished yet */
- case 0x08:
- break;
- case 0x09:
- break;
- }
- vm->gstate.freedom_vector = vect;
-}
-/* SFVTPV[] Set freedom vector to projection vector
- * Code Range 0x0E
- * Pops -
- * Pushes -
- * Sets freedom vector
- */
-void Interp_SFVTPV(VirtualMachine *vm)
-{
- vm->gstate.freedom_vector = vm->gstate.projection_vector;
-}
-/* SDPVTL[a] Set dual projection vector to line
- * Code Range 0x86 - 0x87
- * a 0: vectors are parallel to line
- * 1: vectors are perpendicular to line
- * Pops p1: first point number (ULONG)
- * p2: second point number (ULONG)
- * Pushes -
- * Sets dual_projection_vector and projection_vector
- * Uses point p1 in the zone pointed by zp2
- * point p2 in the zone pointed by zp1
- */
-void Interp_SDPVTL(VirtualMachine *vm)
-{
- ULONG p1,p2;
- BYTE opcode;
- TTFUnitVector vect;
-
- opcode = (vm->iStream)[vm->ip];
- p1 = Pop(vm);
- p2 = Pop(vm);
- switch (opcode)
- {
- /* not finished yet */
- case 0x86:
- break;
- case 0x87:
- break;
- }
- vm->gstate.dual_projection_vector = vm->gstate.projection_vector = vect;
-}
-/* SPVFS[] Set projection vector from stack
- * Code Range 0x0A
- * Pops y: y component of projection vector (2.14 padded with zeros)
- * x: x component of projection vector (2.14 padded with zeros)
- * Pushes -
- * Sets projection_vector
- */
-void Inpterp_SPVFS(VirtualMachine *vm)
-{
- F2Dot14 x,y;
-
- x = Pop(vm);
- y = Pop(vm);
-
- vm->gstate.projection_vector.x = x;
- vm->gstate.projection_vector.y = y;
- /* vm->gstate.projection = Normalize(vm->gstate.projection); ?? */
-}
-/* SFVFS[] Set freedom vector form stack
- * Code Range 0x0B
- * Pops y: y component of freedom vector (2.14 padded with zeros)
- * x: x component of freedom vector (2.14 padded with zeros)
- * Pushes -
- * Sets freedom_vector
- */
-void Inpterp_SFVFS(VirtualMachine *vm)
-{
- F2Dot14 x,y;
-
- x = Pop(vm);
- y = Pop(vm);
-
- vm->gstate.freedom_vector.x = x;
- vm->gstate.freedom_vector.y = y;
- /* vm->gstate.freedom = Normalize(vm->gstate.freedom); ?? */
-}
-/* GPV[] Get projection vector
- * Code Range 0x0C
- * Pops -
- * Pushes x: x component of projection vector (2.14 padded with zeros)
- * y: y component of projection vector (2.14 padded with zeros)
- * Gets projection vector
- */
-void Interp_GPV(VirtualMachine *vm)
-{
- ULONG l;
-
- l = (ULONG) vm->gstate.projection_vector.x;
- Push(vm,l);
- l = (ULONG) vm->gstate.projection_vector.y;
- Push(vm,l);
-}
-/* GFV[] Get freedom vector
- * Code Range 0x0D
- * Pops -
- * Pushes x: x component of freedom vector (2.14 padded with zeros)
- * y: y component of freedom vector (2.14 padded with zeros)
- * Gets freedom vector
- */
-void Interp_GFV(VirtualMachine *vm)
-{
- ULONG l;
-
- l = (ULONG) vm->gstate.freedom_vector.x;
- Push(vm,l);
- l = (ULONG) vm->gstate.freedom_vector.y;
- Push(vm,l);
-}
-/* SRP0[] Set reference point 0
- * Code Range 0x10
- * Pops p: point number (ULONG)
- * Pushes -
- * Sets rp0
- * Affects IP,MDAP,MIAP,MIRP,MSIRP,SHC,SHE,SHP
- */
-void Inpter_SRP0(VirtualMachine *vm)
-{
- vm->gstate.rp0 = Pop(vm);
-}
-/* SRP1[] Set reference point 1
- * Code Range 0x11
- * Pops p: point number (ULONG)
- * Pushes -
- * Sets rp1
- * Affects IP,MDAP,MIAP,MIRP,MSIRP,SHC,SHE,SHP
- */
-void Inpter_SRP1(VirtualMachine *vm)
-{
- vm->gstate.rp1 = Pop(vm);
-}
-/* SRP2[] Set reference point 2
- * Code Range 0x12
- * Pops p: point number (ULONG)
- * Pushes -
- * Sets rp2
- * Affects IP,MDAP,MIAP,MIRP,MSIRP,SHC,SHE,SHP
- */
-void Inpter_SRP2(VirtualMachine *vm)
-{
- vm->gstate.rp2 = Pop(vm);
-}
-/* SZP0[] Set zone pointer 0
- * Code Range 0x13
- * Pops n: zone number (ULONG)
- * Pushes -
- * Sets zp0
- * Affects ALIGNPTS,ALIGNRP,DELTAP1,DELTAP2,DELTAP3,IP,ISECT,MD,MDAP,MIAP,
- * MIRP,MSIRP,SHC,SHE,SHP,UTP
- */
-void Inpterp_SZP0(VirtualMachine *vm)
-{
- vm->gstate.zp0 = Pop(vm);
-}
-/* SZP1[] Set zone pointer 1
- * Code Range 0x14
- * Pops n: zone number (ULONG)
- * Pushes -
- * Sets zp1
- * Affects ALIGNPTS,ALIGNRP,DELTAP1,DELTAP2,DELTAP3,IP,ISECT,MD,MDAP,MIAP,
- * MIRP,MSIRP,SHC,SHE,SHP,UTP
- */
-void Inpterp_SZP1(VirtualMachine *vm)
-{
- vm->gstate.zp1 = Pop(vm);
-}
-/* SZP2[] Set zone pointer 2
- * Code Range 0x15
- * Pops n: zone number (ULONG)
- * Pushes -
- * Sets zp2
- * Affects ALIGNPTS,ALIGNRP,DELTAP1,DELTAP2,DELTAP3,IP,ISECT,MD,MDAP,MIAP,
- * MIRP,MSIRP,SHC,SHE,SHP,UTP
- */
-void Inpterp_SZP2(VirtualMachine *vm)
-{
- vm->gstate.zp2 = Pop(vm);
-}
-/* SZPS[] Set zone pointerS
- * Code Range 0x16
- * Pops n: zone number (ULONG)
- * Pushes -
- * Sets zp0,zp1,zp2
- * Affects ALIGNPTS,ALIGNRP,DELTAP1,DELTAP2,DELTAP3,IP,ISECT,MD,MDAP,MIAP,
- * MIRP,MSIRP,SHC,SHE,SHP,UTP
- */
-void Inpterp_SZPS(VirtualMachine *vm)
-{
- vm->gstate.zp0 = vm->gstate.zp1 = vm->gstate.zp2 = Pop(vm);
-}
-/* RTHG[] Round to half grid
- * Code Range 0x19
- * Pops -
- * Pushes -
- * Sets round_state
- * Affects MDAP,MDRP,MDIAP,MIRP,ROUND
- * Uses freedom_vector, projection_vetor
- */
-void Interp_RTHG(VirtualMachine *vm)
-{
- vm->gstate.round_state = 0;
-}
-/* RTG[] Round to grid
- * Code Range 0x18
- * Pops -
- * Pushes -
- * Sets round_state
- * Affects MDAP,MDRP,MDIAP,MIRP,ROUND
- * Uses freedom_vector, projection_vetor
- */
-void Interp_RTG(VirtualMachine *vm)
-{
- vm->gstate.round_state = 1;
-}
-/* RTDG[] Round to double grid
- * Code Range 0x3D
- * Pops -
- * Pushes -
- * Sets round_state
- * Affects MDAP,MDRP,MDIAP,MIRP,ROUND
- * Uses freedom_vector, projection_vetor
- */
-void Interp_RTDG(VirtualMachine *vm)
-{
- vm->gstate.round_state = 2;
-}
-/* RTHG[] Round down to grid
- * Code Range 0x7D
- * Pops -
- * Pushes -
- * Sets round_state
- * Affects MDAP,MDRP,MDIAP,MIRP,ROUND
- * Uses freedom_vector, projection_vetor
- */
-void Interp_RDTG(VirtualMachine *vm)
-{
- vm->gstate.round_state = 3;
-}
-/* RUTG[] Round up to grid
- * Code Range 0x7C
- * Pops -
- * Pushes -
- * Sets round_state
- * Affects MDAP,MDRP,MDIAP,MIRP,ROUND
- * Uses freedom_vector, projection_vetor
- */
-void Interp_RUTG(VirtualMachine *vm)
-{
- vm->gstate.round_state = 4;
-}
-/* ROFF[] Round off
- * Code Range 0x7A
- * Pops -
- * Pushes -
- * Sets round_state
- * Affects MDAP,MDRP,MDIAP,MIRP,ROUND
- * Uses freedom_vector, projection_vetor
- */
-void Interp_ROFF(VirtualMachine *vm)
-{
- vm->gstate.round_state = 5;
-}
-/* SROUND[] Super round
- * Code Range 0x76
- * Pops n: number (ULONG) decomposed to obtain period, phase, threshold
- * Pushes -
- * Sets round_state
- * Affects MDAP,MDRP,MIAP,MIRP,ROUND
- */
-void Interp_SROUND(VirtualMachine *vm)
-{
- ULONG n;
-
- n = Pop(vm);
- /* not finished yet */
-}
-/* S45ROUND[] Super round 45 degrees
- * Code Range 0x77
- * Pops n: number (ULONG) decomposed to obtain period, phase, threshold
- * Pushes -
- * Sets round_state
- * Affects MDAP,MDRP,MIAP,MIRP,ROUND
- */
-void Interp_S45ROUND(VirtualMachine *vm)
-{
- ULONG n;
-
- n = Pop(vm);
- /* not finished yet */
-}
-/* SLOOP[] Set LOOP variable
- * Code Range 0x17
- * Pops n: value for loop graphics state variable
- * Pushes -
- * Set loop
- * Affects ALIGNRP,FLIPPT,IP,SHP,SHIP
- */
-void Interp_SLOOP(VirtualMachine *vm)
-{
- vm->gstate.loop = Pop(vm);
-}
-/* SMD[] Set minimum_distance
- * Code Range 0x1a
- * Pops distance: value for minimum_distance (F26Dot6)
- * Pushes -
- * Sets minimum_distance
- */
-void Interp_SMD(VirtualMachine *vm)
-{
- vm->gstate.minimum_distance = Pop(vm);
-}
-/* INSTCTRL[] Instruction execution control
- * Code Range 0x8E
- * Pops s: selector flags
- * value: USHORT padded to 32 bits used to set value of
- * instruction control
- * Pushes -
- * Sets instruction_control
- */
-void Interp_INSTCTRL(VirtualMachine *vm)
-{
- ULONG flag;
-
- flag = Pop(vm);
- vm->gstate.instruction_control = Pop(vm);
- /* not finished yet */
-}
-/* SCANCTRL[] Scan conversion cotrol
- * Code Range 0x85
- * Pops n: flags indication when to turn on dropout mode (16 bits padded
- * to 32 bits)
- * Pushes -
- * Sets scan_control
- */
-void Interp_SCANCTRL(VirtualMachine *vm)
-{
- USHORT flag;
-
- flag = Pop(vm);
- /* not finished yet */
-}
-/* SCANTYPE[] Scantype
- * Code Range 0x8D
- * Pops n: 16 bit interger
- * Pushes -
- * Sets scan_control
- */
-void Interp_SCANTYPE(VirtualMachine *vm)
-{
- /* not finished yet */
-}
-/* SCVTCI[] Set control value table cut in
- * Code Range 0x1D
- * Pops n: value for cut_in (F26Dot6)
- * Pushes -
- * Sets control_value_cut_in
- * Affects MIAP,MIRP
- */
-void Interp_SCVTCI(VirtualMachine *vm)
-{
- vm->gstate.control_value_cut_in = Pop(vm);
-}
-/* SSWCI[] Single width cut in
- * Code Range 0x1E
- * Pops n: value for single_width_cut_in
- * Pushes -
- * Sets signel_width_cut_in
- * Affects MIAP,MIRP
- */
-void Interp_SSWCI(VirtualMachine *vm)
-{
- vm->gstate.single_width_cut_in = Pop(vm);
-}
-/* SSW[] Set single width
- * Code Range 0x1F
- * Pops n: value for single_width_value (FUnits)
- * Pushes -
- * Sets single_width_value
- */
-void Interp_SSW(VirtualMachine *vm)
-{
- vm->gstate.single_width_cut_in = Pop(vm);
-}
-/* FLIPON[] Set the auto_flip on
- * Code Range 0x4D
- * Pops -
- * Pushes -
- * Sets auto_flip
- * Affects MIRP
- */
-void Interp_FLIPON(VirtualMachine *vm)
-{
- vm->gstate.auto_flip = 1;
-}
-/* FLIPOFF[] Set the auto_flip off
- * Code Range 0x4E
- * Pops -
- * Pushes -
- * Sets auto_flip
- * Affects MIRP
- */
-void Interp_FLIPOFF(VirtualMachine *vm)
-{
- vm->gstate.auto_flip = 0;
-}
-/* SDB Set delta_base in the graphics state
- * Code Range 0x5E
- * Pops n: value for delta_base (ULONG)
- * Pushes -
- * Sets delta_base
- * Affects DELTAP1,DELTAP2,DELTAP3,DELTAC1,DELTAC2,DELTAC3
- */
-void Interp_SDB(VirtualMachine *vm)
-{
- vm->gstate.delta_base = Pop(vm);
-}
-/* SDS Set delta_shift in the graphics state
- * Code Range 0x5F
- * Pops n: value for delat_shift (ULONG)
- * Sets delta_shift
- * Affects DELTAP1,DELTAP2,DELTAP3,DELATC1,DELTAC2,DELTAC3
- */
-void Interp_SDS(VirtualMachine *vm)
-{
- vm->gstate.delta_shift = Pop(vm);
-}
-
-/* Reading and writing data */
-
-/* GC[a] Get coordinate projected on to the projection_vector
- * Code Range 0x46 - 0x47
- * a 0: use current position of point p
- * 1: use the position of point p in the original outline
- * Pops p: point number (ULONG)
- * Pushes value: coordinate location (F26Dot6)
- * Uses zp2,projection
- */
-void Interp_GC(VirtualMachine *vm)
-{
- ULONG point;
- TTFVector pos;
-
- point = Pop(vm);
-
- /* not finished yet */
-}
-/* SCFS[] Sets coordinate from the stack using projection_vector and
- * freedom_vector
- * Code Range 0x48
- * Pops value: distance from origin to move point (F26Dot6)
- * p: point number (ULONG)
- * Pushes -
- * Uses zp2, freedom_vector, projection_vector
- */
-void Interp_SCFS(VirtualMachine *vm)
-{
-#ifdef WIN32
- __int64 tmp;
-#else
- long long tmp;
-#endif
- F26Dot6 value;
- ULONG point;
-
- value = Pop(vm);
- point = Pop(vm);
- /* not finished yet */
-}
-/* MD[a] Measure Distance
- *
- * Code Range 0x49-0x4A
- * a 0: measure distance in grid-fitted outline
- * 1: measure distance in original outline
- * Pops p1: point number (ULONG)
- * p2: point number (ULONG);
- * Pushes distance (F26Dot6)
- * uses zp1 with point p1, zp2 withe point p2, projection_vector
- */
-void Interp_MD(VirtualMachine *vm)
-{
- ULONG p1,p2;
- BYTE opcode;
- TTFUnitVector vect;
-
- opcode = (vm->iStream)[vm->ip];
- p1 = Pop(vm);
- p2 = Pop(vm);
- switch (opcode)
- {
- /* not finished yet */
- case 0x49:
- break;
- case 0x4A:
- break;
- }
- /* not finished yet */
-}
-/* MPPEM[] Measure Pixel Per EM
- *
- * Code Range 0x4B
- * Pops -
- * Pushes ppem:pixel per em (ULONG)
- */
-void Interp_MPPEM(VirtualMachine *vm)
-{
- /* not finished yet */
-}
-/* MPS[] Measure Point Size
- *
- * Code Range 0x4C
- * Pops -
- * Pushes pointSize: the size in points of the current glyph (F26Dot6)
- */
-void Interp_MPS(VirtualMachine *vm)
-{
- F26Dot6 pointSize = vm->pointsize;
-
- Push(vm,pointSize);
-}
-
-/* Mananging Outlines */
-
-/* FLIPPT[] Flip point
- * Code Range 0x80
- * Pops p: point number (ULONG)
- * Pushes -
- * Uses loop, p is referenced in zp0
- */
-void Interp_FLIPPT(VirtualMachine *vm)
-{
- ULONG point;
-
- point = Pop(vm);
-
- /* not finished yet */
-}
-/* FLIPRGON[] Filp range on
- * Code Range 0x81
- * Pops hightpoint: highest point number in range of points to be flipped
- * lowpoint: lowest point number in range of points to be flipped
- * both are ULONG
- * Pushes -
- */
-void Interp_FLIPRGON(VirtualMachine *vm)
-{
-
-}
diff --git a/Build/source/texk/ttfdump/libttf/kern.c b/Build/source/texk/ttfdump/libttf/kern.c
deleted file mode 100644
index 5ae636d9d44..00000000000
--- a/Build/source/texk/ttfdump/libttf/kern.c
+++ /dev/null
@@ -1,161 +0,0 @@
-/* kern.c -- Kerning Table
- * Copyright (C) 1996 Li-Da Lho, All right reserved
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "ttf.h"
-#include "ttfutil.h"
-
-/* $Id: kern.c,v 1.1.1.1 1998/06/05 07:47:52 robert Exp $ */
-
-static void ttfLoadKERN(FILE *fp,KERNPtr kern,ULONG offset);
-
-void ttfInitKERN(TTFontPtr font)
-{
- ULONG tag = FT_MAKE_TAG ('k', 'e', 'r', 'n');
- TableDirPtr ptd;
-
- if ((ptd = ttfLookUpTableDir(tag,font)) != NULL)
- {
- font->kern = XCALLOC1 (KERN);
- ttfLoadKERN(font->fp,font->kern,ptd->offset);
- }
-}
-
-static void ttfLoadKERN (FILE *fp,KERNPtr kern,ULONG offset)
-{
- int i;
-
- xfseek(fp, offset, SEEK_SET, "ttfLoadKERN");
-
- kern->version = ttfGetUSHORT(fp);
- kern->nTables = ttfGetUSHORT(fp);
-
- kern->subtable = XCALLOC (kern->nTables, KernSubtable);
-
- for (i=0;i<kern->nTables;i++)
- {
- struct kernpair *pairs;
- int j,n;
- (kern->subtable+i)->version = ttfGetUSHORT(fp);
- (kern->subtable+i)->length = ttfGetUSHORT(fp);
- (kern->subtable+i)->coverage = ttfGetUSHORT(fp);
-
- switch ((kern->subtable+i)->coverage >> 8)
- {
- case 0:
- (kern->subtable+i)->kern.kern0.nPairs = n =
- ttfGetUSHORT(fp);
- (kern->subtable+i)->kern.kern0.searchRange =
- ttfGetUSHORT(fp);
- (kern->subtable+i)->kern.kern0.entrySelector =
- ttfGetUSHORT(fp);
- (kern->subtable+i)->kern.kern0.rangeShift =
- ttfGetUSHORT(fp);
- (kern->subtable+i)->kern.kern0.pairs = pairs =
- XCALLOC (n, struct kernpair);
-
- for (j=0;j<n;j++)
- {
- (pairs+j)->left = ttfGetUSHORT(fp);
- (pairs+j)->right = ttfGetUSHORT(fp);
- (pairs+j)->value = ttfGetFWord(fp);
- }
- break;
- case 2:
- /* not implemented yet */
- break;
- default:
- /* do nothing */
- break;
- }
- }
-}
-
-void ttfPrintKERN(FILE *fp,KERNPtr kern)
-{
- int i;
-
- fprintf(fp,"'kern' Table - Kerning Data\n");
- fprintf(fp,"---------------------------\n");
- fprintf(fp,"'kern' Version:\t %d\n", kern->version);
- fprintf(fp,"Number of subtables:\t %d\n\n",kern->nTables);
-
- for (i=0;i<kern->nTables;i++)
- {
- struct kernpair *pairs;
- int j,n;
-
- fprintf(fp,"\t Subtable format \t %d\n",
- (kern->subtable+i)->coverage >> 8);
- fprintf(fp,"\t Subtable version \t %d\n",
- (kern->subtable+i)->version);
- fprintf(fp,"\t Bytes in subtable \t %d\n",
- (kern->subtable+i)->length);
- fprintf(fp,"\t Coverage bits \t 0x%x\n",
- (kern->subtable+i)->coverage);
- switch ((kern->subtable+i)->coverage >> 8)
- {
- case 0:
- n = (kern->subtable+i)->kern.kern0.nPairs;
- pairs = (kern->subtable+i)->kern.kern0.pairs;
-
- fprintf(fp,"\t Number of pairs %d\n",n);
- fprintf(fp,"\t Search Range %d\n",
- (kern->subtable+i)->kern.kern0.searchRange);
- fprintf(fp,"\t Entry Selector %d\n",
- (kern->subtable+i)->kern.kern0.entrySelector);
- fprintf(fp,"\t Range Shift %d\n",
- (kern->subtable+i)->kern.kern0.rangeShift);
-
- fprintf(fp,"\t Left Glyph \t Right Glyph \t Kern Move\n");
- fprintf(fp,"\t ---------- \t ----------- \t ---------\n");
-
- for (j=0;j<n;j++)
- {
- fprintf(fp,"\t\t %d \t\t %d \t\t %d\n",
- (pairs+j)->left,(pairs+j)->right,
- (pairs+j)->value);
- }
- break;
- case 2:
- /* not implemented yet */
- break;
- default:
- /* do nothing */
- break;
- }
- fprintf(fp,"\n");
- }
-
-}
-
-void ttfFreeKERN(KERNPtr kern)
-{
- int i;
-
- if (kern != NULL)
- {
- for (i=0;i<kern->nTables;i++)
- {
- switch ((kern->subtable+i)->coverage >> 8)
- {
- case 0:
- free((kern->subtable+i)->kern.kern0.pairs);
- break;
- case 2:
- /* not implemented yet */
- break;
- default:
- /* do nothing */
- break;
- }
- }
- free(kern->subtable);
- free(kern);
- }
-}
diff --git a/Build/source/texk/ttfdump/libttf/loca.c b/Build/source/texk/ttfdump/libttf/loca.c
deleted file mode 100644
index 0a170006389..00000000000
--- a/Build/source/texk/ttfdump/libttf/loca.c
+++ /dev/null
@@ -1,95 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "ttf.h"
-#include "ttfutil.h"
-
-/* $Id: loca.c,v 1.1.1.1 1998/06/05 07:47:52 robert Exp $ */
-
-static LOCAPtr ttfAllocLOCA(TTFontPtr font);
-static void ttfLoadLOCA(FILE *fp,LOCAPtr loca,ULONG offset);
-
-void ttfInitLOCA(TTFontPtr font)
-{
- ULONG tag = FT_MAKE_TAG ('l', 'o', 'c', 'a');
- TableDirPtr ptd;
-
- if ((ptd = ttfLookUpTableDir(tag,font)) != NULL)
- {
- font->loca = (LOCAPtr) ttfAllocLOCA(font);
- ttfLoadLOCA(font->fp,font->loca,ptd->offset);
- }
-}
-static LOCAPtr ttfAllocLOCA(TTFontPtr font)
-{
- USHORT n=0;
- LOCAPtr loca;
-
- loca = XCALLOC1 (LOCA);
- loca->indexToLocFormat = font->head->indexToLocFormat;
- loca->numGlyphs = n = font->maxp->numGlyphs;
-
- n += 1;/* the number of loca entry is numberOfGlyph+1 */
- loca->offset = XCALLOC (n, ULONG);
-
- return loca;
-}
-static void ttfLoadLOCA(FILE *fp,LOCAPtr loca,ULONG offset)
-{
- /* warning: the number of loca entry is numberOfGlyph+1 !! */
- USHORT i,n = loca->numGlyphs+1;
-
- xfseek(fp, offset, SEEK_SET, "ttfLoadLOCA");
-
- switch (loca->indexToLocFormat)
- {
- case LOCA_OFFSET_SHORT:
- for (i=0;i<n;i++)
- {
- (loca->offset)[i] = (ULONG) ttfGetUSHORT(fp)*2;
- }
- break;
- case LOCA_OFFSET_LONG:
- ttfReadULONG (loca->offset, n, fp);
- break;
- }
-}
-
-void ttfPrintLOCA(FILE *fp,LOCAPtr loca)
-{
- USHORT i;
-
- if (loca)
- {
- fprintf(fp,"'loca' Table - Index to Location\n");
- fprintf(fp,"--------------------------------\n");
- for (i=0;i<loca->numGlyphs;i++)
- {
- fprintf(fp,"\t Idx %6d -> GlyphOffset 0x%08x\n",i,
- (loca->offset)[i]);
- }
- fprintf (fp,"\t Ended at 0x%08x\n",(loca->offset)[loca->numGlyphs]);
- }
-}
-
-void ttfFreeLOCA(LOCAPtr loca)
-{
- if (loca)
- {
- free (loca->offset);
- free (loca);
- }
-}
-
-ULONG ttfLookUpGlyfLOCA(LOCAPtr loca,USHORT idx)
-{
- /* out of bound or it is a non-glyph character */
- if (idx >= loca->numGlyphs ||
- loca->offset[idx] == loca->offset[idx+1])
- return (loca->offset)[0];
-
- return (loca->offset)[idx];
-}
diff --git a/Build/source/texk/ttfdump/libttf/ltsh.c b/Build/source/texk/ttfdump/libttf/ltsh.c
deleted file mode 100644
index 45c6f86e559..00000000000
--- a/Build/source/texk/ttfdump/libttf/ltsh.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* ltsh.c -- Linear Threshold table
- * Copyright (C) 1996 Li-Da Lho, All right reserved
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "ttf.h"
-#include "ttfutil.h"
-
-/* $Id: ltsh.c,v 1.1.1.1 1998/06/05 07:47:52 robert Exp $ */
-
-static void ttfLoadLTSH(FILE *fp,LTSHPtr ltsh,ULONG offset);
-
-void ttfInitLTSH(TTFontPtr font)
-{
- ULONG tag = FT_MAKE_TAG ('L', 'T', 'S', 'H');
- TableDirPtr ptd;
-
- if ((ptd = ttfLookUpTableDir(tag,font)) != NULL)
- {
- font->ltsh = XCALLOC1 (LTSH);
- ttfLoadLTSH(font->fp,font->ltsh,ptd->offset);
- }
-}
-
-static void ttfLoadLTSH (FILE *fp,LTSHPtr ltsh,ULONG offset)
-{
- xfseek(fp, offset, SEEK_SET, "ttfLoadLTSH");
-
- ltsh->version = ttfGetUSHORT(fp);
- ltsh->numGlyphs = ttfGetUSHORT(fp);
-
- ltsh->yPels = ttfMakeBYTE (ltsh->numGlyphs, fp);
-}
-
-void ttfPrintLTSH(FILE *fp,LTSHPtr ltsh)
-{
- int i;
-
- fprintf(fp,"'LTSH' Table - Linear Threshold Table\n");
- fprintf(fp,"-------------------------------------\n");
- fprintf(fp,"'LTSH' Version:\t %d\n",ltsh->version);
- fprintf(fp,"Number of Glyphs:\t %d\n",ltsh->numGlyphs);
- fprintf(fp,"\t Glyph # \t Threshold\n");
-
- for (i=0;i<ltsh->numGlyphs;i++)
- {
- fprintf(fp,"\t %d. \t\t %d\n",i,ltsh->yPels[i]);
- }
-}
-
-void ttfFreeLTSH(LTSHPtr ltsh)
-{
- if (ltsh != NULL)
- {
- free(ltsh->yPels);
- free(ltsh);
- }
-}
diff --git a/Build/source/texk/ttfdump/libttf/maxp.c b/Build/source/texk/ttfdump/libttf/maxp.c
deleted file mode 100644
index 1eadc12108a..00000000000
--- a/Build/source/texk/ttfdump/libttf/maxp.c
+++ /dev/null
@@ -1,75 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "ttf.h"
-#include "ttfutil.h"
-
-/* $Id: maxp.c,v 1.1.1.1 1998/06/05 07:47:52 robert Exp $ */
-
-static void ttfLoadMAXP(FILE *fp,MAXPPtr maxp,ULONG offset);
-
-void ttfInitMAXP(TTFontPtr font)
-{
- ULONG tag = FT_MAKE_TAG ('m', 'a', 'x', 'p');
- TableDirPtr ptd;
-
- if ((ptd = ttfLookUpTableDir(tag,font)) != NULL)
- {
- font->maxp = XCALLOC1 (MAXP);
- ttfLoadMAXP(font->fp,font->maxp,ptd->offset);
- }
-}
-
-static void ttfLoadMAXP(FILE *fp,MAXPPtr maxp,ULONG offset)
-{
- xfseek(fp, offset, SEEK_SET, "ttfLoadMAXP");
-
- maxp->version = ttfGetFixed(fp);
- maxp->numGlyphs = ttfGetUSHORT(fp);
- maxp->maxPoints = ttfGetUSHORT(fp);
- maxp->maxContours = ttfGetUSHORT(fp);
- maxp->maxCompositePoints = ttfGetUSHORT(fp);
- maxp->maxCompositeContours = ttfGetUSHORT(fp);
- maxp->maxZones = ttfGetUSHORT(fp);
- maxp->maxTwilightPoints = ttfGetUSHORT(fp);
- maxp->maxStorage = ttfGetUSHORT(fp);
- maxp->maxFunctionDefs = ttfGetUSHORT(fp);
- maxp->maxInstructionDefs = ttfGetUSHORT(fp);
- maxp->maxStackElements = ttfGetUSHORT(fp);
- maxp->maxSizeOfInstructions = ttfGetUSHORT(fp);
- maxp->maxComponentElements = ttfGetUSHORT(fp);
- maxp->maxComponentDepth = ttfGetUSHORT(fp);
-}
-
-void ttfPrintMAXP(FILE *fp,MAXPPtr maxp)
-{
- int b[2];
-
- FixedSplit(maxp->version,b);
-
- fprintf(fp,"'maxp' Table - Maximum Profile\n");
- fprintf(fp,"------------------------------\n");
- fprintf(fp,"\t 'maxp' version:\t %d.%d\n",b[1],b[0]);
- fprintf(fp,"\t numGlyphs:\t\t %d\n",maxp->numGlyphs);
- fprintf(fp,"\t maxPoints:\t\t %d\n",maxp->maxPoints);
- fprintf(fp,"\t maxContours:\t\t %d\n",maxp->maxContours);
- fprintf(fp,"\t maxCompositePoints:\t %d\n",maxp->maxCompositePoints);
- fprintf(fp,"\t maxCompositeContours:\t %d\n",maxp->maxCompositeContours);
- fprintf(fp,"\t maxZones:\t\t %d\n",maxp->maxZones);
- fprintf(fp,"\t maxTwilightPoints:\t %d\n",maxp->maxTwilightPoints);
- fprintf(fp,"\t maxStorage:\t\t %d\n",maxp->maxStorage);
- fprintf(fp,"\t maxFunctionDefs:\t %d\n",maxp->maxFunctionDefs);
- fprintf(fp,"\t maxInstructionDefs:\t %d\n",maxp->maxInstructionDefs);
- fprintf(fp,"\t maxStackElements:\t %d\n",maxp->maxStackElements);
- fprintf(fp,"\t maxSizeOfInstructions:\t %d\n",maxp->maxSizeOfInstructions);
- fprintf(fp,"\t maxComponentElements:\t %d\n",maxp->maxComponentElements);
- fprintf(fp,"\t maxCompoenetDepth:\t %d\n",maxp->maxComponentDepth);
-}
-
-void ttfFreeMAXP(MAXPPtr maxp)
-{
- free(maxp);
-}
diff --git a/Build/source/texk/ttfdump/libttf/name.c b/Build/source/texk/ttfdump/libttf/name.c
deleted file mode 100644
index 6c8c6c64d1e..00000000000
--- a/Build/source/texk/ttfdump/libttf/name.c
+++ /dev/null
@@ -1,165 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-#include "ttf.h"
-#include "ttfutil.h"
-
-/* $Id: name.c,v 1.1.1.1 1998/06/05 07:47:52 robert Exp $ */
-
-static void ttfLoadNAME(FILE *fp,NAMEPtr name,ULONG offset);
-static void ttfLoadNameRecord(FILE *fp,NameRecordPtr rec,ULONG offset);
-static void ttfPrintNameRecord(FILE *fp,NameRecordPtr rec);
-static void ttfLoadNameRecordData(FILE *fp,NameRecordPtr rec,ULONG offset);
-static void ttfPrintNameRecordData(FILE *fp,NameRecordPtr rec);
-static void ttfFreeNameRecordData(NameRecordPtr rec);
-static void HexDump(char *p,char *hex,char *asc,int len);
-
-void ttfInitNAME(TTFontPtr font)
-{
- ULONG tag = FT_MAKE_TAG ('n', 'a', 'm', 'e');
- TableDirPtr ptd;
-
- if ((ptd = ttfLookUpTableDir(tag,font)) != NULL)
- {
- font->name = XCALLOC1 (NAME);
- ttfLoadNAME(font->fp,font->name,ptd->offset);
- }
-}
-
-static void ttfLoadNAME(FILE *fp,NAMEPtr name,ULONG offset)
-{
- USHORT i,n;
- ULONG pos;
-
- xfseek(fp, offset, SEEK_SET, "ttfLoadNAME");
-
- name->format = ttfGetUSHORT(fp);
- name->numberOfRecords = n = ttfGetUSHORT(fp);
- name->offset = ttfGetUSHORT(fp);
-
- name->NameRecords = XCALLOC (n, NameRecord);
-
- pos = offset + sizeof(USHORT)*3;
-
- for(i=0;i<n;i++,pos+=12 /*sizeof(NameRecord)*/)
- {
- ttfLoadNameRecord(fp,name->NameRecords+i,pos);
- ttfLoadNameRecordData(fp,name->NameRecords+i,offset+name->offset);
- }
-}
-void ttfPrintNAME(FILE *fp,NAMEPtr name)
-{
- USHORT i;
-
- fprintf(fp,"'name' Table - Naming Table\n");
- fprintf(fp,"---------------------------\n");
- fprintf(fp,"\t Format:\t\t %d\n",name->format);
- fprintf(fp,"\t Number of Record:\t %d\n",name->numberOfRecords);
- fprintf(fp,"\t Storage offset:\t %d\n",name->offset);
-
- for (i=0;i<name->numberOfRecords;i++)
- {
- fprintf(fp,"Name table %3d.\t",i);
- ttfPrintNameRecord(fp,name->NameRecords+i);
- }
-
-}
-void ttfFreeNAME(NAMEPtr name)
-{
- USHORT i;
-
- if (!name)
- return;
-
- for (i=0;i<name->numberOfRecords;i++)
- ttfFreeNameRecordData(name->NameRecords+i);
- free(name->NameRecords);
- free(name);
-}
-/* offset: address of the beginning of the name record */
-static void ttfLoadNameRecord(FILE *fp,NameRecordPtr rec,ULONG offset)
-{
- xfseek(fp, offset, SEEK_SET, "ttfLoadNameRecord");
-
- rec->PlatformID = ttfGetUSHORT(fp);
- rec->EncodingID = ttfGetUSHORT(fp);
- rec->LanguageID = ttfGetUSHORT(fp);
- rec->NameID = ttfGetUSHORT(fp);
- rec->length = ttfGetUSHORT(fp);
- rec->offset = ttfGetUSHORT(fp);
-}
-static void ttfPrintNameRecord(FILE *fp,NameRecordPtr rec)
-{
- fprintf(fp," PlatformID:\t %d\n",rec->PlatformID);
- fprintf(fp,"\t\t EncodingID:\t %d\n",rec->EncodingID);
- fprintf(fp,"\t\t LanguageID:\t %d\n",rec->LanguageID);
- fprintf(fp,"\t\t NameID:\t %d\n",rec->NameID);
- fprintf(fp,"\t\t Length:\t %d\n",rec->length);
- fprintf(fp,"\t\t Offset:\t %d\n",rec->offset);
- ttfPrintNameRecordData(fp,rec);
-}
-/* ULONG offset: address of the beginning of the actual data (base actually)
- * base: start of data storage, specified by NAME.offset
- * offset: specified by NameRecord.offset */
-static void ttfLoadNameRecordData(FILE *fp,NameRecordPtr rec,ULONG offset)
-{
- ULONG pos;
-
- pos = offset + rec->offset;
- xfseek(fp, pos, SEEK_SET, "ttfLoadNameRecordData");
-
- rec->data = XTALLOC (rec->length, char);
- if (fread(rec->data,sizeof(char),rec->length,fp) != rec->length)
- ttfError("Error when getting Name Record Data\n");
-}
-
-static void ttfPrintNameRecordData(FILE *fp,NameRecordPtr rec)
-{
- USHORT i,j;
- char hexbuf[100],ascbuf[100],*p;
-
- p = rec->data;
- for (i=0;i<rec->length/10;i++,p+=10)
- {
- HexDump(p,hexbuf,ascbuf,10);
- fprintf(fp,"\t\t %s > %s\n",hexbuf,ascbuf);
- }
- HexDump(p,hexbuf,ascbuf,rec->length % 10);
- /* i know that this is ugly, but this makes output beautiful */
- i = strlen(hexbuf);
- for (j=i;j<30;j++)
- {
- hexbuf[j] = ' ';
- }
- fprintf(fp,"\t\t %s > %s\n",hexbuf,ascbuf);
-
-}
-static void HexDump(char *p,char *hex,char *asc,int len)
-{
- int i;
- unsigned char c;
- char buf[100];
-
- *hex = '\0';
- *asc = '\0';
- for (i=0;i<len;i++)
- {
- c = *(p+i);
- sprintf(buf,"%02x ",c);
- strcat(hex,buf);
- if (isprint(c))
- *(asc+i) = c;
- else
- *(asc+i) = '.';
- }
- *(asc+len) = *(hex+len*3) = '\0';
-}
-static void ttfFreeNameRecordData(NameRecordPtr rec)
-{
- free(rec->data);
-}
diff --git a/Build/source/texk/ttfdump/libttf/os2.c b/Build/source/texk/ttfdump/libttf/os2.c
deleted file mode 100644
index 66701e3dc61..00000000000
--- a/Build/source/texk/ttfdump/libttf/os2.c
+++ /dev/null
@@ -1,195 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "ttf.h"
-#include "ttfutil.h"
-
-#define __TTF_OS2
-#include "os2_P.h"
-
-/* $Id: os2.c,v 1.2 1998/07/06 06:07:01 werner Exp $ */
-
-static void ttfLoadOS2(FILE *fp, OS_2Ptr os2, ULONG offset);
-
-void ttfInitOS2(TTFontPtr font)
-{
- ULONG tag = FT_MAKE_TAG ('O', 'S', '/', '2');
- TableDirPtr ptd;
-
- if ((ptd = ttfLookUpTableDir(tag, font)) != NULL)
- {
- font->os2 = XCALLOC1 (OS_2);
- ttfLoadOS2(font->fp, font->os2, ptd->offset);
- }
-}
-
-static void ttfLoadOS2(FILE *fp, OS_2Ptr os2, ULONG offset)
-{
- xfseek(fp, offset, SEEK_SET, "ttfLoadOS2");
-
- os2->version = ttfGetUSHORT(fp);
- os2->xAvgCharWidth = ttfGetSHORT(fp);
- os2->usWeightClass = ttfGetUSHORT(fp);
- os2->usWidthClass = ttfGetUSHORT(fp);
- os2->fsType = ttfGetUSHORT(fp);
- os2->ySubscriptXSize = ttfGetSHORT(fp);
- os2->ySubscriptYSize = ttfGetSHORT(fp);
- os2->ySubscriptXOffset = ttfGetSHORT(fp);
- os2->ySubscriptYOffset = ttfGetSHORT(fp);
- os2->ySuperscriptXSize = ttfGetSHORT(fp);
- os2->ySuperscriptYSize = ttfGetSHORT(fp);
- os2->ySuperscriptXOffset = ttfGetSHORT(fp);
- os2->ySuperscriptYOffset = ttfGetSHORT(fp);
- os2->yStrikeoutSize = ttfGetSHORT(fp);
- os2->yStrikeoutPosition = ttfGetSHORT(fp);
- os2->sFamilyClass = ttfGetSHORT(fp);
-
- if (fread(os2->panose, sizeof(CHAR), 10, fp) != 10)
- ttfError("Error reading PANOSE\n");
-
- os2->ulUnicodeRange1 = ttfGetULONG(fp);
- os2->ulUnicodeRange2 = ttfGetULONG(fp);
- os2->ulUnicodeRange3 = ttfGetULONG(fp);
- os2->ulUnicodeRange4 = ttfGetULONG(fp);
-
- if (fread(os2->achVendID, sizeof(CHAR), 4, fp) != 4)
- ttfError("Error reading achVendID\n");
- os2->achVendID[4] = 0x0;
-
- os2->fsSelection = ttfGetUSHORT(fp);
- os2->usFirstCharIndex = ttfGetUSHORT(fp);
- os2->usLastCharIndex = ttfGetUSHORT(fp);
- os2->sTypoAscender = ttfGetSHORT(fp);
- os2->sTypoDescender = ttfGetSHORT(fp);
- os2->sTypoLineGap = ttfGetSHORT(fp);
- os2->usWinAscent = ttfGetUSHORT(fp);
- os2->usWinDescent = ttfGetUSHORT(fp);
-
- if (os2->version < 0x0001)
- return;
-
- os2->ulCodePageRange1 = ttfGetULONG(fp);
- os2->ulCodePageRange2 = ttfGetULONG(fp);
-
- if (os2->version < 0x0002)
- return;
-
- os2->sxHeight = ttfGetSHORT(fp);
- os2->sCapHeight = ttfGetSHORT(fp);
- os2->usDefaultChar = ttfGetUSHORT(fp);
- os2->usBreakChar = ttfGetUSHORT(fp);
- os2->usMaxContext = ttfGetUSHORT(fp);
-}
-
-/* Index checking for string array elements. */
-#define StrFromInd(str, ind) StringFromIndex(str, sizeof(str) / sizeof(str[0]), (int)ind)
-static inline const char *StringFromIndex(const char **str, size_t sz, int ind)
-{
- return ind >= 0 && ind < sz ? str[ind] : "invalid";
-}
-
-void ttfPrintOS2(FILE *fp,OS_2Ptr os2)
-{
- char buf[80];
-
- fprintf(fp,"'OS/2' Table - OS/2 and Windows Metrics\n");
- fprintf(fp,"---------------------------------------\n");
-
- fprintf(fp,"\t 'OS/2' version:\t %d\n",os2->version);
- fprintf(fp,"\t xAvgCharWidth:\t\t %d\n",os2->xAvgCharWidth);
- fprintf(fp,"\t usWeightClass:\t\t %d \t '%s'\n",os2->usWeightClass,
- StrFromInd(WeightClassName,os2->usWeightClass/100 - 1));
- fprintf(fp,"\t usWidthClass:\t\t %d \t '%s'\n",os2->usWidthClass,
- StrFromInd(WidthClassName,os2->usWidthClass - 1));
- fprintf(fp,"\t fsType:\t\t %d\n",os2->fsType);
- fprintf(fp,"\t ySubscriptXSize:\t %d\n",os2->ySubscriptXSize);
- fprintf(fp,"\t ySubscriptYSize:\t %d\n",os2->ySubscriptYSize);
- fprintf(fp,"\t ySubscriptXOffset:\t %d\n",os2->ySubscriptXOffset);
- fprintf(fp,"\t ySubscriptYOffset:\t %d\n",os2->ySubscriptYOffset);
- fprintf(fp,"\t ySuperscriptXSize:\t %d\n",os2-> ySuperscriptXSize);
- fprintf(fp,"\t ySuperscriptYSize:\t %d\n",os2->ySuperscriptYSize);
- fprintf(fp,"\t ySuperscriptXOffset:\t %d\n",os2->ySuperscriptXOffset);
- fprintf(fp,"\t ySuperscriptYOffset:\t %d\n",os2->ySuperscriptYOffset);
- fprintf(fp,"\t yStrikeoutSize:\t %d\n",os2->yStrikeoutSize);
- fprintf(fp,"\t yStrikeoutPosition\t %d\n",os2->yStrikeoutPosition);
- fprintf(fp,"\t sFamilyClass:\t %d \t subclass = %d\n",
- (os2->sFamilyClass) >> 8,(os2->sFamilyClass) & 0x00ff);
- fprintf(fp,"\t PANOSE:\n");
- fprintf(fp,"\t\t Family Kind:\t %d \t '%s'\n",os2->panose[0],
- StrFromInd(PanoseFamily,os2->panose[0]));
- fprintf(fp,"\t\t Serif Style:\t %d \t '%s'\n",os2->panose[1],
- StrFromInd(PanoseSerif,os2->panose[1]));
- fprintf(fp,"\t\t Weight:\t %d \t '%s'\n",os2->panose[2],
- StrFromInd(PanoseWeight,os2->panose[2]));
- fprintf(fp,"\t\t Proportion:\t %d \t '%s'\n",os2->panose[3],
- StrFromInd(PanoseProportion,os2->panose[3]));
- fprintf(fp,"\t\t Contrast:\t %d \t '%s'\n",os2->panose[4],
- StrFromInd(PanoseContrast,os2->panose[4]));
- fprintf(fp,"\t\t Stroke:\t %d \t '%s'\n",os2->panose[5],
- StrFromInd(PanoseStroke,os2->panose[5]));
- fprintf(fp,"\t\t Arm Style:\t %d \t '%s'\n",os2->panose[6],
- StrFromInd(PanoseArm,os2->panose[6]));
- fprintf(fp,"\t\t Lettreform:\t %d \t '%s'\n",os2->panose[7],
- StrFromInd(PanoseLetterform,os2->panose[7]));
- fprintf(fp,"\t\t Midline:\t %d \t '%s'\n",os2->panose[8],
- StrFromInd(PanoseMidline,os2->panose[8]));
- fprintf(fp,"\t\t X-height:\t %d \t '%s'\n",os2->panose[9],
- StrFromInd(PanoseXHeight,os2->panose[9]));
- fprintf(fp,"\t Unicode Range 1( Bits 0 - 31 ): \t 0x%08x\n",
- os2->ulUnicodeRange1);
- fprintf(fp,"\t Unicode Range 2( Bits 32 - 63 ): \t 0x%08x\n",
- os2->ulUnicodeRange2);
- fprintf(fp,"\t Unicode Range 3( Bits 64 - 95 ): \t 0x%08x\n",
- os2->ulUnicodeRange3);
- fprintf(fp,"\t Unicode Range 4( Bits 96 - 128 ): \t 0x%08x\n",
- os2->ulUnicodeRange4);
-
- fprintf(fp,"\t achVendID:\t\t '%s'\n",os2->achVendID);
-
- buf[0] = 0x0;
- if (os2->fsSelection & FS_FLAGS_REGULAR)
- {
- strcat(buf,"Regular ");
- }
- else
- {
- if (os2->fsSelection & FS_FLAGS_BOLD)
- strcat(buf,"Bold ");
- if (os2->fsSelection & FS_FLAGS_ITALIC)
- strcat(buf,"Italic ");
- }
- fprintf(fp,"\t fsSelection:\t\t 0x%04x \t '%s'\n",os2->fsSelection,buf);
- fprintf(fp,"\t usFirstCharIndex:\t 0x%04x\n ",os2->usFirstCharIndex);
- fprintf(fp,"\t usLastCharIndex:\t 0x%04x\n",os2->usLastCharIndex);
- fprintf(fp,"\t sTypoAscender:\t\t %d\n",os2->sTypoAscender);
- fprintf(fp,"\t sTypoDescender:\t %d\n",os2->sTypoDescender);
- fprintf(fp,"\t sTypoLineGap:\t\t %d\n",os2->sTypoLineGap);
- fprintf(fp,"\t usWinAscent:\t\t %d\n",os2->usWinAscent);
- fprintf(fp,"\t usWinDescent:\t\t %d\n",os2->usWinDescent);
-
- if (os2->version < 0x0001)
- return;
-
- fprintf(fp,"\t CodePage Range 1( Bits 0 - 31 ):\t 0x%08x\n",
- os2->ulCodePageRange1);
- fprintf(fp,"\t CodePage Range 2( Bits 32- 63 ):\t 0x%08x\n",
- os2->ulCodePageRange2);
-
- if (os2->version < 0x0002)
- return;
-
- fprintf(fp,"\t sxHeight:\t\t %d\n",os2->sxHeight);
- fprintf(fp,"\t sCapHeight:\t\t %d\n",os2->sCapHeight);
- fprintf(fp,"\t usDefaultChar:\t\t 0x%04x\n",os2->usDefaultChar);
- fprintf(fp,"\t usBreakChar:\t\t 0x%04x\n",os2->usBreakChar);
- fprintf(fp,"\t usMaxContext:\t\t %d\n",os2->usMaxContext);
-}
-
-void ttfFreeOS2(OS_2Ptr os2)
-{
- free(os2);
-}
diff --git a/Build/source/texk/ttfdump/libttf/otfcommon.c b/Build/source/texk/ttfdump/libttf/otfcommon.c
deleted file mode 100644
index 55cb46c8ff7..00000000000
--- a/Build/source/texk/ttfdump/libttf/otfcommon.c
+++ /dev/null
@@ -1,1083 +0,0 @@
-/* otfcommon.c -- OpenType Common Table Formats
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "ttf.h"
-#include "ttfutil.h"
-
-static LangSysPtr
-otfMakeLangSys (FILE *fp, ULONG offset)
-{
- LangSysPtr langSys = XCALLOC1 (LangSys);
- USHORT lookupOrder;
-
- xfseek (fp, offset, SEEK_SET, "otfMakeLangSys");
-
- if ((lookupOrder = ttfGetUSHORT (fp)) != 0)
- ttfError ("Non-zero lookupOrder\n");
- langSys->reqFeatureIndex = ttfGetUSHORT (fp);
- langSys->featureCount = ttfGetUSHORT (fp);
- langSys->featureIndex = ttfMakeUSHORT (langSys->featureCount, fp);
-
- return langSys;
-}
-
-static void
-otfLoadScriptRecord (FILE *fp, ScriptRecordPtr scriptRecord, ULONG offset)
-{
- int i;
- USHORT dOffset;
- USHORT *lOffset;
-
- xfseek (fp, offset, SEEK_SET, "otfLoadScriptRecord");
-
- dOffset = ttfGetUSHORT (fp);
-
- scriptRecord->langSysCount = ttfGetUSHORT (fp);
- if (scriptRecord->langSysCount) {
- scriptRecord->langSysRecord = XCALLOC (scriptRecord->langSysCount, LangSysRecord);
- lOffset = XTALLOC (scriptRecord->langSysCount, USHORT);
-
- for (i = 0; i < scriptRecord->langSysCount; i++) {
- scriptRecord->langSysRecord[i].tag = ttfGetULONG (fp);
- lOffset[i] = ttfGetUSHORT (fp);
- }
-
- for (i = 0; i < scriptRecord->langSysCount; i++)
- scriptRecord->langSysRecord[i].langSys = otfMakeLangSys (fp, offset + lOffset[i]);
-
- free (lOffset);
- }
-
- if (dOffset)
- scriptRecord->defaultLangSys = otfMakeLangSys (fp, offset + dOffset);
-}
-
-ScriptListPtr
-otfMakeScriptList (FILE *fp, ULONG offset)
-{
- int i;
- USHORT *sOffset;
- ScriptListPtr scriptList = XCALLOC1 (ScriptList);
-
- xfseek (fp, offset, SEEK_SET, "otfMakeScriptList");
-
- scriptList->scriptCount = ttfGetUSHORT (fp);
- scriptList->scriptRecord = XCALLOC (scriptList->scriptCount, ScriptRecord);
- sOffset = XTALLOC (scriptList->scriptCount, USHORT);
-
- for (i = 0; i < scriptList->scriptCount; i++) {
- scriptList->scriptRecord[i].tag = ttfGetULONG (fp);
- sOffset[i] = ttfGetUSHORT (fp);
- }
-
- for (i = 0; i < scriptList->scriptCount; i++)
- otfLoadScriptRecord (fp, &scriptList->scriptRecord[i], offset + sOffset[i]);
-
- free (sOffset);
-
- return scriptList;
-}
-
-static void
-otfPrintLangSys (FILE *fp, LangSysPtr langSys)
-{
- int i;
-
- fprintf (fp, " lang - featureCount: %d\n", langSys->featureCount);
- if (langSys->reqFeatureIndex != 0xffff)
- fprintf (fp, "\t\t reqFeatureIndex: %d\n", langSys->reqFeatureIndex);
- if (langSys->featureCount) {
- fprintf (fp, "\t\t featureIndex: %d", langSys->featureIndex[0]);
- for (i = 1; i < langSys->featureCount; i++)
- fprintf (fp, i % 8 ? ", %d" : ",\n\t\t\t\t%d",
- langSys->featureIndex[i]);
- fprintf (fp, "\n");
- }
-}
-
-static void
-otfPrintScriptRecord (FILE *fp, ScriptRecordPtr scriptRecord)
-{
- int i;
-
- fprintf (fp, "'%s' script - langSysCount: %d\n",
- TagToStr (scriptRecord->tag), scriptRecord->langSysCount);
- if (scriptRecord->defaultLangSys) {
- fprintf (fp, "\t default");
- otfPrintLangSys (fp, scriptRecord->defaultLangSys);
- }
- for (i = 0; i < scriptRecord->langSysCount; i++) {
- fprintf (fp, " %2d. '%s'", i,
- TagToStr (scriptRecord->langSysRecord[i].tag));
- otfPrintLangSys (fp, scriptRecord->langSysRecord[i].langSys);
- }
-}
-
-void
-otfPrintScriptList (FILE *fp, ScriptListPtr scriptList)
-{
- int i;
-
- fprintf (fp, " scriptCount: %d\n", scriptList->scriptCount);
-
- for (i = 0; i < scriptList->scriptCount; i++) {
- fprintf (fp, " %2d. ", i);
- otfPrintScriptRecord (fp, &scriptList->scriptRecord[i]);
- }
- fprintf (fp, "\n");
-}
-
-static void
-otfFreeLangSys (LangSysPtr langSys)
-{
- free (langSys->featureIndex);
- free (langSys);
-}
-
-static void
-otfFreeScriptRecord (ScriptRecordPtr scriptRecord)
-{
- int i;
-
- if (scriptRecord->defaultLangSys)
- otfFreeLangSys (scriptRecord->defaultLangSys);
- for (i = 0; i < scriptRecord->langSysCount; i++)
- otfFreeLangSys (scriptRecord->langSysRecord[i].langSys);
- free (scriptRecord->langSysRecord);
-}
-
-void
-otfFreeScriptList (ScriptListPtr scriptList)
-{
- int i;
-
- for (i = 0; i < scriptList->scriptCount; i++)
- otfFreeScriptRecord (&scriptList->scriptRecord[i]);
- free (scriptList->scriptRecord);
- free (scriptList);
-}
-
-static void
-otfLoadFeatureRecord (FILE *fp, FeatureRecordPtr featureRecord, ULONG offset)
-{
- xfseek (fp, offset, SEEK_SET, "otfLoadFeatureRecord");
-
- featureRecord->featureParams = ttfGetUSHORT (fp);
- featureRecord->lookupCount = ttfGetUSHORT (fp);
- featureRecord->lookupListIndex = ttfMakeUSHORT (featureRecord->lookupCount, fp);
-}
-
-FeatureListPtr
-otfMakeFeatureList (FILE *fp, ULONG offset)
-{
- int i;
- USHORT *fOffset;
- FeatureListPtr featureList = XCALLOC1 (FeatureList);
-
- xfseek (fp, offset, SEEK_SET, "otfMakeFeatureList");
-
- featureList->featureCount = ttfGetUSHORT (fp);
- if (featureList->featureCount) {
- featureList->featureRecord = XCALLOC (featureList->featureCount, FeatureRecord);
- fOffset = XTALLOC (featureList->featureCount, USHORT);
-
- for (i = 0; i < featureList->featureCount; i++) {
- featureList->featureRecord[i].tag = ttfGetULONG (fp);
- fOffset[i] = ttfGetUSHORT (fp);
- }
-
- for (i = 0; i < featureList->featureCount; i++)
- otfLoadFeatureRecord (fp, &featureList->featureRecord[i], offset + fOffset[i]);
-
- free (fOffset);
- }
-
- return featureList;
-}
-
-static void
-otfPrintFeatureRecord (FILE *fp, FeatureRecordPtr featureRecord)
-{
- int i;
-
- fprintf (fp, "'%s' feature - lookupCount: %d\n",
- TagToStr (featureRecord->tag), featureRecord->lookupCount);
- fprintf (fp, "\t\tlookupListIndex: %d", featureRecord->lookupListIndex[0]);
- for (i = 1; i < featureRecord->lookupCount; i++)
- fprintf (fp, i % 8 ? ", %d" : ",\n\t\t\t\t %d",
- featureRecord->lookupListIndex[i]);
- fprintf (fp, "\n");
- if (featureRecord->featureParams)
- fprintf (fp, "\t\tfeatureParams Offset: 0x%04x\n", featureRecord->featureParams);
-}
-
-void
-otfPrintFeatureList (FILE *fp, FeatureListPtr featureList)
-{
- int i;
-
- fprintf (fp, " featureCount: %d\n", featureList->featureCount);
-
- for (i = 0; i < featureList->featureCount; i++) {
- fprintf (fp, " %2d. ", i);
- otfPrintFeatureRecord (fp, &featureList->featureRecord[i]);
- }
- fprintf (fp, "\n");
-}
-
-void
-otfFreeFeatureList (FeatureListPtr featureList)
-{
- int i;
-
- if (featureList->featureCount) {
- for (i = 0; i < featureList->featureCount; i++)
- free (featureList->featureRecord[i].lookupListIndex);
- free (featureList->featureRecord);
- }
- free (featureList);
-}
-
-static void
-otfLoadLookupRecord (FILE *fp, LookupRecordPtr lookupRecord, ULONG offset, MakeLookupFunc makeLookup)
-{
- int i;
- USHORT lookupType;
- USHORT *lOffset;
-
- xfseek (fp, offset, SEEK_SET, "otfLoadLookupRecord");
-
- lookupType = ttfGetUSHORT (fp);
- lookupRecord->lookupFlag = ttfGetUSHORT (fp);
- lookupRecord->subTableCount = ttfGetUSHORT (fp);
- lookupRecord->lookup = XCALLOC (lookupRecord->subTableCount, LookupPtr);
- lOffset = ttfMakeUSHORT (lookupRecord->subTableCount, fp);
- if (lookupRecord->lookupFlag & lookupFlag_UseMarkFilteringSet)
- lookupRecord->markFilteringSet = ttfGetUSHORT (fp);
- for (i = 0; i < lookupRecord->subTableCount; i++)
- lookupRecord->lookup[i] = (*makeLookup) (fp, lookupType, offset + lOffset[i]);
- free (lOffset);
-}
-
-LookupListPtr
-otfMakeLookupList (FILE *fp, ULONG offset, MakeLookupFunc makeLookup)
-{
- int i;
- USHORT *lOffset;
- LookupListPtr lookupList = XCALLOC1 (LookupList);
-
- xfseek (fp, offset, SEEK_SET, "otfMakeLookupList");
-
- lookupList->lookupCount = ttfGetUSHORT (fp);
- if (lookupList->lookupCount) {
- lookupList->lookupRecord = XCALLOC (lookupList->lookupCount, LookupRecord);
- lOffset = ttfMakeUSHORT (lookupList->lookupCount, fp);
-
- for (i = 0; i < lookupList->lookupCount; i++)
- otfLoadLookupRecord (fp, &lookupList->lookupRecord[i], offset + lOffset[i], makeLookup);
-
- free (lOffset);
- }
-
- return lookupList;
-}
-
-void
-otfPrintLookupList (FILE *fp, LookupListPtr lookupList, PrintLookupFunc printLookup)
-{
- int i;
-
- fprintf (fp, " lookupCount: %d\n", lookupList->lookupCount);
-
- for (i = 0; i < lookupList->lookupCount; i++) {
- int j;
-
- fprintf (fp, " %2d. lookupType: %d, lookupFlag: 0x%04x", i,
- lookupList->lookupRecord[i].lookup[0].otf->lookupType,
- lookupList->lookupRecord[i].lookupFlag);
- if (lookupList->lookupRecord[i].lookupFlag & lookupFlag_UseMarkFilteringSet)
- fprintf (fp, ", markFilteringSet: %d", lookupList->lookupRecord[i].markFilteringSet);
- fprintf (fp, "\n\tsubTableCount:\t%d\n", lookupList->lookupRecord[i].subTableCount);
- for (j = 0; j < lookupList->lookupRecord[i].subTableCount; j++) {
- fprintf (fp, " %2d. lookupFormat: %d", j,
- lookupList->lookupRecord[i].lookup[j].otf->lookupFormat);
- (*printLookup) (fp, lookupList->lookupRecord[i].lookup[j]);
- }
- }
- fprintf (fp, "\n");
-}
-
-void
-otfFreeLookupList (LookupListPtr lookupList, FreeLookupFunc freeLookup)
-{
- int i;
-
- if (lookupList->lookupCount) {
- for (i = 0; i < lookupList->lookupCount; i++) {
- int j;
-
- for (j = 0; j < lookupList->lookupRecord[i].subTableCount; j++) {
- (*freeLookup) (lookupList->lookupRecord[i].lookup[j]);
- free (lookupList->lookupRecord[i].lookup[j].otf);
- }
- free (lookupList->lookupRecord[i].lookup);
- }
- free (lookupList->lookupRecord);
- }
- free (lookupList);
-}
-
-CoveragePtr
-otfMakeCoverage (FILE *fp, ULONG offset)
-{
- CoveragePtr coverage;
- int i;
- USHORT format;
-
- xfseek (fp, offset, SEEK_SET, "otfMakeCoverage");
-
- format = ttfGetUSHORT (fp);
- switch (format)
- {
- case 1:
- coverage.coverage1 = XCALLOC1 (Coverage1);
- coverage.coverage1->glyphCount = ttfGetUSHORT (fp);
- coverage.coverage1->glyphArray = ttfMakeUSHORT (coverage.coverage1->glyphCount, fp);
- break;
- case 2:
- coverage.coverage2 = XCALLOC1 (Coverage2);
- coverage.coverage2->rangeCount = ttfGetUSHORT (fp);
- coverage.coverage2->rangeRecord = XTALLOC (coverage.coverage2->rangeCount, RangeRecord);
- for (i = 0; i < coverage.coverage2->rangeCount; i++) {
- coverage.coverage2->rangeRecord[i].start = ttfGetUSHORT (fp);
- coverage.coverage2->rangeRecord[i].end = ttfGetUSHORT (fp);
- coverage.coverage2->rangeRecord[i].startCoverageIndex = ttfGetUSHORT (fp);
- }
- break;
- default:
- ttfError ("Unrecognized coverageFormat\n");
- }
-
- *coverage.format = format;
- return coverage;
-}
-
-void
-otfPrintCoverage (FILE *fp, CoveragePtr coverage)
-{
- int i;
-
- fprintf (fp, "Coverage - ");
- switch (*coverage.format)
- {
- case 1:
- fprintf (fp, "glyphCount: %d\n\t\t glyphArray: %d",
- coverage.coverage1->glyphCount, coverage.coverage1->glyphArray[0]);
- for (i = 1; i < coverage.coverage1->glyphCount; i++)
- fprintf (fp, i % 8 ? ", %d" : ",\n\t\t\t %d",
- coverage.coverage1->glyphArray[i]);
- fprintf (fp, "\n");
- break;
- case 2:
- fprintf (fp, "rangeCount: %d\n", coverage.coverage2->rangeCount);
- for (i = 0; i < coverage.coverage2->rangeCount; i++) {
- fprintf (fp, "\t %2d. start: %d, end: %d, startCoverageIndex: %d\n", i,
- coverage.coverage2->rangeRecord[i].start,
- coverage.coverage2->rangeRecord[i].end,
- coverage.coverage2->rangeRecord[i].startCoverageIndex);
- }
- break;
- default:
- ttfError ("Internal error: otfPrintCoverage\n");
- }
-}
-
-void
-otfFreeCoverage (CoveragePtr coverage)
-{
- switch (*coverage.format)
- {
- case 1:
- free (coverage.coverage1->glyphArray);
- break;
- case 2:
- free (coverage.coverage2->rangeRecord);
- break;
- default:
- ttfError ("Internal error: otfFreeCoverage\n");
- }
- free (coverage.format);
-}
-
-ClassDefPtr
-otfMakeClassDef (FILE *fp, ULONG offset)
-{
- ClassDefPtr classDef;
- int i;
- USHORT format;
-
- xfseek (fp, offset, SEEK_SET, "otfMakeClassDef");
-
- format = ttfGetUSHORT (fp);
- switch (format)
- {
- case 1:
- classDef.classDef1 = XCALLOC1 (ClassDef1);
- classDef.classDef1->startGlyph = ttfGetUSHORT (fp);
- classDef.classDef1->glyphCount = ttfGetUSHORT (fp);
- classDef.classDef1->classValueArray = ttfMakeUSHORT (classDef.classDef1->glyphCount, fp);
- break;
- case 2:
- classDef.classDef2 = XCALLOC1 (ClassDef2);
- classDef.classDef2->classRangeCount = ttfGetUSHORT (fp);
- classDef.classDef2->classRangeRecord = XTALLOC (classDef.classDef2->classRangeCount, ClassRangeRecord);
- for (i = 0; i < classDef.classDef2->classRangeCount; i++) {
- classDef.classDef2->classRangeRecord[i].start = ttfGetUSHORT (fp);
- classDef.classDef2->classRangeRecord[i].end = ttfGetUSHORT (fp);
- classDef.classDef2->classRangeRecord[i].classValue = ttfGetUSHORT (fp);
- }
- break;
- default:
- ttfError ("Unrecognized classDefFormat\n");
- }
-
- *classDef.format = format;
- return classDef;
-}
-
-void
-otfPrintClassDef (FILE *fp, ClassDefPtr classDef)
-{
- int i;
-
- switch (*classDef.format)
- {
- case 1:
- fprintf (fp, "startGlyph: %d, glyphCount: %d\n\t\tclassValueArray ",
- classDef.classDef1->startGlyph, classDef.classDef1->glyphCount);
- for (i = 0; i < classDef.classDef1->glyphCount; i++)
- fprintf (fp, i == 0 ? "- %d" : i % 8 ? ", %d" : ",\n\t\t\t\t %d",
- classDef.classDef1->classValueArray[i]);
- fprintf (fp, "\n");
- break;
- case 2:
- fprintf (fp, "classRangeCount: %d\n", classDef.classDef2->classRangeCount);
- for (i = 0; i < classDef.classDef2->classRangeCount; i++)
- fprintf (fp, "\t\t%2d. start: %d, end: %d, classValue: %d\n", i,
- classDef.classDef2->classRangeRecord[i].start,
- classDef.classDef2->classRangeRecord[i].end,
- classDef.classDef2->classRangeRecord[i].classValue);
- break;
- default:
- ttfError ("Internal error: otfPrintClassDef\n");
- }
-}
-
-void
-otfFreeClassDef (ClassDefPtr classDef)
-{
- switch (*classDef.format)
- {
- case 1:
- free (classDef.classDef1->classValueArray);
- break;
- case 2:
- free (classDef.classDef2->classRangeRecord);
- break;
- default:
- ttfError ("Internal error: otfFreeClassDef\n");
- }
- free (classDef.format);
-}
-
-DevicePtr
-otfMakeDevice (FILE *fp, ULONG offset)
-{
- size_t num;
- DevicePtr device;
- USHORT startSize, endSize, deltaFormat;
-
- xfseek (fp, offset, SEEK_SET, "otfMakeDevice");
-
- startSize = ttfGetUSHORT (fp);
- endSize = ttfGetUSHORT (fp);
- deltaFormat = ttfGetUSHORT (fp);
- if (deltaFormat < 1 || deltaFormat > 3)
- ttfError ("Unrecognized deltaFormat\n");
- num = (endSize - startSize) >> (4 - deltaFormat);
- device = (DevicePtr) xcalloc (1, sizeof (Device) + num * sizeof (USHORT));
- device->startSize = startSize;
- device->endSize = endSize;
- device->deltaFormat = deltaFormat;
- ttfReadUSHORT (device->deltaValue, num + 1, fp);
-
- return device;
-}
-
-void
-otfPrintDevice (FILE *fp, DevicePtr device)
-{
- int i;
- size_t num = (device->endSize - device->startSize) >> (4 - device->deltaFormat);
-
- fprintf (fp, "startSize = %d, endSize = %d, deltaFormat = %d, deltaValue = 0x",
- device->startSize, device->endSize, device->deltaFormat);
- for (i = 0; i < num; i++)
- fprintf (fp, "%04x", device->deltaValue[i]);
- fprintf (fp, "%04x\n", device->deltaValue[num]);
-}
-
-static OtfLookupRecordPtr
-makeOtfLookupRecord (USHORT otfCount, FILE *fp)
-{
- int i;
- OtfLookupRecordPtr otf = XCALLOC (otfCount, OtfLookupRecord);
-
- for (i = 0; i < otfCount; i++) {
- otf[i].sequenceIndex = ttfGetUSHORT (fp);
- otf[i].lookupListIndex = ttfGetUSHORT (fp);
- }
- return otf;
-}
-
-static void
-printOtfLookupRecord (FILE * fp, const char *str, USHORT otfCount, OtfLookupRecordPtr otf)
-{
- int i;
-
- fprintf (fp, "\t%sotfCount: %d\n", str, otfCount);
- for (i = 0; i < otfCount; i++)
- fprintf (fp, "\t%s%2d. sequenceIndex: %d, lookupListIndex: %d\n",
- str, i, otf[i].sequenceIndex, otf[i].lookupListIndex);
-}
-
-static void loadOtfRule (OtfRulePtr otfRule, FILE *fp, ULONG offset)
-{
- xfseek (fp, offset, SEEK_SET, "loadOtfRule");
-
- otfRule->glyphCount = ttfGetUSHORT (fp);
- otfRule->otfCount = ttfGetUSHORT (fp);
- otfRule->input = ttfMakeUSHORT (otfRule->glyphCount - 1, fp);
- otfRule->otf = makeOtfLookupRecord (otfRule->otfCount, fp);
-}
-
-static void loadOtfRuleSet (OtfRuleSetPtr otfRuleSet, FILE *fp, ULONG offset)
-{
- int i;
- USHORT *rOffset;
-
- xfseek (fp, offset, SEEK_SET, "loadOtfRuleSet");
-
- otfRuleSet->otfRuleCount = ttfGetUSHORT (fp);
- rOffset = ttfMakeUSHORT (otfRuleSet->otfRuleCount, fp);
- otfRuleSet->otfRule = XCALLOC (otfRuleSet->otfRuleCount, OtfRule);
- for (i = 0; i < otfRuleSet->otfRuleCount; i++)
- loadOtfRule (&otfRuleSet->otfRule[i], fp, offset + rOffset[i]);
- free (rOffset);
-}
-
-OtfCtx1Ptr makeOTFCtx1 (FILE *fp, ULONG offset)
-{
- int i;
- USHORT cOffset;
- USHORT *rOffset;
- OtfCtx1Ptr otf = XCALLOC1 (OtfCtx1);
-
- cOffset = ttfGetUSHORT (fp);
- otf->otfRuleSetCount = ttfGetUSHORT (fp);
- rOffset = ttfMakeUSHORT (otf->otfRuleSetCount, fp);
- otf->otfRuleSet = XCALLOC (otf->otfRuleSetCount, OtfRuleSet);
- otf->coverage = otfMakeCoverage (fp, offset + cOffset);
- for (i = 0; i < otf->otfRuleSetCount; i++)
- loadOtfRuleSet (&otf->otfRuleSet[i], fp, offset + rOffset[i]);
- free (rOffset);
-
- return otf;
-}
-
-void printOTFCtx1 (FILE *fp, OtfCtx1Ptr otf)
-{
- int i;
-
- fprintf (fp, " - Context %s Simple\n\t ",
- otf->lookupType == 7 ? "Positioning" : "Substitution");
- otfPrintCoverage (fp, otf->coverage);
- fprintf (fp, "\t otfRuleSetCount: %d\n", otf->otfRuleSetCount);
- for (i = 0; i < otf->otfRuleSetCount; i++) {
- int j;
-
- fprintf (fp, "\t %2d. otfRuleCount: %d\n", i, otf->otfRuleSet[i].otfRuleCount);
- for (j = 0; j < otf->otfRuleSet[i].otfRuleCount; j++) {
- int k;
-
- fprintf (fp, "\t %2d. glyphCount: %d ", j,
- otf->otfRuleSet[i].otfRule[j].glyphCount);
- for (k = 0; k < otf->otfRuleSet[i].otfRule[j].glyphCount - 1; k++)
- fprintf (fp, k == 0 ? "- %d" : ", %d", otf->otfRuleSet[i].otfRule[j].input[k]);
- fprintf (fp, "\n");
- printOtfLookupRecord (fp, " ",
- otf->otfRuleSet[i].otfRule[j].otfCount,
- otf->otfRuleSet[i].otfRule[j].otf);
- }
- }
-}
-
-void freeOTFCtx1 (OtfCtx1Ptr otf)
-{
- int i;
-
- otfFreeCoverage (otf->coverage);
- for (i = 0; i < otf->otfRuleSetCount; i++) {
- int j;
-
- for (j = 0; j < otf->otfRuleSet[i].otfRuleCount; j++) {
- free (otf->otfRuleSet[i].otfRule[j].input);
- free (otf->otfRuleSet[i].otfRule[j].otf);
- }
- free (otf->otfRuleSet[i].otfRule);
- }
- free (otf->otfRuleSet);
-}
-
-static void loadOtfClassRule (OtfClassRulePtr otfClassRule, FILE *fp, ULONG offset)
-{
- xfseek (fp, offset, SEEK_SET, "loadOtfClassRule");
-
- otfClassRule->glyphCount = ttfGetUSHORT (fp);
- otfClassRule->otfCount = ttfGetUSHORT (fp);
- otfClassRule->class = ttfMakeUSHORT (otfClassRule->glyphCount - 1, fp);
- otfClassRule->otf = makeOtfLookupRecord (otfClassRule->otfCount, fp);
-}
-
-static void loadOtfClassSet (OtfClassSetPtr otfClassSet, FILE *fp, ULONG offset)
-{
- int i;
- USHORT *sOffset;
-
- xfseek (fp, offset, SEEK_SET, "loadOtfClassSet");
-
- otfClassSet->otfClassRuleCnt = ttfGetUSHORT (fp);
- sOffset = ttfMakeUSHORT (otfClassSet->otfClassRuleCnt, fp);
- otfClassSet->otfClassRule = XCALLOC (otfClassSet->otfClassRuleCnt, OtfClassRule);
- for (i = 0; i < otfClassSet->otfClassRuleCnt; i++)
- loadOtfClassRule (&otfClassSet->otfClassRule[i], fp, offset + sOffset[i]);
- free (sOffset);
-}
-
-OtfCtx2Ptr makeOTFCtx2 (FILE *fp, ULONG offset)
-{
- int i;
- USHORT cOffset;
- USHORT clOffset;
- USHORT *sOffset;
- OtfCtx2Ptr otf = XCALLOC1 (OtfCtx2);
-
- cOffset = ttfGetUSHORT (fp);
- clOffset = ttfGetUSHORT (fp);
- otf->otfClassSetCnt = ttfGetUSHORT (fp);
- sOffset = ttfMakeUSHORT (otf->otfClassSetCnt, fp);
- otf->otfClassSet = XCALLOC (otf->otfClassSetCnt, OtfClassSet);
- otf->coverage = otfMakeCoverage (fp, offset + cOffset);
- otf->classDef = otfMakeClassDef (fp, offset + clOffset);
- for (i = 0; i < otf->otfClassSetCnt; i++)
- if (sOffset[i])
- loadOtfClassSet (&otf->otfClassSet[i], fp, offset + sOffset[i]);
- free (sOffset);
-
- return otf;
-}
-
-void printOTFCtx2 (FILE *fp, OtfCtx2Ptr otf)
-{
- int i;
-
- fprintf (fp, " - Context %s Class-based\n\t ",
- otf->lookupType == 7 ? "Positioning" : "Substitution");
- otfPrintCoverage (fp, otf->coverage);
- fprintf (fp, "\t ClassDef - ");
- otfPrintClassDef (fp, otf->classDef);
- fprintf (fp, "\t otfClassSetCnt: %d\n", otf->otfClassSetCnt);
- for (i = 0; i < otf->otfClassSetCnt; i++) {
- int j;
-
- fprintf (fp, "\t %2d. otfClassRuleCnt: %d\n", i, otf->otfClassSet[i].otfClassRuleCnt);
- for (j = 0; j < otf->otfClassSet[i].otfClassRuleCnt; j++) {
- int k;
-
- fprintf (fp, "\t %2d. glyphCount: %d ", j,
- otf->otfClassSet[i].otfClassRule[j].glyphCount);
- for (k = 0; k < otf->otfClassSet[i].otfClassRule[j].glyphCount - 1; k++)
- fprintf (fp, k == 0 ? "- %d" : ", %d", otf->otfClassSet[i].otfClassRule[j].class[k]);
- fprintf (fp, "\n");
- printOtfLookupRecord (fp, " ",
- otf->otfClassSet[i].otfClassRule[j].otfCount,
- otf->otfClassSet[i].otfClassRule[j].otf);
- }
- }
-}
-
-void freeOTFCtx2 (OtfCtx2Ptr otf)
-{
- int i;
-
- otfFreeCoverage (otf->coverage);
- otfFreeClassDef (otf->classDef);
- for (i = 0; i < otf->otfClassSetCnt; i++) {
- int j;
-
- for (j = 0; j < otf->otfClassSet[i].otfClassRuleCnt; j++) {
- free (otf->otfClassSet[i].otfClassRule[j].class);
- free (otf->otfClassSet[i].otfClassRule[j].otf);
- }
- free (otf->otfClassSet[i].otfClassRule);
- }
- free (otf->otfClassSet);
-}
-
-OtfCtx3Ptr makeOTFCtx3 (FILE *fp, ULONG offset)
-{
- int i;
- USHORT *gOffset;
- OtfCtx3Ptr otf = XCALLOC1 (OtfCtx3);
-
- otf->glyphCount = ttfGetUSHORT (fp);
- otf->otfCount = ttfGetUSHORT (fp);
- gOffset = ttfMakeUSHORT (otf->glyphCount, fp);
- otf->otf = makeOtfLookupRecord (otf->otfCount, fp);
- otf->glyphs = XCALLOC (otf->glyphCount, CoveragePtr);
- for (i = 0; i < otf->glyphCount; i++)
- otf->glyphs[i] = otfMakeCoverage (fp, offset + gOffset[i]);
- free (gOffset);
-
- return otf;
-}
-
-void printOTFCtx3 (FILE *fp, OtfCtx3Ptr otf)
-{
- int i;
-
- fprintf (fp, " - Context %s Coverage-based\n",
- otf->lookupType == 7 ? "Positioning" : "Substitution");
- fprintf (fp, "\t glyphCount: %d\n", otf->glyphCount);
- for (i = 0; i < otf->glyphCount; i++) {
- fprintf (fp, "\t %2d. ", i);
- otfPrintCoverage (fp, otf->glyphs[i]);
- }
- printOtfLookupRecord (fp, " ", otf->otfCount, otf->otf);
-}
-
-void freeOTFCtx3 (OtfCtx3Ptr otf)
-{
- int i;
-
- for (i = 0; i < otf->glyphCount; i++)
- otfFreeCoverage (otf->glyphs[i]);
- free (otf->glyphs);
- free (otf->otf);
-}
-
-static void
-loadChainOtfRule (ChainOtfRulePtr chainOtfRule, FILE *fp, ULONG offset)
-{
- xfseek (fp, offset, SEEK_SET, "loadChainOtfRule");
-
- chainOtfRule->backtrackGlyphCount = ttfGetUSHORT (fp);
- chainOtfRule->backtrack = ttfMakeUSHORT (chainOtfRule->backtrackGlyphCount, fp);
- chainOtfRule->inputGlyphCount = ttfGetUSHORT (fp);
- chainOtfRule->input = ttfMakeUSHORT (chainOtfRule->inputGlyphCount - 1, fp);
- chainOtfRule->lookaheadGlyphCount = ttfGetUSHORT (fp);
- chainOtfRule->lookahead = ttfMakeUSHORT (chainOtfRule->lookaheadGlyphCount, fp);
- chainOtfRule->otfCount = ttfGetUSHORT (fp);
- chainOtfRule->otf = makeOtfLookupRecord (chainOtfRule->otfCount, fp);
-}
-
-static void
-loadChainOtfRuleSet (ChainOtfRuleSetPtr chainOtfRuleSet, FILE *fp, ULONG offset)
-{
- int i;
- USHORT *rOffset;
-
- xfseek (fp, offset, SEEK_SET, "loadChainOtfRuleSet");
-
- chainOtfRuleSet->chainOtfRuleCount = ttfGetUSHORT (fp);
- rOffset = ttfMakeUSHORT (chainOtfRuleSet->chainOtfRuleCount, fp);
- chainOtfRuleSet->chainOtfRule = XCALLOC (chainOtfRuleSet->chainOtfRuleCount, ChainOtfRule);
- for (i = 0; i < chainOtfRuleSet->chainOtfRuleCount; i++)
- loadChainOtfRule (&chainOtfRuleSet->chainOtfRule[i], fp, offset + rOffset[i]);
- free (rOffset);
-}
-
-OtfChn1Ptr makeOTFChn1 (FILE *fp, ULONG offset)
-{
- int i;
- USHORT cOffset;
- USHORT *rOffset;
- OtfChn1Ptr otf = XCALLOC1 (OtfChn1);
-
- cOffset = ttfGetUSHORT (fp);
- otf->chainOtfRuleSetCount = ttfGetUSHORT (fp);
- rOffset = ttfMakeUSHORT (otf->chainOtfRuleSetCount, fp);
- otf->coverage = otfMakeCoverage (fp, offset + cOffset);
- otf->chainOtfRuleSet = XCALLOC (otf->chainOtfRuleSetCount, ChainOtfRuleSet);
- for (i = 0; i < otf->chainOtfRuleSetCount; i++)
- loadChainOtfRuleSet (&otf->chainOtfRuleSet[i], fp, offset + rOffset[i]);
- free (rOffset);
-
- return otf;
-}
-
-void printOTFChn1 (FILE *fp, OtfChn1Ptr otf)
-{
- int i;
-
- fprintf (fp, " - Chained Context %s Simple\n\t ",
- otf->lookupType == 8 ? "Positioning" : "Substitution");
- otfPrintCoverage (fp, otf->coverage);
- fprintf (fp, "\t chainOtfRuleSetCount: %d\n", otf->chainOtfRuleSetCount);
- for (i = 0; i < otf->chainOtfRuleSetCount; i++) {
- int j;
-
- fprintf (fp, "\t %2d. chainOtfRuleCount: %d\n", i,
- otf->chainOtfRuleSet[i].chainOtfRuleCount);
- for (j = 0; j < otf->chainOtfRuleSet[i].chainOtfRuleCount; j++) {
- int k;
-
- fprintf (fp, "\t %2d. backtrackGlyphCount: %d ", j,
- otf->chainOtfRuleSet[i].chainOtfRule[j].backtrackGlyphCount);
- for (k = 0; k < otf->chainOtfRuleSet[i].chainOtfRule[j].backtrackGlyphCount; k++)
- fprintf (fp, k == 0 ? "- %d" : ", %d", otf->chainOtfRuleSet[i].chainOtfRule[j].backtrack[k]);
- fprintf (fp, "\n\t\tinputGlyphCount: %d ",
- otf->chainOtfRuleSet[i].chainOtfRule[j].inputGlyphCount);
- for (k = 0; k < otf->chainOtfRuleSet[i].chainOtfRule[j].inputGlyphCount; k++)
- fprintf (fp, k == 0 ? "- %d" : ", %d", otf->chainOtfRuleSet[i].chainOtfRule[j].input[k]);
- fprintf (fp, "\n\t\tlookaheadGlyphCount: %d ",
- otf->chainOtfRuleSet[i].chainOtfRule[j].lookaheadGlyphCount);
- for (k = 0; k < otf->chainOtfRuleSet[i].chainOtfRule[j].lookaheadGlyphCount; k++)
- fprintf (fp, k == 0 ? "- %d" : ", %d", otf->chainOtfRuleSet[i].chainOtfRule[j].lookahead[k]);
- fprintf (fp, "\n");
- printOtfLookupRecord (fp, " ",
- otf->chainOtfRuleSet[i].chainOtfRule[j].otfCount,
- otf->chainOtfRuleSet[i].chainOtfRule[j].otf);
- }
- }
-}
-
-void freeOTFChn1 (OtfChn1Ptr otf)
-{
- int i;
-
- otfFreeCoverage (otf->coverage);
- for (i = 0; i < otf->chainOtfRuleSetCount; i++) {
- int j;
-
- for (j = 0; j < otf->chainOtfRuleSet[i].chainOtfRuleCount; j++) {
- free (otf->chainOtfRuleSet[i].chainOtfRule[j].backtrack);
- free (otf->chainOtfRuleSet[i].chainOtfRule[j].input);
- free (otf->chainOtfRuleSet[i].chainOtfRule[j].lookahead);
- free (otf->chainOtfRuleSet[i].chainOtfRule[j].otf);
- }
- free (otf->chainOtfRuleSet[i].chainOtfRule);
- }
- free (otf->chainOtfRuleSet);
-}
-
-static void
-loadChainOtfClassRule (ChainOtfClassRulePtr chainOtfClassRule, FILE *fp, ULONG offset)
-{
- xfseek (fp, offset, SEEK_SET, "loadChainOtfClassRule");
-
- chainOtfClassRule->backtrackGlyphCount = ttfGetUSHORT (fp);
- chainOtfClassRule->backtrack = ttfMakeUSHORT (chainOtfClassRule->backtrackGlyphCount, fp);
- chainOtfClassRule->inputGlyphCount = ttfGetUSHORT (fp);
- chainOtfClassRule->input = ttfMakeUSHORT (chainOtfClassRule->inputGlyphCount - 1, fp);
- chainOtfClassRule->lookaheadGlyphCount = ttfGetUSHORT (fp);
- chainOtfClassRule->lookahead = ttfMakeUSHORT (chainOtfClassRule->lookaheadGlyphCount, fp);
- chainOtfClassRule->otfCount = ttfGetUSHORT (fp);
- chainOtfClassRule->otf = makeOtfLookupRecord (chainOtfClassRule->otfCount, fp);
-}
-
-static void
-loadChainOtfClassSet (ChainOtfClassSetPtr chainOtfClassSet, FILE *fp, ULONG offset)
-{
- int i;
- USHORT *rOffset;
-
- xfseek (fp, offset, SEEK_SET, "loadChainOtfClassSet");
-
- chainOtfClassSet->chainOtfClassRuleCnt = ttfGetUSHORT (fp);
- rOffset = ttfMakeUSHORT (chainOtfClassSet->chainOtfClassRuleCnt, fp);
- chainOtfClassSet->chainOtfClassRule = XCALLOC (chainOtfClassSet->chainOtfClassRuleCnt, ChainOtfClassRule);
- for (i = 0; i < chainOtfClassSet->chainOtfClassRuleCnt; i++)
- loadChainOtfClassRule (&chainOtfClassSet->chainOtfClassRule[i], fp, offset + rOffset[i]);
- free (rOffset);
-}
-
-OtfChn2Ptr makeOTFChn2 (FILE *fp, ULONG offset)
-{
- int i;
- USHORT cOffset;
- USHORT bOffset, iOffset, lOffset;
- USHORT *sOffset;
- OtfChn2Ptr otf = XCALLOC1 (OtfChn2);
-
- cOffset = ttfGetUSHORT (fp);
- bOffset = ttfGetUSHORT (fp);
- iOffset = ttfGetUSHORT (fp);
- lOffset = ttfGetUSHORT (fp);
- otf->chainOtfClassSetCnt = ttfGetUSHORT (fp);
- sOffset = ttfMakeUSHORT (otf->chainOtfClassSetCnt, fp);
- otf->coverage = otfMakeCoverage (fp, offset + cOffset);
- otf->backtrackClassDef = otfMakeClassDef (fp, offset + bOffset);
- otf->inputClassDef = otfMakeClassDef (fp, offset + iOffset);
- otf->lookaheadClassDef = otfMakeClassDef (fp, offset + lOffset);
- otf->chainOtfClassSet = XCALLOC (otf->chainOtfClassSetCnt, ChainOtfClassSet);
- for (i = 0; i < otf->chainOtfClassSetCnt; i++)
- if (sOffset[i])
- loadChainOtfClassSet (&otf->chainOtfClassSet[i], fp, offset + sOffset[i]);
- free (sOffset);
-
- return otf;
-}
-
-void printOTFChn2 (FILE *fp, OtfChn2Ptr otf)
-{
- int i;
-
- fprintf (fp, " - Chained Context %s Class-based\n\t ",
- otf->lookupType == 8 ? "Positioning" : "Substitution");
- otfPrintCoverage (fp, otf->coverage);
- fprintf (fp, "\t backtrackClassDef - ");
- otfPrintClassDef (fp, otf->backtrackClassDef);
- fprintf (fp, "\t inputClassDef - ");
- otfPrintClassDef (fp, otf->inputClassDef);
- fprintf (fp, "\t lookaheadClassDef - ");
- otfPrintClassDef (fp, otf->lookaheadClassDef);
- fprintf (fp, "\t chainOtfClassSetCnt: %d\n", otf->chainOtfClassSetCnt);
- for (i = 0; i < otf->chainOtfClassSetCnt; i++) {
- int j;
-
- fprintf (fp, "\t %2d. chainOtfClassRuleCnt: %d\n", i,
- otf->chainOtfClassSet[i].chainOtfClassRuleCnt);
- for (j = 0; j < otf->chainOtfClassSet[i].chainOtfClassRuleCnt; j++) {
- int k;
-
- fprintf (fp, "\t %2d. backtrackGlyphCount: %2d ", j,
- otf->chainOtfClassSet[i].chainOtfClassRule[j].backtrackGlyphCount);
- for (k = 0; k < otf->chainOtfClassSet[i].chainOtfClassRule[j].backtrackGlyphCount; k++)
- fprintf (fp, k == 0 ? "- %d" : k % 8 ? ", %d" : ",\n\t\t\t\t\t %d",
- otf->chainOtfClassSet[i].chainOtfClassRule[j].backtrack[k]);
- fprintf (fp, "\n\t\tinputGlyphCount: %2d ",
- otf->chainOtfClassSet[i].chainOtfClassRule[j].inputGlyphCount);
- for (k = 0; k < otf->chainOtfClassSet[i].chainOtfClassRule[j].inputGlyphCount; k++)
- fprintf (fp, k == 0 ? "- %d" : k % 8 ? ", %d" : ",\n\t\t\t\t %d",
- otf->chainOtfClassSet[i].chainOtfClassRule[j].input[k]);
- fprintf (fp, "\n\t\tlookaheadGlyphCount: %2d ",
- otf->chainOtfClassSet[i].chainOtfClassRule[j].lookaheadGlyphCount);
- for (k = 0; k < otf->chainOtfClassSet[i].chainOtfClassRule[j].lookaheadGlyphCount; k++)
- fprintf (fp, k == 0 ? "- %d" : k % 8 ? ", %d" : ",\n\t\t\t\t\t %d",
- otf->chainOtfClassSet[i].chainOtfClassRule[j].lookahead[k]);
- fprintf (fp, "\n");
- printOtfLookupRecord (fp, " ",
- otf->chainOtfClassSet[i].chainOtfClassRule[j].otfCount,
- otf->chainOtfClassSet[i].chainOtfClassRule[j].otf);
- }
- }
-}
-
-void freeOTFChn2 (OtfChn2Ptr otf)
-{
- int i;
-
- otfFreeCoverage (otf->coverage);
- otfFreeClassDef (otf->backtrackClassDef);
- otfFreeClassDef (otf->inputClassDef);
- otfFreeClassDef (otf->lookaheadClassDef);
- for (i = 0; i < otf->chainOtfClassSetCnt; i++) {
- int j;
-
- for (j = 0; j < otf->chainOtfClassSet[i].chainOtfClassRuleCnt; j++) {
- free (otf->chainOtfClassSet[i].chainOtfClassRule[j].backtrack);
- free (otf->chainOtfClassSet[i].chainOtfClassRule[j].input);
- free (otf->chainOtfClassSet[i].chainOtfClassRule[j].lookahead);
- free (otf->chainOtfClassSet[i].chainOtfClassRule[j].otf);
- }
- free (otf->chainOtfClassSet[i].chainOtfClassRule);
- }
- free (otf->chainOtfClassSet);
-}
-
-OtfChn3Ptr makeOTFChn3 (FILE *fp, ULONG offset)
-{
- int i;
- USHORT *bOffset, *iOffset, *lOffset;
- OtfChn3Ptr otf = XCALLOC1 (OtfChn3);
-
- otf->backtrackGlyphCount = ttfGetUSHORT (fp);
- bOffset = ttfMakeUSHORT (otf->backtrackGlyphCount, fp);
- otf->inputGlyphCount = ttfGetUSHORT (fp);
- iOffset = ttfMakeUSHORT (otf->inputGlyphCount, fp);
- otf->lookaheadGlyphCount = ttfGetUSHORT (fp);
- lOffset = ttfMakeUSHORT (otf->lookaheadGlyphCount, fp);
- otf->otfCount = ttfGetUSHORT (fp);
- otf->otf = makeOtfLookupRecord (otf->otfCount, fp);
- otf->backtrack = XCALLOC (otf->backtrackGlyphCount, CoveragePtr);
- for (i = 0; i < otf->backtrackGlyphCount; i++)
- otf->backtrack[i] = otfMakeCoverage (fp, offset + bOffset[i]);
- free (bOffset);
- otf->input = XCALLOC (otf->inputGlyphCount, CoveragePtr);
- for (i = 0; i < otf->inputGlyphCount; i++)
- otf->input[i] = otfMakeCoverage (fp, offset + iOffset[i]);
- free (iOffset);
- otf->lookahead = XCALLOC (otf->lookaheadGlyphCount, CoveragePtr);
- for (i = 0; i < otf->lookaheadGlyphCount; i++)
- otf->lookahead[i] = otfMakeCoverage (fp, offset + lOffset[i]);
- free (lOffset);
-
- return otf;
-}
-
-void printOTFChn3 (FILE *fp, OtfChn3Ptr otf)
-{
- int i;
-
- fprintf (fp, " - Chained Context %s Coverage-based\n",
- otf->lookupType == 8 ? "Positioning" : "Substitution");
- fprintf (fp, "\t backtrackGlyphCount: %d\n", otf->backtrackGlyphCount);
- for (i = 0; i < otf->backtrackGlyphCount; i++) {
- fprintf (fp, "\t %2d. backtrack", i);
- otfPrintCoverage (fp, otf->backtrack[i]);
- }
- fprintf (fp, "\t inputGlyphCount: %d\n", otf->inputGlyphCount);
- for (i = 0; i < otf->inputGlyphCount; i++) {
- fprintf (fp, "\t %2d. input", i);
- otfPrintCoverage (fp, otf->input[i]);
- }
- fprintf (fp, "\t lookaheadGlyphCount: %d\n", otf->lookaheadGlyphCount);
- for (i = 0; i < otf->lookaheadGlyphCount; i++) {
- fprintf (fp, "\t %2d. lookahead", i);
- otfPrintCoverage (fp, otf->lookahead[i]);
- }
- printOtfLookupRecord (fp, " ", otf->otfCount, otf->otf);
-}
-
-void freeOTFChn3 (OtfChn3Ptr otf)
-{
- int i;
-
- for (i = 0; i < otf->backtrackGlyphCount; i++)
- otfFreeCoverage (otf->backtrack[i]);
- free (otf->backtrack);
- for (i = 0; i < otf->inputGlyphCount; i++)
- otfFreeCoverage (otf->input[i]);
- free (otf->input);
- for (i = 0; i < otf->lookaheadGlyphCount; i++)
- otfFreeCoverage (otf->lookahead[i]);
- free (otf->lookahead);
- free (otf->otf);
-}
-
diff --git a/Build/source/texk/ttfdump/libttf/pclt.c b/Build/source/texk/ttfdump/libttf/pclt.c
deleted file mode 100644
index 73bbaf7ddd9..00000000000
--- a/Build/source/texk/ttfdump/libttf/pclt.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/* pclt.c -- PCL5 Table
- * Copyright (C) 1997 Li-Da Lho, All right reserved
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "ttf.h"
-#include "ttfutil.h"
-
-/* $Id: pclt.c,v 1.1.1.1 1998/06/05 07:47:52 robert Exp $ */
-
-static void ttfLoadPCLT(FILE *fp,PCLTPtr pclt,ULONG offset);
-
-void ttfInitPCLT(TTFontPtr font)
-{
- ULONG tag = FT_MAKE_TAG ('P', 'C', 'L', 'T');
- TableDirPtr ptd;
-
- if ((ptd = ttfLookUpTableDir(tag,font)) != NULL)
- {
- font->pclt = XCALLOC1 (PCLT);
- ttfLoadPCLT(font->fp,font->pclt,ptd->offset);
- }
-}
-
-static void ttfLoadPCLT(FILE *fp,PCLTPtr pclt,ULONG offset)
-{
- int i;
-
- xfseek(fp, offset, SEEK_SET, "ttfLoadPCLT");
-
- pclt->version = ttfGetFixed(fp);
- pclt->FontNumber = ttfGetULONG(fp);
- pclt->Pitch = ttfGetUSHORT(fp);
- pclt->xHeight = ttfGetUSHORT(fp);
- pclt->Style = ttfGetUSHORT(fp);
- pclt->TypeFamily = ttfGetUSHORT(fp);
- pclt->CapHeight = ttfGetUSHORT(fp);
- pclt->SymbolSet = ttfGetUSHORT(fp);
- for (i=0;i<16;i++)
- pclt->Typeface[i] = ttfGetCHAR(fp);
- for (i=0;i<8;i++)
- pclt->CharacterComplement[i] = ttfGetCHAR(fp);
- for (i=0;i<6;i++)
- pclt->FileName[i] = ttfGetCHAR(fp);
- pclt->StrokeWeight = ttfGetCHAR(fp);
- pclt->WidthType = ttfGetCHAR(fp);
- pclt->SerifStyle = ttfGetBYTE(fp);
-}
-
-void ttfPrintPCLT(FILE *fp,PCLTPtr pclt)
-{
- int i;
- int b[2];
-
- FixedSplit(pclt->version,b);
-
- fprintf(fp,"`PCLT' Table - Printer Command Language Table\n");
- fprintf(fp,"---------------------------------------------\n");
- fprintf(fp,"\t version \t %d.%d\n",b[1],b[0]);
- fprintf(fp,"\t fontNumber \t %d (0x%x)\n",pclt->FontNumber,
- pclt->FontNumber );
- fprintf(fp,"\t pitch \t %d\n",pclt->Pitch);
- fprintf(fp,"\t xHeight \t %d\n",pclt->xHeight);
- fprintf(fp,"\t style \t %d\n",pclt->Style);
- fprintf(fp,"\t typeFamily \t %x\n",pclt->TypeFamily);
- fprintf(fp,"\t capHeight \t %d\n",pclt->CapHeight);
- fprintf(fp,"\t symbolSet \t %d\n",pclt->SymbolSet);
- fprintf(fp,"\t typeFace \t ");
- for (i=0;i<6;i++)
- fprintf(fp,"%c",pclt->Typeface[i]);
- fprintf(fp,"\n");
-
- fprintf(fp,"\t characterComplement 0x");
- for (i=0;i<8;i++)
- fprintf(fp,"%02x",(unsigned char)pclt->CharacterComplement[i]);
- fprintf(fp,"\n");
-
- fprintf(fp,"\t fileName \t ");
- for (i=0;i<6;i++)
- fprintf(fp,"%c",pclt->FileName[i]);
- fprintf(fp,"\n");
-
- fprintf(fp,"\t strokeWeight \t %d\n",pclt->StrokeWeight);
- fprintf(fp,"\t widthType \t %d\n",pclt->WidthType);
- fprintf(fp,"\t serifStyle \t %d\n",pclt->SerifStyle);
-}
-
-void ttfFreePCLT(PCLTPtr pclt)
-{
- if (pclt != NULL)
- free(pclt);
-}
diff --git a/Build/source/texk/ttfdump/libttf/post.c b/Build/source/texk/ttfdump/libttf/post.c
deleted file mode 100644
index ab8f13c227c..00000000000
--- a/Build/source/texk/ttfdump/libttf/post.c
+++ /dev/null
@@ -1,156 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "ttf.h"
-#include "ttfutil.h"
-
-/* $Id: post.c,v 1.3 1998/06/06 12:55:53 werner Exp $ */
-
-static void ttfLoadPOST(FILE *fp, POSTPtr post, ULONG offset);
-
-void ttfInitPOST(TTFontPtr font)
-{
- ULONG tag = FT_MAKE_TAG ('p', 'o', 's', 't');
- TableDirPtr ptd;
-
- if ((ptd = ttfLookUpTableDir(tag, font)) != NULL)
- {
- font->post = XCALLOC1 (POST);
- ttfLoadPOST(font->fp, font->post, ptd->offset);
- }
-}
-
-static void ttfLoadPOST(FILE *fp, POSTPtr post, ULONG offset)
-{
- USHORT i,numGlyphs;
- xfseek(fp, offset, SEEK_SET, "ttfLoadPOST");
-
- post->format = ttfGetFixed(fp);
- post->italicAngle = ttfGetFixed(fp);
- post->underlinePosition = ttfGetFWord(fp);
- post->underlineThickness = ttfGetFWord(fp);
- post->isFixedPitch = ttfGetULONG(fp);
- post->minMemType42 = ttfGetULONG(fp);
- post->maxMemType42 = ttfGetULONG(fp);
- post->minMemType1 = ttfGetULONG(fp);
- post->maxMemType1 = ttfGetULONG(fp);
-
- switch (post->format)
- {
- case 0x00020000:
- post->name.format20 = XCALLOC1 (Format20);
- post->name.format20->numGlyphs = numGlyphs = ttfGetUSHORT(fp);
- post->name.format20->glyphNameIndex = ttfMakeUSHORT (numGlyphs, fp);
-
- post->name.format20->GlyphName = XCALLOC (numGlyphs, CHAR *);
- for (i=0;i<numGlyphs;i++)
- {
- unsigned char len;
- if (post->name.format20->glyphNameIndex[i] <= 257)
- {
- /* do nothing for standard Mac glyf name */
- }
- else if (post->name.format20->glyphNameIndex[i] <= 32767)
- {
- /* non-standard glyf name is stored as a Pascal
- * string in the file i.e.
- * the first byte is the length of the string
- * but the string is not ended with a null
- * character */
- len = (unsigned char) ttfGetCHAR(fp);
- post->name.format20->GlyphName[i] = XTALLOC (len+1, CHAR);
- if (len)
- fread(post->name.format20->GlyphName[i],
- sizeof(CHAR), len, fp);
- post->name.format20->GlyphName[i][len] = 0x0;
- }
- }
- break;
- case 0x00028000: /* 2.5 in 16.16 format */
- /* not implemented yet */
- break;
- default:
- /* do nothing */ ;
- }
-}
-
-void ttfPrintPOST(FILE *fp,POSTPtr post)
-{
- int b[2],b1[2];
- USHORT i,numGlyphs;
-
- FixedSplit(post->format, b);
- FixedSplit(post->italicAngle, b1);
- fprintf(fp,"'post' Table - PostScript\n");
- fprintf(fp,"-------------------------\n");
- fprintf(fp,"\t 'post' format:\t\t %d.%d\n", b[1], b[0]);
- fprintf(fp,"\t italicAngle:\t\t %d.%d\n", b1[1], b1[0]);
- fprintf(fp,"\t underlinePosition:\t %d\n", post->underlinePosition);
- fprintf(fp,"\t underlineThichness:\t %d\n", post->underlineThickness);
- fprintf(fp,"\t isFixedPitch:\t\t %ud\n", post->isFixedPitch);
- fprintf(fp,"\t minMemType42:\t\t %ud\n", post->minMemType42);
- fprintf(fp,"\t maxMemType42:\t\t %ud\n", post->maxMemType42);
- fprintf(fp,"\t minMemType1:\t\t %ud\n", post->minMemType1);
- fprintf(fp,"\t maxMemType1:\t\t %ud\n", post->maxMemType1);
-
- switch (post->format)
- {
- case 0x00020000:
- numGlyphs = post->name.format20->numGlyphs;
- fprintf(fp, "\t Format 2.0: Non-Standard (for PostScript) TrueType Glyph Set.\n");
- fprintf(fp,"\t\t numGlyphs:\t %d\n",
- post->name.format20->numGlyphs);
- for (i=0;i<numGlyphs;i++)
- {
- if (post->name.format20->glyphNameIndex[i] < 257)
- {
- fprintf(fp,"\t\t Glyf %3d -> Mac Glyph # %3d\n", i,
- post->name.format20->glyphNameIndex[i]);
- }
- else if (post->name.format20->glyphNameIndex[i] < 32767)
- {
- fprintf(fp,"\t\t Glyf %3d -> PSGlyf Name # %3d, '%s'\n",
- i, post->name.format20->glyphNameIndex[i] - 257,
- post->name.format20->GlyphName[i]);
- }
- }
- break;
- case 0x00020005:
- /* not implemented yet */
- break;
- default:
- /* do nothing */;
- }
-}
-
-void ttfFreePOST(POSTPtr post)
-{
- USHORT i, numGlyphs;
-
- if (!post)
- return;
-
- switch (post->format)
- {
- case 0x00020000:
- numGlyphs = post->name.format20->numGlyphs;
- for (i=0;i<numGlyphs;i++)
- {
- if (post->name.format20->glyphNameIndex[i] > 257)
- free(post->name.format20->GlyphName[i]);
- }
- free(post->name.format20->glyphNameIndex);
- free(post->name.format20->GlyphName);
- free(post->name.format20);
- break;
- case 0x00020005:
- /* not implemented yet */
- break;
- default:
- /* do nothing */;
- }
- free(post);
-}
diff --git a/Build/source/texk/ttfdump/libttf/prep.c b/Build/source/texk/ttfdump/libttf/prep.c
deleted file mode 100644
index 6408e9ef881..00000000000
--- a/Build/source/texk/ttfdump/libttf/prep.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* prep.c -- Control Value Program
- * Copyright (C) 1996 Li-Da Lho, All right reserved
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "ttf.h"
-#include "ttfutil.h"
-
-/* $Id: prep.c,v 1.1.1.1 1998/06/05 07:47:52 robert Exp $ */
-
-static void ttfLoadPREP(FILE *fp,BYTE *prep,USHORT lenght,ULONG offset);
-
-void ttfInitPREP(TTFontPtr font)
-{
- ULONG tag = FT_MAKE_TAG ('p', 'r', 'e', 'p');
- TableDirPtr ptd;
-
- if ((ptd = ttfLookUpTableDir(tag,font)) != NULL)
- {
- font->prepLength = ptd->length;
- font->prep = XCALLOC (font->prepLength, BYTE);
- ttfLoadPREP(font->fp,font->prep,font->prepLength,ptd->offset);
- }
-}
-
-static void ttfLoadPREP(FILE *fp,BYTE *prep,USHORT length,ULONG offset)
-{
- xfseek(fp, offset, SEEK_SET, "ttfLoadPREP");
-
- if (fread(prep, sizeof(BYTE), length, fp) != length)
- ttfError("Error when getting PREP\n");
-}
-
-void ttfPrintPREP(FILE *fp, BYTE *prep, USHORT length)
-{
- ttfPrintInstructions(fp, prep);
-}
-
-void ttfFreePREP(BYTE *prep)
-{
- if (prep != NULL)
- free(prep);
-}
diff --git a/Build/source/texk/ttfdump/libttf/stack.c b/Build/source/texk/ttfdump/libttf/stack.c
deleted file mode 100644
index e560fc854e7..00000000000
--- a/Build/source/texk/ttfdump/libttf/stack.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/* stack.c -- primitives for managing instruction stack and stream
- * Copyright (C) 1996 Li-Da Lho, All right reserved.
- */
-#include "config.h"
-#include "ttf.h"
-#include "ttfutil.h"
-
-/* $Id: stack.c,v 1.1.1.1 1998/06/05 07:47:52 robert Exp $ */
-
-#define stack (vm->Stack)
-#define sp (vm->sp)
-#define limit (vm->stklimit)
-#define ins (vm->iStream)
-#define ip (vm->ip)
-
-enum TTF_ERROR {StackOverflow ,InstructionOverflow};
-
-/* Push LONG l onto the stack of vm */
-inline void Push(VirtualMachine *vm, LONG l)
-{
- if (sp < limit)
- {
- stack[sp] = l;
- sp += 1;
- }
- else
- vm->Error_State = StackOverflow;
-}
-/* Pop LONG from the stack of vm and store in l */
-inline LONG Pop(VirtualMachine *vm)
-{
- LONG l;
-
- if (sp > 0)
- {
- l = stack[sp];
- sp -= 1;
- return l;
- }
- else
- {
- vm->Error_State = StackOverflow;
- return 0;
- }
-}
-
-/* read one byte from the instruction stream */
-inline BYTE GetBYTE(VirtualMachine *vm)
-{
- if (ip < vm->insLength+1)
- return ins[ip++];
- else
- {
- vm->Error_State = InstructionOverflow;
- return 0;
- }
-}
-/* read two bytes from the instruction stream */
-inline SHORT GetSHORT(VirtualMachine *vm)
-{
- SHORT n = 0;
-
- if (ip < vm->insLength + 2)
- {
- n = ins[ip++] << 8;
- n |= ins[ip++];
- return n;
- }
- else
- {
- vm->Error_State = InstructionOverflow;
- return 0;
- }
-}
-#if 0
-/* Not used */
-/* read four bytes from the instruction steam */
-inline LONG GetLONG(VirtualMachine *vm)
-{
- LONG n = 0;
-
- if (ip < vm->insLength + 4)
- {
- n = ins[ip++] << 24;
- n |= ins[ip++] << 16;
- n |= ins[ip++] << 8;
- n |= ins[ip++] ;
- return n;
- }
- else
- {
- vm->Error_State = InstructionOverflow;
- return 0;
- }
-}
-#endif
diff --git a/Build/source/texk/ttfdump/libttf/tabledir.c b/Build/source/texk/ttfdump/libttf/tabledir.c
deleted file mode 100644
index 799736bce5e..00000000000
--- a/Build/source/texk/ttfdump/libttf/tabledir.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/* loadtable.c
- * Load the tables of the Table Directory of a True Type font file
- * Copyright (C) 1996 Li-Da Lho, All right reserved
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include "ttf.h"
-#include "ttfutil.h"
-
-/* $Id: tabledir.c,v 1.2 1998/07/04 13:17:51 werner Exp $ */
-
-static void ttfLoadTableDir(FILE *fp,TableDirPtr p,ULONG offset);
-
-#define Offset 12 /* start point of table dir */
-
-void ttfInitTableDir(TTFontPtr font, ULONG offset)
-{
- int i,pos; /* table directory starts form position 12 */
-
- font->dir = XCALLOC (font->numTables, TableDir);
- pos = Offset + offset;
- for (i=0;i<font->numTables;i++)
- {
- ttfLoadTableDir(font->fp,font->dir+i,pos);
- pos += sizeof(TableDir);
- }
-}
-
-static void ttfLoadTableDir(FILE *fp,TableDirPtr p,ULONG offset)
-{
- xfseek(fp, offset, SEEK_SET, "ttfLoadTableDir");
-
- p -> tag = ttfGetULONG(fp);
- p -> checksum = ttfGetULONG(fp);
- p -> offset = ttfGetULONG(fp);
- p -> length = ttfGetULONG(fp);
-}
-
-void ttfPrintTableDir(FILE *fp,TableDirPtr p)
-{
- fprintf(fp,"'%s' - checksum = 0x%08x, offset = 0x%08x, len = %9u\n",
- TagToStr(p->tag),p->checksum,p->offset,p->length);
-}
-
-void ttfFreeTableDir(TableDirPtr p)
-{
- free(p);
-}
-
-/* ttfLookUpTableDir
- * lookup the specified table in an array of TableDir
- * Linear search at present, should change to binary search in the
- * future to improve effcience
- * The tag name are sorted in ascent order in ttf file.
- */
-TableDirPtr ttfLookUpTableDir(ULONG tagname,TTFontPtr font)
-{
- USHORT i,n = font->numTables;
- TableDirPtr ptable = font->dir;
-
- for (i=0;i<n;i++,ptable++)
- {
- if (ptable->tag == tagname)
- return ptable;
- }
- return NULL;
-}
-
-#if 0
-/* Not used */
-/* calculate table check sum */
-/* can't be done until the data abstraction have been finished */
-/* not finished yet */
-ULONG ttfCalcTableCheckSum(ULONG tagname,TTFontPtr font)
-{
- ULONG sum = 0L,Length;
- TableDirPtr ptable;
-
- Length = ((ptable->length+3) & ~3) / sizeof(ULONG);
-
- ptable = ttfLookUpTableDir(tagname, font);
- xfseek(font->fp, ptable->offset, SEEK_SET, "ttfCalcTableCheckSum");
-
- while (Length--)
- {
- sum += ttfGetULONG(font->fp);
- }
-
- return sum;
-}
-#endif
diff --git a/Build/source/texk/ttfdump/libttf/ttc.c b/Build/source/texk/ttfdump/libttf/ttc.c
deleted file mode 100644
index 09295af270f..00000000000
--- a/Build/source/texk/ttfdump/libttf/ttc.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/* ttc.c -- True Type Collection Support
- * Copyright (C) 1997 Li-Da Lho, All right reserved
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "ttf.h"
-#include "ttfutil.h"
-#include "ttc.h"
-
-/* $Id: ttc.c,v 1.1.1.1 1998/06/05 07:47:52 robert Exp $ */
-
-static void ttfLoadTTCFont(TTCHeaderPtr ttc, FILE *fp, const char *filename);
-
-TTCHeaderPtr ttfLoadTTCHeader(char * filename)
-{
- ULONG tag = FT_MAKE_TAG ('t', 't', 'c', 'f');
- TTCHeaderPtr ttc;
- FILE *fp;
-
- if ((fp = fopen_truetype (filename)) == NULL)
- {
- fprintf(stderr,"Can't open ttc file %s\n",filename);
- return NULL;
- }
- ttc = XCALLOC1 (TTCHeader);
-
- /* True Type Collection's TTCHeader */
- if ((ttc->TTCTag = ttfGetULONG(fp)) == tag)
- {
- ttc->version = ttfGetFixed(fp);
- ttc->DirCount = (USHORT) ttfGetULONG(fp);
- ttc->offset = ttfMakeULONG (ttc->DirCount, fp);
- ttfLoadTTCFont(ttc,fp,filename);
- return ttc;
- }
- else
- /* a file with ttc in name but no ttc tag in it */
- return NULL;
-}
-
-static void ttfLoadTTCFont(TTCHeaderPtr ttc,FILE *fp,const char *filename)
-{
- unsigned int i;
-
- ttc->font = XCALLOC (ttc->DirCount, TTFont);
-
- /* currently, we are loading all fonts in a TTC file.
- * I still can't find a good way to share the data. */
- for (i=0;i<ttc->DirCount;i++)
- {
- (ttc->font+i) -> fp = fp;
- (ttc->font+i) -> ttfname = XTALLOC (strlen(filename)+16, char);
- sprintf ((ttc->font+i)->ttfname, "%s:%u", filename, i);
- ttfLoadFont((ttc->font+i),(ttc->offset)[i]);
- }
-}
-
-void ttfFreeTTCFont(TTCHeaderPtr ttc)
-{
- int i;
-
- for (i=0;i<ttc->DirCount;i++)
- {
- ttfFreeRequiredTables(ttc->font+i);
-
- ttfFreeOptionalTables(ttc->font+i);
-
- ttfFreeTableDir((ttc->font+i)->dir);
- free((ttc->font+i)->refcount);
- }
-
- free(ttc->offset);
- free(ttc->font);
- free(ttc);
-}
diff --git a/Build/source/texk/ttfdump/libttf/ttfread.c b/Build/source/texk/ttfdump/libttf/ttfread.c
deleted file mode 100644
index 5947484e00b..00000000000
--- a/Build/source/texk/ttfdump/libttf/ttfread.c
+++ /dev/null
@@ -1,180 +0,0 @@
-/* ttfread.c
- * read data element form ttf file
- * swap byte order carefully for MSBFirst
- * presume that int is 32 bits
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-
-#if defined(__GNUC__) && defined(_IBMR2)
-/* Workaround for missing typedef in gcc (egcs-2.90.27 980315 (egcs-1.0.2 release)) */
-typedef long blkcnt_t; /* number of blocks in the file */
-#endif
-
-#include "ttf.h"
-#include "ttfutil.h"
-
-/* $Id: ttfread.c,v 1.2 1998/07/04 13:17:51 werner Exp $ */
-
-BYTE ttfGetBYTE(FILE *fp)
-{
- int cc;
- if ((cc = fgetc(fp)) == EOF)
- {
- if (feof(fp) != 0)
- ttfError("Unexpected EOF\n");
- else
- ttfError("Error Getting BYTE\n");
- }
- return (BYTE) cc;
-}
-
-CHAR ttfGetCHAR(FILE *fp)
-{
- int cc;
- if ((cc = fgetc(fp)) == EOF)
- {
- if (feof(fp) != 0)
- ttfError("Unexpected EOF\n");
- else
- ttfError("Error Getting CHAR\n");
- }
- return (CHAR) cc;
-}
-
-USHORT ttfGetUSHORT(FILE *fp)
-{
- int cc;
- cc = ttfGetBYTE(fp) << 8;
- cc |= ttfGetBYTE(fp);
-
- return (USHORT) cc;
-}
-
-SHORT ttfGetSHORT(FILE *fp)
-{
- int cc;
- cc = ttfGetBYTE(fp) << 8;
- cc |= ttfGetBYTE(fp);
-
- return (SHORT) cc;
-}
-
-ULONG ttfGetULONG(FILE *fp)
-{
- int cc;
- cc = ttfGetBYTE(fp) << 24;
- cc |= ttfGetBYTE(fp) << 16;
- cc |= ttfGetBYTE(fp) << 8;
- cc |= ttfGetBYTE(fp);
-
- return (ULONG) cc;
-}
-
-LONG ttfGetLONG(FILE *fp)
-{
- int cc;
- cc = ttfGetBYTE(fp) << 24;
- cc |= ttfGetBYTE(fp) << 16;
- cc |= ttfGetBYTE(fp) << 8;
- cc |= ttfGetBYTE(fp);
-
- return (LONG) cc;
-}
-
-Fixed ttfGetFixed(FILE *fp)
-{
- return (Fixed) ttfGetULONG(fp);
-}
-
-FUnit ttfGetFUnit(FILE *fp)
-{
- return (FUnit) ttfGetUSHORT(fp);
-}
-
-FWord ttfGetFWord(FILE *fp)
-{
- return (FWord) ttfGetSHORT(fp);
-}
-
-uFWord ttfGetuFWord(FILE *fp)
-{
- return (uFWord) ttfGetUSHORT(fp);
-}
-
-F2Dot14 ttfGetF2Dot14(FILE *fp)
-{
- return (F2Dot14) ttfGetUSHORT(fp);
-}
-
-/* Read arrays. */
-void ttfReadUSHORT(USHORT *array, size_t nelem, FILE *fp)
-{
- int i;
- for (i = 0; i < nelem; i++)
- array[i] = ttfGetUSHORT (fp);
-}
-
-void ttfReadULONG(ULONG *array, size_t nelem, FILE *fp)
-{
- int i;
- for (i = 0; i < nelem; i++)
- array[i] = ttfGetULONG (fp);
-}
-
-void ttfReadFWord(FWord *array, size_t nelem, FILE *fp)
-{
- int i;
- for (i = 0; i < nelem; i++)
- array[i] = ttfGetFWord (fp);
-}
-
-/* Allocate and read arrays. */
-BYTE *ttfMakeBYTE(size_t nelem, FILE *fp)
-{
- int i;
- BYTE *array = XTALLOC (nelem, BYTE);
- for (i = 0; i < nelem; i++)
- array[i] = ttfGetBYTE (fp);
- return array;
-}
-
-USHORT *ttfMakeUSHORT(size_t nelem, FILE *fp)
-{
- int i;
- USHORT *array = XTALLOC (nelem, USHORT);
- for (i = 0; i < nelem; i++)
- array[i] = ttfGetUSHORT (fp);
- return array;
-}
-
-SHORT *ttfMakeSHORT(size_t nelem, FILE *fp)
-{
- int i;
- SHORT *array = XTALLOC (nelem, SHORT);
- for (i = 0; i < nelem; i++)
- array[i] = ttfGetSHORT (fp);
- return array;
-}
-
-ULONG *ttfMakeULONG(size_t nelem, FILE *fp)
-{
- int i;
- ULONG *array = XTALLOC (nelem, ULONG);
- for (i = 0; i < nelem; i++)
- array[i] = ttfGetULONG (fp);
- return array;
-}
-
-LONG *ttfMakeLONG(size_t nelem, FILE *fp)
-{
- int i;
- LONG *array = XTALLOC (nelem, LONG);
- for (i = 0; i < nelem; i++)
- array[i] = ttfGetLONG (fp);
- return array;
-}
-
diff --git a/Build/source/texk/ttfdump/libttf/ttfutil.c b/Build/source/texk/ttfdump/libttf/ttfutil.c
deleted file mode 100644
index 4c436f993c9..00000000000
--- a/Build/source/texk/ttfdump/libttf/ttfutil.c
+++ /dev/null
@@ -1,93 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "ttf.h"
-#include "ttfutil.h"
-
-/* $Id: ttfutil.c,v 1.1.1.1 1998/06/05 07:47:52 robert Exp $ */
-
-/* FixedSplit: split Fixed in to two interger (16.16) */
-void FixedSplit(Fixed f,int b[])
-{
- b[0] = f & 0xff00;
- b[1] = f >> 16;
-}
-
-char *
-TagToStr(ULONG tag)
-{
- static char str[5] = "XXXX";
-
- str[0] = (tag >> 24) & 0xff;
- str[1] = (tag >> 16) & 0xff;
- str[2] = (tag >> 8) & 0xff;
- str[3] = tag & 0xff;
- return str;
-}
-
-void ttfError(const char * msg)
-{
- fprintf(stderr,"%s",msg);
- exit(EXIT_FAILURE);
-}
-
-#ifndef KPATHSEA
-/* Functions copied or adapted from kpathsea. */
-long
-xftell (FILE *fp, const char *funcname)
-{
- long where = ftell (fp);
-
- if (where < 0)
- FATAL_PERROR(funcname);
-
- return where;
-}
-
-void
-xfseek (FILE *f, long offset, int wherefrom, const char *funcname)
-{
- if (fseek (f, offset, wherefrom) < 0)
- FATAL_PERROR(funcname);
-}
-
-void *
-xmalloc (size_t size)
-{
- void *new_mem = (void *)malloc(size ? size : 1);
-
- if (new_mem == NULL) {
- fprintf(stderr, "fatal: memory exhausted (xmalloc of %lu bytes).\n",
- (unsigned long)size);
- exit(EXIT_FAILURE);
- }
-
- return new_mem;
-}
-
-void *
-xcalloc (size_t nelem, size_t elsize)
-{
- void *new_mem = (void*)calloc(nelem ? nelem : 1, elsize ? elsize : 1);
-
- if (new_mem == NULL) {
- fprintf(stderr,
- "xcalloc: request for %lu elements of size %lu failed.\n",
- (unsigned long)nelem, (unsigned long)elsize);
- exit(EXIT_FAILURE);
- }
-
- return new_mem;
-}
-
-char *
-xstrdup (const char *s)
-{
- char *new_string = xmalloc(strlen (s) + 1);
- return strcpy(new_string, s);
-}
-#endif /* !KPATHSEA */
diff --git a/Build/source/texk/ttfdump/libttf/vdmx.c b/Build/source/texk/ttfdump/libttf/vdmx.c
deleted file mode 100644
index ed9139d7c11..00000000000
--- a/Build/source/texk/ttfdump/libttf/vdmx.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/* vdmx.c -- Vertical Device Metrics
- * Copyright (C) 1996 Li-Da Lho, All right reserved
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "ttf.h"
-#include "ttfutil.h"
-
-/* $Id: vdmx.c,v 1.1.1.1 1998/06/05 07:47:52 robert Exp $ */
-
-static void ttfLoadVDMX(FILE *fp,VDMXPtr vdmx,ULONG offset);
-
-void ttfInitVDMX(TTFontPtr font)
-{
- ULONG tag = FT_MAKE_TAG ('V', 'D', 'M', 'X');
- TableDirPtr ptd;
-
- if ((ptd = ttfLookUpTableDir(tag,font)) != NULL)
- {
- font->vdmx = XCALLOC1 (VDMX);
- ttfLoadVDMX(font->fp,font->vdmx,ptd->offset);
- }
-}
-
-static void ttfLoadVDMX (FILE *fp,VDMXPtr vdmx,ULONG offset)
-{
- int i;
-
- xfseek(fp, offset, SEEK_SET, "ttfLoadVDMX");
-
- vdmx->version = ttfGetUSHORT(fp);
- vdmx->numRecs = ttfGetUSHORT(fp);
- vdmx->numRatios = ttfGetUSHORT(fp);
-
- vdmx->ratRange = XCALLOC (vdmx->numRatios, Ratios);
- for (i=0;i<vdmx->numRatios;i++)
- {
- (vdmx->ratRange+i)->CharSet = ttfGetBYTE(fp);
- (vdmx->ratRange+i)->xRatio = ttfGetBYTE(fp);
- (vdmx->ratRange+i)->yStartRatio = ttfGetBYTE(fp);
- (vdmx->ratRange+i)->yEndRatio = ttfGetBYTE(fp);
-
- }
-
- vdmx->offset = ttfMakeUSHORT (vdmx->numRatios, fp);
-
- vdmx->groups = XCALLOC (vdmx->numRecs, Vdmx);
- for (i=0;i<vdmx->numRecs;i++)
- {
- int j;
- (vdmx->groups+i)->recs = ttfGetUSHORT(fp);
- (vdmx->groups+i)->startsz = ttfGetBYTE(fp);
- (vdmx->groups+i)->endsz = ttfGetBYTE(fp);
-
- (vdmx->groups+i)->entry = XCALLOC ((vdmx->groups+i)->recs, vTable);
-
- for (j=0;j<(vdmx->groups+i)->recs;j++)
- {
- ((vdmx->groups+i)->entry+j)->yPelHeight = ttfGetUSHORT(fp);
- ((vdmx->groups+i)->entry+j)->yMax = ttfGetSHORT(fp);
- ((vdmx->groups+i)->entry+j)->yMin = ttfGetSHORT(fp);
- }
- }
-}
-
-void ttfPrintVDMX(FILE *fp,VDMXPtr vdmx)
-{
- int i;
-
- fprintf(fp,"'VDMX' Table - Precomputed Vertical Device Metrics\n");
- fprintf(fp,"--------------------------------------------------\n");
-
-
- fprintf(fp,"Version:\t %d\n", vdmx->version);
- fprintf(fp,"Number of Hgt Records:\t %d\n",vdmx->numRecs);
- fprintf(fp,"Number of Ratio Records:\t %d\n",vdmx->numRecs);
-
- for (i=0;i<vdmx->numRatios;i++)
- {
- fprintf(fp,"\t Ratio Record #%d\n",i+1);
- fprintf(fp,"\t\t CharSetId \t %d\n",(vdmx->ratRange+i)->CharSet);
- fprintf(fp,"\t\t xRatio \t %d\n",(vdmx->ratRange+i)->xRatio);
- fprintf(fp,"\t\t yStartRatio \t %d\n",(vdmx->ratRange+i)->yStartRatio);
- fprintf(fp,"\t\t yEndRatio \t %d\n",(vdmx->ratRange+i)->yEndRatio);
- fprintf(fp,"\t\t Record Offset %d (group #%d)\n\n",vdmx->offset[i],i);
- }
-
- fprintf(fp,"\t VDMX Height Record Groups\n");
- fprintf(fp,"\t -------------------------\n\n");
-
- for (i=0;i<vdmx->numRecs;i++)
- {
- int j;
-
- fprintf(fp,"\t %d. Number of Hgt Records %d\n",i,
- (vdmx->groups+i)->recs);
- fprintf(fp,"\t Starting Y Pel Height %d\n",
- (vdmx->groups+i)->startsz);
- fprintf(fp,"\t Ending Y Pel Height %d\n",
- (vdmx->groups+i)->endsz);
-
- for (j=0;j<(vdmx->groups+i)->recs;j++)
- {
- fprintf(fp,"\t\t %d. Pel Height= %d\n",j+1,
- ((vdmx->groups+i)->entry+j)->yPelHeight);
- fprintf(fp,"\t\t yMax= \t %d\n",
- ((vdmx->groups+i)->entry+j)->yMax);
- fprintf(fp,"\t\t yMin= \t %d\n\n",
- ((vdmx->groups+i)->entry+j)->yMin);
- }
- }
-
-}
-
-void ttfFreeVDMX(VDMXPtr vdmx)
-{
- int i;
- if (vdmx != NULL)
- {
- for (i=0;i<vdmx->numRecs;i++)
- {
- free((vdmx->groups+i)->entry);
- }
- free(vdmx->ratRange);
- free(vdmx->offset);
- free(vdmx->groups);
- free(vdmx);
- }
-}
diff --git a/Build/source/texk/ttfdump/libttf/vhea.c b/Build/source/texk/ttfdump/libttf/vhea.c
deleted file mode 100644
index 3a74c36adb0..00000000000
--- a/Build/source/texk/ttfdump/libttf/vhea.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/* vhea.c -- Vertical Header Table
- * Copyright (C) 1997 Li-Da Lho, All right reserved
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "ttf.h"
-#include "ttfutil.h"
-
-/* $Id: vhea.c,v 1.1.1.1 1998/06/05 07:47:52 robert Exp $ */
-
-static void ttfLoadVHEA(FILE *fp,VHEAPtr vhea,ULONG offset);
-
-void ttfInitVHEA(TTFontPtr font)
-{
- ULONG tag = FT_MAKE_TAG ('v', 'h', 'e', 'a');
- TableDirPtr ptd;
-
- if ((ptd = ttfLookUpTableDir(tag,font)) != NULL)
- {
- font->vhea = XCALLOC1 (VHEA);
- ttfLoadVHEA(font->fp,font->vhea,ptd->offset);
- }
-}
-
-static void ttfLoadVHEA (FILE *fp,VHEAPtr vhea,ULONG offset)
-{
- int i;
-
- xfseek(fp, offset, SEEK_SET, "ttfLoadVHEA");
-
- vhea->version = ttfGetFixed(fp);
- vhea->ascent = ttfGetSHORT(fp);
- vhea->descent = ttfGetSHORT(fp);
- vhea->lineGap = ttfGetSHORT(fp);
- vhea->advanceHeightMax = ttfGetSHORT(fp);
- vhea->minTopSideBearing = ttfGetSHORT(fp);
- vhea->minBottomSideBearing = ttfGetSHORT(fp);
- vhea->yMaxExtent = ttfGetSHORT(fp);
- vhea->caretSlopeRise = ttfGetSHORT(fp);
- vhea->caretSlopeRun = ttfGetSHORT(fp);
- vhea->caretOffset = ttfGetSHORT(fp);
- for(i=0;i<4;i++)
- (vhea->reserved)[i] = ttfGetSHORT(fp);
- vhea->metricDataFormat = ttfGetSHORT(fp);
- vhea->numOfLongVerMetrics = ttfGetUSHORT(fp);
-}
-
-void ttfPrintVHEA(FILE *fp,VHEAPtr vhea)
-{
- int i,b[2];
-
- fprintf(fp,"'VHEA' - Vertical Header Table\n");
- fprintf(fp,"------------------------------\n");
-
- FixedSplit(vhea->version,b);
-
- fprintf(fp,"\t version:\t %d.%d\n",b[1],b[0]);
- fprintf(fp,"\t ascent:\t %d\n",vhea->ascent);
- fprintf(fp,"\t descent:\t %d\n",vhea->descent);
- fprintf(fp,"\t lineGap:\t %d\n",vhea->lineGap);
- fprintf(fp,"\t advanceHeightMax: %d\n",vhea->advanceHeightMax);
- fprintf(fp,"\t minTopSideBearing: %d\n",vhea->minTopSideBearing);
- fprintf(fp,"\t minBottomBearing: %d\n",vhea->minBottomSideBearing);
- fprintf(fp,"\t yMaxExtent:\t %d\n",vhea->yMaxExtent);
- fprintf(fp,"\t caretSlopeRise: %d\n", vhea->caretSlopeRise);
- fprintf(fp,"\t caretSlopeRun: %d\n", vhea->caretSlopeRun);
- fprintf(fp,"\t caretOffset:\t %d\n", vhea->caretOffset);
- for(i=0;i<4;i++)
- fprintf(fp,"\t reserved %d:\t %d\n",i,(vhea->reserved)[i]);
- fprintf(fp,"\t metricDataFormat:\t %d\n", vhea->metricDataFormat);
- fprintf(fp,"\t numOfLongVerMetrics: %d\n",vhea->numOfLongVerMetrics);
-}
-
-void ttfFreeVHEA(VHEAPtr vhea)
-{
- if (vhea != NULL)
- {
- free(vhea);
- }
-}
diff --git a/Build/source/texk/ttfdump/libttf/vmtx.c b/Build/source/texk/ttfdump/libttf/vmtx.c
deleted file mode 100644
index 0cdc9edd147..00000000000
--- a/Build/source/texk/ttfdump/libttf/vmtx.c
+++ /dev/null
@@ -1,93 +0,0 @@
-/* vmtx.c -- Vertical Metrics Table
- * Copyright (C) 1997 Li-Da Lho, All right reserved
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "ttf.h"
-#include "ttfutil.h"
-
-/* $Id: vmtx.c,v 1.1.1.1 1998/06/05 07:47:52 robert Exp $ */
-
-static void ttfLoadVMTX(FILE *fp,VMTXPtr vmtx,ULONG offset);
-
-/* Caution: Because of interdependency between tables,
- * table vhea and maxp should be well initalized before
- * ttfInitVMTX has been called
- */
-void ttfInitVMTX(TTFontPtr font)
-{
- ULONG tag = FT_MAKE_TAG ('v', 'm', 't', 'x');
- TableDirPtr ptd;
-
- if ((ptd = ttfLookUpTableDir(tag,font)) != NULL)
- {
- font->vmtx = XCALLOC1 (VMTX);
- font->vmtx->numOfLongVerMetrics =
- font->vhea->numOfLongVerMetrics;
- font->vmtx->numOfTSB = font->maxp->numGlyphs -
- font->vhea->numOfLongVerMetrics;
- ttfLoadVMTX(font->fp,font->vmtx,ptd->offset);
- }
-}
-
-static void ttfLoadVMTX(FILE *fp,VMTXPtr vmtx,ULONG offset)
-{
- USHORT i,n = vmtx->numOfLongVerMetrics,m=vmtx->numOfTSB;
-
- xfseek(fp, offset, SEEK_SET, "ttfLoadVMTX");
-
- vmtx->vMetrics = XCALLOC (n, longVerMetric);
- for (i=0;i<n;i++)
- {
- (vmtx->vMetrics+i)->advanceHeight = ttfGetuFWord(fp);
- (vmtx->vMetrics+i)->topSideBearing = ttfGetFWord(fp);
- }
-
- /* codes dealing with topSideBearing entry */
- if (m)
- {
- vmtx->topSideBearing = XCALLOC (m, FWord);
- for (i=0;i<m;i++)
- {
- (vmtx->topSideBearing)[i] = ttfGetFWord(fp);
- }
- }
-}
-
-void ttfPrintVMTX(FILE *fp,VMTXPtr vmtx)
-{
- int i;
-
- fprintf(fp,"'vmtx' Table - Vertical Metrics\n");
- fprintf(fp,"---------------------------------\n");
-
- for (i=0;i<vmtx->numOfLongVerMetrics;i++)
- {
- fprintf(fp,"\t %4d. advWid: %4d, TSBear: %4d\n",i,
- (vmtx->vMetrics+i)->advanceHeight,
- (vmtx->vMetrics+i)->topSideBearing);
- }
-
- for (i=0;i<vmtx->numOfTSB;i++)
- {
- fprintf(fp,"\t %4d. TSBear: %4d\n",i+vmtx->numOfLongVerMetrics,
- (vmtx->topSideBearing)[i]);
- }
-}
-
-void ttfFreeVMTX(VMTXPtr vmtx)
-{
- if (vmtx != NULL)
- {
- free(vmtx->vMetrics);
-
- if (vmtx->numOfTSB)
- free(vmtx->topSideBearing);
-
- free(vmtx);
- }
-}