From 04fbddb200d9129af985d35fb2363f9f1aa5c8b3 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Fri, 20 Mar 2026 18:30:57 +0900 Subject: [PATCH] OTF hangul base addr remap --- OTFbuild/hangul.py | 4 ++-- OTFbuild/sheet_config.py | 2 +- PUA_allocation_chart.xlsx | Bin 18791 -> 18376 bytes 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/OTFbuild/hangul.py b/OTFbuild/hangul.py index b88c94d..5291009 100644 --- a/OTFbuild/hangul.py +++ b/OTFbuild/hangul.py @@ -16,8 +16,8 @@ import sheet_config as SC # PUA range for Hangul jamo variant storage. # We need space for: max_col * max_row variants. -# Using 0xF0600-0xF1E7F -HANGUL_PUA_BASE = 0xF0600 +# Using 0x100000-0x10187F +HANGUL_PUA_BASE = 0x100000 def _compose_bitmaps(a, b, w, h): diff --git a/OTFbuild/sheet_config.py b/OTFbuild/sheet_config.py index f56d0bb..2f08b27 100644 --- a/OTFbuild/sheet_config.py +++ b/OTFbuild/sheet_config.py @@ -179,7 +179,7 @@ CODE_RANGE = [ list(range(0xF0520, 0xF0580)), # 37: Codestyle ASCII list(range(0xFB00, 0xFB18)), # 38: Alphabetic Presentation list(range(0x1B000, 0x1B170)), # 39: Hentaigana - list(range(0x2400, 0x2440)), # 40: Control Pictures + list(range(0x2400, 0x2450)), # 40: Control Pictures list(range(0x1FB00, 0x1FC00)), # 41: Legacy Computing list(range(0xA640, 0xA6A0)), # 42: Cyrillic Ext B list(range(0x2DE0, 0x2E00)), # 43: Cyrillic Ext A diff --git a/PUA_allocation_chart.xlsx b/PUA_allocation_chart.xlsx index 1ad54be8a5b182716511ca1d994c09836789cf16..7c618d798d122a2436a73456979c497163baf5d4 100755 GIT binary patch delta 11360 zcmai41z1#D*9HZV?ip%8LSSe_QbIsNI;50F>6Fe<6u5wZIs(EF(p}OuNQr_lAk7fc zUD6EkAMoDqe)m52yFWZ@&SCAn>V4Nf`*7wgzQz6$gH5cZdKHHX>-zQUSZe|vWyE~g zSAk=>H1>xpmnYL#<*#0zaNrr?UYx*v1lVALd_GQ&?GumO(aLef)0k6ks=D_hlx1l4 zo(~=S_u^mf(DHdHeS>tRJ1X8!4^1~QIb9W1enTNNr9hoN(1XnT$iz4OE)wgI8QOHd z2^*hG3N$NZiYurmT^vGuJsO?a*jcgnJ(zDjT3bBipFSFGwGQ$YZZewSl})E&+5ZS7tKTw7;l#;>43Aknq-*oNYU;U;js9a5=mav)3OHi{NmnhRR+@_%=RhzloS>KgHaG^Xn;}WiMtsGhnvvt*U`G`-MgfyN#nG_hqpDh3 z{h!MRXfu6LO~RUo#;B$Vm}3<}pwPKe`tZOaQYLB2iFBpA^vmF>7d1E%fmrWJNe!GF zvTpqucyO|oS}?etgW5q%YZ<}6_D!u$#H`jy<<6fR3|3EAj5gH;!cIRvJgv)Gf69SQ z8(VMRzcGcX-fTbBPfG2^J4O18C#J5=Hp!eVjkca|gg)_Ew;QN}5lWx!SlG^(Oc7m0 z%22dwA7Xym@9eeu9)2dx4x;hVRI;Oidz4Adv?}_$gi4*CtXq`VNsY|D!7K_$eb#KUgchplt1pK`6|=#6O>>`smJ z!%pdnT$@xD?P7cSxf)FjBpJ~i?o$Cm=Z8U!$Lo%bcj#gq0vSScsMi&x0%mtY`LTdkxog3iT!&-XE2ga_0z5Uxqs#v zLI@x#5H5&4gbwl$A^|yO^||wEtiM;BpLk+}7{d>#O--8c@=;>7$z%0)%k`n-{8wYG zYn{T9S{u%HP8LObS#j#$)Wav;;|qH~i&%yf>9-ZaTn8dvQWrmb^RY#j`+}ZXDp2piZATf#5W81cdX^@yW;AH9IB!wE)A-}APa!vKCCnk&$QKJuy z?1)&_4iO=W4~xhVdPP!35>Apwl0Z^R5<-$i5=&A^5=Bx(l1y?+&dIt+&nV8sYGY^f z4n}B(-v77y{m$EzaYL23ekd;+tlwpV{#&&_+LS|psdLJ92Ja%Z{(bINo3c7_%z(=~ z)-01z{_JDrWwK?m)z?d}S6(l_Ue#LCTG3k8TJ2rxUFlu!)zp0TPFPU#0h)TnDr>^Z zWX&P^8X<+OrSg^g%(QG_RIe#?WbKu&+A%{iWk8;5rmqNs+D42R?r1XAcOed>LI%oiCleWwbm*LOR+nghhBs4y z$qkets{PY%=AZK992?d#sA|FQ(oll{a~^d(o*^q!bEdEd$BVmxQMckgz?m7TDH`Qg z3=^Y`c~Y(NU~i{}Ij!*F&u@Texih1)mbE?;h{YY-oCZccwQ;y}ob2?e4;S7Hp&~1J zEm4>Kf`NN(X-3HAi#Hd1ng>J*DC4p-7#%vx+H88E9T(|P8Yt7MqCG&5HO1l{K5#87 z5oc6|%g}(7FB7tnukw_PL+ov}?2Vr6oaAlDoE@O;cg(ii{7zb7-&{7&3s7%&7tb;9 zgY&}kfb)I7J7=w{$ET&dY${bCHRCb0cW?oE5S=xig!HqtleSTjWQo!J)J=M`W%|=e zw6(s%MJZsoH6C66&Fmc>^wEw91*b{+)F4`|Ss6}71EyZPYgO0gp<`VSL#oPUsqW^4 ziR=gi8PZVS>3z>9nA|)%nY#Hl@B7VT8)d{-2z(1dLkn4|QO)K6%<60~fLUSqclP5B zT}0ZAi%~L&ts3Gz3Ca2oY9~vmQ?Mrdl#1aZ%vhVp6}zw!Tgpdvl&5bRx_`WdyHS8Z z9Ni?hv(?qY5c|8-PBWZN=`!op3E}WkFb!z*xnf1Qm4v7#J78sCM;XZSytO9w!V3Jm zmD0x^ZWbfe?#Ji()%bFsFQBENc7KVp{{Zn`!#vr5tu&6V`7E;(vcrgZB(a$mw;(06IfrC<^Z{0 zUu|G{Svf!@@*NFdhtQLY&*~a>cn|>EkjgK0CE>hGvP*%DU%}YDh4-MZ!wgFz>>`{mZ2V_`<>ju( zWQl0&7zRLEo?OJDw&v3vfje1Bgm`vjm+Bxmp*%>tX}CEP9atzHy7pB>@Qe`e_mRRg z^+>{a_y&XyRI6s8S@qwcs-&mdE**mZ;!qADrb6Jbx}$FVtKwTBQlsqIx`qeT(87%D z(>iOMg`V@fWB-u$l`k{KFg7pWe*gv`E+!6re=i;Kg7%>Vz&TfHxn&*XDnG#a!e@ z=?k!c0!nRU3Gp1D(oc1n5rkVX(NYSz1Q4tyXjn8FWR^xJwyf-^OI{=eT8PrLkODvz z6$$Ztd4Y}6A12iQF)4!<4zQ~btSPe;8JVzip8K z@VTrB z13Dq^vJ>DifFbuIRR_J!1e<1KP;#(ES@h@iO~Gs_QlduZ05h26Du{fSZ~SVCfR>7XaM7?8vt*|GyFFFGiRB2Q=-KOO8O-f9L2L zz)|2OM>xMYqUIsf8KHEdNYt=s1v(vh+39kZ%MTQ-X(8Vabv%rq8Zyu|1S$UwG0a&4%UkU<*s%1!sZ z-O-!OLIxMxACoC_C9c|H-t>s1o;~(W&Ar_O)@j|xJ|3p7dplPs_2B~4)YJrd>J}1G z#2wi=I=Y<8c{wOb{Dc%>V*mpqyygz?Cf#e$+W^Zm>vk%Ti#g6blw8Q@6hU5Z(kbZ-?khDbb%Fd1b zNd1Rce}^@|QnI!z}(5iv);85^67zi&FnH z7R;163%4+Q*~hi|v&;mJy>u>0Qj7;vLx>ZJ6N#&eql(*w(}l~8!;M>jQ-JG$PBHjvx*{j!^%)K7l^IKH<>yA%Y?Np@MAUr0MsYmeqLw%3#mny?nc?Hex#UBSqv_JLXhN4NLEpJ}6ZyH7=Da)hSgeeORhk zs$Z&6YAWpXLoMehB^m>73a0cm{1L9Vqe?5x#F!gdfgY>qPCZiNxDig!zX& z$dEdPX3?#0-_075RPM-$v#*%#R~8=IwgZ%h9y(E80e*SxVuM}Tvxo`0RGDfiMxN8Y zwKUiloqW071Kq(sDDnTqjc|YYYtk&Mgw!B)Hf8bzU1jkn7my?s)FkcPvbHNDKco2B z|Hde9)`?crr4Ya4QEIb4rw(u!gFV=joUFKn3--@=HK?QJ#)`C=Tmr2Z(v%@Cq_a-= zv&8?x|7Y}WMbQM^-uBSq4@ktoHi^JwmB8e`Q38bM8!M8&h*32N#Mp#>Mw5T0|DPZf zWJgsmkBZd`OXo7#Zne}~3?b@(cqH>Y)P}5!S2cEb8J?SVLK9CSN0J@-+8C@N-4Y~z>2;(ti zG2}92H{>&9HiR19G~_j8HRLwrFf2(Fnf%;O6=_F+JaYw*r>8~S%!K~J{U2fXY;c;j zi|D?MOF2QR(CLHmu{I~PBjEkVb@E3Ab`etDx7#~T6L~YC(i_8$%<5_XyBF+colg2I z*MIcK#b7FP(ib%!UH(@CYm^(aO+35R?;J(C(myWMczD|&x4GXq?V6^02%Tg%wf)xr zP-HE%{nNCCfqrAO56NS0vo61J?73r1`m9onv}Iu47bO^>0yf=AOr$gyq(oVhv)}KtVIg#IeM@`< z6y&D$4AqR%QySJkTe;Cp(X7*atNCd&L9P=7?w(sne<6ho$~1`*p?^HxWwji z`y-pQYt=n+#LmefbmJ0)!Zn^Cd)HN-fgeLgxy?o8S}%T0Q0Wf;rAiwyQ)f=^LSQFPHgx8#hO8@o;taW2jGut%=RdI1aGdT;o!CS!{RBE8^pfpPh zZ>42mmcF_c`Oc*MrDWO{MVXJEWdTtDL>>?&nUCyuWeDzUrZb1IkV2qTN4EFVI6u)E za1yw6Qb%NqEq=6>kOdPefO_iW`ohibIf;Mn7wu3;)qIn+0XY4X;i8)NMLvU2L0ZCu zlc0A+PWv}ga74DP7sv>XKW38uv3FA^HYzkepTVQy!F>9>$#ezL<)$!S>6ddn=p!<_ zwQ4$qqYH(ca;wL~wSff-w3{nk%m;>`*e=>_J-)Qi10Pmo=gomFMwd2&+Lv^bvr&g! z@mj6^4diC?6!tzbqB8}?a>O#tuP)V^0++LsPH?OwP2Fiqj4038%Do{eMN*Uc-3iCEed7Q8!*}*oSN87IhgAVP7xK z?^>&H&pe)0SBtPl{ztbc$^s23ZLcU4q3h8pS(jqc+=^Lb4ff>?2#orBX#ZiD*6<>9 zg2_$AhFEjCa2lE{ESXgvn&UCF^{$65<-1Xg|-B*Jq%W>Y_zXk00C zWP66m2Q%gys|a7O3!%fAkRuLuPP-;st@Yx=qg>fu-hr34E<w}B{q=~Y@T-QZ?Z6eJ0iq*;B&Gc@x+R50cn4pu;S);7Oc93TsdSr z0UN)_VljRRNC+UIfP?`8`wjRA2P7hk#Wb>=%lH)_QGi4P5(CKVcCPhLFuxVm9{+e70NLNlgzTMPJDHOz@jJz_#knqZTWF zO!=4+o&hJHwtUyuTZh{%-NmQA$sn6d3Y&QNK%%0g@~74H7Iyov-IL!?Ly@bbi?GVc zy?V2wq9e_o`bqMW7Wx&A?}S5M_mPJxTgBDwsbyiQ_$JG-u7;YNe7p>CB9&R{RqSW= z6E4WODhmoE`gF)}yK=dHVv~gWz#e#T>(AakTvhLQKg4mIhTswmqGMEH;`%9WE`#4{1^RB<{NFOBCWFn1h zGUMMA={~itt@9Vd)V(+3-9$=CHYzj~#v9CU1yRlQ&n&~#F`kvCXYQWW2~);A8zPZ= zJBYnCjAf%y&;ntr^*E}DC;#ZU>#5;(_l%$6*j%?O>|>B5WbF+2=412hcG6Igky9wV zecA<0Y*JVa+X-!E^c(UDK&Lngjjs;cvo=+jEtXDCZJ;(54b zW6n4F_FzwUc2+jK3c80Uigq_j!r%j22kR_}d(P_y1ydVAz?Uozp^Xe0Cad$M@SXKH zC$2$F4_$_K=B-Dz5J!t<=YHOM2PIwIGs`u`MT^6zoG++WL*qhcm#|c(=-r7G4e{Lg zgRbcwSiN0X#t~1d!9iF1Mha}Cz9WNTljPIrpux{$Kd~8agimddkLe(#sDVM>!D9J# z$3a0sfk*YTH2LT=$&+oj@R*a`#o1V5*r`+HnWwkn+2J|1mMY%$Tx%7wPs~_YZ4%g6 zfBBLN_y$V?c1?3s&e$1KN5asc)!YKp+Dy)N%mgi1A7O3QG7}Jx<{v! zL?^_7JFC@u_FIXudZv!fVV&(hVqZieEfZW)oWo#}G)><^U*v0uc6sPIend|n6w;mf z9h4xd(@!2s*%(QYK^*hZ)9xlNGEs_yGvbeO1{KP>MPM^uth9^!ACB{;Dh^hC`~C#; zVb4A@y2BvDGtniqo>4mXJTqoyThQ$BLHo>;WTzDqjwe+r4uYpE;#2xzlStlkZCKZ> zK*}7y_o%N_o8C&%r_lH%mt_9VbS}o#NQJUV%_tjRsk*qHokw|RE>ciRxBL=c_&dKP z$Hqern_8GgR|!Ab?B3L)G99y@dZsWJO&=fc{(Yv{7aak5Hd$so3SVND^E=zhoQ~fG z_N>TMt#2Qv{f5Ip60_l~h{2nh;BkMWBvdY&AT>z>)0LL8?a#iCo|*F9*H0d2e1K|4 zFtZ$cjVPDvYQYEwxQRe=?0*P39U(O@@2n~#F;mVw|rdOF*vH+HFfM8xV_ z`Cz_y-?VvOMP)mdL40d-Ou8Y=G?TkbtHgrSugvp2(qA*qwnkF6?(UtRZa zqOhbs`xd{qv+nBUCftZjROjf>qewF}Dxb6b4kvV5h>XwY8^S{ujgyl1%IcWhBq!g$sJyNWRVX@MevxwLeGm9CE=X^f?kXK2M@NMR(ni#?}bZFsBaVoT;{N z?dLn{nDhLz$x!w<*l^S>q7myXV=n3zLx+zeG+#SN34t zOO*+;$nMQBkqoJC^{!L6jf9HeZ+wO(rS(5Nn%9GeahnKb!7Y6EOn$3>o%Bh0&WlJB zQ@=H~xT@K`;a!v*_H>VtXpS*mp6ECHvKu08&uhp?XXLLaUk|?_$R;6`a$`L%6D80wZ$pNADfopw*=#mMqn!qcbYb)1~bXoTopw zt2s}XDJ<%B$~b8URxn~e@)%-$9NFV{&#})a<~^^(>YLJbjGyxGvK|VMJ7uFsT~Cn? zX-PdMeRabdWqsSic$Rn7e#0$eCTR=tA!DMrE2oST&Wt~2!C__B{w`)GWj{&ypdvZZ z?@YlO>A*bM%Wy9He2MI;r5w+1#BMkE+Fl&K#-fm8Q6{>tp+Mj~5-A$alparW4_k*(vXaP=C1K?c-zd_Y%lM|eN~l45kYp@m z&QaIn|KbSw)y@lUE&?XG_w*eMlXh@Uo)yf=F#*>SW)#|oWJPe6)M@9xqR503y}kcY zS>!8oEnCbS{ECipgt8#?jdJwIP5aPv=1x0Nl_>3CkGF6EQ4oo?={{usW_prmM#JNG zH{cc`ATq#vV0`gA{PczmMRAK?O419Zf%m%tIHyeE>+SUdvElVA+OX! z9^NYoBIC5-7FU_dVt5kDxn29VodJ##1CxqBLTexMZEz0%Mv=;GGzs4l1CzfiA7rfD zw2zTcd^drLlWL=vYaB7_QaqQBmL#|DMls#%NrM6RtsJ%x8ZH!%L`K)+7Uv`fkaiVmX~aT4FxgC4;g=x-hc|1%&x z)tkrBen+y%3GX6|B1ev^CQt+|(WrNbQgQ&9^+Dh&63!$>PsU(9CCun)mQfS;z3tI3 zcQza)N=uqE>YbqUBtfZfYr(TqKo(vi0-_9`6TtB8=JM=vK0H9NU=(%UUm{9*@9F!% zc)tg6epE%6us4CMP_@_aUNJEKk;ASO*nfeJ8*U~-L*iBSHe=8DYk~t$|LaS3sCdUl zZ$%AxCn#Dag#I(DeLZn@6)9b}-J{HM0AT6xR%*v@4Ii4od&KDRQn;aj{^jp_WkAmh zCl?3wT}*)90?^aI#^!HJ97!EXaHozz@VUy6{D`_E&!6Fp)vuJtQqkTg-s`&Qfj`{! z7|58$6UnFWYU)Shj7VKlp^ z6FxQFWc?(W-^aWH&D*Nkm19iQVDFtqW2Sb1(OGjDZm(*D-86+EsVZw2Ne@!c-MoqZ zlnM#ZPQ$_C2c7{?#vMbdy^b)&4v2(l)eEP(?oQNEOyMcBw&zD&g?jgnphc`Fu!9=U zR@Yt+^0@V-t{JDDtt2Nox44j)Z&$J1Q9pUBD~JA#Hi}vP!Ya-hJ6Yle9@}OPUM@r<=-Gm*?DH z@k~{J!grF*n>l^{s;EohhmvR>rscliPhF^d@#>?f&$E7f@A9;*RVg1<7IpAc-Ci+) z)<>Ep#?V!^UM(RZw_U$QrA6k(kO@qZEu%a#rf&bx(L(XI%g*smwS%p z+#)A9p~IC9eU|6Zig~|+PcSa~yq=TH-Rqj=S=*~ezUw3Wwu^eY6!x-W?xW@5G7_{p z_GZ_j_-1AQ#@Da*)3FP3t1&Oj0)Bhdy&1j=%6h_VBE=gf?Vf*qpwic(F~5S|M?4)- z@ZJ4e&ia=P?f0KEthH@A+mk}yKD}e*Tt#FW#WpHP{3-&=@}|nQf*)T^5xClO5l3qz z?_0rPO;Q|&xRup&bM-o~ZB0=E7o2)>)u-0o9oE6YH1>vOJW-QNUDf3gpT9A6N!hTp zF|y}=(^ZOGv$qYQ*X~#$=gbWsEPNsxPHB+lk&DIC&ri4%7r-pE%av$o+F->sAbsk~ zT#`I9GJTz^a|^nWOYr1jNqT`$4$?!T=2p(lw=JX9w+PKF@kVj2U_YWYWcv#omal+@ zzB=y&-Kx_sUoXDP{OEx4JHiOBYsAz@aVB?X*d+uPSJJ06{~0XkB({kLv%eC5+VZ_B z-onZs%-VSW=v~iF+MxNu{b+#=uni4Qm^o9>8N{kXTth?LZh>5pT(F{i<*$ zRKQzTufvT&lc}qXEq-h5HG_qGU(usfQmdy~aPlrKE9ysSd$+7-nZ3CXr%mT4%j&VO z#I4_7QEM3_F^}oFgR)Z(3-s(tVs|^)cYv2_ax_L|#G9j2*hXN=70*Amb}oyKs9?)U zwQk_bNrh?g-xz@EA21K7UiXYPr4Xqwy_;)5Mu70uDO|dni~Z7%I1L%1<#J=dn{37Z zTi&*E(}U4>^`8!&_pI5ziP3Ut76HdYzQyw28R5;j`tAHXc9lRakN9>9KI*GiYJS** z$b@k-M%cbgw{xx=OkjG6cMsjsX4qM=H;%N)a!;D}-9<>wxf$T-oH3g`@}9r%^N>}@qG-!rWF1i%Ba#kEpRZ=`a|xwo zZLGRKSZ2d^@xLEpWzvaarI!p^JIOt!Mfy9sdE1YA8%&=t!Ackti4P~_HIHf-(!SZR z=FgMp>!C18<7#_w1X#q)s?AC)iWkp>mQ^61Tn2&YR&-yyuTxZ>f-eLWmIBvijYiPh zx{~HN)ru)+$p#Qo&SHMn$PcyCTAbcq*D6qec+vL?{W!oe)Fno}H5d30?cYJXIvLgq zyZj%E#Q@xMvW0_%2Q@ld&oQqi{6Lz33QltOe_cbInL$oEqdROpL2C0Z^cs+ zDI8#*WsLB}!e^;eT?@^lr#}k}G_uwif*Ps^?&wxt!|l*|jx*20PToBA5KnOoLHck( z1sZb4t_HgP#Wb)Y9n44)wj^Mig@gr9EubR32DEam^%%6IYj4ZdVlRBS-heF?zxsZ- zdA9#)=ubBGSpmk7`*myw?=n5af>M8&ZPK^G+>H^&1eH(B9rQ%%7@gU04V_^}`2Df`z{v_HZ>C2-HY9aZ4@d9~nrSy$WXy!luUu?m6l(Gg9@tnE zSPNJF#t%F|juqDI+#)~}y6GRmH8Ym^u9AzBcOl!j{zEk`vln&CIA?%-?+GFS{ z8?4D9i=kVWFXfhN7-{_^75y<<#bx}HJkLb*du05T$yYQmyx!+?M*0-*uPl+&4VXS( zk~4<1Wc2p@)*l#zW^kGl9Q$NWP5OzmHY*C>SokScl`&suuCc?hWzpNBbdkzT>`x%3zlG&4U_BfB$VnH(^q{80pCY zXRT4!8L+9-<6T#gxyy0}?B}W2f5)dre(>_W*Vp$x|LS8SMTN`vU(*yNE{~Inz!PfV zeOM+XF%sZt{O9uq_!A|u8yBkozK5Xs{V z3r``5w-Yyj!5)A|!oN(~m%_p_d-}xDouBXGQ%e>53KiCWUg$Ocy#p>Afc!6p5E*!o zGSg)W|BV9KUnce5g*PfQ{;F4*{tA&C9HY$qtL*#qSLWp4srRTsTB^9$F06=vU%abW KSOxbk{`x-}MQ^nL delta 11719 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