Où puis-je find une version moderne de la police "rock" (ou "t")?

De return dans les jours Slackware et RedHat-pre-Fedora, il y avait une police de console appelée, parfois, "rock" ou "t". Je l'ai cherché plusieurs fois, mais je n'y trouve aucune reference. Je pensais que ce serait amusant de le ramener sur Ubuntu, si possible. Est-ce que quelqu'un sait ce que ce serait appelé maintenant, ou s'il y a une version TrueType, je pourrais mettre sur d'autres systèmes?

AFAIK il n'y a pas de ports existants de cette police à une variante de contour. Voici cependant quelques détails, et des hacks, qui pourraient vous aider sur le path.

Le t.fnt , Tektite, a été créé par le (ancien?) Logiciel clySmic , et probablement Ralph B Smith Jr, président / chef programmeur / cuisinier / laveur de bouteilles . Il s'agit d'une police bitmap incluse avec le programme VFONT pour DOS et OS / 2. Il charge les fonts de rlocation pour les systèmes VGA. Son nom est donné par l'auteur est Tektite et décrit comme "une police de style" Architect ".

VFONT peut être téléchargé dans les archives CVFONT.ZIP et CVFONTA.ZIP. La police Tektite fait partie de cette dernière. Le premier est une ancienne version uniquement pour DOS.

VFONT et extraction:

L'archive comprend le programme DOS, VFONT.COM, le programme OS / 2 VFONT2.EXE, une database de fonts VFONT.DAT et un file README.MAN. Le VFONT.DAT contient 13 fonts bitmap stockées dos à dos. Pour extraire la police Tektite, procédez comme suit:

dd if=VFONT.DAT of=t.fnt bs=1 skip=28672 count=4096 

Cela vous donne un file de police de type RAW, qui est celui inclus dans Slackware par exemple.

Chaque police est de 4096 octets. Ainsi, pour extraire les autres, changez simplement l'option de saut . Ie c.fnt qui vient après t.fnt vous donne une valeur de saut de 28672 + 4096 = 32768 . Toutes les fonts sont incluses dans Linux, et pour faire une extraction complète, on pourrait faire:

 #!/bin/bash pos=0 for n in s sd r ro rl mu ml tcbm mr sc; do dd if=VFONT.DAT of=$n.fnt bs=1 skip=$pos count=4096 ((pos += 4096)) done 

… ou, bien sûr, le download à partir d'une des différentes dissortingbutions qui les inclut.

Ces files peuvent être chargés directement dans le terminal par exemple:

 setfont t.fnt 

Nommer dans Linux

La police a été nommée sous Linux par les options du programme VFONT. Tektite a /T Les autres fonts sont également incluses, sont également nommées par l'option de command line pour VFONT. ( / S = s.fnt, / SD = sd.fnt, / RO = ro.fnt … etc.)

Polices RAW

Le format de police RAW (obsolète mais reconnu) est le format de police le plus simple. Il n'a pas d'en-tête, pas de pied de page, pas d'octets d'échappement, etc. Il a généralement une largeur de 8 pixels (bits) – comme le font les fonts VFONT. Ils ont toujours 256 glyphes.

De cela, nous pouvons facilement calculer la hauteur en:

  file_size (bits) 8 × 4096 h = -------------------- eg h = ------------- = 16 w × 256 8 × 256 

Comme toutes les fonts VFONT ont une taille de 4096, nous soaps également qu'elles ont toutes une taille de 16 pixels (bits). Cela donne aussi que chaque glyphe est de 16 octets.

Rendu ASCII

Comme les fonts sont conforms à la gamme ASCII quand il s'agit de 0x20 (espace) – 0x7e (tilde), nous pouvons faire un simple rendu ASCII des glyphes.

Par exemple, la lettre A a la position 65. Comme chaque glyphe est 8 × 16 = 128 bits, nous les avons à 128/8 = 16 octets.

Comme 65 × 16 = 1040, nous pouvons extraire le glyphe A en incluant ici la conversion en binary et en remplaçant les 0 et les 1 pour les rendre plus lisibles:

 xxd -s 1040 -l 16 -b -c 1 t.fnt | cut -d' ' -f 2 | tr 0 ' ' | tr 1 '#' 

Ce qui nous donne:

 Output from | Data in file command: | Binary: Hex: Offset Offset | Hex: Dec: | 00000000 00 410 1040 | 00000000 00 411 1041 ## | 00011000 18 412 1042 ## | 00011000 18 413 1043 #### | 00111100 3c 414 1044 # # | 00100100 24 415 1045 ## ## | 01100110 66 416 1046 ## ### | 01101110 6e 417 1047 #### # | 01111010 7a 418 1048 ### ## | 11100011 e3 419 1049 ## ## | 11000011 c3 41a 1050 ## ## | 11000011 c3 41b 1051 | 00000000 00 41c 1052 | 00000000 00 41d 1053 | 00000000 00 41e 1054 | 00000000 00 41f 1055 

En utilisant un code C simple, nous pouvons également rendre certaines images PBM simples. Voici un exemple de sortie de toutes les fonts de VFONT:

Échantillons VFONT

Édition avec FontForge

Si vous souhaitez travailler avec la police, je suppose que vous pourriez aller à FontForge . Comme il ne reconnaît pas les fonts RAW, vous devez le convertir dans un autre format. L'une des conversions les plus simples pourrait être BDF. Une option consiste à utiliser les outils PSF de John Elliot . Première conversion de RAW en PSF puis PSF en BDF:

 raw2psf t.fnt t.psf psf2bdf t.psf t.bdf 

Le file BDF peut maintenant être ouvert dans FontForge

Comme le process est assez simple (et identique pour tous les VFONT), vous pouvez également utiliser ce script pour convertir directement au format BDF:

Exemple d'utilisation:

 ./raw2bdf Tektite t.fnt > t.bdf 

Vous donne la police Tektite en tant que BDF.

 #!/bin/bash if [ $# -lt 2 ]; then printf "Usage: %s <NAME> <raw-fnt-file>\n" $0 exit fi name=$1 file=$2 cat <<EOM STARTFONT 2.1 FONT $name SIZE 16 75 75 FONTBOUNDINGBOX 8 16 0 -4 STARTPROPERTIES 3 FONT_DESCENT 4 FONT_ASCENT 12 DEFAULT_CHAR 255 ENDPROPERTIES CHARS 256 EOM hexdump -ve '/1 "%02x\n"' "$file" | awk ' BEGIN { n = 0; } (!((NR - 1) % 16)) { if (n > 0) print "ENDCHAR" printf "STARTCHAR C00%02x\n"\ "ENCODING %d\n"\ "SWIDTH 666 0\n"\ "DWIDTH 8 0\n"\ "BBX 8 16 0 -4\n"\ "BITMAP\n", n, n ++n } { print $0 } END { print "ENDCHAR" print "ENDFONT" } ' 

Autres versions

Il existe plusieurs versions modifiées de la police Tektite. Si vous le searchz, en ajoutant facultativement par exemple "clysmic" à la phrase de search sur laquelle vous pouvez étudier.

Rendu d'image

Pour des raisons de complétude, j'ajoute le code C écrasé pour créer l'image ci-dessus. display et convert font partie d' ImageMagick .

Exemple d'utilisation:

 $ ./fntsampler t.fnt hello a ## ### ### ## ## ## ## ## ## ## ### ##### ## ## ##### ## ## ## ## ## ## ## ## ## #### #### ### ## ## ## ## ### ####### ## ## ## ## ## #### ## ## ## ## ## #### ## ## ## ## ## ## ## ###### ## ## ##### $ ./fntsampler t.fnt "Hello World!" > hello.pbm $ display hello.pbm 

Bonjour Wold à Tekite

L'exemple d'image de toutes les fonts ci-dessus a été créé par:

 $ for f in *.fnt; do ./fntsampler "$f" "$(printf "%-6s Hello ABC abc 123" "$f")" | convert - "${f%.*}.png"; done $ convert -negate -append *.png collection.png 

Code:

 #include <stdio.h> #include <errno.h> #include <ssortingng.h> int usage(char *me, char *s) { fprintf(stderr, "Usage: %s <RAW-font-file> \"<ssortingng>\" [format] [[invert] | [dot] [blank]]\n\n" " format p : PBM image (default).\n" " a : ASCII.\n" " invert i : invert b/w in PBM.\n" " dot\n" " blank : Dot / blank in ASCII mode.\n\n" "%s\n" , me, errno ? "" : s ); if (errno) perror(s); return 1; } int main(int argc, char *argv[]) { char *me = argv[0]; char buf[4096]; size_t n; char *p; int i, j, k; FILE *fh; char *s; char fmt = 'p', dot = '1', blank = '0'; if (argc < 3) return usage(me, "Missing argument(s)"); if (!(fh = fopen(argv[1], "r"))) return usage(me, "Unable to open file"); if ((fread(buf, 1, 4096, fh) != 4096)) return usage(me, "Bad file size"); s = argv[2]; if ((n = strlen(s)) < 1) return usage(me, "Empty ssortingng"); if (argc > 3) fmt = argv[3][0]; if (fmt != 'a' && fmt != 'p') return usage(me, "Unknown format"); if (fmt == 'a') { dot = argc > 4 ? argv[4][0] : '#'; blank = argc > 5 ? argv[5][0] : ' '; } else { if (argc > 4 && argv[4][0] == 'i') { dot = '0'; blank = '1'; } printf("P1\n"); printf("#Text: \"%s\", using %s\n", s, argv[1]); printf("%u 16\n", n * 8); } for (i = 0; i < 16; ++i) { for (j = 0; j < (int)n; ++j) { p = buf + (s[j] * 16) + i; for (k = 7; k >= 0; --k) { putchar((*p >> k) & 0x01 ? dot : blank); } /*putchar(' '); */ } putchar('\n'); } return 0; }