def __init__(self, layout, document, colors_iter, background_iter): self.colors_iter = colors_iter underline_iter = document.get_style_runs('underline') self.decoration_iter = runlist.ZipRunIterator( (background_iter, underline_iter)) self.baseline_iter = runlist.FilteredRunIterator( document.get_style_runs('baseline'), lambda value: value is not None, 0)
def _get_glyphs(self): glyphs = [] runs = runlist.ZipRunIterator( (self._document.get_font_runs(dpi=self._dpi), self._document.get_element_runs())) text = self._document.text for start, end, (font, element) in runs.ranges(0, len(text)): if element: ee = _InlineElementBox(element) ee.char_width = -1 glyphs.append(ee) else: f_glyphs = font.get_glyphs(text[start:end]) for i in range(start, end): f_glyphs[i - start].char_width = char_width(text[i]) glyphs.extend(f_glyphs) return glyphs
def __init__(self, font_names, font_sizes, bolds, italics, dpi): self.zip_iter = runlist.ZipRunIterator( (font_names, font_sizes, bolds, italics)) self.dpi = dpi