def __init__(self, conf_file): """Create a font specification configuration from the specified file (file name or file-like object). """ self.fontspecs = [] self.fontnames = {} dom_document = xml.dom.minidom.parse(conf_file) for dom_fontspec in dom_document.getElementsByTagName('fontspec'): default = dom_fontspec.getAttribute('default') if default: print "has default" fallback = dom_fontspec.getAttribute('fallback') if fallback == "fontconfig": self.default_fontspec = FcFallbackFontSpec() else: self.default_fontspec = DefaultFontSpec() fontspec = self.default_fontspec else: fontspec = FontSpec() fontspec.fromnode(dom_fontspec) if fontspec != self.default_fontspec: self.fontspecs.append(fontspec) if fontspec.id: self.fontnames[fontspec.id] = fontspec dom_document.unlink() if not(self.default_fontspec): self.default_fontspec = DefaultFontSpec() self.build_tree()
def __init__(self, conf_file): """Create a font specification configuration from the specified file (file name or file-like object). """ self.log = logging.getLogger("dblatex") self.fontspecs = [] self.fontnames = {} dom_document = xml.dom.minidom.parse(conf_file) for dom_fontspec in dom_document.getElementsByTagName('fontspec'): default = dom_fontspec.getAttribute('default') if default: self.log.debug("has default") fallback = dom_fontspec.getAttribute('fallback') if fallback == "fontconfig": self.default_fontspec = FcFallbackFontSpec() else: self.default_fontspec = DefaultFontSpec() fontspec = self.default_fontspec else: fontspec = FontSpec() fontspec.fromnode(dom_fontspec) if fontspec != self.default_fontspec: self.fontspecs.append(fontspec) if fontspec.id: self.fontnames[fontspec.id] = fontspec dom_document.unlink() if not (self.default_fontspec): self.default_fontspec = DefaultFontSpec() self.build_tree()
def spawn_fontspec_from_fcfont(self, fcfont, char): print "New fontspec '%s' matching U%X from fontconfig" % (fcfont.family, ord(char)) # Create a new font fontspec = FontSpec() fontspec.id = fcfont.family fontspec.transitions["enter"]["main"] = fcfont.family fontspec.add_char(char) # Register the font and its related fontconfig object self.fccache[fcfont.name] = fcfont self.add_subfont(fontspec) return fontspec
def spawn_fontspec_from_fcfonts(self, fcfonts, char): self.log.info("New fontspec '%s' matching U%X from fontconfig"\ % (fcfonts["serif"].family, ord(char))) # Create a new font fontspec = FontSpec() fontspec.id = fcfont.family fontspec.transitions["enter"]["main"] = fcfonts["serif"].family fontspec.transitions["enter"]["sans"] = fcfonts["sans-serif"].family fontspec.transitions["enter"]["mono"] = fcfonts["monospace"].family fontspec.add_char(char) fontspec.add_ignored(self._ignored) # Register the font and its related fontconfig object for fcfont in fcfonts.values(): self.fccache[fcfont.name] = fcfont self.add_subfont(fontspec) return fontspec
def __init__(self): FontSpec.__init__(self, subfont_first=True)