সি 99 (এসডিএল এবং এসডিএল_টিটিএফ ব্যবহার করে), 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});}
)
এটি আরও লাইন বিরতি ছাড়াই বেশ কুৎসিত, তবে দুর্ভাগ্যক্রমে তাদের অনুপস্থিত থাকা প্রয়োজন। পাঠ্য-উপস্থাপনা ফাংশন মোটেও নিয়ন্ত্রণের অক্ষরগুলি ছাঁটাই করে না, সুতরাং কোডের কোনও লাইন ব্রেকগুলি আউটপুটটিতে ম্যানুয়ালি রেন্ডার করতে হবে।
এখানে একই কোডটি রয়েছে তবে সুসংগঠনের জন্য কিছু অতিরিক্ত লাইন বিরতি দেওয়া হয়েছে:
#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});}
)
দুঃখের বিষয়, এটি গ্রাফিকাল আউটপুটে লাইন ব্রেকগুলিও যুক্ত করে না:
আউটপুটটি এখনও সুগঠিত, যদিও 9-পয়েন্টের আউটপুট এবং লাল ফন্টের রঙের সাথে এটি কিছুটা স্কুইন্টি। আপনি এটির পরিবর্তে একটি চরিত্রের ব্যয়ে এটি উন্নত করতে পারেন9
সঙ্গে12
। (নোট করুন যে ফলস্বরূপ চিত্রটির মাত্রা 2048x80 এ হার্ডকোডযুক্ত f বিভিন্ন ফন্টের পার্থক্য সামঞ্জস্য করতে, একটি সামান্য পরিমাণে ডান মার্জিন এবং শীর্ষস্থানীয়তে যুক্ত করা হয়েছে, যাতে আকার -12 ফন্টটি এখনও আরামদায়কভাবে ফিট করে । আপনি যদি এটি আরও বাড়িয়ে নিতে চান তবে তবে মাত্রাগুলি সম্ভবত পরিবর্তন করতে হবে will)
প্রোগ্রামটি তৈরির আদেশটি হ'ল:
gcc -Wall -o imgquine imgquine.c -lSDL_ttf `sdl-config --cflags --libs`
প্রোগ্রামটি ধরে নিয়েছে যে q.ttf
চলমান ডিরেক্টরিটিতে একটি ফন্ট ফাইল রয়েছে যখন রান করা হয়। আমি নিম্নলিখিত কমান্ডটি চালিয়ে আগে এটির যত্ন নিয়েছিলাম (যা বেশিরভাগ আধুনিক লিনাক্সে কাজ করা উচিত):
ln -s `fc-match --format='%{file}' sans` ./q.ttf
(পরিবর্তে আপনার নিজের প্রিয় ট্রু টাইপ ফন্ট আমদানি নির্দ্বিধায়।)
প্রোগ্রামটি চালানোর পরে, বর্তমান ডিরেক্টরিতে নামের একটি ফাইলের মধ্যে চিত্রের আউটপুট তৈরি করা হবে q.bmp
। দুর্ভাগ্যক্রমে উইন্ডোজ বিটম্যাপ ফাইলগুলি কেবলমাত্র এই প্রোগ্রামটি সরবরাহ করে আউটপুট ফর্ম্যাট। আরও আউটপুট ফর্ম্যাট যুক্ত করার জন্য আরও লাইব্রেরিতে লিঙ্ক করা প্রয়োজন।
নোট করুন যে এই প্রোগ্রামটি সি -99 এর বাক্য গঠনটির সুবিধাকে সহজ-সরল আক্ষরিক মান প্রবর্তনের জন্য গ্রহণ করে, এইভাবে সংজ্ঞা দেওয়া দরকার এমন ভেরিয়েবলের সংখ্যা উল্লেখযোগ্যভাবে হ্রাস করে। এটি এমন কিছু যা আরও সি গল্ফারদের নেওয়া উচিত।