}
if(charid<0 || charid>=swffont->numchars) {
- msg("<warning> No character %d in font %s ", charid, FIXNULL((char*)swffont->name));
+ msg("<warning> No character %d in font %s (%d chars)", charid, FIXNULL((char*)swffont->name), swffont->numchars);
return 0;
}
/*if(swffont->glyph[charid].shape->bitlen <= 16) {
if(i->textid<0)
return;
- i->tag = swf_InsertTag(i->tag,ST_DEFINETEXT);
+ i->tag = swf_InsertTag(i->tag,ST_DEFINETEXT2);
swf_SetU16(i->tag, i->textid);
SRECT r;
if(!i->pagefinished)
endpage(dev);
- if(i->config_insertstoptag) {
+ if( (i->swf->fileVersion <= 8) && (i->config_insertstoptag) ) {
ActionTAG*atag=0;
atag = action_Stop(atag);
atag = action_End(atag);
}
}
-
void swfoutput_finalize(gfxdevice_t*dev)
{
swfoutput_internal*i = (swfoutput_internal*)dev->internal;
swf_FontReduce(iterator->swffont);
}
int used = iterator->swffont->use && iterator->swffont->use->used_glyphs;
- if(i->config_storeallcharacters || used) {
+ if(used) {
mtag = swf_InsertTag(mtag, ST_DEFINEFONT2);
swf_FontSetDefine2(mtag, iterator->swffont);
}
i->swf->compressed = 1;
}
+ /* Initialize AVM2 if it is a Flash9 file */
+ if(i->config_flashversion>=9 && i->config_insertstoptag) {
+ AVM2_InsertStops(i->swf);
+ }
// if(i->config_reordertags)
// swf_Optimize(i->swf);
}
i->config_linkcolor.b,
i->config_linkcolor.a);
+ } else if(!strcmp(name, "help")) {
+ printf("\nSWF layer options:\n");
+ printf("jpegdpi=<dpi> resolution adjustment for jpeg images\n");
+ printf("jpegsubpixels=<pixels> resolution adjustment for jpeg images (same as jpegdpi, but in pixels)\n");
+ printf("ppmdpi=<dpi> resolution adjustment for lossless images\n");
+ printf("ppmsubpixels=<pixels resolution adjustment for lossless images (same as ppmdpi, but in pixels)\n");
+ printf("subpixels=<pixels> shortcut for setting both jpegsubpixels and ppmsubpixels\n");
+ printf("drawonlyshapes convert everything to shapes (currently broken)\n");
+ printf("ignoredraworder allow to perform a few optimizations for creating smaller SWFs\n");
+ printf("linksopennewwindow make links open a new browser window\n");
+ printf("linktarget target window name of new links\n");
+ printf("linkcolor=<color) color of links (format: RRGGBBAA)\n");
+ printf("storeallcharacters don't reduce the fonts to used characters in the output file\n");
+ printf("enablezlib switch on zlib compression (also done if flashversion>=7)\n");
+ printf("bboxvars store the bounding box of the SWF file in actionscript variables\n");
+ printf("reordertags=0/1 (default: 1) perform some tag optimizations\n");
+ printf("internallinkfunction=<name> when the user clicks a internal link (to a different page) in the converted file, this actionscript function is called\n");
+ printf("externallinkfunction=<name> when the user clicks an external link (e.g. http://www.foo.bar/) on the converted file, this actionscript function is called\n");
+ printf("disable_polygon_conversion never convert strokes to polygons (will remove capstyles and joint styles)\n");
+ printf("caplinewidth=<width> the minimum thichness a line needs to have so that capstyles become visible (and are converted)\n");
+ printf("insertstop put an ActionScript \"STOP\" tag in every frame\n");
+ printf("protect add a \"protect\" tag to the file, to prevent loading in the Flash editor\n");
+ printf("flashversion=<version> the SWF fileversion (6)\n");
+ printf("minlinewidth=<width> convert horizontal/vertical boxes smaller than this width to lines (0.05) \n");
+ printf("animate insert a showframe tag after each placeobject (animate draw order of PDF files)\n");
+ printf("jpegquality=<quality> set compression quality of jpeg images\n");
} else {
return 0;
}
swffont->glyph[t].shape = swf_ShapeDrawerToShape(&draw);
swffont->layout->bounds[t] = swf_ShapeDrawerGetBBox(&draw);
- if(swffont->layout->bounds[t].xmax && swffont->layout->bounds[t].xmax*2 < advance) {
- printf("fix bad advance value: bbox=%d, advance=%d (%f)\n", swffont->layout->bounds[t].xmax, advance, font->glyphs[t].advance);
- advance = swffont->layout->bounds[t].xmax;
+ int xmax = swffont->layout->bounds[t].xmax / 20;
+ if(xmax>0 && xmax*2 < advance) {
+ printf("fix bad advance value: bbox=%d, advance=%d (%f)\n", xmax, advance, font->glyphs[t].advance);
+ advance = xmax;
}
if(advance<32768) {