发明名称 一种可通过内存映射方式访问的字体文件及其访问方法
摘要 本发明涉及应用系统中的字体文件技术领域,更具体地说,涉及一种可通过内存映射方式访问的字体文件及其访问方法。本发明的字体文件包含下列部分:字体的度量信息部分、字符值的存储部分、字符字型度量信息部分、字符字型数据存储部分。在生成所述字体文件时,将所述字体文件的各字符值段以平衡二叉树的形式进行排序,然后再存储。本发明不但能够满足应用程序显示文字的需要,而且能够使字体文件缩到最小。由于采用了地址偏移的方法,可以通过内存映射的方式让多个进程共享访问字体数据,能够在多进程并行运行的情况下,明显的减少内存的占用,特别是在嵌入式系统中。
申请公布号 CN101593171B 申请公布日期 2011.11.30
申请号 CN200810111336.X 申请日期 2008.05.28
申请人 北京飞漫软件技术有限公司 发明人 魏永明;何剑;闫晓伟;王旭光;王乾坤
分类号 G06F17/22(2006.01)I;G06F17/30(2006.01)I 主分类号 G06F17/22(2006.01)I
代理机构 代理人
主权项 一种通过内存映射方式访问字体文件的访问方法,其特征在于所述方法包括以下步骤:1),生成一种字体文件,所述字体文件包含:字体的度量信息部分,该部分包括所述字体文件的字符个数信息、字型区间个数信息、字型区间的起始偏移量信息、所有字型区间所占存储长度信息、字型度量信息的起始偏移量信息、所有字型度量信息的存储长度信息、字型数据的起始偏移量信息、所有字型数据的存储长度信息和整个字体文件的长度信息;字符值的存储部分,该部分用于存储所述字体文件的每一字符值段的字型区间的最小字型值、字型区间的最大字型值、字型值小于当前字型区间的字型区间的存储偏移量的值、字型值大于当前字型区间的字型区间的存储偏移量的值和当前字型区间的第一个字型的度量信息的存储偏移量的值;字符字型度量信息部分,用于存储所述字体文件的所有的字型度量信息,其中包括字型数据地址访问偏移量信息;字符字型数据存储部分,用于存储所述字体文件的字体字型数据;2),在生成所述字体文件时,将所述字体文件的各字符值段以平衡二叉树的形式进行排序,然后再存储,当装有所述字体文件的系统内部需要跳转访问某些数据时,采用地址偏移的方法,适于使用内存映射来进行数据的读取;3),将所述字体文件在映射内存的地址加上所述字体文件的字体的度量信息部分的数据长度值,得到第一字符值段的地址;4),将欲访问的字符的值与所述第一字符值段的最小字型值和最大字型值相比较:‑如所述欲访问的字符的值小于所述第一字符值段的所述最小字型值进入51),‑如所述欲访问的字符的值大于所述第一字符值段的所述最大字型值进入步骤52),‑如所述欲访问的字符的值不小于所述第一字符值段的所述最小字型值且不大于所述第一字符值段的所述最大字型值进入6);51),将所述字体文件在映射内存的地址加上所述第一字符值段的字型值小于当前字型区间的字型区间的存储偏移量的值,得到第L1个字符值段的地址;将欲访问的字符的值与所述第L1个字符值段的最小字型值和最大字型值相比较,执行与4)相类似的动作,直至找到某一字符值段,使得所述欲访问的字符的值不小于该字符值段最小字型值且不大于该字符值段的最大字型值;52),将所述字体文件在映射内存的地址加上该第一字符值段的字型值大于当前字型区间的字型区间的存储偏移量的值,得到第M1个字符值段的地址;将欲访问的字符的值与所述第M1个字符值段的最小字型值和最大字型值相比较,执行与4)相类似的动作,直至找到某一字符值段,使得所述欲访问的字符的值不小于该字符值段最小字型值且不大于该字符值段的最大字型值;6),将所述字体文件在映射内存的地址加上上述步骤最终找到的字符值段的当前字型区间的第一个字型的度量信息的存储偏移量的值,再加上所述欲访问的字符的值减上述步骤最终找到的字符值段的字型区间的最小字型值的差与每一字符的度量信息的大小的值的积,得到所述欲访问的字符的字型度量信息;7),将所述字体文件在映射内存的地址加上6)中得到的所述欲访问的字符的字型度量信息中的字型数据地址访问偏移量信息的值,得到所述欲访问的字符的数据的起始地址,即可以访问所述欲访问的字符。
地址 100083 北京市海淀区海淀南路32号中信国安数码港5层508B