ó LzñWc@sUddlZddlmZmZd„Zddd„ƒYZdd d„ƒYZdS( iÿÿÿÿN(tPopentPIPEcCs`t|dtƒ}|jƒd}|jƒ}|dkr\tddj|ƒ|fƒ‚n|S(Ntstdoutis'%s' failed (%d)t (RRt communicatetwaittOSErrortjoin(tcmdtptdatatrc((sC/usr/lib/python2.7/dist-packages/dbtexmf/dblatex/xetex/fcmanager.pytexecute s   "tFcFontcBsYeZdZed„Zd„Zd„Zd„Zd„Zd„Z d„Z d„Z RS( sN Font Object with properties filled with the fc-match command output. cCsLtjdƒ|_|d|_|d|_t|_|sH|jƒndS(Ntdblatexii(tloggingt getLoggertlogtnametaliasestFalset _completedtcomplete(tselft fontnamestpartial((sC/usr/lib/python2.7/dist-packages/dbtexmf/dblatex/xetex/fcmanager.pyt__init__s    cCsJ|jsFtdd|jgƒ}|jƒ}|j|ƒt|_ndS(Nsfc-matchs --verbose(RR Rtstript_build_attr_fromtTrue(Rtd((sC/usr/lib/python2.7/dist-packages/dbtexmf/dblatex/xetex/fcmanager.pyR s    cCs’|j|ƒ}|djdƒd|ds2     '  c Csì||_g|_|jdƒ}xÄ|D]¼}|jƒjddƒ\}}|jƒ}d}xƒ|D]{}t|dƒ} xYtddƒD]H} d| >} | | @rŠ|d|| } |jjt| dƒƒqŠqŠW|d7}qeWq(WdS( s Parse something like: '0000: 00000000 ffffffff ffffffff 7fffffff 00000000 00002001 00800000 00800000 0009: 00000000 00000000 00000000 00000030 fff99fee f3c5fdff b080399f 07ffffcf 0020: 30003000 00000000 00000010 00000000 00000000 00001000 00000000 00000000 0025: 00000000 00000000 00000000 00000000 00000000 00000000 00001000 00000000' s R+iiii s%02XN(t charsetstrR,R!RR4trangetappend( RR,tlinestltumajortrowtint32sR twtvR'tmtuchar((sC/usr/lib/python2.7/dist-packages/dbtexmf/dblatex/xetex/fcmanager.pyR1ms        cCs"y|jj|ƒWnnXdS(N(R,tremove(Rtchar((sC/usr/lib/python2.7/dist-packages/dbtexmf/dblatex/xetex/fcmanager.pyt remove_charˆscCst|ƒ|jkS(N(tordR,(RRE((sC/usr/lib/python2.7/dist-packages/dbtexmf/dblatex/xetex/fcmanager.pythas_charŽs( t__name__t __module__t__doc__RRRRR R"R1RFRH(((sC/usr/lib/python2.7/dist-packages/dbtexmf/dblatex/xetex/fcmanager.pyR s   /  t FcManagercBs\eZdZd„Zd„Zedd„Zed„Zed„Zed„Z d„Z RS( sª Collect all the fonts available in the system. The building can be partial, i.e. the font objects can be partially created, and updated later (when used). The class tries to build three ordered list of fonts, one per standard generic font family: - Serif : main / body font - Sans-serif : used to render sans-serif forms - Monospace : used to render verbatim / monospace characters cCs(tjdƒ|_i|_i|_dS(NR(RRRtfontst fonts_family(R((sC/usr/lib/python2.7/dist-packages/dbtexmf/dblatex/xetex/fcmanager.pyRŸs cCs)|jj|ƒ}|r%|jƒn|S(N(RMtgetR(Rtfontnametfont((sC/usr/lib/python2.7/dist-packages/dbtexmf/dblatex/xetex/fcmanager.pytget_font¤s tcCsS|s|jjƒ}n|jj|dƒ}|s7gS|j||d|ƒ}|S(Ntall(RMtvaluesRNROtNonetget_font_handling_from(RRERTt family_typet font_familyRM((sC/usr/lib/python2.7/dist-packages/dbtexmf/dblatex/xetex/fcmanager.pytget_font_handlingªscCsQg}xD|D]<}|jƒ|j|ƒr |rB|j|ƒqI|Sq q W|S(N(RRHR:(RtfontlistRERTRMtf((sC/usr/lib/python2.7/dist-packages/dbtexmf/dblatex/xetex/fcmanager.pyRW¶s   cCs;|jd|ƒ|jdƒ|jdƒ|jdƒdS(NRtserifs sans-serift monospace(tbuild_fonts_alltbuild_fonts_family(RR((sC/usr/lib/python2.7/dist-packages/dbtexmf/dblatex/xetex/fcmanager.pyt build_fontsÂs  cCs¶tdgƒ}|jƒjdƒ}x‹|D]ƒ}|jdƒdjdƒ}|d}|scq+n|jj|ƒr|jjd|ƒq+nt|d|ƒ}||j|s