diff options
Diffstat (limited to 'Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/ttfinstrs.c')
-rw-r--r-- | Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/ttfinstrs.c | 473 |
1 files changed, 0 insertions, 473 deletions
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/ttfinstrs.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/ttfinstrs.c deleted file mode 100644 index 727ac285383..00000000000 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/ttfinstrs.c +++ /dev/null @@ -1,473 +0,0 @@ -/* Copyright (C) 2001-2012 by George Williams */ -/* - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - - * The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO - * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#include "fontforgevw.h" -#include <utype.h> -#include "ttf.h" -#include "ttfinstrs.h" - -const char *ff_ttf_instrnames[] = { - "SVTCA[y-axis]", - "SVTCA[x-axis]", - "SPVTCA[y-axis]", - "SPVTCA[x-axis]", - "SFVTCA[y-axis]", - "SFVTCA[x-axis]", - "SPVTL[parallel]", - "SPVTL[orthog]", - "SFVTL[parallel]", - "SFVTL[orthog]", - "SPVFS", - "SFVFS", - "GPV", - "GFV", - "SFVTPV", - "ISECT", - "SRP0", - "SRP1", - "SRP2", - "SZP0", - "SZP1", - "SZP2", - "SZPS", - "SLOOP", - "RTG", - "RTHG", - "SMD", - "ELSE", - "JMPR", - "SCVTCI", - "SSWCI", - "SSW", - "DUP", - "POP", - "CLEAR", - "SWAP", - "DEPTH", - "CINDEX", - "MINDEX", - "ALIGNPTS", - "Unknown28", - "UTP", - "LOOPCALL", - "CALL", - "FDEF", - "ENDF", - "MDAP[no-rnd]", - "MDAP[rnd]", - "IUP[y]", - "IUP[x]", - "SHP[rp2]", - "SHP[rp1]", - "SHC[rp2]", - "SHC[rp1]", - "SHZ[rp2]", - "SHZ[rp1]", - "SHPIX", - "IP", - "MSIRP[no-rp0]", - "MSIRP[rp0]", - "ALIGNRP", - "RTDG", - "MIAP[no-rnd]", - "MIAP[rnd]", - "NPUSHB", - "NPUSHW", - "WS", - "RS", - "WCVTP", - "RCVT", - "GC[cur]", - "GC[orig]", - "SCFS", - "MD[grid]", - "MD[orig]", - "MPPEM", - "MPS", - "FLIPON", - "FLIPOFF", - "DEBUG", - "LT", - "LTEQ", - "GT", - "GTEQ", - "EQ", - "NEQ", - "ODD", - "EVEN", - "IF", - "EIF", - "AND", - "OR", - "NOT", - "DELTAP1", - "SDB", - "SDS", - "ADD", - "SUB", - "DIV", - "MUL", - "ABS", - "NEG", - "FLOOR", - "CEILING", - "ROUND[Grey]", - "ROUND[Black]", - "ROUND[White]", - "ROUND[Undef4]", - "NROUND[Grey]", - "NROUND[Black]", - "NROUND[White]", - "NROUND[Undef4]", - "WCVTF", - "DELTAP2", - "DELTAP3", - "DELTAC1", - "DELTAC2", - "DELTAC3", - "SROUND", - "S45ROUND", - "JROT", - "JROF", - "ROFF", - "Unknown7B", - "RUTG", - "RDTG", - "SANGW", - "AA", - "FLIPPT", - "FLIPRGON", - "FLIPRGOFF", - "Unknown83", - "Unknown84", - "SCANCTRL", - "SDPVTL[parallel]", - "SDPVTL[orthog]", - "GETINFO", - "IDEF", - "ROLL", - "MAX", - "MIN", - "SCANTYPE", - "INSTCTRL", - "Unknown8F", - "Unknown90", - "Unknown91", - "Unknown92", - "Unknown93", - "Unknown94", - "Unknown95", - "Unknown96", - "Unknown97", - "Unknown98", - "Unknown99", - "Unknown9A", - "Unknown9B", - "Unknown9C", - "Unknown9D", - "Unknown9E", - "Unknown9F", - "UnknownA0", - "UnknownA1", - "UnknownA2", - "UnknownA3", - "UnknownA4", - "UnknownA5", - "UnknownA6", - "UnknownA7", - "UnknownA8", - "UnknownA9", - "UnknownAA", - "UnknownAB", - "UnknownAC", - "UnknownAD", - "UnknownAE", - "UnknownAF", - "PUSHB_1", - "PUSHB_2", - "PUSHB_3", - "PUSHB_4", - "PUSHB_5", - "PUSHB_6", - "PUSHB_7", - "PUSHB_8", - "PUSHW_1", - "PUSHW_2", - "PUSHW_3", - "PUSHW_4", - "PUSHW_5", - "PUSHW_6", - "PUSHW_7", - "PUSHW_8", - "MDRP[grey]", - "MDRP[black]", - "MDRP[white]", - "MDRP03", - "MDRP[rnd,grey]", - "MDRP[rnd,black]", - "MDRP[rnd,white]", - "MDRP07", - "MDRP[min,grey]", - "MDRP[min,black]", - "MDRP[min,white]", - "MDRP0b", - "MDRP[min,rnd,grey]", - "MDRP[min,rnd,black]", - "MDRP[min,rnd,white]", - "MDRP0f", - "MDRP[rp0,grey]", - "MDRP[rp0,black]", - "MDRP[rp0,white]", - "MDRP13", - "MDRP[rp0,rnd,grey]", - "MDRP[rp0,rnd,black]", - "MDRP[rp0,rnd,white]", - "MDRP17", - "MDRP[rp0,min,grey]", - "MDRP[rp0,min,black]", - "MDRP[rp0,min,white]", - "MDRP1b", - "MDRP[rp0,min,rnd,grey]", - "MDRP[rp0,min,rnd,black]", - "MDRP[rp0,min,rnd,white]", - "MDRP1f", - "MIRP[grey]", - "MIRP[black]", - "MIRP[white]", - "MIRP03", - "MIRP[rnd,grey]", - "MIRP[rnd,black]", - "MIRP[rnd,white]", - "MIRP07", - "MIRP[min,grey]", - "MIRP[min,black]", - "MIRP[min,white]", - "MIRP0b", - "MIRP[min,rnd,grey]", - "MIRP[min,rnd,black]", - "MIRP[min,rnd,white]", - "MIRP0f", - "MIRP[rp0,grey]", - "MIRP[rp0,black]", - "MIRP[rp0,white]", - "MIRP13", - "MIRP[rp0,rnd,grey]", - "MIRP[rp0,rnd,black]", - "MIRP[rp0,rnd,white]", - "MIRP17", - "MIRP[rp0,min,grey]", - "MIRP[rp0,min,black]", - "MIRP[rp0,min,white]", - "MIRP1b", - "MIRP[rp0,min,rnd,grey]", - "MIRP[rp0,min,rnd,black]", - "MIRP[rp0,min,rnd,white]", - "MIRP1f" -}; - -enum byte_types { bt_instr, bt_cnt, bt_byte, bt_wordhi, bt_wordlo, bt_impliedreturn }; - - -uint8 *_IVParse(SplineFont *sf, char *text, int *len, - void (*IVError)(void *,char *, int), void *iv) { - short numberstack[256]; - int npos=0, nread, i; - int push_left= 0, push_size=0; - char *pt; - char *end, *bend, *brack; - int icnt=0, imax=strlen(text)/2, val, temp; - uint8 *instrs = malloc(imax); - - for ( pt = text; *pt ; ++pt ) { - npos = 0; - while ( npos<256 ) { - while ( *pt==' ' || *pt=='\t' ) ++pt; - if ( isdigit( *pt ) || *pt=='-' ) { - val = strtol(pt,&end,0); - if ( val>32767 || val<-32768 ) { - IVError(iv,_("A value must be between [-32768,32767]"),pt-text); -return( NULL ); - } - - pt = end; - - if ( *pt == '@' ) { /* a delta control byte */ - if ( val>8 || val<-8 || val==0 ) { - IVError(iv,_("A value must be between [-8,-1] or [1,8]"),pt-text); -return( NULL ); - } - - pt++; - - if ( !isdigit( *pt ) ) { - IVError(iv,_("Number expected"),pt-text); -return( NULL ); - } - - temp = val; - val = strtol(pt,&end,0); - - if ( val>15 || val<0 ) { - IVError(iv,_("A value must be between [0,15]"),pt-text); -return( NULL ); - } - - val *= 16; - if (temp < 0) temp += 8; - else temp += 7; - val += temp; - pt = end; - } - - numberstack[npos++] = val; - } else if ( strnmatch(pt,"cvt",3)==0 ) { - pt += 3; - while ( *pt==' ' || *pt=='\t' ) ++pt; - if ( *pt!='(' ) { - IVError(iv,_("Missing left parenthesis in command to get a cvt index"),pt-text); -return( NULL ); - } - temp = strtol(pt+1,&end,0); - pt = end; - while ( *pt==' ' || *pt=='\t' ) ++pt; - if ( *pt!=')' ) { - IVError(iv,_("Missing right paren in command to get a cvt index"),pt-text); -return( NULL ); - } - numberstack[npos++] = TTF__getcvtval(sf,temp); - ++pt; - } else - break; - } - while ( *pt==' ' || *pt=='\t' ) ++pt; - if ( npos==0 && (*pt=='\r' || *pt=='\n' || *pt=='\0') ) - continue; - nread = 0; - if ( push_left==-1 ) { - /* we need a push count */ - if ( npos==0 ) - IVError(iv,_("Expected a number for a push count"),pt-text); - else if ( numberstack[0]>255 || numberstack[0]<=0 ) { - IVError(iv,_("The push count must be a number between 0 and 255"),pt-text); -return( NULL ); - } else { - nread = 1; - instrs[icnt++] = numberstack[0]; - push_left = numberstack[0]; - } - } - if ( push_left!=0 && push_left<npos-nread && (*pt=='\r' || *pt=='\n' || *pt=='\0') ) { - IVError(iv,_("More pushes specified than needed"),pt-text); -return( NULL ); - } - while ( push_left>0 && nread<npos ) { - if ( push_size==2 ) { - instrs[icnt++] = numberstack[nread]>>8; - instrs[icnt++] = numberstack[nread++]&0xff; - } else if ( numberstack[0]>255 || numberstack[0]<0 ) { - IVError(iv,_("A value to be pushed by a byte push must be between 0 and 255"),pt-text); -return( NULL ); - } else - instrs[icnt++] = numberstack[nread++]; - --push_left; - } - if ( nread<npos && push_left==0 && (*pt=='\r' || *pt=='\n' || *pt=='\0')) { - IVError(iv,_("Unexpected number"),pt-text); -return( NULL ); - } - if ( *pt=='\r' || *pt=='\n' || *pt=='\0' ) - continue; - if ( push_left>0 ) { - IVError(iv,_("Missing pushes"),pt-text); -return( NULL ); - } - while ( nread<npos ) { - i = nread; - if ( numberstack[nread]>=0 && numberstack[nread]<=255 ) { - while ( i<npos && numberstack[i]>=0 && numberstack[i]<=255 ) - ++i; - if ( i-nread<=8 ) - instrs[icnt++] = ttf_pushb+(i-nread)-1; - else { - instrs[icnt++] = ttf_npushb; - instrs[icnt++] = i-nread; - } - while ( nread<i ) - instrs[icnt++] = numberstack[nread++]; - } else { - while ( i<npos && (numberstack[i]<0 || numberstack[i]>255) ) - ++i; - if ( i-nread<=8 ) - instrs[icnt++] = ttf_pushw+(i-nread)-1; - else { - instrs[icnt++] = ttf_npushw; - instrs[icnt++] = i-nread; - } - while ( nread<i ) { - instrs[icnt++] = numberstack[nread]>>8; - instrs[icnt++] = numberstack[nread++]&0xff; - } - } - } - brack = NULL; - for ( end= pt; *end!='\r' && *end!='\n' && *end!=' ' && *end!='\0'; ++end ) - if ( *end=='[' || *end=='_' ) brack=end; - for ( i=0; i<256; ++i ) - if ( strnmatch(pt,ff_ttf_instrnames[i],end-pt)==0 && end-pt==strlen(ff_ttf_instrnames[i])) - break; - if ( i==256 && brack!=NULL ) { - for ( i=0; i<256; ++i ) - if ( strnmatch(pt,ff_ttf_instrnames[i],brack-pt+1)==0 ) - break; - val = strtol(brack+1,&bend,2); /* Stuff in brackets should be in binary */ - while ( *bend==' ' || *bend=='\t' ) ++bend; - if ( *bend!=']' ) { - IVError(iv,_("Missing right bracket in command (or bad binary value in bracket)"),pt-text); -return( NULL ); - } - if ( val>=32 ) { - IVError(iv,_("Bracketted value is too large"),pt-text); -return( NULL ); - } - i += val; - } - pt = end; - instrs[icnt++] = i; - if ( i==ttf_npushb || i==ttf_npushw || (i>=ttf_pushb && i<=ttf_pushw+7)) { - push_size = (i==ttf_npushb || (i>=ttf_pushb && i<=ttf_pushb+7))? 1 : 2; - if ( i==ttf_npushb || i==ttf_npushw ) - push_left = -1; - else if ( i>=ttf_pushb && i<=ttf_pushb+7 ) - push_left = i-ttf_pushb+1; - else - push_left = i-ttf_pushw+1; - } - if ( *pt=='\0' ) - break; - } - *len = icnt; -return( realloc(instrs,icnt==0?1:icnt)); /* some versions of realloc abort on 0 */ -} |