Metafontパラメータを微調整してComputer Modernの薄型バージョンを作成する

Metafontパラメータを微調整してComputer Modernの薄型バージョンを作成する

私は、すべての Computer Modern グリフのカスタム バージョンを作成したいと思っています。このバージョンでは、パラメータを調整して、ペン ストロークが非常に細くなるようにしています (基本的に塗りつぶしはなく、中央のスケルトン ストロークのみ)。私の目標は、autotraceこれらのストロークを SVG パスに変換し、他のプログラム (ペン プロッタ、Mathjax など) で使用できる単一ストロークのグリフを作成することです。

Metafont と CM の本は少々圧倒的なので、正しい方向を指し示すアドバイスや簡単な例をいただければ幸いです。具体的には、

  1. 現在の TeX ディストリビューションを使用して、CM のすべてのグリフを作成するにはどうすればよいでしょうか?

  2. 細く一定幅のストロークを描くために調整する必要があるすべてのパラメータを見つけるのに最適な場所はどこですか?

編集:明確にするために、私が求めているものを描写します

Metafontのソースから始めます(ここWikipediaからコピー

%file name: beta.mf
%mode_setup;
% Define a beanlike shape for the character B
beginchar("B",11pt#,11pt#,0);
  % Setup coordinates as an equation system
  y1=y2=y3=0;
  y4=y5=y6=h;
  x1=x4=0;
  x2=x5=w;
  x3=x6=2*w;

  % Define pen
  pickup pencircle xscaled 0.2w yscaled 0.04w rotated 45;

  % Draw the character curve
  % z1 is the same as (x1, y1)
  draw z1..z3..z6{z2-z6}..z5..{z4-z2}z4..cycle;
endchar;

end

グリフ(ラスターまたはベクター、どちらでも構いません)を作成し、それを自動トレース(Inkscape 経由など)で処理して中央の線だけを取得します。

自動トレースのスクリーンショット

今、私は Computer Modern の 2200 を超えるグリフに対してこれをプログラムで実行したいと考えていますが、その多くには太さがあまりにも異なるためアルゴリズムを混乱させるストロークがあります。まず、ほぼ均一なストロークを持つ CM グリフのバージョンを作成して、自動トレース アルゴリズムを支援したいと考えています。

答え1

CM フォントの Metafont ソースは、fonts/source/public/cm/TeXlive にあります。実際のフォント名 (たとえばcmr10.mf) を持つ各ファイルには、約 60 個のパラメータ設定が含まれており、最後の行はgenerate romanまたはgenerate textitなどです。これにより、すべての文字がプロシージャによって記述されているファイルが実行され、これらのプロシージャは、記載されているパラメータをグローバル変数として使用します。したがって、 のパラメータを変更すると、cmr10.mfすべての文字が変更されます。

を実行すると、2400 dpi 解像度のすべての文字のビットマップを含むファイルmf '\mode=supre; mode_setup; input cmr10.mf'が生成されます。を適用して、ファイル内の mf 出力の圧縮形式を作成できます。 次の自動トレース プロセスでは、高解像度が求められます。cmr10.2400gfgftopk cmr10.2400gfcmr10.2400pk

全てのCMグリフを1つのコマンドで生成したい場合は、

for i in cm*.mf ; do mf '\mode=supre; mode_setup; input' $i; done

編集pngファイル (1 ファイルにつき 1 文字)を作成したい場合は、ソフトウェアを使用できます。まず、を使用してからdvipngまでのビットマップのバージョンを作成し、実際のディレクトリに置きます。次に、ファイル ( とします) を作成できます。cmr10.2400pkcmr10.2400pkgftopkcm.tex

\font\f=cmr10 scaled 6000
\f
\nopagenumbers

a
\vfil\break 
b
\vfil\break % ... etc

\bye

tex cmを実行して を作成します。cm.dvi各文字は 1 ページにあります。最後に を実行しますdvipng --freetype0 cm。一連のcm*.pngファイルが作成されます。 のデフォルトの解像度はdvipng400 なので、フォントを 6 倍に拡大して (\fontコマンドを参照)、結果の解像度を 2400 にします。--freetype0オプションを使用すると、dvipgビットマップ フォントが使用され、6x400=2400 解像度のフォントが検索され、ユーザーが準備したファイルが使用されますcmr10.2400pk

関連情報