我编写了一个python脚本,它读取METAFONT文件,在其上运行METAPOST(生成大约250个PostScript文件),在FontForge中导入这些PostScript文件并输出OpenType字体。以下是此脚本的简化版本:
import os,sys,fontforge,glob,subprocess,tempfile,shutil
if __name__ == "__main__":
mffile = os.path.abspath(sys.argv[1])
tempdir = tempfile.mkdtemp()
font = fontforge.font()
subprocess.call(
['mpost',
'&mfplain',
'\mode=localfont;',
'mag:=100.375;',
'outputtemplate:="%c.eps";',
'input %s;' % mffile,
'bye'],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
cwd=tempdir)
glyph_files = glob.glob(os.path.join(tempdir, "*.eps"))
for eps in glyph_files:
code = int(os.path.splitext(os.path.basename(eps))[0])
glyph = font.createChar(code)
glyph.importOutlines(eps, ("toobigwarn", "correctdir"))
font.generate("font.otf")
shutil.rmtree(tempdir)
exit(0)
目前,250个PostScript文件存储在一个临时目录中。为了使事情更快,我希望它们存储在内存中。因此,tempdir应该是内存中的目录。我已经尝试过MemoryFS(类似这样的
)from fs.memoryfs import MemoryFS
mem = MemoryFS()
mem.makedir('temdpir')
)但我无法弄清楚如何访问tempdir中的文件
glyph_files = glob.glob(os.path.join(tempdir, "*.eps"))
作品。
您对如何访问这些文件有什么建议吗?谢谢。 (也欢迎使用MemoryFS的替代方案。)
答案 0 :(得分:1)
收到docs,getsyspath
是获取操作系统支持的文件路径的方法。但是,MemoryFS
不受真实文件系统的支持,并且不会覆盖fs.base.FS
的默认实现,并且会引发NoSysPathError
。
内存支持的文件系统实现将取决于您的操作系统。例如,在现代的Linux中,您可以mount a tmpfs
partition,它看起来像虚拟文件系统中的其他文件夹,但文件将存储在内存中。但请注意,如果系统内存不足,tmpfs
的某些页面可能会移动到交换区域。