Página 1 de 2

¿Fuentes?

Publicado: Jue, 28 Nov 2013, 13:16
por Gocho
He visto este hilo de fuentes en speccy.org
http://foro.speccy.org/viewtopic.php?f=6&t=3484

Y en el Basin hay un monton de fuentes en formato SpecCHR ocupando cada una 768bytes
He hecho una busqueda rápida pero no encuentro la forma de pasarlas a PNG o Bitmap para usarlas en la churrera. Vamos, directamente no he encontrado nada de nada sobre SpecCHR. Luego he visto que son .BIN renombrados XD

El caso es que trae minusculas, mayusculas, etc... Habría que recortarlas primero
¿Alguien sabe como pasar de .bin a BMP o PNG para recortarlas?
Son 15 fuentes, digo yo que no harán falta más XD

Re: ¿Fuentes?

Publicado: Jue, 28 Nov 2013, 13:21
por juanfran
Imagen

:mrgreen:

Re: ¿Fuentes?

Publicado: Jue, 28 Nov 2013, 13:29
por Gocho
Gracias JuanFran, pero no esa no me cabe en 48KB :corchoneta:

Re: ¿Fuentes?

Publicado: Jue, 28 Nov 2013, 13:29
por na_th_an
Las fuentes se almacenan en formato binario, sin cabeceras. Cada byte describe 8 pixels horizontales. Cada 8 bytes definen un caracter. Escribir un programa que lea un .BIN y escriba un .png se me antoja realmente sencillo.

Sin embargo, hay otra solución: con un emulador de Spectrum que admita cargar binarios a RAM y grabar capturas de pantalla, sólo hay que seguir estos pasos:

1.- En 48 BASIC (por ejemplo) hacer un CLEAR 49999
2.- Cargar la fuente de 768 bytes en 50000
3.- Escribir este programilla:

Código: Seleccionar todo

10 BORDER 0: PAPER 0: INK 7: CLS: FOR n=32 TO 95: PRINT CHR$(n);: NEXT n

4.- Ejecutarlo con RUN y grabar la pantalla desde el emulador.

Re: ¿Fuentes?

Publicado: Jue, 28 Nov 2013, 13:32
por juanfran
Gocho escribió:Gracias JuanFran, pero no esa no me cabe en 48KB :corchoneta:


:lol: :lol: :lol:

Es grande, y con los jipis del fondo más dificil todavía :lol:

Re: ¿Fuentes?

Publicado: Jue, 28 Nov 2013, 13:42
por antoniovillena

Re: ¿Fuentes?

Publicado: Jue, 28 Nov 2013, 14:44
por na_th_an
O esto. Y mira que se supone que yo no sabía programar en python :lol:

bin2fontpng.py

Código: Seleccionar todo

from PIL import Image
from sys import argv
import struct

def testBit (int_type, offset):
   mask = 1 << offset
   return (int_type & mask)

def main (inputfn, outputfn):
   out_img = Image.new ("RGB", (256, 16), "black")
   pixels = out_img.load ()
   x, y = (0, 0)
   f = open (inputfn, "rb")
   try:
      byte = f.read (1)
      ctr = 0
      while byte != '' and ctr < 512:
         byteval = struct.unpack ('B', byte) [0]
         for i in range (0, 8):
            if testBit (byteval, i):
               pixels [x + 7 - i, y] = (255, 255, 255)
         y = y + 1
         if (y & 7) == 0:
            x = x + 8
            y = y - 8
            if x == 256:
               x = 0
               y = y + 8
         byte = f.read (1)
         ctr = ctr + 1
   finally:
      f.close ()
   out_img.save(outputfn, 'PNG')

if __name__ == '__main__':
   if len(argv) == 3:
      main(argv [1], argv [2])
   else:
      print "Modo de uso:\n bin2fontpng.py in.bin out.png"

Re: ¿Fuentes?

Publicado: Vie, 29 Nov 2013, 10:48
por Gocho
Como diría la Alcaldesa Bottle,

"Paiton is FAAAN",

pero vamos, porque has querido, que podrías haberlo hecho igual en C :mrgreen:
Voy a tener que mirarme el manejo de Bytes y bits en Python, que no me había hecho falta nunca.

Voy a probar tu código a ver que saca ;)

EDITO:
Como un tiro. Ya he convertido las 150 fuentes del Basin para usarlas en la churrera. No las he revisado todas, lo mismo para alguna toca quitar minúsculas o algún carácter.
He buscado la licencia de las mismas en el BasinC, pero no las he encontrado. Voy a suponer que son de libre distribución, pero aviso de dónde vienen.
Van adjuntas.

Re: ¿Fuentes?

Publicado: Vie, 29 Nov 2013, 11:06
por son_link
Probado el script y va de PM.
He cogido esta para mi juego :mrgreen:

Re: ¿Fuentes?

Publicado: Vie, 29 Nov 2013, 12:02
por na_th_an
Mola :) Es un buen recurso.