C99 (menggunakan SDL & SDL_ttf), 414 354 346 - 15% = 294.1
#include<SDL_ttf.h>
#define Q(P)char*q=#P;P
Q(
i=5;main(){for(SDL_Surface*s=SDL_SetVideoMode(2048,80,SDL_Init(SDL_INIT_VIDEO),TTF_Init());i--;SDL_SaveBMP(s,"q.bmp"))SDL_BlitSurface(TTF_RenderText_Blended(TTF_OpenFont("q.ttf",9),(char*[]){"#include<SDL_ttf.h>","#define Q(P)char*q=#P;P","Q(",q,")"}[i],(SDL_Color){~0}),0,s,&(SDL_Rect){0,16*i});}
)
Ini sangat jelek tanpa jeda baris lagi, tetapi sayangnya mereka harus absen. Fungsi rendering teks sama sekali tidak mengontrol karakter, jadi setiap jeda baris dalam kode harus diterjemahkan secara manual dalam output.
Berikut kode yang sama tetapi dengan beberapa jeda baris tambahan untuk keterbacaan:
#include<SDL_ttf.h>
#define Q(P)char*q=#P;P
Q(
i=5;main(){for(SDL_Surface*s=SDL_SetVideoMode(2048,80,
SDL_Init(SDL_INIT_VIDEO),TTF_Init());i--;SDL_SaveBMP(s,"q.bmp"))
SDL_BlitSurface(TTF_RenderText_Blended(TTF_OpenFont("q.ttf",9),
(char*[]){"#include<SDL_ttf.h>","#define Q(P)char*q=#P;P","Q(",q,")"}[i],
(SDL_Color){~0}),0,s,&(SDL_Rect){0,16*i});}
)
Sayangnya, ini juga tidak menambahkan jeda baris ke output grafis:
Outputnya masih terbaca, meskipun dengan output 9-point dan warna font merah, agak sedikit menyolok. Anda dapat memperbaikinya dengan mengorbankan karakter dengan mengganti 9
dengan 12
. (Perhatikan bahwa dimensi gambar yang dihasilkan hardcoded ke 2048x80. Untuk mengakomodasi perbedaan dalam berbagai font, sedikit kelebihan telah ditambahkan ke margin kanan dan depan, cukup sehingga font ukuran-12 harus tetap pas dengan nyaman Jika Anda ingin meningkatkannya lebih jauh, dimensi mungkin perlu diubah juga.)
Perintah untuk membangun program adalah:
gcc -Wall -o imgquine imgquine.c -lSDL_ttf `sdl-config --cflags --libs`
Program ini mengasumsikan bahwa ada file font yang dipanggil q.ttf
di direktori saat ini ketika dijalankan. Saya menangani hal ini sebelumnya dengan menjalankan perintah berikut (yang seharusnya bekerja pada kebanyakan Linux modern):
ln -s `fc-match --format='%{file}' sans` ./q.ttf
(Sebaliknya, silakan mengimpor font TrueType favorit Anda sendiri.)
Setelah menjalankan program, output gambar akan dibuat di direktori saat ini, dalam file bernama q.bmp
. Sayangnya file bitmap Windows adalah satu-satunya format output yang disediakan oleh program ini. Menambahkan lebih banyak format output akan membutuhkan penautan di lebih banyak perpustakaan.
Perhatikan bahwa program ini memanfaatkan sintaksis C99 untuk memperkenalkan nilai-nilai literal yang tidak sederhana, sehingga secara signifikan mengurangi jumlah variabel yang perlu didefinisikan. Ini adalah sesuatu yang harus dimanfaatkan oleh lebih banyak pegolf C.