Hersheyはテキストベースのベクター字体フォーマット
(wiki.xxiivv.com)- Hershey Fonts は1967年に作られた初期のデジタル字体表現の1つで、
.jhfファイルは各行が1つのグリフを表すテキストファイル - グリフ行は
id[5]、length[3]、left[1]、right[1]、points[?]で構成され、IDと点の個数は10進数でエンコードされる - 点座標 は2文字で符号付きの
x、y値を表し、Rは 0、Qは -1、Sは +1 に対応する - 文字値は
J=-8からZ=+8まで続き、たとえばNWは-4,5座標を意味する - ペンの持ち上げ は空白の後に大文字
Rが来る" R"で示され、次の位置まで線を引かない特殊動作である
形式の概要
- Hershey Fonts は1967年に作られた初期のデジタル字体表現の1つで、Hersheyベクター字体ファイル
.jhfは1行が1つのグリフを表すテキストファイル - 各グリフ行は5つの部分にエンコードされる
id[5]: グリフの 10進数 IDlength[3]: 点の個数を表す 10進数値left[1]: 境界ボックスの左位置right[1]: 境界ボックスの右位置points[?]: 改行で終わる点の一覧
- 1つの点は2文字で構成され、それぞれ符号付きの
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
1件のコメント
Lobste.rsのコメント
興味のある人がいれば、作業中の小さな Hersheyフォント集 を作っています。
オンラインでよく見かける他の書体よりも少し モダンな雰囲気 があります
プロッタや普通の太いペンで描いたときにどう見えるかの写真もあると嬉しいです
特に提供されている
.jhfファイルが よく構造化されている のが良いです。オンライン上の多くのHersheyフォントでは、すべてのグリフのidフィールドが12345になっていたり、一部のグリフに強制改行が入っていたりして、ファイルのパースやテキスト描画を無駄に難しくしています最近 Pimoroni Inky 電子ペーパーディスプレイと Raspberry Pi コントローラを触っていて Hersheyフォントと
.jhfファイル形式に出会いました。付属ライブラリには記憶では “Futural” フォントがあり、全体的にはうまく動作するのですが、一つ問題があって スウェーデン語の文字å,ä,öがありません。もうあなたのほうが私より100倍はHersheyフォントに詳しそうなので聞きたいのですが、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 / Unicode 文字の対応付けさえあれば、
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