Hershey는 텍스트 기반 벡터 글꼴 형식이다
(wiki.xxiivv.com)- Hershey Fonts는 1967년에 만들어진 초기 디지털 글꼴 표현 중 하나이며,
.jhf파일은 각 줄이 하나의 글리프를 나타내는 텍스트 파일임 - 글리프 줄은
id[5],length[3],left[1],right[1],points[?]로 구성되며, ID와 점 개수는 10진수로 인코딩됨 - 점 좌표는 두 문자로 부호 있는
x,y값을 나타내며,R은 0,Q는 -1,S는 +1에 해당함 - 문자 값은
J=-8부터Z=+8까지 이어지고, 예를 들어NW는-4,5좌표를 뜻함 - 펜 들어 올리기는 공백 뒤 대문자
R인" R"로 표시되며, 다음 위치까지 선을 긋지 않는 특수 동작임
형식 개요
- Hershey Fonts는 1967년에 만들어진 초기 디지털 글꼴 표현 중 하나이며, Hershey 벡터 글꼴 파일
.jhf는 한 줄이 하나의 글리프를 나타내는 텍스트 파일임 - 각 글리프 줄은 다섯 부분으로 인코딩됨
id[5]: 글리프의 10진수 IDlength[3]: 점의 개수를 나타내는 10진수 값left[1]: 경계 상자의 왼쪽 위치right[1]: 경계 상자의 오른쪽 위치points[?]: 줄바꿈으로 끝나는 점 목록
- 하나의 점은 두 문자로 구성되며, 각각 부호 있는
x,y값을 나타냄 " R"처럼 공백 뒤 대문자 R이 오는 위치는 펜을 들어 올리는 동작을 뜻해 다음 위치까지 선을 그리지 않음
값 매핑과 참고 자료
- 문자 값은
J부터Z까지-8에서+8로 이어지며,R이 0의 기준이 됨J=-8,K=-7,L=-6,M=-5,N=-4,O=-3,P=-2,Q=-1R=0S=+1,T=+2,U=+3,V=+4,W=+5,X=+6,Y=+7,Z=+8
- 예를 들어
NW는N=-4,W=+5이므로-4,5좌표에 해당함 - 관련 자료
- Hershey Renderer, Uxntal
- Hershey Vector Font, Paul Bourke
- Hershey Fonts
댓글과 토론
Lobste.rs 의견들
-
관심 있는 분이 있다면, 작업 중인 작은 Hershey 글꼴 모음을 만들고 있음
온라인에서 흔히 보이는 다른 서체들보다 조금 더 현대적인 느낌이 있음- 멋지다. 플로터 작업을 더 많이 하던 때에는 쓸 만한 글꼴이 너무 적어서 아쉬웠는데, 이 글꼴들은 새롭고 보기 좋음
플로터와 일반 굵은 펜으로 그렸을 때 어떻게 보이는지 사진도 있으면 좋겠음 - 유용해 보임
특히 제공하는.jhf파일이 구조화가 잘 되어 있음이 좋다. 온라인의 많은 Hershey 글꼴은 모든 글리프의id필드가12345로 되어 있거나 일부 글리프에 강제 줄바꿈이 들어가 있어서, 파일 파싱과 텍스트 그리기를 괜히 어렵게 만듦 - 정말 보기 좋은 글꼴들임
최근 Pimoroni Inky 전자잉크 디스플레이와 Raspberry Pi 컨트롤러를 만지다가 Hershey 글꼴과.jhf파일 형식을 접했음. 제공 라이브러리에는 기억상 “Futural” 글꼴이 있었고, 전반적으로 잘 동작하지만 한 가지 문제가 있는데 스웨덴 문자å,ä,ö가 없음
이제 Hershey 글꼴에 나보다 100배는 익숙할 것 같아서 묻고 싶은데, ASCII 표의 처음 255자 정도를 담은.jhf글꼴 파일을 본 적이 있는지 궁금함. 내가 글꼴을 못 찾는 건지, 아니면 실제로 없는 건지 모르겠어서 혹시 이미 본 적이 있나 물어봄
- 멋지다. 플로터 작업을 더 많이 하던 때에는 쓸 만한 글꼴이 너무 적어서 아쉬웠는데, 이 글꼴들은 새롭고 보기 좋음
-
이건 Hershey 원본 데이터의 Usenet Font Consortium(1986) 재가공판인데, 원래 Calligraphy for Computers(1967, PDF) / A contribution to computer typesetting techniques : tables of coordinates for Hershey's repertory of occidental type fonts and graphic symbols 데이터 형식에 대해 꽤 1986년식 C 프로그래머다운 자유를 행사한 버전임
원래의 Fortran 고정 필드 형식이 오히려 다루기 쉬워 보이지만, NTIS에서 제공되던 데이터 테이프는 유실된 것으로 추정됨. Usenet 글에는 “누가 정말 그 형식을 쓰고 싶겠냐만 …” 같은 비꼼도 있었음
그리고 2016년쯤 마지막으로 들여다본 Hershey OTF 변환기를 끝내거나 공개하거나 포기해야 한다는 걸 다시 떠올리게 해줘서 고맙다: scruss/python-hershey. 이 미친 글꼴 형식에 한 번씩 덤벼본 모두에게 인사함
새 벡터 글꼴 토끼굴도 하나 있음: GIMMS, University of Edinburgh에서 쓰였던 것임
Frank Grießhammer가 Hershey와 그의 작업에 대해 좋은 글과 그림을 남겼음: Frank Grießhammer -
지금 작성 중인 소프트웨어 렌더러에 이 형식이 꽤 유용할 것 같음
장난감 프로젝트라 OTF/TTF 글꼴을 지원하고 싶지도, 필요하지도 않아서 Hershey 글꼴이 현재 방식인 olive.c에서 영감을 받은 고정폭 비트맵 글꼴보다 괜찮고 비용 낮은 개선책처럼 보임 -
음, 기준선은 없나?
- 지금까지 본 예제들은 글리프를 세로 방향으로 균일한 중심선에 맞추는 것 같음
글리프 ID와 ASCII/유니코드 문자 사이의 매핑만 있다면0같은 기준 문자의 치수에서 기준선을 계산할 수 있을 듯함
- 지금까지 본 예제들은 글리프를 세로 방향으로 균일한 중심선에 맞추는 것 같음
-
오래전에 Hershey 글꼴을 JSON으로 변환했음
꽤 장황하지만 처리하고 읽기는 더 쉬움. 원하는 사람이 있다면 2.6MB 파일을 여기에서 받을 수 있음 -
선언적인 https://en.wikipedia.org/wiki/Metafont 에 대응하는 명령형 형식처럼 보임
-
BGI 글꼴도 비슷한 구조를 가지고 있었음
-
Hershey 글꼴이 유용한 이유 중 하나는 단순한 벡터 형식이라 펜 플로터뿐 아니라 화면 표시용 다른 효과를 그 위에 만들기 쉽다는 점임
예를 들어 AoC 2024 5일차 시각화에서는 벡터에서 점을 샘플링해 거품의 핵 생성 지점으로 썼음: https://hachyderm.io/deck/@bazzargh/113599143062296178
12일차에는 선을 천천히 그어서 성에 낀 창문 위에 글씨를 쓰는 듯한 효과를 냈음: https://hachyderm.io/deck/@bazzargh/113639456289455465