
我想在 Plain TeX 甚至 OpTeX 中系統地使用 mlmodern 字體,但我無法將 mlmodern.sty 的程式碼轉換為 tex 或 optex 編譯器可以理解的程式碼。這可能嗎?
答案1
對於純 TeX,您基本上必須重複plain.tex
.
\font\tenrm=rm-mlmr10 % roman text
\font\preloaded=rm-mlmr9
\font\preloaded=rm-mlmr8
\font\sevenrm=rm-mlmr7
\font\preloaded=rm-mlmr6
\font\fiverm=rm-mlmr5
\font\teni=mlmmi10 % math italic
\font\preloaded=mlmmi9
\font\preloaded=mlmmi8
\font\seveni=mlmmi7
\font\preloaded=mlmmi6
\font\fivei=mlmmi5
\font\tensy=mlmsy10 % math symbols
\font\preloaded=mlmsy9
\font\preloaded=mlmsy8
\font\sevensy=mlmsy7
\font\preloaded=mlmsy6
\font\fivesy=mlmsy5
\font\tenex=mlmex10 % math extension
\font\preloaded=rm-mlmss10 % sans serif
%\font\preloaded=rm-mlmssq8
\font\preloaded=rm-mlmsso10 % sans serif italic
%\font\preloaded=rm-mlmssqi8
\font\tenbf=rm-mlmbx10 % boldface extended
\font\preloaded=rm-mlmbx9
\font\preloaded=rm-mlmbx8
\font\sevenbf=rm-mlmbx7
\font\preloaded=rm-mlmbx6
\font\fivebf=rm-mlmbx5
\font\tentt=rm-mlmtt10 % typewriter
\font\preloaded=rm-mlmtt9
\font\preloaded=rm-mlmtt8
\font\preloaded=rm-mlmtto10 % slanted typewriter
\font\tensl=rm-mlmro10 % slanted roman
\font\preloaded=rm-mlmro9
\font\preloaded=rm-mlmro8
\font\tenit=rm-mlmri10 % text italic
\font\preloaded=rm-mlmri9
\font\preloaded=rm-mlmri8
\font\preloaded=rm-mlmri7
\font\preloaded=rm-mlmu10 % unslanted text italic
\font\preloaded=mlmmib10 % bold math italic
\font\preloaded=mlmbsy10 % bold math symbols
\font\preloaded=rm-mlmcsc10 % caps and small caps
%\font\preloaded=rm-mlmssbx10 % sans serif bold extended
%\font\preloaded=rm-mlmdunh10 % Dunhill style
\font\preloaded=rm-mlmr7 scaled \magstep4 % for titles
\font\preloaded=rm-mlmtt10 scaled \magstep2
\font\preloaded=rm-mlmssbx10 scaled \magstep2
\let\preloaded=\undefined % preloaded fonts must be declared anew later.
\skewchar\teni='177 \skewchar\seveni='177 \skewchar\fivei='177
\skewchar\tensy='60 \skewchar\sevensy='60 \skewchar\fivesy='60
\textfont0=\tenrm \scriptfont0=\sevenrm \scriptscriptfont0=\fiverm
\def\rm{\fam\z@\tenrm}
\textfont1=\teni \scriptfont1=\seveni \scriptscriptfont1=\fivei
\def\mit{\fam\@ne} \def\oldstyle{\fam\@ne\teni}
\textfont2=\tensy \scriptfont2=\sevensy \scriptscriptfont2=\fivesy
\def\cal{\fam\tw@}
\textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex
\newfam\itfam \def\it{\fam\itfam\tenit} % \it is family 4
\textfont\itfam=\tenit
\newfam\slfam \def\sl{\fam\slfam\tensl} % \sl is family 5
\textfont\slfam=\tensl
\newfam\bffam \def\bf{\fam\bffam\tenbf} % \bf is family 6
\textfont\bffam=\tenbf \scriptfont\bffam=\sevenbf
\scriptscriptfont\bffam=\fivebf
\newfam\ttfam \def\tt{\fam\ttfam\tentt} % \tt is family 7
\textfont\ttfam=\tentt
\tenrm
Abc {\it def\/} {\sl ghi\/} {\bf jkl}
$a+b+\alpha$
$$
\sum+\int_\Gamma
$$
\bye
我透過查看.fd
文件找到了這些名字。
pdffonts
在 PDF 文件上運行顯示
name type encoding emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
VAJVJL+MLMRoman10-Regular Type 1 Custom yes yes no 4 0
XAMRRZ+MLMRoman10-Italic Type 1 Custom yes yes no 5 0
QLCGIE+MLMRomanSlant10-Regular Type 1 Custom yes yes no 6 0
BUCLYS+MLMRoman10-Bold Type 1 Custom yes yes no 7 0
HJQQGN+MLMMathItalic10-Regular Type 1 Custom yes yes no 8 0
LGTMNF+MLMMathExtension10-Regular Type 1 Custom yes yes no 9 0
CMLUYB+MLMRoman7-Regular Type 1 Custom yes yes no 10 0
答案2
對於純 TeX。從複製指令\font
(第 400--467 行)plain.tex
,刪除所有指令\font\preloaded...
並將名稱替換cm*
為目錄中對應的現有檔案名稱fonts/tfm/public/mlmodern/
。您必須選擇文字字體cs-
等的編碼之一ec-
,qx-
並僅使用這些檔案名稱作為文字字體。數學字體mlm*
對應原始cm*
.將其儲存到您的巨集檔案中。將第 477--492 行加入為\textfont...
from plain.tex
。
對於 OpTeX。關鍵訊息寫在mlmodern
文件中:「計劃在未來版本中支援 OpenType「。我建議你問作者這個計劃是否實現了。如果沒有,那麼非 ASCII 語言不能簡單地與這個舊的mlmodern
字體實現一起使用。請注意,我們有Unicode 機器LuaTeX,我們需要Unicode 字體。做一些非常具體的重新設計當我們今天擁有數百種高品質的 OpenType 字體時,encodnig 巨集技巧並不是一個好主意。
如果您有來自作者的“未來版本”,其中包含文件中提到的 OpenType 字體,那麼您可以將文件複製f-lmfonts.opm
到此處f-mlmodern.opm
,並將文件名稱重命名為計算機中的.otf
真實文件。.otf
然後使用\fontfam[mlmodern]
.
如果您僅使用 ASCII 語言,那麼您可以複製檔案fonts-preload.opm
並將此處的名稱math-preload.opm
修改tfm
為現有名稱(與檔案類似plain.tex
)。但這種方法沒有未來:當我們使用現代 TeX 引擎時,我們需要現代字體。沒有舊字體,modern
僅在其名稱中。