New ASCII fonts based on a simple translation of the Monospace ones.

This commit is contained in:
Sam Hocevar 2009-12-16 00:37:44 +00:00 committed by sam
parent 9bea723d14
commit fb6aeb50d0
17 changed files with 88 additions and 40 deletions

View file

@ -5,19 +5,22 @@ DIST_SUBDIRS = $(SUBDIRS)
EXTRA_DIST = bootstrap
AUTOMAKE_OPTIONS = dist-bzip2
CACA2TLF = $(top_builddir)/tools/caca2tlf
FONTDIR = $(top_builddir)/fonts
fonts: tools/caca2tlf FORCE
$(top_builddir)/tools/caca2tlf "Monospace 9" | zip \
> $(top_builddir)/fonts/bigmono9.tlf
$(top_builddir)/tools/caca2tlf "Monospace Bold 12" | zip \
> $(top_builddir)/fonts/bigmono12.tlf
$(top_builddir)/tools/caca2tlf --half "Monospace 9" | zip \
> $(top_builddir)/fonts/mono9.tlf
$(top_builddir)/tools/caca2tlf --half "Monospace Bold 12" | zip \
> $(top_builddir)/fonts/mono12.tlf
$(top_builddir)/tools/caca2tlf --quarter "Monospace 9" | zip \
> $(top_builddir)/fonts/smmono9.tlf
$(top_builddir)/tools/caca2tlf --quarter "Monospace Bold 12" | zip \
> $(top_builddir)/fonts/smmono12.tlf
$(CACA2TLF) -u "Monospace 9" | zip > $(FONTDIR)/bigmono9.tlf
$(CACA2TLF) -u "Monospace Bold 12" | zip > $(FONTDIR)/bigmono12.tlf
$(CACA2TLF) -h -u "Monospace 9" | zip > $(FONTDIR)/mono9.tlf
$(CACA2TLF) -h -u "Monospace Bold 12" | zip > $(FONTDIR)/mono12.tlf
$(CACA2TLF) -q -u "Monospace 9" | zip > $(FONTDIR)/smmono9.tlf
$(CACA2TLF) -q -u "Monospace Bold 12" | zip > $(FONTDIR)/smmono12.tlf
$(CACA2TLF) -a "Monospace 9" | zip > $(FONTDIR)/bigascii9.tlf
$(CACA2TLF) -a "Monospace Bold 12" | zip > $(FONTDIR)/bigascii12.tlf
$(CACA2TLF) -h -a "Monospace 9" | zip > $(FONTDIR)/ascii9.tlf
$(CACA2TLF) -h -a "Monospace Bold 12" | zip > $(FONTDIR)/ascii12.tlf
$(CACA2TLF) -q -a "Monospace 9" | zip > $(FONTDIR)/smascii9.tlf
$(CACA2TLF) -q -a "Monospace Bold 12" | zip > $(FONTDIR)/smascii12.tlf
webhost = poulet.zoy.org
webdir = /srv/libcaca.zoy.org/var/www/

View file

@ -1,5 +1,7 @@
allfonts = wideterm.tlf circle.tlf emboss.tlf emboss2.tlf future.tlf \
ascii9.tlf smascii9.tlf bigascii9.tlf \
ascii12.tlf smascii12.tlf bigascii12.tlf \
mono9.tlf smmono9.tlf bigmono9.tlf \
mono12.tlf smmono12.tlf bigmono12.tlf \
letter.tlf smblock.tlf smbraille.tlf

BIN
fonts/ascii12.tlf Normal file

Binary file not shown.

BIN
fonts/ascii9.tlf Normal file

Binary file not shown.

BIN
fonts/bigascii12.tlf Normal file

Binary file not shown.

BIN
fonts/bigascii9.tlf Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -1,16 +1,20 @@
tlf2a 6 5 8 -1 13 0 0 0
tlf2a 6 5 8 -1 17 0 0 0
===============================================================================
This is letter.tlf, or “Letter”, Copyright (c) 2008 Francesco Poli
2008-09-21 -- Francesco Poli <frx@firenze.linux.it>
font creation
This font is free software; you can redistribute it and/or modify it under
This font is free software. It comes without any warranty, to the extent
permitted by applicable law. You can redistribute it and/or modify it under
the terms of the Do What The Fuck You Want To Public License, Version 2,
as published by Sam Hocevar. See http://sam.zoy.org/wtfpl/COPYING for more
details.
Missing characters: many...
This font is part of TOIlets official distribution. More information
on the TOIlet website at http://caca.zoy.org/wiki/toilet
===============================================================================
@
@

Binary file not shown.

Binary file not shown.

BIN
fonts/smascii12.tlf Normal file

Binary file not shown.

BIN
fonts/smascii9.tlf Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -50,7 +50,7 @@ int main(int argc, char *argv[])
int infocode = -1;
cx->export = "utf8";
cx->font = "smblock";
cx->font = "ascii9";
cx->dir = FONTDIR;
cx->term_width = 80;

View file

@ -27,6 +27,7 @@
#include <caca.h>
enum mode { GRAY, HALFBLOCKS, QUARTERBLOCKS } mode;
enum charset { ASCII, UTF8 } charset;
static void list_fonts(void);
static void add_char(unsigned long int);
@ -39,37 +40,55 @@ unsigned int w, h, gw, fgw, gh, iw, ih;
int main(int argc, char *argv[])
{
char *fontname, *extraflag;
char *flag1, *flag2;
unsigned int b, i;
if(argc < 2)
{
fprintf(stderr, "Usage: %s [--half|--quarter] <font>\n", argv[0]);
fprintf(stderr,
"Usage: %s [--half|--quarter] [--ascii|--utf8] <font>\n",
argv[0]);
list_fonts();
return -1;
}
if(!strcmp(argv[1], "--half") && argc >= 3)
if((!strcmp(argv[1], "--half") || !strcmp(argv[1], "-h")) && argc > 2)
{
extraflag = "--half ";
flag1 = "--half ";
mode = HALFBLOCKS;
fontname = argv[2];
argv++; argc--;
}
else if(!strcmp(argv[1], "--quarter") && argc >= 3)
else if((!strcmp(argv[1], "--quarter") || !strcmp(argv[1], "-q")) && argc > 2)
{
extraflag = "--quarter ";
flag1 = "--quarter ";
mode = QUARTERBLOCKS;
fontname = argv[2];
argv++; argc--;
}
else
{
extraflag = "";
flag1 = "";
mode = GRAY;
fontname = argv[1];
}
f = caca_load_font(fontname, 0);
if((!strcmp(argv[1], "--ascii") || !strcmp(argv[1], "-a")) && argc > 2)
{
flag2 = "--ascii ";
charset = ASCII;
argv++; argc--;
}
else if((!strcmp(argv[1], "--utf8") || !strcmp(argv[1], "-u")) && argc > 2)
{
flag2 = "--utf8 ";
charset = UTF8;
argv++; argc--;
}
else
{
flag2 = "";
charset = ASCII;
}
f = caca_load_font(argv[1], 0);
if(!f)
{
fprintf(stderr, "Font \"%s\" not found.\n", argv[1]);
@ -111,7 +130,7 @@ int main(int argc, char *argv[])
printf("=============================================="
"==================================\n");
printf(" This font was automatically generated using:\n");
printf(" %% caca2tlf %s\"%s\"\n", extraflag, fontname);
printf(" %% caca2tlf %s%s\"%s\"\n", flag1, flag2, argv[1]);
printf("=============================================="
"==================================\n");
@ -169,9 +188,23 @@ static void list_fonts(void)
static void add_char(unsigned long int ch)
{
static char const * chars[][16] =
{
{ "#", "$", ":", ".", " " },
{ " ", "\"", "m", "#" },
{ " ", "`", "'", "\"", ",", "[", "/", "P",
".", "\\", "]", "T", "m", "b", "d", "W" },
{ "", "", "", "", " " },
{ " ", "", "", "" },
{ " ", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "" }
};
char const **str;
void *buf;
size_t len;
unsigned int x, y, myw, mygw;
int off = 0;
int full = caca_utf32_is_fullwidth(ch);
caca_set_canvas_size(onechar, full ? 2 : 1, 1);
@ -182,33 +215,44 @@ static void add_char(unsigned long int ch)
mygw = full ? fgw : gw;
caca_set_canvas_size(out, (full ? fgw : gw) + 2, gh);
caca_clear_canvas(out);
switch(charset)
{
case ASCII:
off = 0;
break;
case UTF8:
off = 3;
break;
}
switch(mode)
{
case GRAY:
str = chars[off];
for(y = 0; y < h; y++)
for(x = 0; x < myw; x++)
{
uint8_t c = image[4 * (x + y * iw) + 2];
if(c >= 0xa0)
caca_put_str(out, x, y, "");
caca_put_str(out, x, y, str[0]);
else if(c >= 0x80)
caca_put_str(out, x, y, "");
caca_put_str(out, x, y, str[1]);
else if(c >= 0x40)
caca_put_str(out, x, y, "");
caca_put_str(out, x, y, str[2]);
else if(c >= 0x20)
caca_put_str(out, x, y, "");
caca_put_str(out, x, y, str[3]);
else
caca_put_char(out, x, y, ' ');
caca_put_str(out, x, y, str[4]);
}
break;
case HALFBLOCKS:
str = chars[off + 1];
for(y = 0; y < gh; y++)
for(x = 0; x < mygw; x++)
{
static char const *str[] = { " ", "", "", "" };
uint8_t p1 = image[4 * (x + y * 2 * iw) + 2];
uint8_t p2 = image[4 * (x + (y * 2 + 1) * iw) + 2];
@ -216,15 +260,10 @@ static void add_char(unsigned long int ch)
}
break;
case QUARTERBLOCKS:
str = chars[off + 2];
for(y = 0; y < gh; y++)
for(x = 0; x < mygw; x++)
{
static char const *str[] =
{
" ", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", ""
};
uint8_t p1 = image[4 * (x * 2 + y * 2 * iw) + 2];
uint8_t p2 = image[4 * (x * 2 + 1 + y * 2 * iw) + 2];
uint8_t p3 = image[4 * (x * 2 + (y * 2 + 1) * iw) + 2];