]> git.sur5r.net Git - cc65/commitdiff
Small change in the vector font format.
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sun, 17 Jul 2011 17:15:54 +0000 (17:15 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sun, 17 Jul 2011 17:15:54 +0000 (17:15 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@5088 b7a2c559-68d2-44c3-8de9-860c34a00d81

asminc/tgi-vectorfont.inc
libsrc/tgi/tgi_textheight.s
src/chrcvt/main.c

index b70adcd51390517f4a0ffebed39abe40b82e0af0..ffe6ac686738ba03628fc9710f5e175f0be6b456 100644 (file)
@@ -54,8 +54,8 @@ TGI_VF_CCOUNT           = (TGI_VF_LASTCHAR - TGI_VF_FIRSTCHAR + 1)
 ; Font data loaded directly from file
 .struct TGI_VECTORFONT
         TOP             .byte                   ; Height of char
-        BASELINE        .byte                   ; Character baseline
-        BOTTOM          .byte                   ; Descender
+        BOTTOM          .byte                   ; Descender          
+        HEIGHT          .byte                   ; Maximum char height
         WIDTHS          .byte   ::TGI_VF_CCOUNT ; Char widths
         CHARS           .word   ::TGI_VF_CCOUNT ; Pointer to character defs
         OPS             .byte                   ; Actually dynamic
index 7bd4216bd80ec7d552e0c7080e2e94234a90c908..7e0aee935beb9c5c3b59024d67c1dc4f66ce2b04 100644 (file)
@@ -2,7 +2,7 @@
 ; Ullrich von Bassewitz, 2009-10-30
 ;
 
-
+                                        
         .include        "tgi-kernel.inc"
         .include        "tgi-vectorfont.inc"
         .include        "zeropage.inc"
         stx     ptr1
         lda     _tgi_vectorfont+1
         sta     ptr1+1
-        ldy     #TGI_VECTORFONT::TOP
-        lda     (ptr1),y
-        ldy     #TGI_VECTORFONT::BOTTOM
-        clc
-        adc     (ptr1),y                ; Total font height is top + bottom
+        ldy     #TGI_VECTORFONT::HEIGHT
+        lda     (ptr1),y                ; Get height of font
 
         sta     ptr1
         lda     #0
index 6c2354cc387c9085ab35751da66b7773db9c9aa8..8cc32cc88f908d4a53d8b087c70cf7a0aa653c62 100644 (file)
  *      .byte   $54, $43, $48, $00              ; "TCH" version
  *      .word   <size of data portion>
  * Data portion:
- *      .byte   <top>                           ; Value from $88
- *      .byte   <baseline>                      ; Value from $89
- *      .byte   <bottom>                        ; Negative value from $8A
+ *      .byte   <top>                           ; Baseline to top
+ *      .byte   <bottom>                        ; Baseline to bottom
+ *      .byte   <height>                        ; Maximum char height
  *      .byte   <width>, ...                    ; $5F width bytes
  *      .word   <char definition offset>, ...   ; $5F char def offsets
  * Character definitions:
  *      .word   <converted opcode>, ...
  *      .byte   $80
  *
+ * The baseline of the character is assume to be at position zero. top and
+ * bottom are both positive values. The former extends in positive, the other
+ * in negative direction of the baseline. height contains the sum of top and
+ * bottom and is stored here just for easier handling.
+ *
  * The opcodes get converted for easier handling: END is marked by bit 7
  * set in the first byte. The second byte of this opcode is not needed.
  * Bit 7 of the second byte marks a MOVE (bit 7 = 0) or DRAW (bit 7 = 1).
@@ -411,8 +416,13 @@ static void ConvertFile (const char* Input, const char* Output)
     TchHeader[4] = Offs & 0xFF;
     TchHeader[5] = (Offs >> 8) & 0xFF;
     TchHeader[6] = Buf[0x88];
-    TchHeader[7] = Buf[0x89];
-    TchHeader[8] = (unsigned char) -(signed char)(Buf[0x8A]);
+    TchHeader[7] = (unsigned char) -(signed char)(Buf[0x8A]);
+    TchHeader[8] = TchHeader[6] + TchHeader[7];
+
+    /* The baseline must be zero, otherwise we cannot convert */
+    if (Buf[0x89] != 0) {
+        Error ("Baseline of font in `%s' is not zero", Input);
+    }
 
     /* If the output file is NULL, use the name of the input file with ".tch"
      * appended.