1 °³¿ä
ÇÑ±Û Ã³¸®¿Í °ü·ÃµÈ ³»¿ëµé
2 ÆÁ
2.1 ÁÖ¾îÁø ±ÛÀÚ°¡ ÇѱÛÀΰ¡?
/// ±ÛÀÚÀÇ Á¾·ù
enum Category
{
OTHER, ///< ÇÑ±Û ¾Æ´Ô
KOREAN_SYLLABLE, ///< ÇѱÛ
KOREAN_COMPATIBILITY_JAMO, ///< ÇÑ±Û ÀÚ¸ð
KOREAN_INITIAL_PHONEME, ///< ÇÑ±Û Ãʼº (°í¾î Æ÷ÇÔ)
KOREAN_MEDIAL_VOWELS, ///< ÇÑ±Û Áß¼º (°í¾î Æ÷ÇÔ)
KOREAN_FINAL_CONSONANT, ///< ÇÑ±Û Á¾¼º (°í¾î Æ÷ÇÔ)
};
/// \brief ÁÖ¾îÁø ±ÛÀÚÀÇ Á¾·ù¸¦ ¹ÝȯÇÑ´Ù.
Category GetCategory(wchar_t ch)
{
if (0xAC00 <= ch && ch <= 0xD7A3) return KOREAN_SYLLABLE;
if (0x3131 <= ch && ch <= 0x318E) return KOREAN_COMPATIBILITY_JAMO;
if (0x1100 <= ch && ch <= 0x1159) return KOREAN_INITIAL_PHONEME;
if (0x1161 <= ch && ch <= 0x11A2) return KOREAN_MEDIAL_VOWELS;
if (0x11A8 <= ch && ch <= 0x11F9) return KOREAN_FINAL_CONSONANT;
return OTHER;
}
2.2 ÃÊÁßÁ¾¼º ºÐ¸®
/// \brief ÁÖ¾îÁø ±ÛÀÚÀÇ ÃÊÁß¼ºÀ» ºÐ¸®ÇÑ´Ù.
/// \param ch ºÐ¸®ÇÒ ±ÛÀÚ
/// \param phonemes[3] ºÐ¸®ÇÑ À½¼ÒµéÀ» Áý¾î³ÖÀ» ¹è¿. Á¾¼ºÀÌ ¾ø´Â °æ¿ì¿¡´Â
/// ¹è¿ÀÇ ¸¶Áö¸·¿¡´Â 0ÀÌ µé¾î°£´Ù.
/// \return bool ÁÖ¾îÁø ±ÛÀÚ°¡ ÇѱÛÀ̾ú´Ù¸é true, ÇѱÛÀÌ ¾Æ´Ï¾ú´Ù¸é false
bool SplitPhonemes(wchar_t ch, wchar_t phonemes[3])
{
/// Ãʼº
static const wchar_t INITIAL_PHONEMES[] =
{
L'¤¡', L'¤¢', L'¤¤', L'¤§', L'¤¨', L'¤©', L'¤±', L'¤²', L'¤³', L'¤µ',
L'¤¶', L'¤·', L'¤¸', L'¤¹', L'¤º', L'¤»', L'¤¼', L'¤½', L'¤¾'
};
/// Áß¼º
static const wchar_t MEDIAL_VOWELS[] =
{
L'¤¿', L'¤À', L'¤Á', L'¤Â', L'¤Ã', L'¤Ä', L'¤Å', L'¤Æ', L'¤Ç', L'¤È',
L'¤É', L'¤Ê', L'¤Ë', L'¤Ì', L'¤Í', L'¤Î', L'¤Ï', L'¤Ð', L'¤Ñ', L'¤Ò',
L'¤Ó'
};
/// Á¾¼º
static const wchar_t FINAL_CONSONANTS[] =
{
L' ', L'¤¡', L'¤¢', L'¤£', L'¤¤', L'¤¥', L'¤¦', L'¤§', L'¤©', L'¤ª',
L'¤«', L'¤¬', L'¤', L'¤®', L'¤¯', L'¤°', L'¤±', L'¤²', L'¤´', L'¤µ',
L'¤¶', L'¤·', L'¤¸', L'¤º', L'¤»', L'¤¼', L'¤½', L'¤¾'
};
if (GetCategory(ch) != OTHER)
{
ch = ch - 0xAC00;
int final = ch % 28;
int medial = ((ch - final) / 28) % 21;
int initial = ((ch - final) / 28) / 21;
phonemes[0] = INITIAL_PHONEMES[initial];
phonemes[1] = MEDIAL_VOWELS[medial];
phonemes[2] = final > 0 ? FINAL_CONSONANTS[final] : 0;
return true;
}
else
{
return false;
}
}
3 ¸µÅ©
4 ´Ù¿î·Îµå
CodeConv.zip
¾ðÁ¨°¡, ¾îµð¿¡¼±°¡ ´ã¾Æµ×´ø Á¶ÇÕ, ¿Ï¼º, È®Àå ¿Ï¼º °£ÀÇ »óÈ£ º¯È¯À» ´Ù·ç´Â ¼Ò½º´Ù. ÁÖ¼®µµ °ÅÀÇ ¾ø´Â µ¥´Ù°¡, »ó¼ö°¡ ÃãÀ» Ãß´Â ÄÚµå´Ù. ±×·¯¹Ç·Î ´ç¿¬È÷(?) µ¿ÀÛ ¹æ½Ä¿¡ ´ëÇØ¼´Â ¾ËÁö ¸øÇÑ´Ù. ±×³É »ç¿ëÇÒ »Ó.
SeriousMoin v1 (koMoinMoin 1.0a4 Modified)