将 .fnt 转换为 .ttf?

将 .fnt 转换为 .ttf?

在 FreeBSD 中,/usr/share/syscons/fonts可以找到 -format 的 syscons-fonts .fnt

有没有办法将它们转换为.ttf格式?

答案1

正如@mjturner 所说,你最好找到一个近似值。

但如果您真的认真对待字体转换 - 这是可以完成的!诀窍是将这些旧的光栅格式转换为现代工具使用的更现代的文件格式。PSF工具派上用场了!它处理许多旧的简单位图格式。

然后,您可以将光栅字体转换为矢量字体。这只是一个关于进行多次转换然后将轮廓跟踪为矢量格式的问题。

大多数控制台字体都是非常简单的位图。但是如果您查看 FreeBSD 中的 .fnt 文件,您会发现该文件是 uuencoded 的。这些步骤是我的想法(和笔记),但您可能会明白要点。这里的困难部分是弄清楚源格式是什么。我还有其他注释,将 PSF 字体转换为“BSD”字体使用psf2bsd- 我不确定是否需要对它进行 uuencode(那是几年前的事了)。

首先我们进行 uudecode 来获取原始数据:

uudecode -o iso-8x16.raw /usr/share/syscons/fonts/iso-8x16.fnt

如果我的猜测是正确的,我们现在只有原始光栅字体数据,那么我们可以绕道 PSF 到达 TTF。

使用该捆绑包,您可以将 raw 转换为 psf:

raw2psf iso-8x16.raw iso-8x16.psf

当它是 PSF 格式时,我们可以将其转换为许多其他格式。 X11 BDF 是一个很好的候选者:

psf2bdf iso-8x16.psf iso-8x16.bdf

X11 BDF 很好,因为它可以由我们的朋友处理字体锻造。您可以使用fontforge将文件跟踪为TTF格式

或者简单地使用 PSF Tools 转换为更常见的格式,然后使用众多在线工具之一。

更新:字体格式的描述波尔-亨宁·坎普:

它是一种原始位图字体,来自 iso-8x14:

Hex Binary
18  00011000
3c  00111100
3c  00111100
3c  00111100
18  00011000
18  00011000
00  00000000
18  00011000
00  00000000
00  00000000
00  00000000
00  00000000

66  01100110
66  01100110
66  01100110
24  00100100
00  00000000
00  00000000
00  00000000
00  00000000
00  00000000
00  00000000
00  00000000
00  00000000
00  00000000

丹·尼尔森补充道:

它们仅进行 uuencode 以便于在 CVS 中存储。 Vidcontrol 也可以获取常规的原始 8xN 字体位图文件。我使用一个名为 Font Mania 的旧 DOS 程序,Simtel 有数百种 VGA 字体可供下载。

http://www.simtel.net/pub/msdos/vga/

http://www.simtel.net/pub/msdos/screen/

答案2

我认为找到将文件转换为 TrueType 的方法会很棘手.fnt。正如@Octopus 所提到的,前者是光栅字体,后者是基于矢量的。此外,我相信 FreeBSD 和 OpenBSD 使用的控制台字体文件与 Windows 使用的格式不同,这使得寻找转换器变得更加困难。

您最好尝试找到与您喜欢的控制台字体外观相匹配的 TrueType 字体。例如,经典控制台非常接近经典 VGA 8x16 字体。

相关内容