From 2c677c45c736fea6ff445e536ba4c2cf2b22bacd Mon Sep 17 00:00:00 2001 From: ocornut Date: Sat, 30 Aug 2014 20:02:55 +0100 Subject: [PATCH] Added sample fonts data --- extra_fonts/ProggyClean.zip | Bin 0 -> 4825 bytes extra_fonts/ProggySmall.zip | Bin 0 -> 4238 bytes extra_fonts/README.txt | 71 ++++++++++++++++++++++++++++++++ extra_fonts/courier_new_16.fnt | Bin 0 -> 3906 bytes extra_fonts/courier_new_16.png | Bin 0 -> 1393 bytes extra_fonts/courier_new_18.fnt | Bin 0 -> 3906 bytes extra_fonts/courier_new_18.png | Bin 0 -> 2655 bytes extra_fonts/proggy_clean_13.fnt | Bin 0 -> 4647 bytes extra_fonts/proggy_clean_13.png | Bin 0 -> 1557 bytes extra_fonts/proggy_small_12.fnt | Bin 0 -> 4647 bytes extra_fonts/proggy_small_12.png | Bin 0 -> 949 bytes extra_fonts/proggy_small_14.fnt | Bin 0 -> 4647 bytes extra_fonts/proggy_small_14.png | Bin 0 -> 949 bytes 13 files changed, 71 insertions(+) create mode 100644 extra_fonts/ProggyClean.zip create mode 100644 extra_fonts/ProggySmall.zip create mode 100644 extra_fonts/README.txt create mode 100644 extra_fonts/courier_new_16.fnt create mode 100644 extra_fonts/courier_new_16.png create mode 100644 extra_fonts/courier_new_18.fnt create mode 100644 extra_fonts/courier_new_18.png create mode 100644 extra_fonts/proggy_clean_13.fnt create mode 100644 extra_fonts/proggy_clean_13.png create mode 100644 extra_fonts/proggy_small_12.fnt create mode 100644 extra_fonts/proggy_small_12.png create mode 100644 extra_fonts/proggy_small_14.fnt create mode 100644 extra_fonts/proggy_small_14.png diff --git a/extra_fonts/ProggyClean.zip b/extra_fonts/ProggyClean.zip new file mode 100644 index 0000000000000000000000000000000000000000..06108e1dd406a9d62839262191b7c4a5ee7a3c54 GIT binary patch literal 4825 zcmZ{ocTf{tm&WP62>}E`7my}ZK@1=e1PRi6l^RMY0fdNvN=c|ecme6X_udI4bm>M! z0g{(WNOD9? zLh_i6goOFesZoF*6#7&P=H}#k%iYhnFY{>_0LnG`IXZ^-ZH&R9xuw2SYz_K4T(8L& zJ}k%Z>H&>QcN>76{Lu>!f$yRp%IdwBtA}ew5W*J2^b0&S&VAJupt;b`Cv|OaL%k{c z_s^#%G4$H%mm4i%N0dAR8Z9ec zoxUyc;X%tt?{en_iN4vmH?b6a?`ulU2|7bZG%u;dGJRBRG(`WdW#S$eU%z|6StL3P z;PQBPdA;=wNzdLSR7!-+QJ*MfQ{^s?KmMR9Ch`{FeRAfEp;1uXUX0&+5~uCsV7b)l zo9ocwSqQLG@ra4adEd|}zWmqBE zk7OQ%uJI5|Psx`Ve|{?;?pwQD#g-KE*S~P;1ART z2Jfx8pE88;Mv#RJsAHSot~<;!GDiv7(Ium59+Tyh&Y&!DIjemHxl^(*o(R$qtoYcZ zVZu3%d`*bpBn*3*CrddK$+LRf|N07ZLA1=^$(j;@GZUY}amS8iV)Yu!z{X=q5W55c zm>IKxy|=36&w!y)M}8hu7YH}7adi@xLg{Go+c7OU0jmih1ZD5F6>|QVnZb_LZ~kJr z(Sh=wDN)n|bO=S*3rQzxeVk%14by<_n&>G-7%hgnAE~Z&9@(nQ*}aPOm#clrl22jy z(tGtIfwlA63X{$no?w1@ZJFsg>M1>bJ-kUpkadg7Ck>0{|*Yxec4 z(RE~w^n}e#%7y8Jo2_*_(XuNJON1nSG&){!m|Q%<2O#{Zv<&9|D~O5lxMea8}t!2^<r?G@ zWDKmmc##stjQZ#{LH3pS>zBnLHMaVuRZG9y5?XP|efLX;;@)>enWngB&BB~)=-Hf` z!qu2?zo|I;IMKXDlO;`0qi_`ZtO)pO&w|DzgLj5h=(V2qlt~s$t@8VnST)A+A?WUC z0|mU*>#*?VeIs4aL3L&`sOZsVL83;xA@UW`mnbjPZqw{bRFN=^drcCPDtO{KK}i3W$%{AmeG$SEzZLSu~ZfB z-(=5DMPmGmWoD-i6-s7D(YLuDO)6_jX=ye-e~KMKdj)d`?V zjw{OUXexTu3UK0|lyoA;L*|=o_t{Of+ar6O69d3=5@Ruk;eGbX3Gr`D^+EGv_%a7m zu|?;}NUsb%_EZlE+8j>lES8lDyJk&AJpB#Te4ptYmW~;{1h7K(?732GGDY5#Rxq4u z`_l(d?hbF)21v4u`kS(LR*>Zv+DRx-p@1FrD4%ME&Qw5pL^v zaqbjM)v}7_Sz)KnkL`Np^u1efj+S{raA7eTl!mZj9!T}I^O>#$%!4~Oj~jn!E?K|d zpST%3VNqVTF`DB(GdYRP%F0rRsPAd-(wXtymi3{l5VuqEjyKB8c=y;x8s%m3+~(J^ z-0bH9Wmw?%j{)es+!<%s@krK3Ie7P6MOV4+g-ZThV$!Evhb*W#14L#1J()#Avu*XS zN@Hv_F?DR(n8rbQW=dPEt1FG6D`IuFi2MofR101BgS(U6MR%XFPsoejZTI@EyP>N^ z=^;%7+@EOJFh+^e*v`JCk7WBUW_Tsorjrmy`}*r>o%H1NP+!j%LOB zz0!ctB|d0ylh|^x-F((g)wH!eeZr^Lh}g_eW%(Q)0TCX zQHk$Qy}%h$VpQr}lpyHbXz3Q_Z)*>6U zl)O3OxN)~@vc#p9YOUdQmXcrEEn0@Ae>pz5qB8n#LJ-4*$geo#FM2ps=T2wHx= zfqpQzzd>R5!_&t=bKU{s>!78q44$l% z7e4xtgsq*69iUo3lMqdIRR6=?SkmFB8rtVa#9U+UW!68#DEYZV$*~v1j+bx5@;+la z{8n;KHv7`1I6sLjMze?m)o%?sT|>%ThUhzej9@!r)VBcI}$Hm>D^jfAq5uMCr_<=Jmgc)VG*s1k=M zPKqQmW)t*Q7Gr&b0;ubdSPi56merwQE;k}Xd z7^E^~1#XyaE`eS)79ty0L$K-PLJ{C$w4VnX2%NFnhl~?M-P|~_5@y3ugB=athJlD) zM*e{cg82nY$SS`s7jkQ0km!N1N{#^W^fYo>u7&~!?!kG~68zRHPRTFH@rpxHvoWJW z$$>;gyF|HO5}847f@m)%{~#yP{(|-S2)vY&XI)U45jrsHZWqm)IgsGb=sTp*%U>{L z>3=UGq2C3|s%3?^Zm~wBA((;aXSCU6u!_Fedjvt?uo8jog6|3mj}(-*iknA}h5DE zxdF#R@C~CV80{biUeI0*r?N2;AAj*znZ}wnvTIeY#&mKw4B8UZfLOUO{{9iiId?8+ zEKvvHpas3kS5>74Rj#>Ma=m1!kslUkZczd4Zz^Oko?EoS2~ ztCU0?AA6No5APo*cUzhQR1iWMVk9h-fOiz%e8*n9(|uc1^O zZps&^~7>m%;LYYmW`}_S~~zKt2#{Q&4V0 z6Z$S%ObibX>KV^Wfpi@S%cMia$0SE?>Xbq?3`+M=6C&xU=|Q*6P4FUl?e^w1FVs?6&cHy1kx%ssxywuu6icj~QUU8oU z&u?4p;om+TQhgqCllFBYT=b4DP0!NxADs!IH*Y-zDjUH>(SPaEbl5y$^PDK>_R+o9 zA*$Y2($JAL$<166w+EUbPKIBehC*l+CM4MtL}pSKdbxVJBM!?30zrL2@5u0Ymgz@| zT03#|8;w&F=GmZ0n`f)p4u-AAafzlu@>8u{T5K+J+I10?@Ji#?(v!a)A=ze={_+n8 z8RIvrGQlWHdqx2X|9S7i)kDR_2yh8$$d&%?LQy(&B& z28@&Mq}_$M2Dwe@zs?NjS9t2)cBAVq8)Qp(!lbV1Q$P0=vcD@J{WUNXP31%)H3Sf-` zdgjKu#u-UMu55W#!f|JZ?oAzZj57wp{fdsC;b7N7yODRB>&S- z+4~a}-ZX7!`I3>4$WoAy(EsVD`kpRszAkRJf)GLWCXRlKvMkRV-tGIZSEU!%XScuZ z%Nlyo_6m#^-;le(LMmtbe=b(W?|pw&65uu*b0kV>>F?V_8FtMM@DbncMo4 zrty3>b6lU=qfq-%HUs%v#1aa!p~w_6i}16>3-AZEtMVTKvhRoXakZgPvL2c9N<%wx z@j=~OSpEBceun;XPL1D449-{eAwXKDwv8@fX1|$|yV*Hp*bO02O1`S7Kmje#2O9co zUhe((Uj8J0)-49({Tb4n{Or1XnwYy7D{6;iVY%yvye*iX1clOo;uz#oeDR)JBNAKk1HE^p~*MuI1M%V)2TfU5l-7K)805 z0H=4+E3@?bkxCL+Zz0>jtolaRz!ds6$YVh>ja>R0Zboud;O_CPXfNTK=FOW0f$98ri(tujf>$2zAc8 zKk^nzl@=O zivKT4{7=>2Vj-G;6aRx5|C!_es*JyLkpAld0e`Hif7FQ)gp%s-OY%Rn`%k20{d@Nx D@s=Uh literal 0 HcmV?d00001 diff --git a/extra_fonts/ProggySmall.zip b/extra_fonts/ProggySmall.zip new file mode 100644 index 0000000000000000000000000000000000000000..f7e267184590d49cdafbe8be688c27b310def6d7 GIT binary patch literal 4238 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 Yp6F}cycQ)Qx^X@0uXprc?FOR%0&Dsy{r~^~ literal 0 HcmV?d00001 diff --git a/extra_fonts/README.txt b/extra_fonts/README.txt new file mode 100644 index 000000000..f0b80733e --- /dev/null +++ b/extra_fonts/README.txt @@ -0,0 +1,71 @@ + +Extra fonts for ImGui. +THOSE FONTS ARE OPTIONAL. + +ImGui embeds a copy of 'proggy_clean' that you can use without any external files. +Export your own font with bmfont (www.angelcode.com/products/bmfont). + +bmfont reads fonts (.ttf, .fon, etc.) and output a .fnt file and a texture file, e.g: + + proggy_clean.fon --> [bmfont] ---> proggy_clean_13.fnt + proggy_clean_13.png + +Configure bmfont: + + - Export .fnt as Binary + - Tip: uncheck "Render from TrueType outline" and "Font Smoothing" for best result with non-anti-aliased type fonts. + But you can experiment with other settings if you want anti-aliased fonts. + + +(A) Use font data embedded in ImGui + + // Access embedded font data + const void* fnt_data; // pointer to FNT data + unsigned fnt_size; // size of FNT data + const void* png_data; // pointer to PNG data + unsigned int png_size; // size of PNG data + ImGui::GetDefaultFontData(&fnt_data, &fnt_size, &png_data, &png_size); + + 1. Load the .FNT data from 'fnt_data' (NB: this is done for you by default if you don't do anything) + + ImGuiIO& io = ImGui::GetIO(); + io.Font = new ImBitmapFont(); + io.Font->LoadFromMemory(fnt_data, fnt_size); + + 2. Load the .PNG data from 'png_data' into a texture + + + +(B) Use fonts from external files + + ImGuiIO& io = ImGui::GetIO(); + + 1. Load the .FNT data, e.g. + + // proggy_clean_13 [default] + io.Font->LoadFromFile("proggy_clean_13.fnt"); + io.FontTexUvForWhite = ImVec2(0.0f/256.0f,0.0f/128); + io.FontYOffset = +1; + + // proggy_small_12 + io.Font = new ImBitmapFont(); + io.Font->LoadFromFile("proggy_small_12.fnt"); + io.FontTexUvForWhite = ImVec2(84.0f/256.0f,20.0f/64); + io.FontYOffset = +2; + + // proggy_small_14 + io.Font = new ImBitmapFont(); + io.Font->LoadFromFile("proggy_small_14.fnt"); + io.FontTexUvForWhite = ImVec2(84.0f/256.0f,20.0f/64); + io.FontYOffset = +3; + + // courier_new_16 + io.Font->LoadFromFile("courier_new_16.fnt"); + io.FontTexUvForWhite = ImVec2(1.0f/256.0f,4.0f/128); + + // courier_new_18 + io.Font->LoadFromFile("courier_new_18.fnt"); + io.FontTexUvForWhite = ImVec2(4.0f/256.0f,5.0f/256); + + 2. Load the matching .PNG data into a texture + diff --git a/extra_fonts/courier_new_16.fnt b/extra_fonts/courier_new_16.fnt new file mode 100644 index 0000000000000000000000000000000000000000..bd5c7fba35632c2c4dc049ecd0d6592a7ce8f293 GIT binary patch literal 3906 zcmZA4eN5F=9LMo<0g)O5a&u$V8mSdg*(HjoED4S10iwbptsoJFG9XH!2bq6ZYt@>o z%~fkn?Lm6*AxpHv(lj%ve5%B(pe(Uev{ceG>3x2j-#Yi>_Vf4qzV7#&^F8OD-?>^) zTo@lY)fkgz^35a@;mJfIW=#FG#@gz}jFRdm6PFr%oXiI^ZGz2-AIe`<14$Ki)lC)I zxfRio4RupY!rl~PGWc}A8EfL{w!hz)Bx6#~#8S*Snx~lro~;ezK7_nMSe&!r+$WkG zlZe@&Y~Bd&3&~6H^3K8%UE474Y;3;tcTUj9z_{_jvq{b5ew4g8uay{TuEAb?=M!%w&(1e&djVD}^B9TsxiP|8F2p9gF~WI7vFD|2HdZOMT!f96wmDdt z*u~gd>F*M(Lo637kufgC4w+#w-$x#{McQ75Z5O*7J4kz8f=zWA@;P`wOEmi zTZEO0U56#hJg&!{lm2eNYNYLr*o%@^j5SMM31mPfA`XHdp$)8GAwU zZVB>Y*Ys9wfwV2dmPp%i*b1@RFuOK>eYX>@m%MUplh_?tr`ULGj;!eftjF!Ya8KTe zt;6j367H9~u$?Y1w7aocuD{SKu&G>r&6ULQoOS-bzXwZaUHo%nBDTua%wurYRdHV= z>o*B&jbo#66+Yv&V> zkXl~FjGVErA%n$U$MR%uZ(zw%^8zeI+O}fHsM-JReiO6jw!hAA1$j9!d2eGwrN4Ku z*{&8IgLh^j_tPbB5tbW#{{LCGnArYX!XI}DaXahc*Y|Fa6ML>L#a2t+d)QL3_c0^y z{<6RZ`m>Ko{F|nYdm8KF@4w~P$!<*txx5wJcQA(CFX7(!0P7O_5L+&_e1r{`b!o?{ zxcoI(No>zb-##X`XTEQr5YJ`||95p2wp;ebYOGuAQ*5T#8mwGwEtVnn8I~@#4m*v@ zukUl>ESc|mEL-dgEKh6$Hd?F$D-`<@%W`WFo|9i;QL(SFT(OPVD6vggv5c`98^Yz! zZ42>FT>gI9N^HmR?HgjdHokpJY`;(6?3rfY5#P2Ew^E<~E_7n{UH9|06VDO*p7;r| z9mFkSKM-fizW)(R60>tHlXdCBCWv)oM%w<29FhI<3wA(kC)O(VE7lH3i5iseat|6uuI$FL%?<5;QK XzgW5039Ql?k3lW{-0k=7zYG5XSjZd2 literal 0 HcmV?d00001 diff --git a/extra_fonts/courier_new_16.png b/extra_fonts/courier_new_16.png new file mode 100644 index 0000000000000000000000000000000000000000..3e9f99e8e647fd97d7625c73f5d9b0b050bce951 GIT binary patch literal 1393 zcmV-%1&;cOP)OKp0x zuFce|O(P_35qPExx zwTK{%=#4FcqrMui#$7k;3?F`T2F{{3JcDW`hYfO(HYNgV zQD4Tg<0ed?gwJWi@n_89f9E`)Y|UnpF(CBS$;qv{fyxmu(g^fc)d9xv82gqJ zl`=P(Ou|RIPixvw8ZhR17k$_F{bW*S6qt-L2nazd_OqoO#)T>90RwP>?a_7pitgJ& z&!(;YdI1GtG0`Viv=sk zL~1vqBA26}+b|4~(;Zx}Bw+Y~08i##P;?C)q4aR4@Pv0v)Kb9Ap60;Yp>U1{U0y$KwEW?BgnX%q->) z!ti?;)6>kA$`8k`jb-NUKypD)e+dv1fIz^shc%Hd@U9qS5F4rqOP{bTapeN>`}#-Z z%@LV*Ntb74+TMBZei9}eeZq0XUa@3={UkTn$z1&Oa-4mXbn=_HjT}3a%ZZBAx}^zm zZbjDIU`M%SpLK0Gtbry3^b{MB6KXteMiiL>#dalNlr@afHQ7P*f&QgK#^aqM4NHMD z%qhqk4cV;Ww-MHtFVBu$-8gvtz|Ffejk&pZlN3;b3NRB@7#@-FP{qKLhN&DYQrRw! z+QI-gsaDxVR2;UEl*&N;;BN~LKUhtHIh7hynEnNq#*VcEq7U1`42Z@BU6rr~5@I%p zTx?1yPz22THo*1n$yD?3D>!uT=GoG*cI)2F6BIl<|NpBn$2+;kjm-6PiR~JWL>ii@ z9f~xFvBngaH|#gPuz%^pb#){OYZK#ED0C7MDk+51u1rF4I*>83%+%1~3 z8~Nr0FCgS0^!52xbV?t)&@obIa#1aV3byfimxBL@o)N5U zq*fr;3_h(D$h8903e;Lb z4k(+3B}v>!>^SX42YtB$D|UVM<4woLIP-lOg{8Xsyp6`vrHw1GOtCRon$&j{mMw7^ zSe~?THTIktJ75knvGb+AvDjjn2o|o#c&v!|3)lQwtVHZOtWqosds^Df z#`0wx*JJiCp1JRTnuHu)rpX*kz^bK<8?Z%UH)1bJ*<5V7*iG13l#L7aP#(5a>YIqQ zO4*ySI*GdlYY>}+HHl5e;xXH<{j+;~3eR<<&~7E)DrNJreXcKluN7b&5_cQcDRw(H zPS)cN?0}5zPApNr^SiJjQn*G_$&Z$COv8-W-N<;cLaapkau0UU?Y~&w?Y!K}GsVUE zZ}2{Bi;MGfFdaK8ox~7^f^519zv$dyv)T;kiu`Zq%S|P?88_)DcozNRW*fH4~PhiHBbKfNzzbBtWcDp!l)z~vq-*Rl1i}QEw3T(f$QHxE-!aH;& zwm|G z95K81P8Vw?znc{9gU`tqFy8QN+KjD}dESC;6#D|(Dz+8dDfT6{M{FC`F7_36NX(uO zonqTDgN1$Gft)9M{A;XM_RvnOMC==^P;3{LC-yCtCH5VbBkS9WWk{Tz_hhl}F?)-K zR4Qmnm8EX}5$J)ex!8*kDW1V8Z zV)pC^_w#S$<76!lU_+VH@LoNL&5&_)V6(*zVP#^6vH4<0u&2a+#}>@TcQ>^Qbw>~Czd*a>XASQnNoefbAV6Z;p-5bMUW#CotivH!4q R*?%XoLW%3e>|BRu&i{iEEwlgt literal 0 HcmV?d00001 diff --git a/extra_fonts/courier_new_18.png b/extra_fonts/courier_new_18.png new file mode 100644 index 0000000000000000000000000000000000000000..d23c96cd8d48dc52f4e4ad25e49c76df7a75d79f GIT binary patch literal 2655 zcmc&#dpHw*7yr)onrllpUBvozk>nOXiEIev6+@EisD6ZUiEgwTy8K=uCHGrOM$O1= z&25CpWaOvCgvuH*lgpN^ZLj`+|9{UP=bYy}=Q+=LKIb`~&wt!pkE^R}R{;R1JDsri z006RLZcS6C2{TbHx}5k6aMBpDq^%g))wixKLE( zB@M8z{xCzKPx%&$oU5bl71|&^MJb3_=1JfPch6HGkps2rauqrrM7gc>;LNR{oWO&i|u{w&mHLPxJ!lw^h$t<9Oei1EJJMph)5llonU3%`$S1Y#RqFcq;|+0*=!H7j)^ z@FJ=VAQENR<7nh5dM0F&B&4irw@oj78=LFp`#solV7dK+05T;pVhv&6{nWMzWj>w# zuCfpJMyL0v5j(Bori8HN*7RMid;7(2SHc!%Ri)pXPq6A9wyr%~G?W~ggu)J=>2GSU zGKf8uecSRoY6I*QRz}-7VKg$AO4Ygqm*=g>Q1f|iXWXwXt&CYQ9`I$&$#YdVXIc61 zuA0SjSw0l?{fsA;-k8WBDw*LXu8IlKpFLvYZO(i0YTXMV)!QJx<&i1Rzq_Umvx;n} zBO7H@Qg|d#efa8@^N`8-irQA#Zay8G{3vAjior4~I=sBDr_5z2^TGytL`Bh95$dYf z<(*lo_<^hvB$qWJ3~JH9zkL)Sfj{HtLy#VoCH+!&D9{@E)5jGk1@{5Fe2l*7-Zj!_ z5`7$NC){H33yy!_Wc_L#PYC{ar_T48sn|EmWdSd<>T+<_@vmJd!MqK`xTpOc*!g@FbdZpZ0hTL6m-@`s^{Qw?>v7U=%Q5m!pv@7 z=9Kb%Y6(ZP>CE~RXGM=_7lWa{W>zn0uqu7p-n)F3JZl|-+Az$#Ko0%r;;rCjX=)bX z&Lf=(NAf$&_u`f0QOqDwvA$U#7*}qUw7)@^j>HVmTf2F zB*_>E4ly|}rP*qHY+Yx{Li5ndeL&iqDb~eEY*8pFbPZ~7;?(I6BLYU9)l$Y^WQTuQ z3DPh>@0`OCPIXh-C;n+cM~uq)Fb>IIf|w4xflZV-E%>wA}gTY*P& zYVGR~Aiz4VeW+(CkB|Q(6-NKMD!;_hrlw6VVJG5Mhje4Ar(iNiYj?CiLsozZ}7i9rJmZCZ00$mPeA; z$Vi81n8BTe$Nk3kx21dRN7E_r#k4pjgil<3Gxv!eZO9S zsmq&+1o?f{)Yq|JTC=7Sn=3yC$`8;MMO<`X9&U$4*|lfqi<_r3U69NK3!_X|=yVt< z>{LlT-mJa_>g?W& zn}JxfkdRE&->|FGwU}tai*MYsmqsvuK-1)vsDZf2Qc{7A2trrc4$a%vvRJeay#Otp(HS%Ht=hV5T3>4wdX}1 zbmL?`7N?HE>u(X(J!jDSFto%*-YgP>}C1a zIb?J=c!eDW(F;zTDrLaQKnr0cg0NZ6yil;d6GoESO0s(Ul+3$0%t8psm|Jv?FUx5* w2k9Eyf8W)HN`IOFfD$16Z}+?B|7Hbz^g?Lzs+TEB_In2>2UmNlT~OkG0nR)6X#fBK literal 0 HcmV?d00001 diff --git a/extra_fonts/proggy_clean_13.fnt b/extra_fonts/proggy_clean_13.fnt new file mode 100644 index 0000000000000000000000000000000000000000..126ff7f01d681e29958d2844fbc73e2c70e0919b GIT binary patch literal 4647 zcmZA43s6*59LMp)Log#K3Zo*X!mPF;$U-Y$VG&lM6q1oqtNbK{=ysR8DfQoTS9k z;zASJZ~?#ZNi>lroObOe+?Xg^FU9mRT`+rZEtu=e5*OnAEzX2FaiLg@3A8R)f>;=q zEJhyFLEaGBv-xb^u3R&vFXv!Gq%MOtm15^&<4l?fb;cHfO%$^uf5m5=V=_^ZSiYE@ z-V~XG^RX;n|G4$`*-mS&STxo`dv%XMqhi}dixT~ zwO(>uf^GJhf1d5mnj-C8hD{TT!|W%9ahy8and5TG%f;d;-yn7c{Va?{BwFWwnXB3V#hIepI(E7N#1L*m6G>5tVYa(&6K>?W3$BU z_zzMy*je)%vAGhLh=uz4;$M%Ou!RzrgjI2rTtchk`Lh4+#b#snx#r*Z z_hGeC_kL`=h+&de}ug0%MlW+d-}NTk?9-l)L$LMB!qeHo5< zr0xi;SmGYWCW$?QrAggKu?mUH!ZIZ;8=EWh{1{d)<9!_4BXJ|KsS=liZIryZ*cs~D z=Yjv6=V8;O?kMavvC-IDVq>t`V)@uSu>x$7SRuAl>cZ3ASFW6x$^B6t-2Y4BH_#0oyG$5v%Zx!@nL+V|yiT61Gol zGPX{}F$Fs;apl-Cv1hP0v1c*+L~x(k&v`BI-S|8fCUF&5cj?Pi%$^7LJ^i9LF3@IR z_O!ZjZz3D{x;B%tT_@M(QJy9?pYk5D1(dtV^L`-~A>&wtMT;%QX35yz!$yiN!MaM0 z_pw-MuM%6vn!A5vF2zPjdmmskWRHJ{#Y=n3u+!9a&%#GoDqnZ5swnrD9MxD)vE^8a z?N@p>@a4}UnnZ!21^zD7E2e~f@O%+V~b^twqnc0wqccG z-(el}&t2aJY@5vU_t+L0$98PH*bZ#B*iOtN>-z(CK;m{`tzti76*AsN?1aSa#%vaM z5B-FMi~Wp6igiA#0_*-l+%B1eCahBWvKMQTxMr+I;(o_041>@1cg_CK=fRpbBw literal 0 HcmV?d00001 diff --git a/extra_fonts/proggy_clean_13.png b/extra_fonts/proggy_clean_13.png new file mode 100644 index 0000000000000000000000000000000000000000..19922df338881788d0fcbbb9e7054c2c7ac8c81e GIT binary patch literal 1557 zcmV+w2I~2VP)HRVAz)n~>&KhWI z4id_yC|VqeirK|3U_BZ`06a2ip1k%f);hiqCSX050M>#B$G_mw@tgasX9B+uCIA+| zDG~;Q!2keQEEYHXh@jsDSAE`qyZm?Y!{tc$xY%<7c(25*5uqGM|1eW&$ZmlfH)k=G~m>ojgtB?eipEB z#auE=SiMVhWlp_>;JR>%0Ko9u9bi9dP`V3(0E(q%(d+-Vw^0TQc-9l&ASLoUzn06hF~qDjDlrM}w%CRq*LsL8`a z(GyU+d!!lNQp&;Px!weZa!z=$K&=|;E!PdD#|&u1Im*qC!IP$y6d}v zHV)1O>?v-8${rEHe*XPir^u(P!)vT1yrps+EMcEsz>YUpu>x{}TAp|gyjD_{36RSL z5podVJc0oGS*vM;Ajdf+d*k&0M|sgV28~ls|0|lLLk-T-e%huoQ3=;FVy*R@j;fmN z)6v+WK#2up4e%k}$)$-TKN|w9dZ~9>=1Xy|S1n!-VdE!=l7J|mRk=2LG!D>(b#KMjw(BhI_5g@nL&B3M5uIum=Toxz`Va4*gb4 z{lLWkDF&1ldWzu>GoZ}3Q0=&jcQt8|$2B*U>j^m^X5$O0*T4$NLh0`(CkgQ44gy?L z+C~Dr=u4uMtC6VU#}d#~SrMF$tPS2Gz+F{$Pv}{I&(glyEU)Pn2VhHpy;X_x!QM^#@a4~g`vCu)cj1fW!@d=(0SnvhZwqatx!rz8M1Dc9!DDcb-1Q<%#@I3*#?Fr!A835EOYqLcS>mmW4r+{wtkY#j9-KNpDR9V1RxzvNP^YGQE{R#YxUs7}VjH50KLA){|3Z|4Rq+%a504ZOQs=fz6%ZwiRu+|sJ7oegL zrg=;yW!|Bm0(I$MSYzP3&qiWIt*it%QK05Dggwv`0F}v}fJ|L2lP3MF6Owc9*kIxp zMi%6%VEh*6AqyR}1W-g-8~qam_^?(wYLlwLSyVHsjDNEOj(vyD#{h#Wd32T= zdAcA?0*Fmib9C=MXC6hG{My9PoIB+j0kkp?EO0$Q3%m(^Ck-MAc#Ebe`O3j*ff&Yl(j0Ncysxoc5jVR6t_S*PnO!hiAWi&tC;N=N>O z3U$GW!Gz-`PW4@RYxkzUatHAZ6i*~ea^AxNsF!3JL@%oikpfN-^z7rP1Y~*=v2u(C$6Ma%|M=8IV;4|;{z-d` z*ueroN@FGW1V|Z#ZMOqh-YYpLt?S+)z+l1Ka(bzQ3k0Y>Pk?wclxqYe$cz`42!LV> zHxO{-=g%QP>{Eay1=jgLHJz@Z%Kf&g63D?a{_KCE>4#{e5+tHx+NftI(txa z0k;wW#FfyNEdlPDOc`#8Ka=GG0k=b{1_SenA%MlhcfeB#kOGE)=fR*KOu(do)!UN^ zm=ySv7y<@^!C){L3T00000NkvXX Hu0mjfG#kbD literal 0 HcmV?d00001 diff --git a/extra_fonts/proggy_small_12.fnt b/extra_fonts/proggy_small_12.fnt new file mode 100644 index 0000000000000000000000000000000000000000..f645aabc9eaa67305fd0686cfdf9d9a5687ef17d GIT binary patch literal 4647 zcmZA33s6->9LMqHsS$-46qYfTR77e>rdAY4MwE{zu?#KHNTd)6EU}axV^h=6L_^~= zF*Q(U3-JfAQc4h$JH!k7@-F4cr`9yI)|HDAu6`E%p^xQ-X|=Q>p^fa`3rK(33# z$YV;yn2gyZb_&<^Vs@mhVyAN5BNoiHEs{Hr(>yV*osLCIoGov>*eGnhi7)|9t!!Ce zFtNrDv$eGK8_lsy>`d&Wi88)UTqtIU^LP3SL#ic*UDg`0v#|v7>*k~abB}KYn0?Y7xNbzi`ntGwK|XMRQh)<0?QT~hZTvPk9Cs6j?eBVJH87z z*2(zBW6hrVdTSbqwTfMc<;mW?2y4Lt$zeY>$Hg2wBySY9S@K?jRf*aApk4A_igk)j z!1mJCuCKSw6R|Fdn}i+ljKv#w8P+XvF<6JpV=}f)#utlqN!;aFkJuFKnAjEAaj~h` zfY>z5Fg~}Y(~&^2E3sg)tFQx}`Fhv~kqb zECHJ;HUom?@DHb7?g^d?mhDC|l_x64n^SxLeX5UfXd+h|_R$=qS3b8b? z)mXaNLs+KR!`KeSVt+Gu_r@A*h?R5Sjcc(j5@&x$ zY{Uksvzx>Imb7<`JKxul7p1={Y^3CU1Iw0mdlQS3xXoC!w?f8CTd`!Z8m!CH)}QkcJVxH-m@D(B#h#M3?_v8e_xH>D*iq@P4r`aV z53o?_??bFW@@~W0h_rjx`z)!)ilkNzSfuo~9V?XnKEftQ+{ajq*bZ!pSR*!F>=SIQ z;!-AbK@Y_8V*W^hE&0U+i>t5Kq zYYk0?kPKf`*=*W%(iFj1R@jTVHlCK&SJi=ZRNb>SBw5T@Qyl9_)asBqeKF~~!7M4o zC{p?d`eFmYXu+^TZ3lxy*Lpseq+WvC@?v8f``&TK^W2B$_uP*=`1fNi2TcD2_&-En z4j9V;^Irx=_&Z}w#xjqEl2FT!Xdrm+~17I`rZvtbt(Rw;@koLa=J{~>=4d@W*GZpqa zI&>yGgvUnU><^jmD>E0;Km8Jw>M#L=Nw?Zd8o)FN&&M!pyQG9v1k~urfdPP_CbW(Wf|kkxNa-Q` z5-3xY&A4_UV_n*6^_+dI_|S(TnlP`RP2gk zRg|ZSnr8K~!dlwt*kNil2Of++mF0d}J};}ORWB>2XWyvspNAV*1@DhLWSN|C4UiIE znvHOcIp7-y0!mhJ=7HXx2VdoZtby${Rfj6sNP}|%v=n!T!U6^>cqryokSf+X_>bfT X42d-$NI#9e00000NkvXXu0mjfsrtHe literal 0 HcmV?d00001 diff --git a/extra_fonts/proggy_small_14.fnt b/extra_fonts/proggy_small_14.fnt new file mode 100644 index 0000000000000000000000000000000000000000..546f8fb97575069b2d2481a39cdf84387243ac13 GIT binary patch literal 4647 zcmZA34Nz4@7{>8MJ~SdRgTgY#l8Q(TiPVY`$%yhJN-RSQG!iL90!u6#G4G`!{J2gL^XEECEP(4m zG4hxaF(zX+i=D=GotPbIi`eO0cZ&saZHwg2;|x!XYa_8JiL>RME;b6=V8V^RQ!886 z7fg)t#cVBY{YG;v6*~(%Wg^WmCoTjt#Q8b>g(6jw!!B#J*g06aCkLlPdBZpkvX(yd zXV=hAIwkH3tXnJ=J1%x5c0z0l z)-N^{GmOuz=`?$ls>}u?wXTIJwzXogd)XKZQaag#ty%y`i?EU7AyAF$zIQv|R z7K_KGh|R#_#1gOsvFovHv6_#kIED2jGb`!Qu*7s(tmpHcuv#XJ?_2F z7i0d?b_o_Jb`KUTmVt$c-HVM8TZ)B?Wn$ySmSK@%_Pu>T#(W=^i`jRS_a3|-n<x!6>(2e3G?JZy$oK9(r95(|ver zY&Di9_Ar(q_6W96Z+xM{jnEU(Xee9U@SBtet z+y_{Q^!Fi_FL}3Ptwh?r>wT8gVTDqwdMrZv+kq8Ge;;8JB<^D@T5Km4E7pKb6Z-^P zD>-&ykBfbZJt_7XRxJHBVzb3|W65HlV<}>LumxgYV2i|>uynC6u?(?hY?;_zEL&_J zRwQ$4!B$G#eyl+3D{PHeE4EJTYizw(8@AiCH#i;IyWenZ5IcZ9C*%7T+aT7CJuf*r zuu_RTh@IrmeQq4$x=i8@V-;dYuu8E`tV--CRxNf6s}=hWs~7toYY^+g>ZC5+Sfj-K zfHjHzh_#6QgtdwFU}L3zKVy3^_Ze{<+laZ(uwSr9Y5OZyBXPZ0hvfYY>lFJP>k>PG z^@#m}^@{ajePVxNrSe&PBAFC7_z-q<*!Rp2AK5G#B7b}ulox&O=ZV)Sx G=j4A6c5hw) literal 0 HcmV?d00001 diff --git a/extra_fonts/proggy_small_14.png b/extra_fonts/proggy_small_14.png new file mode 100644 index 0000000000000000000000000000000000000000..7954a6ec6c5106803d1528293685115d25fd4331 GIT binary patch literal 949 zcmV;m14{gfP)8V*W^hE&0U+i>t5Kq zYYk0?kPKf`*=*W%(iFj1R@jTVHlCK&SJi=ZRNb>SBw5T@Qyl9_)asBqeKF~~!7M4o zC{p?d`eFmYXu+^TZ3lxy*Lpseq+WvC@?v8f``&TK^W2B$_uP*=`1fNi2TcD2_&-En z4j9V;^Irx=_&Z}w#xjqEl2FT!Xdrm+~17I`rZvtbt(Rw;@koLa=J{~>=4d@W*GZpqa zI&>yGgvUnU><^jmD>E0;Km8Jw>M#L=Nw?Zd8o)FN&&M!pyQG9v1k~urfdPP_CbW(Wf|kkxNa-Q` z5-3xY&A4_UV_n*6^_+dI_|S(TnlP`RP2gk zRg|ZSnr8K~!dlwt*kNil2Of++mF0d}J};}ORWB>2XWyvspNAV*1@DhLWSN|C4UiIE znvHOcIp7-y0!mhJ=7HXx2VdoZtby${Rfj6sNP}|%v=n!T!U6^>cqryokSf+X_>bfT X42d-$NI#9e00000NkvXXu0mjfsrtHe literal 0 HcmV?d00001