⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fofitype1c.cc

📁 swf文件查看工具,能够看flash文件的格式
💻 CC
📖 第 1 页 / 共 5 页
字号:
	}	// don't clear the stack	break;      case 0x000b:		// return	// don't clear the stack	break;      case 0x000e:		// endchar / seac	if (firstOp) {	  cvtGlyphWidth(nOps == 1 || nOps == 5, charBuf, pDict);	  firstOp = gFalse;	}	if (openPath) {	  charBuf->append((char)9);	  openPath = gFalse;	}	if (nOps == 4) {	  cvtNum(0, gFalse, charBuf);	  cvtNum(ops[0].num, ops[0].isFP, charBuf);	  cvtNum(ops[1].num, ops[1].isFP, charBuf);	  cvtNum(ops[2].num, ops[2].isFP, charBuf);	  cvtNum(ops[3].num, ops[3].isFP, charBuf);	  charBuf->append((char)12)->append((char)6);	} else if (nOps == 0) {	  charBuf->append((char)14);	} else {	  //~ error(-1, "Wrong number of args (%d) to Type 2 endchar", nOps);	}	nOps = 0;	break;      case 0x000f:		// (obsolete)	// this op is ignored, but we need the glyph width	if (firstOp) {	  cvtGlyphWidth(nOps > 0, charBuf, pDict);	  firstOp = gFalse;	}	nOps = 0;	break;      case 0x0010:		// blend	//~ error(-1, "Unimplemented Type 2 charstring op: %d", file[i]);	nOps = 0;	break;      case 0x0012:		// hstemhm	// ignored	if (firstOp) {	  cvtGlyphWidth(nOps & 1, charBuf, pDict);	  firstOp = gFalse;	}	if (nOps & 1) {	  //~ error(-1, "Wrong number of args (%d) to Type 2 hstemhm", nOps);	}	nHints += nOps / 2;	nOps = 0;	break;      case 0x0013:		// hintmask	// ignored	if (firstOp) {	  cvtGlyphWidth(nOps & 1, charBuf, pDict);	  firstOp = gFalse;	}	if (nOps > 0) {	  if (nOps & 1) {	    //~ error(-1, "Wrong number of args (%d) to Type 2 hintmask/vstemhm",	    //~       nOps);	  }	  nHints += nOps / 2;	}	pos += (nHints + 7) >> 3;	nOps = 0;	break;      case 0x0014:		// cntrmask	// ignored	if (firstOp) {	  cvtGlyphWidth(nOps & 1, charBuf, pDict);	  firstOp = gFalse;	}	if (nOps > 0) {	  if (nOps & 1) {	    //~ error(-1, "Wrong number of args (%d) to Type 2 cntrmask/vstemhm",	    //~       nOps);	  }	  nHints += nOps / 2;	}	pos += (nHints + 7) >> 3;	nOps = 0;	break;      case 0x0015:		// rmoveto	if (firstOp) {	  cvtGlyphWidth(nOps == 3, charBuf, pDict);	  firstOp = gFalse;	}	if (openPath) {	  charBuf->append((char)9);	  openPath = gFalse;	}	if (nOps != 2) {	  //~ error(-1, "Wrong number of args (%d) to Type 2 rmoveto", nOps);	}	cvtNum(ops[0].num, ops[0].isFP, charBuf);	cvtNum(ops[1].num, ops[1].isFP, charBuf);	charBuf->append((char)21);	nOps = 0;	break;      case 0x0016:		// hmoveto	if (firstOp) {	  cvtGlyphWidth(nOps == 2, charBuf, pDict);	  firstOp = gFalse;	}	if (openPath) {	  charBuf->append((char)9);	  openPath = gFalse;	}	if (nOps != 1) {	  //~ error(-1, "Wrong number of args (%d) to Type 2 hmoveto", nOps);	}	cvtNum(ops[0].num, ops[0].isFP, charBuf);	charBuf->append((char)22);	nOps = 0;	break;      case 0x0017:		// vstemhm	// ignored	if (firstOp) {	  cvtGlyphWidth(nOps & 1, charBuf, pDict);	  firstOp = gFalse;	}	if (nOps & 1) {	  //~ error(-1, "Wrong number of args (%d) to Type 2 vstemhm", nOps);	}	nHints += nOps / 2;	nOps = 0;	break;      case 0x0018:		// rcurveline	if (nOps < 8 || (nOps - 2) % 6 != 0) {	  //~ error(-1, "Wrong number of args (%d) to Type 2 rcurveline", nOps);	}	for (k = 0; k < nOps - 2; k += 6) {	  cvtNum(ops[k].num, ops[k].isFP, charBuf);	  cvtNum(ops[k+1].num, ops[k+1].isFP, charBuf);	  cvtNum(ops[k+2].num, ops[k+2].isFP, charBuf);	  cvtNum(ops[k+3].num, ops[k+3].isFP, charBuf);	  cvtNum(ops[k+4].num, ops[k+4].isFP, charBuf);	  cvtNum(ops[k+5].num, ops[k+5].isFP, charBuf);	  charBuf->append((char)8);	}	cvtNum(ops[k].num, ops[k].isFP, charBuf);	cvtNum(ops[k+1].num, ops[k].isFP, charBuf);	charBuf->append((char)5);	nOps = 0;	openPath = gTrue;	break;      case 0x0019:		// rlinecurve	if (nOps < 8 || (nOps - 6) % 2 != 0) {	  //~ error(-1, "Wrong number of args (%d) to Type 2 rlinecurve", nOps);	}	for (k = 0; k < nOps - 6; k += 2) {	  cvtNum(ops[k].num, ops[k].isFP, charBuf);	  cvtNum(ops[k+1].num, ops[k].isFP, charBuf);	  charBuf->append((char)5);	}	cvtNum(ops[k].num, ops[k].isFP, charBuf);	cvtNum(ops[k+1].num, ops[k+1].isFP, charBuf);	cvtNum(ops[k+2].num, ops[k+2].isFP, charBuf);	cvtNum(ops[k+3].num, ops[k+3].isFP, charBuf);	cvtNum(ops[k+4].num, ops[k+4].isFP, charBuf);	cvtNum(ops[k+5].num, ops[k+5].isFP, charBuf);	charBuf->append((char)8);	nOps = 0;	openPath = gTrue;	break;      case 0x001a:		// vvcurveto	if (nOps < 4 || !(nOps % 4 == 0 || (nOps-1) % 4 == 0)) {	  //~ error(-1, "Wrong number of args (%d) to Type 2 vvcurveto", nOps);	}	if (nOps % 2 == 1) {	  cvtNum(ops[0].num, ops[0].isFP, charBuf);	  cvtNum(ops[1].num, ops[1].isFP, charBuf);	  cvtNum(ops[2].num, ops[2].isFP, charBuf);	  cvtNum(ops[3].num, ops[3].isFP, charBuf);	  cvtNum(0, gFalse, charBuf);	  cvtNum(ops[4].num, ops[4].isFP, charBuf);	  charBuf->append((char)8);	  k = 5;	} else {	  k = 0;	}	for (; k < nOps; k += 4) {	  cvtNum(0, gFalse, charBuf);	  cvtNum(ops[k].num, ops[k].isFP, charBuf);	  cvtNum(ops[k+1].num, ops[k+1].isFP, charBuf);	  cvtNum(ops[k+2].num, ops[k+2].isFP, charBuf);	  cvtNum(0, gFalse, charBuf);	  cvtNum(ops[k+3].num, ops[k+3].isFP, charBuf);	  charBuf->append((char)8);	}	nOps = 0;	openPath = gTrue;	break;      case 0x001b:		// hhcurveto	if (nOps < 4 || !(nOps % 4 == 0 || (nOps-1) % 4 == 0)) {	  //~ error(-1, "Wrong number of args (%d) to Type 2 hhcurveto", nOps);	}	if (nOps % 2 == 1) {	  cvtNum(ops[1].num, ops[1].isFP, charBuf);	  cvtNum(ops[0].num, ops[0].isFP, charBuf);	  cvtNum(ops[2].num, ops[2].isFP, charBuf);	  cvtNum(ops[3].num, ops[3].isFP, charBuf);	  cvtNum(ops[4].num, ops[4].isFP, charBuf);	  cvtNum(0, gFalse, charBuf);	  charBuf->append((char)8);	  k = 5;	} else {	  k = 0;	}	for (; k < nOps; k += 4) {	  cvtNum(ops[k].num, ops[k].isFP, charBuf);	  cvtNum(0, gFalse, charBuf);	  cvtNum(ops[k+1].num, ops[k+1].isFP, charBuf);	  cvtNum(ops[k+2].num, ops[k+2].isFP, charBuf);	  cvtNum(ops[k+3].num, ops[k+3].isFP, charBuf);	  cvtNum(0, gFalse, charBuf);	  charBuf->append((char)8);	}	nOps = 0;	openPath = gTrue;	break;      case 0x001d:		// callgsubr	if (nOps >= 1) {	  k = gsubrBias + (int)ops[nOps - 1].num;	  --nOps;	  ok = gTrue;	  getIndexVal(&gsubrIdx, k, &val, &ok);	  if (ok) {	    cvtGlyph(val.pos, val.len, charBuf, subrIdx, pDict, gFalse);	  }	} else {	  //~ error(-1, "Too few args to Type 2 callgsubr");	}	// don't clear the stack	break;      case 0x001e:		// vhcurveto	if (nOps < 4 || !(nOps % 4 == 0 || (nOps-1) % 4 == 0)) {	  //~ error(-1, "Wrong number of args (%d) to Type 2 vhcurveto", nOps);	}	for (k = 0; k < nOps && k != nOps-5; k += 4) {	  if (k % 8 == 0) {	    cvtNum(ops[k].num, ops[k].isFP, charBuf);	    cvtNum(ops[k+1].num, ops[k+1].isFP, charBuf);	    cvtNum(ops[k+2].num, ops[k+2].isFP, charBuf);	    cvtNum(ops[k+3].num, ops[k+3].isFP, charBuf);	    charBuf->append((char)30);	  } else {	    cvtNum(ops[k].num, ops[k].isFP, charBuf);	    cvtNum(ops[k+1].num, ops[k+1].isFP, charBuf);	    cvtNum(ops[k+2].num, ops[k+2].isFP, charBuf);	    cvtNum(ops[k+3].num, ops[k+3].isFP, charBuf);	    charBuf->append((char)31);	  }	}	if (k == nOps-5) {	  if (k % 8 == 0) {	    cvtNum(0, gFalse, charBuf);	    cvtNum(ops[k].num, ops[k].isFP, charBuf);	    cvtNum(ops[k+1].num, ops[k+1].isFP, charBuf);	    cvtNum(ops[k+2].num, ops[k+2].isFP, charBuf);	    cvtNum(ops[k+3].num, ops[k+3].isFP, charBuf);	    cvtNum(ops[k+4].num, ops[k+4].isFP, charBuf);	  } else {	    cvtNum(ops[k].num, ops[k].isFP, charBuf);	    cvtNum(0, gFalse, charBuf);	    cvtNum(ops[k+1].num, ops[k+1].isFP, charBuf);	    cvtNum(ops[k+2].num, ops[k+2].isFP, charBuf);	    cvtNum(ops[k+4].num, ops[k+4].isFP, charBuf);	    cvtNum(ops[k+3].num, ops[k+3].isFP, charBuf);	  }	  charBuf->append((char)8);	}	nOps = 0;	openPath = gTrue;	break;      case 0x001f:		// hvcurveto	if (nOps < 4 || !(nOps % 4 == 0 || (nOps-1) % 4 == 0)) {	  //~ error(-1, "Wrong number of args (%d) to Type 2 hvcurveto", nOps);	}	for (k = 0; k < nOps && k != nOps-5; k += 4) {	  if (k % 8 == 0) {	    cvtNum(ops[k].num, ops[k].isFP, charBuf);	    cvtNum(ops[k+1].num, ops[k+1].isFP, charBuf);	    cvtNum(ops[k+2].num, ops[k+2].isFP, charBuf);	    cvtNum(ops[k+3].num, ops[k+3].isFP, charBuf);	    charBuf->append((char)31);	  } else {	    cvtNum(ops[k].num, ops[k].isFP, charBuf);	    cvtNum(ops[k+1].num, ops[k+1].isFP, charBuf);	    cvtNum(ops[k+2].num, ops[k+2].isFP, charBuf);	    cvtNum(ops[k+3].num, ops[k+3].isFP, charBuf);	    charBuf->append((char)30);	  }	}	if (k == nOps-5) {	  if (k % 8 == 0) {	    cvtNum(ops[k].num, ops[k].isFP, charBuf);	    cvtNum(0, gFalse, charBuf);	    cvtNum(ops[k+1].num, ops[k+1].isFP, charBuf);	    cvtNum(ops[k+2].num, ops[k+2].isFP, charBuf);	    cvtNum(ops[k+4].num, ops[k+4].isFP, charBuf);	    cvtNum(ops[k+3].num, ops[k+3].isFP, charBuf);	  } else {	    cvtNum(0, gFalse, charBuf);	    cvtNum(ops[k].num, ops[k].isFP, charBuf);	    cvtNum(ops[k+1].num, ops[k+1].isFP, charBuf);	    cvtNum(ops[k+2].num, ops[k+2].isFP, charBuf);	    cvtNum(ops[k+3].num, ops[k+3].isFP, charBuf);	    cvtNum(ops[k+4].num, ops[k+4].isFP, charBuf);	  }	  charBuf->append((char)8);	}	nOps = 0;	openPath = gTrue;	break;      case 0x0c00:		// dotsection (should be Type 1 only?)	// ignored	nOps = 0;	break;      case 0x0c03:		// and      case 0x0c04:		// or      case 0x0c05:		// not      case 0x0c08:		// store      case 0x0c09:		// abs      case 0x0c0a:		// add      case 0x0c0b:		// sub      case 0x0c0c:		// div      case 0x0c0d:		// load      case 0x0c0e:		// neg      case 0x0c0f:		// eq      case 0x0c12:		// drop      case 0x0c14:		// put      case 0x0c15:		// get      case 0x0c16:		// ifelse      case 0x0c17:		// random      case 0x0c18:		// mul      case 0x0c1a:		// sqrt      case 0x0c1b:		// dup      case 0x0c1c:		// exch      case 0x0c1d:		// index      case 0x0c1e:		// roll	//~ error(-1, "Unimplemented Type 2 charstring op: 12.%d", file[i+1]);	nOps = 0;	break;      case 0x0c22:		// hflex	if (nOps != 7) {	  //~ error(-1, "Wrong number of args (%d) to Type 2 hflex", nOps);	}	cvtNum(ops[0].num, ops[0].isFP, charBuf);	cvtNum(0, gFalse, charBuf);	cvtNum(ops[1].num, ops[1].isFP, charBuf);	cvtNum(ops[2].num, ops[2].isFP, charBuf);	cvtNum(ops[3].num, ops[3].isFP, charBuf);	cvtNum(0, gFalse, charBuf);	charBuf->append((char)8);	cvtNum(ops[4].num, ops[4].isFP, charBuf);	cvtNum(0, gFalse, charBuf);	cvtNum(ops[5].num, ops[5].isFP, charBuf);	cvtNum(-ops[2].num, ops[2].isFP, charBuf);	cvtNum(ops[6].num, ops[6].isFP, charBuf);	cvtNum(0, gFalse, charBuf);	charBuf->append((char)8);	nOps = 0;	openPath = gTrue;	break;      case 0x0c23:		// flex	if (nOps != 13) {	  //~ error(-1, "Wrong number of args (%d) to Type 2 flex", nOps);	}	cvtNum(ops[0].num, ops[0].isFP, charBuf);	cvtNum(ops[1].num, ops[1].isFP, charBuf);	cvtNum(ops[2].num, ops[2].isFP, charBuf);	cvtNum(ops[3].num, ops[3].isFP, charBuf);	cvtNum(ops[4].num, ops[4].isFP, charBuf);	cvtNum(ops[5].num, ops[5].isFP, charBuf);	charBuf->append((char)8);	cvtNum(ops[6].num, ops[6].isFP, charBuf);	cvtNum(ops[7].num, ops[7].isFP, charBuf);	cvtNum(ops[8].num, ops[8].isFP, charBuf);	cvtNum(ops[9].num, ops[9].isFP, charBuf);	cvtNum(ops[10].num, ops[10].isFP, charBuf);	cvtNum(ops[11].num, ops[11].isFP, charBuf);	charBuf->append((char)8);	nOps = 0;	openPath = gTrue;	break;      case 0x0c24:		// hflex1	if (nOps != 9) {	  //~ error(-1, "Wrong number of args (%d) to Type 2 hflex1", nOps);	}	cvtNum(ops[0].num, ops[0].isFP, charBuf);	cvtNum(ops[1].num, ops[1].isFP, charBuf);	cvtNum(ops[2].num, ops[2].isFP, charBuf);	cvtNum(ops[3].num, ops[3].isFP, charBuf);	cvtNum(ops[4].num, ops[4].isFP, charBuf);	cvtNum(0, gFalse, charBuf);	charBuf->append((char)8);	cvtNum(ops[5].num, ops[5].isFP, charBuf);	cvtNum(0, gFalse, charBuf);	cvtNum(ops[6].num, ops[6].isFP, charBuf);	cvtNum(ops[7].num, ops[7].isFP, charBuf);	cvtNum(ops[8].num, ops[8].isFP, charBuf);	cvtNum(-(ops[1].num + ops[3].num + ops[7].num),	       ops[1].isFP | ops[3].isFP | ops[7].isFP, charBuf);	charBuf->append((char)8);	nOps = 0;	openPath = gTrue;	break;      case 0x0c25:		// flex1	if (nOps != 11) {	  //~ error(-1, "Wrong number of args (%d) to Type 2 flex1", nOps);	}	cvtNum(ops[0].num, ops[0].isFP, charBuf);	cvtNum(ops[1].num, ops[1].isFP, charBuf);	cvtNum(ops[2].num, ops[2].isFP, charBuf);	cvtNum(ops[3].num, ops[3].isFP, charBuf);	cvtNum(ops[4].num, ops[4].isFP, charBuf);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -