2015.05.10. 20:40
JsFontGenerator v1.0
JsFontGenerator 드디어 만들었네요...ㅎ
폰트 추출기 입니다.
저는 AVR에서 TFT-LCD에 글자를 출력하려고 했는데 마음에 드는 폰트추출기가 없어서...
(인터넷에 있는것들 대부분이 dot 1bit 형식이더라 구요... 저는 Alpha형식을 원해서요.)
직접 만들었습니다.
기능...
- BMP 이미지 출력
- Raw 출력 (8bit Alpha)
- Height 고정, Width 가변 (따로 xml파일 뭐 이런거 출력 안합니다!)
- 기타등등... (아래 참고)
- OpenSource (누구나 수정해서 사용하실 수 있습니다.) (Visual Studio 2013으로 제작. C++ MFC)
= CC2.0 라이센스. 원저작자표시, 비영리 사용 가능합니다.
= 저작자 : 이지찬(jic5760@naver.com)
폰트 파일을 입력하고
Font Size (Height) 와 Leading size (위치) 을 입력하고
Preview에 테스트할 글자를 넣고 Preview을 누르면 위와 같이 출력 되고
출력할 unicode리스트를 선택 후 출력 디렉토리와 파일 형태를 선택하고
Convert을 누르면 됩니다!
Leading size는 정해진 값은 아닙니다.
Preview으로 확인하시면서 적절한 값을 찾으시면 됩니다.
(freetype library을 이용했는데 자체에 약간 문제가 있는듯 하여 어쩔 수 없는 선택이었습니다..ㅠㅠ)
raw파일의 크기는 font_size(고정) * total_width(가변) Bytes 입니다.
따로 헤더나 그런 것 없이 0(투명)~255(불투명)의 값을 가집니다.
(Alpha 8bit)
파일 크기 / font_size 을 하면 total_width 을 알 수 있습니다.
제가 시험한 값들입니다.
완벽한 값은 아니고 그냥 제가 보기에 괜찮다 하는 정도?
gulim.ttc
Font Size : 16 32
Leading : 4 8
NanumPen.otf
Font Size : 16 32
Leading : 6 12
NanumBarunGothic.ttf
Font Size : 16 32
Leading : 7 13
NanumBarunGothicBold.ttf
Font Size : 16 32
Leading : 6 13
NanumBarunGothic.ttf
Font Size : 16 32
Leading : 6 13
세부 사항을 말씀드리자면...
#1
freetype library에 height size을 정해주어도 그 크기를 초과하는 경우가 있는데
그럴 경우 (FontRender 함수 참고, 소스 수정으로 바꿀 수 있음)
선택 1. (기본) 1씩 font_size을 줄여나가면서 초과되지 않는 크기로 설정 후 랜더링
선택 0. 초과한 크기만큼 줄인 뒤 그래도 초과되면 윗쪽을 클리핑 (status 0x00000002)
#2
width가 font_size을 초과하면 왼쪽부터 출력(오른쪽 클리핑)
이런 경우는 아직 없었습니다.
(status 0x00000001)
#3
freetype에 bitmap_left라고 왼쪽 여백을 지정해 주는데
폰트파일을 출력할 때 bitmap_left만큼 왼쪽 padding을 주고 저장합니다.
총 크기(total_width)는 bitmap_left + width 가 되죠.
하지만 total_width가 font_size을 초과할 경우를 대비해 초과하면
왼쪽 padding 크기를 font_size을 초과하지 않는 최대 크기로 지정합니다.
(status 0x00000004)
#4
bitmap_top와 leading등을 이용해 윗쪽 padding 크기를 지정합니다.
만약 윗쪽 padding을 계산한 결과가 0보다 작으면 윗쪽 padding을 0으로 지정합니다.
(status 0x00000100)
#5
윗쪽 padding + height 가 font_size을 초과하면
윗쪽 padding을 font_size을 초과하지 않는 최대 크기로 지정합니다.
(status 0x00000200)
status
아무 예외도 발생하지 않고 정상처리 되었으면 0x00000000
해당 폰트가 없다면 0x80000000 가 됩니다.
제가 위에 status라고 적은것은 로그 파일에 기록되는 상태코드 입니다.
결과파일..
이걸 만드는데 큰 도움을 주신 람나라(f1ybee)님과 브레인(hl1aiv)님께 감사의 말씀을 올려드립니다.
(답변글들)
http://cafe.naver.com/carroty/243852
http://cafe.naver.com/carroty/244136
실행파일 : https://www.dropbox.com/s/d96aoeyq1v19sux/JsFontGenerator_Release.zip?dl=0
소스파일 : https://www.dropbox.com/s/ynlv95p97d7f754/JsFontGenerator_Source.zip?dl=0
'내가만드는것_만든것 > 오픈소스' 카테고리의 다른 글
[PHP] JsCrypto 암호화 알고리즘 지원 클래스 (HIGHT, LEA) (0) | 2016.07.04 |
---|---|
PHP LEA암호화 구현 소스 (0) | 2016.06.21 |
HTML 카카오톡 채팅방 구현 소스 (1) | 2015.11.03 |
C LEA암호화 알고리즘 구현 소스 (10) | 2015.07.31 |
PHP HIGHT암호화 소스 (0) | 2015.07.31 |
댓글