|
¼Ò½ºÀÚü -> http://why-not.193d.com/ptext/test.php (»ç¶óÁ³À½ -_-)
°£´ÜÇÑ ¸Þ¸ðÀå -> http://chak-yi.net/
-----------------------------
<?php
$jamo = array(
/*0 1 2 3 4 5 6 7 8 9 */
"¤¡", "¤¢", "¤£", "¤¤", "¤¥", "¤¦", "¤§", "¤¨", "¤©", "¤ª", /* 0~9 */
"¤«", "¤¬", "¤", "¤®", "¤¯", "¤°", "¤±", "¤²", "¤³", "¤´", /* 10~19 */
"¤µ", "¤¶", "¤·", "¤¸", "¤¹", "¤º", "¤»", "¤¼", "¤½", "¤¾", /* 20~29 */
"¤¿", "¤À", "¤Á", "¤Â", "¤Ã", "¤Ä", "¤Å", "¤Æ", "¤Ç", "¤È", /* 30~39 */
"¤É", "¤Ê", "¤Ë", "¤Ì", "¤Í", "¤Î", "¤Ï", "¤Ð", "¤Ñ", "¤Ò", /* 40~49 */
"¤Ó", "¡¡"); /* 50~51 */
$jo['cho'] = array(
51, 51,
/* ¤¡ ¤¢ ¤¤ ¤§ ¤¨ ¤© ¤± ¤² ¤³ ¤µ */
0, 1, 3, 6, 7, 8,16,17,18,20,
/* ¤¶ ¤· ¤¸ ¤¹ ¤º ¤» ¤¼ ¤½ ¤¾ */
21,22,23,24,25,26,27,28,29
);
$jo['jung'] = array(
51, 51, 51,
/* ¤¿ ¤À ¤Á ¤Â ¤Ã */
30,31,32,33,34,
51,51,
/* ¤Ä ¤Å ¤Æ ¤Ç ¤È ¤É */
35,36,37,38,39,40,
51,51,
/* ¤Ê ¤Ë ¤Ì ¤Í ¤Î ¤Ï */
41,42,43,44,45,46,
51,51,
/* ¤Ð ¤Ñ ¤Ò ¤Ó */
47,48,49,50
);
$jung_div = array(
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51,
51, //¤Ç, 0//¤Ç 38
30, //¤Ç, ¤¿, 1//¤È 39
31, //¤Ç, ¤À, 2//¤É 40
51, 51,
50, //¤Ç, ¤Ó, 3//¤Ê 41
51, //¤Ë, 4//¤Ë 42
51, //¤Ì, 5//¤Ì 43
34, //¤Ì, ¤Ã, 6//¤Í 44
35, //¤Ì, ¤Ä, 7//¤Î 45
50, //¤Ì, ¤Ó, 8//¤Ï 46
51, 51,
51, //¤Ð, 9//¤Ð 47
51, //¤Ñ, 10//¤Ñ 48
50, //¤Ñ, ¤Ó 11//¤Ò 49
);
$jo['jong'] = array(
51,51,
/* ¤¡ ¤¢ ¤£ ¤¤ ¤¥ ¤¦ ¤§ ¤© ¤ª ¤« */
0, 1, 2, 3, 4, 5, 6, 8, 9,10,
/* ¤¬ ¤ ¤® ¤¯ ¤° ¤± */
11,12,13,14,15,16,
51,
/* ¤² ¤´ ¤µ ¤¶ ¤· ¤¸ ¤º ¤» ¤¼ ¤½ */
17,19,20,21,22,23,25,26,27,28,
/* ¤¾ */
29,
);
function font($text, $max)
{
global $jamo, $jo, $jung_div;
$jcode = w2j($text);
for($i=0, $line=0, $line_chk=0; $i < strlen($jcode); $i++)
{
if( ord($jcode[$i]) < 128 )
{
/* ÇѱÛÀ̳ª 2¹ÙÀÌÆ® ¹®ÀÚ°¡ ¾Æ´Ï¸é.. */
if( ord($jcode[$i]) == 32 )
{
$str[$line][0] .= " ";
$str[$line][1] .= " ";
$line_chk += 2;
}
else if( ord($jcode[$i]) == 13 && ord($jcode[$i+1]) == 10 )
{
$i++;
$line++;
$line_chk=0;
}
else if( ord($jcode[$i]) > 32 )
{
$str[$line][0] .= sprintf("%c", ord($jcode[$i]));
$str[$line][1] .= " ";
$line_chk++;
}
}
else
{
$cho = ( ord($jcode[$i]) & 0x7c ) >> 2;
$jung = ( (ord($jcode[$i]) & 0x3 ) << 3 )
| ( (ord($jcode[$i+1]) & 0xe0 ) >> 5 );
$jong = ord($jcode[$i+1]) & 0x1f ;
if( is_han($cho, $jung, $jong) )
{
/* ÇѱÛÀÌ ¸Â´Ù! */
/* printf("%s%s%s ",
$jamo[$jo['cho'][$cho]],
$jamo[$jo['jung'][$jung]],
$jamo[$jo['jong'][$jong]] );
*/
$is_one = 0;
/* '°ú' -> '°í¤¿' ·Î ºÐ¸® ÇÒ ¶§ '°í' ¸¸µé±â
À§ÇØ Àӽà Áß¼º °ª '¤Ç' ÀúÀå¿ë */
$jung_tmp = 0;
if( $jung >= 13 && $jung <= 28 )
{
/* ¤Ç, ¤È, ¤Ì, ¤Ï.. °°ÀÌ Áß¼ºÀÌ Ãʼº°ú Á¾¼º °¡¿îµ¥ (°ø, ±¤)
µé¾î°¥ °æ¿ì.. */
switch($jung)
{
/* ´Ü¸ðÀ½ÀÏ °æ¿ì $is_one ¼ÂÆà */
case 13 : $is_one = 1; /* ¤Ç¤È¤É¤Ê-> ¤Ç */
case 14 : case 15 : case 18 :
$jung_tmp = 13;
break;
case 19 : $is_one = 1; /* ¤Ë */
$jung_tmp = 19;
break;
case 20 : $is_one = 1; /* ¤Ì¤Í¤Î¤Ï-> ¤Ì */
case 21 : case 22 : case 23 :
$jung_tmp = 20;
break;
case 26 : $is_one = 1; /* ¤Ð */
$jung_tmp = 26;
break;
case 27 : $is_one = 1; /* ¤Ñ¤Ò-> ¤Ñ */
case 28 :
$jung_tmp = 27;
break;
}
$tmp = 1 + ( $jung_tmp << 5 ) | 0x8000 | $cho << 10;
$str[$line][0] .= j2w(chr($tmp>>8) . chr($tmp));
}
else
{
$str[$line][0] .= $jamo[$jo['cho'][$cho]];
}
if( !$is_one ) {
$str[$line][0] .= $jamo[$jung_tmp ?
$jung_div[$jung] : $jo['jung'][$jung]] . " ";
$str[$line][1] .= "¡¡";
$line_chk += 2;
}
else
$str[$line][0] .= " ";
$str[$line][1] .= $jamo[$jo['jong'][$jong]] . " ";
$line_chk += 2;
}
else
{
/* ÇѱÛÀÌ ¾Æ´Ï³×..
iconv¸¦ ÀÌ¿ëÇؼ ¿Ï¼ºÇüÀ» Á¶ÇÕÇüÀ¸·Î ¹Ù²Ù?
ÇѱÛÀ» Á¦¿ÜÇÑ 2¹ÙÀÌÆ® ¹®Àڵ鵵 ¹Ù²î´Ï±ñ!
ÇѱÛÀ» Á¦¿ÜÇÑ 2¹ÙÀÌÆ® ¹®ÀÚµéÀº ´Ù½Ã ¿Ï¼ºÇüÀ¸·Î! */
$str[$line][0] .= j2w(sprintf("%c%c",
ord($jcode[$i]), ord($jcode[$i+1])));
$str[$line][1] .= "¡¡";
$line_chk += 2;
}
$i++;
}
if($line_chk >= $max)
{
$line++;
$line_chk = 0;
}
}
for($i=0; $i <= $line; $i++)
{
if( $i != 0 )
$ret .= "<br>\n";
$ret .= $str[$i][0] . "<br>\n" . $str[$i][1];
}
return $ret;
}
/* ------------------------
ÇÔ¼ö Á¤ÀÇ
------------------------ */
/* º¯È¯µÈ Á¶ÇÕÇü Äڵ尡 ÇѱÛÀÎÁö ¾Æ´ÑÁö */
function is_han($cho, $jung, $jong) {
return (
( $cho > 0 && $cho < 21 ) /* Ãʼº 1~20 */
&&
(
( $jung > 1 && $jung < 8 ) || /* Áß¼º 2~7 */
( $jung > 9 && $jung < 16 ) || /* Áß¼º 10~15 */
( $jung > 17 && $jung < 24 ) || /* Áß¼º 18~23 */
( $jung > 25 && $jung < 30 ) /* Áß¼º 26~29 */
)
&&
(
( $jong > 0 && $jong < 18 ) || /* Á¾¼º 1~17 */
( $jong > 18 && $jong < 30 ) /* Á¾¼º 19~29 */
)
) ? 1 : 0;
}
/* ¿Ï¼ºÇüÀ» Á¶ÇÕÇüÀ¸·Î */
function w2j($text)
{
return iconv("cp949","johab",$text);
}
/* Á¶ÇÕÇüÀ» ¿Ï¼ºÇüÀ¸·Î */
function j2w($text)
{
return iconv("johab","cp949",$text);
}
echo font("¿Í¿ì! ¾È³çÇϼ¼¿ä, ¹Ý°©½À´Ï´Ù! 뷁꿐퉾펤", 50);
?>
|