Skip to content

Naramal.Hangul

SteamB23 edited this page Jul 31, 2020 · 2 revisions

개요

한글의 자소 분리, 조합 기능을 제공하는 구조체입니다.

필드

public Consonant Consonant;

한글의 자음을 나타내는 값입니다.

public Vowel Vowel ;

한글의 모음을 나타내는 값입니다.

public FinalConsonant FinalConsonant;

한글의 받침을 나타내는 값입니다.

생성자

public Hangul(Consonant consonant, Vowel vowel, FinalConsonant finalConsonant = FinalConsonant.None);

자음, 모음, 받침을 이용해 한글 구조체를 초기화합니다.

public Hangul(char character);

한글 문자를 이용해 한글 구조체를 초기화합니다. 입력된 문자가 유니코드 Hangul Syllables영역에 속하는 문자가 아니면 각 필드들은 Failed로 초기화됩니다. 이 경우엔 이 구조체에서 원래의 문자를 복원할 수 없습니다.

정적 메서드

public static bool CheckHangulSyllable(char character);

지정된 문자가 Hangul Syllables에 속하는 문자인지 확인합니다.

자소 추출 메서드

  • public static Consonant ExtractConsonant(char character);
  • public static Vowel ExtractVowel(char character);
  • public static FinalConsonant ExtractFinalConsonant(char character);

지정된 문자에서 각각 자음, 모음, 받침을 추출합니다. 두 개 이상 혹은 세 개 전부 추출해야하면 한글 구조체 생성자를 이용하는 것이 좋습니다.

public static char Merge(Consonant consonant, Vowel vowel, FinalConsonant finalConsonant = FinalConsonant.None);

자음, 모음, 받침을 조합해 하나의 문자를 만듭니다.

유틸리티성 함수

필수요소는 아니지만 한글과 관련된 여러 처리를 제공합니다.

받침 치환

  • public static char ReplaceFinalConsonant(char character, FinalConsonant finalConsonant);
  • public static string ReplaceFinalConsonant(string text, FinalConsonant finalConsonant);

마지막 문자열의 문자나 입력받은 문자의 받침을 지정한 받침으로 치환합니다. FinalConsonant.None으로 설정하면 받침을 제거합니다.

문장 끝 늘이기

  • public static string Stretch(string text, int amount = 1, bool splitㅢ = false);

입력받은 문자열의 마지막 문자를 늘입니다. splitㅢ를 true로 설정하면 'ㅢ'를 'ㅢㅣ'로 변경하지 않고 'ㅡㅣ'로 변경합니다.

마지막에 한글 외의 문자가 있으면 동작하지 않습니다. 반드시 마지막 문자는 한글이 되어야합니다.

// 으아악
Hangul.Stretch("으악")
// 안녀어어어엉
Hangul.Stretch("안녕", 4);

단모음화

  • public static Vowel MakeShortVowel(Vowel vowel)

한국어에서는 이중모음을 늘여서 발음할 때 단모음으로 변화합니다. 다음 표는 변환 규칙입니다. 독자 연구이기 때문에 국립국어원에서 공식적으로 안내하는 자료와 상이할 수 있습니다.

이중모음 단모음 유니코드값 오프셋
-2
-2
-2
-2
-4
-4
-9
-9
-10
-10

'ㅚ', 'ㅟ'는 원래 단모음으로 분류되지만 말할때는 다른 단모음으로 변화하며 '문장 끝 늘이기'구현을 위해 특수 규칙으로 포함하였습니다. 또한 'ㅢ'는 상황에 따라 달라지는 경우가 많아 특수 규칙으로 분류했습니다.

입력 모음 출력 모음