summaryrefslogtreecommitdiff
path: root/hangul
Commit message (Collapse)AuthorAgeFilesLines
* win32: fix for win32.Won-Kyu Park2023-03-021-3/+5
|
* win32: fix hangul_keyboard_get_default_keyboard_path()Won-Kyu Park2023-03-021-1/+39
|
* win32: use Find*File() for win32Won-Kyu Park2023-03-021-1/+55
|
* cmake: check glob.h and add config.h.cmake.inWon-Kyu Park2023-02-271-0/+5
|
* do not define the default hanja dictionary for win32 case.Won-Kyu Park2023-02-151-0/+4
|
* WIN32 build fixesWon-Kyu Park2023-02-123-0/+15
|
* hanja: Fix dereference of NULLChoe Hwanjin2021-12-311-4/+8
| | | | | | | | Static Analysis에서 발견된 "dereference of NULL" 문제를 수정한다. HanjaList 메모리 할당에 실패한 경우에 대한 처리가 되지 않고 있었다. list 할당에 실패한 경우 Hanja 아이템을 추가하지 않게 한다. https://github.com/libhangul/libhangul/issues/53
* cmake: Add BUILD_SHARED_LIBS optionChoe Hwanjin2021-10-121-8/+5
| | | | | | | | | | | 사용자가 Shared와 Static 빌드를 선택할 수 있게 BUILD_SHARED_LIBS 옵션을 추가한다. ENABLE_EXTERNAL_KEYBOARDS 옵션이 ON 일때에만 expat을 찾아도 되므로 조건 처리한다. 추가로 find_package()를 사용한다. 패키지를 찾을 때에는 include()보다 나을 것 같다.
* Add CMake build filesChoe Hwanjin2021-09-201-0/+82
| | | | CMake로도 빌드할 수 있으면 좀더 편리하다.
* Add LIBHANGUL_KEYBOARD_PATH environment variable featuremasterkeyboard-pathChoe Hwanjin2021-09-191-26/+70
| | | | | | | | | | | | | | | | LIBHANGUL_KEYBOARD_PATH 환경 변수를 설정하면 그 위치의 키보드 파일을 로딩하게 한다. 테스트할 때에는 시스템에 설치된 키보드 파일이 아니라 빌드 디렉토리의 키보드 파일을 사용해야 의미가 있다. 빌드 디렉토리의 키보드을 로딩할 수 있는 기능을 제공하기위해서 LIBHANGUL_KEYBOARD_PATH 환경 변수를 도입한다. 소스 디렉토리에는 키보드 파일 템플릿만 있다. 완성된 키보드 파일은 빌드 디렉토리에 생성되므로 빌드 디렉토리에서 키보드 파일을 로딩해야 한다. 그러나 거기에는 combination 파일이 없으므로 제대로된 테스트를 위해서는 combination 파일도 복사해주는 룰이 필요하다. AC_CONFIG_LINKS()를 사용하여 소스만 고치고도 테스트 가능하게 한다.
* Remove compiler warnings with -Wpedantic (#44)Choe Hwanjin2021-04-042-3/+3
| | | | | | | pedantic 옵션을 추가했을 때 발생하는 워닝을 제거한다. 다른 워닝이 발생하는 곳도 같이 수정한다. https://github.com/libhangul/libhangul/issues/44
* User custom 자판 등록 기능 제공Choe Hwanjin2018-06-062-0/+67
| | | | | | | | | | hangul_keyboard_list에 사용자가 생성한 HangulKeyboard를 등록할 수 있는 api를 추가한다. 관련하여 unit test 코드도 추가함. https://github.com/libhangul/libhangul/pull/21 https://github.com/libhangul/libhangul/issues/28
* 두벌식 자판에서 한글이 아닌 것은 원 자판의 글자를 사용Choe Hwanjin2018-06-061-84/+84
| | | | | | | | | | | | | | | | | | | | | 기존 방식에서는 사용자 자판이 qwerty 자판이 아닌 경우에도 한글 상태에서는 qwerty 자판으로 동작하게 된다. 사용자가 qwerty 자판이 아닌 것을 사용할때에는 불편할 수 있으므로 한글에 대해서만 처리하고 나머지 키는 그대로 포워딩할 수 있도록 하는 것이다. 이렇게 하면 반대로 사용자가 한글 자판 상태에서 qwerty 기호나 숫자를 입력하고자할때에는 사용할 수가 없게 된다. 또 글자를 commit하는 방식이 아니라 키이벤트를 포워딩하는 방식으로 처리하게 되므로 최근 ibus에서 발생한 space 순서가 바뀌는 문제 같은 것들이 영문자에 대해서 모두 발생할 위험성이 커질 수 있다. 참고: https://github.com/libhangul/ibus-hangul/issues/42 세벌식 자판의 경우는 좀더 생각해볼 시간을 가지기 위해서 일단 적용을 보류하고 두벌식에만 먼저 적용한다. https://github.com/libhangul/libhangul/issues/27 https://github.com/libhangul/ibus-hangul/issues/15
* Add copyright notice to hangulkeyboard.hChoe Hwanjin2018-06-061-0/+17
|
* hangul_combination_set_data()에서 size_t overflow 문제 수정Choe Hwanjin2018-06-051-1/+1
| | | | | | | 대부분의 경우 ULONG_MAX는 SIZE_MAX와 같은 값을 가지겠지만, size_t 타입에 맞는 최대값을 사용하는 편이 안전할 것이다. https://github.com/choehwanjin/libhangul/issues/17
* PATH_MAX 사용 코드 제거Choe Hwanjin2018-06-051-10/+36
| | | | | | | | | | | | hurd에서는 PATH_MAX가 없는 것 같다. https://buildd.debian.org/status/fetch.php?pkg=libhangul&arch=hurd-i386&ver=0.1.0%2Bgit20170815-1&stamp=1511811053&raw=0 관련 코드는 정확한 PATH_MAX값이 필요한 것이 아니므로 PATH_MAX를 사용하지 않도록 수정하는 편이 좋을 것 같다. 파일 이름에 사용할 버퍼에 필요한 스트링 길이를 계산하고 메모리를 할당하여 처리한다. https://github.com/choehwanjin/libhangul/issues/24
* 키보드 파일을 로딩시 재귀호출 테스트 코드 추가Choe Hwanjin2018-06-052-1/+2
| | | | | | 키보드 파일이 자기자신을 include한 경우에대한 테스트 코드 추가한다. 관련 api hangul_keyboard_new_from_file()도 추가하고 샘플 키보드 파일 recursive.xml을 추가한다.
* 키보드 파일 로딩시 재귀 호출 처리Choe Hwanjin2018-06-021-8/+25
| | | | | 자기 자신을 include할 경우에 대한 처리가 필요하다. include depth를 64개까지만 처리하도록 제한을 두어 해결한다.
* ENABLE_NLS 처리 추가Choe Hwanjin2016-03-291-1/+1
| | | | | intltool은 ENABLE_NLS를 정의하지 않는 것 같다. 대신 USE_NLS를 설정하므로 이 값으로 ENABLE_NLS 처리를 한다.
* configure 옵션 추가: --disable-external-keyboardsChoe Hwanjin2016-03-281-0/+6
| | | | | | External keyboards 로딩 기능 사용 여부를 configure에서 설정할 수 있게 한다. libhangul을 외부 파일 없이 binary만 가지고 사용하고자 할때 이 옵션을 사용하면 좋을 것이다.
* hangul_init 함수의 중복 호출 문제 처리Choe Hwanjin2016-03-061-0/+6
|
* 문서 업데이트Choe Hwanjin2016-03-052-1/+95
|
* xml로 작성된 외부의 한글 자판을 로딩하는 기능 구현Choe Hwanjin2016-03-055-351/+1045
| | | | | | | | | | | | | | 한글 자판 파일의 확장성을 고려하여 자판 파일은 xml로 구성하도록 한다. xml 파서는 expat을 사용한다. xml 번역을 위해서 intltool을 사용하고 autopoint대신 intltool로 gettext을 초기화 한다. 한글 자판 관리는 HangulKeyboardList를 통해서 한다. 한글 자판을 로딩하고 언로딩하기 위해서 hangul_init()/hangul_fini()와 같은 함수를 추가로 도입한다. HangulKeyboard는 HangulCombination과 세트로 관리하는 편이 합리적인 것 같다.
* hangul ic: HANGUL_IC_OPTION_NON_CHOSEONG_COMBI 옵션 추가Choe Hwanjin2016-02-242-0/+15
| | | | | | | | | | 첫음절에 유니코드 초성에 없는 글자도 조합하는 기능을 설정할 수 있게 한다. libhangul에서는 ㄳ이나 ㄺ등 초성에 없는 글자를 첫음절에서 조합하는 기능을 제공하지 않았다. 그러나 MS IME와 호환성을 높이기 위해서 이 기능을 추가하였으므로, 이 기능을 켜고 끌 수 있도록 옵션으로 처리한다. 관련 유닛테스트 코드도 추가한다.
* hangul ic: HANGUL_IC_OPTION_COMBI_ON_DOUBLE_STROKE 옵션 추가Choe Hwanjin2016-02-233-18/+51
| | | | | | | | | | | | | | | | 두벌식에서 자음을 연속 입력해서 된소리로 조합해주는 기능을 설정으로 조정할 수 있게 한다. (예를 들어 ㄱ+ㄱ을 ㄲ으로 변환해 주는 기능) 이에 따라서 관련 유닛 테스트 코드를 변경하고 이 옵션을 테스트할 코드를 추가한다. 기본값은 MS IME 호환을 위해서 false로 설정한다. 세벌식의 경우에는 이 기능이 자판의 기본적인 동작 방식이므로 이 옵션으로 조정되지 않는다. 두벌식 옛한글 자판의 경우에는 현대 한글 자모의 경우만 조합이 제한되고 옛한글 자모들은 그대로 조합된다. 구현에 필요한 hangul_is_jamo_conjoinable 함수도 추가.
* input context 입력 옵션 설정 기능 추가: auto reorderChoe Hwanjin2016-02-212-5/+73
| | | | | | | | | | hangul_ic_set_option 함수를 통해서 입력 옵션 설정이 가능하다. 처음에는 filter 함수를 이용해서 라이브러리 외부에서 좀더 유연하게 조종할 수 있도록 하려 했었는데, 옵션을 만드는 쪽이 구현과 사용이 더 쉬울 것 같아서 옵션으로 추가한다. 첫번째 구현으로 auto reorder 옵션을 추가하고, 관련 테스트 코드도 추가한다. 기본값은 MS IME 호환을 위해서 false로 설정한다.
* hangul_ic_process함수에서 backspace 처리도 가능하게 함Choe Hwanjin2016-02-201-0/+4
| | | | | | ascii 코드를 직접 처리하는 경우 backspace를 예외 처리하기 보다는 hangul_ic_process함수에서 '\b' 코드로 처리하게 하면 여러 테스트 코드들이 훨씬 간결해질 수 있다.
* MS IME 호환 기능 추가: ㄳ 입력 기능 추가Choe Hwanjin2016-02-202-0/+21
| | | | | | | | 원래 이 글자들은 유니코드 초성에 없는 글자들이라서 입력 기능을 제공하지 않았지만, MS IME 호환 기능을 요구하는 경우가 많아서 libhangul 수준에서 제공하기로 결정한다. 그래서 ㄳ은 초성이 결합하여 종성이 되도록 combination table을 만든다.
* Fix incorrect sizeof expressionbaserock/libhangul-0.1.0-19-g78e9d89Jihoon Kim2015-02-241-1/+1
| | | | | | sizeof of pointer variable returns 4 bytes. Change-Id: Iaf4444ceabff8ccc9a1f2f397e13bbf01b5feb04
* hanja_list_new()에서 발생할 가능성이 있는 memory leak 수정Choe Hwanjin2015-02-231-9/+16
| | | | strdup이 실패할 경우와 malloc이 실패할 경우에 대한 처리를 강화한다.
* fix typo in doxygenJihoon Kim2014-04-081-2/+2
| | | | | | | 설멍 -> 설명 해댱 -> 해당 Signed-off-by: Jihoon Kim <jihoon48.kim@samsung.com>
* hangul_jamo_to_cjamo 테이블에 빠진 곳 추가Choe Hwanjin2013-11-031-0/+4
| | | | | | 0xd7c7 ~ 0xd7ca까지 값이 빠져 있었음 patch from: 김지훈 <jihoon48.kim@samsung.com>
* Fix some build warnings.Carbo Kuo2013-06-092-1/+2
|
* Doxygen 문서 업데이트Choe Hwanjin2011-12-172-69/+71
| | | | | | libhangul이 지원하는 자판에 대한 문서 추가 ref 태그에 띠어 쓰기가 없는 오류 수정 mainpage도 나머지 문서와 어투를 맞춤
* 내부 구현에서만 사용할 함수는 hangulinternals.h로 옮김Choe Hwanjin2011-11-122-5/+4
| | | | | | | hangul_choseong_to_jongseong(), hangul_jongseong_to_choseong(), hangul_jongseong_decompose() 함수들은 두벌식 자판을 구현할때 사용하는 함수들로 일반적인 목적으로 사용하기에 적당하지 않다. 내부에서만 사용하는 함수로 옮기는 것이 적절하겠다.
* hangul_jongseong_{dicompose -> decompose}Jeong YunWon2011-11-113-3/+10
| | | | | 잘못 이름지은 함수 hangul_jongseong_dicompose 를 hangul_jongseong_decompose 로 바꿈 hangul_jongseong_dicompose 심볼이 같은 기능을 하도록 보존
* deprecated 함수 제거Choe Hwanjin2011-09-073-153/+0
| | | | | | | 다음 릴리스에서는 library version을 올릴 것이다. git-svn-id: http://kldp.net/svn/hangul/libhangul/trunk@267 8f00fcd2-89fc-0310-932e-b01be5b65e01
* hangul_ic_is_transliteration() 함수 추가Choe Hwanjin2011-08-282-0/+28
| | | | | | | | 이 함수는 hangul_ic_process()에 키코드를 넘기기 전에 normalize 과정에 필요한지 판단해주는 함수다. git-svn-id: http://kldp.net/svn/hangul/libhangul/trunk@264 8f00fcd2-89fc-0310-932e-b01be5b65e01
* Combination table을 IC에서 Keyboard로 옮김Choe Hwanjin2011-08-161-18/+11
| | | | | | | | Combination table은 keyboard에 종속적인 정보이므로 HangulKeyboard에서 참조하는 것이 바람직하다. git-svn-id: http://kldp.net/svn/hangul/libhangul/trunk@263 8f00fcd2-89fc-0310-932e-b01be5b65e01
* hangul_ic_get_keyboard_name()의 리턴값을 로캘에 관계없이 ↵Choe Hwanjin2010-12-291-0/+1
| | | | | | | | | | | | | | UTF-8로 함 hangul_ic_get_keyboard_name() 함수의 리턴값을 사용하는 곳의 대부분이 UTF-8인 경우에 더 사용하기 편리하다. nabi, ibus, scim, imhangul 등의 경우 결국 스트링을 UTF-8로 변환해야 하므로 여기에서 UTF-8을 리턴하면 코딩이 더 편리해진다. 단 tools/hangul.c 에서는 locale에 따른 변환을 해주어야 하므로 약간 더 불편해지기는 하지만, 나머지에서 수정할 내용이 줄어들므로 이 편이 더 낫다. git-svn-id: http://kldp.net/svn/hangul/libhangul/trunk@252 8f00fcd2-89fc-0310-932e-b01be5b65e01
* 세벌식 두벌 자판은 별로 중요하지 않은 자판이므로 ↵Choe Hwanjin2010-12-291-1/+1
| | | | | | 순서를 아래로 낮춤 git-svn-id: http://kldp.net/svn/hangul/libhangul/trunk@250 8f00fcd2-89fc-0310-932e-b01be5b65e01
* 자판 이름 시작 글자를 대문자로 바꿈Choe Hwanjin2010-12-291-5/+5
| | | | git-svn-id: http://kldp.net/svn/hangul/libhangul/trunk@249 8f00fcd2-89fc-0310-932e-b01be5b65e01
* #315248 안마태 자판 추가Choe Hwanjin2010-12-281-29/+29
| | | | | | | | | | | | 안마태 자판에서 임의로 추가된 기호 부분을 제거하고, 대신 shift 상태에서도 shift가 아닐때 글자가 나오도록 수정한다. 이전에 빠트렸던, OP의 [] 문자를 추가한다. 자모의 이름이 Unicode와 맞지 않는 부분을 unicode 이름으로 바꾼다. 안마태 자판에서 shift 상태에 배당되어 있지 않은 곳에 어떤 문자를 할당할지는 좀더 토론을 거친후에 처리하는 편이 좋을 것이다. git-svn-id: http://kldp.net/svn/hangul/libhangul/trunk@248 8f00fcd2-89fc-0310-932e-b01be5b65e01
* 세벌식 옛글 자판의 배열을 아래한글과 동일하게 바꿈Choe Hwanjin2010-12-261-7/+7
| | | | | | | | | 옛글 자판에 대해서는 공인된 기준이 없는 만큼 사용자가 많을 것이라 예상되는 아래한글의 세벌식 자판과 같은 자판을 지원하는 것이 사용자에게 편리할 것이라 생각한다. git-svn-id: http://kldp.net/svn/hangul/libhangul/trunk@244 8f00fcd2-89fc-0310-932e-b01be5b65e01
* 두벌식에서 초성이 옛글에서만 사용되는 종성으로 ↵Choe Hwanjin2010-12-251-4/+22
| | | | | | | | | | | | | | 변환되는 경우 처리 ㅃㅉㄸ은 옛글 자모 글자인데, 이번에 두벌식 옛글자판을 구현하면서 hangul_choseong_to_jongseong() 함수로 초성에서 종성으로 변환이 가능해진 자모 글자다. 그런데 저 글자는 현대 한글에서는 유효하지 않은 종성이므로 현대 한글 자판에서는 위 초성들이 종성으로 변환되어서는 안된다. 그래서 combination_table을 비교하여 conjoinable 자모인지 아닌지에 따라서 종성 변환을 할 것인지 말 것인지 처리한다. git-svn-id: http://kldp.net/svn/hangul/libhangul/trunk@242 8f00fcd2-89fc-0310-932e-b01be5b65e01
* hangul_combination_combine() 함수의 버그 수정Choe Hwanjin2010-12-251-1/+9
| | | | | | | | | | | hangul_combination_combine() 함수의 비교함수에서 두 key 값을 단순히 뺄셈연산하여 리턴하게 되면 두수의 크기차 signed int를 넘어서는 경우에 음수로 연산될 수 있어서 위험하다. 부등호를 이용하여 비교연산으로 처리한다. Unicode 5.2에서 추가된 자모들중 U+A960, U+D7B0 영역의 문자들을 조합하지 못하는 문제 수정 git-svn-id: http://kldp.net/svn/hangul/libhangul/trunk@241 8f00fcd2-89fc-0310-932e-b01be5b65e01
* 아래한글과 같은 아래아 조합규칙 추가Choe Hwanjin2010-12-251-0/+2
| | | | | | | | | 아래한글에서는 ㅏ+ㅏ를 아래아로 조합하는 규칙이 있다. 옛한글 입력 편의성을 위해서 아래한글과 같이 ㅏ+ㅏ를 아래아로 변환하는 규칙을 추가한다. git-svn-id: http://kldp.net/svn/hangul/libhangul/trunk@240 8f00fcd2-89fc-0310-932e-b01be5b65e01
* 옛한글 조합테이블에 빠진 부분 추가Choe Hwanjin2010-12-251-0/+5
| | | | | | | | | 모음 U+116A, U+116B, U+1170, U+118B, U+D7B6를 조합하는 룰이 빠져있어서 새로 추가한다. 아마도 스크립트로 생성시에 제대로 처리되지 못한 부분이 있었던 것 같다. git-svn-id: http://kldp.net/svn/hangul/libhangul/trunk@239 8f00fcd2-89fc-0310-932e-b01be5b65e01
* 옛이응이 이응으로 처리되는 부분 수정Choe Hwanjin2010-12-252-8/+8
| | | | | | | | | | | | | | http://www.unicode.org/Public/UNIDATA/NamesList.txt 파일의 내용을 이용해서 자모 조합 테이블을 생성한 결과에 문제가 있다. 위 파일에서는 U+11EC - U+11EF 부분의 이름을 옛이응으로 하지 않고 이응으로 되어 있다. 그래서 이 파일로 부터 생성한 조합테이블에서는 이응 + 이응이 U+11EE가 나오는 문제가 있다. 그래서 이 부분은 손으로 직접 수정했다. Unicode 5.2에서 정의된 내용에 따르면 U+11EC - U+11EF 부분은 옛이응으로 처리하는 것이 맞다. git-svn-id: http://kldp.net/svn/hangul/libhangul/trunk@238 8f00fcd2-89fc-0310-932e-b01be5b65e01
* hangul_is_jongseong() 함수 버그 수정Choe Hwanjin2010-12-251-1/+1
| | | | | | | 236에서 잘못 고친 부분 수정 git-svn-id: http://kldp.net/svn/hangul/libhangul/trunk@237 8f00fcd2-89fc-0310-932e-b01be5b65e01