git.asbjorn.biz
/
swftools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
reduced number of fonts
[swftools.git]
/
lib
/
filters
/
remove_font_transforms.c
diff --git
a/lib/filters/remove_font_transforms.c
b/lib/filters/remove_font_transforms.c
index
b57306b
..
afcc62f
100644
(file)
--- a/
lib/filters/remove_font_transforms.c
+++ b/
lib/filters/remove_font_transforms.c
@@
-166,6
+166,8
@@
static void glyph_transform(gfxglyph_t*g, mymatrix_t*mm)
m.ty = 0;
g->line = gfxline_clone(g->line);
gfxline_transform(g->line, &m);
m.ty = 0;
g->line = gfxline_clone(g->line);
gfxline_transform(g->line, &m);
+ if(m.m00>0)
+ g->advance *= m.m00;
}
static gfxresult_t* pass1_finish(gfxfilter_t*f, gfxdevice_t*out)
}
static gfxresult_t* pass1_finish(gfxfilter_t*f, gfxdevice_t*out)
@@
-203,17
+205,15
@@
static gfxresult_t* pass1_finish(gfxfilter_t*f, gfxdevice_t*out)
gfxline_t*line = font->glyphs[t].line;
gfxbbox_t b = gfxline_getbbox(line);
total = gfxbbox_expand_to_bbox(total, b);
gfxline_t*line = font->glyphs[t].line;
gfxbbox_t b = gfxline_getbbox(line);
total = gfxbbox_expand_to_bbox(total, b);
- font->glyphs[t].advance = b.xmax;
}
if(count)
average_xmax /= count;
fd->dx = -total.xmin;
fd->dy = 0;
}
if(count)
average_xmax /= count;
fd->dx = -total.xmin;
fd->dy = 0;
-
+
for(t=0;t<count;t++) {
gfxline_t*line = font->glyphs[t].line;
for(t=0;t<count;t++) {
gfxline_t*line = font->glyphs[t].line;
- font->glyphs[t].advance += fd->dx;
while(line) {
line->x += fd->dx;
line->y += fd->dy;
while(line) {
line->x += fd->dx;
line->y += fd->dy;
@@
-227,6
+227,12
@@
static gfxresult_t* pass1_finish(gfxfilter_t*f, gfxdevice_t*out)
return out->finish(out);
}
return out->finish(out);
}
+static void pass2_addfont(gfxfilter_t*f, gfxfont_t*font, gfxdevice_t*out)
+{
+ /* we throw away original fonts, and do the addfont() for the transformed
+ fonts in the first drawchar() */
+}
+
static void pass2_drawchar(gfxfilter_t*f, gfxfont_t*font, int glyphnr, gfxcolor_t*color, gfxmatrix_t*matrix, gfxdevice_t*out)
{
internal_t*i = (internal_t*)f->internal;
static void pass2_drawchar(gfxfilter_t*f, gfxfont_t*font, int glyphnr, gfxcolor_t*color, gfxmatrix_t*matrix, gfxdevice_t*out)
{
internal_t*i = (internal_t*)f->internal;