반응형

Coding 120

Python: 3327 N바이트 한글을 UTF-8 및 KS 완성형으로 변환

Apple2 시절엔 한글 소프트웨어도 귀했지만 일부 있다 하더라도 3327한글이란 N바이트 조합형 한글을 사용했었다. 그걸 도트 프린터로 보내면 한글 모듈이 달려 있는 프린터들(주로 엡슨 호환기종들)이 한글을 인식해서 자체 한글 폰트로 출력을 해 줬었다. 그런 도트프린터 감성의 추억 때문에 도트 프린터 에뮬레이션 코드도 작성했는데, 문제는 3327 한글을 조합형으로 바꾸는 과정에서 어려움이 있었다. 일단 AppleWin 으로 출력을 파일로 보내서 3327 한글 N바이트 조합형 코드를 확보하는 것 까지는 쉬운데 이걸 TG 삼보 조합형으로 바꿔줘야 비트맵 그래픽 폰트를 사용할 수 있게끔 코드 테이블의 포인터들을 쉽게 결정할 수 있다. 그런데 바로 삼보 조합형으로는 도저히 못하겠고, 일단 KS 완성형으로 바꾸..

Python: UTF-8 한글코드를 TG 조합형으로 변환

파이썬으로 하니 이렇게 쉬울수가 ㅠㅠ (미쳤다! 라는 감탄만 나온다) 핵심은 1. jamo 라이브러리 덕분에 한 글자를 쉽게 초, 중, 종성으로 분리 가능 2. 조합형 초,중,종성 테이블을 그냥 스트링으로 만들어 두어도 find() 함수로 바로 인덱스를 얻을 수 있다는 점 3. 초중종성 인덱스 3개를 5비트 바이너리 스트링으로 만들고, '1' + 초 + 중 + 종 16비트 바이너리를 반으로 잘라서 그냥 정수로 변경해서 정수 리스트에 다 넣어버린 후, bytes() 로 바이트 어레이로 만들면 변환 끝 (아직은 정교하게 변환은 못하는 버전이지만 간단히 도트매트릭스 출력 에뮬레이션 추억놀이용으로 쓰려고 만듬)

키보드 클릭 사운드 내는 파이썬 프로그램

애플2 에뮬레이터를 가지고 놀면서 화면은 CRT VGA 로 그럭저럭 추억의 화면을 얻을 수 있었고, 디스크 드라이브가 디스크를 엑세스 하는 소리는 에뮬레이터 중에서 MAME 최신 버전을 사용하여 얻을 수 있었다. 그런데 이 아저씨의 유튜브 쇼츠를 보면 실기의 경우 기계식 키보드의 경쾌한 클릭킹 소리가 역시 큰 추억의 한 부분으로 느껴졌다. https://www.youtube.com/shorts/THNj1nqEEhE 그래서 키보드 클릭킹 소리를 내 주는 윈도우즈용 무료 앱들을 찾아 헤매다가 그런데로 맘에 드는 프로그램을 하나 찾았다. 한국분이 개발하신 것이다. (좋은 프로그램을 공개해 주셔서 감사합니다 ^^) https://kagamine-rin.com/?p=339 컴퓨터로 타이핑하면 소리가 나는 프로그램..

한글 자모 분리방법 - 3327 한글 데이터 만들기를 위해서

옛날 8비트 애플2 및 16비트 PC 초기 시절엔 N바이트 조합형 한글을 사용하곤 했었다. 도트 프린터들도 거기 맞춰서 한글을 프린트를 해 주는 모듈이 장착된 모델들이 판매되었었고. 요즘 레트로 컴퓨터 취미 생활의 한 부분으로 애플2 시절 3327 한글이 사용된 소프트웨어 중 파손된 데이터의 복구나 도트 프린터 에뮬레이션 등을 해보고 있다. 그러던 중 윈도우즈에서 UTF-8 포맷으로 준비한 한글 데이터를 3327 의 입력기 방식에 맞는 자모(실제로는 매칭되는 알파벳 및 기호문자, 키보드에 하나씩 매칭됨)로 변환하려는데 완성형 한글 한글자마다 자모를 분리하고, Apple2 키보드의 키로 매칭하는 작업이 필요했다. 그때 자모 분리 작업을 어떻게 할지 고민하다 우연히 검색에서 찾은 좋은 자료가 있어서 기록으로..

Postscript 좌표계

기본적으로 좌하단이 (0,0) 이다. 그리고 포스트스크립트의 거리 단위는 포인트라고 가정하면 72포인트가 1인치에 해당한다. 이러한 상황에서 한국인이 익숙한 mm 단위로 뭔가를 그리기 위해서는 좌표의 scaling 값을 곱하면 되는데, ps_scale_factor = 72/25.4 를 정해서 곱해주면 편하다. 25.4 로 나누는 이유는 1인치가 25.4mm 이기 때문. 만일 A4 사이즈의 종이에 뭔가를 그린다는 (한글폰트를 써서 텍스트를 프린트하는 것처럼 흉내내는 경우) 가정하에 A4 사이즈 종이 크기에 대해 전후 좌우 적당한 여백 안에 글자들을 제한하여 그리고 싶다면 원점을 이동하고 위의 스케일 값을 사용해야 한다. 포스트스크립트에서는 원점 이동은 translate, 스케일은 scale 명령을 사용한다..

Coding/Misc 2023.11.18

Python - 언어 번역 (Language Translation in Python)

googletrans 4.0.0-rc1 필요 pip install googletrans==4.0.0-rc1 코드 예제 from googletrans import Translator translator = Translator() print(translator.translate('안녕하세요', src='ko', dest='en').text) print(translator.translate('안녕하세요', src='ko', dest='ja').text) print(translator.translate('こんにちは', src='ja', dest='ko').text) print(translator.translate('こんにちは', src='ja', dest='en').text) print(translator.tr..

728x90