¸®´ª½º ±âŸ ÀÚ·á

HomePage Backward Forward Post Reply List
Delete Modify
  Á¦¸ñ   X-Windows Programming #11 1998/07/04 (16:35)
À̸§ ±èÈ¿¿ø
¹øÈ£ 51
Á¶È¸ 532
º»¹®
¡º¸®´ª½º Çдç-¸®´ª½º °­Á / ¿¬Àç (go LINUX)¡» 351¹ø
Á¦  ¸ñ:[°­ÁÂ11] X ÇÁ·Î±×·¡¹Ö, X ·ÎÄÉÀÏ ÀÌ¿ë Ãâ·Â                   
¿Ã¸°ÀÌ:geoman  (À̸¸¿ë  )    96/11/21 18:36    ÀÐÀ½:1952 E[7m°ü·ÃÀÚ·á ÀÖÀ½(TL)E[0m
-----------------------------------------------------------------------------


------------------------------------------------------------------------------

           X À©µµ¿ì ÀÚüÀÇ ·ÎÄÉÀÏ ±â´ÉÀ» »ç¿ëÇÑ ÇÑ±Û Ãâ·Â

------------------------------------------------------------------------------

¾ÆÁ÷ ÀûÀº ¼öÀ̱â´Â ÇÏÁö¸¸ ¸®´ª½ºÀÇ ÀüÆÄ¿Í ´õºÒ¾î X À©µµ¿ì¿¡ ´ëÇÑ °ü½Éµµ Á¡Á¡
´õ ÇØ°¡´Â µí ÇÑ ´À³¦À» ¹Þ½À´Ï´Ù.

¿ì¸®°¡ Çѱ¹ÀÎÀÎ ÀÌ»ó ÇÇÇÒ ¼ö ¾ø´Â ¹®Á¦´Â ¿ì¸®ÀÇ ±ÛÀÇ ¿Ã¹Ù¸¥ Ç¥ÇöÀ̶ó°í ÇÒ ¼ö
ÀÖ½À´Ï´Ù. Àڱ⠳ª¶ó ¸»À» »ç¶ûÇÏÁö ¾Ê°Å³ª °ü½ÉÀ» °®°í ¹ßÀü½ÃÅ°Áö ¾Ê´Â ¹ÎÁ·Àº
ÀÌ ¼¼»ó¿¡¼­ »ç¶óÁö´Â °Í ¾Æ´Ï°Ú½À´Ï±î? ±×¸®°í Àڱ⠸»À» °®Áö ¾Ê´Â ¹ÎÁ·ÀÌ µµ´ë
ü ¾î¶² ÀںνÉÀ» °¡Áú ¼ö ÀÖÀ»±î¿ä?

ÄÄÇ»ÅÍ Á¤º¸ ¹®È­ÀÇ ½Ã´ë¿¡ »ì°í ÀÖ´Â ¿ì¸®¿¡°Ô ÇѱÛÀº ¼±Á¶µéÀÇ ³ë·ÂÀ» À̾î¹Þ¾Æ
´õ¿í ´õ ¹ßÀü½ÃÅ°°í Çö´ëÈ­½ÃÄÑ¾ß ÇÒ »ì¾ÆÀÖ´Â ¾ð¾î¶ó´Â »ý°¢ÀÌ µì´Ï´Ù. ÃÖ¼ÒÇÑ
¹ßÀüÀº ¾È½ÃÅ°´õ¶óµµ ¾ÖÂøÀ» °®°í »ç¿ëÀº ÇØ¾ß ÇÒ °Í ¾Æ´Ï°Ú½À´Ï±î?

À©µµ±× »ç¿ëÀÚ ½ÃÀý ¹«ÁöÇÏ°Ôµµ Ç×»ó ÀÌ·± ¸»À» Àڽſ¡°Ô Çϸ鼭 ÄÄÇ»Å͸¦ »ç¿ëÇØ
¿Ô´ø °Í °°½À´Ï´Ù.

"ÇÑ±Û À©µµ¿ì´Â ¾ÈµÅ... ¿ª½Ã... ÇѱÛÈ­¸¸ ÇÏ¸é ¿µ ¾Æ´Ï¾ß... ÇÑ±Û ¾ÈµÅ..."

¿ô±â´Â »ç½ÇÀº ¾ûÅ͸®·Î ÇѱÛÈ­¸¦ ½ÃŲ M$ ÃøÀ̳ª ¹Ì±¹ °¡¼­ ³ª¶óÀÇ ±â¼úÀ» ÆȾƸÔ
°í ÀÖ´Â Çѱ¹ÀÇ ÄÄÇ»ÅÍ ±â¼úÀڵ鿡°Ô ºñ³­À» º¸³»´Â °ÍÀÌ ¾Æ´Ï¶ó "ÇѱÛ" ÀÚü¸¦ µé
¸ÔÀÌ°í ÀÖ¾ú´Ù´Â °ÍÀÔ´Ï´Ù.

»ç½Ç 1 ¹ÙÀÌÆ® ¹®Àڱǿ¡¼­ ź»ýÇÑ ÄÄÇ»ÅͶó´Â ȯ°æ ¼Ó¿¡¼­ Èûµç ½Î¿òÀ» ÇÏ°í ÀÖ´Â
°ÍÀÌ »ç½ÇÀÔ´Ï´Ù. Èûµç ÀÏÀÌÁö¸¸ ´©±¸³ª ÇÒ ¼ö ÀÖ´Â ÀÏÀ̶ó¸é ¹ú½á ´Ù¸¥ »ç¶÷µéÀÌ
´Ù ÇسõÀ» °Ì´Ï´Ù. Èûµç ÀÏÀ» Àß Ç϶ó°í ºñ½Ñ µ· µé¿©°¡¸ç ±ÍÁßÇÑ ½Ã°£À» ½ñ¾ÆºÎ¾î
°¡¸ç ÇÁ·Î±×·¡¸Ó°¡ µÇ·Á´Â °Í ¾Æ´Ò±î¿ä?

1 ¹ÙÀÌÆ® ¹®ÀÚº¸´Ù´Â ¾à°£ ¾î·Á¿î °úÁ¤À» °ÅÄ¡Áö¸¸ ±×·¸°Ô ¾î·Á¿î °Íµµ ¾Æ´Õ´Ï´Ù.
¿¹Àü¿¡ µµ±× ½ÃÀý¿¡´Â ÇÑ±Û ÀÔÃâ·Â ¸ðµÎ¸¦ ¸Å¹ø ¸¸µé¾î¼­ »ç¿ëÇß´ø ±â¾ïµµ ³³´Ï´Ù.
¾ÆÁÖ °£´ÜÈ÷ ÇÑ±Û ±â´É ÀÚü¸¦ ³»ÀåÇعö¸®´Ï ¼Ó ÆíÇÒ ¼ö ÀÖ¾úÁö¸¸ Áö±ÝÀÇ ¼ÒÇÁÆ®¿þ
¾î °³¹ß »óȲ¿¡´Â ÀüÇô ¸ÂÁö ¾Ê´Â ±¸´Ú´Ù¸® ¹æ½ÄÀ¸·Î º¯È­ÇÏ°í ¸»¾Ò½À´Ï´Ù.

X À©µµ¿ì°¡ Á¦°øÇÏ°í ÀÖ´Â ¸¹Àº ±â´ÉµéÀ» ÃæºÐÈ÷ È°¿ëÇϸ鼭 ÇѱÛÀ» ½±°Ô Ç¥ÇöÇÒ
¼ö ÀÖ´Â ¹æ¹ý¿¡ ´ëÇؼ­ ÀÏ´ÜÀº Ãâ·Â¿¡ °üÇÑ ºÎºÐÀ» ´Ù½Ã ÇÑ ¹ø ¼Ò°³Çص帳´Ï´Ù.


-------------------------------------------------------------------------------

X À©µµ¿ì¿¡¼­ÀÇ ÇÑ±Û Ãâ·Â ¹æ½Ä¿¡ ´ëÇÏ¿©

-------------------------------------------------------------------------------


1) Àú¼öÁØÀÇ ¹æ¹ý : XDrawString16 ÇÔ¼ö ÀÌ¿ë

2) °í¼öÁØÀÇ ¹æ¹ý : XmbDrawString, XwcDrawString ÇÔ¼ö ÀÌ¿ë

¿ì¼± Àú¼öÁØÀÇ ¹æ¹ýÀº ÇÑÅÒ, ±×¸®°í ÇѱÛÈ­µÈ À©µµ¿ì °ü¸®Àڵ鿡¼­ »ç¿ëÇÏ°í ÀÖ´Â
¹æ½ÄÀ¸·Î¼­ °í¼öÁØÀÇ ¹æ¹ý°ú ±¸º°µÇ´Â ±âÁØÀº ¹Ù·Î X À©µµ¿ì ½Ã½ºÅÛÀÌ Á¦°øÇÏ°í
ÀÖ´Â ±¹Á¦È­(I18N, Internationalization)¿Í Áö¿ªÈ­(L10N, Localization) ±â¼úÀ»
»ç¿ëÇϴ°¡ ¿©ºÎ¿¡ ´Þ·ÁÀÖ½À´Ï´Ù. XDrawString16 ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀ» ¼Ò°³ÇØ
µå¸° ÀûÀÌ ÀÖ´Â °ÍÀ¸·Î ¾Ð´Ï´Ù. ±× ±ÛÀ» ÀÐÁö ¾ÊÀ¸¼Ì´Ù¸é ±× ±ÛÀ» ¸ÕÀú Àо½Ã±â
¹Ù¶ø´Ï´Ù.

Àú¼öÁØÀÇ ¹æ¹ýÀº ÇÑ±Û ¹®ÀÚ¿­( char Çü )À» Çѱ۰ú ¿µ¹®À¸·Î ³ª´©¾î¼­( ¹ÙÀÌÆ®ÀÇ
ÃÖ»óÀ§ ºñÆ®¸¦ º¸°í ÆÇ´Ü ) ÇÑ±Û ºÎºÐÀº XChar2b Çü ¹è¿­¿¡ ³Ö¾î¼­ 2 ¹ÙÀÌÆ®¿ë ÇÔ¼ö
ÀÎ XDrawString16 ÇÔ¼ö·Î Ãâ·ÂÇÏ°í ¿µ¹® ºÎºÐÀº µû·Î 1 ¹ÙÀÌÆ® Àü¿ë ÇÔ¼öÀÎ XDrawS-
tring ÇÔ¼ö·Î Ãâ·ÂÇÏ´Â ¹æ½ÄÀ» »ç¿ëÇÕ´Ï´Ù.

Àú¼öÁØÀ̹ǷΠ»ó´çÈ÷ ¹ø°Å·Ó´Ù°í ÇÏÁö ¾ÊÀ» ¼ö ¾ø½À´Ï´Ù. Çѱ۰ú ¿µ¹®À» ¼¯¾î¼­ ¾²
´Â °æ¿ì¿¡´Â Á¤¸» ½Å°æ¾µ ÀÏÀÌ ¸¹½À´Ï´Ù. ¹®ÀÚ¿­À» Àо ÀÏÀÏÀÌ ÇѱÛÀÌ Ãâ·ÂµÇ´Â
È­¸é ÆøÀ» °è»êÇÏ°í ±× ´ÙÀ½¿¡ ¿µ¹®À» Ãâ·ÂÇÏ°í ±× ÆøÀ» °è»êÇÑ ÈÄ ´Ù½Ã ÇѱÛÀ»
Ãâ·ÂÇÏ°í...

°í¼öÁØÀÇ ¹æ¹ýÀº ¹Ù·Î X À©µµ¿ì ½Ã½ºÅÛÀÌ R5 ºÎÅÍ Áö¿øÇϱ⠽ÃÀÛÇÑ ±¹Á¦È­/Áö¿ªÈ­
±â¹ýÀ» »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. °°Àº 1 ¹ÙÀÌÆ® ¹®ÀÚ±ÇÀ̶ó ÇÒ Áö¶óµµ ¿µ¾î¿¡ ¸ÂÃçÁø
ASCII ¹®Àڷδ ºÒ°¡´ÉÇÑ À¯·´¾ð¾î( ÇÁ¶û½º¾î, µ¶ÀÏ¾î µî... )¿Í ¾ÖÃʺÎÅÍ ASCII
·Î´Â Åõµ ¾ø´Â 2 ¹ÙÀÌÆ® ÀÌ»óÀÇ ¹®ÀÚ±ÇÀÎ Çѱ¹¾î, Áß±¹¾î, ÀϺ»¾î µî¿¡ ´ëÇÑ ½Ã½º
ÅÛ Â÷¿øÀÇ Áö¿øÀÌ ³íÀǵǸ鼭 ÇÁ·Î±×·¡¸ÓµéÀÌ ½±°Ô ±¹Á¦ÀûÀÎ ÇÁ·Î±×·¥À» ¸¸µé ¼ö
ÀÖµµ·Ï °í¹ÎÇÑ °á°úÀÔ´Ï´Ù. ±¹Á¦È­¶õ ÇÁ·Î±×·¥ÀÌ ¾î¶² ¾ð¾î ȯ°æ¿¡¼­µç »ç¿ëµÉ ¼ö
ÀÖµµ·Ï À¯¿¬ÇÏ°Ô ÇÁ·Î±×·¡¹ÖÇÏ´Â °ÍÀ» ¸»ÇÏ¸ç ±×·¸°Ô ±¹Á¦È­µÈ ÇÁ·Î±×·¥À» ƯÁ¤
¾ð¾î³ª ¹®È­¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÀûÀÀ½ÃÅ°´Â °ÍÀ» Áö¿ªÈ­¶ó°í ºÎ¸¨´Ï´Ù.

ÀÌ¹Ì ¼Ö¶ó¸®½º³ª HP-UX µî¿¡¼­ »ó¿ë X À©µµ¿ì¸¦ º¸½Å ºÐµéÀº ÀÌ°ÍÀÌ ¹«¾ùÀ» ¶æÇÏ´Â
Áö ¾Æ½Ç ¼ö ÀÖÀ» °Ì´Ï´Ù. À©µµ±×95 °°Àº °ÍÀ» ÇÁ¶û½ºÆÇ, µ¶ÀϾîÆÇ, Çѱ¹¾îÆÇ, Áß±¹
¾îÆÇ, ÀϺ»¾îÆÇ ÀÌ·¸°Ô ´ßÁúÀ» ÇØ°¡¸é¼­ µû·Îµû·Î ¸¸µå´Â °Í°ú´Â Â÷¿øÀÌ ´Ù¸¨´Ï´Ù.
°£´ÜÇÑ ¼³Á¤ Çϳª·Î °°Àº X À©µµ¿ì ½Ã½ºÅÛÀÌ ¿©·¯ °³ÀÇ ¾ð¾î·Î µ¿ÀÛÇϵµ·Ï ¼³°èµÇ
¾î ÀÖ½À´Ï´Ù. ·Î±×ÀÎ È­¸éºÎÅÍ°¡ ¾Æ¿¹ ´Þ¶óÁöÁö¿ä.

-------------------------------------------------------------------------------

            X À©µµ¿ì ½Ã½ºÅÛÀÌ Áö¿øÇÏ´Â I18N, L10N ÀÌ¿ëÇϱâ

-------------------------------------------------------------------------------

¿À´Ã ¾Ë¾Æº¼ ³»¿ëÀº ¹Ù·Î °í¼öÁØÀÇ ÇÑ±Û Ãâ·Â¿¡ ´ëÇÑ °ÍÀÔ´Ï´Ù.

¾î¶² ÀýÂ÷¸¦ °ÅÃÄ¾ß ÇÏ´ÂÁö¿¡ ´ëÇؼ­ ¾Ë¾Æº¸µµ·Ï ÇսôÙ.


1) LOCALE µ¥ÀÌÅͺ£À̽º Áö¿øÀ» ´©°¡ Çϴ°¡?
==========================================

À¯´Ð½º ½Ã½ºÅÛÀÇ ·ÎÄÉÀÏ Áö¿øÀº ÀÏ´Ü X À©µµ¿ì ½Ã½ºÅÛÀÌ ¾Æ´Ñ ANSI/POSIX ±Ô°Ý Â÷
¿øÀÇ Áö¿øÀÌ ÀÖ½À´Ï´Ù. ´ëºÎºÐÀÇ »ó¿ë À¯´Ð½º³ª ¾Æ´Â ¹Ù ¾øÁö¸¸ FreeBSD ¿Í °°Àº
¿î¿µÃ¼Á¦¿¡¼­ Áö¿øÇÏ°í ÀÖ´Â °ÍÀ¸·Î ¾Ë°í ÀÖ½À´Ï´Ù. Áö±Ý ÇöÀç GNU NLS ÆÀ¿¡¼­ ¿­
½ÉÈ÷ ÇÁ·Î±×·¥ ¸Þ¼¼Áö Áö¿ªÈ­¸¦ ÇÏ°í °è½Å ºÐµéÀÇ °á°ú°¡ Á¶¸¸°£ ¿ì¸® °ç¿¡ ¿À°Ô
µÇ°ÚÁö¿ä? ±× ºÐµé¿¡°Ô °Ý·Á¸¦ º¸³À´Ï´Ù.

¸®´ª½º´Â ¾ÆÁ÷ C ¶óÀ̺귯¸®¿¡ ´ëÇؼ­ Á¦´ë·Î ¸ð¸£±â ¶§¹®¿¡ È®½ÇÇÏ°Ô ¸»¾¸µå¸± ¼ö
¾ø½À´Ï´Ù. C ¶óÀ̺귯¸® 5.4.X ¿¡¼­ ·ÎÄÉÀÏ¿¡ ´ëÇÑ Áö¿øÀÌ ÀÖ´Ù°í´Â ÇÏ´Â °Í °°Àº
µ¥ Á¦´ë·Î È®ÀÎÀÌ µÇÁú ¾Ê´Âµ¥´Ù°¡ ÀúÀÇ °ü½É ¿µ¿ªÀ» ·Î¿ì·¹º§ ÇÁ·Î±×·¡¹ÖÀÌ ¾Æ´Ï
¶ó¼­...

µÎ¹ø°·Î´Â ¿î¿µÃ¼Á¦ ÀÚüÀÇ Áö¿ø°ú´Â ¿ÏÀü º°µµ·Î X À©µµ¿ì ÀÚüÀûÀ¸·Î ÇØ°áÇØÁÖ
´Â ¹æ½ÄÀÌ ÀÖ½À´Ï´Ù. ¹Ù·Î ¿À´Ã X À©µµ¿ì ÀÚü°¡ Áö¿øÇÏ´Â ·ÎÄÉÀÏ Áö¿øÀ» »ç¿ëÇÏ
¿© ÇØ°áÇÒ °ÍÀÔ´Ï´Ù. ÀüÀÚ³ª ÈÄÀÚ ¸ðµÎ Áß¿äÇѵ¥ ÀÏ´Ü X À©µµ¿ì ÀÚüÀûÀ¸·Îµµ Áö¿ø
À» ÇØÁشٴ °ÍÀº ¾î¶² Ç÷§Æ÷¿ÈÀΰ¡¿¡ »ó°ü¾øÀÌ °°Àº X À©µµ¿ì¸¸ µ¹¾Æ°£´Ù¸é ¾î
µð¼­µç ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥ÀÌ Á¦´ë·Î µ¿ÀÛÇϸ®¶õ º¸ÀåÀ» ¹ÞÀ» ¼ö ÀÖ´Ù´Â ÀåÁ¡ÀÌ ÀÖ
½À´Ï´Ù.

¸®´ª½º C ¶óÀ̺귯¸®¿¡ ´ëÇÑ ¿¬±¸´Â ½Ã°£À» ³»¼­ Á» ´õ ÇغÁ¾ß ÇÒ °Í °°½À´Ï´Ù.
¸¹Àº »ç¶÷µéÀÌ ¶Ù¾îµé¾îÁֱ⸦ ¹Ù¶ö »ÓÀÔ´Ï´Ù. ¸®´ª½º´Â °³¹æ üÁ¦À̹ǷΠÀÚ¿øÀÚ°¡
¸¹Àº °÷ÀÇ ºÐÀ§±â¸¦ µû¸£Áö ¾Ê°Ú¾î¿ä?
¾Æ½Ã¾ÆÀÇ ÀþÀºÀ̵éÀÌ ¸¹ÀÌ ¶Ù¾îµé ¼ö·Ï ¸®´ª½º ÀÚü´Â ±¹Á¦ÀûÀÎ ¿î¿µÃ¼Á¦·Î ´Ù½Ã
ž ¼ö ÀÖÀ¸¸®¶ó º¾´Ï´Ù.


2) ¿©·¯ºÐÀÇ X À©µµ¿ì ½Ã½ºÅÛÀ» Á¡°ËÇÕ´Ï´Ù.
=========================================

ANSI ±Ô°Ý¿¡¼­ Á¤ÀÇÇÑ ¹Ù¿Í °°½À´Ï´Ù. C ¼ÐÀ» ¾²´Â ºÐµéÀº setenv LANG ko ¿Í °°Àº
Ç¥ÇöÀ» ½áº¸½Å ÀûÀÌ ÀÖÀ» °Ì´Ï´Ù. ÀÌ ±ÛÀº ANSI ±Ô°ÝÀÇ setlocale ÇÔ¼ö¿¡ °ü·ÃµÈ
¸ðµç »çÇ×À» ÀÚ¼¼È÷ ¼³¸íÇϱâ À§ÇÑ °ÍÀº ¾Æ´Ï¹Ç·Î µû·Î °øºÎÇغ¸½Ã±â ¹Ù¶ø´Ï´Ù.
¾ÆÁÖ Áß¿äÇÑ À̽´ ÁßÀÇ ÇϳªÀÎ °ÍÀº ºÐ¸íÇÑ °Í °°½À´Ï´Ù.

ÀÏ´ÜÀº /usr/X11R6/lib/X11/locale µð·ºÅ丮¿Í ³»¿ëÀÌ ÀÖ´ÂÁö¸¦ È®ÀÎÇغ¸½Ê½Ã¿ä.
¸®´ª½º ¹èÆ÷ÆÇ¿¡¼­ X À©µµ¿ì ½Ã¸®Á Á¦´ë·Î ¼³Ä¡Çß´Ù¸é ÀÖ¾î¾ß ÇÒ ³»¿ëÀÔ´Ï´Ù.

C/             iso8859-3/     iso8859-8/     ko/            th_TH.TACTIS/
compose.dir    iso8859-4/     iso8859-9/     koi8-r/        zh/
en_US.utf/     iso8859-5/     ja/            locale.alias   zh_TW/
iso8859-1/     iso8859-6/     ja.JIS/        locale.dir
iso8859-2/     iso8859-7/     ja.SJIS/       tbl_data/

ko ¶ó´Â µð·ºÅ丮°¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù. ±× ¾È¿¡´Â XLC_LOCALE À̶ó´Â È­ÀÏÀÌ µé¾îÀÖ½À
´Ï´Ù. ±× È­ÀÏ ¾È¿¡ Çѱ¹¾îÀÇ Ãâ·Â¿¡ ´ëÇÑ °ü·Ã Á¤º¸°¡ µé¾îÀÖ½À´Ï´Ù.

º¸ÅëÀº LANG ¼¼ÆÃÀÌ ¾ø´Â °æ¿ì ±âº»ÀûÀ¸·Î C µð·ºÅ丮¿¡ ÀÖ´Â ³»¿ëÀ» »ç¿ëÇÕ´Ï´Ù.

À§ È­ÀϵéÀÌ Á¦´ë·Î ÀÖ´Â °ÍÀ» È®ÀÎÇÑ ÈÄ¿¡ ²À ´ÙÀ½ ¼¼ÆÃÀ» ÇØÁÖ¾î¾ß ÇÕ´Ï´Ù.

º»¼Ð °è¿­À̶ó¸é...

export LANG=ko

C ¼Ð °è¿­À̶ó¸é...

setenv LANG ko

³ªÁß¿¡ °°Àº ÇÁ·Î±×·¥¿¡ ´ëÇؼ­ ±×³É LANG ¼¼ÆÃÀ» Àç¹Ì»ï¾Æ ja ¶ó°í ¹Ù²ãº¸½Ê½Ã¿ä.
±×·¯¸é Àç¹ÌÀÖ´Â ÀÏÀÌ ¹ú¾îÁú °ÍÀÔ´Ï´Ù. ¿©·¯ºÐÀÌ ³×½ºÄÉÀÌÇÁ¿¡¼­ ¿É¼Ç ¸Þ´º¿¡¼­
ÄÚµù ¿É¼Ç¸¸ ¹Ù²ãÁÖ¸é ÅؽºÆ®ÀÇ ³»¿ëÀÌ Çѱ۷Πº¸¿´´Ù°¡ ÀϺ»¾î·Î º¸¿´´Ù ÇÏ´Â ¿ø
¸®¸¦ ½±°Ô ÀÌÇØÇÏ½Ç ¼ö ÀÖÀ¸¸®¶ó º¾´Ï´Ù.

3) ÀÌÁ¦ºÎÅÍ ÇÁ·Î±×·¡¹ÖÀ» Çغ¾½Ã´Ù.
==================================

ÇÁ·Î±×·¡¹ÖÀ̶õ ÀüÇüÀûÀÎ ÆÐÅÏÀÌ ÀÖ°Ô ¸¶·ÃÀÌÁö¿ä. ±×¸®°í È®½ÇÇÑ ÆÐÅÏ( ¹°·Ð ÁÁÀº
ÆÐÅÏ :> )À» ÀÍÇôµÎ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.

¿¹Á¦¸¦ ¼Õ¼ö ŸÀÌÇÎÇØ º¸½Ã´Â °ÍÀÌ ÁÁÀ» °Ì´Ï´Ù. ÀÏ´Ü ÄÄÆÄÀÏÀ» Çغ¸°í Á¦´ë·Î µÈ
´Ù´Â °ÍÀ» È®ÀÎÇϽñ⠹ٶø´Ï´Ù.

-------------------------------------------------------------------------------
/*


                       X Locale À» ÀÌ¿ëÇÑ ÇÑ±Û Ãâ·Â


*/
#include <stdio.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
/*
#include <locale.h>
*/
#include <X11/Xlocale.h>

void DrawCenteredMbString ( Display *, Window, XFontSet, GC, char*, int, int,
int, int, int );

int
main (argc, argv)
int argc;
char *argv[];
{
Display *dpy;
       Window  w;
       XFontSet fontset;
       char **missing_charsets;
       int num_missing_charsets;
       char *default_string;
       int i;
       GC      gc;
       XEvent  xe;

       char *program_name = argv[0];

       if ( setlocale (LC_ALL,"") == NULL )       {
               (void) fprintf (stderr, "%s: cannot set locale.\n",
               program_name );
               exit (1);
       }

       if ( !XSupportsLocale () ) {
               (void) fprintf (stderr,"%s: X does not support locale %s.\n",
               program_name, setlocale( LC_ALL, NULL ) );
               exit (1);
       }

       if ( XSetLocaleModifiers("") == NULL )    {
               (void) fprintf (stderr,
                "%s: Warning: cannot set locale modifiers.\n",
                program_name);
       }

       dpy = XOpenDisplay ( NULL);
       w   = XCreateSimpleWindow ( dpy, RootWindow( dpy, 0 ), 50, 50,
                                       100, 50, 5, BlackPixel( dpy, 0 ),
                                       WhitePixel( dpy, 0 ) );
       gc = XCreateGC ( dpy, w, 0L, ( XGCValues * ) NULL );

       fontset = XCreateFontSet (dpy, "-*-*-*-*-*-*-16-*-*-*-*-*-*-*",
        &missing_charsets, &num_missing_charsets,
        &default_string);

if ( num_missing_charsets > 0 ) {
(void) fprintf (stderr,
"%s: The following charsets are missing:\n",
program_name);
       for ( i=0; i < num_missing_charsets; i++ )
               (void)fprintf (stderr, "%s:   %s\n", program_name,
                       missing_charsets[i]);
       (void) fprintf (stderr, "%s: The string is %s", program_name,
                       default_string);
       (void) fprintf (stderr,
        "%s: of any characters from those sets.\n",
                       program_name);
       XFreeStringList (missing_charsets);
}

       XSetLineAttributes ( dpy, gc, 5, LineSolid, CapRound, JoinRound );

       XSelectInput ( dpy, w, ExposureMask | ButtonPressMask
        | EnterWindowMask | LeaveWindowMask );

       XMapWindow ( dpy, w );

       XFlush ( dpy );

       while ( True )
       {
               XNextEvent ( dpy, &xe );

               switch ( xe.type )      {

               case Expose:
                       printf ("Expose À̺¥Æ®°¡ ¹ß»ýÇß½À´Ï´Ù.\n");
                       XSetForeground ( dpy, gc, BlackPixel( dpy, 0 ) );
                       DrawCenteredMbString ( dpy, w, fontset, gc,
                        "¾È³ç Hello",
                        10, 0, 0, 100, 50 );
                       break;
               case ButtonPress:
                       printf ("¹öÆ°À» ´©¸£¼Ì½À´Ï´Ù!\n");
                       exit (1);
                       break;
               case EnterNotify:
                       printf ("¸¶¿ì½º°¡ â ¾ÈÀ¸·Î µé¾î¿Ô½À´Ï´Ù.\n");
                       XSetForeground ( dpy, gc, BlackPixel( dpy, 0 ) );
                       XDrawRectangle ( dpy, w, gc, 0, 0, 100, 50 );
                       break;
               case LeaveNotify:
                       printf ("¸¶¿ì½º°¡ â ¹ÛÀ¸·Î ³ª°¬½À´Ï´Ù.\n");
                       XSetForeground ( dpy, gc, WhitePixel( dpy, 0 ) );
                       XDrawRectangle ( dpy, w, gc, 0, 0, 100, 50 );
                       break;
               default:
                       printf ("¸ð¸£´Â À̺¥Æ®ÀÔ´Ï´Ù. ¹«½ÃÇÕ´Ï´Ù.\n");
                       break;
               }
       }
       return 0;
}

void
DrawCenteredMbString (dpy, w, fontset, gc, str, num_bytes, x, y, width, height )
Display *dpy;
Window w;
XFontSet fontset;
GC gc;
char *str;
int num_bytes;
int x,y, width, height;
{
       XRectangle boundingbox;
       XRectangle dummy;
       int originx, originy;

       (void) XmbTextExtents (fontset, str, num_bytes, &dummy, &boundingbox);

       originx = x + ( width - boundingbox.width )/2 - boundingbox.x;
       originy = y + ( height - boundingbox.height)/2 - boundingbox.y;

       XmbDrawString (dpy, w, fontset, gc, originx, originy, str, num_bytes);
}
-------------------------------------------------------------------------------

ÀÚ, ÄÄÆÄÀÏÀ» Çغ¸µµ·Ï ÇսôÙ. ¾à°£ÀÇ ÁÖÀÇ°¡ ÇÊ¿äÇÕ´Ï´Ù.

ÀÌ ÇÁ·Î±×·¥Àº ²À ¸®´ª½º¿¡¼­¸¸ ÄÄÆÄÀÏÇ϶õ ¹ýÀº ¾ø½À´Ï´Ù. ( È®ÀÎÀº ¾ÈÇßÁö¸¸... )

½Ã½ºÅÛ ¼öÁØ¿¡¼­ ·ÎÄÉÀÏÀ» Áö¿øÇÏ´Â °æ¿ì¿¡´Â ´ÙÀ½°ú °°ÀÌ ÄÄÆÄÀÏÇØ¾ß ÇÕ´Ï´Ù.

gcc -o test_locale test.locale.c -lX11 -L/usr/X11/lib

¸®´ª½º ½Ã½ºÅÛÀÎ °æ¿ì¿¡´Â X À©µµ¿ì ÀÚüÀÇ ·ÎÄÉÀÏÀ» »ç¿ëÇÒ °ÍÀ̹ǷΠ´ÙÀ½°ú °°ÀÌ
ÇØÁÖ¾î¾ß¸¸ ÇÕ´Ï´Ù.

gcc -o test_locale test.locale.c -DX_LOCALE -lX11 -L/usr/X11/lib


¼ø¼­´ë·Î ¼³¸íÀ» Çغ¸µµ·Ï ÇÏ°Ú½À´Ï´Ù.


4) ½Ã½ºÅÛÀÌ ·ÎÄÉÀÏÀ» Áö¿øÇϴ°¡?
================================

setlocale ÇÔ¼ö¸¦ ½á¼­ ½Ã½ºÅÛ Â÷¿ø¿¡¼­ ¶Ç´Â X À©µµ¿ì ½Ã½ºÅÛ Â÷¿ø¿¡¼­ ·ÎÄÉÀÏÀ»
Áö¿øÇÏ´ÂÁö ¿©ºÎ¿¡ ´ëÇؼ­ ¾Ë¾Æº¾´Ï´Ù. ½ÇÇàµÇ´Â Ç÷§Æ÷¿È¿¡¼­ ·ÎÄÉÀÏÀ» Áö¿øÇÏÁö
¾Ê´Â´Ù¸é ´Ù¸¥ Á¶Ä¡¸¦ ÃëÇϵçÁö ¾Æ´Ï¸é ½ÇÇàÀ» ÁßÁöÇØ¾ß ÇÒ °ÍÀÔ´Ï´Ù.
Á¦´ë·Î µÈ °á°ú°¡ ³ª¿ÀÁú ¾ÊÀ»Å״ϱî¿ä.

 setlocale (LC_ALL,"") == NULL ÀÌ ¹®ÀåÀ¸·Î È®ÀÎÀ» ÇÏ°í ÀÖ½À´Ï´Ù.


5) X À©µµ¿ì Â÷¿ø¿¡¼­ÀÇ ·ÎÄÉÀÏ Áö¿ø ¿©ºÎ È®ÀÎ
============================================

XSupportsLocale ÇÔ¼ö¿Í XSetLocaleModifiers ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ·ÎÄÉÀÏ Áö¿ø¿©ºÎ¸¦
¹°¾îº¾´Ï´Ù.

ÈÄÀÚÀÇ ÇÔ¼ö´Â "X ÀÔ·Â ¼­¹ö"¿¡ °ü°èµÈ °ÍÀ̹ǷΠÁö±ÝÀ¸·Î¼­´Â ¼³¸íµå¸± ¼ö°¡ ¾ø°í
»ó´çÈ÷ Àü¹®ÀûÀÎ ¾ê±â·Î ºüÁú °¡´É¼ºÀÌ ¸¹½À´Ï´Ù. Á¶¸¸°£¿¡ "X ÀÔ·Â ¼­¹ö" Á¦ÀÛ¿¡
´ëÇؼ­ µû·Î ¼Ò°³¸¦ Çص帮±â·Î ÇÏ°Ú½À´Ï´Ù. ±Ã±ÝÁõÀ» Âü±â ¾î·Á¿î ºÐÀº ±×³É ¿À·¼
¸® ÃâÆÇ»çÀÇ X À©µµ¿ì ½Ã¸®Áî Volume One Xlib ÇÁ·Î±×·¡¹Ö ¸Å´º¾óÀ» º¸½Ã¸é µË´Ï´Ù.


6) ÆùÆ®¼Â(FontSet)À̶ó´Â °³³ä....
========================

ÆùÆ®¼ÂÀ̶ó´Â °³³äÀº ±ÛÀÚ ±×´ë·Î ÆùÆ®ÀÇ ÇÑ ¼¼Æ®¸¦ ¸»ÇÕ´Ï´Ù. ¾î¶² ƯÁ¤ ¾ð¾îÀÇ
Äڵ忡 ¸Â´Â( ¿¹¸¦ µé¾î ASCII, ISO8859-1, EUC-KR, ISO-2022-KR µîµî ) ¹®ÀÚ ÆùÆ®
µéÀÌ ÀÌ¹Ì ¸¶·ÃµÇ¾î ÀÖ¾î¾ß Ãâ·ÂÀ» ÇÒ ¼ö ÀÖ°ÚÁö¿ä? Áï ȯ°æ º¯¼ö LANG ÀÌ Áö½ÃÇÏ
´Â ÄÚµù ½ºÅ¸ÀÏ¿¡ ¸Â´Â ÆùÆ®µéÀÇ ÇÑ ¼¼Æ®¸¦ ÁöÁ¤ÇØÁÖ¾î¾ß ÇÕ´Ï´Ù.

¸ðƼÇÁ ÇÁ·Î±×·¡¹ÖÀ» Çغ¸½Å ºÐµéÀ̶ó¸é ÆùÆ®¼ÂÀ̶ó´Â °³³ä¿¡ ´ëÇؼ­ ¾î´À Á¤µµ
¾Æ½Ç °Ì´Ï´Ù. ÀÏ´ÜÀº X À©µµ¿ì ·ÎÄÉÀÏÀ» ÀÌ¿ëÇÏ´Â ¹æ½ÄÀº ÆùÆ®¼ÂÀ» »ç¿ëÇÑ´Ù´Â »ç
½ÇÀ» Á¤È®È÷ ¾Æ¼Å¾ß ÇÕ´Ï´Ù. »ý°¢º¸´Ù »ó´çÈ÷ °£ÆíÇÏ°Ô ¸¸µì´Ï´Ù.

XCreateFontSet ÇÔ¼ö¸¦ ÀÌ¿ëÇÏÁö¿ä.

µÎ¹ø° Àμö·Î ±×³É -*-*-*-*-*-*-16-*-*-*-*-*-*-* À̶ó°í XLFD ¹æ½ÄÀÇ ÆùÆ®¸íÀ»
ÁöÁ¤ÇØÁÖ¾úÀ¸¹Ç·Î 16 Æ÷ÀÎÆ® ÆùÆ®µéÀ» ã¾Æ³»¼­ ÆùÆ®¼Â¿¡ µî·ÏÇÏ°Ô µË´Ï´Ù. ¸¸¾à
16 Æ÷ÀÎÆ® ÆùÆ®°¡ ¾ø´Ù¸é °¡Àå °¡±î¿î ÆùÆ®¸¦ ã¾Æ¼­ X À©µµ¿ì ÀÚü°¡ ½ºÄÉÀϸµÀ»
ÇØÁÝ´Ï´Ù. ÀÌ ¶§°¡ X À©µµ¿ìÀÇ °¡Àå Ãë¾àÇÑ ºÎºÐÀε¥... 2 ¹ÙÀÌÆ®±ÇÀÇ ¾öû³­ ¾çÀÇ
ÆùÆ®¸¦ ½ºÄÉÀϸµÇÏ°Ô µÉ ¶§´Â ¸¶Ä¡ X ¼­¹ö°¡ ¸ØÃç¹ö¸®´Â µí ÇÑ Çö»óÀÌ ÀϾ´Ï´Ù.
ÆùÆ®¸¦ ¸ðµÎ º¯È¯ÇÏ´À¶ó ¾öû³­ ½Ã°£À» ¼ÒºñÇÏ°í Àֱ⠶§¹®ÀÌÁö¿ä. À§ ¼ýÀÚ¸¦ 15³ª
´Ù¸¥ ¼ýÀÚ·Î ¹Ù²Ù¾î¼­ ÇÑ ¹ø Çغ¸½Ã±â ¹Ù¶ø´Ï´Ù. ±× Â÷ÀÌÀ» ´À³¢½Ç ¼öµµ ÀÖÀ» °Ì´Ï
´Ù.


7) ¹®ÀÚ¿­ÀÇ Ãâ·ÂÀº °£´ÜÈ÷ XmbDrawString ÇÔ¼ö ÀÌ¿ë
=================================================

À§¿¡¼­´Â DrawCenteredMbString ¶ó´Â »ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö ³»¿¡¼­ ¸ÖƼ ¹ÙÀÌÆ® ÄÚµù¿¡
»ç¿ëÇÏ´Â Ãâ·Â ÇÔ¼ö XmbDrawString ¸¦ »ç¿ëÇÏ¿´½À´Ï´Ù.  À§¿¡¼­ º¸½Ã´Â ¹Ù¿Í °°ÀÌ
¿¾³¯¿¡ Àú¼öÁØ Ãâ·ÂÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ÇѱÛÀ» Çѱ۴ë·Î ¿µ¹®Àº ¿µ¹®´ë·Î µû·Î ´ßÁúÀ»
ÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. -_-

ÇÑ±Û ÄÚµùµÈ 2 ¹ÙÀÌÆ® ¹®ÀÚ¸¦ ±×³É ¾²¸é µË´Ï´Ù. ´ÜÁö À§¿¡¼­´Â ¹®ÀÚ Ãâ·Â À§Ä¡¸¦
Á¶Á¤Çϱâ À§ÇÏ¿© XmbTextExtents ÇÔ¼ö¿Í °°Àº °ÍÀ» »ç¿ëÇÏ¿´½À´Ï´Ù.

-------------------------------------------------------------------------------

¿À´ÃÀº Ãâ·ÂÀÇ ¹®Á¦¸¸À» ´Ù·ç¾úÁö¸¸ ÇÁ·ÎÁ§Æ® ÁßÀÎ "X ÀԷ¼­¹ö"ÀÇ Áøô »óȲ¿¡ ¸Â
Ã߾ ÇÑ±Û ÀÔ·ÂÀÇ ¹®Á¦¸¦ ´Ù·ç¾îº¸±â·Î ÇÏ°Ú½À´Ï´Ù. ¾ÏÆ° Ãâ·Â¿¡ ´ëÇÑ ¼³¸íÀÌ
¿©·¯ºÐ¿¡°Ô ¸¹Àº µµ¿òÀÌ µÇ±æ ¹Ù¶ø´Ï´Ù.
ÀÏ´ÜÀº Á¶±Ý¸¸ ³ë·ÂÇÏ¸é °ÅÀÇ ¸ðµç ¸Þ¼¼Áö¸¦ ÇѱÛÈ­ ÆÐÄ¡ÇÒ ¼ö ÀÖ½À´Ï´Ù.

³²ÀÌ ¾ÈÇØÁÖ¸é ½º½º·Î ³ª¼­´Â °Í, ¸®´ª¼­µéÀÇ ¸ÚÁø ÀÚ¼¼ ¾Æ´Ï°Ú½À´Ï±î?

Á¦ÀÏ ¸ÚÁø ¿î¿µÃ¼Á¦·Î ¿ì¸®°¡ °¡²Ù¾î ³ª°©½Ã´Ù.

½Ã°£ÀÌ Á»Ã³·³ ³ªÁú ¾Ê´Â±º¿ä. ¹è¿ï °ÍÀº ¸¹Àºµ¥ ½Ã°£Àº ÃѾ˰°ÀÌ Èê·¯°¡°í ...
½Ã°£À» Á» ´õ È¿À²ÀûÀ¸·Î ½á¼­ ¿©·¯ºÐÀ» ÀÚÁÖ ºÉ ¼ö ÀÖ°Ô µÇ±æ ¹Ù¶ø´Ï´Ù.

±×·³...


HomePage Backward Forward Post Reply List
1998 by swindler