목차
1 : 개발 이유와 구현 방법 떠올리기
2 : 구현 방법 모색하기 (현재)
다음 생각한 방법
한글을 자소 분리 한 다음 해당 글자와 매칭되는 영어를 붙여줘야겠다!!
"한"이면 정규화를 통한 분리가 아닌 분리할 수 있는 규칙을 찾은 후 ㅎ ㅏ ㄴ 각각 글자에 해당하는 영어 타자인
g k s 를 붙여준다는 말이다...
이제 한글에서 영어로 변환하는 것은
1. 자소 분리하기
2. 각각의 글자에 해당하는 영어 매칭하기
3. 영어 반환하기
이 순서로 개발하면 될 것 같았다.
제일 난항은 영어를 어떻게 한국어로 변환할 지에 대한 것이였다.
영어를 한국어로 변환한다고 해도 이 글자가 받침이 있는 글자인지 아닌지, 초성만 있는지 중성만 있는지 종성까지 있는지를 구분해야하는 것이 어려웠다...
영타의 어느 부분에서 한 글자로의 병합을 끝내야하는지 고민해보았다.
1. 자음에서 자음인 경우
1-1. 종성에 포함된 자음인지 확인한다.
1-2. 종성 중에서도 합쳐진? 종성인지 확인한다. (ㄳ ㄺ ㅀ 등)
2. 자음에서 모음인 경우
2-1. 해당 자음은 초성으로 인식한다.
3. 모음에서 자음인 경우
3-1. 앞 글자가 자음이라면 중성으로 나두기
3-2. 앞 글자가 종성까지 있거나 모음인 경우 그냥 한 글자로 나두기
4. 공백이거나 영어가 아닌 경우 건너뛴다.
방법 생각하면서 대충 정리한거라 말이 이상할 수는 있는데 이런 방법으로 합치기로 했다 ㅎㅎㅎ
한 글자를 초성 중성 종성의 구성인 객체로 만들면 어떨지 고민했음. 이건 개발하면서 방향을 정해봐야할 것 같다.
현재는 객체 배열을 만들까도 고민 중이다.
그리고 이 초성중성종성을 합치는 방법에 대한 고민은 다음과 같다.
https://en.wikipedia.org/wiki/Korean_language_and_computers#Hangul_in_Unicode
Korean language and computers - Wikipedia
From Wikipedia, the free encyclopedia Input and use of Korean on computers South Korean standard Dubeolsik ('two-set type') layout North Korean Dubeolsik layout The writing system of the Korean language is a syllabic alphabet of character parts (jamo) orga
en.wikipedia.org
한글 유니코드는 위와 같은 공식이 있단걸 찾게되었다.
[(초성) × 588 + (중성) × 28 + (종성)] + 44032 ("가"에 해당하는 코드 값)
https://en.wikipedia.org/wiki/Hangul_Jamo_(Unicode_block)
Hangul Jamo (Unicode block) - Wikipedia
From Wikipedia, the free encyclopedia Unicode character block Hangul JamoRangeU+1100..U+11FF(256 code points)PlaneBMPScriptsHangulMajor alphabetsHangulAssigned256 code pointsUnused0 reserved code points1.1 (1993)240 (+240)5.2 (2009)256 (+16) Code chartNote
en.wikipedia.org
위의 주소에 들어가면 나오지만 초성 중성 종성은 다음과 같은 순서로 이루어져있다.
현대 표준어에 사용되는 글자만 추렸음. 초성 중성 종성간의 간격은 옛 한글에 사용되었던 코드들이 있기에 생긴 것이다.
초성 (U+1100 ~ U+1112)
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
ㄱ | ㄲ | ㄴ | ㄷ | ㄸ | ㄹ | ㅁ | ㅃ | ㅃ |
9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
ㅅ | ㅆ | ㅇ | ㅈ | ㅊ | ㅋ | ㅌ | ㅍ | ㅎ |
중성 (U+1161 ~ U+1176)
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
ㅏ | ㅐ | ㅑ | ㅒ | ㅓ | ㅔ | ㅕ | ㅖ | ㅗ |
9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
ㅘ | ㅙ | ㅚ | ㅛ | ㅜ | ㅝ | ㅞ | ㅟ | ㅠ |
18 | 19 | 20 | ||||||
ㅡ | ㅢ | ㅣ |
종성 (U+11A8 ~ U+11C2)
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
- | ㄱ | ㄲ | ㄳ | ㄴ | ㄵ | ㄶ | ㄷ | ㄹ |
9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
ㄺ | ㄻ | ㄼ | ㄽ | ㄾ | ㄿ | ㅀ | ㅁ | ㅂ |
18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
ㅄ | ㅅ | ㅆ | ㅇ | ㅈ | ㅊ | ㅋ | ㅌ | ㅍ |
27 | ||||||||
ㅎ |
각 자리에 해당하는 코드를 js의 String.fromCharCode(코드 값) 함수를 이용하면 코드 값에 해당하는 글자가 나오기 때문에 글자만 만들면 한글로의 변환은 쉬울 것 같았다!!
이제 실제로 구현해보고자 한다.
[gksdudConverter] 한영타 변환기 개발기록 4: 확장앱 용 프로젝트 설계를 다시 하다. (0) | 2023.01.30 |
---|---|
[gksdudConverter] 한영타 변환기 개발기록 3 : 한글 -> 영어 타자 변환하기, javascript 한글 자소 분리하기 (0) | 2023.01.30 |
[gksdudConverter] 한영타 변환기 개발기록 1 : 개발 이유와 구현 방법 떠올리기 (0) | 2023.01.29 |