Example #1
0
 def width(self, text):
     seg = gr.Segment(self.font,
                      self.grface,
                      self.script,
                      text,
                      self.rtl,
                      feats=self.feats)
     return seg.advance[0]
Example #2
0
 def glyphs(self, text, includewidth=False):
     seg = gr.Segment(self.font,
                      self.grface,
                      self.script,
                      text,
                      self.rtl,
                      feats=self.feats)
     res = []
     for s in seg.slots:
         res.append((s.gid, s.origin, seg.cinfo(s.original).unicode))
     if includewidth: res.append((None, seg.advance))
     return res
Example #3
0
 def glyphs(self, text, includewidth = False, feats = None, rtl = None, lang = None, **kw) :
     if feats is None:
         feats = self.feats
     else:
         feats = self._featureval(feats, lang if lang is not None else self.lang)
     if rtl is None:
         rtl = self.rtl
     seg = gr.Segment(self.font, self.grface, self.script, str(text), rtl, feats = feats)
     res = []
     for s in seg.slots :
         res.append((s.gid, s.origin, seg.cinfo(s.original).unicode))
     if includewidth : res.append((None, seg.advance))
     return res
Example #4
0
 def measure(self, text, after = False) :
     """Returns a list of x positions for before/after the indexth character and
     a list of breakweights"""
     seg = gr.Segment(self.font, self.grface, self.script, str(text), self.rtl, feats = self.feats)
     num = seg.num_cinfo()
     pos = []
     bw = []
     for i in range(num) :
         c = seg.cinfo(i)
         bw.append(c.breakweight)
         if after :
             s = c.slots[c.after]
         else :
             s = c.slots[c.before]
         pos.append(s.origin[0])
     return (pos, bw)
Example #5
0
    from palaso.font.icule import TTXLEFont
    import icu
    icufont = TTXLEFont(sys.argv[1], ttx=tt)
    iculayout = icu.LayoutEngine(
        icufont,
        icu.ScriptCodes.index(opts.script) if opts.script else 0, 0)

lf = codecs.open(sys.argv[2], "r", "utf_8")
count = 0
for line in lf.readlines():
    count += 1
    text = line.strip()
    b = hbng.Buffer(text)
    b.shape(hbfont, shapers=["ot"])
    hbres = [x.gid for x in b.glyphs]
    s = gr.Segment(grfont, grface, 0, text, 0)
    grres = [x.gid for x in s.slots]
    if opts.compare == 'graphite':
        if hbres != grres:
            hbnres = [tt.getGlyphName(x) for x in hbres]
            grnres = [tt.getGlyphName(x) for x in grres]
            print("Failed at line %d: %s %r, %r" %
                  (count, text.encode('utf_8'), hbnres, grnres))
    elif opts.compare == "icu":
        iculayout.layoutChars(text, 0)
        icures = filter(lambda x: x != 65535, list(iculayout.getGlyphs()))
        if hbres != icures:
            hbnres = [tt.getGlyphName(x) for x in hbres]
            icunres = [tt.getGlyphName(x) for x in icures]
            print("Failed at line %d: %s %r, %r" %
                  (count, text.encode('utf_8'), hbnres, icunres))