From cb4e1f94c86a91ffa7f82b01326b443720ef1514 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Sat, 19 Jun 2021 17:37:56 +0900 Subject: [PATCH] justification: fixing some quirks --- assets/bios/wp.js | 14 ++++++-------- assets/wpfont.kra | 4 ++-- assets/wpfont.png | Bin 5941 -> 6050 bytes 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/assets/bios/wp.js b/assets/bios/wp.js index c0126e6..551d6f2 100644 --- a/assets/bios/wp.js +++ b/assets/bios/wp.js @@ -187,6 +187,10 @@ function typesetLessRagged(lineStart, lineEnd) { return [printbuf, lineIndices] } +function getRealLength(text) { + return text.replaceAll(SYM_TWOSPC, ' ').replaceAll(SYM_LF, '').replaceAll(SYM_FF, '').length +} + function typesetJustified(lineStart, lineEnd) { function wordobj(t,v) { return {type:t, value:v} } function wordTypeOf(c, c1) { @@ -314,9 +318,6 @@ function typesetJustified(lineStart, lineEnd) { serial.println(`pn #${j} (${pns[j]})`) words[pns[j] + 1].value = SYM_TWOSPC; justLen += 1 } - - //justLen += (Math.min(spcToFill, pns.length) > 0) //wtf? why not increment every time you insert TWOSPC? - // TODO resolve issue of "type specimen \n ook." } spcToFill = paintWidth - justLen @@ -330,8 +331,6 @@ function typesetJustified(lineStart, lineEnd) { serial.println(`sp #${j}`) words[sps[j]].value = SYM_TWOSPC; justLen += 1 } - - //justLen += (Math.min(spcToFill, sps.length) > 0) //wtf? why not increment every time you insert TWOSPC? } } @@ -358,10 +357,9 @@ function typesetJustified(lineStart, lineEnd) { + textCursor += getRealLength(printbuf.last()) - textCursor += justLen - - if (printbuf.length > 4) break + if (printbuf.length > 5) break if (printbuf.length > paintHeight || textCursor >= text.length) break diff --git a/assets/wpfont.kra b/assets/wpfont.kra index d452f5a..2f2cac5 100644 --- a/assets/wpfont.kra +++ b/assets/wpfont.kra @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e95d7543eadcc4db6ab5dfbc68a066dd9bb92f4c5c21520433a7590cacb9f452 -size 115330 +oid sha256:7215a66afb4a6b8fb0de6bf7acba3f83d080fafe045853952c2311f27b552da2 +size 97321 diff --git a/assets/wpfont.png b/assets/wpfont.png index e99288afad0ba987e865c3c884fcc301ed0f1576..7073e6e844d6ff6247a5ca3c25c60b0846890691 100644 GIT binary patch delta 5805 zcmZ9QWmHscw8s@uk=wHhmdBZQ(|b492h{l8wru_k}m0z zW(JTuulIhsAI@ISdd_~j6 zSOi1_Cd=zYn0&{R6};emS|YC!FhX8)`r?#%g1#DnFHfOVeM)v(6F9$!@~7|=+-#N2 zaL!0_&bW8}PNzR5Juar7_RGh%LzA%5Mn*@M=W=8y3A5C~;SdG+*{H*Z_TLt-w9C$~ z45ARNN@EjkQ*6?xZDp9dx9RBov48M> zz0q*Pl6BvfCki`tP<3P&)#kn!LVZ|O-AGExCGCIG&aQe#_QPuYFBTPw%!%grQ?ugw zCjwgJ(VU2Mkzk3j_dj-NYS@kAv|i_Mt@mpobQ*4l$5qudCYxT~jGUS2Gn+5}3b5^} z^i}6C@+4#&{+Qs1B|?txC2b|3Hze_<#f*%^Yc7FC2W=y9OwY|;6e^-+68tZmx1u}R z7*9(lt89y%&k14$JaP;rBm&_xhX%LzbFZwH)yAm=@7%fb=p#hm`OY0dw*RiX?s;)# zckd%+pi1)E?z8*G3wAW!3>nsDFKQ?_G|BOyF_~H zdU~|gl84pCg4=8$c`Qq4q+UBO3xvfVpB3@XhTfL@-gs7&m$N8?!6mnu5^x2jQN&tV zs9!svv8f5Q`-*S&F}R)~V)X-mcvD5= zuDQASvDDvuQYFnW&Qzjsy9YaR#7}~Rt3Ts8yh4k$PrCcR5|ziJU?;~J{5TA`DB^y0 zRn_agg(h95u$`QN!-4?WlJt}mSmsC~mc%{L-J^dl{3!&Fr_K_7|Haoy_o?~$uUp&O zvEY*wOB0<^BOYJuHrLTwv~1tfo%w1R-)p^}e5_0EoMUZAzkB1RZsEpVhT(GQf6u1h zu5OR#AJ^64chrr+&3nX&!CyCHwoTPF#zo~f*4WSb==b;wT|{hPL6hEb zPu8S49G}uJgZaV3hp6oA?8e|Xx7+w*dEo-fh}YO;kD+n8sBoevG6go-Btc^&rosIv zN4n0Vt$@|K}QZZyYII8U-vp374&xJAkU|#YFduF$bxS<Wn78jns zPftdPpGdoFGMzQwc}V)C;B>_2_U}zjQIU#K{l|6#w>;s;TB}nfhE5afJL>kYsvW4& zD$HM_BO@nTD$o(NqDc;*S4(-KgeNhr>z_sDoW#dFu*&yw8NRQWxJi@r<8_4>9PnDri7UwjfTDv6=cs^(HuuC z!L&|^0f(}(vh8%d&BGlfndgveZ1_g?0UOl&8^UWXvM=V$qtSi%%0f9cD7XJ}2}M5% zsQ5<&u?o973Y+tYI>(EhXZ9&RuYwSiUiy-|N2(V|ywT4B3x(Q|9#d;%X?9H}W|aJ~ zaWpi+&jIZxlfBmbDd}hsYA`{5I4et}ca(9tE`Bp39H@|J{0fC^q1Ifw9m1YV}^bfP+POEs127}|Yt!m{L0 z>a*Kzv67^m#VVW0n;=IlN=KzK$Qt{*5aF9)6AKyn8o=U5KpBcNtbBgn#oI_#68pqp zef|sYF?bgY(_t&Dp!G!N&<3Ngr$>%Lph2#1z(f^ zFbcZeHk^I1JE9|)`Nqd_DH!e8Q9Wa7D7Eo|nMf|vtFjc7m$2Z*Y4rYD>IK4KMIs_D zv|75zY6eX_AYt>sqNC2=8-3!VGi6-5mTX)NcPl`ttI?Nj&2NX(jY&f;!^gDfg zI8r&?_>9h^os8_qYXsuE^t35GEJazz1Hc~=5|X!~^&B7^cYLp3DNWcAl^wax1oYE-qX>+H1Ym~(-OnFaK@LPdYp}>pHsRS zx{9wodF*_4wk5klw-X`MYHeU%O|Q8$^5!@O+>PsVxn=tcO>RP1vi-Xe!$(K(?LDGg zSIM0|8N%mF+D}Zyi|6>#EYVQ)h7&wWN+c^(@;uDEzpgZLP1aD#9U-jBV~qbtD`ylo z?a>qP34`4&<4gseA=i`iFkKhB5etPMEvtsm04& zHxLkRj{&;wXfK4^t92QW0DUUl(qWm2Q#JrPzz-K?;A=lg;G08?@EfeF$A@#gZ+ou@ z9cHU}AcQr$WKCWdh*EDlm+bTN^Tv?EI&yh1auM&Ch2&B!@PL|^DTz(D{~bu(|@g#n!vN~7iu=uL4bpff6Re1EPe(6 zG({4k44z8*R@YxYa(Rb98_i*w;i78S$<8OADWN9~0@^=cwwvWF!=)mnM>=|Ow~EH7tfz8N zq1-p*zH*fr?5LF}x<}}^q%XlrlHknwXcdI0_^{Bp{IeFyT->&+j(&GR!y2ShuT)^G zcP93)fh#&{%S4s1`i$A2g;O*-cljo4>E~|C7Xo|tBA7|&s z7IPnKLkVd1Z_XJ8qP@Q z<0L+C@c}0hLYox%C;{>r-yqo?3Dz8c6(JMcxvqSk0lSG_oOi=75xG3Op+!4d)&b(BG-^+$IsA~`;) zp~7*t0Ww4W>#SIm?^RkEbg9g6QaAsXspQ(!!g@nJpY!hFI{g4G+o3Wqa7Y!D0;D{{ z)9H=lR$S{79RuIUK{PAyX%_D_8{*=4R#1ibKyG|z?|NyY@nW=&J6uH?f%C7 z&`VxAFA5cVYRfBwj_Xvpl;EMEp$9$*rdPc3(E+FSXtWKYwIm^hx0vXtHeaTjxbI84 zV}rs2)>inNzX~R{EhQTp8@U{K0HmwWBlt%LCnu5mmH~;B{D$#s(kpD3nDJPnxA<;9 zXKQOo)!yw6Z_@0IBqz$*foC|l)8=o5V&A$!{p7BUikJQ>H8`snXj3U_8#NMGWDM7eHfylAafHq1Fl1{ybI~ zxjsrK@r~@y$h!h+nr=($4?khs%d(;c0_uyBIU)$@?BEyzOgn|e!@fkNQqQS5?UsUu zJ%!H_@`Xlb_Y(DrqRmQxJ>Z-{Gz1qiG#dRLYty6@!aWLIKRy%RI*#2kZ(gqgLy)Zd zvrNqdjNFA8Uz$g(U%j8-=5i!})fdqx-q?EU1HTnjewrlsSmec0Yr!(zcF51H~Z&rF`7Fegw8J%amiRL2vjz7Lt0* z1W}NHV@at__lxK&=v4728k!6x>BPLpaPJo9`tvH< z$4`ve^YZGfEW3$31jbK6-Ng(u5p9T?f=Ytl2ER}B@oAXsjBBqnzk`Ogb{(WeL{@8- zcW(Ar8QAtqj*N5p)8v2&$<++m0TzwHPiV-_1k^rDZs z$+)9WHcAJvbxt|xZKC95q^FYqnF)cPf*RMDbatM{@NtRtrR3L)j3_J? z`x|!QmHbBjLl8{Q6rWei=@~WeYuTrUp-rs}DovUAws)8ORTduG2yz%W=qP}RBV=!e z8kZnNet5jM+8mc&A03dFOhA3`~h84Fairb_i`M*7KL@G3kic39|JN)a)<T@ZEdYVn`G%4LXJX>qEGtmci$HG>r4271n=T_zJ|rt))skZ zXXlg`c}#|Yy0sL+&CQM3yLazkQZ^PBU#i%J#l!#t{QOFA3-FPR!19ynHNw!*`)3$j*@oAR4O`(A^^DwSemJ$CrIi(`u&{6o zbFx_@v4io$1D9Oyy8?J zk}<`1__I!U%Hx*x5Jfu?A{f``uDnP~hRp^yr#Ow9B z?>G*0v|-%pjpJektgrrA>8$Bkru+Ve6>x}m8zM&`R4DAddPz=#B|A;jQ?Lj}eU>(A zbb-#}&Y@3Irgd>bAsUyjL6As17>XG&DmYjDu!F8}xuh|oUONSES>Vv^w%bC_j+gu1sqG&~&Pw&(%g`&FT6zu4>n zd%|&FPIL~zi<1B!LiO?~rpw;aUK}hqBL{R$3}=QjWcYghoVJ8YqrlNjP~?i92ObYk z;0NA=x^)P9^y%FrBgaC)BYP5NJkT|cIaQ7ua%nQE?4||np1dGL;BtMOBfYk$Hv^cf zbEGw_`%ps(E;OfbG&S!jkyu% zCcXQ-m~J%7EL(5&iPW7eWtlst+|NmWh%eHG+8JHpCNPK}Zc9G85$3#+F$9_h36#5O zQOFFe&-dHES2+@vb$*+>7nivKUNNM{kL>5`VT<|Q@)-;q3*SD6W*^CC7FTEQPz9Hc zoZm9z$G&~|Uq}8YiSz{Vb3m-I5pva#T#%XI2x}}L%pVX|4Wa(Gp|bP8Hx5jtRRt(* zVw3;R@gPjefL-u`0OdUbr3l<|!=x_@#413kC?BDOx~_&0KNNU?6J8NYIZ!FhS=;8; zwjPPe=-20~0vzP9dG5%#yMU+vztAB5y;G>!a??$HE62;I)~lpgx%;cQPfu*Rc(*2* zMR?_b!E1W7J*SU35LCjW2|fINYck*JV|YL@H947J_fq4NX+Js30GQc_-S;oX>S!|) z@v66K0*do3uwuE!vDE6##S*P!%bCuqZ!tSL49v235FGu;`57Ik|{IJ;kxW)a5HQY6eo2gf+f|9YzSl{9kMAS`L`-qc^3#EsM zz}4TJ?d|Ot>8h0o!Xs|}aPTvjG-2GPb)Y3hk1{K*2Q`j1as&)(W8{b~CEzq@y_42`^Sj-K?IS`jK{fIc^TNHQ(S2v$D#U?xxtR&j3sVkO#W$`6{W& z$)T$-J#w(pz8srt_Z+j-iO#n`ypMlF}=ha{ke|xwPa5pZtfy bZ|`!SKWb{hUdiC5rFWnpb)`~;cmDqaXpm1u delta 5704 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