¿Fuentes?

For all things Churrera. ¿Estás haciendo un juego? ¿quieres proponer un cambio? ¿tienes alguna duda? ¡Cuéntanoslo!

Moderador: na_th_an

Gocho
Mensajes: 123
Registrado: Mar, 19 Nov 2013, 10:32

¿Fuentes?

Mensajepor Gocho » Jue, 28 Nov 2013, 13:16

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
Última edición por Gocho el Jue, 28 Nov 2013, 13:24, editado 1 vez en total.
Avatar de Usuario
juanfran
Mensajes: 5342
Registrado: Vie, 09 Ene 2009, 13:00

Re: ¿Fuentes?

Mensajepor juanfran » Jue, 28 Nov 2013, 13:21

Imagen

:mrgreen:
Alcalde gilipollas
Gocho
Mensajes: 123
Registrado: Mar, 19 Nov 2013, 10:32

Re: ¿Fuentes?

Mensajepor Gocho » Jue, 28 Nov 2013, 13:29

Gracias JuanFran, pero no esa no me cabe en 48KB :corchoneta:
Avatar de Usuario
na_th_an
Mensajes: 26412
Registrado: Vie, 09 Ene 2009, 12:18

Re: ¿Fuentes?

Mensajepor na_th_an » Jue, 28 Nov 2013, 13:29

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.
Como diría Rorshach: "Urm..."
Avatar de Usuario
juanfran
Mensajes: 5342
Registrado: Vie, 09 Ene 2009, 13:00

Re: ¿Fuentes?

Mensajepor juanfran » Jue, 28 Nov 2013, 13:32

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:
Alcalde gilipollas
antoniovillena
Mensajes: 494
Registrado: Jue, 24 Oct 2013, 15:52

Re: ¿Fuentes?

Mensajepor antoniovillena » Jue, 28 Nov 2013, 13:42

Avatar de Usuario
na_th_an
Mensajes: 26412
Registrado: Vie, 09 Ene 2009, 12:18

Re: ¿Fuentes?

Mensajepor na_th_an » Jue, 28 Nov 2013, 14:44

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"
Como diría Rorshach: "Urm..."
Gocho
Mensajes: 123
Registrado: Mar, 19 Nov 2013, 10:32

Re: ¿Fuentes?

Mensajepor Gocho » Vie, 29 Nov 2013, 10:48

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.
Adjuntos
ZXFonts.png.zip
(143.37 KiB) Descargado 131 veces
Última edición por Gocho el Vie, 29 Nov 2013, 11:27, editado 1 vez en total.
Avatar de Usuario
son_link
Mensajes: 467
Registrado: Mar, 01 Oct 2013, 11:49
Ubicación: Atlantis, Galaxia Pegaso
Contactar:

Re: ¿Fuentes?

Mensajepor son_link » Vie, 29 Nov 2013, 11:06

Probado el script y va de PM.
He cogido esta para mi juego :mrgreen:
Adjuntos
font.png
font.png (863 Bytes) Visto 2499 veces
LOAD TAPE ERROR
Imagen
Avatar de Usuario
na_th_an
Mensajes: 26412
Registrado: Vie, 09 Ene 2009, 12:18

Re: ¿Fuentes?

Mensajepor na_th_an » Vie, 29 Nov 2013, 12:02

Mola :) Es un buen recurso.
Como diría Rorshach: "Urm..."

Volver a “La Churrera”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado