ÀÚ, º¹½ÀÇغ¼±î¿ä? X À©µµ¿ì¿¡¼ ÇϳªÀÇ ¹®ÀÚ ¶Ç´Â ¹®ÀÚ¿À» Ãâ·ÂÇϱâ À§Çؼ´Â ¸î °¡Áö °úÁ¤À» °ÅÃÄ¾ß ÇÕ´Ï´Ù.
¾ÆÁÖ °£´ÜÇÑ °úÁ¤ÀÌÁÒ? ¿À´ÃÀº ÀÌ°ÍÀ» ½ÉÈÇнÀÇÏ°Ú½À´Ï´Ù. ±×¸®°í ÇÑ±Û Ãâ·Â¿¡ ´ëÇÏ¿© ¾Ë¾Æº¸µµ·Ï ÇÏÁÒ.
ÄÄÇ»Å͸¦ ¾²¸é¼ ¿ì¸®¸¦ °¡Àå ¸¹ÀÌ ±«·ÓÈ÷´Â ¹®Á¦ Áß¿¡ Çϳª°¡ ¹Ù·Î ÇÑ±Û ¹®Á¦ ÀÔ´Ï´Ù. À߸øµÈ Á¤Ä¡·Î ÀÎÇØ ¿ì¸® ÇÑ±Û ÄÚµå´Â Á¶ÇÕÇü/¿Ï¼ºÇü ÀÌÁ¦´Â ¾ó¸¶Àü °øÁøû¿¡¼ ¸¸µç °ÅÀÇ À¯¸í¹«½ÇÇÑ KSC5700 ÄÚµå, M$ µîÀÌ ÁÖÃàÀÌ µÇ¾î ÃßÁøÇÏ°í ÀÖ´Â À¯´ÏÄÚµå, M$ »ç¿¡¼ Çѱ¹ÀεéÀ» ¿ì·ÕÇÏ´Â µíÀÌ ¹öÁ£ÀÌ ¸¸µé¾î ³õ°í À©µµ±× 95¿Í À©µµ±× NT ¿¡¼ ¾²°í ÀÖ´Â È®Àå¿Ï¼ºÇü( ¶Ç´Â ÅëÇտϼºÇü, À̸§ÀÌ ¾îÂî µÇ¾úµç ½Çü´Â °°À½ )ÀÌ ÀÖ½À´Ï´Ù. ¿ì¸®ÀÇ ÇѱÛÀÌ °ÅÀÇ ¸ö»ìÀ» ¾Î°í ÀÖ´Ù°í Çصµ °ú¾ðÀÌ ¾Æ´Õ´Ï´Ù. ÄÄÇ»ÅÍÀÇ ÃÊâ±â( ÇöÀçÀÇ ÇÑÄÄ»ç »çÀå ÀÌÂùÁø¾¾°¡ ±× À¯¸íÇÑ ¾Æ·¡ÇѱÛÀ» ¸¸µé´ø ½ÃÀý ÀÌÀü )¿¡ °¢ ȸ»ç¿¡¼ ¿Õ¼ºÇÏ°Ô º¸¿©ÁÖ¾ú´ø ÇѱÛÈÀÇ ¿±â´Â Á¤¸»·Î ¶ß°Å¿ü½À´Ï´Ù. ±×¾ß ¹°·Ð ´ç¿¬È÷ Á¶ÇÕÇüÀ̾úÁö¿ä. ÇÏÁö¸¸ Á¤ºÎ¿Í ¸î¸î °üº¯ Á¤ºÎÀÇ ÇϼöÀÎ °üº¯ ÇÐÀÚµé ´öºÐ¿¡ ¿Ï¼ºÇüÀ̶ó´Â ±«¹°ÀÌ Åº»ýÇÏ¿´°í, ±× ÀÌÈÄ ÇѱÛÈÀÇ ¿±â´Â Âù¹°À» µÚÁý¾î ½è½À´Ï´Ù. °Ô´Ù°¡ ÇѱÛÀº ¾î´À»õ ±â¾÷ÀÌ ¼ÒÇÁÆ®¿þ¾î¸¦ ÆȾƸԱâ À§ÇÑ ¹«±â°¡ µÇ¾î¹ö¸®°í ¸»¾Ò½À´Ï´Ù. ÇѱÛÈ ±â¼úÀº ±â¾÷ÀÇ µ¶Á¡ÀûÀÎ ¶óÀ̼¾½º³ª ´Ù¸§ ¾ø¾îÁ³°í M$ »çÀÇ °æ¿ì¿¡´Â ´õ´õ¿í ÇѱÛÀ» º¼¸ð·Î »ï°í ÀÖÁö¿ä.
¸®´ª¼µé¿¡°Ô ÇѱÛÈ ±â¼úÀ» °¡Á®´Ù Á٠ȸ»ç´Â ¾ø½À´Ï´Ù! ¹Ù·Î ¿ì¸®µéÀÇ ÈûÀ¸·Î ÀÌ·èÇØ¾ß ÇÕ´Ï´Ù. ¶ÇÇÑ ¸®´ª¼µéÀº ³²µéÀÌ ÇØÁÖ±æ ¹Ù¶óÁöµµ ¾Ê½À´Ï´Ù. ¹Ù·Î ÀÌÁ¦ºÎÅÍ ¿ì¸® ½º½º·ÎÀÇ ÈûÀ¸·Î ¾Æ¸§´Ù¿î ÇѱÛÀ» ±¸ÇöÇØ ³ª°©½Ã´Ù. ÇѱÛÀ» º¼¸ð·Î Àâ°í ¼ÒºñÀÚ¸¦ ¿ì·ÕÇÏ´Â ±â¾÷µé¿¡°Ô º»¶§¸¦ º¸¿©Áà¾ß ÇÒ ½Ã°£À̶ó°í »ý°¢ÇÕ´Ï´Ù.
¸ðµç ¹®Á¦´Â ¹Ù·Î ¿µ¹® ·Î¸¶ÀÚ´Â 1 ¹ÙÀÌÆ®·Î Ç¥ÇöÇÏ°íµµ ³²´Â ¹Ý¸é, Çѱ¹¾î, Áß±¹¾î ÀϺ»¾î¿Í °°Àº µ¿¾ç±Ç ¾ð¾îµéÀº 2 ¹ÙÀÌÆ® ÀÌ»óÀ» ÇÊ¿ä·Î ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. µû¶ó¼ 1 ¹ÙÀÌÆ® ·Î¸¶ÀÚ¸¦ Ãâ·ÂÇÏ´Â ÇÔ¼ö¿Í´Â ´Ù¸¥ ¹æ½ÄÀÇ ÇÔ¼ö¸¦ »ç¿ëÇϸç, ¹®ÀÚ¿¿¡ ´ëÇÑ ¾à°£ÀÇ °¡°ø°úÁ¤À» °ÅÃÄ¾ß ÇÕ´Ï´Ù.
±× ¿Ü¿¡ ÆùÆ®¸¦ Àоî¿À´Â °Í, GC¿¡ µî·ÏÇÏ´Â °Í°ú °°Àº °úÁ¤Àº Â÷ÀÌ ¾ø½À´Ï´Ù. ´ÜÁö Á¶°ÇÀÌ Çϳª ÀÖ´Ù¸é X ÆùÆ®¼¹ö(xfs, X À©µµ¿ì¸¦ ½ÃÀÛÇÏ¸é ¿ì¸® ¸ð¸£°Ô ¶° ÀÖ½À´Ï´Ù ±×·¯´Ï °ÆÁ¤ÇÏ½Ç ÇÊ¿ä¾øÀ½ )°¡ 2 ¹ÙÀÌÆ® Ãâ·ÂÀ» Áö¿øÇÏ´À³ÄÀÇ ¹®Á¦Àε¥, ¿äÁò¿¡ 2 ¹Ù ÀÌÆ® Áö¿øÇÏÁö ¾Ê´Â X ¼¹öµµ ÀÖ³ª¿ä? :)
X À©µµ¿ì¿¡¼ ÇÑ±Û ¾îÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÏ´Â ¹æ¹ýÀº Å©°Ô 2 °¡Áö°¡ ÀÖ½À´Ï´Ù.
ÀÌ¿Ü¿¡µµ ¿ì¸®°¡ À©µµ±×¿¡¼ ÁÖ·Î »ç¿ëÇÏ¿´´ø ÇѸÞÇѱÛó·³ HanX ¶ó°í ÇÏ´Â °ÍÀ» ÀÌ¿ëÇؼ ÇѱÛÀ» º¼ ¼ö ÀÖµµ·Ï(Ãâ·Â¸¸) ÇÏ´Â ¹æ½Äµµ ÀÖ½À´Ï´Ù.
¿ì¸®°¡ ÀÍÇô¾ß ÇÒ °ÍÀº ÀüÀÚ/ÈÄÀÚÀÇ °³¹ß ¸ðµÎ¿¡ °øÅëµÇ´Â °¡Àå ±âº»ÀûÀÎ ÇѱÛÃâ·Â ¹æ¹ýÀÔ´Ï´Ù. ÇöÀç Àú´Â ÈÄÀÚÀÇ °³¹ß¿¡ ³ë·Â ÁßÀÔ´Ï´Ù. ¾î¼ »¡¸® XFree86 ¿¡µµ »ó¿ë ¸øÁö ¾ÊÀº ÇÑ±Û ½Ã½ºÅÛÀ» žÀçÇÏ¿© ÇÁ·Î±×·¥ °³¹ß¿¡¼ ÇÑ±Û Ã³¸®¿¡ ÇÒ¾ÖÇÏ´Â ½Ã°£°ú ³ë·ÂÀ» ¾Æ³¥ ¼ö ÀÖµµ·Ï ÇؾßÇÑ´Ù°í ¹Ï½À´Ï´Ù.
ÇöÀç X À©µµ¿ì¿¡¼ »ç¿ëµÇ´Â ÇÑ±Û ÆùÆ®ÀÇ Á¾·ù´Â Å©°Ô 3 °¡Áö¶ó°í ¸»ÇÒ ¼ö ÀÖ½À´Ï´Ù. 1 ¹ø°·Î´Â ¿©·¯ºÐÀÌ ¾Ö¿ëÇϽô ÇÑÅÒ Á¶ÇÕÇü ÆùÆ®ÀÔ´Ï´Ù. 2 ¹ø°´Â ´ë¿ìÆùÆ®, ÇѾçÆùÆ® µîÀÇ ¿Ï¼ºÇü ÆùÆ®ÀÔ´Ï´Ù. 3 ¹ø°´Â °°Àº ¿Ï¼ºÇü ÆùÆ®À̸鼵µ ¾ÕÀÇ µÎ °³¿Í´Â ¾ÆÁÖ »ç¼ÒÇÏ°Ô ´Ù¸¥ 󸮰úÁ¤À» °ÅÃÄ¾ß ÇÏ´Â »ïº¸ ÆùÆ®°¡ ÀÖ½À´Ï´Ù.
ÀÌ·¸°Ô ´Ù¾çÇÑ ÆùÆ® Çü½ÄÀÇ Á¸Àç´Â ´Ù¾çÇÑ ÆùÆ® Ãâ·Â ¿¹ºñÀÛ¾÷ÀÌ ÇÊ¿äÇÔÀ» ÀÇ¹Ì ÇÕ´Ï´Ù.
Àú´Â ÀÏ´Ü ¿©±â¼ Á¦ÀÏ °£´ÜÇÑ 2 ¹ø° °æ¿ì¸¸ ¼³¸íµå¸®±â·Î ÇÏ°Ú½À´Ï´Ù. ¹Ì·ÁÇÑ ÆùÆ®ÀÎ 1 ¹ø° ÇÑÅÒ Á¶ÇÕÇü ÆùÆ®ÀÇ Ãâ·ÂÀ» ´Ù¸¥ ÇÑ ¹øÀÇ °ÀǸ¦ ÇÒ¾ÖÇØ¾ß ÇÒ ¸¸Å ¸¹Àº À̾߱Ⱑ ÇÊ¿äÇϱ⠶§¹®ÀÔ´Ï´Ù. ( »ç½ÇÀº »ïº¸ ÆùÆ®°¡ ´õ ½±Áö¸¸¼µµ ±¸ÇÒ ¼ö°¡ ¾øÀ¸´Ï... )
ÀÚ, ±×·¯¸é ¿©·¯ºÐÀÌ ¿Ï¼ºÇü ¹æ½ÄÀÇ ÆùÆ®¸¦ °¡Áö°í ÀÖ´Ù°í »ý°¢ÇÏ°í ½ÃÀÛÇÏ°Ú½À´Ï´Ù
ÇÔ¼öÀÇ ¿øÇü : <X11/Xlib.h> ¿¡ ¼±¾ð
XDrawString16(display, d, gc, x, y, string, length)
Display *display;
Drawable d;
GC gc;
int x, y;
XChar2b *string;
int length;
¿ì¸®´Â ÇÑ±Û ÆùÆ®¸¦ °¡Áö°í ÇѱÛÀ» Ãâ·ÂÇϱâ À§Çؼ XDrawString À̶ó´Â 1 ¹ÙÀÌÆ® ¾ð¾î±Ç ÇÔ¼ö¸¦ »ç¿ëÇÏÁö ¾Ê°í ³¡¿¡ 16À̶ó´Â ¼ýÀÚ°¡ ºÙÀº ÇÔ¼ö¸¦ »ç¿ëÇÏ°Ô µË´Ï´Ù. ±×¸®°í À¯½ÉÈ÷ »ìÆ캸¸é XDrawString ¿¡¼´Â char * ÇüÀ̾ú´ø ºÎºÐÀÌ ¿©±â¼´Â XChar2b * ÇüÀ¸·Î ¹Ù²î¾î ÀÖÁÒ. ¿ì¸®´Â ¿©±â¼ »õ·Î¿î ÀÚ·áÇü¿¡ ´ëÇؼ ¶ÇÇÑ ¾Ë¾ÆºÁ¾ß ÇÕ´Ï´Ù. :<
typedef struct { /* normal 16 bit characters are two bytes */
unsigned char byte1;
unsigned char byte2;
} XChar2b;
¿ì¸® ¸»¿¡ ´ëÇÑ Ç¥ÇöÀº ÇöÀç 2 ¹ÙÀÌÆ® Ç¥Çö¹ýÀÌ °¡Àå ¸¹ÀÌ »ç¿ëµÇ°í ÀÖÀ¸¸é Ç¥ÁØÀûÀ̶ó°íµµ ¸»ÇÒ ¼ö ÀÖÀ» °Í °°½À´Ï´Ù. ÇÑ±Û ÇÑ ±ÛÀÚ "ÇÑ" À̶ó´Â ¹®ÀÚ´Â ¿µ¹® 2 ¹ÙÀÌÆ®·Î µÇ¾î ÀÖ°í ±×°Í°ú ÀÏ´ëÀÏ ´ëÀÀÇÏ´Â °ÍÀÌ ¹Ù·Î XChar2b Çü º¯¼öÀÔ´Ï´Ù. µû¶ó¼ ¿ì¸®´Â char * Çü ¹è¿À» XChar2b * Çü ¹è¿·Î º¯È¯½ÃÄÑ Áֱ⸸ ÇÏ¸é µË´Ï´Ù. ±Ùµ¥ ¿ì¸®°¡ ¸¹ÀÌ °¡Áö°í ÀÖ´Â ÇѾçÆùÆ®³ª ´ë¿ìÆùÆ®ÀÇ °æ¿ì, ¸»ÀÌ ½±Áö ±×·¸°Ô´Â µÇÁø ¾Ê½À´Ï´Ù.
´ÙÀ½°ú °°Àº ¿¬»êÀÌ ÀÌ·ç¾îÁ®¾ß ÇÕ´Ï´Ù. ÀÏ´Ü 'ÇÑ'À̶ó°í ÇÏ´Â 2 ¹ÙÀÌÆ® ÇÑ±Û ÇÑ ±ÛÀÚ°¡ ÀÖ´Ù°í Ä¡¸é...
char *Han = "ÇÑ";
XChar2b HanX;
HanX.byte1 = *(Han) - 0x80; /* ÁÖÀÇ! 0x80 °ªÀ» »©ÁÖ°í ÀÖ´Ù */
HanX.byte2 = *(Han+1) - 0x80;
º¸½Ã´Ù½ÃÇÇ ±×³É ÇÑ±Û 2 ¹ÙÀÌÆ®¿Í XChar2b Çü ±¸Á¶Ã¼ ¸â¹ö °£ÀÇ °£´ÜÇÑ ÀÏ´ëÀÏ ´ëÀÀÀÌ ¾Æ´Ï¶ó, 0x80 °ªÀ» »©ÁÖ¾î¾ß ÇÑ´Ù´Â ÀÚÀßÇÑ Áß°£ °úÁ¤ÀÌ ÇÊ¿äÇÕ´Ï´Ù. ( Âü°í·Î »ïº¸ ÆùÆ®´Â 0x80 °ªÀº °ªÀ» »©ÁÖÁö ¾Ê°í ±×³É ÀÏ´ëÀÏ ´ëÀÀ½Ãŵ´Ï´Ù. )
ÀÌÁ¦ Á» °¨ÀÌ ¿À¼Ì½À´Ï±î? ¾Ë°í ³ª´Ï ±²ÀåÈ÷ ½±Áö ¾Ê³ª¿ä? :)
#include <X11/Xlib.h>
#include <stdio.h>
int main()
{
Display *dpy;
int screen;
Window w;
Font hanFont, engFont;
GC gc;
XChar2b HStrBuf[256];
int n;
dpy = XOpenDisplay( NULL );
screen = DefaultScreen( dpy );
w = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 0, 0, 400, 300, 2,
BlackPixel( dpy, screen ), WhitePixel( dpy, screen ));
XMapWindow( dpy, w );
XFlush(dpy);
sleep(4); /* ¿Ö ³Ö¾úÀ»±î¿ä? */
gc = XCreateGC ( dpy, w, 0L, (XGCValues *) NULL );
hanFont = XLoadFont ( dpy,
"-daewoo-mincho-*-r-normal--16-*-*-*-c-*-*-*" );
engFont = XLoadFont ( dpy, "fixed" );
XSetFont( dpy, gc, hanFont );
n = convert_ks_to_display("¾È³çÇϼ¼¿ä¸®´ª¼", HStrBuf, 10);
XDrawString16(dpy, w, gc, 100, 100, HStrBuf, n);
XSetFont( dpy, gc, engFont );
XDrawString(dpy, w, gc, 100, 150, "Welcome to Linux!", 17 );
XFlush(dpy);
getchar();
}
/* ÇÑÅÒ ¼Ò½º¿¡¼ Àοë */
int convert_ks_to_display(char *str, XChar2b *buf, int n)
{
int i, j;
for (i = 0, j = 0; i < n;) {
buf[j].byte1 = str[i] - 0x80;
buf[j].byte2 = str[i+1] - 0x80;
i += 2, j++;
}
return j;
}
ÄÄÆÄÀÏ ¹æ¹ýÀº ¶È°°½À´Ï´Ù. ÀÌ»ó ¾øÀÌ ½ÇÇàµÇ·Á¸é ¿©·¯ºÐÀº /usr/X11R6/lib/fonts µð·ºÅ丮ÀÇ ÇϺΠµð·ºÅ丮 misc µð·ºÅ丮¿¡ ´ë¿ì ÆùÆ®°¡ ¼³Ä¡µÇ¾î ÀÖ¾î¾ß ÇÕ´Ï´Ù. ÈÀϸíÀº hanglm16.pcf.Z ÀÔ´Ï´Ù. fonts.dir ÈÀÏÀ» »ìÆ캸½Ã±â ¹Ù¶ø´Ï´Ù. ÇöÀç °¡Áö°í °è½Ã´Â ¿Ï¼ºÇü ¹æ½ÄÀÇ ÆùÆ®¸¦ ¾Æ¹«°Å³ª Àû¾îÁÖ½Ã¸é µË´Ï´Ù. Àü¿¡ ¼³¸íµå·È´ø XLFD ¹æ½ÄÀÇ Ç¥±â ¶Ç´Â ÀÚÁÖ ¾²´Â ÆùÆ®¸í¿¡ ´ëÇÏ¿© fonts.alias ¿¡´Ù º°¸íÀ» Á¤ÇØÁÖ½Ã°í ±× º°¸íÀ» »ç¿ëÇϽõçÁö ¸¶À½´ë·Î ÇÏ½Ã¸é µË´Ï´Ù. Âü°í·Î À§¿¡¼ »ç¿ëÇÑ ¿µ¹® ÆùÆ®¸í fixed ´Â »ç½Ç º°¸í¿¡ ÇØ´çµË´Ï´Ù. fonts.alias ¸Ç ¾Õ¿¡ Á¤ÀǵǾî ÀÖ½À´Ï´Ù.
Çѱ۷ΠÃâ·ÂÀ» Çغ¸½Ã´Ï ¾î¶°¼¼¿ä? Á¦°¡ óÀ½À¸·Î ÇÑÅÒ ¼Ò½º¸¦ º¸°í µ¶ÇÐÇÏ¸é¼ º°°Í ¾Æ´ÏÁö¸¸¼µµ ÇѱÛÀÌ Ãâ·ÂµÇ´Ï Âü ±âºÐÀÌ ÁÁ´õ±º¿ä. ±Ùµ¥ ¹®Á¦´Â ±×·¸°Ô °£´ÜÇÏÁö ¾Ê¾Ò½À´Ï´Ù. ¹«¾ùÀ̳ı¸¿ä?
À§ÀÇ ¼Ò½º¸¦ Àß »ìÆ캸½Ã±â ¹Ù¶ø´Ï´Ù. Àß º¸½Ã¸é ÇѱÛÀº Çѱ۴ë·Î µû·Î, ¿µ¹®Àº ¿µ¹®´ë·Î µû·Î Ãâ·ÂÇÏ°í ÀÖ½À´Ï´Ù. ÀÌ°ÍÀÌ ¹«¾ùÀ» ÀǹÌÇÏ´Â °ÍÀϱî¿ä? ¿¹! ±×·¸½À´Ï´Ù. ¿ì¸®´Â ¾ÈŸ±õ°Ôµµ Çѱ۰ú ¿µ¹®À» È¥¿ëÇؼ ¾²´Â ½Ã´ë¿¡ »ì°í ÀÖ½À´Ï´Ù. µû¶ó¼ ¿ì¸®´Â Á¾Á¾ »ç¿ëÀڷκÎÅÍ ´ÙÀ½°ú °°Àº ¹®ÀÚ¿À» ¹Þ°Ô µË´Ï´Ù.
char *MixedString = "ÀúÀÇ ÄÚ³Ý ÁÖ¼Ò´Â freeyong@soback.kornet.nm.kr ÀÔ´Ï´Ù";
¹«¾ùÀÌ ¹®Á¦ÀÌ°Ú½À´Ï±î?
XDrawString ÇÔ¼ö´Â ¿À·ÎÁö 1 ¹ÙÀÌÆ® ¹®ÀÚ±Ç ÆùÆ®¸¸ Ãâ·ÂÇÕ´Ï´Ù. ÀÌ¿¡ ºñÇÏ¿© XDrawString16 ÇÔ¼ö´Â ¹Ý´ë·Î 2 ¹ÙÀÌÆ® ¹®ÀÚ±Ç ÆùÆ®¸¸ Ãâ·ÂÇÕ´Ï´Ù. ±×·¸´Ù¸é À§¿Í °°ÀÌ Çѱ۰ú ¿µ¹®ÀÌ ¼¯¿© ÀÖ´Â °æ¿ì¿¡´Â ¹®ÀÚ¿À» ÁÖ¿í °Ë»öÇÏ¸é¼ Çѱ۰ú ¿µ¹®À» µû·Î Ãâ·ÂÇØÁÖ¾î¾ß ÇÑ´Ù´Â °á·ÐÀÌ ³ª¿É´Ï´Ù. :<
ÀÌ ºÎºÐÀÌ ¾à°£ÀÇ ³ë·ÂÀ» ÇÊ¿ä·Î ÇÑ´Ù°í ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿µ¹®°ú ÇѱÛÀÇ Á¶È¸¦ ¸ÂÃß´Â °ÍÀÌ ÇöÀç·Î¼´Â ¾ÆÁÖ Áß¿äÇÕ´Ï´Ù. ¾îÂî ÇÏ´Ùº¸´Ï ¿ì¸®³ª¶óµµ ¿µ¾î¹®È±ÇÀÌ µÇ¹ö¸° µíÇÑ ¾¹¾µÇÑ ±âºÐÀ» ¹ö¸± ¼ö°¡ ¾ø³×¿ä. ƯÈ÷ ÄÄÇ»ÅÍ ºÐ¾ß¿¡ ÀÖ¾î¼ Çѱ۸¸ ÀßµÇ°í ¿µ¹®Àº ´ë½Å¿¡ ²ÎÀÌ µÇ¹ö¸°´Ù¸é ¾Æ¹«µµ ±×°Å ¾²Áö ¾Ê½À´Ï´Ù.
µû¶ó¼ ¿©·¯ºÐÀº ÆùÆ® ·Îµù/ÆùÆ®¸¦ GC ¿¡ µî·Ï/ÆùÆ® Ãâ·Â ÀÌ·¸°Ô °£´ÜÇÑ °úÁ¤À» ³Ñ ¾î¼¼ ÆùÆ®¿¡ ´ëÇØ¿© ÀÚÀ¯ÀÚÀç·Î ó¸®ÇÏ½Ç ¼ö ÀÖ´Â ´É·ÂÀÌ ÇÊ¿äÇÏ°Ô µË´Ï´Ù.
¿©±â¼ºÎÅÍ´Â Á» ¾î·Á¿öÁö±â ½ÃÀÛÇÕ´Ï´Ù. Á¦°¡ ¿©±â¿¡ Àû¾î³õÀº ÇÔ¼ö´Â ÇÑÅÒ ¼Ò½º¿¡¼ ÇѱÛó¸® ºÎºÐÀ» º¸°í °í´ë·Î ÀúÀÇ ÇÑ±Û fvwm 2.0.42ÀÇ ÇÑ±Û Ã³¸®·çƾÀ¸·Î º¹»çÇÏ°í ¾à°£À» ¼öÁ¤ÇÑ °ÍÀÔ´Ï´Ù. ÀÌ ¸ðµç ºÎºÐÀ» ÀÌÇØÇÏ½Ç ÇÊ¿ä´Â ¾ø½À´Ï´Ù. ±×¸®°í ¾î´À Á¤µµ ½Ç·ÂÀÌ µÇ½Ã´Â ºÐµéÀº ÀÌ¹Ì ´Ù ¾Ë°í °è½Ã´Â ³»¿ëÀ̶ó°í ¹Ï½À´Ï´Ù. ¿©·¯ºÐÀÌ ÁÖ¸ñÇÏ¼Å¾ß ÇÒ ºÎºÐÀº ¼Ò½º ¾È¿¡¼ ¼³¸íÀ» µå¸®°Ú½À´Ï´Ù.
void HanXDrawString(Display *d, Drawable w, GC gc, XFontStruct *hfont,
XFontStruct *efont, int x, int hy, int ey,
char *str, int len, int hcode, int ftype )
{
int n;
char *p;
XChar2b buf[256];
/*
ÀÌ ÇÔ¼ö´Â º¸ÅëÀÇ ¾Æ½ºÅ° ¿µ¹®ÀÚ¿Í ÇѱÛÀÌ È¥ÇյǾî ÀÖ´Â ¹®ÀÚ¿À» ¹Þ½À´Ï´Ù.
¿©±â¼´Â str À̶ó´Â º¯¼öÀÔ´Ï´Ù.
*/
while (len > 0) {
if (*str & 0x80) {
/*
¹Ù·Î 0x80 °ú AND ¿¬»êÀ» ÇÔÀ¸·Î½á ¹ÙÀÌÆ®ÀÇ 8 ¹ø° ºñÆ®°¡ 1 ·Î µÇ¾î ÀÖ´Â
°¡¸¦ È®ÀÎÇÕ´Ï´Ù. ±×·¡¼ ÂüÀÌ¸é ±× ¹ÙÀÌÆ®¿Í ´ÙÀ½ ¹ÙÀÌÆ® µÎ °³´Â ÇѱÛÀ»
±¸¼ºÇÑ´Ù°í ÇÒ ¼ö ÀÖ½À´Ï´Ù.
*/
for (p = str; len > 0 && (*p & 0x80); p += 2, len -= 2)
;
/*
¿©±â¿¡ for ( ) ; ¶ó°í ÇÏ´Â Àç¹ÌÀÖ´Â ¹®ÀåÀÌ ÀÖ½À´Ï´Ù. ÇöÀç ÇѱÛÀÌ Ã³À½À¸
·Î ³ªÅ¸³ À§Ä¡ºÎÅÍ ¾îµð±îÁö ÇѱÛÀÌ Áö¼ÓµÇ´Â°¡¸¦ üũÇؼ ÇÑ±Û ¹®ÀÚ¿¸¸
Ãß·Á³»¾î ó¸®ÇÏ°íÀÚ ÇÏ´Â °Ì´Ï´Ù.
*/
n = HanXCharConvert(str,buf,p-str, hcode, ftype );
XSetFont( d, gc, hfont->fid );
XDrawString16(d,w,gc,x,hy,buf,n);
/* ¹Ù·Î ¿©±â¼ XDrawString16 ÇÔ¼ö¸¦ ½á¼ Ãâ·ÂÇÏ°í ÀÖ½À´Ï´Ù */
x += XTextWidth16(hfont,buf,n);
/* XTextWidth16 À̶ó´Â ÇÔ¼ö´Â ´«¿©°Ü º¸¼Å¾ß°ÚÁÒ? */
}
else {
/* ¿µ¹®ÀÏ ¶§ ó¸®ÇÏ´Â ·çƾÀÔ´Ï´Ù */
for (p = str; len > 0 && !(*p & 0x80); p++, len--)
;
/* ¸¶Âù°¡Áö·Î °è¼ÓÀûÀ¸·Î ASCII ¹®ÀÚ¸¸ ³ª¿Ã ¶§±îÁö Æ÷ÀÎÅÍ À̵¿ */
XSetFont( d, gc, efont->fid );
XDrawString(d,w,gc,x,ey,str,p-str);
x += XTextWidth(efont,str,p-str);
}
str = p;
}
XSetFont( d, gc, efont->fid );
}
/*
À§¿¡¼ ¾µ µ¥ ¾øÀÌ °è¼Ó XSetFont ¸¦ ¾²´Â ÀÌÀ¯´Â ÇϳªÀÇ GC ¿¡´Ù°¡ ÇÑ ¹øÀº
ÇÑ±Û ÆùÆ®¸¦ µî·ÏÇß´Ù°¡, ¶Ç ÇÑ ¹øÀº ¿µ¹® ÆùÆ®¸¦ µî·ÏÇÏ´Â ÀÛ¾÷À» Çϱ⠶§¹®
ÀÔ´Ï´Ù.
*/
ÀÚ, ¼³¸íÀ» µå¸®ÁÒ. À§¿¡¼ »ç¿ëÇÑ Å×Å©´ÐÀº ÇÑ±Û ÇÁ·Î±×·¡¹ÖÀ» ÇϽ÷Á´Â ºÐµéÀº ¾ÆÁÖ ±âº»ÀûÀ¸·Î ÀÍÈ÷¼Ì¾î¾ß ÇÏ´Â ³»¿ëÀÔ´Ï´Ù. ÇÑ±Û ÇÑ ±ÛÀÚ´Â 2 ¹ÙÀÌÆ®À̸ç, ù¹ø° ¹ÙÀÌÆ®ÀÇ MSB ´Â 1 ·Î ¼ÂÆõȴٴ »ç½ÇÀÌÁÒ. ±×·¡¼ ÇѱÛÀÎÁö ¾Æ´ÑÁö¸¦ üũÇÏ´Â °¡Àå ±âº»ÀûÀ̸鼵µ À¯ÀÏÇÑ ¹æ¹ýÀº ¹Ù·Î ºñÆ®¸Å½ºÅ© ¿¬»êÀ» Çغ¸´Â °Ì´Ï´Ù. 0x80 À̴ϱñ ÀÌÁø¼ö·Î´Â 1000 0000 ÀÔ´Ï´Ù. ÀÌ ¼ýÀÚ¿Í & ¿¬»êÀ» ÇÏ¸é µÑ ´Ù 1 ÀÎ °æ¿ì¸¸ ÂüÀÌ µÇ¹Ç·Î °ú¿¬ MSB °¡ 1 Àΰ¡ ¾Æ´Ñ°¡¸¦ ½Äº°Çس¾ ¼ö ÀÖ´Â °ÍÀÔ´Ï´Ù.
ÀÚ¼¼ÇÑ ³»¿ëÀº C ¾ð¾îÃ¥À» º¸½Ã°í ºñÆ®¸Å½ºÅ© ¿¬»êÀ» °øºÎÇϽñ⠹ٶø´Ï´Ù. Á¦°¡ ±ÇÇÏ°í ½ÍÀº Ã¥Àº Ä¿´Ï°Ç & ¸®Ä¡ÀÇ "C Programming Language" ÀÔ´Ï´Ù. Ä¿´Ï°Ç°ú ¸®Ä¡°¡ ¾î¶² »ç¶÷ÀÎÁö´Â ¾Æ½ÃÁÒ? :) ¸ð¸£½Ã¸é ²À ¾Ë¾Æº¸¼¼¿ä. ±âÃÊ »ó½Ä¿¡ ÇØ´çÇϴϱñ¿ä :)
ÇÑ±Û Ãâ·Â ¹ú½áºÎÅÍ ÀÌ·¸°Ô ¾î·Æ±º¿ä. ( ±Ùµ¥ ÇÑ±Û ÀÔ·ÂÀº ´õ¿í ´õ Ȳ´çÇÒ °Ì´Ï´Ù )
ÀÌÁ¦ºÎÅÍ ´Ù·ç°íÀÚ ÇÏ´Â ³»¿ëÀº ¿ì¸®°¡ óÇÒ ¼ö ÀÖ´Â ¾î¶² °æ¿ì¿¡¶óµµ ÀÚÀ¯ÀÚÀç·Î ÆùÆ®¸¦ ó¸®ÇÏ´Â ¹æ¹ý¿¡ ´ëÇÑ °ÍÀÔ´Ï´Ù. XDrawString À̳ª XDrawString16 À̶ó´Â ÇÔ¼ö´Â ¿ì¸®°¡ Á¤ÇØÁÖÁö ¾Ê¾Æµµ ÆùÆ® °íÀ¯ÀÇ Æ¯¼º¿¡ µû¶ó ¹®ÀÚ¿À» ¿¹»Ú°Ô ÇÑ ÁÙ·Î ³ªÅ¸³»ÁÝ´Ï´Ù. ÇÏÁö¸¸ µÎ ÁÙ ÀÌ»óÀÌ µÇ´Â ¹®ÀÚ¿Àº? ÁÙ°£°ÝÀ» ¾î¶»°Ô ÇÒ±î¿ä? Ãâ·ÂµÈ ¹®ÀÚ¿Àº µµ´ëü ¾ó¸¶ÀÇ ÆøÀ» °¡Áö°í ÀÖ´ÂÁö... µîµî ¹®ÀÚ¿À» ¿©·¯ºÐ ¸¶À½²¯ Ãâ·ÂÇϱâ À§Çؼ´Â ÆùÆ®¿¡ ´ëÇÑ Àü¹ÝÀûÀÎ Á¤º¸ ¶Ç´Â ÇÊ¿ä¿¡ µû¶ó ÇÑ ±ÛÀÚ ÇÑ ±ÛÀÚ¿¡ ´ëÇÑ Á¤º¸¸¦ ¾Ë¾Æ³»¾ß ÇÕ´Ï´Ù.
±Ùµ¥ ÆùÆ®¿¡ ´ëÇÑ Á¤º¸´Â ¾îµð¿¡ ÀÖ´Ù°í ÇßÁÒ? ¿¹. ¸Â½À´Ï´Ù. ±×°ÍÀº X ¼¹ö¿¡ ÀÖ½À´Ï´Ù. ¿ì¸®´Â º¸Åë °¡Àå °£´ÜÇÑ ÇüÅ·μ XLoadFont ÇÔ¼ö¸¦ ½á¼ ÆùÆ® ID ¸¦ ¾ò¾î¿É´Ï´Ù.
XQueryTextExtents16(display, font_ID, string, nchars,
direction_return, font_ascent_return,
font_descent_return, overall_return)
Display *display;
XID font_ID;
XChar2b *string;
int nchars;
int *direction_return;
int *font_ascent_return, *font_descent_return;
XCharStruct *overall_return;
¿ì¸®°¡ »ç¿ëÇÏ°íÀÚ ÇÏ´Â ÇÔ¼ö´Â ¹Ù·Î XQueryTextExtents16 À̶ó´Â ¾ÆÁÖ ±ä À̸§À» °¡Áø ÇÔ¼öÀÔ´Ï´Ù. ¿ì¸® ºñ¿µ¾î ¹®È±Ç »ç¶÷µé¿¡°Ô´Â ÈûµéÁö ¸ô¶óµµ ±×µé¿¡°Ô´Â ½¬¿î ÇÔ¼ö¸íÀÌ°ÚÁÒ? X ·Î ½ÃÀÛÇÏ´Â ÇÔ¼ö´Â ¹Ù·Î Xlib ÇÔ¼öÀÓÀ» ÀǹÌÇÏ´Â °ÍÀÌ°í Query Á¶»çÇÏ´Ù, TextExtents ´Â ÅؽºÆ®ÀÇ ¿µ¿ª ¹üÀ§, µÚ¿¡ 16 À» ºÙÀÎ °ÍÀº 1 ¹ÙÀÌÆ®±Ç ¹®ÀÚ°¡ ¾Æ´Ï¶ó 2 ¹ÙÀÌÆ®±Ç ¹®ÀÚÀÓÀ» ³ªÅ¸³»ÁÖ°í ÀÖ½À´Ï´Ù. ÀÏ´Ü À§¿¡¼ ÆùÆ® ID º¯¼öÇüÀÌ XID ÀÎ °ÍÀº ¿©·¯ºÐÀÌ »ý°¢ÇØ º¸½Ê½Ã¿ä. 2 ¹ÙÀÌÆ®±Ç ¹®ÀÚ¿À̹ǷΠXChar2b Çü ¹è¿À» »ç¿ëÇÏ¿´°í nchars ´Â ±× ¹è¿ÀÇ Å©±â¸¦ ¾Ë·ÁÁÝ´Ï´Ù ÀÌÁ¦ºÎÅÍ 4 °³ÀÇ Æ÷ÀÎÅÍ Àü´Þº¯¼öµéÀÌ ÀÖ±º¿ä. ¿©·¯ºÐÀÌ »ý°¢Çϱ⿡ ¿Ö ÀÌ ³à¼®µéÀº Æ÷ÀÎÅÍ·Î ÁÖ¾îÁ³À»±î¿ä? ¸Â½À´Ï´Ù. ÀÌ º¯¼öµé¿¡´Ù°¡ ¿ì¸®°¡ ¿øÇÏ´Â Á¤º¸¸¦ ¾ò¾î ¿À·Á°í ÇÏ´Â °ÍÀÔ´Ï´Ù.
direction_return Àº FontLeftToRight, FontRightToLeft ¶ó´Â Á¤º¸°¡ µé¾î ÀÖ½À´Ï´Ù ¿µ¾î¸¦ Á»¸¸ ÀÐÀ¸½Ç ¼ö ÀÖ´Ù¸é ¹«½¼ ¶æÀÎÁö ¾Æ½Ç °Ì´Ï´Ù. º¸ÅëÀÇ °æ¿ì FontLeftToRight ÀÌ°ÚÁÒ? ¹®ÀÚ¿ÀÇ Ãâ·ÂÀÌ Á --< ¿ì Àΰ¡? ¾Æ´Ï¸é ±× ¹Ý´ëÀΰ¡ ÀÔ´Ï´Ù.
font_ascent_return°ú font_descent_return ¿¡ ´ëÇÑ À̾߱â´Â ÇÑ±Û ¹®ÀÚ¿Í´Â ´Ù¸¥ ¿µ¹® ¹®ÀÚ¸¸ÀÇ Æ¯¼º¿¡ ´ëÇؼ ¾Ë¾Æ¾ß ¾ê±â°¡ µÉ °Í °°±º¿ä. ¿ì¸® ¹®ÀÚ´Â ÀÌ·¯ÇÑ °³³äÀÌ ¾ø´Ù°í³ª ÇÒ±î¿ä? ¿µ¹®ÀÚ y ¸¦ ¿¹·Î µé¾îº¾½Ã´Ù. º¸Åë ¿ì¸®°¡ ÁßÇб³ óÀ½ µé¾î°¡¼( À¹! ¿äÁòÀº ÃʵîÇб³¿¡¼ºÎÅÍ Çϳª¿ä? ) ¿µ¾î ½Ã°£¿¡ ÇÏ´Â ÀÏÀº ¾ËÆĺª ¾²±â¿´½À´Ï´Ù. ÀÏ´Ü ¹®¹æ±¸¿¡ °¡¼ µû·Î Á¦ÀÛµÈ ¿µ¾î ³ëÆ®¸¦ ÇÑ ±Ç »ð´Ï´Ù. °øÃ¥À» ÆîÄ¡¸é ¸¶Ä¡ ¿À¼±Áöó·³ ÁÙÀÌ ÁÖ¿íÁÖ¿í ±×¾îÁ® ÀÖ°í, ÀÚ¼¼È÷ º¸½Ã¸é ÆĶõÁÙ ¸»°í »¡°£ÁÙÀÌ ±×¾îÁ® ÀÖ´ø °ÍÀÌ ±â¾ï³ª½Ê´Ï±î? ±× »¡°£ÁÙÀº baseline À̶ó°í ÇÕ´Ï´Ù. a b c ¿Í °°Àº ¹®ÀÚ´Â ¸ðµÎ ±× »¡°£ÁÙ À§¿¡ ¾º¿©Áý´Ï´Ù. ÇÏÁö¸¸ g j y °°Àº ¹®ÀÚµéÀº »¡°£ÁÙ ¾Æ·¡·Î ³»·Á°¡´Â ºÎºÐÀÌ ÀÖÁö¿ä? ÀÌÁ¦ °¨ÀÌ ¿À¼ÌÀ» °Ì´Ï´Ù. font_ascent_return ( ascentÀÇ ÀÇ¹Ì¿Í descentÀÇ Àǹ̸¦ »çÀüÀ» ã¾Æº¸½Ã¸é ¾ÆÁÖ ¸íÈ®ÇØÁý´Ï´Ù )´Â ±× »¡°£ baseline À§·Î ¸î Çȼ¿¸¸Å ¿Ã¶ó°¡ Àִ°¡? ±×¸®°í font_descent_returnÀº baseline ¾Æ·¡·Î ¾ó¸¶¸¸ÅÀΰ¡¸¦ ³ªÅ¸³»ÁÝ´Ï´Ù. ¿ì¸® Çѱ۰ú´Â ÀüÇô °ü·ÃÀÌ ¾ø´Ù°í ÇÒ ¼ö ÀÖÁÒ. :) ÇÏÁö¸¸! ±×·¸Áöµµ ¾Ê½À´Ï´Ù. ¿ì¸®°¡ Çѱ۰ú ¿µ¹®À» È¥¿ëÇÒ ¶§ ¿ì¸® ÇѱÛÀº ¿µ¹®°ú Á¶È¸¦ ÀÌ·ç±â À§Çؼ Ç×»ó baseline À§¿¡ ¾º¿©Á®¾ß ÇÏ°ÚÁÒ? ¾û¶×ÇÏ°Ô y ÀÚÀÇ ¹ØºÎºÐ°ú ÆòÇàÇÏ°Ô ¾º¿©Áö¸é ¿µ º¸±â ½È¾îÁý´Ï´Ù.
overall_returnÀº ±ÛÀÚ ±×´ë·Î Àü¹ÝÀûÀÎ Á¤º¸¸¦ °¡Á®´Ù ÁÝ´Ï´Ù. »õ·Î¿î ÀÚ·áÇüÀ̱º¿ä. XCharStruct ¶ó´Â.... ÀÌ ÀÚ·áÇüÀÌ ¾î¶»°Ô ÀÌ·ç¾îÁ® ÀÖ´ÂÁö´Â Xlib.h Çì´õ ÈÀÏ¿¡¼ ã¾Æº¸¸é ´ÙÀ½°ú °°½À´Ï´Ù.
/*
* per character font metric information.
*/
typedef struct {
short lbearing; /* origin to left edge of raster */
short rbearing; /* origin to right edge of raster */
short width; /* advance to next char's origin */
short ascent; /* baseline to top edge of raster */
short descent; /* baseline to bottom edge of raster */
unsigned short attributes; /* per char flags (not predefined) */
} XCharStruct;
ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â ÀÌÀ¯´Â °ú¿¬ Áö±Ý Ãâ·ÂÇÏ·Á°í ÇÏ´Â ¹®ÀÚ¿ÀÌ ¾î´À ¸¸ÅÀÇ ¿µ¿ªÀ» Â÷ÁöÇÒ °ÍÀΰ¡¸¦ °¡´ÆÇÏ´Â °ÍÀÔ´Ï´Ù. ¹®ÀÚ¿ÀÇ ³ôÀÌ(height)´Â ´ÙÀ½°ú °°½À´Ï´Ù.
ascent ¸Ø¹ö + descent ¸â¹ö
À§·Î ¾ó¸¶¸¸ÅÀ̸ç, ¾Æ·¡·Î ¾ó¸¶¸¸ÅÀÎÁö¸¦ ´õÇÏ¸é µË´Ï´Ù. ÇѱÛÀº descent = 0 :) ±×·¡µµ ÀÏ°ü¼ºÀ» À§Çؼ Ç×»ó ÀÌ·¸°Ô ½áÁֽʽÿä.
´ÙÀ½À¸·Î ¹®ÀÚ¿ÀÇ Æø(width)Àº ¾î¶»°Ô °è»êÇÒ±î¿ä?
rbearing ¸â¹ö - lbearing ¸â¹ö ¶Ç´Â ±×³É width ¸â¹ö¸¦ »ç¿ë
1 ¹ÙÀÌÆ®±Ç ¹®ÀÚ¿¡ ´ëÇؼ´Â XQueryTextExtents ¸¦ ¾¹´Ï´Ù.
À§ÀÇ ¹æ¹ýÀº ¾î¶² Á¤º¸¸¦ ¾Ë°íÀÚ ÇÒ ¶§ Ç×»ó X ¼¹ö¿¡°Ô ¿äûÀ» ÇØ¾ß ÇϹǷΠ³×Æ®¿öÅ© ·Îµå°¡ ¸¹ÀÌ °Å¸®°Ô µÇ¸ç, ÇÁ·Î±×·¥ÀÌ ´À·ÁÁö´Â ÁÖ¹üÀÌ µË´Ï´Ù. ±×·¡¼ ÇÁ·Î±×·¥´Ù¿î ÇÁ·Î±×·¥À» Â¥´Â °æ¿ì¿¡´Â ´ëºÎºÐ XLoadFont ·Î ÆùÆ®·ÎµùÇÏ°í, XQueryTextExtents(16) °°Àº ÇÔ¼ö¸¦ »ç¿ëÇÏÁö ¾Ê°í ´Ù¸¥ ¹æ¹ýÀ» »ç¿ëÇÕ´Ï´Ù.
XLoadFont ´ë½Å¿¡ XLoadQuerFont ÇÔ¼ö¸¦ ¾¹½Ã´Ù.
XLoadQueryFont ´Â ÆùÆ®¸¦ ·ÎµùÇÏ¸é¼ Query ÇÑ´Ù´Â ÀǹÌÀÔ´Ï´Ù.
XFontStruct *XLoadQueryFont(display, name)
Display *display;
char *name;
XLoadFont¿¡¼Ã³·³ ÆùÆ®¸íÀ» Àü´ÞÇØÁÖ´Â °ÍÀº °°Áö¸¸, º¸½Ã´Â ¹Ù¿Í °°ÀÌ ¹ÝȯµÇ´Â °ªÀÌ Font ÇüÀÌ ¾Æ´Ï¶ó XFontStruct ¶ó´Â ÀÚ·áÇüÀÔ´Ï´Ù.
typedef struct
XExtData *ext_data; /* hook for extension to hang data */
Font fid; /* Font id for this font */ /* ÁÖ¸ñ! */
unsigned direction; /* hint about direction the font is painted */
unsigned min_char_or_byte2;/* first character */
unsigned max_char_or_byte2;/* last character */
unsigned min_byte1; /* first row that exists */
unsigned max_byte1; /* last row that exists */
Bool all_chars_exist;/* flag if all characters have non-zero size*/
unsigned default_char; /* char to print for undefined character */
int n_properties; /* how many properties there are */
XFontProp *properties; /* pointer to array of additional properties*/
XCharStruct min_bounds; /* minimum bounds over all existing char*/
XCharStruct max_bounds; /* maximum bounds over all existing char*/
XCharStruct *per_char; /* first_char to last_char information */
int ascent; /* log. extent above baseline for spacing */
int descent; /* log. descent below baseline for spacing */
} XFontStruct;
ÀÚ·áÇüÀÌ ²Ï º¹ÀâÇÑ Æí¿¡ ¼ÓÇϴ±º¿ä. :) ÁÖ¸ñÇÏ½Ç °ÍÀº ÆùÆ® ID °¡ XFontStruct ÀÚ·áÇüÀÇ fid ¸â¹ö¿¡ ÀúÀåµÇ¾î ÀÖ´Ù´Â »ç½ÇÀÔ´Ï´Ù. ¿©·¯ºÐÀÌ ÆùÆ® ID ¸¦ ¾²°í ½ÍÀ¸½Ç ¶§´Â fid ¸â¹ö°ªÀ» »ç¿ëÇϼ¼¿ä.
XSetFont ÇÔ¼ö¸¦ »ç¿ëÇÏ½Ç ¶§´Â ¹Ù·Î ÆùÆ® ID ¸¦ »ç¿ëÇϼž߰ÚÁÒ?
ÀÏ´Ü ±¸Á¶Ã¼¿¡´Ù°¡ ¸ù¶¥ ÆùÆ® °ü·Ã Á¤º¸¸¦ °¡Á®¿ÔÀ¸¹Ç·Î ÀÌÁ¦´Â ¾î¶² Á¤º¸¸¦ ¾Ë¾Æ ³»±â À§ÇØ X ¼¹ö¿Í Åë½ÅÇÒ ÇÊ¿ä°¡ ¾ø´Ù´Â ÀåÁ¡ÀÌ ÀÖ½À´Ï´Ù.
¿©·¯ºÐÀÌ XFontStruct ±¸Á¶Ã¼¸¦ °¡Áö°í °è½Ã¸é ´ÙÀ½°ú °°Àº ÇÔ¼öµéÀ» ÅëÇؼ ¿©·¯°¡Áö Á¤º¸¸¦ ij³»½Ç ¼ö ÀÖ½À´Ï´Ù.
int XTextWidth(font_struct, string, count)
XFontStruct *font_struct;
char *string;
int count;
int XTextWidth16(font_struct, string, count)
XFontStruct *font_struct;
XChar2b *string;
int count;
ÁÖ¾îÁø ¹®ÀÚ¿( string )ÀÌ Â÷ÁöÇÒ Çȼ¿ ÆøÀ» ¾Ë¾Æ³À´Ï´Ù.
XTextExtents(font_struct, string, nchars, direction_return,
font_ascent_return,
font_descent_return, overall_return)
XFontStruct *font_struct;
char *string;
int nchars;
int *direction_return;
int *font_ascent_return, *font_descent_return;
XCharStruct *overall_return;
XTextExtents16(font_struct, string, nchars, direction_return,
font_ascent_return,
font_descent_return, overall_return)
XFontStruct *font_struct;
XChar2b *string;
int nchars;
int *direction_return;
int *font_ascent_return, *font_descent_return;
XCharStruct *overall_return;
³»¿ëÀº XQueryTextExtents16 °ú °°½À´Ï´Ù.¿À´ÃÀÇ ¼³¸íÀº ¿©±â¼ ¸¶Ä¡±â·Î ÇÏ°Ú½À´Ï´Ù. »ç½Ç ÆùÆ®¿¡ ´ëÇÑ ¼³¸íÀº ±×¸²À» º¸¿© µå¸®¸é¼ ÇÏ´Â °ÍÀÌ ÇÊ¿äÇÏ´Ù´Â »ý°¢ÀÌ µå´Â±º¿ä. ¼Á¡¿¡ °¡º¸½Ã¸é ¸¹Àº Âü°í ¼ÀûÀÌ ÀÖÀ¸¹Ç·Î ±×³É ½½Â½ ÆùÆ® Property ¿¡ °üÇÑ ºÎºÐÀ» Àß »ìÆ캸½Ã±â ¹Ù¶ø´Ï´Ù.
±×¸®°í ÇÑ±Û ÇÁ¸°ÆÃÀ» À§Çؼ´Â ÇÑÅÒ ¼Ò½ºÀÇ hangul.c ºÎºÐÀ» Àß ÈȾ½Ã±â ¹Ù¶ø´Ï´Ù. ¶Ç´Â ÇÑ±Û fvwm 2.0.42 ¼Ò½º¿¡¼ libs µð·ºÅ丮¿¡ °¡º¸½Ã¸é HangulSupport.c ¶ó´Â °ÍÀÌ ÀÖ½À´Ï´Ù. ±×°ÍÀ» »ìÆ캸½Ã´øÁö¿ä...