swf_WriteFont/swf_ReadFont now also work on Windows.
[swftools.git] / lib / modules / swftext.c
index c4b162f..b0d3de5 100644 (file)
@@ -1020,10 +1020,16 @@ int swf_TextSetInfoRecord(TAG * t, SWFFONT * font, U16 size, RGBA * color, int d
        else
            swf_SetRGB(t, color);
     }
-    if (dx)
+    if (dx) {
+       if(dx>32767 || dx<-32768)
+           fprintf(stderr, "Warning: Horizontal char position overflow: %d\n", dx);
        swf_SetS16(t, dx);
-    if (dy)
+    }
+    if (dy) {
+       if(dy>32767 || dy<-32768)
+           fprintf(stderr, "Warning: Vertical char position overflow: %d\n", dy);
        swf_SetS16(t, dy);
+    }
     if (font)
        swf_SetU16(t, size);
 
@@ -1181,7 +1187,7 @@ SWFFONT *swf_ReadFont(char *filename)
     SWF swf;
     if (!filename)
        return 0;
-    f = open(filename, O_RDONLY);
+    f = open(filename, O_RDONLY|O_BINARY);
 
     if (f < 0 || swf_ReadSWF(f, &swf) < 0) {
        fprintf(stderr, "%s is not a valid SWF font file or contains errors.\n", filename);
@@ -1354,7 +1360,7 @@ void swf_WriteFont(SWFFONT * font, char *filename)
 
     t = swf_InsertTag(t, ST_END);
 
-    f = open(filename, O_RDWR | O_CREAT | O_TRUNC, 0644);
+    f = open(filename, O_RDWR | O_CREAT | O_TRUNC | O_BINARY, 0644);
     if FAILED
        (swf_WriteSWF(f, &swf)) fprintf(stderr, "WriteSWF() failed in writeFont().\n");
     close(f);