libhangul
Version 0.1.0
|
타입정의 | |
typedef uint32_t | ucschar |
UCS4 코드 단위의 글자 코드 값 더 자세히 ... | |
libhangul은 한글 각 글자를 구분하고 조작하는데 사용할 수 있는 몇가지 함수를 제공한다. libhangul의 글자 구분 함수의 인터페이스에서 글자의 기본 단위는 UCS4 코드값이다.
UCS4 코드 단위의 글자 코드 값
UCS4 코드 값을 저장한다. libhangul에서 사용하는 문자열의 기본단위이다. preedit 문자열과 commit 문자열 모두 ucschar 포인터 형으로 전달된다. 이 스트링은 C 스트링과 유사하게 0으로 끝난다. 유니코드 값이 한글의 어떤 범주에 속하는지 확인하는 함수도 모두 ucschar 형을 사용한다.
bool hangul_is_choseong | ( | ucschar | c | ) |
초성인지 확인하는 함수
c | UCS4 코드 값 |
c 로 주어진 UCS4 코드가 초성인지 확인한다. Unicode 5.2 지원
다음에 의해서 참조됨 : hangul_is_jamo().
bool hangul_is_cjamo | ( | ucschar | c | ) |
호환 자모인지 확인
c | UCS4 코드 값 |
이 함수는 c로 주어진 UCS4 코드가 호환 자모인지 확인한다.
bool hangul_is_jamo | ( | ucschar | c | ) |
자모 인지 확인
c | UCS4 코드 값 |
c 로 주어진 UCS4 코드가 자모 코드인지 확인한다. Unicode 5.2 지원
다음을 참조함 : hangul_is_choseong(), hangul_is_jongseong(), hangul_is_jungseong().
bool hangul_is_jongseong | ( | ucschar | c | ) |
종성인지 확인하는 함수
c | UCS4 코드 값 |
c 로 주어진 UCS4 코드가 종성인지 확인한다. Unicode 5.2 지원
다음에 의해서 참조됨 : hangul_is_jamo().
bool hangul_is_jungseong | ( | ucschar | c | ) |
중성인지 확인하는 함수
c | UCS4 코드 값 |
c 로 주어진 UCS4 코드가 중성인지 확인한다. Unicode 5.2 지원
다음에 의해서 참조됨 : hangul_is_jamo().
bool hangul_is_syllable | ( | ucschar | c | ) |
한글 음절 인지 확
c | UCS4 코드 값 |
이 함수는 c로 주어진 UCS4 코드가 현대 한글 음절에 해당하는지 확인한다.
다음에 의해서 참조됨 : hangul_syllable_to_jamo().
자모 코드를 대응하는 호환 자모로 변환
c | 변환할 UCS4 코드 값 |
이 함수는 c 로 주어진 자모 코드와 같은 형태를 가진 호환 자모 값을 리턴한다. 자모와 같은 형태를 가진 호환 자모가 없는 경우에는 c 의 값을 그대로 리턴한다.
자모 코드를 조합하여 한글 음절로 변환
choseong | 초성이 될 UCS4 코드 값 |
jungseong | 중성이 될 UCS4 코드 값 |
jongseong | 종성이 될 UCS4 코드 값 |
이 함수는 choseong jungseong jongseong으로 주어진 코드 값을 각각 초성, 중성, 종성으로 하는 현대 한글 음절 코드를 구한다. choseong jungseong jongseong 이 조합 가능한 코드가 아니라면 0을 리턴한다. 종성이 없는 글자를 만들기 위해서는 jongseong에 0을 주면 된다.
다음을 참조함 : hangul_is_choseong_conjoinable(), hangul_is_jongseong_conjoinable(), hangul_is_jungseong_conjoinable().
자모 스트링을 음절 스트링으로 변환
dest | 음절형으로 변환된 결과가 저장될 버퍼 |
destlen | 결과를 저장할 버퍼의 길이(ucschar 코드 단위) |
src | 변환할 자모 스트링 |
srclen | 변환할 자모 스트링의 길이(ucschar 코드 단위) |
이 함수는 L+V+T*M? 패턴에 따라 자모 스트링 변환을 시도한다. 한 음절을 판단하는 기준은 hangul_syllable_len 을 참조한다. 만일 src 가 적절한 음절형태로 변환이 불가능한 경우에는 자모 스트링이 그대로 복사된다.
이 함수는 자모 스트링 src 를 음절형으로 변환하여 dest 에 저장한다. srclen 에 지정된 갯수만큼 읽고, destlen 에 지정된 길이 이상 쓰지 않는다. srclen 이 -1이라면 src 는 0으로 끝나는 스트링으로 가정하고 0을 제외한 길이까지 변환을 시도한다. 따라서 변환된 결과 스트링은 0으로 끝나지 않는다. 만일 0으로 끝나는 스트링을 만들고 싶다면 다음과 같이 한다.
다음을 참조함 : hangul_syllable_len().
iter를 기준으로 다음 음절의 첫자모 글자에 대한 포인터를 구하는 함수
iter | 현재 위치 |
end | 스트링의 끝위치, 포인터가 이동할 한계값 |
이 함수는 iter로 주어진 자모 스트링의 포인터를 기준으로 다음 음절의 첫번째 자모에 대한 포인터를 리턴한다. 음절을 찾기위해서 end를 넘어 이동하지 않는다.
한 음절이라고 판단하는 기준은 L*V*T+M? 패턴에 따른다.
iter를 기준으로 이전 음절의 첫자모 글자에 대한 포인터를 구하는 함수
iter | 현재 위치 |
begin | 스트링의 시작위치, 포인터가 이동할 한계값 |
이 함수는 iter로 주어진 자모 스트링의 포인터를 기준으로 이전 음절의 첫번째 자모에 대한 포인터를 리턴한다. 음절을 찾기위해서 begin보다 앞쪽으로 이동하지 않는다.
한 음절이라고 판단하는 기준은 L*V*T+M? 패턴에 따른다.
int hangul_syllable_len | ( | const ucschar * | str, |
int | max_len | ||
) |
한 음절에 해당하는 코드의 갯수를 구하는 함수
str | 음절의 길이를 구할 스트링 |
max_len | str 에서 읽을 길이의 제한값 |
이 함수는 str 에서 한 음절에 해당하는 코드의 갯수를 구한다. 한 음절에 해당하는 코드의 갯수가 max_len 보다 많다면 max_len 을 반환한다. 한 음절이라고 판단하는 기준은 L*V*T+ 패턴에 따른다. 이 패턴은 regular expression의 컨벤션을 따른 것으로, 1개 이상의 초성과 중성, 0개 이상의 종성이 모인 자모 스트링을 한 음절로 인식한다는 뜻이다. 예를 들면 다음과 같은 자모 스트링도 한 음절로 인식한다.
예) "ㅂ ㅂ ㅜ ㅔ ㄹ ㄱ" -> "쀍"
따라서 위 경우에는 6을 반환하게 된다.
일반적으로는 방점(U+302E, U+302F)까지 한 음절로 인식하겠지만, 이 함수는 음절과 자모간 변환을 편리하게 하기 위해 구현된 것으로 방점은 다른 음절로 인식한다.
str 이 자모 코드에 해당하지 않는 경우에는 1을 반환한다.
이 함수는 자모 스트링에서 총 음절의 갯수를 구하는 함수가 아님에 주의한다.
다음에 의해서 참조됨 : hangul_jamos_to_syllables().
void hangul_syllable_to_jamo | ( | ucschar | syllable, |
ucschar * | choseong, | ||
ucschar * | jungseong, | ||
ucschar * | jongseong | ||
) |
음절을 자모로 분해
syllable | 분해할 음절 |
choseong | 음절에서 초성 부분의 코드 |
jungseong | 음절에서 중성 부분의 코드 |
jongseong | 음절에서 종성 부분의 코드, 종성이 없으면 0을 반환한다 |
이 함수는 syllable 로 주어진 음절 코드를 분해하여 자모 코드를 반환한다. 반환하는 값은 choseong, jungseong, jongseong 의 포인터에 대입하여 리턴한다. 종성이 없는 음절인 경우에는 jongseong 에 0을 반환한다.
다음을 참조함 : hangul_is_syllable().
다음에 의해서 참조됨 : hangul_syllable_to_jaso().