Example #1
0
static void ttfLoadKERN (FILE *fp,KERNPtr kern,ULONG offset)
{
    int i;

    if (fseek(fp,offset,SEEK_SET) !=0)
	ttfError("Fseek Failed in ttfLoadKERN \n");	
    
    kern->version = ttfGetUSHORT(fp);
    kern->nTables = ttfGetUSHORT(fp);

    kern->subtable = (KernSubtable *) calloc(kern->nTables,
						 sizeof(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 =
			(struct kernpair *) calloc(n,sizeof (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;
		}
	}
}
Example #2
0
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);
		}
	}
}
Example #3
0
void ttfReadFWord(FWord *array, size_t nelem, FILE *fp)
{
    int i;
    for (i = 0; i < nelem; i++)
        array[i] = ttfGetFWord (fp);
}