Çäåñü: Smooth Big Text è list îïèñàí ìåòîä "ðàñòÿãèâàíèÿ" è "ñãëàæèâàíèÿ" øðèôòà (Stretch, Smoothing) áåç èñïîëüçîâàíèÿ íîâîãî øðèôòà ñ áîëåå âûñîêèì ðàçðåøåíèåì (è áîëüøå èñïîëüçóåìîé ïàìÿòè). "Ìàòåìàòèêà" èíòåðåñíàÿ: ïî Y çà êàæäîé áèò ñëåäóåò ïîâòîðåíèé abcdefgh -> aabbccddeeffgghh (à ïîñëå ïî X ñëåäóåò äîáàâèòü ïîâòîðåíèå ñòîëáöà). Íà äàííûé ìîìåíò ÿ ýêñïåðèìåíòàëüíî èñïîëüçîâàë êîä äëÿ Stretch. Ðåçóëüòàòû õîðîøèå: îò 3õ8 øðèôò ñ óäâîåííûì ðàçìåðîì ïàìÿòè ìåíüøå, ÷åì ïîä íîâûé øðèôò
. (Íó, ìåäëåííåå, ýòî ïîíÿòíî).
Êîä:
// Converts bit pattern abcdefgh into aabbccddeeffgghh
// http://www.technoblogy.com/list?3AMG
// http://www.technoblogy.com/show?3AJ7
uint16_t stretch(uint16_t x) {
x = (x & 0xF0) << 4 | (x & 0x0F);
x = (x << 2 | x) & 0x3333;
x = (x << 1 | x) & 0x5555;
return x | x << 1;
}