y = l->y;
l = l->next;
}
+ swf_Shape2Free(s);
+ free(s);
}
static ALIGNZONE detect_for_char(SWFFONT * f, int nr, float*row, float*column, SRECT font_bbox, SRECT char_bbox)
memset(column, 0, sizeof(float)*(height+1));
int s;
int drawn = 0;
- printf("[font %d] pairing %c with ", f->id, f->glyph2ascii[t]);
for(s=0;s<f->use->num_neighbors;s++) {
- if(f->use->neighbors[s].char2 == t) {
- printf("%c (%d) ", f->glyph2ascii[f->use->neighbors[s].char1], f->use->neighbors[s].num);
- draw_char(f, f->use->neighbors[s].char1, row, column, bounds);
+ int char1 = f->use->neighbors[s].char1;
+ int char2 = f->use->neighbors[s].char2;
+ if(char1 == t || char2 == t) {
+ int other = t==char1?char2:char1;
+ draw_char(f, other, row, column, bounds);
drawn++;
}
}
- printf("\n");
for(s=0;s<=height;s++) {
column[t] /= drawn*2;
}
}
+void swf_FontPostprocess(SWF*swf)
+{
+ TAG*tag = swf->firstTag;
+ while(tag) {
+ TAG*next = tag->next;
+ if(tag->id == ST_DEFINEFONT3) {
+ U16 id = swf_GetDefineID(tag);
+ SWFFONT*font = 0;
+ swf_FontExtract(swf, id, &font);
+ if(!font->alignzones) {
+ swf_FontCreateAlignZones(font);
+ tag = swf_InsertTag(tag, ST_DEFINEFONTALIGNZONES);
+ swf_FontSetAlignZones(tag, font);
+ }
+ swf_FontFree(font);
+ }
+ tag = next;
+ }
+}
+
void swf_FontSetAlignZones(TAG*t, SWFFONT *f)
{
swf_SetU16(t, f->id);
}
}
-