性能:字体文件通常如何交互?

Map*_*psy 1 java fonts glyph truetype

我正在努力从 TrueType (.ttf) 字体文件中手动解析字形。根据文件的大小,这些字形可能有数百到数千种不同的字形。这些字形可以分为离散的范围,例如拉丁文、希腊文、西里尔文等。

我只是想知道,传统的文本应用程序(例如 Microsoft Word)如何处理如此多种的字形?初始化时是否加载特定范围的字符,以及需要时加载特殊字符?如果是这样,我是否需要将字体数据永久保留在内存中以解析字体数据,或者在需要时定期打开、流式传输和关闭源文件会更好吗?

小智 5

几乎所有系统都按需加载字形。几乎所有这些都将使用过的字体文件映射到内存中。

在Windows中,据我了解,至少对于GDI来说,字体处理的一些核心实际上是在内核中实现的。这允许在进程之间共享字体内存使用情况(映射文件以及光栅化结果缓存)。Linux 的实现方式非常不同,就像现代字体一样,每个进程都从头开始光栅化所需的字形。然而,X 服务器跨进程共享字形缓存,但这只是一个实现细节。

无论如何,按需加载字形。没有理由不这样做。如果您能更具体地说明您想做什么,可能会提供更多帮助。