当前位置: 首页>>代码示例>>Python>>正文


Python FileUnicodeMap.add_cid2unichr方法代码示例

本文整理汇总了Python中cmapdb.FileUnicodeMap.add_cid2unichr方法的典型用法代码示例。如果您正苦于以下问题:Python FileUnicodeMap.add_cid2unichr方法的具体用法?Python FileUnicodeMap.add_cid2unichr怎么用?Python FileUnicodeMap.add_cid2unichr使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在cmapdb.FileUnicodeMap的用法示例。


在下文中一共展示了FileUnicodeMap.add_cid2unichr方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: create_unicode_map

# 需要导入模块: from cmapdb import FileUnicodeMap [as 别名]
# 或者: from cmapdb.FileUnicodeMap import add_cid2unichr [as 别名]
 def create_unicode_map(self):
     if 'cmap' not in self.tables:
         raise TrueTypeFont.CMapNotFound
     (base_offset, length) = self.tables['cmap']
     fp = self.fp
     fp.seek(base_offset)
     (version, nsubtables) = struct.unpack('>HH', fp.read(4))
     subtables = []
     for i in xrange(nsubtables):
         subtables.append(struct.unpack('>HHL', fp.read(8)))
     char2gid = {}
     # Only supports subtable type 0, 2 and 4.
     for (_1, _2, st_offset) in subtables:
         fp.seek(base_offset+st_offset)
         (fmttype, fmtlen, fmtlang) = struct.unpack('>HHH', fp.read(6))
         if fmttype == 0:
             char2gid.update(enumerate(struct.unpack('>256B', fp.read(256))))
         elif fmttype == 2:
             subheaderkeys = struct.unpack('>256H', fp.read(512))
             firstbytes = [0]*8192
             for (i,k) in enumerate(subheaderkeys):
                 firstbytes[k/8] = i
             nhdrs = max(subheaderkeys)/8 + 1
             hdrs = []
             for i in xrange(nhdrs):
                 (firstcode,entcount,delta,offset) = struct.unpack('>HHhH', fp.read(8))
                 hdrs.append((i,firstcode,entcount,delta,fp.tell()-2+offset))
             for (i,firstcode,entcount,delta,pos) in hdrs:
                 if not entcount: continue
                 first = firstcode + (firstbytes[i] << 8)
                 fp.seek(pos)
                 for c in xrange(entcount):
                     gid = struct.unpack('>H', fp.read(2))
                     if gid:
                         gid += delta
                     char2gid[first+c] = gid
         elif fmttype == 4:
             (segcount, _1, _2, _3) = struct.unpack('>HHHH', fp.read(8))
             segcount /= 2
             ecs = struct.unpack('>%dH' % segcount, fp.read(2*segcount))
             fp.read(2)
             scs = struct.unpack('>%dH' % segcount, fp.read(2*segcount))
             idds = struct.unpack('>%dh' % segcount, fp.read(2*segcount))
             pos = fp.tell()
             idrs = struct.unpack('>%dH' % segcount, fp.read(2*segcount))
             for (ec,sc,idd,idr) in zip(ecs, scs, idds, idrs):
                 if idr:
                     fp.seek(pos+idr)
                     for c in xrange(sc, ec+1):
                         char2gid[c] = (struct.unpack('>H', fp.read(2))[0] + idd) & 0xffff
                 else:
                     for c in xrange(sc, ec+1):
                         char2gid[c] = (c + idd) & 0xffff
         else:
             assert 0
     # create unicode map
     unicode_map = FileUnicodeMap()
     for (char,gid) in char2gid.iteritems():
         unicode_map.add_cid2unichr(gid, char)
     return unicode_map
开发者ID:AmyRFinnegan,项目名称:pdfminer,代码行数:62,代码来源:pdffont.py


注:本文中的cmapdb.FileUnicodeMap.add_cid2unichr方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。