1P by GN⁺ | ★ favorite | 댓글 1개
  • 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진수 ID
    • length[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=-1
    • R=0
    • S=+1, T=+2, U=+3, V=+4, W=+5, X=+6, Y=+7, Z=+8
  • 예를 들어 NWN=-4, W=+5이므로 -4,5 좌표에 해당함
  • 관련 자료

댓글과 토론

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