3.¸ÞÆ®¸¯½º

°¡.¹®ÀÚ¿­ Ãâ·Â

²Ï ¸¹Àº ¾çÀ» °øºÎÇ߰Ǹ¸ ¾Õ Àý±îÁö ¼ºÃëÇÑ °á°ú¹°Àº ²Ã¶û ¹®ÀÚ Çϳª Ãâ·ÂÇØ º» °Ô ÀüºÎ´Ù. ¹°·Ð ´Þ¶û ¹®ÀÚ ÇϳªÁö¸¸ ÅؽºÆ® Æ÷¸ËÆÃÀÇ ±âº»À̶ó´Â ¸é¿¡¼­ Å« Àǹ̰¡ ÀÖ±â´Â ÇÏ´Ù. ÀÌÁ¦ Á» ´õ ¹üÀ§¸¦ ³ÐÇô ¹®ÀÚÀÇ ÁýÇÕÀÎ ¹®ÀÚ¿­À» Ãâ·ÂÇØ º¸ÀÚ. ÇÑ´Ü°è ´õ Â÷¿øÀÌ ³ô¾ÆÁüÀ¸·Î ÀÎÇØ ³­À̵µµµ ±×¸¸Å­ Áõ°¡ÇÑ´Ù.

¾ð¶æ »ý°¢Çϱ⿡ ¹®ÀÚ¿­À̶õ ¹®ÀÚÀÇ ¿¬¼ÓÀ̹ǷΠ¹è¿­¿¡ ¹®ÀÚµéÀ» ³Ö¾î ³õ°í ·çÇÁ¸¦ µ¹¸ç Çϳª¾¿ ²ôÁý¾î ³»¾î ±×³É Ãâ·ÂÇϱ⸸ ÇÏ¸é µÉ °Í °°´Ù. ±×·¯³ª ½ÇÁ¦·Î ÇØ º¸¸é ±×Á¤µµ ´Ü¼øÇÑ ·çÇÁ·Î´Â ¾î¸²µµ ¾ø´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. ¹®ÀÚ¿­ Ãâ·ÂÀÌ ¿Ö ¾î·Á¿ì¸ç ¾î¶² ±â¼úµéÀÌ ´õ ÇÊ¿äÇÑÁö ¾Ë¾Æº¸±â À§ÇØ ¸ÕÀú ¾û¸ÁÁøâÀΠƲ¸° ¿¹Á¦ºÎÅÍ ±¸°æÇØ º¸ÀÚ.

 

¿¹ Á¦ : PrintString

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)

{

     HDC hdc;

     PAINTSTRUCT ps;

     FT_Face face;

     int x, y;

     int Color;

     int width, height;

     static TCHAR str[]=TEXT("String Mpyf.");

     int idx;

     int penx;

 

     switch (iMessage) {

     case WM_CREATE:

          hWndMain=hWnd;

          return 0;

     case WM_PAINT:

          hdc=BeginPaint(hWnd, &ps);

 

          penx=0;

 

          FT_New_Face(library,"c:\\windows\\fonts\\times.ttf",0,&face);

          FT_Set_Char_Size(face, 128 * 64, 0,

              GetDeviceCaps(hdc,LOGPIXELSX), GetDeviceCaps(hdc,LOGPIXELSY));

 

          for (idx=0;idx<lstrlen(str);idx++) {

              // ¹®ÀÚÀÇ ±Û¸®ÇÁ ºñÆ®¸Ê ±¸ÇÔ

              FT_Load_Char(face,str[idx],FT_LOAD_RENDER | FT_LOAD_NO_BITMAP);

 

              // È­¸éÀ¸·Î Ãâ·Â

              width=face->glyph->bitmap.width;

              height=face->glyph->bitmap.rows;

 

              for (y=0;y<height;y++) {

                   for (x=0;x<width;x++) {

                        Color=255-face->glyph->bitmap.buffer[y*width+x];

                        if (Color != 255) {

                             SetPixelV(hdc,penx+x,y,RGB(Color,Color,Color));

                        }

                   }

              }

 

              penx += 80;

          }

 

          FT_Done_Face(face);

          EndPaint(hWnd, &ps);

          return 0;

     case WM_DESTROY:

          PostQuitMessage(0);

          return 0;

     }

     return(DefWindowProc(hWnd,iMessage,wParam,lParam));

}

 

"String Mpyf."¶ó´Â ¹®ÀÚ¿­À» ¹è¿­·Î Á¤ÀÇÇÏ°í Times ÆùÆ®·Î ÀÌ ¹è¿­ÀÇ ¹®ÀÚ¸¦ ¼öÆòÀ¸·Î ³ª¶õÈ÷ Ãâ·ÂÇØ º¸¾Ò´Ù. °á°ú¸¦ ½Ã¿ø½º·´°Ô º¸±â À§ÇØ Å©±â´Â 128 Æ÷ÀÎÆ®·Î ÁöÁ¤Çß´Ù. penx º¯¼ö´Â ´ÙÀ½ ¹®ÀÚ¸¦ Ãâ·ÂÇÒ ¼öÆò ÁÂÇ¥Àε¥ ÃÖÃÊ 0À¸·Î ÃʱâÈ­Çß´Ù°¡ ÇÑ ¹®ÀÚ¸¦ Ãâ·ÂÇÒ ¶§¸¶´Ù 80Çȼ¿¾¿ Áõ°¡ÇÑ´Ù. ¿©±â¼­ 80Àº ´ëÃæ °è»êÇÑ ¹®ÀÚÀÇ Æò±ÕÆøÀÌ´Ù. ÇÑÁÙ¸¸ Ãâ·ÂÇϹǷΠ¼öÁ÷ ÁÂÇ¥´Â 0À¸·Î °íÁ¤ÇØ µÎ¾ú´Ù. Áï, ÀÛ¾÷¿µ¿ªÀÇ ¿øÁ¡ÀÎ (0,0)¿¡¼­ºÎÅÍ ¹®ÀÚµéÀ» ¼ø¼­´ë·Î Ãâ·ÂÇÑ °ÍÀÌ´Ù. ½ÇÇà °á°ú¸¦ º¸ÀÚ.

º¸´Ù½ÃÇÇ ¿ì¸®°¡ ¹Ù¶ó´Â ±ò²ûÇÑ Ãâ·Â °á°ú¿Í´Â °Å¸®°¡ ¸Ö¸ç ¹º°¡ ¸¶À½¿¡ µéÁö ¾Ê´Â´Ù. ÀÌ·± »óȲÀ» Àü¹®¿ë¾î·Î °³ÆÇÀ̶ó°í ÇÑ´Ù. ¿ì¼± ±ÛÀÚÀÇ ÆøÀÌ 80Çȼ¿·Î °íÁ¤µÇ¾î ÀÖ¾î ¹®ÀÚÀÇ °íÀ¯ÆøÀÌ ÀüÇô °í·ÁµÇÁö ¾Ê¾Ò´Ù. ³¯¾ÀÇÑ i³ª ¶×¶×ÇÑ MÀ̳ª ¶È°°ÀÌ 80Çȼ¿¾¿ÀÇ ÆøÀ» ÁÜÀ¸·Î½á i´Â ¾çÂÊÀÌ ½ä··ÇØ º¸ÀÌ°í MÀº ¿·µ¿³×ÀÇ p¿Í °ãÃÄÁ® ÀÖ´Ù. ÀÌ·± °íÁ¤ÆøÀº 20³âÀüÀÇ ºñÆ®¸Ê ÆùÆ®¿¡³ª Àû¿ëÇÏ´ø ¾Ë°í¸®ÁòÀÌ¸ç °¡º¯ÆøÀÇ Æ®·çŸÀÔ°ú´Â ¸ÂÁö ¾Ê´Ù.

¶Ç ¹®ÀÚÀÇ ¼öÁ÷ ½ÃÀÛ À§Ä¡°¡ ÀüºÎ 0À¸·Î ÁöÁ¤µÇ¾î ÀÖ¾î ¸ðµç ¹®ÀÚ°¡ õÀå¿¡ ´ÚÁö ´ÚÁö ºÙ¾î ÀÖ´Ù. S³ª M °°Àº ´ë¹®Àڴ õÀåºÎÅÍ ½ÃÀÛÇÏÁö¸¸ rÀ̳ª n°°Àº ¼Ò¹®ÀÚ´Â ´ë¹®ÀÚÀÇ Ç㸮ºÎºÐºÎÅÍ ½ÃÀ۵Ǿî¾ß ÇÑ´Ù. ¶ÇÇÑ y³ª gó·³ ²¿¸®°¡ ¹ØÀ¸·Î ÃÄÁø ¹®ÀÚµéÀº ´ë¹®ÀÚº¸´Ùµµ ´õ ¾Æ·¡ÂÊÀ¸·Î ȹÀÌ ³»·Á°¡¾ß Çϴµ¥ ±×·¸Áö ¸øÇØ º¸±â ÈäÇÏ´Ù. ƯÈ÷ Á¦ÀÏ ¸¶Áö¸·ÀÇ ¸¶Ä§Ç¥´Â fÀÇ ¹ß°¡¶ô¿¡ ºÙ¾î¾ß ÇÒ ³ðÀÌ ´«½çÀ§¿¡ ºÙ¾î¼­ ÁøÂ¥ °¡°üÀÌ´Ù.

¼¼Á¾´ë¿ÕÀÌ ¸¸µå½Å Çѱ۰°Àº ¿ì¼öÇÑ ¹®ÀÚ´Â Á¤»ç°¢ÇüÀ̶ó ÀÌ·± ½ÄÀ¸·Î Ãâ·ÂÇصµ ºÁÁÙ¸¸ÇÏÁö¸¸ ¿µ¹®Àº º¸±âº¸´Ù ±¸Á¶°¡ º¹ÀâÇؼ­ ÀÌ·± ´Ü¼øÇÑ ¹æ¹ýÀ¸·Î´Â ¾î¸²µµ ¾ø´Ù. ÀÌ ÄÚµåÀÇ ¹®Á¦Á¡Àº ¹º°¡ °íÁ¤µÈ °ªÀ» °¡Á¤Çß´Ù´Â °ÍÀÌ´Ù. ¹®ÀÚÀÇ Æø°ú ¼öÁ÷ ½ÃÀÛ À§Ä¡´Â ±Û¸®ÇÁ¸¶´Ù ¸ðµÎ ´Ù¸£°Ô Á¤ÀǵǾî ÀÖÀ½¿¡µµ ÀÏ·üÀûÀ¸·Î °°Àº °ªÀ» Àû¿ëÇÏ´Ù º¸´Ï ÀÌ·± ¾î»öÇÑ °á°ú°¡ ³ª¿À´Â °ÍÀÌ´Ù.

¹®Á¦¸¦ ÆľÇÇßÀ¸¸é ÇØ°áÃ¥µµ °£´ÜÇÏ°Ô ³ª¿Â´Ù. ±Û¸®ÇÁ¸¶´Ù Ʋ¸®°Ô Àû¿ëÇØ¾ß ÇÒ °ªµéÀ» °³º°ÀûÀ¸·Î ±¸Çؼ­ Àû¿ëÇÏ¸é µÈ´Ù. °¢ ±Û¸®ÇÁÀÇ ÆøÀ̳ª ³ôÀÌ, ÁøÇà °Å¸® µîÀÇ Æ¯¼º°ªÀ» ¸ÞÆ®¸¯½º¶ó°í Çϴµ¥ ¸Å ¹®ÀÚ¸¦ Ãâ·ÂÇÒ ¶§¸¶´Ù Ç×»ó ¸ÞÆ®¸¯½º¸¦ ÂüÁ¶ÇØ¾ß ÇÑ´Ù. ´ÙÀ½ ÄÚµå´Â ¸ÞÆ®¸¯½º¸¦ °í·ÁÇÏ¿© Á¦´ë·Î Ãâ·ÂÇÑ °ÍÀÌ´Ù.

 

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)

{

     HDC hdc;

     PAINTSTRUCT ps;

     FT_Face face;

     int x, y;

     int Color;

     int width, height;

     static TCHAR str[]=TEXT("String Mpyf.");

     int idx;

     int penx,peny;

     HPEN hPen,hOldPen;

 

     switch (iMessage) {

     case WM_CREATE:

          hWndMain=hWnd;

          return 0;

     case WM_PAINT:

          hdc=BeginPaint(hWnd, &ps);

 

          penx=0 * 64;

          peny=200 * 64;

 

          FT_New_Face(library,"c:\\windows\\fonts\\times.ttf",0,&face);

          FT_Set_Char_Size(face, 128 * 64, 0,

              GetDeviceCaps(hdc,LOGPIXELSX), GetDeviceCaps(hdc,LOGPIXELSY));

 

          for (idx=0;idx<lstrlen(str);idx++) {

              // ¹®ÀÚÀÇ ±Û¸®ÇÁ ºñÆ®¸Ê ±¸ÇÔ

              FT_Load_Char(face,str[idx],FT_LOAD_RENDER | FT_LOAD_NO_BITMAP);

 

              // È­¸éÀ¸·Î Ãâ·Â

              width=face->glyph->bitmap.width;

              height=face->glyph->bitmap.rows;

 

              for (y=0;y<height;y++) {

                   for (x=0;x<width;x++) {

                        Color=255-face->glyph->bitmap.buffer[y*width+x];

                        if (Color != 255) {

                             SetPixelV(hdc,(penx >> 6)+face->glyph->bitmap_left+x,

                                 (peny >> 6)-face->glyph->bitmap_top+y,RGB(Color,Color,Color));

                        }

                   }

              }

 

              penx += face->glyph->advance.x;

              peny += face->glyph->advance.y;

          }

 

          hPen=CreatePen(PS_SOLID,3,RGB(0,0,255));

          hOldPen=(HPEN)SelectObject(hdc,hPen);

          MoveToEx(hdc,0,200,NULL);

          LineTo(hdc,2048,200);

          DeleteObject(SelectObject(hdc,hOldPen));

          FT_Done_Face(face);

          EndPaint(hWnd, &ps);

          return 0;

     case WM_DESTROY:

          PostQuitMessage(0);

          return 0;

     }

     return(DefWindowProc(hWnd,iMessage,wParam,lParam));

}

 

¾Õ Äڵ忡 ºñÇØ advance´Ï bitmap_topÀÌ´Ï ÇÏ´Â °ªµéÀ» °è»ê¿¡ »ç¿ëÇÏ°í Àִµ¥ ÀÌ °ªµéÀÌ ¹Ù·Î ¸ÞÆ®¸¯½ºÀÌ´Ù. ±Û¸®ÇÁ¸¶´Ù ´Þ¶óÁö´Â ¸ÞÆ®¸¯½º¸¦ Á¶»çÇÏ¿© Ãâ·Â À§Ä¡³ª ´ÙÀ½ ¹®ÀÚ À§Ä¡¸¦ °áÁ¤Çß´Ù. °á°ú´Â Áö±ØÈ÷ »ó½ÄÀûÀÌ¸ç ¾ÆÁÖ ÈǸ¢ÇÏ´Ù. ¾Æ·¡ÂÊÀÇ ÆĶõ»ö ¹ØÁÙÀº º£À̽º¶óÀÎÀ» Ç¥½ÃÇϱâ À§ÇØ ±×¾î ³õÀº °ÍÀÌ´Ù. ±Û¸®ÇÁ°£ÀÇ °£°ÝÀÌ Àû´çÈ÷ ¶ç¿öÁ® ÀÖ°í ¸ðµç ±ÛÀÚµéÀÌ º£À̽º¶óÀο¡ Á¤·ÄµÇ¾î ÀÖ´Ù.

¹®ÀÚ¿­À» º¸±â ÁÁ°Ô Ãâ·ÂÇÏ·Á¸é ÆùÆ® ÀÚüÀÇ Àü¿ª ¸ÞÆ®¸¯½º¿Í °³º° ±Û¸®ÇÁÀÇ ¸ÞÆ®¸¯½º¸¦ ÀûÀýÇÏ°Ô Àß ÂüÁ¶ÇØ¾ß ÇÑ´Ù. Åë»óÀûÀÎ ¹®ÀÚ¿­ Ãâ·Â½Ã»Ó¸¸ ¾Æ´Ï¶ó ¹®ÀÚÀÇ ¸ð¾çÀ» ÀÚÀ¯·Ó°Ô º¯ÇüÇØ º»´Ù°Å³ª ÀÚ°£, ÁÙ°£, ÀåÆò µîÀÇ ¿É¼Çµé·Î ²Ù¹Ì±â¸¦ ÇØ º¸°í ½Í´Ù¸é ´õ ¸¹Àº ¸ÞÆ®¸¯½º¸¦ ¾Ë¾Æ¾ß ÇÑ´Ù.

¸ÞÆ®¸¯½º´Â ÆäÀ̽º¿Í ±Û¸®ÇÁÀÇ Å©±â¿¡ ´ëÇÑ ´Ü¼øÇÑ ¼öÄ¡°ªÀÌ¸ç ±× ÀÌ»óµµ ±× ÀÌÇϵµ ¾Æ´Ï´Ù. ÇÏÁö¸¸ ¸ÞÆ®¸¯½ºÀÇ Á¤È®ÇÑ Àǹ̸¦ ÀÌÇØÇÏ·Á¸é ÆùÆ®¸¦ Á¦ÀÛÇÏ´Â ÀýÂ÷¿Í ÆùÆ®ÀÇ ¿Ü°û¼± ±¸Á¶´Â ¹°·ÐÀÌ°í ÆùÆ®¿¡ Àû¿ëµÇ´Â ÈùÆð°Àº ¾Ë°í¸®Áò±îÁöµµ ÀÌÇØÇØ¾ß ÇÑ´Ù. °Ô´Ù°¡ ¸ÞÆ®¸¯½ºÀÇ °³¼ö°¡ ¸¹°í ºñ½Á ºñ½ÁÇؼ­ Çò°¥¸®±âµµ ÇÑ´Ù.

Áï, ¸ÞÆ®¸¯½º´Â ´Ü¼øÈ÷ µµÇ¥ Çϳª·Î ¼³¸íÇÒ ¼ö ÀÖÀ» Á¤µµ·Î °£´ÜÇÑ °³³äÀÌ ¾Æ´Ï´Ù. ±×·¡¼­ ´ÙÀ½Ç׺ÎÅÍ FreeType ¶óÀ̺귯¸®¸¦ ÅëÇØ ±Û¸®ÇÁÀÇ ¸ÞÆ®¸¯½º¸¦ Á¶»çÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ¿¬±¸ÇØ º¸±â·Î ÇÑ´Ù. ÀÌ ¿¹Á¦ ÀÚü´Â ¸ÞÆ®¸¯½º¸¦ ¿¬±¸ÇØ º» ÈÄ ´Ù½Ã ºÐ¼®ÇØ º¼ °ÍÀÌ´Ù. ¸ÞÆ®¸¯½ºÀÇ Àǹ̸¸ ¾Ë¸é ÀÌ ¿¹Á¦´Â ¾ÆÁÖ ½±°Ô ÀÌÇصȴÙ.

³ª.FT_FaceRec

FreeTypeÀº ÆäÀ̽º¸¦ ·ÎµåÇÒ ¶§ FT_Face ŸÀÔÀÇ ±¸Á¶Ã¼¿¡ ÆäÀ̽º ÀÚü¿¡ ´ëÇÑ Á¤º¸¸¦ ÃʱâÈ­Çϴµ¥ ÀÌ ±¸Á¶Ã¼¾È¿¡ ÆùÆ® ÀÚü¿¡ ´ëÇÑ Á¤º¸µéÀÌ µé¾î ÀÖ´Ù. ÆäÀ̽ºÀÇ ÇÚµéÀÎ FT_Face ŸÀÔÀº FT_FaceRecÀÇ Æ÷ÀÎÅÍ Å¸ÀÔÀ¸·Î Á¤ÀǵǾî ÀÖÀ¸¸ç ÀÌ ±¸Á¶Ã¼ÀÇ ¼±¾ð¹®Àº ´ÙÀ½°ú °°´Ù.

 

typedef struct  FT_FaceRec_

{

     FT_Long           num_faces;

     FT_Long           face_index;

 

     FT_Long           face_flags;

     FT_Long           style_flags;

 

     FT_Long           num_glyphs;

 

     FT_String*        family_name;

     FT_String*        style_name;

 

     FT_Int            num_fixed_sizes;

     FT_Bitmap_Size*   available_sizes;

 

     FT_Int            num_charmaps;

     FT_CharMap*       charmaps;

 

     FT_Generic        generic;

     FT_BBox           bbox;

 

     FT_UShort         units_per_EM;

     FT_Short          ascender;

     FT_Short          descender;

     FT_Short          height;

 

     FT_Short          max_advance_width;

     FT_Short          max_advance_height;

 

     FT_Short          underline_position;

     FT_Short          underline_thickness;

 

     FT_GlyphSlot      glyph;

     FT_Size           size;

     FT_CharMap        charmap;

} FT_FaceRec;

 

private ¸â¹ö±îÁö Æ÷ÇÔÇÏ¸é »ç½Ç À̺¸´Ù ´õ ±æÁö¸¸ °ø°³µÈ ¸â¹ö¸¸ Ç¥½ÃÇß´Ù. ÀÌ ¸â¹öµé Áß ÀϺδ ¶Ç ´Ù¸¥ ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅÍÀ̰ųª µ¿ÀûÀ¸·Î ÇÒ´çµÇ´Â ¹è¿­ÀÌ´Ù. Á¤¼öÇüÀ̳ª ¹®ÀÚ¿­°°Àº ´Ü¼ø ¸â¹ö´Â Á¦¿ÜÇÏ°í FT_FaceRec°ú ÇÏÀ§ ±¸Á¶Ã¼ÀÇ Æ÷ÇÔ °ü°è¸¦ ±×¸²À¸·Î ±×·Á º¸¸é ´ÙÀ½°ú °°´Ù.

 

°¢ ±¸Á¶Ã¼°¡ °¡Áö´Â °ªÀÇ Àǹ̰¡ ´Ù¸£¸ç ±¸Á¶Ã¼°¡ ä¿öÁö´Â ½ÃÁ¡µµ ¸ðµÎ ´Ù¸£´Ù. FT_FaceRec ±¸Á¶Ã¼´Â ÆùÆ®¸¦ ·ÎµåÇÏ´Â Áï½Ã ä¿öÁø´Ù. size ¸â¹ö´Â FT_Set_Char_Size¸¦ È£ÃâÇÒ ¶§ ä¿öÁö¸ç outlineÀº ±Û¸®ÇÁ¸¦ ·ÎµåÇØ¾ß Ã¤¿öÁö°í bitmapÀº ·£´õ¸µÀ» ÇØ¾ß Ã¤¿öÁø´Ù. ÇØ´ç Á¤º¸¸¦ ±¸ÇÏÁö ¸øÇÑ ½ÃÁ¡¿¡¼­´Â 0À¸·Î ÃʱâÈ­¸¸ µÇ¾î ÀÖ´Â »óÅÂÀÌ´Ù.

·çÆ® ±¸Á¶Ã¼´Â FT_FaceRecÀ̸ç ÀÌ ¾È¿¡ ½½·ÔÀ̳ª ºñÆ®¸Ê µîÀÇ ¶Ç´Ù¸¥ ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅÍ°¡ ÀúÀåµÇ¾î ÀÖ´Â ½ÄÀÌ¶ó ±¸Á¶°¡ »ó´çÈ÷ º¹ÀâÇÏ´Ù. ¿øÇÏ´Â ¸ÞÆ®¸¯½º¸¦ ãÀ¸·Á¸é a->b->c.d ½ÄÀ¸·Î ¿©·¯¹ø ¸µÅ©¸¦ µû¶ó °¡¾ß ÇÑ´Ù. ÀÌ ÂüÁ¶¹®À» ´É¼ö ´É¶õÇÏ°Ô ÀÛ¼ºÇÏ·Á¸é ·çÆ® ±¸Á¶Ã¼ºÎÅÍ ¼ø¼­´ë·Î Á¤¸®ÇÏ´Â ¼ö¹Û¿¡ ¾ø´Ù. °¡Àå ·çÆ®°¡ µÇ´Â FT_FaceRec ±¸Á¶Ã¼ºÎÅÍ ¸â¹ö¸¦ Â÷·Ê´ë·Î Á¤¸®ÇØ º¸ÀÚ.

 

¸â¹ö

¼³¸í

num_faces

ÆùÆ® ÆÄÀÏ¿¡ ÀúÀåµÈ ÆäÀ̽ºÀÇ °³¼ö

face_index

ÇöÀç ·ÎµåµÈ ÆäÀ̽ºÀÇ ¼ø¼­°ª. ù¹ø° ÆäÀ̽ºÀ̸é 0¹øÀÌ´Ù.

face_flags

ÆùÆ® ÆäÀ̽ºÀÇ Æ¯¼º Ç÷¡±×. ¿Ü°û¼± ÆùÆ®ÀÎÁö ºñÆ®¸Ê ÆùÆ®ÀÎÁö, ÈùÆ® Á¤º¸´Â ÀÖ´ÂÁö, Ä¿´× Á¤º¸ÀÇ À¯¹« µî¿¡ ´ëÇÑ Æ¯¼ºÀ» Ç¥ÇöÇÑ´Ù.

style_flags

ÀÌÅŸ¯, º¼µå µÎ °¡ÁöÀÇ ½ºÅ¸ÀÏÀ» Ç¥ÇöÇÑ´Ù.

num_glyphs

ÆäÀ̽º¿¡ Æ÷ÇÔµÈ ±Û¸®ÇÁÀÇ °³¼ö. °ð ±ÛÀÚ°¡ ¸î °³³ª µé¾îÀÖ´ÂÁö¸¦ ³ªÅ¸³½´Ù.

family_name

ÆùÆ® Æйи®ÀÇ À̸§. À¯´ÏÄÚµå ¹®ÀÚ¿­ÀÌ ¾Æ´Ï¶ó ANSI ¹®ÀÚ¿­ÀÌ´Ù.

style_name

ÆùÆ® ½ºÅ¸ÀÏÀÇ À̸§.

num_fixed_sizes

°íÁ¤ ÆùÆ®ÀÇ °³¼ö. ¿Ü°û¼± ÆùÆ®µµ °íÁ¤ Å©±â ÆùÆ®¸¦ °¡Áú ¼ö ÀÖ´Ù.

available_sizes

°íÁ¤ ÆùÆ®¸¦ °¡Áú °æ¿ì °¢ °íÁ¤ ÆùÆ®ÀÇ Å©±â ¹è¿­

num_charmaps

¹®ÀÚ¸ÊÀÇ °³¼ö

charmaps

¹®ÀÚ¸ÊÀÇ ¹è¿­

gnenric

ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ °íÀ¯ÀÇ ¿ëµµ·Î »ç¿ëÇÒ ¼ö ÀÖ´Â ¸â¹ö

bbox

¸ðµç ±ÛÀÚ¸¦ °¨½Ò ¼ö ÀÖ´Â ¿ÜÁ¢ »ç°¢Çü

units_per_EM

ÆùÆ® À¯´ÖÀÇ Å©±â. Æ®·çŸÀÔÀÇ °æ¿ì 2048À̸ç Type1Àº 1000À¸·Î Á¤ÀǵȴÙ. ¿Ü°û¼± ÆùÆ®¿¡¼­¸¸ À¯È¿ÇÏ¸ç ºñÆ®¸Ê ÆùÆ®¿¡¼­´Â 1·Î Á¤ÀǵȴÙ.

ascender

ÆùÆ® À¯´Ö ´ÜÀ§ÀÇ ascender

descender

ÆùÆ® À¯´Ö ´ÜÀ§ÀÇ descender

height

ÀÎÁ¢ÇÑ µÎ ÁÙÀ» °£°Ý. ÆùÆ® À¯´Ö ´ÜÀ§ÀÌ´Ù.

max_advance_width

ÃÖ´ë ÁøÇà Æø

max_advance_height

ÃÖ´ë ÁøÇà ³ôÀÌ. ¼öÁ÷ Á¤·ÄÀÏ ¶§¸¸ À¯È¿ÇÏ´Ù.

underline_position

¹ØÁÙÀÇ À§Ä¡. ÆùÆ® À¯´Ö ´ÜÀ§. ÀÌ À§Ä¡¿¡ ¹ØÁÙÀÌ Áß¾Ó Á¤·ÄµÈ´Ù.

underline_thickness

¹ØÁÙÀÇ ±½±âÀÌ¸ç ¿ª½Ã ÆùÆ® À¯´Ö ´ÜÀ§ÀÌ´Ù.

glyph

±Û¸®ÇÁ ½½·Ô. ±Û¸®ÇÁ¸¦ ·ÎµåÇϸé ÀÌ ½½·Ô¿¡ ÀúÀåµÈ´Ù. ½½·Ô ³»ºÎ¿¡ ¿Ü°û¼± Á¤º¸¿Í ºñÆ®¸Ê Á¤º¸°¡ µé¾î ÀÖ´Ù.

size

ÇöÀç Àû¿ëµÇ´Â Å©±â Á¤º¸. FT_Set_Char_Size¸¦ È£ÃâÇÒ ¶§ ä¿öÁø´Ù.

charmap

ÇöÀç Àû¿ëµÇ´Â ¹®ÀÚ ¸Ê

 

ÀÌ °ªµéÀÌ ½ÇÁ¦·Î ¾î¶² ÀǹÌÀÎÁö¸¦ Á¤È®ÇÏ°Ô ÀÍÈ÷·Á¸é ÀÏÀÏÀÌ ¿¹Á¦¸¦ ¸¸µé¾î º¸°í °ªÀ» Çѹø¾¿ »ç¿ëÇØ ºÁ¾ß ÇϹǷΠ²Ï ½Ã°£ÀÌ °É¸°´Ù. ÀÏ´Ü ¿¹Á¦¸¦ ¸¸µé¾î¼­ °¢ ÆäÀ̽ºº°·Î ¾î¶² ¸ÞÆ®¸¯½º°ªÀÌ Á¶»çµÇ´ÂÁö Âï¾î º¸ÀÚ.

 

¿¹ Á¦ : DrawMetrics

// ¸ÞÆ®¸¯½º °ª Ãâ·Â

#define OUTSTR(x) TextOut(hdc,x,y++*20,str,lstrlen(str))

void DrawMetrics(HDC hdc)

{

     FT_Face face;

     TCHAR str[128];

     int y=0;

 

     // Times

     FT_New_Face(library,"c:\\windows\\fonts\\times.ttf",0,&face);

 

     // ±Ã¼­

     //FT_New_Face(library,"c:\\windows\\fonts\\batang.ttc",2,&face);

 

     // ÆùÆ® ¸ÅÆ®¸¯½º

     wsprintf(str,TEXT("num_faces : %d"),face->num_faces);OUTSTR(0);

     wsprintf(str,TEXT("face_index : %d"),face->face_index);OUTSTR(0);

     wsprintf(str,TEXT("face_flags : %x"),face->face_flags);OUTSTR(0);

     wsprintf(str,TEXT("style_flags : %x"),face->style_flags);OUTSTR(0);

     wsprintf(str,TEXT("num_glyphs : %d"),face->num_glyphs);OUTSTR(0);

     wsprintf(str,TEXT("family_name : %S"),face->family_name);OUTSTR(0);

     wsprintf(str,TEXT("style_name : %S"),face->style_name);OUTSTR(0);

     wsprintf(str,TEXT("num_fixed_sizes : %d"),face->num_fixed_sizes);OUTSTR(0);

     wsprintf(str,TEXT("num_charmaps : %d"),face->num_charmaps);OUTSTR(0);

     wsprintf(str,TEXT("bbox : %d,%d,%d,%d"),face->bbox.xMin,face->bbox.xMax,face->bbox.yMin,face->bbox.yMax);OUTSTR(0);

     wsprintf(str,TEXT("units_per_EM : %d"),face->units_per_EM);OUTSTR(0);

     wsprintf(str,TEXT("ascender : %d"),face->ascender);OUTSTR(0);

     wsprintf(str,TEXT("descender : %d"),face->descender);OUTSTR(0);

     wsprintf(str,TEXT("height : %d"),face->height);OUTSTR(0);

     wsprintf(str,TEXT("max_advance_width : %d"),face->max_advance_width);OUTSTR(0);

     wsprintf(str,TEXT("max_advance_height : %d"),face->max_advance_height);OUTSTR(0);

     wsprintf(str,TEXT("underline_position : %d"),face->underline_position);OUTSTR(0);

     wsprintf(str,TEXT("underline_thickness : %d"),face->underline_thickness);OUTSTR(0);

 

     // »çÀÌÁî ¸ÞÆ®¸¯½º

     FT_Set_Char_Size(face, 20 * 64, 0,

          GetDeviceCaps(hdc,LOGPIXELSX), GetDeviceCaps(hdc,LOGPIXELSY));

     y=0;

     wsprintf(str,TEXT("x_ppem : %d"),face->size->metrics.x_ppem);OUTSTR(300);

     wsprintf(str,TEXT("x_scale : %d"),face->size->metrics.x_scale);OUTSTR(300);

     wsprintf(str,TEXT("y_ppem : %d"),face->size->metrics.y_ppem);OUTSTR(300);

     wsprintf(str,TEXT("y_scale : %d"),face->size->metrics.y_scale);OUTSTR(300);

     wsprintf(str,TEXT("ascender : %d"),face->size->metrics.ascender);OUTSTR(300);

     wsprintf(str,TEXT("descender : %d"),face->size->metrics.descender);OUTSTR(300);

     wsprintf(str,TEXT("height : %d"),face->size->metrics.height);OUTSTR(300);

     wsprintf(str,TEXT("max_advance : %d"),face->size->metrics.max_advance);OUTSTR(300);

 

     // ±Û¸®ÇÁ ¸ÞÆ®¸¯½º. ·£´õ¸µÇÏ¸é ºñÆ®¸ÊÀÌ µÊ

     FT_Load_Glyph(face,FT_Get_Char_Index(face,'S'),FT_LOAD_DEFAULT | FT_LOAD_NO_BITMAP);

     FT_Render_Glyph(face->glyph, FT_RENDER_MODE_NORMAL);

     y=0;

     wsprintf(str,TEXT("format : %s"),face->glyph->format==FT_GLYPH_FORMAT_OUTLINE ? L"Outline":L"Bitmap");OUTSTR(600);

     wsprintf(str,TEXT("advance.x : %d"),face->glyph->advance.x);OUTSTR(600);

     wsprintf(str,TEXT("advance.y : %d"),face->glyph->advance.y);OUTSTR(600);

     wsprintf(str,TEXT("width : %d"),face->glyph->metrics.width);OUTSTR(600);

     wsprintf(str,TEXT("height : %d"),face->glyph->metrics.height);OUTSTR(600);

     wsprintf(str,TEXT("horiBearingX : %d"),face->glyph->metrics.horiBearingX);OUTSTR(600);

     wsprintf(str,TEXT("horiBearingY : %d"),face->glyph->metrics.horiBearingY);OUTSTR(600);

     wsprintf(str,TEXT("horiAdvance : %d"),face->glyph->metrics.horiAdvance);OUTSTR(600);

     wsprintf(str,TEXT("vertBearingX : %d"),face->glyph->metrics.vertBearingX);OUTSTR(600);

     wsprintf(str,TEXT("vertBearingY : %d"),face->glyph->metrics.vertBearingY);OUTSTR(600);

     wsprintf(str,TEXT("vertAdvance : %d"),face->glyph->metrics.vertAdvance);OUTSTR(600);

     wsprintf(str,TEXT("bitmap_left : %d"),face->glyph->bitmap_left);OUTSTR(600);

     wsprintf(str,TEXT("bitmap_top : %d"),face->glyph->bitmap_top);OUTSTR(600);

     wsprintf(str,TEXT("bitmap.width : %d"),face->glyph->bitmap.width);OUTSTR(600);

     wsprintf(str,TEXT("bitmap.rows : %d"),face->glyph->bitmap.rows);OUTSTR(600);

     wsprintf(str,TEXT("bitmap.pitch : %d"),face->glyph->bitmap.pitch);OUTSTR(600);

     wsprintf(str,TEXT("n_contours : %d"),face->glyph->outline.n_contours);OUTSTR(600);

     wsprintf(str,TEXT("n_points : %d"),face->glyph->outline.n_points);OUTSTR(600);

 

     FT_Done_Face(face);

}

 

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)

{

     HDC hdc;

     PAINTSTRUCT ps;

 

     switch (iMessage) {

     case WM_CREATE:

          hWndMain=hWnd;

          return 0;

     case WM_PAINT:

          hdc=BeginPaint(hWnd, &ps);

          DrawMetrics(hdc);

          EndPaint(hWnd, &ps);

          return 0;

     case WM_DESTROY:

          PostQuitMessage(0);

          return 0;

     }

     return(DefWindowProc(hWnd,iMessage,wParam,lParam));

}

 

ÆäÀ̽º Çϳª ·ÎµåÇØ ³õ°í ¸â¹öµéÀ» ¹®ÀÚ¿­ ÇüÅ·ΠÁË´Ù ´ýÇÁÇß´Ù. ÀǹÌÀÖ´Â Á¤º¸¸¦ Ãâ·ÂÇϱâ À§ÇØ size¿Í glyph¿¡ Á¤º¸¸¦ ä¿ì´Â ÇÔ¼öµéµµ Áß°£ Áß°£¿¡ È£ÃâÇÑ´Ù. Å©±â´Â 20Æ÷ÀÎÆ®ÀÌ¸ç ·ÎµåÇÑ ±Û¸®ÇÁ´Â ´ë¹®ÀÚ SÀÌ´Ù. »ç½Ç ÀÌ·± Á¤º¸´Â ±»ÀÌ ¹®ÀÚ¿­·Î Âï¾î º¸Áö ¾Ê¾Æµµ µð¹ö°Å·Îµµ ¾ó¸¶µçÁö È®ÀÎ °¡´ÉÇÏÁö¸¸ Á» ´õ ÆíÇÏ°Ô »ìÆì º¸±â À§ÇØ ¿¹Á¦¸¦ ¸¸µé¾ú´Ù. 3¿­·Î µÇ¾î Àִµ¥ Á¦ÀÏ ¿ÞÂÊÀÌ FT_FaceRec ±¸Á¶Ã¼ÀÇ ³»¿ëÀÌ´Ù. ´ÙÀ½Àº TimesÀÇ ´ýÇÁ °á°úÀÌ´Ù.

times.ttf´Â ÆùÆ®°¡ Çϳª¹Û¿¡ ¾ø°í ±ÛÀÚ ¼ö´Â 3380°³ÀÌ´Ù. ¿µ¹® ÆùÆ®ÀÌÁö¸¸ ¾ËÆĺª»Ó¸¸ ¾Æ´Ï¶ó °¢Á¾ ±âÈ£, À¯·´ ¹®ÀÚ µîÀÌ Æ÷ÇԵǾî ÀÖ¾î ±ÛÀÚ ¼ö°¡ ²Ï ¸¹´Ù. ¹®ÀÚ¸ÊÀº 3°³ Æ÷ÇԵǾî ÀÖ°í ÆùÆ® À¯´ÖÀº 2048ÀÌ´Ù. ´ÙÀ½Àº ÇÑ±Û ±Ã¼­ ÆùÆ®ÀÇ ´ýÇÁ °á°ú¸¦ º¸ÀÚ.

ÇѱÛÀº ÆùÆ® Ä÷º¼Ç¿¡ ÀúÀåµÇ¾î ÀÖÀ¸¸ç batang.ttc ÆÄÀÏ¿¡ 4°³ÀÇ ÆäÀ̽º°¡ Æ÷ÇԵǾî ÀÖ´Ù. ±ÛÀÚ¼ö´Â ¹«·Á 39680°³³ª µÇ´Âµ¥ ÇÑ±Û »Ó¸¸ ¾Æ´Ï¶ó ÇÑÀÚ±îÁö µé¾î À־ ¿µ¹® ÆùÆ®¿¡ ºñÇØ ±ÛÀÚ ¼ö°¡ ÈξÀ ´õ ¸¹´Ù. Æ®·çŸÀÔÀº À¯´ÏÄÚµå¿Í ¸ÅŲÅä½Ã ÃÖ¼ÒÇÑ 2°³ÀÇ ¹®ÀÚ¸ÊÀ» °¡Áö´Âµ¥ À©µµ¿ìÁîÀÇ ÇÑ±Û ÆùÆ®´Â À¯´ÏÄÚµå ¹®Àڸʸ¸ °¡Áø´Ù. À©µµ¿ìÁîÀÇ ÇÑ±Û ÆùÆ®´Â ¸ÅŲÅä½Ã¿¡¼­ »ç¿ëÇÒ ¼ö ¾øµµ·Ï µÇ¾î ÀÖ´Ù.

¸ÞÆ®¸¯½º °ª Áß ÀϺδ ¼³¸í¸¸ Àо ´ëÃæ ÀÌÇصÇÁö¸¸ ¾î¶² °ÍµéÀº ´Ü¼øÇÑ ¼³¸í¸¸À¸·Î´Â ½±°Ô ÀÌÇصÇÁö ¾Ê´Â °Íµéµµ ÀÖ´Ù. ÀÌ·± °ªµéÀ» ÀÌÇØÇϱâ À§Çؼ­´Â ÆùÆ® Á¦ÀÛ ÀýÂ÷¿Í ÆùÆ® ÆÄÀÏÀÇ ±¸Á¶¿¡ ´ëÇؼ­µµ ¾Ë¾Æ¾ß ÇÑ´Ù. ¼³¸íÀÌ ÇÊ¿äÇÑ ¸â¹öµé¿¡ ´ëÇؼ­´Â »ó¼¼ÇÏ°Ô ¾Ë¾Æº¸µµ·Ï ÇÏÀÚ.

Ç÷¡±×

Ç÷¡±×´Â ÆäÀ̽ºÀÇ Àü¹ÝÀûÀΠƯ¼ºÀ» ¼³¸íÇÏ´Â °ªÀÌ¸ç ´ÙÀ½ Ç÷¡±×µéÀÇ Á¶ÇÕÀÌ´Ù.

 

ºñÆ®

Ç÷¡±×

¼³¸í

0

FT_FACE_FLAG_SCALABLE

¿Ü°û¼± ÆùÆ®ÀÌ´Ù.

1

FT_FACE_FLAG_FIXED_SIZES

°íÁ¤ Å©±âÀÇ ºñÆ®¸Ê ÆùÆ®¸¦ °¡Áö°í ÀÖ´Ù.

2

FT_FACE_FLAG_FIXED_WIDTH

°íÁ¤ÆøÀÇ ±Û²ÃÀÌ´Ù.

3

FT_FACE_FLAG_SFNT

sfnt ¹æ½ÄÀ¸·Î ÀúÀåÇÑ´Ù.

4

FT_FACE_FLAG_HORIZONTAL

¼öÆò ÆùÆ®ÀÌ´Ù.

5

FT_FACE_FLAG_VERTICAL

¼öÁ÷ ÆùÆ®ÀÌ´Ù.

6

FT_FACE_FLAG_KERNING

Ä¿´× Á¤º¸¸¦ °¡Áö°í ÀÖ´Ù.

7

FT_FACE_FLAG_FAST_GLYPHS

»ç¿ëÇÏÁö ¾Ê´Â °ªÀÌ´Ù.

8

FT_FACE_FLAG_MULTIPLE_MASTERS

¿©·¯ °³ÀÇ ¸¶½ºÅ͸¦ °¡Áø´Ù.

9

FT_FACE_FLAG_GLYPH_NAMES

±Û¸®ÇÁÀÇ À̸§À» °¡Áø´Ù.

10

FT_FACE_FLAG_EXTERNAL_STREAM

³»ºÎÀûÀ¸·Î »ç¿ëÇÏ´Â Ç÷¡±×ÀÌ´Ù.

11

FT_FACE_FLAG_HINTER

ÈùÆ® Á¤º¸¸¦ °¡Áø´Ù.

12

FT_FACE_FLAG_CID_KEYED

CID-keyed ÆùÆ®ÀÌ´Ù. ±Û¸®ÇÁ¸¦ À妽º·Î ¾×¼¼½ºÇÏÁö ¾Ê°í CID°ªÀ¸·Î ¾×¼¼½ºÇÑ´Ù.

 

¿¹Á¦ÀÇ Times ÆùÆ®´Â 16Áø¼ö 0xa59·Î Ç÷¡±×°¡ Á¶»çµÇ´Âµ¥ À̸¦ ÅëÇØ Times´Â ¿Ü°û¼± ÆùÆ®À̸ç ÈùÆ®, Ä¿´× Á¤º¸¸¦ °¡Áø´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. ±Ã¼­ ÆùÆ®´Â ¿©±â¿¡ °íÁ¤ Å©±â ºñÆ®¸ÊÀÌ Ãß°¡µÇ°í ¼öÁ÷ ÆùÆ®µµ °°ÀÌ Æ÷ÇԵǾî ÀÖ´Ù´Â Á¡ÀÌ ´Ù¸£´Ù. ÆäÀ̽º°¡ ƯÁ¤ ±â´ÉÀ» Áö¿øÇÏ´ÂÁö¸¦ Á¶»çÇÏ·Á¸é Ç÷¡±×¸¦ ÀÐ¾î º¸¸é ¾Ë ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î È®´ë, Ãà¼Ò°¡ °¡´ÉÇÑ ÆùÆ®ÀÎÁö¸¦ ¾Ë°í ½Í´Ù¸é FT_FACE_FLAG_SCALABLE ºñÆ®°¡ 1ÀÎÁö¸¦ º¸¸é µÈ´Ù.

°íÁ¤Æø ÆùÆ®

num_fixed_sizes ¸â¹ö´Â °íÁ¤ÆøÀÇ ºñÆ®¸Ê ÆùÆ®°¡ ¸î °³³ª µé¾î ÀÖ´ÂÁö¸¦ ³ªÅ¸³½´Ù. Times´Â °íÁ¤Æø ÆùÆ®°¡ ¾ø°í ¿Ü°û¼±¸¸ ÀÖÀ¸¹Ç·Î Ç×»ó ·¡½ºÅͶóÀÌ¡À» ÅëÇØ ºñÆ®¸ÊÀ» ¸¸µé¾î ³½´Ù. ÀÌ¿¡ ºñÇØ ±Ã¼­´Â °íÁ¤ Å©±âÀÇ ºñÆ®¸Ê ±Û²Ãµµ 15°³ Æ÷ÇԵǾî ÀÖ´Ù. ¿Ü°û¼± ÆùÆ®µµ ºñÆ®¸Ê ÆùÆ®¸¦ °¡Áú ¼ö Àִµ¥ ÀÌ´Â Ãâ·Â ¼Óµµ¸¦ ºü¸£°Ô ÇÏ°í ƯÁ¤ Å©±â¿¡ °¡Àå Àß µðÀÚÀÎµÈ ±Û²ÃÀ» Á¦°øÇϱâ À§Çؼ­ÀÌ´Ù.

¾î¶² Å©±âÀÇ ºñÆ®¸Ê ±Û²ÃÀÌ ÀÖ´ÂÁö´Â available_sizes ¹è¿­¿¡ ÀúÀåµÇ¾î Àִµ¥ µð¹ö°Å·Î Á¶»çÇØ º¸¸é ³ôÀÌ 11~25 Çȼ¿±îÁö°¡ ºñÆ®¸ÊÀ¸·Î Á¦À۵Ǿî ÀÖÀ½À» ¾Ë ¼ö ÀÖ´Ù. ÀÌ Å©±âÀÇ ±Û²ÃÀÌ ÇÊ¿äÇÏ¸é ¿Ü°û¼±À¸·ÎºÎÅÍ ·£´õ¸µÀ» ÇÏÁö ¾Ê°í ¹Ì¸® ÁغñµÇ¾î ÀÖ´Â ºñÆ®¸ÊÀ» ô ÇÏ°í ³» ÁÖ´Â °ÍÀÌ´Ù. Ãâ·Â ¼Óµµ°¡ È®½ÇÈ÷ ºü¸¥ ÀÌÁ¡ÀÌ ÀÖÁö¸¸ ´ë½Å ÆùÆ® ÆÄÀÏÀÌ Ä¿Áö´Â ´ÜÁ¡ÀÌ ÀÖ´Ù. Times´Â 800KÀε¥ ºñÇØ batang ÆùÆ® Ä÷º¼ÇÀº ¹«·Á 13M³ª µÈ´Ù.

FreeTypeÀº ¿äûµÈ Å©±âÀÇ ºñÆ®¸ÊÀÌ ÆùÆ® ÆäÀ̽º¿¡ Á¸ÀçÇÒ °æ¿ì ºñÆ®¸ÊÀ» ¹Ù·Î Àеµ·Ï ¼³°èµÇ¾î ÀÖÀ¸¸ç ¿î¿µÃ¼Á¦µµ °¡±ÞÀûÀÌ¸é ºñÆ®¸ÊÀ» ¿ì¼±ÀûÀ¸·Î ·ÎµåÇÑ´Ù. ±×·¯³ª ÀÌ °­ÁÂÀÇ ¿¹Á¦´Â ÀÏ°üµÈ Ãâ·Â Äڵ带 À§ÇØ ·ÎµåÇÒ ¶§ FT_LOAD_NO_BITMAP Ç÷¡±×¸¦ ÁöÁ¤ÇÏ¿© Ç×»ó ¿Ü°û¼±À¸·Î¸¸ ·ÎµåÇÏ°í ÀÖ´Ù. ¾îµð±îÁö³ª ¿¹Á¦À̱⠶§¹®¿¡ ±×·¸°Ô ÇÏ´Â °ÍÀÌ´Ù.

ÆùÆ® À¯´Ö

ÆùÆ®¸¦ ¸¸µå´Â »ç¶÷À» ÆùÆ® µðÀÚÀ̳ʶó°í ÇÑ´Ù. ÆùÆ®¶õ Àΰ£ÀÇ ¹®ÀÚ¸¦ Ç¥ÇöÇÏ´Â °ÍÀ̹ǷΠÀΰ£ÀÌ ¸¸µå´Â °ÍÀÌ ´ç¿¬ÇÏ´Ù. µðÀÚÀÎÀº ¼¶¼¼ÇÑ ÀÛ¾÷ÀÌ´Ù º¸´Ï ÁÖ·Î ¿©¼ºµéÀÌ ¸¸µå´Âµ¥ Áö±Ý ÀÌ ½Ã°£¿¡µµ Å×Çì¶õ·ÎÀÇ ºôµù »ç¹«½Ç¿¡¼­ ¹Ì½º ¸®³ª ¹Ì½º ¹ÚÀÌ ¿­½ÉÈ÷ ÆùÆ®¸¦ ¸¸µé°í ÀÖÀ» °ÍÀÌ´Ù. ÆùÆ®¸¦ µðÀÚÀÎÇÒ ¶§´Â ÀÏÁ¤ÇÑ Å©±âÀÇ µµ¸éÀ» °¡Á¤ÇÏ°í ±× ¾È¿¡ Á÷¼±°ú °î¼±À» Àß ¹èÄ¡ÇÏ¿© ±Û¸®ÇÁ¸¦ Çϳª¾¿ ¸¸µç´Ù.

À̶§ ¹Ì½º ¹ÚÀÌ ÆùÆ®¸¦ µðÀÚÀÎÇÏ´Â µµ¸éÀ» EM Square¶ó°í ÇÑ´Ù. ¿©±â¼­ EMÀ̶õ ´ë¹®ÀÚ MÀ» ÀǹÌÇϴµ¥ ¿µ¹® ±ÛÀÚÁß¿¡ °¡Àå Å« ±ÛÀÚ°¡ MÀ̹ǷΠMÀÌ µé¾î°¥¸¸ÇÑ Å©±âÀÇ µµ¸éÀ̶ó´Â ¶æÀÌ´Ù. EMÀº 2Â÷¿øÀÇ ¼öÇÐ ÁÂÇ¥°è·Î µÇ¾î ÀÖÀ¸¸ç ¿ì¸®°¡ ÈçÈ÷ »ç¿ëÇÏ´Â ¸ð´ÏÅÍÀÇ ÁÂÇ¥°è¿Í´Â ´Ù¸£´Ù. X ÁÂÇ¥´Â ¸ð´ÏÅÍ¿Í ¸¶Âù°¡Áö·Î ¿À¸¥ÂÊÀ¸·Î Áõ°¡ÇÏÁö¸¸ YÁÂÇ¥´Â ¸ð´ÏÅÍ¿Í´Â ¹Ý´ë ¹æÇâÀÎ À§ÂÊÀ¸·Î Áõ°¡ÇÑ´Ù. EMÀº ¼öÇÐ ÁÂÇ¥°èÀÇ 1/4ºÐ¸é¿¡ À§Ä¡Çϴµ¥ »ç½Ç ÀÌ°Ô Á¤»óÀÌ°í ¸ð´ÏÅÍ°¡ ¹Ý´ë·Î µÇ¾î ÀÖ´Â °ÍÀÌ´Ù.

EM ½ºÄù¾îÀÇ Å©±â´Â ÆùÆ® Æ÷¸Ëº°·Î ´Ù¸£°í µðÀÚÀÎ ¾÷üº°·Îµµ ´Þ¶óÁú ¼ö ÀÖ´Ù. face °´Ã¼ÀÇ units_per_EM ¸â¹ö´Â ¹Ù·Î ÀÌ µµ¸éÀÇ Å©±â¸¦ ³ªÅ¸³»´Âµ¥ À̸§ÀÌ Square, Áï Á¤»ç°¢ÇüÀ̹ǷΠ³ôÀ̳ª ÆøÀº ÀÏÄ¡ÇÑ´Ù. units_per_EMÀÌ Å©¸é Ŭ¼ö·Ï ¼¶¼¼ÇÑ µðÀÚÀÎÀÌ °¡´ÉÇÏ´Ù. ±×·¯³ª ³Ê¹« Áö³ªÄ¡°Ô Ŭ ÇÊ¿ä´Â ¾ø´Âµ¥ ¾îÂ÷ÇÇ °î¼±¿¡ ½Ç¼ö °è»êÀÌ µé¾î°¡¹Ç·Î EMÀÌ ÀÛ´Ù°í Çؼ­ ±Û²ÃÀÌ ´çÀå °ÅÄ¥¾îÁö´Â °ÍÀº ¾Æ´Ï´Ù. EM °ø°£Àº ´Ù¸¸ °î¼±ÀÇ ½ÃÀÛ, ³¡, Á¶ÀýÁ¡À» ³õ´Â °ø°£ÀÏ »ÓÀÌ´Ù.

Æ®·çŸÀÔÀÇ °æ¿ì´Â Åë»ó 2048 Å©±â¸¦ »ç¿ëÇϴµ¥ ¹Ì½º ¹ÚÀº °¡·Î, ¼¼·Î°¡ 2048ÀÎ ¸ð´« Á¾ÀÌ À§¿¡ ±Û²ÃÀ» µðÀÚÀÎÇÏ´Â ¼ÀÀÌ´Ù. Type1Àº 1024 Å©±â¸¦ »ç¿ëÇ쵂 ´ë½Å ÁÂÇ¥°¡ ½Ç¼ö·Î µÇ¾î ÀÖ¾î ÈξÀ ´õ Á¤¹ÐÇÑ ÁÂÇ¥ ÁöÁ¤ÀÌ °¡´ÉÇÏ´Ù. 1024³ª 2048À̳ª µÑ ´Ù ¿Ø¸¸ÇÑ ±Û¸®ÇÁ¸¦ µðÀÚÀÎÇϱ⿡´Â ÃæºÐÇÑ Å©±âÀÌ´Ù.

ÆùÆ® À¯´Ö ¶Ç´Â EM À¯´ÖÀ̶ó´Â ´ÜÀ§´Â ¹Ù·Î ÀÌ µðÀÚÀÎ µµ¸é»óÀÇ ÁÂÇ¥¸¦ ÀǹÌÇÑ´Ù. FT_FaceRec ±¸Á¶Ã¼ÀÇ ¸â¹öµéÀº Å©±â°¡ °áÁ¤µÇ±â ÀüÀ̳ª ±Û¸®ÇÁ°¡ ·Îµå µÇ±â ÀüÀÇ Àü¿ªÀûÀÎ ¸ÞÆ®¸¯½ºµéÀ̹ǷΠ¸ðµÎ ÆùÆ® À¯´ÖÀ¸·Î µÇ¾î ÀÖ´Ù. ÆùÆ® À¯´ÖÀ¸·Î µÈ ¸ÞÆ®¸¯½º´Â Â÷ÈÄ ½ÇÁ¦ Çȼ¿ Å©±â¿Í EM Å©±âÀÇ ºñÀ²À» °öÇØ Àû´çÇÑ À§Ä¡·Î º¯È¯µÈ´Ù.

º£À̽º ¶óÀÎ

º£À̽º ¶óÀÎÀº ±Û¸®ÇÁ¸¦ Ãâ·ÂÇÏ´Â °¡»óÀÇ ±âÁؼ±ÀÌ´Ù. s, r, e ó·³ º£À̽º¶óÀο¡ ¹Ø¸éÀÌ ´ê´Â ±ÛÀÚµµ ÀÖ°í g, p, yó·³ º£À̽º¶óÀÎ ¾Æ·¡ÂÊÀ¸·Îµµ ³»·Á °¡´Â ±ÛÀÚµéÀÌ ÀÖ´Ù. ¶Ç µû¿Èǥó·³ º£À̽º¶óÀκ¸´Ù ÈξÀ À§¿¡ ÀÖ´Â ±ÛÀÚµµ ÀÖ°í ¾ð´õ¹Ùó·³ º£À̽º¶óÀÎ ¾Æ·¡ÂÊ¿¡ ¹èÄ¡µÇ´Â ±ÛÀÚµµ ÀÖ´Ù.

µðÀÚÀ̳ʵéÀº ÆäÀ̽ºÀÇ º£À̽º¶óÀÎÀ» ¹Ì¸® Á¤ÇØ ³õ°í EM »óÀÇ º£À̽º ¶óÀÎÀ» ±âÁØÀ¸·Î ±Û¸®ÇÁ¸¦ µðÀÚÀÎÇÑ´Ù. ÀÌ·± ´Ù¾çÇÑ ¸ð¾çÀÇ ±ÛÀÚµéÀ» º¸±â ÁÁ°Ô Ãâ·ÂÇÏ·Á¸é º£À̽º¶óÀο¡ Á¤·ÄÇØ¾ß ÇÑ´Ù. °í¼öÁØ ÇÔ¼ö¿¡¼­Ã³·³ ±Û¸®ÇÁ¸¦ ¹«Á¶°Ç ÁöÁ¤ÇÑ ÁÂÇ¥ÀÇ Á»ó´Ü¿¡ Ãâ·ÂÇÏ´Â °ÍÀÌ ¾Æ´Ï´Ù. ±×·¸°Ô ÇØ ¹ö¸®¸é ¾Õ¿¡¼­ º¸ÀÎ ¾û¸ÁÁøâÀÎ ¿¹Á¦Ã³·³ Ãâ·ÂµÈ´Ù.

º£À̽º¶óÀÎÀÌ EMÀÇ ¾îµðÂë¿¡ ÀÖ´ÂÁö´Â ¸ÞÆ®¸¯½º¿¡ Á÷Á¢ÀûÀ¸·Î ¸í½ÃµÇ¾î ÀÖÁö ¾Ê´Ù. ¹°·Ð °è»êÇØ º¸¸é ¾Ë ¼ö´Â ÀÖÁö¸¸ ±×·² ÇÊ¿ä°¡ ¾ø´Ù. º£À̽º ¶óÀÎÀ¸·Î »ï°íÀÚ ÇÏ´Â À§Ä¡¿¡ ÆæÀ» ³õ°í ÀÌ ÆæÀ§Ä¡¿¡ ±Û¸®ÇÁ¸¦ Ãâ·ÂÇϱ⸸ ÇÏ¸é ±â°¡¸·È÷°Ô Àß ¹èÄ¡µÇµµ·Ï µðÀÚÀεǾî Àֱ⠶§¹®ÀÌ´Ù. ÀÌ ¹®Á¦¿¡ ´ëÇؼ­´Â Â÷ÈÄ Á¶±Ý ´õ ¿¬±¸ÇØ º¸±â·Î ÇÑ´Ù.

bbox

bbox(Bounding Box)´Â ÆäÀ̽º³»ÀÇ ¸ðµç ±Û¸®ÇÁ¸¦ °¨½Î´Â ÃÖ¼ÒÇÑÀÇ »ç°¢¿µ¿ªÀÌ´Ù. xMinÀÌ ¿ÞÂʳ¡, xMax°¡ ¿À¸¥ÂÊ ³¡ÀÌ´Ù. yÂÊÀº À§ÂÊÀ¸·Î Áõ°¡ÇÏ´Â ÁÂÇ¥ ü°è¸¦ °¡Áö¹Ç·Î ¾Æ·¡ÂÊÀÌ yMinÀÌ°í À§ÂÊÀÌ yMaxÀÌ´Ù. bboxÀÇ ¹Ù±ùÂÊÀº EM¿¡¼­ »ç¿ëÇÏÁö ¾Ê´Â ºó ¿©¹éÀε¥ ±ÛÀÚµé »çÀÌ¿¡µµ ¾à°£ÀÇ ¿©À¯°¡ ÀÖ¾î¾ß ÇϹǷΠEMÀ» °¡µæ ä¿ìÁö ¾Ê´Â´Ù.

bbox´Â EMÀÇ ¾îµð±îÁö¸¦ »ç¿ëÇϴ°¡¸¦ ÀǹÌÇϴµ¥ bbox°¡ Å©¸é ÀüüÀûÀ¸·Î ±Û²ÃÀÌ Ä¿Áö°í bbox°¡ ÀÛÀ¸¸é ±Û²ÃÀÌ ÀÛ¾Æ º¸ÀδÙ. bbox¸¦ ¾î¶»°Ô ¼³Á¤ÇÒ °ÍÀΰ¡´Â ¹Ì½º ¹Ú ¸¶À½ÀÌ´Ù. ¶È°°Àº Å©±âÀÇ ¹®ÀÚ¿­µµ ÆäÀ̽º¿¡ µû¶ó Å©±â¿¡ Á¶±Ý¾¿ Â÷ÀÌ°¡ ³ª´Â ÀÌÀ¯´Â bbox°¡ °¢°¢ ´Ù¸£±â ¶§¹®ÀÌ´Ù.

DumpMetrics ¿¹Á¦ÀÇ ½ÇÇà °á°ú¸¦ º¸¸é ±Ã¼­ ÆäÀ̽ºÀÇ bbox´Â »ó½ÄÀûÀ¸·Î ÀÌÇØ°¡ µÇ´Â Å©±â¸¦ °¡ÁöÁö¸¸ TimesÀÇ °æ¿ì bbox´Â EMÀÇ ¿µ¿ªÀ» ¹þ¾î³ªµµ·Ï µÇ¾î ÀÖ´Ù. ¿Ö ±×·±°¡ Çϸé TimesÀÇ ±Û¸®ÇÁÁß¿¡ ƯÀÌÇÏ°Ô Å« ±Û¸®ÇÁ(¿¹¸¦ µéÀÚ¸é ÀûºÐ ±âÈ£³ª Á¦°ö±Ù ±âÈ£ Á¤µµ)°¡ Á¸ÀçÇϱ⠶§¹®Àε¥ bbox°¡ EMÀ» ¹þ¾î³¯ ¼öµµ ÀÖ´Ù. À̰͵µ ¹Ì½º ¹Ú ¸¶À½ÀÌ´Ù.

ascender, descender

ascender´Â º£À̽º ¶óÀο¡¼­ °¡Àå ³ôÀº ±×¸®µå ÁÂÇ¥±îÁöÀÇ °Å¸®ÀÌ´Ù. Y ÁÂÇ¥°¡ À§ÂÊÀ¸·Î Áõ°¡ÇϹǷΠÀÌ °ªÀº Ç×»ó ¾ç¼öÀÌ´Ù. ÀÌ Á¤º¸°¡ º°µµ·Î ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀº ÆäÀ̽º´Â yMax°ªÀ» º£À̽º¶óÀÎ ±âÁØÀ¸·Î ¹Ù²Û ÁÂÇ¥°¡ ´ëÀԵȴÙ. ¹Ý´ë·Î descender´Â º£À̽º ¶óÀο¡¼­ °¡Àå ³·Àº ±×¸®µå ÁÂÇ¥±îÁöÀÇ °Å¸®À̸ç À½¼öÀÌ´Ù.

height

º£À̽º¶óÀΰ£ÀÇ °Å¸®À̸ç ÆùÆ® À¯´Ö ´ÜÀ§ÀÌ´Ù. Times´Â 2048 Å©±â¿¡ 2355ÀÇ ÁÙ°£ÀÌ ÁöÁ¤µÇ¾î ÀÖ°í ±Ã¼­´Â 1024Å©±â¿¡ 1176ÀÇ ÁÙ°£ÀÌ ÁöÁ¤µÇ¾î ÀÖ¾î ÆùÆ® ÀÚüÀÇ Å©±âº¸´Ù Á¶±Ý ´õ ¶ç¿ö¾ß ÇÔÀ» ¾Ë ¼ö ÀÖ´Ù. ³Ê¹« µü ºÙ¿© ¹ö¸®¸é ÁÙ°£ÀÌ ÀüÇô ¾ø¾î °©°©ÇØ º¸ÀÏ °ÍÀÌ´Ù. µÎ ÁÙÀ» ¿¬¼ÓÀ¸·Î Ãâ·ÂÇÒ ¶§´Â ÀÌ ¸ÞÆ®¸¯½º °ªÀÌ ÁöÁ¤ÇѸ¸Å­ ¶ç¿ì¸é µü º¸±â ÁÁ´Ù. ¹°·Ð ¿öµå ÇÁ·Î¼¼¼­Ã³·³ º°µµÀÇ ÁÙ°£ ÁöÁ¤ ±â´ÉÀÌ ÀÖ´Ù¸é »ç¿ëÀÚ°¡ ÁöÁ¤ÇÑ ÁÙ°£À» Àû¿ëÇØ¾ß ÇÒ °ÍÀÌ´Ù.

¹ØÁÙ À§Ä¡

¹ØÁÙÀº Bold, Italic°ú´Â ´Þ¸® º°µµÀÇ ½ºÅ¸ÀÏÀÌ ¾Æ´Ï´Ù. Bold¿Í ItalicÀº ´Ü¼øÇÑ ¿¬»ê¸¸À¸·Î ¿¹»Û ¸ð¾çÀ» ¸¸µé ¼ö ¾ø±â ¶§¹®¿¡ º°µµÀÇ ÆäÀ̽º·Î µðÀÚÀÎÀ» ÇÏÁö¸¸ ¹ØÁÙÀº ¸» ±×´ë·Î ÁÙ¸¸ ±×À¸¸é µÇ¹Ç·Î µû·Î ÆäÀ̽º¸¦ ¸¸µéÁö ¾Ê´Â´Ù. À̶§ ¹ØÁÙÀ» ¾îµðÂë¿¡ ¾ó¸¶¸¸ÇÑ ±½±â·Î ±×¾î¾ß ÇÒÁö°¡ underline_position°ú underline_thickness ¸ÞÆ®¸¯½º¿¡ ±â·ÏµÇ¾î ÀÖ´Ù. ¹°·Ð ÀÌ µÎ °ªµµ ÆùÆ® À¯´ÖÀÌ´Ù. ¹ØÁÙÀÇ À§Ä¡´Â Àý´ëÀûÀÌÁö ¾ÊÀ¸¸ç ÆäÀ̽º¸¶´Ù °¡Àå º¸±â ÁÁÀº ¹ØÁÙÀÇ À§Ä¡°¡ ´Ù¸£¸ç ¹Ì½º ¹Ú¿¡ ÀÇÇØ ±× À§Ä¡°¡ °áÁ¤µÈ´Ù.

´Ù.FT_SizeRec

FT_FaceRec ±¸Á¶Ã¼´Â ÆäÀ̽º ÀÚüÀÇ Á¤º¸¸¦ °¡Áú »ÓÀÌÁö ½ÇÁ¦ Ãâ·ÂÇÒ ¶§ÀÇ ¸ÞÆ®¸¯½º Á¤º¸´Â Æ÷ÇԵǾî ÀÖÁö ¾Ê´Ù. »ç½Ç ÆùÆ®¸¦ ·ÎµåÇÏ´Â ½ÃÁ¡¿¡´Â Å©±â°¡ °áÁ¤µÇÁö ¾Ê¾ÒÀ¸¹Ç·Î Ãâ·Â¿¡ Á÷Á¢ »ç¿ëÇÒ Á¤º¸´Â ±¸ÇÒ ¹æ¹ýÀÌ ¾ø´Ù. ÆùÆ®ÀÇ Ãâ·Â Å©±â´Â FT_Set_Char_Size ¶Ç´Â FT_Set_Pixel_Sizes µîÀÇ ÇÔ¼ö¿¡ ÀÇÇØ ÁöÁ¤µÇ´Âµ¥ ÀÌ ÇÔ¼öµéÀÌ È£ÃâµÇ¸é faceÀÇ size ¸â¹ö¿¡ ÆùÆ® Ãâ·Â¿¡ Á÷Á¢ »ç¿ëÇÒ ¼ö ÀÖ´Â ¸ÞÆ®¸¯½º°¡ °è»êµÈ´Ù. Å©±â¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é sizeÀÇ ¸â¹öµéÀº ¸ðµÎ 0ÀÇ °ªÀ» °¡Áø´Ù.

size ¸â¹ö´Â FT_SizeRec ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅÍ Å¸ÀÔÀ̸ç ÀÌ ±¸Á¶Ã¼¿¡´Â FT_Size_Metrics ±¸Á¶Ã¼°¡ Æ÷ÇԵǾî ÀÖ´Ù. ±¸Á¶Ã¼ ÁßøÀÌ ½ÉÇؼ­ Á» Çò°¥¸®´Âµ¥ Ãâ·Â¿¡ Á÷Á¢ È°¿ëÇÒ¸¸ÇÑ ¸ÞÆ®¸¯½º°¡ FT_Size_Metrics ±¸Á¶Ã¼¿¡ Æ÷ÇԵǾî ÀÖ´Ù. ÀÌ ±¸Á¶Ã¼ÀÇ Á¤º¸´Â Àü¿ª ¸ÞÆ®¸¯½º¿¡ ½ºÄÉÀÏÀ» Àû¿ëÇÑ °ÍÀ̸ç ÈùÆÃÀº Àû¿ëµÇÁö ¾Ê´Â °ªÀÌ´Ù. »ç½Ç ÀÌ °ªµéÀº ¿ì¸®°¡ °£´ÜÇÑ °è»ê½ÄÀ¸·Î Á÷Á¢ ±¸ÇÒ ¼öµµ ÀÖÁö¸¸ ÆíÀǸ¦ À§ÇØ ¶óÀ̺귯¸®°¡ °è»ê °á°ú¸¦ Á¦°øÇÑ´Ù.

 

¸â¹ö

¼³¸í

x_ppem

EM Square¿¡ È®´ë ºñÀ²À» Àû¿ëÇÑ ÆøÀÌ´Ù.

y_ppem

EM Square¿¡ È®´ë ºñÀ²À» Àû¿ëÇÑ ³ôÀÌÀÌ´Ù.

x_scale

ÆùÆ® À¯´Ö°ª¿¡ Àû¿ëÇÒ ¼öÆò È®´ë ºñÀ²À̸ç 16.16 Æ÷¸ËÀÌ´Ù. °á°ú°ªÀº 1/64 Çȼ¿ÀÌ´Ù.

y_scale

ÆùÆ® À¯´Ö°ª¿¡ Àû¿ëÇÒ ¼öÁ÷ È®´ë ºñÀ²À̸ç 16.16 Æ÷¸ËÀÌ´Ù. °á°ú°ªÀº 1/64 Çȼ¿ÀÌ´Ù.

ascender

26.6 Æ÷¸ËÀÇ ascender°ª

descender

26.6 Æ÷¸ËÀÇ descender°ª

height

26.6 Æ÷¸ËÀÇ ÁÙ°£

max_advance

26.6 Æ÷¸ËÀÇ ÃÖ´ë ÁøÇàÆø

 

ÀÌ ±¸Á¶Ã¼ÀÇ Á¤º¸°¡ ¿¹Á¦ ½ÇÇà °á°úÀÇ °¡¿îµ¥ ¿­¿¡ Ãâ·ÂµÇ¾î Àִµ¥ ½ÇÁ¦ Á¶»çµÈ ¿¹¸¦ º¸°í °ú¿¬ Á¦´ë·Î °è»êµÇ¾ú´ÂÁö È®ÀÎÇØ º¸ÀÚ. ¿¹Á¦¿¡¼­´Â 96 dpi¿¡ 20 Æ÷ÀÎÆ® Å©±â¸¦ ÁöÁ¤Çߴµ¥ ±× °á°ú size ±¸Á¶Ã¼ÀÇ x_ppemÀº 27ÀÌ µÇ¾ú´Ù. ¼öÁ÷Âʵµ °è»ê °úÁ¤Àº µ¿ÀÏÇϹǷΠ¼öÆòÂʸ¸ º¸¸é µÈ´Ù. ÀÌ °ªÀÌ °ú¿¬ Á¦´ë·Î °è»êµÇ¾ú´ÂÁö ¼öÀÛ¾÷À¸·Î °Ë»êÀ» ÇØ º¸ÀÚ. Æ÷ÀÎÆ® ´ÜÀ§ÀÇ Å©±â¿Í Çػ󵵰¡ ÁÖ¾îÁ³À» ¶§ Çȼ¿°ªÀº ´ÙÀ½ °ø½ÄÀ¸·Î °è»êÇÑ´Ù.

 

pixel = point * dpi/72

 

20*96/72¸¦ °è»ê±â·Î µÎµå·Á º¸¸é 26.6666ÀÌ ³ª¿À¸ç ¹Ý¿Ã¸²Çϸé 27ÀÌ µÈ´Ù. ¿Ö ¹Ý¿Ã¸²À» Çϴ°¡Çϸé Çȼ¿ ´ÜÀ§ÀÇ µðÁöÅÐ ¼¼°è¿¡´Â ½Ç¼ö¶ó´Â °ÍÀÌ Á¸ÀçÇÏÁö ¾Ê±â ¶§¹®ÀÌ´Ù. ÀÌ °è»ê½ÄÀº 2048 Å©±âÀÇ EM Squqre°¡ 20 Æ÷ÀÎÆ® ÆùÆ®¸¦ ±âÁØÀ¸·Î ÇßÀ» ¶§ 27 Çȼ¿ÀÇ Æø°ú ³ôÀ̸¦ °¡Áø´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. 96dpi¿¡¼­´Â Æ÷ÀÎÆ®º¸´Ù Çȼ¿ÀÌ Á¶±Ý ´õ Å©°Ô ³ª¿À¹Ç·Î 20 Æ÷ÀÎÆ®ÀÇ ±Û²ÃÀÌ 27 Çȼ¿ÀÌ µÇ´Â °ÍÀº ¾óÃß °è»êÀÌ ¸Â¾Æ ¶³¾îÁø´Ù. ±ÛÀÚÀÇ Çȼ¿ Å©±â¸¦ ¾Ë°í ½Í´Ù¸é Á÷Á¢ °è»êÇÒ ÇÊ¿ä¾øÀÌ x_ppem, y_ppemÀ» ÀÐÀ¸¸é µÈ´Ù.

´ÙÀ½Àº ¼öÆò È®´ë ºñÀ²ÀÎ x_scaleÀ» Á¡°ËÇØ º¸ÀÚ. ÀÌ °ªÀº 54624·Î Á¶»çµÇ´Âµ¥ 16.16 Æ÷¸ËÀ̹ǷΠÇÏÀ§ 16ºñÆ®´Â ¼Ò¼öÁ¡ÀÌ´Ù. 16.16 Æ÷¸ËÀÇ 1´ÜÀ§´Â 1/65536À̹ǷΠ½Ç¼ö·Î ¹Ù²Ù¸é 0.8335 Á¤µµ°¡ µÈ´Ù. ÆùÆ® À¯´Ö¿¡ ÀÌ ¹èÀ²À» Àû¿ëÇÏ¸é ½ºÄÉÀÏÀÌ Àû¿ëµÈ Çȼ¿ ´ÜÀ§ÀÇ °ªÀ» ±¸ÇÒ ¼ö ÀÖ´Ù. °ú¿¬ Á¦´ë·Î °è»êµÈ °ÍÀÎÁö heightÀÇ °ª¿¡´Ù Àû¿ëÇØ º¸ÀÚ. FT_FaceRec¿¡ Á¶»çµÈ height´Â 2355Àε¥ ¿©±â´Ù 0.8335À» °öÇϸé 1963 Á¤µµ°¡ ³ª¿Â´Ù. FT_SizeÀÇ height´Â 1984Àε¥ ½Ç¼ö Àý»è¿¡ ÀÇÇØ ¾à°£ÀÇ ¿ÀÂ÷°¡ ÀÖÁö¸¸ °ÅÀÇ ºñ½ÁÇÏ´Ù.

¹èÀ²À» Àû¿ëÇÑ °ªÀÇ ´ÜÀ§´Â 1/64 Çȼ¿ ´ÜÀ§À̹ǷΠ½ÇÁ¦ Çȼ¿ ´ÜÀ§·Î º¯È¯ÇÏ·Á¸é 64¸¦ ´Ù½Ã ³ª´©¾î¾ß ÇÑ´Ù. height°ªÀÎ 1963À» 64·Î ³ª´©¾î º¸¸é 30.6 Á¤µµ°¡ µÈ´Ù. Áï ÆùÆ®ÀÇ ³ôÀÌ´Â 27Çȼ¿ÀÌ°í ´ÙÀ½ÁÙ°úÀÇ °£°ÝÀº 31 Çȼ¿ Á¤µµ¸é ÁÙ »çÀÌ¿¡ 4Çȼ¿¾¿ÀÇ ¿©¹éÀÌ »ðÀÔµÇ¾î µü º¸±â ÁÁ´Ù´Â ¶æÀÌ´Ù.

ÀÌ»óÀ¸·Î size ¸â¹ö°¡ °ú¿¬ Á¦´ë·Î °è»êµÈ °ªÀ» °¡Áö°í ÀÖ´ÂÁö °Ë»êÇØ º¸¾Ò´Âµ¥ ±â°è°¡ °è»êÇÑ °ÍÀ̶ó ½Å·ÚÇصµ µÉ¸¸ÇÏ´Ù. °ªÀÇ ´ÜÀ§°¡ Á¤¼öµµ ½Ç¼öµµ ¾Æ´Ï°í 26.6ÀÌ´Ï 16.16ÀÌ´Ï ÇÏ´Â Á¶±Ý ³­ÀâÇÑ Æ÷¸ËÀÌ´Ù º¸´Ï ¾ó¸¥ ÆľÇÀÌ ¾ÈµÇ°í Çò°¥¸± °ÍÀÌ´Ù. ±×·¸´Ù¸é ±×³É ¹Ï¾î¶ó. ¶óÀ̺귯¸®°¡ ¼³¸¶ °ÅÁþ¸» Çϰڴ°¡? »ç½Ç ÀÌ·± °ªµéÀÇ Àǹ̸¦ ÆľÇÇÒ ¶§´Â Àо´Â Àý´ë·Î ÀÌÇØÇÒ ¼ö ¾øÀ¸¸ç Á÷Á¢ °è»ê±â ³õ°í µÎµå·Á ºÁ¾ß °¨À» ÀâÀ» ¼ö ÀÖ´Ù.

¶ó.FT_GlyphSlotRec

°³º° ¹®ÀÚ¿¡ ´ëÇÑ ¸ÞÆ®¸¯½º´Â ¹®ÀÚ¸¦ ·ÎµåÇØ¾ß ¾Ë ¼ö ÀÖÀ¸¸ç faceÀÇ glyph ¸â¹ö¸¦ ÅëÇØ Á¶»çÇÑ´Ù. FT_SizeRecÀÌ Å©±â¸¦ Àû¿ëÇÑ ÆùÆ® Àü¿ª ¸ÞÆ®¸¯½ºÀε¥ ºñÇØ ½½·ÔÀÇ ¸ÞÆ®¸¯½º´Â °³º° ±Û¸®ÇÁ¿¡ ´ëÇÑ Á¤º¸¿Í ¸ÞÆ®¸¯½ºÀÌ´Ù. glyph ¸â¹ö´Â FT_GlyphSlotRec ŸÀÔÀÇ ±¸Á¶Ã¼ÀÌ¸ç ´ÙÀ½°ú °°Àº ¸â¹ö¸¦ °¡Áø´Ù.

 

¸â¹ö

¼³¸í

metrics

¸¶Áö¸· ·ÎµåµÈ ±Û¸®ÇÁ¿¡ ´ëÇÑ ¸ÞÆ®¸¯½ºÀÌ´Ù.

linearHoriAdvance

ÈùÆõÇÁö ¾ÊÀº ±Û¸®ÇÁÀÇ ¼öÆò ÁøÇàÆøÀÌ´Ù. 16.16 Æ÷¸ËÀÌ´Ù.

linearVertAdvance

ÈùÆõÇÁö ¾ÊÀº ±Û¸®ÇÁÀÇ ¼öÁ÷ ÁøÇàÆøÀÌ´Ù. 16.16 Æ÷¸ËÀÌ´Ù.

advance

Æ®·£½ºÆûÀÌ Àû¿ëµÈ ÁøÇàÆø°ú ³ôÀÌÀÌ´Ù. 26.6 Æ÷¸ËÀÌ´Ù.

format

±Û¸®ÇÁÀÇ ÇöÀç Æ÷¸ËÀÌ´Ù. ºñÆ®¸Ê ¶Ç´Â ¿Ü°û¼± µîÀÌ´Ù.

bitmap

·£´õ¸µµÇ¾úÀ» °æ¿ìÀÇ ºñÆ®¸Ê Á¤º¸ÀÌ´Ù.

bitmap_left

Çȼ¿ ´ÜÀ§ÀÇ ¿ÞÂÊ º£¾î¸µ °ªÀÌ´Ù.

bitmap_top

Çȼ¿ ´ÜÀ§ÀÇ À§ÂÊ º£¾î¸µ °ªÀÌ´Ù.

outline

¿Ü°û¼± Á¤º¸ÀÌ´Ù.

 

±¸Á¶Ã¼ ¾È¿¡ Æ÷ÇÔµÈ ±¸Á¶Ã¼¿¡ ¶Ç ´Ù¸¥ ±¸Á¶Ã¼°¡ ¼¼ °³³ª ´õ Æ÷ÇԵǾî ÀÖ´Ù. bitmapÀº ¾Õ¿¡¼­ ¾Ë¾Æ ºÃ°í outlineÀº ´ÙÀ½ Àý¿¡¼­ ¿¬±¸ÇØ º¼ °ÍÀÌ´Ù. ¿©±â¼­´Â ¼öÄ¡°ªÀ» °¡Áö´Â metrics ¸â¹ö¸¦ ¿¬±¸ÇØ º¸ÀÚ. °¢ ¸â¹ö´Â ¸ðµÎ 26.6 Æ÷¸ËÀÇ Çȼ¿ ´ÜÀ§ÀÌµÇ FT_LOAD_NO_SCALE Ç÷¡±×¸¦ »ç¿ëÇßÀ¸¸é ÆùÆ® À¯´ÖÀ¸·Î Á¶»çµÈ´Ù.

 

¸â¹ö

¼³¸í

width

ÆùÆ®ÀÇ Æø

height

ÆùÆ®ÀÇ ³ôÀÌ. ¶È°°Àº À̸§À» °¡Áö´Â face->height¿Í´Â Àǹ̰¡ ¿ÏÀüÈ÷ ´Ù¸£¹Ç·Î ÁÖÀÇÇØ¾ß ÇÑ´Ù.

horiBearingX

¿ÞÂÊ º£¾î¸µ

horiBearingY

À§ÂÊ º£¾î¸µ

horiAdvance

¼öÆò ÁøÇà Æø

vertBearingX

¼öÁ÷ Á¤·Ä½Ã ¿ÞÂÊ º£¾î¸µ

vertBearingY

¼öÁ÷ Á¤·Ä½Ã À§ÂÊ º£¾î¸µ

vertAdvance

¼öÁ÷ Á¤·Ä½Ã ÁøÇàÆø

 

ÀϺΠÁ¤º¸µéÀº ¹Ù±ùÂÊÀÇ ¸â¹öµé°ú Áߺ¹µÈ °ªÀ» °¡Áö±âµµ ÇÑ´Ù. ¿¹¸¦ µé¾î bitmap_left´Â horiBearingX¿Í °°Àº Á¤º¸Àε¥ Çϳª´Â Çȼ¿ ´ÜÀ§ÀÌ°í Çϳª´Â 1/64 Çȼ¿ ´ÜÀ§¶ó´Â Á¡ÀÌ ´Ù¸£´Ù. ¶Ç horiAdvance¿Í linearHoriAdvanceµµ µ¿ÀÏÇÑ Á¤º¸ÀÌµÇ Çϳª´Â 26.6 Æ÷¸ËÀÌ°í Çϳª´Â 16.16 Æ÷¸ËÀÌ´Ù. ÇÊ¿äÇÑ Á¤¹ÐµµÀÇ °ªÀ» »ç¿ëÇ϶ó´Â ¶óÀ̺귯¸®ÀÇ Ä£ÀýÇÑ ¹è·ÁÀ̱â´Â ÇÏÁö¸¸ óÀ½ ¹è¿ì´Â ÀÔÀå¿¡¼­´Â »ó´çÈ÷ °ÅºÏ½º·´´Ù.

ÁøÇàÆø

ÇѱÛÀÚ¸¦ Ãâ·ÂÇÑ ÈÄ À̵¿ÇØ¾ß ÇÒ °Å¸®ÀÌ´Ù. ±ÛÀÚ¸¶´Ù ÆøÀÌ Æ²¸®¹Ç·Î ±Û¸®ÇÁ¸¶´Ù ÁøÇàÆøÀº ´Ù¸£°Ô ¼³Á¤µÇ¾î ÀÖ´Ù. ÀÌ °ªÀº Ç×»ó ¾ç¼öÀε¥ ¼³»ç ¾Æ¶ø¾îó·³ ¿À¸¥ÂÊ¿¡¼­ ¿ÞÂÊÀ¸·Î ¾²´Â ¹®ÀÚ(RTL)ÀÏÁö¶óµµ ÀÌ °ªÀº ¾ç¼ö·Î ³ªÅ¸³­´Ù. ¿µ¹®À̳ª Çѱ۰°Àº LTRÀº ÁøÇàÆøÀ» ´õÇØ °¡¸é¼­ Ãâ·ÂÇÏ°í RTLÀº ÁøÇàÆøÀ» »©¸é¼­ Ãâ·ÂÇÑ´Ù. ÇѱÛÀÇ °æ¿ì´Â ±ÛÀÚº°·Î ÆøÀÌ °ÅÀÇ °°Áö¸¸ ¿µ¹®ÀÇ °æ¿ì´Â ±ÛÀÚ¿¡ µû¶ó ÁøÇàÆøÀÌ ´Þ¶óÁø´Ù.

ÁøÇàÆøÀº ¹®ÀÚ ÀÚüÀÇ ÆøÀÎ width¿Íµµ Á¶±Ý ´Ù¸¥µ¥ width¿¡ ¾à°£ÀÇ ¿©¹éÀÌ ´õÇØÁ® ÁøÇàÆøÀ» Á¤ÀÇÇÑ´Ù. ÃÖÃÊ ÆæÀ» ÀÏÁ¤ ÁÂÇ¥·Î ÃʱâÈ­ÇÑ ÈÄ Çѹ®ÀÚ Ãâ·ÂÇÒ ¶§¸¶´Ù ÆæÀ» ÁøÇàÆø¸¸Å­ À̵¿½ÃÅ°¸é¼­ ´ÙÀ½ ¹®ÀÚ¸¦ Ãâ·ÂÇÏ¸é µÈ´Ù.

bearing

º£¾î¸µÀº ÇöÀç Ææ À§Ä¡¿¡¼­ bboxÀÇ °æ°è±îÁöÀÇ °Å¸®ÀÌ´Ù. ¼öÆò º£¾î¸µÀº bboxÀÇ Ææ À§Ä¡¿¡¼­ ¿ÞÂÊ °æ°è±îÁöÀÇ °Å¸®ÀÌ¸ç ¼öÁ÷ º£¾î¸µÀº º£À̽º¶óÀο¡¼­ bboxÀÇ »ó´Ü±îÁöÀÇ °Å¸®ÀÌ´Ù. ±ÛÀÚ°¡ ¹Ýµå½Ã ÇöÀç Ææ À§Ä¡ºÎÅÍ ½ÃÀÛµÇÁö ¾Ê°í ¾à°£ ¿©¹éÀ» µÐ ÈÄ ½ÃÀ۵Ǵµ¥ ÀÌ °ªÀÌ ¼öÆò º£¾î¸µÀÌ´Ù. ¼öÁ÷ º£¾î¸µÀº º£À̽º¶óÀο¡ ±ÛÀÚ¸¦ Á¤·ÄÇϱâ À§ÇÑ °³³äÀε¥ ±ÛÀÚ¸¶´Ù ¼öÁ÷ ½ÃÀÛ À§Ä¡°¡ Ʋ¸®¹Ç·Î Ç×»ó º£À̽º¶óÀÎÀ» ±âÁØÀ¸·Î Ãâ·ÂÇ쵂 ¼öÁ÷ º£¾î¸µ¸¸Å­ À§ÂÊ¿¡ Ãâ·ÂÇÏ¸é µÈ´Ù.

¿©±â±îÁö FreeTypeÀÌ Á¦°øÇÏ´Â ¸ÞÆ®¸¯½ºµé¿¡ ´ëÇØ ÀÏÀÏÀÌ ºÐ¼®ÇØ º¸¾Ò´Ù. ¾ÆÁ÷ ¸ÞÆ®¸¯½ºµéÀÇ Á¤È®ÇÑ ÀÇ¹Ì¿Í »ç¿ëó¸¦ ÆľÇÇÏÁö ¸øÇß°ÚÁö¸¸ ÀÚÁÖ ¾²´Â °ÍµéºÎÅÍ ½Ç½ÀÀ» ÇØ º¸¸é Çϳª µÑ¾¿ Àͼ÷ÇØÁú °ÍÀÌ´Ù. Àß ¾ÈµÇµµ °ÆÁ¤ÇÒ ÇÊ¿ä¾ø´Ù. »ðÁú ¸î¹ø ÇØ º¸¸é ÀÚ¿¬È÷ ¾Ë°Ô µÈ´Ù.

±×·³ ÀÌÁ¦ ¹®ÀÚ¿­À» Ãâ·ÂÇÏ´Â PrintString ¿¹Á¦¸¦ ºÐ¼®ÇØ º¸ÀÚ. penx, peny´Â ±ÛÀÚ Ãâ·ÂÀ» ½ÃÀÛÇÒ ÇöÀç À§Ä¡ÀÌ´Ù. ¿ÞÂÊ¿¡¼­ºÎÅÍ Ãâ·ÂÀ» ½ÃÀÛÇϹǷΠpenx´Â ´ç¿¬È÷ 0ºÎÅÍ ½ÃÀÛÇÑ´Ù. peny´Â 200À¸·Î ÃʱâÈ­µÇ¾ú´Âµ¥ ÀÌ À§Ä¡¿¡ º£À̽º¶óÀÎÀ» ¸ÂÃá´Ù´Â ¶æÀÌ´Ù. °í¼öÁØ ÇÔ¼ö¿¡¼­´Â ¹®ÀÚ¿­À» Ãâ·ÂÇÒ ¶§ Á»ó´ÜÁ¡À» ÁöÁ¤ÇÏÁö¸¸ ÆùÆ®¸¦ Á÷Á¢ ´Ù·ê ¶§´Â Ç×»ó º£À̽º¶óÀÎÀÌ ±âÁØÀÌ´Ù.

advance °ªÀÌ 1/64 Çȼ¿ ´ÜÀ§¹Ç·Î penx, penyµµ ÀÌ Æ÷¸Ë°ú ¸ÂÃß±â À§ÇØ 64¸¦ °öÇß´Ù. ½ÇÁ¦ ÀÌ °ªÀ» »ç¿ëÇÒ ¶§´Â ´Ù½Ã Çȼ¿ ´ÜÀ§·Î ¹Ù²Ù¾î¾ß ÇϹǷΠ64·Î ³ª´©¾î¾ß ÇÑ´Ù. ¹®ÀÚ Çϳª¸¦ Ãâ·ÂÇÏ´Â Äڵ带 »ó¼¼È÷ ºÐ¼®ÇØ º¸ÀÚ.

 

SetPixelV(hdc,(penx >> 6)+face->glyph->bitmap_left+x,

     (peny >> 6)-face->glyph->bitmap_top+y,RGB(Color,Color,Color));

 

¼öÆò ÁÂÇ¥´Â ÇöÀç Ææ À§Ä¡¿¡ ¼öÆò º£¾î¸µÀ» ´õÇÑ °÷ÀÌ¸ç ¹®ÀÚ ¿ÞÂÊÀÇ ¿©¹éÀ» °Ç³Ê ¶Ú´Ù. ¼öÁ÷ ÁÂÇ¥´Â ÇöÀç Ææ À§Ä¡¿¡ ¼öÁ÷ º£¾î¸µÀ» »« °ªÀ¸·Î Á¤ÀǵȴÙ. ¿Ö ´õÇÏÁö ¾Ê°í »©´Â°¡ Çϸé EM Square´Â 1/4ºÐ¸éÀÇ ÁÂÇ¥°è¶ó ¼öÁ÷ º£¾î¸µÀÌ ¾ç¼ö·Î Á¤ÀǵǾî Àִµ¥ ºñÇØ È­¸é ÁÂÇ¥´Â À§ÂÊÀÌ À½¼ö·Î Á¤ÀǵDZ⠶§¹®ÀÌ´Ù.

ÀÌ·¸°Ô °áÁ¤µÈ ÁÂÇ¥°¡ ¹Ù·Î ÇöÀç ±Û¸®ÇÁÀÇ Á»ó´ÜÁ¡ÀÌ´Ù. ÀÌ Á¡À» ±âÁØÀ¸·Î x, y·çÇÁ¸¦ µ¹¸ç ºñÆ®¸ÊÀÇ °¢ Á¡À» ¹Ýº¹Çؼ­ Ãâ·ÂÇÏ¸é ±Û¸®ÇÁ Àüü°¡ ±ò²ûÇÏ°Ô Ãâ·ÂµÈ´Ù. ¹®ÀÚ Çϳª¸¦ Ãâ·ÂÇÑ ÈÄ ÆæÀ» ´ÙÀ½ À§Ä¡·Î ¿Å±â´Âµ¥ À̶§´Â advance¸¸Å­ ÁøÇàÇÏ¸é µÈ´Ù. advance¿¡´Â º£¾î¸µÀ» Æ÷ÇÔÇÑ ÁÂ¿ì ¿©¹é±îÁö °è»êµÇ¾î ÀÖ¾î ÇöÀç Ææ À§Ä¡¿¡ ´õÇϱ⸸ ÇÏ¸é µÈ´Ù.

¿ä¾àÇÏÀÚ¸é ¹®ÀÚ¿­À» Ãâ·ÂÇÒ Ææ À§Ä¡¸¦ ¹Ì¸® Á¤ÇØ ³õ´Â´Ù. ±×¸®°í ÀÌ À§Ä¡¸¦ ±âÁØÀ¸·Î ÇÏ¿© º£¾î¸µ¸¸Å­ À̵¿ÇÑ °÷¿¡ ºñÆ®¸ÊÀ» Ãâ·ÂÇÏ°í advance¸¸Å­ ÁøÇàÇϱ⸦ ¹®ÀÚ ¹è¿­¿¡ ´ëÇØ ¹Ýº¹ÇÏ¸é µÇ´Â °ÍÀÌ´Ù. ¸¸¾à µÎ ÁÙ ÀÌ»óÀÇ ¹®ÀåÀ» Ãâ·ÂÇØ¾ß ÇÑ´Ù¸é ÁÙ°£¿¡ ÇØ´çÇÏ´Â height°ªÀ» ÂüÁ¶ÇÏ¿© Àû´çÈ÷ ÁÙ »çÀ̸¦ ¶ç¿öÁÖ¸é µÉ °ÍÀÌ´Ù.

¾Ë°í º¸¸é º°°Íµµ ¾Æ´Ñ ¿¹Á¦ÀÌ´Ù. ±×·¯³ª ¾ÆÁ÷ Áß¿äÇÑ Àǹ®Á¡ÀÌ Çϳª ´õ ³²¾Æ Àִµ¥ º£À̽º ¶óÀÎÀ¸·Î »ç¿ëµÇ´Â penyÀÇ ÃʱⰪÀÌ ¿Ö ÇÏÇÊÀ̸é 200Àΰ¡ ÇÏ´Â Á¡ÀÌ´Ù. ÀÌ °ªÀÌ 200ÀÌ´Ù º¸´Ï ¹®ÀÚ¿­ÀÌ ÀÛ¾÷¿µ¿ªÀÇ »ó´Ü¿¡ ¹ÐÂøµÇÁö ¾Ê°í Áß°£¿¡ ºØ ¶á »óÅ·ΠÃâ·ÂµÈ´Ù. penyÀÇ ÃʱⰪÀ» ÆäÀ̽ºÀÇ º£À̽º¶óÀÎÀ¸·Î ÃʱâÈ­Çϸé Á» ´õ º¸±âÁÁ°Ô Ãâ·ÂÇÒ ¼ö ÀÖÀ»ÅÙµ¥ ¸»ÀÌ´Ù.

ÀÌ »ý°¢Àº °í¼öÁØ ÇÔ¼ö¸¦ ¾µ ¶§´Â ¿ÇÁö¸¸ Àú¼öÁØÀÇ ¶óÀ̺귯¸®¸¦ ¾µ ¶§´Â ¿ÇÁö ¾Ê´Ù. µµ´ëü 200À̶ó´Â °ªÀº ¾îµð¼­ °è»êµÈ °ªÀϱî? ÀÌ °ªÀÇ Áø½ÇÀ» ¹àÈ÷ÀÚ¸é °è»êµÈ °ªÀÌ ¾Æ´Ï¶ó °³¹ßÀÚ°¡ ÀÓÀÇ·Î ÁöÁ¤ÇÑ °ªÀÌ´Ù. °³¹ßÀÚ°¡ º£À̽º¶óÀÎÀ» ã¾Æ Ææ À§Ä¡¸¦ ¸ÂÃß´Â °ÍÀÌ ¾Æ´Ï¶ó Ææ À§Ä¡¸¦ ÁÖ¸é ±× °ªÀÌ º£À̽º¶óÀÎÀ¸·Î »ç¿ëµÇ´Â °ÍÀÌ´Ù. ¹«Ã´ Çò°¥¸±ÅÙµ¥ ´ÙÀ½ Ãâ·Â °á°ú¸¦ º¸ÀÚ.

 

ÀÛ¾÷¿µ¿ª Á»ó´Ü¿¡ ¹®ÀÚµéÀ» ¸ÂÃá °ÍÀÌ´Ù. ÀÌ·¸°Ô Ãâ·ÂÇÏ·Á¸é °ú¿¬ ÆäÀ̽ºÀÇ º£À̽º¶óÀο¡ peny¸¦ ¸ÂÃß¾î¾ß ÇÑ´Ù. ±×·¯³ª ±×·² ¼ö ¾ø´Â ÀÌÀ¯´Â ´ÙÀ½°ú °°Àº °æ¿ìµµ Á¾Á¾ Àֱ⠶§¹®ÀÌ´Ù.

 

¹®´Ü¿¡ ¼ÓÇÑ ±ÛÀÚ Å©±â°¡ °¢°¢ ´Ù¸¥µ¥ ÀÌ·² °æ¿ì´Â °ú¿¬ ¾î¶² ±ÛÀÚÀÇ º£À̽º¶óÀÎÀ» ±âÁØÀ¸·Î ÇØ¾ß ÇÏ´Â °ÍÀϱî. ¸¸¾à º£À̽º¶óÀÎÀ» ù ¹®ÀÚ¿¡ ¸ÂÃß¾î ¹ö¸°´Ù¸é ´õ ³ôÀº ±ÛÀÚ´Â È­¸é À§ÂÊÀ¸·Î »ç¶óÁ® ¹ö¸± °ÍÀÌ´Ù. ±×·¸´Ù°í °³º° ¹®ÀÚµéÀ» °¢ÀÚÀÇ º£À̽º¶óÀο¡ ¸ÂÃß¸é ¾î¶»°Ô µÇ°Ú´Â°¡?

 

¹®ÀÚ¿­À» ¿äµû±¸·Î Ãâ·ÂÇÏ´Â ¿öµå ÇÁ·Î¼¼¼­ º» Àû Àִ°¡? ¹®ÀÚµéÀÇ Å©±â°¡ ´Ù¸£¸é ÇÏ´ÜÀÌ °¡Áö·±Çϵµ·Ï Á¤·ÄÇؾßÁö ÀÌ·±½ÄÀ¸·Î ±ÛÂ¥ À§ÂÊ¿¡ ¸ÂÃß¾î Á¤·ÄÇÏÁö´Â ¾Ê´Â´Ù. ÀÌ °æ¿ì ¹®ÀÚ¿­ ÀüüÀÇ º£À̽º¶óÀÎÀº ¹®´Ü¿¡¼­ °¡Àå Å« ±ÛÀÚ(¶Ç´Â À̹ÌÁö)ÀÇ ³ôÀÌ¿¡ ¸ÂÃß¾î¾ß ÇÏ¿© ¿©±â¿¡ Çà°£À̳ª ¹®´Ü ¾ÕµÚ ¿©¹éµîÀÇ ÀÀ¿ë ÇÁ·Î±×·¥ °íÀ¯ÀÇ °ªÀÌ Àû¿ëµÈ´Ù. ¹®ÀÚ¿­ Ãâ·Â¿¡ Àû¿ëµÇ´Â º£À̽º¶óÀÎÀº ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ °íÀ¯ÀÇ ¾÷¹« ±ÔÄ¢°ú ¾Ë°í¸®ÁòÀ¸·Î °è»êÇؼ­ ÁöÁ¤ÇÏ´Â °ÍÀÌÁö ÆäÀ̽º¿¡ ÀÌ¹Ì Á¤ÀÇµÈ °ªÀ» ã¾Æ¼­ ¾²´Â °ÍÀÌ ¾Æ´Ï´Ù.

¹°·Ð ÀÌ ¿¹Á¦¿¡¼­ »ç¿ëÇÑ 200À̶ó´Â °ªÀº ¾Æ¹«·± ±ÔÄ¢µµ ¾øÀÌ °³¹ßÀÚ°¡ ¸¶À½´ë·Î ÁöÁ¤ÇÑ °ÍÀÌ ºÐ¸íÇÏ´Ù. ±×·¯³ª ÀÌ´Â ¿¹Á¦ÀÌ´Ù º¸´Ï ±ÔÄ¢ÀÌ ¾ø¾î¼­ ±×·± °ÍÀÌÁö ±×¾ß¸»·Î ¾Æ¹« »ý°¢¾øÀÌ ÁöÁ¤ÇÑ °ÍÀº ¾Æ´Ï´Ù. ½Ç¿ëÀûÀÎ ÇÁ·ÎÁ§Æ®¶ó¸é ¹®ÀÚ¿­ÀÇ ¼öÁ÷ À§Ä¡¸¦ °áÁ¤ÇÏ´Â °íÀ¯ÀÇ ±ÔÄ¢ÀÌ ÀÖÀ» °ÍÀÌ°í ±× ±ÔÄ¢´ë·Î penyÀÇ ÃʱⰪÀ» °áÁ¤ÇÑ´Ù. ÀÌ·¸°Ô ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ Á¤ÇÑ À§Ä¡°¡ ¹Ù·Î º£À̽º¶óÀÎÀÌ µÇ¸ç ±Û¸®ÇÁµéÀº º£À̽º¶óÀÎÀÌ ÁÖ¾îÁö¸é ÀÌ À§Ä¡¸¦ ±âÁØÀ¸·Î °¡Áö·±È÷ Ãâ·ÂÇÒ ¼ö ÀÖµµ·Ï µðÀÚÀεǾî ÀÖ´Â °ÍÀÌ´Ù.