![Erstellen einer abgespeckten Version von Computer Modern durch Anpassen der Metafont-Parameter](https://rvso.com/image/449616/Erstellen%20einer%20abgespeckten%20Version%20von%20Computer%20Modern%20durch%20Anpassen%20der%20Metafont-Parameter.png)
Ich hoffe, eine benutzerdefinierte Version aller Computer Modern-Glyphen erstellen zu können, bei der die Parameter so angepasst sind, dass die Stiftstriche sehr dünn sind (im Wesentlichen keine Füllung, nur zentrale Skelettstriche). Mein Ziel ist es, autotrace
diese Striche in SVG-Pfade umzuwandeln, wodurch Glyphen mit einem Strich für die Verwendung in anderen Programmen (Stiftplotter, Mathjax usw.) entstehen.
Die Metafont- und CM-Bücher sind etwas überwältigend, daher wäre ich für Ratschläge/einfache Beispiele dankbar, die mich in die richtige Richtung weisen, insbesondere:
Wie könnte man mit einer aktuellen TeX-Distribution alle CM-Glyphen erstellen?
Wo lassen sich am besten alle Parameter finden, die angepasst werden müssen, um dünne Striche mit konstanter Breite zu erzeugen?
Bearbeiten:zur Verdeutlichung hier eine Darstellung dessen, was ich will
Ausgehend von den Metafont-Quellen (hieraus Wikipedia kopiert)
%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
man kann eine Glyphe erzeugen (Raster oder Vektor, das ist nicht wichtig), die dann mit Autotrace (z. B. über Inkscape) bearbeitet wird, um nur die Mittellinie zu erhalten,
Nun möchte ich dies programmgesteuert für über 2200 Glyphen von Computer Modern tun, und viele davon haben Striche, die den Algorithmus verwirren, weil sie in der Dicke zu stark variieren. Ich möchte dem Autotrace-Algorithmus helfen, indem ich zunächst eine Version von CM-Glyphen erstelle, die nahezu einheitliche Striche haben.
Antwort1
Die Metafont-Quellen für CM-Schriftarten befinden sich fonts/source/public/cm/
in TeXlive. Jede Datei mit einem echten Schriftnamen (z. B. cmr10.mf
) enthält die Einstellung von etwa 60 Parametern und die letzte Zeile lautet generate roman
oder generate textit
usw. Dadurch werden die Dateien ausgeführt, in denen alle Zeichen durch Prozeduren beschrieben werden. Diese Prozeduren verwenden die genannten Parameter als globale Variablen. Wenn Sie also einen Parameter in ändern, cmr10.mf
werden alle Zeichen geändert.
Sie können eine Datei mit Bitmaps aller Zeichen in einer Auflösung von 2400 dpi mf '\mode=supre; mode_setup; input cmr10.mf'
erstellen . Sie können die Erstellung eines komprimierten Formats der MF-Ausgabe in der Datei beantragen . Die hohe Auflösung ist für den nächsten Autotracing-Prozess erforderlich.cmr10.2400gf
gftopk cmr10.2400gf
cmr10.2400pk
Wenn Sie alle CM-Glyphen mit einem einzigen Befehl generieren möchten, versuchen Sie
for i in cm*.mf ; do mf '\mode=supre; mode_setup; input' $i; done
BearbeitenWenn Sie Dateien erstellen möchten png
(ein Zeichen pro Datei), können Sie dvipng
Software verwenden. Erstellen Sie zunächst Ihre Version des Bitmaps von bis cmr10.2400pk
und belassen Sie sie in Ihrem aktuellen Verzeichnis. Dann können Sie eine Datei erstellen (sagen wir ):cmr10.2400pk
gftopk
cm.tex
\font\f=cmr10 scaled 6000
\f
\nopagenumbers
a
\vfil\break
b
\vfil\break % ... etc
\bye
Ausführen tex cm
, um zu erstellen cm.dvi
. Jeder Buchstabe ist eine einzelne Seite. Zum Schluss ausführen dvipng --freetype0 cm
. Es erstellt eine Reihe von cm*.png
Dateien. Da die Standardauflösung dvipng
400 beträgt, skalieren wir die Schriftarten 6-mal (siehe \font
Befehl), um in unserem Ergebnis die Auflösung 2400 zu erhalten. Wenn die --freetype0
Option verwendet wird, dvipg
werden Bitmap-Schriftarten verwendet, es werden Schriftarten in einer Auflösung von 6 x 400 = 2400 gesucht und die cmr10.2400pk
von Ihnen vorbereitete Datei verwendet.