금속 활자는 한민족이 오래 전부터 사용하던 과학 기술로, 한민족의 문화 전파에 강한 영향을 주었습니다. 특히나 활자는 복잡하고 어려운 글도, 단순한 활자의 조합으로 고속, 대량 인쇄를 할 수 있었다는 점에서 매우 뛰어난 기술이었습니다. 새로운 글을 인쇄하고 보급하고 싶다면 단순하게 활자를 가져다가 조합하고 찍어내기만 하면 되었습니다.
세종대왕의 제자 원리를 본따 만든 천지인 자판은 사용하기 매우 쉽습니다. 하지만 사용하기 쉬운 만큼 제작하기에는 무척이나 어렵습니다. 특히나 자모음의 조합과 문자의 조합을 유니코드 상의 어떤 문자로 치환하거나 생성할지 계산하는 과정은 매우 어렵고 복잡합니다. 보기에는 단순해보일지 몰라도 실제로 제작하려고 하면 상당히 골치 아픕니다. 유한 상태 기계를 이용한 구현체들도 배포되어 있지만, 이를 따라 만들기에는 시간과 노력이 수많이 소요됩니다. 이는 분명 문자를 통한 융성한 문화를 열망하셨던 세종의 뜻은 아닐 것입니다.
이에 저는 천지인의 활자를 제작하여 배포합니다. 만약 새로운 천지인 자판을 만들고 싶으시다면, 조상님들이 활자를 이용해 새로운 글을 인쇄, 배포한 것과 같이, 이 활자를 이용하시고 찍어내기만 하시면 됩니다.
활자는 세상에서 가장 쉽고 단순한 천지인 구현체입니다.
활자는 천지인의 모든 입력 경우의 수를 하드코딩해놓은 5만줄짜리 맵이기 때문입니다.
예를 들어 사용자가 ㄱㅋ
글쇠를 눌렀다면 ㄱㅋ.json
에 들어가 ㄱㅋ[이전_상태]
를 확인하면 그 결과값이 다음 상태입니다.
이제 여러분들은 천지인의 글자 조합 논리를 하나 하나 생각할 필요 없이 그냥 이 파일을 가져다가 사용하시면 됩니다.
감사합니다.
const type = (이전: string, 활자: hwalja, 키: string, 수정중: boolean) => {
const 마지막한글자 = 이전.slice(-1)
const 마지막두글자 = 이전.slice(-2)
if (수정중 && 마지막두글자 in 활자[키]) return 이전.slice(0, -2) + 활자[키][마지막두글자]
if (수정중 && 마지막한글자 in 활자[키]) return 이전.slice(0, -1) + 활자[키][마지막한글자]
return 이전 + 활자[키]['']
}
천지인 구현 끝!
MIT 사용 인허가로 배포합니다.
이메일 혹은 PR을 주신다면 서비스에 추가해드리겠습니다.