我正在尝试从TrueType(.ttf)字体文件中手动解析字形。根据文件的大小,这些可以从数百到数千种不同的字形变化。这些字形可以分为不连续的范围,如拉丁语,希腊语,西里尔语等。
我只是想知道,Microsoft Word等传统文本应用程序如何处理如此多种多样的字形?是否在初始化时加载了一定范围的字符,并在需要时加载了特殊字符?如果是这样,我是否应该将字体数据永久保存在内存中以解析字体数据,或者在需要时定期打开,流式传输和关闭源文件会更好吗?
答案 0 :(得分:4)
几乎所有系统都按需加载字形。几乎所有这些都将使用的字体文件映射到内存中。
在Windows中,据我所知,至少在GDI中,字体处理的一些核心实际上是在内核中实现的。这允许在进程之间共享字体内存使用(映射文件以及光栅化结果缓存)。 Linux实现的方式与现代字体完全不同,每个进程都从头开始栅格化所需的字形。然而,X服务器跨进程共享字形缓存,但这是一个实现细节。
无论如何,按需加载字形。没有理由不这样做。如果您可以更具体地了解自己想做什么,可能会提供更多帮助。