From bf13e341a425cc3b715cbb78602b4cef594c040e Mon Sep 17 00:00:00 2001 From: Song Minjae Date: Fri, 17 Mar 2017 17:29:41 +0900 Subject: [PATCH] Kana font update (issue #3) --- assets/graphics/fonts/kana.tga | Bin 184364 -> 184364 bytes code_for_Slick2d/GameFontBase.kt | 552 ------------------------------- code_for_Slick2d/GameFontImpl.kt | 75 ----- code_for_Slick2d/README.md | 1 - demo/.idea/workspace.xml | 2 +- font_test_3.PNG | Bin 56683 -> 56395 bytes 6 files changed, 1 insertion(+), 629 deletions(-) delete mode 100644 code_for_Slick2d/GameFontBase.kt delete mode 100644 code_for_Slick2d/GameFontImpl.kt delete mode 100644 code_for_Slick2d/README.md diff --git a/assets/graphics/fonts/kana.tga b/assets/graphics/fonts/kana.tga index eb145a50ff7fff43adf41b59a4eeacd7534b50aa..54f429b93d3a03a3cc2b3b62048efd39d8b2cf3d 100644 GIT binary patch literal 184364 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 delta 8424 zcmbVRe~4q(b>==#opB=7@*s?y)!WL9inT?L2%;tmm8jefvAmXs@m2<9BVpkv%LI?; zP{w$vM`T+s>|#b`l^gGMVO2I{(>UM>9&77$&5BNKr*$@~bZa|{Ss0Swe^SVVEpZ8< zQQYr4_dRKL@`KPnMtbw!efP&X-}%mWj$Szbkr&Q?9T1rJ26vvMn$k%NDt%dx^keX-NiKLPjR`)UIxSX ztYg>4UQ>3%oqMzPf;;KFog5Srr{zEkI6}^JPvKC*XvU7=2C0R_Hyw;9<68Ge zCvgc|ezvZ6uV*k#+Kiu6NxX>hZ^Kx3hs@|L*mU? zJ6{7bYB)tqw~s_j;iD>Tc8@4n1FnXHH*m-_hGcZ3nZtKnH=d2?aV4pD?#l@HGzmB)#YuYiKZ}FL!#`HKP{(>_;GV^dbsxOCV7ez%axi=-rf@(wYraGu zrS;B#l#RRY;J>dsdEGshHQ}<#>(0F?GyIN9Y4=c)CtR?5>?~GIWgEBYChu(4^#4RH zV+%#odDUsj-SBHo)7emo0A;gg+`>A|xmmOGpsMT2GXPCJue5tDt2Y~Ta9tb=h}egZ zZaBcjlKtl~jP%`2qveBt^!RgEC)eRq*zsa?Q22at1{ZlfK3nT~rzg)hA4kM~A#1nJ z5bi#H6K*Kez4%6~0)m~NsJQ9IRT_8U+2`+=91c&BZVUz8B%$-*et1VHJ%VRZSCK zh1Y4ZVU$ys0$lNhn(=<2o?}3z!FfKbVJ?n|>CV~bgW2O;xXBL;d^T#rw>wGWo>Zaf zl^%U58@!h`-v450p`!3hDz^Wsv#WA)%+1$vG5+KNBQPs>VANGwi-#OE&Xw!|WgqrK z&f}AcZk)?a57<4m4*RW;CvpStLV1Q0@=nitKe(h}vO4?^_21HhLtV*L;4&fNS8R@C`ecM5o#L3wVSxx_8F{5-^o}!0-Uj zm*wsLb?$dXxR0jgPEvOF!QN;W*&rD=rW@}ua^)?iRxyZOBVif^b*|?nP53hKfDhz6 zngpf^GS$vSIZfldlMa}1Mi=f&n$9sq4O72sDS3rCT@FlQ3f}L$SCs>SbBTxk_0<5` z84wu%7&5XsF3o*m=$5wz_Vo8GoG5N5NG}AiU6YHRw<6|X0GRGiRZZ?*s?4jFvV8dN zZMqZ6nf~9ZB@8BLu}o;Plm)M^EM@}EpV7kyOME9|5Y<@#14kOI_B?{7X(|smt5XO7 zda_x9o!Ooa56-`Np{j=uoe>+3{t2`&d``551OWU8I$HGyLm=1HP4aF%} zOGt4{+*Dq5kh5(vO5xSA5Id*vb4JsQKR^I`5%oNy(FYF!l!CEgbomo`Wj2S-aiC%W z$0-J$U>LzlHY3hn3cIQf{Rf#V$Os-#Y~2~Wa>@Mzg*7$_-8>lrdhTzip}??Waa;1lQqWeTwH06JQygVd-_W6E;bGM2GGmvvF1$a=CZ5urSb zcRM25`ygYwKSz8Kh2BBr=F7+}_$Xrvh&S-?o|RLEZwoq2`(=l3CC%s|lq{2T;tnW}}c${5mg5iVsL#fa{vWD>zaZn^1+#4z@B%c%5N}A&! z{{3Crh$@7#0rt2YxD2I~>|J83wScoM^QJxK_{P31LT9qpAXM>H!(SF`hn-R2yUE1;tL9XdF&}n2FJd>6e`BrOFfPxC3YMR+4W>v6tTRPN=E$ z65;0kwfcd$&bTv(2H8tWNmj#ilq8rM)eGvzl<9U(7H*%USFGSLU;<+FDbkCGE4GuRh*bknVo5L8y{u`^hUs}=bw*c(V)570$ z&h)$=;h|8kgpMtbf!;0eMVpsd3ZgtpO~ON0#!0=|ZQ*#CEd&wcJ7saQZtrbdIP|=C z_zdQ`Xu)Fn?ng89y_BO9Ihi({KLs6C{+NMs5CXdW!>aE_1mIh6^e~<@-+l?j6<2Sc zlGu#XjS@5@ZaJQK1bpTy|QrJU;-< z-0(G|0N>EF1~F{CBuF34m1%zaE(HX-SU}qb5^dwJP%t3tkrv{t2A3odhtDB>d<*>u zMkU$1a~3k@(Uj?b!ikvSSFkFZHQXdJ&>8%}q2piR#$ja1LOsi=N{E$N|IXtr-T5UR zzp3iR{WEcE7L&$dwwy${={$fWf^aJNnjSd>+hWMV35Q`own92*;Wo6GD*uLh04}zX z@);BfXORSQP-DS-5M9UvAw)5DH0@#_a?@t`@7(oKDYr2Qi3AjuW9Gf=+bd&H!qSP$ zcJD-&?hq@Fi1uEu+IpdX4EyCP>?OdedVDWX*?}p!v0=O$Psc64V=<#q@BexykMB+a3M6Af-#*LFe^9*J2}Kxaqh5=n$U%k*Tl+O%k4 zr-1>}^R7;IF0Qr5WR;2j5!Ut*?arg$mIFFj&UuGU;z`E;OY@uIz1;K83&(WtJhA0v z*^L!SMGxl2t<9B^&4DMlG@q`Z^9D{|1kU|pb>BOTA)6u5c9~T@?~I+{BEOg`#reOI ze;JKsl-Fy_l#tw~*wwTNHD<*NSpFn@5=geF(u$Vk5Df zpPGCv>+6fg6V&T4%Fkay9uS0&UqXUx9M1dOAlPbTgc5Wyg5YOhzF(Q6DDShnWYVT> z&`Cm-#E|5q`oFHF%^&_VFpoBNo&1QM6>YR)u;oXj`L&*x2aI8?4L?hd<}&0G>HCXc z_B1iE@f6RT+mi$937gWyzMFT$TPT+#3=j%szl&Ta8)6}7SSjOouS*^g;s!h9B?IqG zwTNI3IeZfQ;ZHm7qP0TQKF1vhoh?zV;)EqID7689CqR+_kk~3ftCXfFgWQ30;!Px% zXdWa=&@m+;3r#r@TivjryaK~t2;PdTJ!2$)^EZjjFEWK5<_CUyF_k9~ zwXC0E-DNa)t4s&$x_@j9vy0p;f=FUkg84d2s9hMn|CbKJ=8%2K^gr#Ct(tD2@iC=J zW)s4DMY~HGsdW7O0K6VU!rEH^qh$hH?_JP)%2}OO0PQ)%7P1Swn3-S+&@PF95x7bb z1Ll1P?#Bi7VV+_R8j}hQ#cRS|?K}mScOHR4^ zshp?>(8fm%WyZ%Lgrl5rhbiGTE5ELLt#U zfz!8tSf+tt!-EJ{;t~3G1>lRC{&A;fE#TJ_Axrq~A#}elBL_8}&B@P%)1QN&0~-(L z0+OGqCt+cCal?$i=A5Hm5i~+~9_NvyRJQf9u(!yxiPRZJnekD2UZE_p>K;p5@(&OX zW0wW2qc2k2zY1od=4UPtd4wZUUJyJdL1kPuV%ns7rjR|eh|B2mCHqT)dv|pI1c)H? zfmnRw*O^ifS4}{~_OzI|L<2kms$t;=Hk1{{H}XNt8epd9$t@|P49S6N#b+d_MbU)#@s7VfkN*zNeHpnwP{WgUYo0#^uM2J1 zH}d>BE^o%)RVy|*>|VzjZzAd{-$o}Y{006#Eh2!h2SEL1mF+IHk?i^V>}CVqg+r(i zsr_vOAxd#$ZSP;ie6)*pv3;egL7L0sr`;OPn1Mt(E?cugN?Jr%{WQDzcub4oi`9yx kiJCuO(W;tv_l)UzZ(_If6Lroce)e~g{>CwL*PM_3A5xmU1poj5 diff --git a/code_for_Slick2d/GameFontBase.kt b/code_for_Slick2d/GameFontBase.kt deleted file mode 100644 index 0a03dc1..0000000 --- a/code_for_Slick2d/GameFontBase.kt +++ /dev/null @@ -1,552 +0,0 @@ -package net.torvald.imagefont - -import org.lwjgl.opengl.GL11 -import org.newdawn.slick.* -import org.newdawn.slick.opengl.Texture -import java.nio.ByteOrder -import java.util.* - -/** - * Created by minjaesong on 16-01-27. - */ -open class GameFontBase : Font { - - private fun getHan(hanIndex: Int): IntArray { - val han_x = hanIndex % JONG_COUNT - val han_y = hanIndex / JONG_COUNT - val ret = intArrayOf(han_x, han_y) - return ret - } - - private fun getHanChosung(hanIndex: Int) = hanIndex / (JUNG_COUNT * JONG_COUNT) - - private fun getHanJungseong(hanIndex: Int) = hanIndex / JONG_COUNT % JUNG_COUNT - - private fun getHanJongseong(hanIndex: Int) = hanIndex % JONG_COUNT - - private val jungseongWide = arrayOf(8, 12, 13, 17, 18, 21) - private val jungseongComplex = arrayOf(9, 10, 11, 14, 15, 16, 22) - - private fun isJungseongWide(hanIndex: Int) = jungseongWide.contains(getHanJungseong(hanIndex)) - private fun isJungseongComplex(hanIndex: Int) = jungseongComplex.contains(getHanJungseong(hanIndex)) - - private fun getHanInitialRow(hanIndex: Int): Int { - val ret: Int - - if (isJungseongWide(hanIndex)) - ret = 2 - else if (isJungseongComplex(hanIndex)) - ret = 4 - else - ret = 0 - - return if (getHanJongseong(hanIndex) == 0) ret else ret + 1 - } - - private fun getHanMedialRow(hanIndex: Int) = if (getHanJongseong(hanIndex) == 0) 6 else 7 - - private fun getHanFinalRow(hanIndex: Int): Int { - val jungseongIndex = getHanJungseong(hanIndex) - - return if (jungseongWide.contains(jungseongIndex)) - 8 - else - 9 - } - - private fun isHangul(c: Char) = c.toInt() >= 0xAC00 && c.toInt() < 0xD7A4 - private fun isAscii(c: Char) = c.toInt() >= 0x20 && c.toInt() <= 0xFF - private fun isExtA(c: Char) = c.toInt() >= 0x100 && c.toInt() < 0x180 - private fun isKana(c: Char) = c.toInt() >= 0x3040 && c.toInt() < 0x3100 - private fun isCJKPunct(c: Char) = c.toInt() >= 0x3000 && c.toInt() < 0x3040 - private fun isUniHan(c: Char) = c.toInt() >= 0x3400 && c.toInt() < 0xA000 - private fun isCyrilic(c: Char) = c.toInt() >= 0x400 && c.toInt() < 0x460 - private fun isFullwidthUni(c: Char) = c.toInt() >= 0xFF00 && c.toInt() < 0xFF20 - private fun isUniPunct(c: Char) = c.toInt() >= 0x2000 && c.toInt() < 0x2070 - private fun isWenQuanYi1(c: Char) = c.toInt() >= 0x33F3 && c.toInt() <= 0x69FC - private fun isWenQuanYi2(c: Char) = c.toInt() >= 0x69FD && c.toInt() <= 0x9FDC - private fun isGreek(c: Char) = c.toInt() >= 0x370 && c.toInt() <= 0x3CE - private fun isRomanian(c: Char) = c.toInt() >= 0x218 && c.toInt() <= 0x21A - private fun isRomanianNarrow(c: Char) = c.toInt() == 0x21B - - - - private fun extAindexX(c: Char) = (c.toInt() - 0x100) % 16 - private fun extAindexY(c: Char) = (c.toInt() - 0x100) / 16 - - private fun kanaIndexX(c: Char) = (c.toInt() - 0x3040) % 16 - private fun kanaIndexY(c: Char) = (c.toInt() - 0x3040) / 16 - - private fun cjkPunctIndexX(c: Char) = (c.toInt() - 0x3000) % 16 - private fun cjkPunctIndexY(c: Char) = (c.toInt() - 0x3000) / 16 - - private fun uniHanIndexX(c: Char) = (c.toInt() - 0x3400) % 256 - private fun uniHanIndexY(c: Char) = (c.toInt() - 0x3400) / 256 - - private fun cyrilicIndexX(c: Char) = (c.toInt() - 0x400) % 16 - private fun cyrilicIndexY(c: Char) = (c.toInt() - 0x400) / 16 - - private fun fullwidthUniIndexX(c: Char) = (c.toInt() - 0xFF00) % 16 - private fun fullwidthUniIndexY(c: Char) = (c.toInt() - 0xFF00) / 16 - - private fun uniPunctIndexX(c: Char) = (c.toInt() - 0x2000) % 16 - private fun uniPunctIndexY(c: Char) = (c.toInt() - 0x2000) / 16 - - private fun wenQuanYiIndexX(c: Char) = - (c.toInt() - if (c.toInt() <= 0x4DB5) 0x33F3 else 0x33F3 + 0x4A) % 32 - private fun wenQuanYi1IndexY(c: Char) = (c.toInt() - (0x33F3 + 0x4A)) / 32 - private fun wenQuanYi2IndexY(c: Char) = (c.toInt() - 0x69FD) / 32 - - private fun greekIndexX(c: Char) = (c.toInt() - 0x370) % 16 - private fun greekIndexY(c: Char) = (c.toInt() - 0x370) / 16 - - private fun romanianIndexX(c: Char) = c.toInt() - 0x218 - private fun romanianIndexY(c: Char) = 0 - - private fun thaiIndexX(c: Char) = (c.toInt() - 0xE00) % 16 - private fun thaiIndexY(c: Char) = (c.toInt() - 0xE00) / 16 - - private fun thaiNarrowIndexX(c: Char) = 3 - private fun thaiNarrowIndexY(c: Char) = 0 - - - private val narrowWidthSheets = arrayOf( - SHEET_EXTB_ROMANIAN_NARROW - ) - private val unihanWidthSheets = arrayOf( - SHEET_UNIHAN, - SHEET_FW_UNI, - SHEET_WENQUANYI_1, - SHEET_WENQUANYI_2 - ) - private val zeroWidthSheets = arrayOf( - SHEET_COLOURCODE - ) - private val variableWidthSheets = arrayOf( - SHEET_ASCII_VARW, - SHEET_CYRILIC_VARW, - SHEET_EXTA_VARW, - SHEET_GREEK_VARW - ) - - - override fun getWidth(s: String) = getWidthSubstr(s, s.length) - - private fun getWidthSubstr(s: String, endIndex: Int): Int { - var len = 0 - for (i in 0..endIndex - 1) { - val chr = s[i] - val ctype = getSheetType(s[i]) - - if (chr.toInt() == 0x21B) // Romanian t; HAX! - len += 6 - else if (variableWidthSheets.contains(ctype)) { - try { - len += asciiWidths[chr.toInt()]!! - } - catch (e: kotlin.KotlinNullPointerException) { - println("KotlinNullPointerException on glyph number ${Integer.toHexString(chr.toInt()).toUpperCase()}") - System.exit(1) - } - } - else if (zeroWidthSheets.contains(ctype)) - len += 0 - else if (narrowWidthSheets.contains(ctype)) - len += W_LATIN_NARROW - else if (ctype == SHEET_CJK_PUNCT) - len += W_ASIAN_PUNCT - else if (ctype == SHEET_HANGUL) - len += W_HANGUL - else if (ctype == SHEET_KANA) - len += W_KANA - else if (unihanWidthSheets.contains(ctype)) - len += W_UNIHAN - else - len += W_LATIN_WIDE - - if (i < endIndex - 1) len += interchar - } - return len * scale - } - - override fun getHeight(s: String) = H * scale - - override fun getLineHeight() = H * scale - - override fun drawString(x: Float, y: Float, s: String) = drawString(x, y, s, Color.white) - - override fun drawString(x: Float, y: Float, s: String, color: Color) { - GL11.glEnable(GL11.GL_BLEND) - GL11.glColorMask(true, true, true, true) - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA) - - var thisCol = color - - // hangul fonts first - //hangulSheet.startUse() // disabling texture binding to make the font coloured - // JOHAB - for (i in 0..s.length - 1) { - val ch = s[i] - - if (isHangul(ch)) { - val hIndex = ch.toInt() - 0xAC00 - - val indexCho = getHanChosung(hIndex) - val indexJung = getHanJungseong(hIndex) - val indexJong = getHanJongseong(hIndex) - - val choRow = getHanInitialRow(hIndex) - val jungRow = getHanMedialRow(hIndex) - val jongRow = getHanFinalRow(hIndex) - - val glyphW = getWidth(ch.toString()) - - hangulSheet.getSubImage(indexCho, choRow).drawWithShadow( - Math.round(x + getWidthSubstr(s, i + 1) - glyphW).toFloat(), - Math.round(((H - H_HANGUL) / 2).toFloat() + y + 1f).toFloat(), - scale.toFloat(), thisCol - ) - hangulSheet.getSubImage(indexJung, jungRow).drawWithShadow( - Math.round(x + getWidthSubstr(s, i + 1) - glyphW).toFloat(), - Math.round(((H - H_HANGUL) / 2).toFloat() + y + 1f).toFloat(), - scale.toFloat(), thisCol - ) - hangulSheet.getSubImage(indexJong, jongRow).drawWithShadow( - Math.round(x + getWidthSubstr(s, i + 1) - glyphW).toFloat(), - Math.round(((H - H_HANGUL) / 2).toFloat() + y + 1f).toFloat(), - scale.toFloat(), thisCol - ) - } - } - //hangulSheet.endUse() - - // unihan fonts - /*uniHan.startUse(); - for (int i = 0; i < s.length(); i++) { - char ch = s.charAt(i); - - if (isUniHan(ch)) { - int glyphW = getWidth("" + ch); - uniHan.renderInUse( - Math.round(x - + getWidthSubstr(s, i + 1) - glyphW - ) - , Math.round((H - H_UNIHAN) / 2 + y) - , uniHanIndexX(ch) - , uniHanIndexY(ch) - ); - } - } - - uniHan.endUse();*/ - - // WenQuanYi 1 - //wenQuanYi_1.startUse() - - for (i in 0..s.length - 1) { - val ch = s[i] - - if (isWenQuanYi1(ch)) { - val glyphW = getWidth("" + ch) - wenQuanYi_1.getSubImage(wenQuanYiIndexX(ch), wenQuanYi1IndexY(ch)).drawWithShadow( - Math.round(x + getWidthSubstr(s, i + 1) - glyphW).toFloat(), - Math.round((H - H_UNIHAN) / 2 + y).toFloat(), - scale.toFloat(), thisCol - ) - } - } - - //wenQuanYi_1.endUse() - // WenQuanYi 2 - //wenQuanYi_2.startUse() - - for (i in 0..s.length - 1) { - val ch = s[i] - - if (isWenQuanYi2(ch)) { - val glyphW = getWidth("" + ch) - wenQuanYi_2.getSubImage(wenQuanYiIndexX(ch), wenQuanYi2IndexY(ch)).drawWithShadow( - Math.round(x + getWidthSubstr(s, i + 1) - glyphW).toFloat(), - Math.round((H - H_UNIHAN) / 2 + y).toFloat(), - scale.toFloat(), thisCol - ) - } - } - - //wenQuanYi_2.endUse() - - // regular fonts - var prevInstance = -1 - for (i in 0..s.length - 1) { - val ch = s[i] - - if (!isHangul(ch) && !isUniHan(ch)) { - - // if not init, endUse first - if (prevInstance != -1) { - //sheetKey[prevInstance].endUse() - } - //sheetKey[getSheetType(ch)].startUse() - prevInstance = getSheetType(ch) - - val sheetX: Int - val sheetY: Int - when (prevInstance) { - SHEET_EXTA_VARW -> { - sheetX = extAindexX(ch) - sheetY = extAindexY(ch) - } - SHEET_KANA -> { - sheetX = kanaIndexX(ch) - sheetY = kanaIndexY(ch) - } - SHEET_CJK_PUNCT -> { - sheetX = cjkPunctIndexX(ch) - sheetY = cjkPunctIndexY(ch) - } - SHEET_CYRILIC_VARW -> { - sheetX = cyrilicIndexX(ch) - sheetY = cyrilicIndexY(ch) - } - SHEET_FW_UNI -> { - sheetX = fullwidthUniIndexX(ch) - sheetY = fullwidthUniIndexY(ch) - } - SHEET_UNI_PUNCT -> { - sheetX = uniPunctIndexX(ch) - sheetY = uniPunctIndexY(ch) - } - SHEET_GREEK_VARW -> { - sheetX = greekIndexX(ch) - sheetY = greekIndexY(ch) - } - SHEET_EXTB_ROMANIAN_WIDE -> { - sheetX = romanianIndexX(ch) - sheetY = romanianIndexY(ch) - } - SHEET_EXTB_ROMANIAN_NARROW -> { - sheetX = 0 - sheetY = 0 - } - else -> { - sheetX = ch.toInt() % 16 - sheetY = ch.toInt() / 16 - } - } - - val glyphW = getWidth("" + ch) - try { - sheetKey[prevInstance]!!.getSubImage(sheetX, sheetY).drawWithShadow( - Math.round(x + getWidthSubstr(s, i + 1) - glyphW).toFloat(), - - // to deal with the height difference of the sheets - Math.round(y).toFloat() + (if (prevInstance == SHEET_CJK_PUNCT) -1 // height hack - else if (prevInstance == SHEET_FW_UNI) (H - H_HANGUL) / 2 // completely legit height adjustment - else 0).toFloat(), - - scale.toFloat(), thisCol - ) - } - catch (e: ArrayIndexOutOfBoundsException) { - // character that does not exist in the sheet. No render, pass. - } - catch (e1: RuntimeException) { - // System.err.println("[GameFontBase] RuntimeException raised while processing character '$ch' (U+${Integer.toHexString(ch.toInt()).toUpperCase()})") - // e1.printStackTrack() - } - } - - } - if (prevInstance != -1) { - //sheetKey[prevInstance].endUse() - } - - GL11.glEnd() - } - - private fun getSheetType(c: Char): Int { - // EFs - if (isRomanianNarrow(c)) - return SHEET_EXTB_ROMANIAN_NARROW - else if (isHangul(c)) - return SHEET_HANGUL - else if (isKana(c)) - return SHEET_KANA - else if (isUniHan(c)) - return SHEET_UNIHAN - else if (isAscii(c)) - return SHEET_ASCII_VARW - else if (isExtA(c)) - return SHEET_EXTA_VARW - else if (isCyrilic(c)) - return SHEET_CYRILIC_VARW - else if (isUniPunct(c)) - return SHEET_UNI_PUNCT - else if (isCJKPunct(c)) - return SHEET_CJK_PUNCT - else if (isFullwidthUni(c)) - return SHEET_FW_UNI - else if (isGreek(c)) - return SHEET_GREEK_VARW - else if (isRomanian(c)) - return SHEET_EXTB_ROMANIAN_WIDE - else - return SHEET_UNKNOWN// fixed width punctuations - // fixed width - // fallback - } - - /** - * Draw part of a string to the screen. Note that this will still position the text as though - * it's part of the bigger string. - * @param x - * * - * @param y - * * - * @param s - * * - * @param color - * * - * @param startIndex - * * - * @param endIndex - */ - override fun drawString(x: Float, y: Float, s: String, color: Color, startIndex: Int, endIndex: Int) { - val unprintedHead = s.substring(0, startIndex) - val printedBody = s.substring(startIndex, endIndex) - val xoff = getWidth(unprintedHead) - drawString(x + xoff, y, printedBody, color) - } - - fun buildWidthTable(sheet: SpriteSheet, codeOffset: Int, codeRange: IntRange, rows: Int = 16) { - fun Byte.toUint() = java.lang.Byte.toUnsignedInt(this) - - /** @return Intarray(R, G, B, A) */ - fun Texture.getPixel(x: Int, y: Int): IntArray { - val textureWidth = this.textureWidth - val hasAlpha = this.hasAlpha() - - val offset = (if (hasAlpha) 4 else 3) * (textureWidth * y + x) // 4: # of channels (RGBA) - - if (ByteOrder.nativeOrder() == ByteOrder.LITTLE_ENDIAN) { - return intArrayOf( - this.textureData[offset].toUint(), - this.textureData[offset + 1].toUint(), - this.textureData[offset + 2].toUint(), - if (hasAlpha) - this.textureData[offset + 3].toUint() - else 255 - ) - } - else { - return intArrayOf( - this.textureData[offset + 2].toUint(), - this.textureData[offset + 1].toUint(), - this.textureData[offset].toUint(), - if (hasAlpha) - this.textureData[offset + 3].toUint() - else 255 - ) - } - } - - val binaryCodeOffset = 15 - - val cellW = sheet.getSubImage(0, 0).width + 1 // should be 16 - val cellH = sheet.getSubImage(0, 0).height + 1 // should be 20 - - // control chars - for (ccode in codeRange) { - val glyphX = ccode % rows - val glyphY = ccode / rows - - val codeStartX = (glyphX * cellW) + binaryCodeOffset - val codeStartY = (glyphY * cellH) - - var glyphWidth = 0 - for (downCtr in 0..3) { - // if alpha is not zero, assume it's 1 - if (sheet.texture.getPixel(codeStartX, codeStartY + downCtr)[3] == 255) { - glyphWidth = glyphWidth or (1 shl downCtr) - } - } - - asciiWidths[codeOffset + ccode] = glyphWidth - } - } - - companion object { - - lateinit internal var hangulSheet: SpriteSheet - lateinit internal var asciiSheet: SpriteSheet - - internal val asciiWidths: HashMap = HashMap() - - lateinit internal var extASheet: SpriteSheet - lateinit internal var kanaSheet: SpriteSheet - lateinit internal var cjkPunct: SpriteSheet - // static SpriteSheet uniHan; - lateinit internal var cyrilic: SpriteSheet - lateinit internal var fullwidthForms: SpriteSheet - lateinit internal var uniPunct: SpriteSheet - lateinit internal var wenQuanYi_1: SpriteSheet - lateinit internal var wenQuanYi_2: SpriteSheet - lateinit internal var greekSheet: SpriteSheet - lateinit internal var romanianSheet: SpriteSheet - lateinit internal var romanianSheetNarrow: SpriteSheet - - internal val JUNG_COUNT = 21 - internal val JONG_COUNT = 28 - - internal val W_ASIAN_PUNCT = 10 - internal val W_HANGUL = 11 - internal val W_KANA = 12 - internal val W_UNIHAN = 16 - internal val W_LATIN_WIDE = 9 // width of regular letters, including m - internal val W_LATIN_NARROW = 5 // width of letter f, t, i, l - - internal val H = 20 - internal val H_HANGUL = 16 - internal val H_UNIHAN = 16 - internal val H_KANA = 20 - - internal val SHEET_ASCII_VARW = 0 - internal val SHEET_HANGUL = 1 - internal val SHEET_EXTA_VARW = 2 - internal val SHEET_KANA = 3 - internal val SHEET_CJK_PUNCT = 4 - internal val SHEET_UNIHAN = 5 - internal val SHEET_CYRILIC_VARW = 6 - internal val SHEET_FW_UNI = 7 - internal val SHEET_UNI_PUNCT = 8 - internal val SHEET_WENQUANYI_1 = 9 - internal val SHEET_WENQUANYI_2 = 10 - internal val SHEET_GREEK_VARW = 11 - internal val SHEET_EXTB_ROMANIAN_WIDE = 12 - internal val SHEET_EXTB_ROMANIAN_NARROW = 13 - - internal val SHEET_UNKNOWN = 254 - internal val SHEET_COLOURCODE = 255 - - lateinit internal var sheetKey: Array - - internal var interchar = 0 - internal var scale = 1 - set(value) { - if (value > 0) field = value - else throw IllegalArgumentException("Font scale cannot be zero or negative (input: $value)") - } - - }// end of companion object -} - -fun Image.drawWithShadow(x: Float, y: Float, color: Color) = - this.drawWithShadow(x, y, 1f, color) - -fun Image.drawWithShadow(x: Float, y: Float, scale: Float, color: Color) { - this.draw(x + 1, y + 1, scale, color.darker(0.5f)) - this.draw(x , y + 1, scale, color.darker(0.5f)) - this.draw(x + 1, y , scale, color.darker(0.5f)) - - this.draw(x, y, scale, color) -} diff --git a/code_for_Slick2d/GameFontImpl.kt b/code_for_Slick2d/GameFontImpl.kt deleted file mode 100644 index a717267..0000000 --- a/code_for_Slick2d/GameFontImpl.kt +++ /dev/null @@ -1,75 +0,0 @@ -package net.torvald.imagefont - -import net.torvald.terrarum.imagefont.GameFontDemo -import org.newdawn.slick.* - -/** - * Created by minjaesong on 16-01-20. - */ -class GameFontImpl : GameFontBase() { - - init { - - GameFontBase.hangulSheet = SpriteSheet( - "./assets/graphics/fonts/hangul_johab.tga", GameFontBase.W_HANGUL, GameFontBase.H_HANGUL) - GameFontBase.asciiSheet = SpriteSheet( - "./assets/graphics/fonts/ascii_variable.tga", 15, 19, 1) - GameFontBase.extASheet = SpriteSheet( - "./assets/graphics/fonts/LatinExtA_variable.tga", 15, 19, 1) - GameFontBase.kanaSheet = SpriteSheet( - "./assets/graphics/fonts/kana.tga", GameFontBase.W_KANA, GameFontBase.H_KANA) - GameFontBase.cjkPunct = SpriteSheet( - "./assets/graphics/fonts/cjkpunct.tga", GameFontBase.W_ASIAN_PUNCT, GameFontBase.H_KANA) - /*uniHan = new SpriteSheet( - "./assets/graphics/fonts/unifont_unihan" - + ((!terrarum.gameLocale.contains("zh")) - ? "_ja" : "") - +".tga" - , W_UNIHAN, H_UNIHAN - );*/ - GameFontBase.cyrilic = SpriteSheet( - when (GameFontDemo.gameLocale.substring(0..1)) { - "bg" -> "./assets/graphics/fonts/cyrilic_bulgarian_variable.tga" - "sr" -> "./assets/graphics/fonts/cyrilic_serbian_variable.tga" - else -> "./assets/graphics/fonts/cyrilic_variable.tga" - }, 15, 19, 1) - GameFontBase.fullwidthForms = SpriteSheet( - "./assets/graphics/fonts/fullwidth_forms.tga", GameFontBase.W_UNIHAN, GameFontBase.H_UNIHAN) - GameFontBase.uniPunct = SpriteSheet( - "./assets/graphics/fonts/unipunct.tga", GameFontBase.W_LATIN_WIDE, GameFontBase.H) - GameFontBase.wenQuanYi_1 = SpriteSheet( - "./assets/graphics/fonts/wenquanyi_11pt_part1.tga", 16, 18, 2) - GameFontBase.wenQuanYi_2 = SpriteSheet( - "./assets/graphics/fonts/wenquanyi_11pt_part2.tga", 16, 18, 2) - GameFontBase.greekSheet = SpriteSheet( - "./assets/graphics/fonts/greek_variable.tga", 15, 19, 1) - GameFontBase.romanianSheet = SpriteSheet( - "./assets/graphics/fonts/romana_wide.tga", GameFontBase.W_LATIN_WIDE, GameFontBase.H) - GameFontBase.romanianSheetNarrow = SpriteSheet( - "./assets/graphics/fonts/romana_narrow.tga", GameFontBase.W_LATIN_NARROW, GameFontBase.H) - - val shk = arrayOf( - GameFontBase.asciiSheet, - GameFontBase.hangulSheet, - GameFontBase.extASheet, - GameFontBase.kanaSheet, - GameFontBase.cjkPunct, - null, // Full unihan, filler because we're using WenQuanYi - GameFontBase.cyrilic, - GameFontBase.fullwidthForms, - GameFontBase.uniPunct, - GameFontBase.wenQuanYi_1, - GameFontBase.wenQuanYi_2, - GameFontBase.greekSheet, - GameFontBase.romanianSheet, - GameFontBase.romanianSheetNarrow - ) - GameFontBase.sheetKey = shk - - - buildWidthTable(asciiSheet, 0, 0..0xFF) - buildWidthTable(extASheet, 0x100, 0..0x7F) - buildWidthTable(cyrilic, 0x400, 0..0x5F) - buildWidthTable(greekSheet, 0x370, 0..0x5F) - } -} diff --git a/code_for_Slick2d/README.md b/code_for_Slick2d/README.md deleted file mode 100644 index fdf461e..0000000 --- a/code_for_Slick2d/README.md +++ /dev/null @@ -1 +0,0 @@ -Font implementations for Slick2d diff --git a/demo/.idea/workspace.xml b/demo/.idea/workspace.xml index 3925769..24a498c 100644 --- a/demo/.idea/workspace.xml +++ b/demo/.idea/workspace.xml @@ -403,7 +403,7 @@ - + diff --git a/font_test_3.PNG b/font_test_3.PNG index dc7a02ea76a803affd1f36eea422d5d0e5e63bd7..a63d4e70645e93f88cf759bc4e23676d1ad618df 100644 GIT binary patch delta 39427 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