Name: Anonymous 2012-10-07 19:34
SUPERBOLD
[b]HAX MY Un1[0d3 MY ANUS[/b]
#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include <ctype.h>
// transform an integer (up to 16 bits) to a 3 byte utf-8 block and print it
// 1110xxxx 10xxxxxx 10xxxxxx
void printtchar(uint32_t u) {
putchar(u >> 12 & 0x0F | 0xE0);
putchar(u >> 6 & 0x3F | 0x80);
putchar(u & 0x3F | 0x80);
}
// transform an integer (up to 21 bits) to a 4 byte utf-8 block and print it
// 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
void printqchar(uint32_t u) {
putchar(u >> 18 & 0x07 | 0xF0);
putchar(u >> 12 & 0x3F | 0x80);
putchar(u >> 6 & 0x3F | 0x80);
putchar(u & 0x3F | 0x80);
}
// transform a string to a special area (1D400..1D7FF) string and print it
void transformq(const char *s, uint32_t u) {
size_t i;
if(s == NULL)
return;
for(i = 0; s[i] != '\0'; i++) {
if(isupper(s[i]))
printqchar(s[i] - 'A' + u);
else if(islower(s[i]))
printqchar(s[i] - 'a' + u + 26);
else
putchar(s[i]);
}
}
// transform a string to a superbold string and print it
void superbold(const char *s) {
size_t i;
if(s == NULL)
return;
for(i = 0; s[i] != '\0'; i++) {
if(s[i] >= '!' && s[i] <= '~')
printtchar(s[i] - '!' + 0xFF01);
else
putchar(s[i]);
}
}
int main(int argc, char *argv[]) {
// not enough args
if(argc < 2) {
printf("Usage: superfont text [font]\n"
" font options:\n"
" -f for fraktur\n"
" -h for helvetica style\n"
" -H for helvetica bold style\n"
" -i for italic\n"
" -m for monospace\n"
" defaults to superbold\n");
return 0;
}
// 2+ args -> try to get option in third arg
else if(argc > 2) {
if(!strcmp("-f", argv[2]))
transformq(argv[1], 0x1D56C);
else if(!strcmp("-h", argv[2]))
transformq(argv[1], 0x1D5A0);
else if(!strcmp("-H", argv[2]))
transformq(argv[1], 0x1D5D4);
else if(!strcmp("-i", argv[2]))
transformq(argv[1], 0x1D4D0);
else if(!strcmp("-m", argv[2]))
transformq(argv[1], 0x1D670);
else
superbold(argv[1]);
}
// 2 args -> superbold
else {
superbold(argv[1]);
}
return 0;
}
main().