다들 아시다시피 SHX 파일은 AutoCAD에서 사용하는 폰트 파일입니다.
요즘에는 트루타입 폰트도 많이 사용하고 있지만(물론 지금도 사용하고 있지만), 예전엔 간단한 포맷의 폰트를 CAD 시스템에서 많이 사용했습니다.
2004년도에 작성한 글이지만 올립니다.
SHX File Format Layout
요즘에는 트루타입 폰트도 많이 사용하고 있지만(물론 지금도 사용하고 있지만), 예전엔 간단한 포맷의 폰트를 CAD 시스템에서 많이 사용했습니다.
2004년도에 작성한 글이지만 올립니다.
SHX File Format Layout
- header는 아래와 같이 구성된다.
- '\r''\n'으로 끝나는 desc는 아래와 같은 값을 가진다.
- AutoCAD-86 SHAPES 1.0
- AutoCAD-86 SHAPES 1.1
- AutoCAD-86 UNIFONT 1.0
- AutoCAD-86 SHAPES 1.0 혹은 AutoCAD-86 SHAPES 1.1일 경우
- 두 바이트 :
- 두 바이트 :
- 두 바이트 : table의 크기
- char element desc은 4 바이트의 크기를 가진다.
- 상위 두 바이트 : char code number
- 하위 두 바이트 : 해당 char element data size
- total size(bytes) : table의 크기 x 4
- char element data table이 나타난다
- AutoCAD-86 UNIFONT 1.0일 경우
- 두 바이트 : table의 크기
- AutoCAD-86 SHAPES 1.0 , AutoCAD-86 SHAPES 1.1에서는 element desc table이 나타나고 data table이 나타났었는데, AutoCAD-86 UNIFONT 1.0에서는 element desc + data가 함께 나타나는 방식이다.
- Char Element Data
- 제일 먼저 나타나는 커맨드는 폰트에 대한 정보(이름,높이.,,,)를 가지고 있다.
- 첫번째 바이트 : 폰트의 높이
- 두번째 바이트 :
- 세번째 바이트 : 1 - Vertical type
- 0x01 pen down
- 0x02 pen up
- 0x03 다음에 오는 바이트로 기존의 scale을 나눈다.
- 0x04 다음에 오는 바이트로 기존의 scale에 곱한다.
- 0x05 현재의 위치를 스택에 저장한다.
- 0x06 스택에서 저장된 위치를 꺼내어 현재의 위치를 설정한다.
- 0x08 뒤에 오는 두 바이트 만큼 현재의 위치를 이동시킨다.
첫 번째 바이트 : x 방향으로 이동시킴
두 번째 바이트 : y 방향으로 이동시킴 - 0x09 뒤에 오는 두 바이트가 모두 0이 아닐 때 까지 두 바이트만큼씩 현재의 위치를 이동시킨다.
- 0x0a 뒤에 오는 두 바이트로 이루어지는 arc
첫 번째 바이트 : arc의 반경
두 번째 바이트 : 상위 네 비트 : start angle하위 네 비트 : sweep angle여기서 한가지 주의할 점은 바이트 값이 0보다 작을때는 회전 방향이 음의 값이라는 것이다. - 0x0b 뒤에 오는 다섯 바이트로 이루어지는 arc
첫번째 바이트 : begin offset(unsigned char 형)
두번째 바이트 : end offset(unsigned char 형)
세번째 바이트 :
네번째 바이트 :
다섯번째 바이트 : start angle(상위 4 비트) + sweep angle(하위 4비트)
Radius는 [세번째 바이트*256] + [네번째 바이트]
댓글
댓글 쓰기