Compare commits
333 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
38bdb28b64 | ||
|
|
8ba1a4a005 | ||
|
|
70da6a5142 | ||
|
|
2f6126d0ea | ||
|
|
189a427edc | ||
|
|
21dbf348d0 | ||
|
|
ff455ef2fd | ||
|
|
d7029c3841 | ||
|
|
2d894613df | ||
|
|
60a1da1336 | ||
|
|
123d856853 | ||
|
|
617e0bc5b1 | ||
|
|
0a873b3801 | ||
|
|
3c97253c9a | ||
|
|
f228c331cf | ||
|
|
464ac151bd | ||
|
|
8f70306540 | ||
|
|
28166bb2ec | ||
|
|
ac85217998 | ||
|
|
44b2450fbf | ||
|
|
9221373c53 | ||
|
|
bfaa190e49 | ||
|
|
23c7ae15a2 | ||
|
|
077a832767 | ||
|
|
8c9e912491 | ||
|
|
8a7cf85982 | ||
|
|
bae9af79e9 | ||
|
|
374dc1dd66 | ||
|
|
2812460a9c | ||
|
|
83a885d214 | ||
|
|
0dbb32b575 | ||
|
|
4fea10583c | ||
|
|
ebdb0c499c | ||
|
|
4e6f473b6f | ||
|
|
7fdb7a7a91 | ||
|
|
f8a1c4cfdf | ||
|
|
afa59255cc | ||
|
|
23a5a8997f | ||
|
|
4e705e5c7d | ||
|
|
c57f8e191b | ||
|
|
ed97bafc41 | ||
|
|
eebff767ce | ||
|
|
baee9a62aa | ||
|
|
305dbb548c | ||
|
|
0ccdf67f1e | ||
|
|
60aad1b24d | ||
|
|
e31e088744 | ||
|
|
824f11412d | ||
|
|
1445404005 | ||
|
|
dd851cdbc9 | ||
|
|
7abfb2d2f0 | ||
|
|
5e7237fb17 | ||
|
|
0cba7b96be | ||
|
|
1705b2752e | ||
|
|
4614ffab92 | ||
|
|
225d908f70 | ||
|
|
09e7483389 | ||
|
|
57ab00b6e1 | ||
|
|
23b6be74e2 | ||
|
|
905a235a1b | ||
|
|
d6b1dbd1d6 | ||
|
|
e9c4f0723a | ||
|
|
ac6733469c | ||
|
|
a7ecba905a | ||
|
|
d7c48b1f88 | ||
|
|
0c74660396 | ||
|
|
b3c1327dc4 | ||
|
|
489da04d1d | ||
|
|
a58ad756ff | ||
|
|
702f1b2e2f | ||
|
|
f10413d9c4 | ||
|
|
80aa9d0e52 | ||
|
|
64c13571f9 | ||
|
|
a36c5df477 | ||
|
|
7c3069e8cf | ||
|
|
1e66cfec51 | ||
|
|
1e0a820817 | ||
|
|
4623975858 | ||
|
|
23aac0c1c1 | ||
|
|
54d983013a | ||
|
|
c7507a6357 | ||
|
|
0714581866 | ||
|
|
095b8e65fb | ||
|
|
e60652d705 | ||
|
|
f3aeba3d70 | ||
|
|
ee2b1027b7 | ||
|
|
3b05624de5 | ||
|
|
4c0582184f | ||
|
|
5e6b2363b7 | ||
|
|
dbe93a26eb | ||
|
|
b128312e2c | ||
|
|
07ca429483 | ||
|
|
9675c40216 | ||
|
|
0870856674 | ||
|
|
3c6f18efbf | ||
|
|
2fdc6f85f5 | ||
|
|
4ed2c26b35 | ||
|
|
3ef7410e45 | ||
|
|
ba730fafe3 | ||
|
|
ab925bc8c5 | ||
|
|
b1362f3a3b | ||
|
|
f60eb6b3fc | ||
|
|
88f013a304 | ||
|
|
ea9f8fae4c | ||
|
|
a6363131ac | ||
|
|
fc60356b8b | ||
|
|
755420d5b3 | ||
|
|
0200aa5f85 | ||
|
|
7dff623b75 | ||
|
|
49f5e649b7 | ||
|
|
1656e50c3b | ||
|
|
99a1648734 | ||
|
|
9672aa8e05 | ||
|
|
d72ecb5cfd | ||
|
|
39fccbe6cb | ||
|
|
84efb253cf | ||
|
|
4c63860dc1 | ||
|
|
36acc7e523 | ||
|
|
700397a995 | ||
|
|
dc6bd89497 | ||
|
|
c2ed83d511 | ||
|
|
0a41da1659 | ||
|
|
96e412414a | ||
|
|
483476b5fa | ||
|
|
ed8bcf7dc8 | ||
|
|
376c7cf9a4 | ||
|
|
05d34d563d | ||
|
|
e59db6954a | ||
|
|
9c05fb399b | ||
|
|
40d4bc41c6 | ||
|
|
1f9a79db48 | ||
|
|
0943d38926 | ||
|
|
5469b56841 | ||
|
|
d31730b5c3 | ||
|
|
bd36ee7399 | ||
|
|
b8f5f57878 | ||
|
|
63de646eae | ||
|
|
e70ee44a37 | ||
|
|
6ee66fdccc | ||
|
|
5ecffa1352 | ||
|
|
46efc42e24 | ||
|
|
35829ce982 | ||
|
|
756ef4fae5 | ||
|
|
ce31a5a6ef | ||
|
|
14ea4d8d84 | ||
|
|
f2eb1464f6 | ||
|
|
45b464ee13 | ||
|
|
c3f9ea47fd | ||
|
|
87012d7671 | ||
|
|
1fce4055d7 | ||
|
|
b83dd501fc | ||
|
|
94a40a4a87 | ||
|
|
2fa867ce44 | ||
|
|
4d1a599263 | ||
|
|
8641c95169 | ||
|
|
4f6584ac27 | ||
|
|
cb25c5bf56 | ||
|
|
5c534ed388 | ||
|
|
368bf0ee15 | ||
|
|
c9ccf3e7f8 | ||
|
|
0ced94cb57 | ||
|
|
b158e11e25 | ||
|
|
f4658daa9a | ||
|
|
56b4ccb848 | ||
|
|
2748eeb367 | ||
|
|
8647578802 | ||
|
|
3422c20322 | ||
|
|
4561b06428 | ||
|
|
652f239af3 | ||
|
|
c2428ff7c2 | ||
|
|
2d5e592622 | ||
|
|
3a569a2e2e | ||
|
|
f600764364 | ||
|
|
ab2669b555 | ||
|
|
f43a81de3f | ||
|
|
33ae3fa48a | ||
|
|
12fc3eee03 | ||
|
|
396954e0ee | ||
|
|
d65aaa6da6 | ||
|
|
ae67833cb2 | ||
|
|
4261652bdf | ||
|
|
49d83a297f | ||
|
|
b3a48b23ee | ||
|
|
b802f9b02e | ||
|
|
0afdb9c2cf | ||
|
|
c295430866 | ||
|
|
883375dc9b | ||
|
|
6a1208b45d | ||
|
|
25084b7a94 | ||
|
|
c325c9c30c | ||
|
|
d89409cc73 | ||
|
|
0ff564a192 | ||
|
|
930804cf48 | ||
|
|
699981d9a2 | ||
|
|
947c966660 | ||
|
|
554d9a5d0b | ||
|
|
45e5c39739 | ||
|
|
74e540cb61 | ||
|
|
c1ec50e166 | ||
|
|
58ce18f981 | ||
|
|
f1fa98880f | ||
|
|
0c754d09ed | ||
|
|
b40e4fcc26 | ||
|
|
a7bb33c3a0 | ||
|
|
c3930b2e08 | ||
|
|
979180860e | ||
|
|
61fb70975c | ||
|
|
1af9f7c915 | ||
|
|
810411de7e | ||
|
|
b9bf9ca10d | ||
|
|
526c16daa9 | ||
|
|
e58104d5b5 | ||
|
|
92aeb3c8aa | ||
|
|
3841611780 | ||
|
|
06bc8c9e2d | ||
|
|
21415c6f8d | ||
|
|
22c2a7aa52 | ||
|
|
0eb181f315 | ||
|
|
45b431f953 | ||
|
|
bbee554fec | ||
|
|
c4c67f489e | ||
|
|
4d867d6523 | ||
|
|
6620c11178 | ||
|
|
db06cab07c | ||
|
|
90b11cdd97 | ||
|
|
7bb92d1b4e | ||
|
|
b5dd744bd5 | ||
|
|
34903b10d4 | ||
|
|
0c5b7c8b70 | ||
|
|
cdffca98ef | ||
|
|
ce30d1d5fd | ||
|
|
ab067044f8 | ||
|
|
3e04b8bbe6 | ||
|
|
4556a9e244 | ||
|
|
e5d04de250 | ||
|
|
b7df181729 | ||
|
|
2fd3fcfd46 | ||
|
|
73251d70fa | ||
|
|
971f98beb3 | ||
|
|
abe1da35a0 | ||
|
|
29885f3ac9 | ||
|
|
56d2a98a5b | ||
|
|
43342fff00 | ||
|
|
51d4dec6d3 | ||
|
|
81dc38d242 | ||
|
|
863f9d91c8 | ||
|
|
4c99cca7ff | ||
|
|
b807b96b5f | ||
|
|
91c9a7a99c | ||
|
|
778e2b0afb | ||
|
|
c9055ef7b8 | ||
|
|
e60b95efb8 | ||
|
|
9ca70a601b | ||
|
|
6cacc56ea8 | ||
|
|
6d142f082c | ||
|
|
db3b13800b | ||
|
|
7fe0cc9527 | ||
|
|
b62fee89cb | ||
|
|
d88443814f | ||
|
|
dfeab56bb5 | ||
|
|
b623727b1a | ||
|
|
048b683cb2 | ||
|
|
35b384af53 | ||
|
|
cebfa27d59 | ||
|
|
c57de3a21f | ||
|
|
4ad5e47758 | ||
|
|
f06ed4529c | ||
|
|
8da321bdc2 | ||
|
|
920b11e3e9 | ||
|
|
d8dd88c6a7 | ||
|
|
ba28b6d10c | ||
|
|
50ae1789bf | ||
|
|
bd9784a516 | ||
|
|
0bafde9914 | ||
|
|
b3bfe6035f | ||
|
|
c3cf795e9a | ||
|
|
cefc7860b3 | ||
|
|
b8963cd3a9 | ||
|
|
32290dd504 | ||
|
|
2702f850c2 | ||
|
|
2e10249f27 | ||
|
|
04a375328c | ||
|
|
97ef1ddc27 | ||
|
|
4057d86176 | ||
|
|
654f7b9ac4 | ||
|
|
91afc4af31 | ||
|
|
1440908820 | ||
|
|
4ce58cf5d1 | ||
|
|
620794dc57 | ||
|
|
128eeec6b5 | ||
|
|
33468d5ded | ||
|
|
96e5bb9a7d | ||
|
|
6300b29ab5 | ||
|
|
a0e2cbf756 | ||
|
|
4a36d3e7f1 | ||
|
|
ab0d483cb1 | ||
|
|
cdd0514ca0 | ||
|
|
cf3091421f | ||
|
|
15fb3d15c0 | ||
|
|
45532ca9b7 | ||
|
|
6714bbb510 | ||
|
|
77f2314b24 | ||
|
|
dcd6390dbf | ||
|
|
ecac1dc8af | ||
|
|
b3174171c4 | ||
|
|
a0608bf032 | ||
|
|
c920eb1fe4 | ||
|
|
6cf1206716 | ||
|
|
dca8ed7392 | ||
|
|
55bdaef897 | ||
|
|
2cc9f0ba8c | ||
|
|
496c17276d | ||
|
|
6a54ea1cca | ||
|
|
3b79a5c93f | ||
|
|
f6e2a3b049 | ||
|
|
379c84c22e | ||
|
|
42e4ae298b | ||
|
|
f3b00c83ce | ||
|
|
fdcba3f6e6 | ||
|
|
24cb04cdef | ||
|
|
e47d2c91b1 | ||
|
|
ff0b574c45 | ||
|
|
279ca757d9 | ||
|
|
08d54e13c0 | ||
|
|
5aa6177b50 | ||
|
|
73c4e96359 | ||
|
|
cf1ac67cb0 | ||
|
|
0bb8133764 | ||
|
|
eb114d72f3 | ||
|
|
233d4ad054 | ||
|
|
6852ec1255 | ||
|
|
df51ca165b | ||
|
|
a59655d628 |
13
.gitattributes
vendored
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
*.psd filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.ogg filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tga filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.opus filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.kra filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.png filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.wav filter=lfs diff=lfs merge=lfs -text
|
||||||
|
|
||||||
|
*.tga binary diff=hex
|
||||||
|
*.kra binary diff=hex
|
||||||
12
.gitignore
vendored
Normal file → Executable file
@@ -2,4 +2,14 @@ demo/out/*
|
|||||||
demo/lib/*
|
demo/lib/*
|
||||||
demo/assets/*
|
demo/assets/*
|
||||||
out/*
|
out/*
|
||||||
lib/*
|
lib/*
|
||||||
|
Terrarum-sans-bitmap*.zip
|
||||||
|
TerrarumSansBitmap*.jar
|
||||||
|
Font*.jar
|
||||||
|
tmp_*
|
||||||
|
*~
|
||||||
|
.tmp*
|
||||||
|
tmp_*
|
||||||
|
*.bak
|
||||||
|
*-autosave.kra
|
||||||
|
.directory
|
||||||
|
|||||||
0
.idea/.name
generated
Normal file → Executable file
87
.idea/artifacts/FontDemoGDX.xml
generated
Executable file
@@ -0,0 +1,87 @@
|
|||||||
|
<component name="ArtifactManager">
|
||||||
|
<artifact type="jar" name="FontDemoGDX">
|
||||||
|
<output-path>$PROJECT_DIR$/</output-path>
|
||||||
|
<root id="archive" name="FontDemoGDX.jar">
|
||||||
|
<element id="module-output" name="FontTestGDX" />
|
||||||
|
<element id="directory" name="META-INF">
|
||||||
|
<element id="file-copy" path="$PROJECT_DIR$/FontTestGDX/META-INF/MANIFEST.MF" />
|
||||||
|
</element>
|
||||||
|
<element id="artifact" artifact-name="TerrarumSansBitmap" />
|
||||||
|
<element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-stdlib.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-reflect.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-test.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-stdlib-jdk7.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-stdlib-jdk8.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/jnlp.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-1.10.0.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.2.3.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/jinput-2.0.5.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/jutils-1.0.0.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/jorbis-0.0.17.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/jlayer-1.0.1-gdx.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.2.3.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/TerrarumSansBitmap.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-1.10.0-javadoc.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-1.10.0-sources.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.2.3.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.2.3.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-platform-1.10.0.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.2.3-javadoc.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.2.3-sources.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/jinput-2.0.5-javadoc.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/jinput-2.0.5-sources.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/jutils-1.0.0-javadoc.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/jutils-1.0.0-sources.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.2.3.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/jorbis-0.0.17-javadoc.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/jorbis-0.0.17-sources.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/jlayer-1.0.1-gdx-javadoc.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/jlayer-1.0.1-gdx-sources.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.2.3-javadoc.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.2.3-sources.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-backend-lwjgl3-1.10.0.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.2.3-natives-linux.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.2.3-natives-macos.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.2.3-javadoc.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.2.3-sources.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.2.3-javadoc.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.2.3-sources.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.2.3-natives-windows.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.2.3-javadoc.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.2.3-sources.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.2.3-natives-linux.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.2.3-natives-macos.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.2.3-natives-linux-arm32.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.2.3-natives-linux-arm64.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.2.3-natives-windows-x86.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.2.3-natives-windows.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.2.3-natives-linux.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.2.3-natives-macos.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.2.3-natives-linux.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.2.3-natives-macos.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-backend-lwjgl3-1.10.0-javadoc.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-backend-lwjgl3-1.10.0-sources.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/jinput-platform-2.0.5-natives-osx.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.2.3-natives-linux.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.2.3-natives-macos.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.2.3-natives-windows.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.2.3-natives-windows.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-platform-1.10.0-natives-desktop.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/jinput-platform-2.0.5-natives-linux.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.2.3-natives-linux-arm32.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.2.3-natives-linux-arm64.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.2.3-natives-windows-x86.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.2.3-natives-windows.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/jinput-platform-2.0.5-natives-windows.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.2.3-natives-linux-arm32.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.2.3-natives-linux-arm64.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.2.3-natives-windows-x86.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.2.3-natives-linux-arm32.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.2.3-natives-linux-arm64.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.2.3-natives-windows-x86.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.2.3-natives-linux-arm32.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.2.3-natives-linux-arm64.jar" path-in-jar="/" />
|
||||||
|
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.2.3-natives-windows-x86.jar" path-in-jar="/" />
|
||||||
|
</root>
|
||||||
|
</artifact>
|
||||||
|
</component>
|
||||||
2
.idea/artifacts/TerrarumSansBitmap.xml
generated
Normal file → Executable file
@@ -1,6 +1,6 @@
|
|||||||
<component name="ArtifactManager">
|
<component name="ArtifactManager">
|
||||||
<artifact type="jar" name="TerrarumSansBitmap">
|
<artifact type="jar" name="TerrarumSansBitmap">
|
||||||
<output-path>$PROJECT_DIR$</output-path>
|
<output-path>$PROJECT_DIR$/lib</output-path>
|
||||||
<root id="archive" name="TerrarumSansBitmap.jar">
|
<root id="archive" name="TerrarumSansBitmap.jar">
|
||||||
<element id="module-output" name="BuildJAR_TerrarumSansBitmap" />
|
<element id="module-output" name="BuildJAR_TerrarumSansBitmap" />
|
||||||
<element id="directory" name="META-INF">
|
<element id="directory" name="META-INF">
|
||||||
|
|||||||
9
.idea/codeStyles/Project.xml
generated
Executable file
@@ -0,0 +1,9 @@
|
|||||||
|
<component name="ProjectCodeStyleConfiguration">
|
||||||
|
<code_scheme name="Project" version="173">
|
||||||
|
<codeStyleSettings language="kotlin">
|
||||||
|
<option name="ELSE_ON_NEW_LINE" value="true" />
|
||||||
|
<option name="CATCH_ON_NEW_LINE" value="true" />
|
||||||
|
<option name="FINALLY_ON_NEW_LINE" value="true" />
|
||||||
|
</codeStyleSettings>
|
||||||
|
</code_scheme>
|
||||||
|
</component>
|
||||||
5
.idea/codeStyles/codeStyleConfig.xml
generated
Executable file
@@ -0,0 +1,5 @@
|
|||||||
|
<component name="ProjectCodeStyleConfiguration">
|
||||||
|
<state>
|
||||||
|
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
|
||||||
|
</state>
|
||||||
|
</component>
|
||||||
7
.idea/kotlinc.xml
generated
Executable file
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="KotlinCommonCompilerArguments">
|
||||||
|
<option name="apiVersion" value="1.4" />
|
||||||
|
<option name="languageVersion" value="1.4" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
11
.idea/libraries/KotlinJavaRuntime.xml
generated
@@ -1,12 +1,19 @@
|
|||||||
<component name="libraryTable">
|
<component name="libraryTable">
|
||||||
<library name="KotlinJavaRuntime">
|
<library name="KotlinJavaRuntime">
|
||||||
<CLASSES>
|
<CLASSES>
|
||||||
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-runtime.jar!/" />
|
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-stdlib.jar!/" />
|
||||||
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-reflect.jar!/" />
|
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-reflect.jar!/" />
|
||||||
|
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-test.jar!/" />
|
||||||
|
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-stdlib-jdk7.jar!/" />
|
||||||
|
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-stdlib-jdk8.jar!/" />
|
||||||
</CLASSES>
|
</CLASSES>
|
||||||
<JAVADOC />
|
<JAVADOC />
|
||||||
<SOURCES>
|
<SOURCES>
|
||||||
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-runtime-sources.jar!/" />
|
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-stdlib-sources.jar!/" />
|
||||||
|
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-reflect-sources.jar!/" />
|
||||||
|
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-test-sources.jar!/" />
|
||||||
|
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-stdlib-jdk7-sources.jar!/" />
|
||||||
|
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-stdlib-jdk8-sources.jar!/" />
|
||||||
</SOURCES>
|
</SOURCES>
|
||||||
</library>
|
</library>
|
||||||
</component>
|
</component>
|
||||||
8
.idea/libraries/lib.xml
generated
@@ -4,7 +4,13 @@
|
|||||||
<root url="file://$PROJECT_DIR$/lib" />
|
<root url="file://$PROJECT_DIR$/lib" />
|
||||||
</CLASSES>
|
</CLASSES>
|
||||||
<JAVADOC />
|
<JAVADOC />
|
||||||
<SOURCES />
|
<NATIVE>
|
||||||
|
<root url="file://$PROJECT_DIR$/lib" />
|
||||||
|
</NATIVE>
|
||||||
|
<SOURCES>
|
||||||
|
<root url="file://$PROJECT_DIR$/lib" />
|
||||||
|
</SOURCES>
|
||||||
<jarDirectory url="file://$PROJECT_DIR$/lib" recursive="false" />
|
<jarDirectory url="file://$PROJECT_DIR$/lib" recursive="false" />
|
||||||
|
<jarDirectory url="file://$PROJECT_DIR$/lib" recursive="false" type="SOURCES" />
|
||||||
</library>
|
</library>
|
||||||
</component>
|
</component>
|
||||||
71
.idea/markdown-navigator.xml
generated
Executable file
@@ -0,0 +1,71 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="MarkdownProjectSettings">
|
||||||
|
<PreviewSettings splitEditorLayout="SPLIT" splitEditorPreview="PREVIEW" useGrayscaleRendering="false" zoomFactor="1.0" maxImageWidth="0" showGitHubPageIfSynced="false" allowBrowsingInPreview="false" synchronizePreviewPosition="true" highlightPreviewType="NONE" highlightFadeOut="5" highlightOnTyping="true" synchronizeSourcePosition="true" verticallyAlignSourceAndPreviewSyncPosition="true" showSearchHighlightsInPreview="false" showSelectionInPreview="true">
|
||||||
|
<PanelProvider>
|
||||||
|
<provider providerId="com.vladsch.idea.multimarkdown.editor.swing.html.panel" providerName="Default - Swing" />
|
||||||
|
</PanelProvider>
|
||||||
|
</PreviewSettings>
|
||||||
|
<ParserSettings gitHubSyntaxChange="false">
|
||||||
|
<PegdownExtensions>
|
||||||
|
<option name="ABBREVIATIONS" value="false" />
|
||||||
|
<option name="ANCHORLINKS" value="true" />
|
||||||
|
<option name="ASIDE" value="false" />
|
||||||
|
<option name="ATXHEADERSPACE" value="true" />
|
||||||
|
<option name="AUTOLINKS" value="true" />
|
||||||
|
<option name="DEFINITIONS" value="false" />
|
||||||
|
<option name="DEFINITION_BREAK_DOUBLE_BLANK_LINE" value="false" />
|
||||||
|
<option name="FENCED_CODE_BLOCKS" value="true" />
|
||||||
|
<option name="FOOTNOTES" value="false" />
|
||||||
|
<option name="HARDWRAPS" value="false" />
|
||||||
|
<option name="INSERTED" value="false" />
|
||||||
|
<option name="QUOTES" value="false" />
|
||||||
|
<option name="RELAXEDHRULES" value="true" />
|
||||||
|
<option name="SMARTS" value="false" />
|
||||||
|
<option name="STRIKETHROUGH" value="true" />
|
||||||
|
<option name="SUBSCRIPT" value="false" />
|
||||||
|
<option name="SUPERSCRIPT" value="false" />
|
||||||
|
<option name="SUPPRESS_HTML_BLOCKS" value="false" />
|
||||||
|
<option name="SUPPRESS_INLINE_HTML" value="false" />
|
||||||
|
<option name="TABLES" value="true" />
|
||||||
|
<option name="TASKLISTITEMS" value="true" />
|
||||||
|
<option name="TOC" value="false" />
|
||||||
|
<option name="WIKILINKS" value="true" />
|
||||||
|
</PegdownExtensions>
|
||||||
|
<ParserOptions>
|
||||||
|
<option name="COMMONMARK_LISTS" value="true" />
|
||||||
|
<option name="DUMMY" value="false" />
|
||||||
|
<option name="EMOJI_SHORTCUTS" value="true" />
|
||||||
|
<option name="FLEXMARK_FRONT_MATTER" value="false" />
|
||||||
|
<option name="GFM_LOOSE_BLANK_LINE_AFTER_ITEM_PARA" value="false" />
|
||||||
|
<option name="GFM_TABLE_RENDERING" value="true" />
|
||||||
|
<option name="GITBOOK_URL_ENCODING" value="false" />
|
||||||
|
<option name="GITHUB_EMOJI_URL" value="false" />
|
||||||
|
<option name="GITHUB_LISTS" value="false" />
|
||||||
|
<option name="GITHUB_WIKI_LINKS" value="true" />
|
||||||
|
<option name="JEKYLL_FRONT_MATTER" value="false" />
|
||||||
|
<option name="SIM_TOC_BLANK_LINE_SPACER" value="true" />
|
||||||
|
</ParserOptions>
|
||||||
|
</ParserSettings>
|
||||||
|
<HtmlSettings headerTopEnabled="false" headerBottomEnabled="false" bodyTopEnabled="false" bodyBottomEnabled="false" embedUrlContent="false" addPageHeader="true">
|
||||||
|
<GeneratorProvider>
|
||||||
|
<provider providerId="com.vladsch.idea.multimarkdown.editor.swing.html.generator" providerName="Default Swing HTML Generator" />
|
||||||
|
</GeneratorProvider>
|
||||||
|
<headerTop />
|
||||||
|
<headerBottom />
|
||||||
|
<bodyTop />
|
||||||
|
<bodyBottom />
|
||||||
|
</HtmlSettings>
|
||||||
|
<CssSettings previewScheme="UI_SCHEME" cssUri="" isCssUriEnabled="false" isCssTextEnabled="false" isDynamicPageWidth="true">
|
||||||
|
<StylesheetProvider>
|
||||||
|
<provider providerId="com.vladsch.idea.multimarkdown.editor.swing.html.css" providerName="Default Swing Stylesheet" />
|
||||||
|
</StylesheetProvider>
|
||||||
|
<ScriptProviders />
|
||||||
|
<cssText />
|
||||||
|
</CssSettings>
|
||||||
|
<HtmlExportSettings updateOnSave="false" parentDir="$ProjectFileDir$" targetDir="$ProjectFileDir$" cssDir="" scriptDir="" plainHtml="false" imageDir="" copyLinkedImages="false" imageUniquifyType="0" targetExt="" useTargetExt="false" noCssNoScripts="false" linkToExportedHtml="true" exportOnSettingsChange="true" regenerateOnProjectOpen="false" />
|
||||||
|
<LinkMapSettings>
|
||||||
|
<textMaps />
|
||||||
|
</LinkMapSettings>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
3
.idea/markdown-navigator/profiles_settings.xml
generated
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
<component name="MarkdownNavigator.ProfileManager">
|
||||||
|
<settings default="" pdf-export="" />
|
||||||
|
</component>
|
||||||
70
.idea/misc.xml
generated
Normal file → Executable file
@@ -1,74 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="MarkdownProjectSettings">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8.0_242" project-jdk-type="JavaSDK">
|
||||||
<PreviewSettings splitEditorLayout="SPLIT" splitEditorPreview="PREVIEW" useGrayscaleRendering="false" zoomFactor="1.0" maxImageWidth="0" showGitHubPageIfSynced="false" allowBrowsingInPreview="false" synchronizePreviewPosition="true" highlightPreviewType="NONE" highlightFadeOut="5" highlightOnTyping="true" synchronizeSourcePosition="true" verticallyAlignSourceAndPreviewSyncPosition="true" showSearchHighlightsInPreview="false" showSelectionInPreview="true">
|
|
||||||
<PanelProvider>
|
|
||||||
<provider providerId="com.vladsch.idea.multimarkdown.editor.swing.html.panel" providerName="Default - Swing" />
|
|
||||||
</PanelProvider>
|
|
||||||
</PreviewSettings>
|
|
||||||
<ParserSettings gitHubSyntaxChange="false">
|
|
||||||
<PegdownExtensions>
|
|
||||||
<option name="ABBREVIATIONS" value="false" />
|
|
||||||
<option name="ANCHORLINKS" value="true" />
|
|
||||||
<option name="ASIDE" value="false" />
|
|
||||||
<option name="ATXHEADERSPACE" value="true" />
|
|
||||||
<option name="AUTOLINKS" value="true" />
|
|
||||||
<option name="DEFINITIONS" value="false" />
|
|
||||||
<option name="DEFINITION_BREAK_DOUBLE_BLANK_LINE" value="false" />
|
|
||||||
<option name="FENCED_CODE_BLOCKS" value="true" />
|
|
||||||
<option name="FOOTNOTES" value="false" />
|
|
||||||
<option name="HARDWRAPS" value="false" />
|
|
||||||
<option name="INSERTED" value="false" />
|
|
||||||
<option name="QUOTES" value="false" />
|
|
||||||
<option name="RELAXEDHRULES" value="true" />
|
|
||||||
<option name="SMARTS" value="false" />
|
|
||||||
<option name="STRIKETHROUGH" value="true" />
|
|
||||||
<option name="SUBSCRIPT" value="false" />
|
|
||||||
<option name="SUPERSCRIPT" value="false" />
|
|
||||||
<option name="SUPPRESS_HTML_BLOCKS" value="false" />
|
|
||||||
<option name="SUPPRESS_INLINE_HTML" value="false" />
|
|
||||||
<option name="TABLES" value="true" />
|
|
||||||
<option name="TASKLISTITEMS" value="true" />
|
|
||||||
<option name="TOC" value="false" />
|
|
||||||
<option name="WIKILINKS" value="true" />
|
|
||||||
</PegdownExtensions>
|
|
||||||
<ParserOptions>
|
|
||||||
<option name="COMMONMARK_LISTS" value="true" />
|
|
||||||
<option name="DUMMY" value="false" />
|
|
||||||
<option name="EMOJI_SHORTCUTS" value="true" />
|
|
||||||
<option name="FLEXMARK_FRONT_MATTER" value="false" />
|
|
||||||
<option name="GFM_LOOSE_BLANK_LINE_AFTER_ITEM_PARA" value="false" />
|
|
||||||
<option name="GFM_TABLE_RENDERING" value="true" />
|
|
||||||
<option name="GITBOOK_URL_ENCODING" value="false" />
|
|
||||||
<option name="GITHUB_EMOJI_URL" value="false" />
|
|
||||||
<option name="GITHUB_LISTS" value="false" />
|
|
||||||
<option name="GITHUB_WIKI_LINKS" value="true" />
|
|
||||||
<option name="JEKYLL_FRONT_MATTER" value="false" />
|
|
||||||
<option name="SIM_TOC_BLANK_LINE_SPACER" value="true" />
|
|
||||||
</ParserOptions>
|
|
||||||
</ParserSettings>
|
|
||||||
<HtmlSettings headerTopEnabled="false" headerBottomEnabled="false" bodyTopEnabled="false" bodyBottomEnabled="false" embedUrlContent="false" addPageHeader="true">
|
|
||||||
<GeneratorProvider>
|
|
||||||
<provider providerId="com.vladsch.idea.multimarkdown.editor.swing.html.generator" providerName="Default Swing HTML Generator" />
|
|
||||||
</GeneratorProvider>
|
|
||||||
<headerTop />
|
|
||||||
<headerBottom />
|
|
||||||
<bodyTop />
|
|
||||||
<bodyBottom />
|
|
||||||
</HtmlSettings>
|
|
||||||
<CssSettings previewScheme="UI_SCHEME" cssUri="" isCssUriEnabled="false" isCssTextEnabled="false" isDynamicPageWidth="true">
|
|
||||||
<StylesheetProvider>
|
|
||||||
<provider providerId="com.vladsch.idea.multimarkdown.editor.swing.html.css" providerName="Default Swing Stylesheet" />
|
|
||||||
</StylesheetProvider>
|
|
||||||
<ScriptProviders />
|
|
||||||
<cssText />
|
|
||||||
</CssSettings>
|
|
||||||
<HtmlExportSettings updateOnSave="false" parentDir="$ProjectFileDir$" targetDir="$ProjectFileDir$" cssDir="" scriptDir="" plainHtml="false" imageDir="" copyLinkedImages="false" imageUniquifyType="0" targetExt="" useTargetExt="false" noCssNoScripts="false" linkToExportedHtml="true" exportOnSettingsChange="true" regenerateOnProjectOpen="false" />
|
|
||||||
<LinkMapSettings>
|
|
||||||
<textMaps />
|
|
||||||
</LinkMapSettings>
|
|
||||||
</component>
|
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
|
||||||
<output url="file://$PROJECT_DIR$/out" />
|
<output url="file://$PROJECT_DIR$/out" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
||||||
1
.idea/modules.xml
generated
Normal file → Executable file
@@ -3,6 +3,7 @@
|
|||||||
<component name="ProjectModuleManager">
|
<component name="ProjectModuleManager">
|
||||||
<modules>
|
<modules>
|
||||||
<module fileurl="file://$PROJECT_DIR$/BuildJAR_TerrarumSansBitmap.iml" filepath="$PROJECT_DIR$/BuildJAR_TerrarumSansBitmap.iml" />
|
<module fileurl="file://$PROJECT_DIR$/BuildJAR_TerrarumSansBitmap.iml" filepath="$PROJECT_DIR$/BuildJAR_TerrarumSansBitmap.iml" />
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/FontTestGDX/FontTestGDX.iml" filepath="$PROJECT_DIR$/FontTestGDX/FontTestGDX.iml" />
|
||||||
</modules>
|
</modules>
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
||||||
124
.idea/uiDesigner.xml
generated
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="Palette2">
|
||||||
|
<group name="Swing">
|
||||||
|
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
|
||||||
|
</item>
|
||||||
|
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
|
||||||
|
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
|
||||||
|
<initial-values>
|
||||||
|
<property name="text" value="Button" />
|
||||||
|
</initial-values>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||||
|
<initial-values>
|
||||||
|
<property name="text" value="RadioButton" />
|
||||||
|
</initial-values>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||||
|
<initial-values>
|
||||||
|
<property name="text" value="CheckBox" />
|
||||||
|
</initial-values>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
|
||||||
|
<initial-values>
|
||||||
|
<property name="text" value="Label" />
|
||||||
|
</initial-values>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||||
|
<preferred-size width="150" height="-1" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||||
|
<preferred-size width="150" height="-1" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||||
|
<preferred-size width="150" height="-1" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||||
|
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||||
|
<preferred-size width="150" height="50" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||||
|
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||||
|
<preferred-size width="150" height="50" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||||
|
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||||
|
<preferred-size width="150" height="50" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||||
|
<preferred-size width="150" height="50" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
|
||||||
|
<preferred-size width="150" height="50" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||||
|
<preferred-size width="150" height="50" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||||
|
<preferred-size width="200" height="200" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||||
|
<preferred-size width="200" height="200" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
|
||||||
|
<preferred-size width="-1" height="20" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
|
||||||
|
</item>
|
||||||
|
</group>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
0
.idea/vcs.xml
generated
Normal file → Executable file
718
.idea/workspace.xml
generated
@@ -5,356 +5,90 @@
|
|||||||
<artifact name="TerrarumSansBitmap" />
|
<artifact name="TerrarumSansBitmap" />
|
||||||
</artifacts-to-build>
|
</artifacts-to-build>
|
||||||
</component>
|
</component>
|
||||||
|
<component name="AutoImportSettings">
|
||||||
|
<option name="autoReloadType" value="SELECTIVE" />
|
||||||
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="22c5bc80-996c-4846-b173-7dc8c2096fe3" name="Default" comment="">
|
<list default="true" id="22c5bc80-996c-4846-b173-7dc8c2096fe3" name="Default" comment="">
|
||||||
<change type="DELETED" beforePath="$PROJECT_DIR$/TerrarumSansBitmap.jar" afterPath="" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/artifacts/TerrarumSansBitmap.xml" afterPath="$PROJECT_DIR$/.idea/artifacts/TerrarumSansBitmap.xml" />
|
<change beforePath="$PROJECT_DIR$/FontTestGDX/src/FontTestGDX.kt" beforeDir="false" afterPath="$PROJECT_DIR$/FontTestGDX/src/FontTestGDX.kt" afterDir="false" />
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
|
<change beforePath="$PROJECT_DIR$/assets/cjkpunct.tga" beforeDir="false" afterPath="$PROJECT_DIR$/assets/cjkpunct.tga" afterDir="false" />
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/demo/.idea/workspace.xml" afterPath="$PROJECT_DIR$/demo/.idea/workspace.xml" />
|
<change beforePath="$PROJECT_DIR$/assets/currencies_variable.tga" beforeDir="false" afterPath="$PROJECT_DIR$/assets/currencies_variable.tga" afterDir="false" />
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/net/torvald/terrarumsansbitmap/gdx/GameFontBase.kt" afterPath="$PROJECT_DIR$/src/net/torvald/terrarumsansbitmap/gdx/GameFontBase.kt" />
|
<change beforePath="$PROJECT_DIR$/assets/futhark.tga" beforeDir="false" afterPath="$PROJECT_DIR$/assets/futhark.tga" afterDir="false" />
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/net/torvald/terrarumsansbitmap/slick2d/GameFontBase.kt" afterPath="$PROJECT_DIR$/src/net/torvald/terrarumsansbitmap/slick2d/GameFontBase.kt" />
|
<change beforePath="$PROJECT_DIR$/assets/latinExtC_variable.tga" beforeDir="false" afterPath="$PROJECT_DIR$/assets/latinExtC_variable.tga" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/assets/richtext_furigana.tga" beforeDir="false" afterPath="$PROJECT_DIR$/assets/richtext_furigana.tga" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/assets/typewriter/typewriter_intl_qwerty.tga" beforeDir="false" afterPath="$PROJECT_DIR$/assets/typewriter/typewriter_intl_qwerty.tga" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/assets/typewriter/typewriter_ko_3set-390.tga" beforeDir="false" afterPath="$PROJECT_DIR$/assets/typewriter/typewriter_ko_3set-390.tga" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/assets/wenquanyi.tga.gz" beforeDir="false" afterPath="$PROJECT_DIR$/assets/wenquanyi.tga.gz" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/font_drawing_template.png" beforeDir="false" afterPath="$PROJECT_DIR$/font_drawing_template.png" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/glyph_height_pos_annotation.png" beforeDir="false" afterPath="$PROJECT_DIR$/glyph_height_pos_annotation.png" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/samples/wikipedia_x86.png" beforeDir="false" afterPath="$PROJECT_DIR$/samples/wikipedia_x86.png" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/terrarum_sans_cyrillic_2.png" beforeDir="false" afterPath="$PROJECT_DIR$/terrarum_sans_cyrillic_2.png" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/testing.PNG" beforeDir="false" afterPath="$PROJECT_DIR$/testing.PNG" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/testtext.txt" beforeDir="false" afterPath="$PROJECT_DIR$/testtext.txt" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/width_bit_encoding_annotated.png" beforeDir="false" afterPath="$PROJECT_DIR$/width_bit_encoding_annotated.png" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/work_files/typewriter_input/alphnum_glyphs_master.kra" beforeDir="false" afterPath="$PROJECT_DIR$/work_files/typewriter_input/alphnum_glyphs_master.kra" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/work_files/typewriter_input/alphnum_glyphs_resized.kra" beforeDir="false" afterPath="$PROJECT_DIR$/work_files/typewriter_input/alphnum_glyphs_resized.kra" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/work_files/typewriter_input/hangul_3set_glyphs_master.kra" beforeDir="false" afterPath="$PROJECT_DIR$/work_files/typewriter_input/hangul_3set_glyphs_master.kra" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/work_files/typewriter_input/typewriter_input_template.psd" beforeDir="false" afterPath="$PROJECT_DIR$/work_files/typewriter_input/typewriter_input_template.psd" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/work_files/typewriter_input/typewriter_intl_qwerty.psd" beforeDir="false" afterPath="$PROJECT_DIR$/work_files/typewriter_input/typewriter_intl_qwerty.psd" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/work_files/typewriter_input/typewriter_ko_3set-390.psd" beforeDir="false" afterPath="$PROJECT_DIR$/work_files/typewriter_input/typewriter_ko_3set-390.psd" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/work_files/typewriter_input/typewriter_ko_3set_glyphs_resized.kra" beforeDir="false" afterPath="$PROJECT_DIR$/work_files/typewriter_input/typewriter_ko_3set_glyphs_resized.kra" afterDir="false" />
|
||||||
</list>
|
</list>
|
||||||
<ignored path="$PROJECT_DIR$/out/" />
|
|
||||||
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
|
||||||
<option name="TRACKING_ENABLED" value="true" />
|
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
|
<component name="FileTemplateManagerImpl">
|
||||||
<component name="FileEditorManager">
|
<option name="RECENT_TEMPLATES">
|
||||||
<splitter split-orientation="horizontal" split-proportion="0.5">
|
<list>
|
||||||
<split-first>
|
<option value="Kotlin Class" />
|
||||||
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
<option value="Interface" />
|
||||||
<file leaf-file-name="GameFontBase.kt" pinned="false" current-in-tab="true">
|
<option value="Class" />
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarumsansbitmap/slick2d/GameFontBase.kt">
|
</list>
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
</option>
|
||||||
<state relative-caret-position="5600">
|
|
||||||
<caret line="455" column="22" lean-forward="true" selection-start-line="455" selection-start-column="22" selection-end-line="455" selection-end-column="22" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#1206#3954#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
</leaf>
|
|
||||||
</split-first>
|
|
||||||
<split-second>
|
|
||||||
<leaf>
|
|
||||||
<file leaf-file-name="GameFontBase.kt" pinned="false" current-in-tab="true">
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarumsansbitmap/gdx/GameFontBase.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="602">
|
|
||||||
<caret line="66" column="93" lean-forward="false" selection-start-line="66" selection-start-column="93" selection-end-line="66" selection-end-column="93" />
|
|
||||||
<folding>
|
|
||||||
<element signature="n#!!doc" expanded="true" />
|
|
||||||
<marker date="1498933632357" expanded="true" signature="21660:22104" ph="{...}" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
</leaf>
|
|
||||||
</split-second>
|
|
||||||
</splitter>
|
|
||||||
</component>
|
|
||||||
<component name="FindInProjectRecents">
|
|
||||||
<findStrings>
|
|
||||||
<find>getWidth</find>
|
|
||||||
<find>getG</find>
|
|
||||||
<find>getWidt</find>
|
|
||||||
<find>batch.color =</find>
|
|
||||||
</findStrings>
|
|
||||||
</component>
|
</component>
|
||||||
<component name="Git.Settings">
|
<component name="Git.Settings">
|
||||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||||
</component>
|
</component>
|
||||||
<component name="GradleLocalSettings">
|
<component name="GitSEFilterConfiguration">
|
||||||
<option name="externalProjectsViewState">
|
<file-type-list>
|
||||||
<projects_view />
|
<filtered-out-file-type name="LOCAL_BRANCH" />
|
||||||
</option>
|
<filtered-out-file-type name="REMOTE_BRANCH" />
|
||||||
|
<filtered-out-file-type name="TAG" />
|
||||||
|
<filtered-out-file-type name="COMMIT_BY_MESSAGE" />
|
||||||
|
</file-type-list>
|
||||||
</component>
|
</component>
|
||||||
<component name="IdeDocumentHistory">
|
<component name="MarkdownSettingsMigration">
|
||||||
<option name="CHANGED_PATHS">
|
<option name="stateVersion" value="1" />
|
||||||
<list>
|
|
||||||
<option value="$PROJECT_DIR$/.gitignore" />
|
|
||||||
<option value="$PROJECT_DIR$/lib/slick.jar!/org/newdawn/slick/Color.class" />
|
|
||||||
<option value="$PROJECT_DIR$/src/net/torvald/terrarumsansbitmap/slick2d/GameFontBase.kt" />
|
|
||||||
<option value="$PROJECT_DIR$/src/net/torvald/terrarumsansbitmap/gdx/GameFontBase.kt" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectFrameBounds">
|
<component name="ProjectId" id="1aVE5t6KObkWt36lb07GBy1GY1S" />
|
||||||
<option name="x" value="-8" />
|
<component name="ProjectViewState">
|
||||||
<option name="y" value="-8" />
|
<option name="hideEmptyMiddlePackages" value="true" />
|
||||||
<option name="width" value="1936" />
|
<option name="showLibraryContents" value="true" />
|
||||||
<option name="height" value="1176" />
|
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectView">
|
<component name="PropertiesComponent">{
|
||||||
<navigator currentView="ProjectPane" proportions="" version="1">
|
"keyToString": {
|
||||||
<flattenPackages />
|
"last_opened_file_path": "/home/torvald/Documents/Terrarum-sans-bitmap",
|
||||||
<showMembers />
|
"project.structure.last.edited": "Artifacts",
|
||||||
<showModules />
|
"project.structure.proportion": "0.0",
|
||||||
<showLibraryContents />
|
"project.structure.side.proportion": "0.0"
|
||||||
<hideEmptyPackages />
|
}
|
||||||
<abbreviatePackageNames />
|
}</component>
|
||||||
<autoscrollToSource />
|
<component name="RecentsManager">
|
||||||
<autoscrollFromSource />
|
<key name="MoveFile.RECENT_KEYS">
|
||||||
<sortByType />
|
<recent name="C:\Users\minjaesong\Documents\Terrarum-sans-bitmap\" />
|
||||||
<manualOrder />
|
<recent name="C:\Users\minjaesong\Documents\Terrarum-sans-bitmap" />
|
||||||
<foldersAlwaysOnTop value="true" />
|
<recent name="C:\Users\minjaesong\Documents\Terrarum-sans-bitmap\FontTestGDX\src" />
|
||||||
</navigator>
|
</key>
|
||||||
<panes>
|
|
||||||
<pane id="ProjectPane">
|
|
||||||
<subPane>
|
|
||||||
<PATH>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="BuildJAR_TerrarumSansBitmap" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="Terrarum-sans-bitmap" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
</PATH>
|
|
||||||
<PATH>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="BuildJAR_TerrarumSansBitmap" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="Terrarum-sans-bitmap" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="src" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="terrarumsansbitmap" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
</PATH>
|
|
||||||
<PATH>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="BuildJAR_TerrarumSansBitmap" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="Terrarum-sans-bitmap" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="src" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="terrarumsansbitmap" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="slick2d" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
</PATH>
|
|
||||||
<PATH>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="BuildJAR_TerrarumSansBitmap" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="Terrarum-sans-bitmap" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="src" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="terrarumsansbitmap" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="gdx" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
</PATH>
|
|
||||||
</subPane>
|
|
||||||
</pane>
|
|
||||||
<pane id="Scratches" />
|
|
||||||
<pane id="PackagesPane" />
|
|
||||||
<pane id="Scope" />
|
|
||||||
</panes>
|
|
||||||
</component>
|
</component>
|
||||||
<component name="PropertiesComponent">
|
<component name="RunManager" selected="Kotlin.FontTestGDXKt">
|
||||||
<property name="project.structure.last.edited" value="Artifacts" />
|
<configuration default="true" type="Applet">
|
||||||
<property name="project.structure.proportion" value="0.15" />
|
|
||||||
<property name="project.structure.side.proportion" value="0.32068965" />
|
|
||||||
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
|
|
||||||
</component>
|
|
||||||
<component name="RunDashboard">
|
|
||||||
<option name="ruleStates">
|
|
||||||
<list>
|
|
||||||
<RuleState>
|
|
||||||
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
|
|
||||||
</RuleState>
|
|
||||||
<RuleState>
|
|
||||||
<option name="name" value="StatusDashboardGroupingRule" />
|
|
||||||
</RuleState>
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
<component name="RunManager">
|
|
||||||
<configuration default="true" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" factoryName="Plugin">
|
|
||||||
<module name="" />
|
|
||||||
<option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" />
|
|
||||||
<option name="PROGRAM_PARAMETERS" />
|
|
||||||
<predefined_log_file id="idea.log" enabled="true" />
|
|
||||||
<method />
|
|
||||||
</configuration>
|
|
||||||
<configuration default="true" type="Applet" factoryName="Applet">
|
|
||||||
<option name="HTML_USED" value="false" />
|
|
||||||
<option name="WIDTH" value="400" />
|
|
||||||
<option name="HEIGHT" value="300" />
|
|
||||||
<option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
|
<option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
|
||||||
<module />
|
<method v="2">
|
||||||
<method />
|
<option name="Make" enabled="true" />
|
||||||
</configuration>
|
</method>
|
||||||
<configuration default="true" type="Application" factoryName="Application">
|
|
||||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
|
||||||
<option name="MAIN_CLASS_NAME" />
|
|
||||||
<option name="VM_PARAMETERS" />
|
|
||||||
<option name="PROGRAM_PARAMETERS" />
|
|
||||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
|
||||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
|
||||||
<option name="ALTERNATIVE_JRE_PATH" />
|
|
||||||
<option name="ENABLE_SWING_INSPECTOR" value="false" />
|
|
||||||
<option name="ENV_VARIABLES" />
|
|
||||||
<option name="PASS_PARENT_ENVS" value="true" />
|
|
||||||
<module name="" />
|
|
||||||
<envs />
|
|
||||||
<method />
|
|
||||||
</configuration>
|
|
||||||
<configuration default="true" type="GradleRunConfiguration" factoryName="Gradle">
|
|
||||||
<ExternalSystemSettings>
|
|
||||||
<option name="executionName" />
|
|
||||||
<option name="externalProjectPath" />
|
|
||||||
<option name="externalSystemIdString" value="GRADLE" />
|
|
||||||
<option name="scriptParameters" />
|
|
||||||
<option name="taskDescriptions">
|
|
||||||
<list />
|
|
||||||
</option>
|
|
||||||
<option name="taskNames">
|
|
||||||
<list />
|
|
||||||
</option>
|
|
||||||
<option name="vmOptions" />
|
|
||||||
</ExternalSystemSettings>
|
|
||||||
<method />
|
|
||||||
</configuration>
|
|
||||||
<configuration default="true" type="JUnit" factoryName="JUnit">
|
|
||||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
|
||||||
<module name="" />
|
|
||||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
|
||||||
<option name="ALTERNATIVE_JRE_PATH" />
|
|
||||||
<option name="PACKAGE_NAME" />
|
|
||||||
<option name="MAIN_CLASS_NAME" />
|
|
||||||
<option name="METHOD_NAME" />
|
|
||||||
<option name="TEST_OBJECT" value="class" />
|
|
||||||
<option name="VM_PARAMETERS" value="-ea" />
|
|
||||||
<option name="PARAMETERS" />
|
|
||||||
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
|
|
||||||
<option name="ENV_VARIABLES" />
|
|
||||||
<option name="PASS_PARENT_ENVS" value="true" />
|
|
||||||
<option name="TEST_SEARCH_SCOPE">
|
|
||||||
<value defaultName="singleModule" />
|
|
||||||
</option>
|
|
||||||
<envs />
|
|
||||||
<patterns />
|
|
||||||
<method />
|
|
||||||
</configuration>
|
|
||||||
<configuration default="true" type="JarApplication" factoryName="JAR Application">
|
|
||||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
|
||||||
<envs />
|
|
||||||
<method />
|
|
||||||
</configuration>
|
|
||||||
<configuration default="true" type="Java Scratch" factoryName="Java Scratch">
|
|
||||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
|
||||||
<option name="SCRATCH_FILE_ID" value="0" />
|
|
||||||
<option name="MAIN_CLASS_NAME" />
|
|
||||||
<option name="VM_PARAMETERS" />
|
|
||||||
<option name="PROGRAM_PARAMETERS" />
|
|
||||||
<option name="WORKING_DIRECTORY" />
|
|
||||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
|
||||||
<option name="ALTERNATIVE_JRE_PATH" />
|
|
||||||
<option name="ENABLE_SWING_INSPECTOR" value="false" />
|
|
||||||
<option name="ENV_VARIABLES" />
|
|
||||||
<option name="PASS_PARENT_ENVS" value="true" />
|
|
||||||
<module name="" />
|
|
||||||
<envs />
|
|
||||||
<method />
|
|
||||||
</configuration>
|
|
||||||
<configuration default="true" type="JetRunConfigurationType" factoryName="Kotlin">
|
|
||||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
|
||||||
<option name="MAIN_CLASS_NAME" />
|
|
||||||
<option name="VM_PARAMETERS" />
|
|
||||||
<option name="PROGRAM_PARAMETERS" />
|
|
||||||
<option name="WORKING_DIRECTORY" />
|
|
||||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
|
||||||
<option name="ALTERNATIVE_JRE_PATH" />
|
|
||||||
<option name="PASS_PARENT_ENVS" value="true" />
|
|
||||||
<module name="BuildJAR_TerrarumSansBitmap" />
|
|
||||||
<envs />
|
|
||||||
<method />
|
|
||||||
</configuration>
|
|
||||||
<configuration default="true" type="KotlinStandaloneScriptRunConfigurationType" factoryName="Kotlin script">
|
|
||||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
|
||||||
<option name="filePath" />
|
|
||||||
<option name="vmParameters" />
|
|
||||||
<option name="alternativeJrePath" />
|
|
||||||
<option name="programParameters" />
|
|
||||||
<option name="passParentEnvs" value="true" />
|
|
||||||
<option name="workingDirectory" />
|
|
||||||
<option name="isAlternativeJrePathEnabled" value="false" />
|
|
||||||
<envs />
|
|
||||||
<method />
|
|
||||||
</configuration>
|
|
||||||
<configuration default="true" type="Remote" factoryName="Remote">
|
|
||||||
<option name="USE_SOCKET_TRANSPORT" value="true" />
|
|
||||||
<option name="SERVER_MODE" value="false" />
|
|
||||||
<option name="SHMEM_ADDRESS" value="javadebug" />
|
|
||||||
<option name="HOST" value="localhost" />
|
|
||||||
<option name="PORT" value="5005" />
|
|
||||||
<method />
|
|
||||||
</configuration>
|
|
||||||
<configuration default="true" type="TestNG" factoryName="TestNG">
|
|
||||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
|
||||||
<module name="" />
|
|
||||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
|
||||||
<option name="ALTERNATIVE_JRE_PATH" />
|
|
||||||
<option name="SUITE_NAME" />
|
|
||||||
<option name="PACKAGE_NAME" />
|
|
||||||
<option name="MAIN_CLASS_NAME" />
|
|
||||||
<option name="METHOD_NAME" />
|
|
||||||
<option name="GROUP_NAME" />
|
|
||||||
<option name="TEST_OBJECT" value="CLASS" />
|
|
||||||
<option name="VM_PARAMETERS" value="-ea" />
|
|
||||||
<option name="PARAMETERS" />
|
|
||||||
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
|
|
||||||
<option name="OUTPUT_DIRECTORY" />
|
|
||||||
<option name="ANNOTATION_TYPE" />
|
|
||||||
<option name="ENV_VARIABLES" />
|
|
||||||
<option name="PASS_PARENT_ENVS" value="true" />
|
|
||||||
<option name="TEST_SEARCH_SCOPE">
|
|
||||||
<value defaultName="singleModule" />
|
|
||||||
</option>
|
|
||||||
<option name="USE_DEFAULT_REPORTERS" value="false" />
|
|
||||||
<option name="PROPERTIES_FILE" />
|
|
||||||
<envs />
|
|
||||||
<properties />
|
|
||||||
<listeners />
|
|
||||||
<method />
|
|
||||||
</configuration>
|
</configuration>
|
||||||
<configuration default="true" type="executeSpecs" factoryName="Gauge Execution">
|
<configuration default="true" type="executeSpecs" factoryName="Gauge Execution">
|
||||||
<setting name="environment" value="" />
|
<setting name="environment" value="" />
|
||||||
@@ -369,9 +103,70 @@
|
|||||||
<setting name="rowsRange" value="" />
|
<setting name="rowsRange" value="" />
|
||||||
<method />
|
<method />
|
||||||
</configuration>
|
</configuration>
|
||||||
|
<configuration default="true" type="Application" factoryName="Application">
|
||||||
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
|
<method v="2">
|
||||||
|
<option name="Make" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
<configuration default="true" type="JUnit" factoryName="JUnit">
|
||||||
|
<option name="TEST_OBJECT" value="class" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
|
||||||
|
<method v="2">
|
||||||
|
<option name="Make" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
<configuration name="FontTestGDXKt" type="JetRunConfigurationType" temporary="true">
|
||||||
|
<option name="MAIN_CLASS_NAME" value="FontTestGDXKt" />
|
||||||
|
<module name="FontTestGDX" />
|
||||||
|
<method v="2">
|
||||||
|
<option name="Make" enabled="true" />
|
||||||
|
<option name="BuildArtifacts" enabled="true">
|
||||||
|
<artifact name="TerrarumSansBitmap" />
|
||||||
|
</option>
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
<configuration name="TypewriterGDXKt" type="JetRunConfigurationType" temporary="true" nameIsGenerated="true">
|
||||||
|
<option name="MAIN_CLASS_NAME" value="TypewriterGDXKt" />
|
||||||
|
<module name="FontTestGDX" />
|
||||||
|
<method v="2">
|
||||||
|
<option name="Make" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
<configuration default="true" type="KotlinStandaloneScriptRunConfigurationType">
|
||||||
|
<option name="filePath" />
|
||||||
|
<method v="2">
|
||||||
|
<option name="Make" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
<configuration default="true" type="TestNG">
|
||||||
|
<option name="TEST_OBJECT" value="CLASS" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
|
||||||
|
<properties />
|
||||||
|
<listeners />
|
||||||
|
<method v="2">
|
||||||
|
<option name="Make" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
<configuration default="true" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType">
|
||||||
|
<module name="" />
|
||||||
|
<option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" />
|
||||||
|
<option name="PROGRAM_PARAMETERS" />
|
||||||
|
<predefined_log_file enabled="true" id="idea.log" />
|
||||||
|
<method v="2">
|
||||||
|
<option name="Make" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
<recent_temporary>
|
||||||
|
<list>
|
||||||
|
<item itemvalue="Kotlin.FontTestGDXKt" />
|
||||||
|
<item itemvalue="Kotlin.TypewriterGDXKt" />
|
||||||
|
</list>
|
||||||
|
</recent_temporary>
|
||||||
</component>
|
</component>
|
||||||
<component name="ShelveChangesManager" show_recycled="false">
|
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
||||||
<option name="remove_strategy" value="false" />
|
<component name="SvnConfiguration">
|
||||||
|
<configuration />
|
||||||
</component>
|
</component>
|
||||||
<component name="TaskManager">
|
<component name="TaskManager">
|
||||||
<task active="true" id="Default" summary="Default task">
|
<task active="true" id="Default" summary="Default task">
|
||||||
@@ -383,243 +178,32 @@
|
|||||||
</task>
|
</task>
|
||||||
<servers />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
<component name="ToolWindowManager">
|
<component name="TodoView">
|
||||||
<frame x="-8" y="-8" width="1936" height="1176" extended-state="6" />
|
<todo-panel id="selected-file">
|
||||||
<editor active="true" />
|
<is-autoscroll-to-source value="true" />
|
||||||
<layout>
|
</todo-panel>
|
||||||
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
<todo-panel id="all">
|
||||||
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
<are-packages-shown value="true" />
|
||||||
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3295519" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
<is-autoscroll-to-source value="true" />
|
||||||
<window_info id="Palette	" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
</todo-panel>
|
||||||
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
|
|
||||||
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.12953092" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
|
|
||||||
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
|
|
||||||
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
|
|
||||||
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
|
||||||
</layout>
|
|
||||||
</component>
|
</component>
|
||||||
<component name="VcsContentAnnotationSettings">
|
<component name="Vcs.Log.Tabs.Properties">
|
||||||
<option name="myLimit" value="2678400000" />
|
<option name="TAB_STATES">
|
||||||
|
<map>
|
||||||
|
<entry key="MAIN">
|
||||||
|
<value>
|
||||||
|
<State />
|
||||||
|
</value>
|
||||||
|
</entry>
|
||||||
|
</map>
|
||||||
|
</option>
|
||||||
</component>
|
</component>
|
||||||
<component name="XDebuggerManager">
|
<component name="XSLT-Support.FileAssociations.UIState">
|
||||||
<breakpoint-manager />
|
<expand />
|
||||||
<watches-manager />
|
<select />
|
||||||
</component>
|
</component>
|
||||||
<component name="antWorkspaceConfiguration">
|
<component name="antWorkspaceConfiguration">
|
||||||
<option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
|
<option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
|
||||||
<option name="FILTER_TARGETS" value="false" />
|
<option name="FILTER_TARGETS" value="false" />
|
||||||
</component>
|
</component>
|
||||||
<component name="editorHistoryManager">
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarumsansbitmap/slick2d/GameFontBase.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="112">
|
|
||||||
<caret line="40" column="2" lean-forward="false" selection-start-line="40" selection-start-column="2" selection-end-line="40" selection-end-column="2" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#1206#3954#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarumsansbitmap/gdx/GameFontBase.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="336">
|
|
||||||
<caret line="24" column="14" lean-forward="false" selection-start-line="24" selection-start-column="14" selection-end-line="24" selection-end-column="14" />
|
|
||||||
<folding>
|
|
||||||
<element signature="n#!!doc" expanded="true" />
|
|
||||||
<marker date="1498933632357" expanded="true" signature="21660:22104" ph="{...}" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarumsansbitmap/slick2d/GameFontBase.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="112">
|
|
||||||
<caret line="40" column="2" lean-forward="false" selection-start-line="40" selection-start-column="2" selection-end-line="40" selection-end-column="2" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#1206#3954#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarumsansbitmap/gdx/GameFontBase.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="28">
|
|
||||||
<caret line="24" column="14" lean-forward="false" selection-start-line="24" selection-start-column="14" selection-end-line="24" selection-end-column="14" />
|
|
||||||
<folding>
|
|
||||||
<element signature="n#!!doc" expanded="true" />
|
|
||||||
<marker date="1498933632357" expanded="true" signature="21660:22104" ph="{...}" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarumsansbitmap/slick2d/GameFontBase.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="0">
|
|
||||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#1206#3954#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarumsansbitmap/gdx/GameFontBase.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="504">
|
|
||||||
<caret line="43" column="39" lean-forward="false" selection-start-line="43" selection-start-column="39" selection-end-line="43" selection-end-column="39" />
|
|
||||||
<folding>
|
|
||||||
<element signature="n#!!doc" expanded="true" />
|
|
||||||
<marker date="1498933632357" expanded="true" signature="21660:22104" ph="{...}" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarumsansbitmap/slick2d/GameFontBase.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="0">
|
|
||||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#1206#3954#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarumsansbitmap/gdx/GameFontBase.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="532">
|
|
||||||
<caret line="67" column="39" lean-forward="false" selection-start-line="67" selection-start-column="39" selection-end-line="67" selection-end-column="39" />
|
|
||||||
<folding>
|
|
||||||
<element signature="n#!!doc" expanded="true" />
|
|
||||||
<marker date="1498933632357" expanded="true" signature="21660:22104" ph="{...}" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/.gitignore">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="56">
|
|
||||||
<caret line="4" column="5" lean-forward="false" selection-start-line="4" selection-start-column="5" selection-end-line="4" selection-end-column="5" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="jar://$PROJECT_DIR$/lib/slick.jar!/org/newdawn/slick/Color.class">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="339">
|
|
||||||
<caret line="76" column="11" lean-forward="false" selection-start-line="76" selection-start-column="11" selection-end-line="76" selection-end-column="11" />
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarumsansbitmap/slick2d/GameFontBase.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="5600">
|
|
||||||
<caret line="455" column="22" lean-forward="true" selection-start-line="455" selection-start-column="22" selection-end-line="455" selection-end-column="22" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#1206#3954#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarumsansbitmap/gdx/GameFontBase.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="602">
|
|
||||||
<caret line="66" column="93" lean-forward="false" selection-start-line="66" selection-start-column="93" selection-end-line="66" selection-end-column="93" />
|
|
||||||
<folding>
|
|
||||||
<element signature="n#!!doc" expanded="true" />
|
|
||||||
<marker date="1498933632357" expanded="true" signature="21660:22104" ph="{...}" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</component>
|
|
||||||
<component name="masterDetails">
|
|
||||||
<states>
|
|
||||||
<state key="ArtifactsStructureConfigurable.UI">
|
|
||||||
<settings>
|
|
||||||
<artifact-editor />
|
|
||||||
<last-edited>TerrarumSansBitmap</last-edited>
|
|
||||||
<splitter-proportions>
|
|
||||||
<option name="proportions">
|
|
||||||
<list>
|
|
||||||
<option value="0.32068965" />
|
|
||||||
<option value="0.5" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</splitter-proportions>
|
|
||||||
</settings>
|
|
||||||
</state>
|
|
||||||
<state key="FacetStructureConfigurable.UI">
|
|
||||||
<settings>
|
|
||||||
<last-edited>No facets are configured</last-edited>
|
|
||||||
<splitter-proportions>
|
|
||||||
<option name="proportions">
|
|
||||||
<list>
|
|
||||||
<option value="0.2" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</splitter-proportions>
|
|
||||||
</settings>
|
|
||||||
</state>
|
|
||||||
<state key="GlobalLibrariesConfigurable.UI">
|
|
||||||
<settings>
|
|
||||||
<splitter-proportions>
|
|
||||||
<option name="proportions">
|
|
||||||
<list>
|
|
||||||
<option value="0.2" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</splitter-proportions>
|
|
||||||
</settings>
|
|
||||||
</state>
|
|
||||||
<state key="JdkListConfigurable.UI">
|
|
||||||
<settings>
|
|
||||||
<last-edited>1.8</last-edited>
|
|
||||||
<splitter-proportions>
|
|
||||||
<option name="proportions">
|
|
||||||
<list>
|
|
||||||
<option value="0.2" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</splitter-proportions>
|
|
||||||
</settings>
|
|
||||||
</state>
|
|
||||||
<state key="ModuleStructureConfigurable.UI">
|
|
||||||
<settings>
|
|
||||||
<last-edited>BuildJAR_TerrarumSansBitmap</last-edited>
|
|
||||||
<splitter-proportions>
|
|
||||||
<option name="proportions">
|
|
||||||
<list>
|
|
||||||
<option value="0.32068965" />
|
|
||||||
<option value="0.6" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</splitter-proportions>
|
|
||||||
</settings>
|
|
||||||
</state>
|
|
||||||
<state key="ProjectLibrariesConfigurable.UI">
|
|
||||||
<settings>
|
|
||||||
<last-edited>lib</last-edited>
|
|
||||||
<splitter-proportions>
|
|
||||||
<option name="proportions">
|
|
||||||
<list>
|
|
||||||
<option value="0.32068965" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</splitter-proportions>
|
|
||||||
</settings>
|
|
||||||
</state>
|
|
||||||
</states>
|
|
||||||
</component>
|
|
||||||
</project>
|
</project>
|
||||||
0
BuildJAR_TerrarumSansBitmap.iml
Normal file → Executable file
260
CONTRIBUTING.md
Executable file
@@ -0,0 +1,260 @@
|
|||||||
|
#### Pixel Artists Wanted: for Arabic (all four forms) and other Indian scripts (all the ligatures). Must willing to follow the styles and have a knowledge in Unicode. Your name will be inscribed in the list of contributors.
|
||||||
|
|
||||||
|
You can contribute to the font by fixing wrong glyphs, suggesting better ones, extending character set (letters for other writing systems or filling in the blanks on the existing ones), or code for other game frameworks (not limited to Java). Please leave pull request for that.
|
||||||
|
|
||||||
|
Font Spritesheets are stored in ```assets/graphics/fonts``` directory. Image format must be TGA with Alpha — no PNG. If someone needs PNG, they can batch-convert the font using utils like ImageMagick.
|
||||||
|
|
||||||
|
|
||||||
|
#### Before getting started, you did read our design goals, right? Good. Now you may continue your awesome work.
|
||||||
|
|
||||||
|
## Ascenders, descenders, width informations (aka Glyph Tags)
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Above image is a reference you can use while you draw some letters. Capital B is drawn as a reference. Orange-tinted area is for lowercase, x-height must be the same as that of said tinted area (lowercase Alpha is also drawn for the reference). NOTE THAT x-height is taller than centre bar (capital A is an exception). Height of the ascender of the lowercase letters must be the same as height of capital letters.
|
||||||
|
|
||||||
|
Red-tinted area SHOULD NOT CONTAIN any dots, it's emptied for compatibility. (Slick2d—you can define size of "gaps" of the spritesheet, but you can't define horizontal and vertical gap separately)
|
||||||
|
|
||||||
|
Blue-tinted area cotains width of the glyph in binary, uppermost dot is the Least Significant Bit.
|
||||||
|
|
||||||
|
Green-tinted area contains extra informations, left blank for most cases. We'll call it Glyph Tags.
|
||||||
|
|
||||||
|
Tinted-in-magenta shows the height where diacritics should be placed, for both uppercase and lowercase.
|
||||||
|
|
||||||
|
Each cell is 16 px wide, and any glyph you draw **must be contained within leftside FIFTEEN pixels**.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Font Metrics for variable-width font sheets
|
||||||
|
|
||||||
|
Although the font is basically a Spritesheet, some of the sheet expects variable widths to be supported. Any sheets with ```_variable``` means it expects variable widths. Anything else expects fixed width (regular Spritesheet behaviour). ```cjkpunct``` has width of 10, ```kana``` and ```hangul_johab``` has width of 12, ```wenquanyi``` has width of 16.
|
||||||
|
|
||||||
|
### Parsing Glyph Tags
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Width is encoded in binary bits, on pixels. On the font spritesheet, every glyph has vertical dots on their top-right side (to be exact, every (16k - 1)th pixel on x axis). Above image is a sample of the font, with width information coloured in magenta. From top to bottom, each dot represents 1, 2, 4 and 8. For example, in the above image, ! (exclamation mark) has width of 5, " (double quote) has width of 6, # (octothorp) has width of 8, $ (dollar sign) has width of 9.
|
||||||
|
|
||||||
|
### Glyph Tags
|
||||||
|
|
||||||
|
Rightmost vertical column (should be 20 px tall) contains the tags. Tags are defined as following:
|
||||||
|
|
||||||
|
```
|
||||||
|
(LSB) W -,
|
||||||
|
W |
|
||||||
|
W |= Width of the character
|
||||||
|
W |
|
||||||
|
W -'
|
||||||
|
m --Is this character lowheight?
|
||||||
|
K -,
|
||||||
|
K |= Tags used by the "Keming Machine"
|
||||||
|
K -'
|
||||||
|
Q ---Compiler Directive (see below)
|
||||||
|
n --,
|
||||||
|
Y -, `-Nudging Bits (see below)
|
||||||
|
X |
|
||||||
|
Y |= Diacritics Anchor Points (see below)
|
||||||
|
X -'
|
||||||
|
A -,_ 0 Align 1 Align 0 Align 1 Align before
|
||||||
|
A -' 0 Left 0 Right 1 Centre 1 the glyph
|
||||||
|
D --Diacritics Type Bit (see below; not all diacritics are actually marked as a diacritics on the spritesheet)
|
||||||
|
S -,_ 0 Stack 1 Stack 0 Before 1 Up &
|
||||||
|
(MSB) S -' 0 up 0 down 1 &After 1 Down* (e.g. U+0C48)
|
||||||
|
|
||||||
|
Align Centre and Align Right will respect the diacritics anchor points.
|
||||||
|
The Align Right AND Custom anchor point is being used for Thai diacritics.
|
||||||
|
When a width AND diacritics type bit is set, the entire glyph is shifted to the right as specified and the space of same width will be inserted.
|
||||||
|
(See SUNDANESE PAMINGKAL U+1BA1)
|
||||||
|
|
||||||
|
Up&Down:
|
||||||
|
1. when two pixels are both #00FF00 it's "don't stack"
|
||||||
|
2. otherwise, it's actually up&down
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Nudging Bits Encoding
|
||||||
|
|
||||||
|
<MSB,Red> SXXXXXXX SYYYYYYY 00000000 <LSB,Blue>
|
||||||
|
|
||||||
|
Each X and Y numbers are Signed 8-Bit Integer.
|
||||||
|
|
||||||
|
X-positive: nudges towards left
|
||||||
|
Y-positive: nudges towards up
|
||||||
|
|
||||||
|
#### Diacritics Anchor Point Encoding
|
||||||
|
|
||||||
|
4 Pixels are further divided as follows:
|
||||||
|
|
||||||
|
| LSB | | Red | Green | Blue |
|
||||||
|
| ------------ | ------------ | ------------ | ------------ | ------------ |
|
||||||
|
| Y | Anchor point Y for: | undefined | undefined | undefined |
|
||||||
|
| X | Anchor point X for: | undefined | undefined | undefined |
|
||||||
|
| Y | Anchor point Y for: | (unused) | (unused) | (unused) |
|
||||||
|
| X | Anchor point X for: | Type-0 | Type-1 | Type-2 |
|
||||||
|
| **MSB** | | | | |
|
||||||
|
|
||||||
|
<MSB,Red> 1Y1Y1Y1Y 1Y2Y2Y2Y 1Y3Y3Y3Y <LSB,Blue>
|
||||||
|
<MSB,Red> 1X1X1X1X 1X2X2X2X 1X3X3X3X <LSB,Blue>
|
||||||
|
|
||||||
|
where Red is first, Green is second, Blue is the third diacritics.
|
||||||
|
MSB for each word must be set so that the pixel would appear brighter on the image editor.
|
||||||
|
(the font program will only read low 7 bits for each RGB channel)
|
||||||
|
|
||||||
|
#### Diacritics Type Bit Encoding
|
||||||
|
|
||||||
|
<MSB,Red> FFFFFFFF FFFFFFFF FFFFFFFF <LSB,Blue> (For Type-0)
|
||||||
|
<MSB,Red> TTTT0000 00000000 00000000 <LSB,Blue> (For Type-1 to Type-15)
|
||||||
|
|
||||||
|
Certain types of diacritics have predefined meanings (but some writing systems define their own meaning e.g. Devanagari):
|
||||||
|
|
||||||
|
* Type-0: Above
|
||||||
|
* Type-1: Below (when it should be separated from being above)
|
||||||
|
* Type-2: Overlaid (will shift down 2 pixels for lowheight glyphs instead of the default of 4 pixels)
|
||||||
|
|
||||||
|
|
||||||
|
#### Compiler Directives
|
||||||
|
|
||||||
|
<MSB,Red> [Opcode] [arg1] [arg2] <LSB,Blue>
|
||||||
|
|
||||||
|
Currently supported opcodes:
|
||||||
|
|
||||||
|
*00000000: No-operation; does not use the Compiler Directive system.
|
||||||
|
|
||||||
|
*10000111: Replace a character with maximum 7 subchars.
|
||||||
|
Replacement characters are encoded vertically from X-zero, bit by bit
|
||||||
|
(colour of the pixel doesn't matter) with LSB sitting on Y-zero.
|
||||||
|
|
||||||
|
*11111111: Tagging Used by the Subsystems. e.g. #FF0000 marks invalid combination.
|
||||||
|
|
||||||
|
#### Stack Up/Down
|
||||||
|
|
||||||
|
When the tag is stack-up, it'll be drawn 4 px lower if the underlying
|
||||||
|
character is lowercase.
|
||||||
|
|
||||||
|
#### Align-To-This-X-Pos
|
||||||
|
|
||||||
|
Since this tag does not make sense for diacritics, they will use the value for compeletely different purpose:
|
||||||
|
|
||||||
|
0 : Nothing special
|
||||||
|
1 : Covers previous character; it's neither stack-up nor down.
|
||||||
|
Will be drawn 2 px lower if the underlying character is lowercase
|
||||||
|
2 : Joiner.
|
||||||
|
3..15: undefined
|
||||||
|
|
||||||
|
#### Diacritics That Comes Before and After
|
||||||
|
|
||||||
|
When this tag is set, the font compiler will replace this glyph with two extra code points given in the bitmap.
|
||||||
|
|
||||||
|
To implement those, this two extra code points are needed, which are provided in the Unicode's Reference Chart (www.unicode.org/charts/PDF/Uxxxx.pdf) The code points must be "drawn" in the bitmap, in the same manor as a tagging system. The zeroth column (x = 0) has the "before" character, the first column (x = 1) has the "after". All nineteen pixels (bits) are read by the font, which encompasses U+0000..U+EFFFF
|
||||||
|
|
||||||
|
For working examples, take a note at the bengali sprite sheet.
|
||||||
|
|
||||||
|
This tag can be used as a general "replace this with these" directive, as long as you're replacing it into two letters. This directive is exploited to construct dutch ligature "IJ" (U+0132 and U+0133), in the sheet LatinExtA.
|
||||||
|
|
||||||
|
Also note that the font compiler will not "stack" these diacritics.
|
||||||
|
|
||||||
|
#### The Keming Machine Tags
|
||||||
|
|
||||||
|
Keming Machine Tags define the rough shape of the glyph. Please read `keming_machine.txt` for further information.
|
||||||
|
|
||||||
|
|
||||||
|
#### NOTES
|
||||||
|
- If glyphs are right or centre aligned, they must be aligned in the same way inside of the bitmap; the font compiler assumes every variable-width glyphs to have a width of 15, regardless of the tagged width.
|
||||||
|
- If the diacritic is aligned before the glyph, the diacritic itself is always assumed as left-aligned, as the font compiler will exchange position of said diacritic and the glyph right before it.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
(fun fact: it was drawn on Rhodia memopad with Lamy 2000, then photographed and edited on my iPhone. Letter used is a Cherokee WE Ꮺ)
|
||||||
|
|
||||||
|
## Technical Limitations
|
||||||
|
|
||||||
|
- Each spritesheet is 4096x4096 maximum, which is a size of 4K Texture. However it is recommended to be smaller or equal to 1024x1024.
|
||||||
|
- Glyphs exceeding 15px of width needs to be broken down with 2 or more characters. Wider sheets WILL NOT BE IMPLEMENTED, can't waste much pixels just for few superwide glyphs.
|
||||||
|
- Due to how the compiler is coded, actual glyph must have alpha value of 255, the tags must have alpha values LESS THAN 255 (and obviously greater than zero). RGB plane of the TGA image doesn't do anything, keep it as #FFFFFF white.
|
||||||
|
|
||||||
|
## Implementation of the Korean writing system
|
||||||
|
|
||||||
|
On this font, Hangul letters are printed by assemblying two or three letter pieces. There are 10 sets of Hangul letter pieces on the font. Top 6 are initials, middle 2 are medials, and bottom 2 are finals. On the rightmost side, there's eight assembled glyphs to help you with (assuming you have basic knowledge on the writing system). Top 6 tells you how to use 6 initials, and bottom 2 tells you how to use 2 finals.
|
||||||
|
|
||||||
|
This is a Kotlin-like pseudocode for assembling the glyph:
|
||||||
|
|
||||||
|
// NOTE: this code implements modern Hangul only, in the unicode range of 0xAC00..0xD7A3.
|
||||||
|
// the spritesheet is made to accomodate Johab encoding scheme, but can still be used with the following code.
|
||||||
|
// for the code for full Johab encoding (U+1100.. that includes Old Korean), please refer to the actual code in the repo.
|
||||||
|
|
||||||
|
function getHanChosung(hanIndex: Int) = hanIndex / (21 * 28)
|
||||||
|
function getHanJungseong(hanIndex: Int) = hanIndex / 28 % 21
|
||||||
|
function getHanJongseong(hanIndex: Int) = hanIndex % 28
|
||||||
|
|
||||||
|
jungseongWide = arrayOf(9,13,14,18,19)
|
||||||
|
jungseongComplex = arrayOf(10,11,12,15,16,17,20,23)
|
||||||
|
|
||||||
|
function 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
|
||||||
|
}
|
||||||
|
|
||||||
|
function isJungseongWide(hanIndex: Int) = jungseongWide.contains(getHanJungseong(hanIndex))
|
||||||
|
function isJungseongComplex(hanIndex: Int) = jungseongComplex.contains(getHanJungseong(hanIndex))
|
||||||
|
|
||||||
|
function 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
|
||||||
|
}
|
||||||
|
|
||||||
|
function getHanMedialRow(hanIndex: Int) = if (getHanJongseong(hanIndex) == 0) 6 else 7
|
||||||
|
|
||||||
|
function getHanFinalRow(hanIndex: Int): Int {
|
||||||
|
val jungseongIndex = getHanJungseong(hanIndex)
|
||||||
|
|
||||||
|
return if (jungseongWide.contains(jungseongIndex))
|
||||||
|
8
|
||||||
|
else
|
||||||
|
9
|
||||||
|
}
|
||||||
|
|
||||||
|
function isHangul(c: Char) = c.toInt() >= 0xAC00 && c.toInt() < 0xD7A4
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
for (each Char on the string) {
|
||||||
|
if (isHangul(Char)) {
|
||||||
|
val hIndex = Char.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)
|
||||||
|
|
||||||
|
// get sub image from sprite sheet
|
||||||
|
val choseongImage = hangulSheet.getSubImage(indexCho, choRow)
|
||||||
|
val jungseongImage = hangulSheet.getSubImage(indexJung, jungRow)
|
||||||
|
val jongseongImage = hangulSheet.getSubImage(indexJong, jongRow)
|
||||||
|
|
||||||
|
// actual drawing part
|
||||||
|
draw choseongImage to somewhere you want
|
||||||
|
draw jungseongImage on top of choseongImage
|
||||||
|
draw jongseongImage on top of choseongImage
|
||||||
|
}
|
||||||
|
...
|
||||||
|
}
|
||||||
9
CONTRIBUTORS.txt
Executable file
@@ -0,0 +1,9 @@
|
|||||||
|
Project Maintainer and Programmer
|
||||||
|
|
||||||
|
- minjaesong (Torvald)
|
||||||
|
|
||||||
|
|
||||||
|
This font was not possible without following artists:
|
||||||
|
|
||||||
|
- minjaesong (Torvald)
|
||||||
|
<< Append your name here. If you're getting consistent merge conflicts, push without this and leave a Issue on the GitHub page >>
|
||||||
14
FontTestGDX/FontTestGDX.iml
Executable file
@@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="JAVA_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||||
|
<exclude-output />
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
<orderEntry type="module" module-name="BuildJAR_TerrarumSansBitmap" />
|
||||||
|
<orderEntry type="library" name="KotlinJavaRuntime" level="project" />
|
||||||
|
<orderEntry type="library" name="lib" level="project" />
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
3
FontTestGDX/META-INF/MANIFEST.MF
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
Manifest-Version: 1.0
|
||||||
|
Main-Class: FontTestGDXKt
|
||||||
|
|
||||||
285
FontTestGDX/src/FontTestGDX.kt
Executable file
@@ -0,0 +1,285 @@
|
|||||||
|
import com.badlogic.gdx.*
|
||||||
|
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application
|
||||||
|
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration
|
||||||
|
import com.badlogic.gdx.files.FileHandle
|
||||||
|
import com.badlogic.gdx.graphics.*
|
||||||
|
import com.badlogic.gdx.graphics.g2d.SpriteBatch
|
||||||
|
import com.badlogic.gdx.graphics.glutils.FrameBuffer
|
||||||
|
import com.badlogic.gdx.utils.ScreenUtils
|
||||||
|
import com.badlogic.gdx.utils.StreamUtils
|
||||||
|
import net.torvald.terrarumsansbitmap.gdx.TerrarumSansBitmap
|
||||||
|
import java.io.File
|
||||||
|
import java.io.IOException
|
||||||
|
import java.io.OutputStream
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by minjaesong on 2018-07-26.
|
||||||
|
*/
|
||||||
|
class FontTestGDX : Game() {
|
||||||
|
|
||||||
|
lateinit var font: TerrarumSansBitmap
|
||||||
|
|
||||||
|
lateinit var inputText: List<String>
|
||||||
|
|
||||||
|
lateinit var batch: SpriteBatch
|
||||||
|
|
||||||
|
lateinit var frameBuffer: FrameBuffer
|
||||||
|
|
||||||
|
lateinit var camera: OrthographicCamera
|
||||||
|
|
||||||
|
private val testing = false
|
||||||
|
|
||||||
|
private val demotextName = if (testing) "testtext.txt" else "demotext.txt"
|
||||||
|
private val outimageName = if (testing) "testing.PNG" else "demo.PNG"
|
||||||
|
|
||||||
|
private lateinit var faketex: Texture
|
||||||
|
|
||||||
|
private val lineHeight = 24
|
||||||
|
|
||||||
|
override fun create() {
|
||||||
|
font = TerrarumSansBitmap("./assets", debug = true, flipY = false, errorOnUnknownChar = false, shadowAlpha = 0.5f) // must test for two flipY cases
|
||||||
|
|
||||||
|
val inTextFile = Gdx.files.internal("./$demotextName")
|
||||||
|
val reader = inTextFile.reader("UTF-8")
|
||||||
|
inputText = reader.readLines()
|
||||||
|
reader.close()
|
||||||
|
|
||||||
|
batch = SpriteBatch()
|
||||||
|
|
||||||
|
|
||||||
|
// create faketex
|
||||||
|
val fakepix = Pixmap(1,1,Pixmap.Format.RGBA8888)
|
||||||
|
fakepix.drawPixel(0,0,-1)
|
||||||
|
faketex = Texture(fakepix)
|
||||||
|
fakepix.dispose()
|
||||||
|
|
||||||
|
frameBuffer = FrameBuffer(Pixmap.Format.RGBA8888, TEXW, TEXH, true)
|
||||||
|
|
||||||
|
camera = OrthographicCamera(TEXW.toFloat(), TEXH.toFloat())
|
||||||
|
camera.translate(TEXW.div(2f), 0f)
|
||||||
|
camera.setToOrtho(true, TEXW.toFloat(), TEXH.toFloat())
|
||||||
|
camera.update()
|
||||||
|
|
||||||
|
|
||||||
|
Gdx.input.inputProcessor = Navigator(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getScreen(): Screen? {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
var scrollOffsetY = 0f
|
||||||
|
|
||||||
|
override fun setScreen(screen: Screen?) {
|
||||||
|
}
|
||||||
|
|
||||||
|
var tex: Texture? = null
|
||||||
|
var screenshotExported = false
|
||||||
|
|
||||||
|
private val backcol = Color(.141f, .141f, .141f, 1f)
|
||||||
|
|
||||||
|
override fun render() {
|
||||||
|
|
||||||
|
if (tex == null) {
|
||||||
|
frameBuffer.begin()
|
||||||
|
|
||||||
|
Gdx.gl.glClearColor(.141f, .141f, .141f, 1f)
|
||||||
|
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT)
|
||||||
|
Gdx.gl.glEnable(GL20.GL_TEXTURE_2D)
|
||||||
|
Gdx.gl.glEnable(GL20.GL_BLEND)
|
||||||
|
batch.setBlendFunctionSeparate(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA, GL20.GL_ONE, GL20.GL_ONE_MINUS_SRC_ALPHA) // for not premultiplied textures
|
||||||
|
|
||||||
|
batch.projectionMatrix = camera.combined
|
||||||
|
batch.begin()
|
||||||
|
|
||||||
|
batch.color = backcol
|
||||||
|
batch.draw(faketex, 0f, 0f, TEXW.toFloat(), TEXH.toFloat())
|
||||||
|
batch.flush()
|
||||||
|
|
||||||
|
batch.color = Color.WHITE
|
||||||
|
inputText.forEachIndexed { index, s ->
|
||||||
|
font.draw(batch, s, 10f, TEXH - 30f - index * lineHeight)
|
||||||
|
}
|
||||||
|
|
||||||
|
batch.end()
|
||||||
|
|
||||||
|
|
||||||
|
// dump to file
|
||||||
|
if (!screenshotExported) {
|
||||||
|
val pixmap = ScreenUtils.getFrameBufferPixmap(0, 0, frameBuffer.width, frameBuffer.height)
|
||||||
|
|
||||||
|
PixmapIO.writePNG(Gdx.files.local(outimageName), pixmap)
|
||||||
|
// writeTGA(Gdx.files.local(outimageName), pixmap, false)
|
||||||
|
pixmap.dispose()
|
||||||
|
|
||||||
|
screenshotExported = true
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
frameBuffer.end()
|
||||||
|
|
||||||
|
///////////////
|
||||||
|
|
||||||
|
tex = frameBuffer.colorBufferTexture
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Gdx.gl.glClearColor(.141f, .141f, .141f, 1f)
|
||||||
|
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT)
|
||||||
|
Gdx.gl.glEnable(GL20.GL_TEXTURE_2D)
|
||||||
|
Gdx.gl.glEnable(GL20.GL_BLEND)
|
||||||
|
batch.setBlendFunctionSeparate(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA, GL20.GL_ONE, GL20.GL_ONE_MINUS_SRC_ALPHA) // for not premultiplied textures
|
||||||
|
|
||||||
|
|
||||||
|
batch.begin()
|
||||||
|
batch.color = Color.WHITE
|
||||||
|
batch.draw(tex, 0f, (TEXH.toFloat()/HEIGHT)*TEXH - scrollOffsetY, TEXW.toFloat(), -(TEXH.toFloat() / HEIGHT) * TEXH.toFloat())
|
||||||
|
|
||||||
|
|
||||||
|
batch.end()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun pause() {
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun resume() {
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun resize(width: Int, height: Int) {
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun dispose() {
|
||||||
|
font.dispose()
|
||||||
|
faketex.dispose()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun scrollAdd(x: Int = 1) {
|
||||||
|
scrollOffsetY -= (TEXH.toFloat() / HEIGHT) * lineHeight * x
|
||||||
|
}
|
||||||
|
|
||||||
|
fun scrollSub(x: Int = 1) {
|
||||||
|
scrollOffsetY += (TEXH.toFloat() / HEIGHT) * lineHeight * x
|
||||||
|
}
|
||||||
|
|
||||||
|
class Navigator(val main: FontTestGDX) : InputAdapter() {
|
||||||
|
override fun scrolled(amountX: Float, amountY: Float): Boolean {
|
||||||
|
if (amountY >= 0)
|
||||||
|
main.scrollSub(amountY.toInt())
|
||||||
|
else
|
||||||
|
main.scrollAdd(-amountY.toInt())
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun keyDown(keycode: Int): Boolean {
|
||||||
|
if (keycode == Input.Keys.UP)
|
||||||
|
main.scrollAdd()
|
||||||
|
else if (keycode == Input.Keys.DOWN)
|
||||||
|
main.scrollSub()
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Throws(IOException::class)
|
||||||
|
private fun writeTGA(file: FileHandle, pixmap: Pixmap, flipY: Boolean) {
|
||||||
|
val output = file.write(false)
|
||||||
|
try {
|
||||||
|
_writeTGA(output, pixmap, true, flipY)
|
||||||
|
} finally {
|
||||||
|
StreamUtils.closeQuietly(output)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Throws(IOException::class)
|
||||||
|
private fun _writeTGA(out: OutputStream, pixmap: Pixmap, verbatim: Boolean, flipY: Boolean) {
|
||||||
|
val width: ByteArray = toShortLittle(pixmap.width)
|
||||||
|
val height: ByteArray = toShortLittle(pixmap.height)
|
||||||
|
val zero: ByteArray = toShortLittle(0)
|
||||||
|
out.write(0) // ID field: empty
|
||||||
|
out.write(0) // no colour map, but should be ignored anyway as it being unmapped RGB
|
||||||
|
out.write(2) // 2 means unmapped RGB
|
||||||
|
out.write(byteArrayOf(0, 0, 0, 0, 0)) // color map spec: empty
|
||||||
|
out.write(zero) // x origin: 0
|
||||||
|
out.write(zero) // y origin: 0
|
||||||
|
out.write(width) // width
|
||||||
|
out.write(height) // height
|
||||||
|
out.write(32) // image pixel size: we're writing 32-bit image (8bpp BGRA)
|
||||||
|
out.write(8) // image descriptor: dunno, Photoshop writes 8 in there
|
||||||
|
|
||||||
|
// write actual image data
|
||||||
|
// since we're following Photoshop's conventional header, we also follows Photoshop's
|
||||||
|
// TGA saving scheme, that is:
|
||||||
|
// 1. BGRA order
|
||||||
|
// 2. Y-Flipped but not X-Flipped
|
||||||
|
if (!flipY) {
|
||||||
|
for (y in pixmap.height - 1 downTo 0) {
|
||||||
|
for (x in 0 until pixmap.width) {
|
||||||
|
writeTga(x, y, verbatim, pixmap, out)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (y in 0 until pixmap.height) {
|
||||||
|
for (x in 0 until pixmap.width) {
|
||||||
|
writeTga(x, y, verbatim, pixmap, out)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// write footer
|
||||||
|
// 00 00 00 00 00 00 00 00 TRUEVISION-XFILE 2E 00
|
||||||
|
out.write(byteArrayOf(0, 0, 0, 0, 0, 0, 0, 0))
|
||||||
|
if (verbatim) out.write("TRUEVISION-XFILE".toByteArray()) else out.write("TerrarumHappyTGA".toByteArray())
|
||||||
|
out.write(byteArrayOf(0x2E, 0))
|
||||||
|
out.flush()
|
||||||
|
out.close()
|
||||||
|
}
|
||||||
|
|
||||||
|
private val zeroalpha = byteArrayOf(0, 0, 0, 0)
|
||||||
|
@Throws(IOException::class)
|
||||||
|
private fun writeTga(x: Int, y: Int, verbatim: Boolean, pixmap: Pixmap, out: OutputStream) {
|
||||||
|
val color = pixmap.getPixel(x, y)
|
||||||
|
|
||||||
|
// if alpha == 0, write special value instead
|
||||||
|
if (verbatim && color and 0xFF == 0) {
|
||||||
|
out.write(zeroalpha)
|
||||||
|
} else {
|
||||||
|
out.write(RGBAtoBGRA(color))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun toShortLittle(i: Int): ByteArray {
|
||||||
|
return byteArrayOf(
|
||||||
|
(i and 0xFF).toByte(),
|
||||||
|
(i ushr 8 and 0xFF).toByte()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun RGBAtoBGRA(rgba: Int): ByteArray {
|
||||||
|
return byteArrayOf(
|
||||||
|
(rgba ushr 8 and 0xFF).toByte(),
|
||||||
|
(rgba ushr 16 and 0xFF).toByte(),
|
||||||
|
(rgba ushr 24 and 0xFF).toByte(),
|
||||||
|
(rgba and 0xFF).toByte()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lateinit var appConfig: Lwjgl3ApplicationConfiguration
|
||||||
|
const val TEXW = 874
|
||||||
|
const val TEXH = 24 * 130
|
||||||
|
|
||||||
|
const val WIDTH = TEXW
|
||||||
|
const val HEIGHT = 768
|
||||||
|
|
||||||
|
fun main(args: Array<String>) {
|
||||||
|
appConfig = Lwjgl3ApplicationConfiguration()
|
||||||
|
appConfig.useVsync(false)
|
||||||
|
appConfig.setResizable(false)
|
||||||
|
appConfig.setWindowedMode(WIDTH, HEIGHT)
|
||||||
|
appConfig.setTitle("Terrarum Sans Bitmap Test")
|
||||||
|
|
||||||
|
Lwjgl3Application(FontTestGDX(), appConfig)
|
||||||
|
}
|
||||||
247
FontTestGDX/src/TypewriterGDX.kt
Normal file
@@ -0,0 +1,247 @@
|
|||||||
|
import com.badlogic.gdx.Game
|
||||||
|
import com.badlogic.gdx.Gdx
|
||||||
|
import com.badlogic.gdx.Input
|
||||||
|
import com.badlogic.gdx.InputAdapter
|
||||||
|
import com.badlogic.gdx.audio.AudioDevice
|
||||||
|
import com.badlogic.gdx.audio.Sound
|
||||||
|
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application
|
||||||
|
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration
|
||||||
|
import com.badlogic.gdx.graphics.Color
|
||||||
|
import com.badlogic.gdx.graphics.GL20
|
||||||
|
import com.badlogic.gdx.graphics.OrthographicCamera
|
||||||
|
import com.badlogic.gdx.graphics.g2d.SpriteBatch
|
||||||
|
import com.badlogic.gdx.utils.GdxRuntimeException
|
||||||
|
import net.torvald.terrarum.gamecontroller.InputStrober
|
||||||
|
import net.torvald.terrarumsansbitmap.gdx.CodepointSequence
|
||||||
|
import net.torvald.terrarumtypewriterbitmap.gdx.TerrarumTypewriterBitmap
|
||||||
|
import java.io.StringReader
|
||||||
|
import kotlin.math.roundToInt
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by minjaesong on 2021-11-05.
|
||||||
|
*/
|
||||||
|
class TypewriterGDX(val width: Int, val height: Int, val cols: Int, val hmargin: Int, val vmargin: Int) : Game() {
|
||||||
|
|
||||||
|
lateinit var font: TerrarumTypewriterBitmap
|
||||||
|
lateinit var batch: SpriteBatch
|
||||||
|
// lateinit var frameBuffer: FrameBuffer
|
||||||
|
lateinit var camera: OrthographicCamera
|
||||||
|
|
||||||
|
lateinit var inputStrober: InputStrober
|
||||||
|
|
||||||
|
lateinit var sndMovingkey: Sound
|
||||||
|
lateinit var sndDeadkey: Sound
|
||||||
|
lateinit var sndShiftin: Sound
|
||||||
|
lateinit var sndShiftout: Sound
|
||||||
|
lateinit var sndSpace: Sound
|
||||||
|
lateinit var sndCRs: Array<Sound>
|
||||||
|
lateinit var sndLF: Sound
|
||||||
|
|
||||||
|
override fun create() {
|
||||||
|
font = TerrarumTypewriterBitmap(
|
||||||
|
"./assets/typewriter",
|
||||||
|
StringReader(
|
||||||
|
"""ko_kr_3set-390_typewriter,typewriter_ko_3set-390.tga,16
|
||||||
|
|en_intl_qwerty_typewriter,typewriter_intl_qwerty.tga,0
|
||||||
|
""".trimMargin()
|
||||||
|
),
|
||||||
|
true, false, 256, true
|
||||||
|
)
|
||||||
|
|
||||||
|
batch = SpriteBatch()
|
||||||
|
|
||||||
|
// frameBuffer = FrameBuffer(Pixmap.Format.RGBA8888, TEXW, TEXH, true)
|
||||||
|
|
||||||
|
camera = OrthographicCamera(width.toFloat(), height.toFloat())
|
||||||
|
camera.translate(width.div(2f), 0f)
|
||||||
|
camera.setToOrtho(true, width.toFloat(), height.toFloat())
|
||||||
|
camera.update()
|
||||||
|
|
||||||
|
|
||||||
|
inputStrober = InputStrober(this)
|
||||||
|
|
||||||
|
try {
|
||||||
|
sndMovingkey = Gdx.audio.newSound(Gdx.files.internal("assets/typewriter/audio/movingkey.wav"))
|
||||||
|
sndDeadkey = Gdx.audio.newSound(Gdx.files.internal("assets/typewriter/audio/deadkey.wav"))
|
||||||
|
sndShiftin = Gdx.audio.newSound(Gdx.files.internal("assets/typewriter/audio/shiftin.wav"))
|
||||||
|
sndShiftout = Gdx.audio.newSound(Gdx.files.internal("assets/typewriter/audio/shiftout.wav"))
|
||||||
|
sndSpace = Gdx.audio.newSound(Gdx.files.internal("assets/typewriter/audio/space.wav"))
|
||||||
|
|
||||||
|
sndCRs = Array(6) {
|
||||||
|
Gdx.audio.newSound(Gdx.files.internal("assets/typewriter/audio/cr$it.wav"))
|
||||||
|
}
|
||||||
|
|
||||||
|
sndLF = Gdx.audio.newSound(Gdx.files.internal("assets/typewriter/audio/crlf.wav"))
|
||||||
|
}
|
||||||
|
catch (e: GdxRuntimeException) {
|
||||||
|
e.printStackTrace()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private val intro = listOf(
|
||||||
|
39,50,29, // kva (HANG_GONG)
|
||||||
|
42,31, // nc (HANG_SE)
|
||||||
|
74,48,51, // ;tw (HANG_BEOL)
|
||||||
|
62, // space
|
||||||
|
0x561F71, // shiftin
|
||||||
|
184,164,171,170, // >HON (ASC_3-90)
|
||||||
|
0x561F70, // shiftout
|
||||||
|
62, // space
|
||||||
|
74,48, // ;t (HANG_BEO)
|
||||||
|
43,12, // o5 (HANG_CYU)
|
||||||
|
38,48,51, // jtw (HANG_EOL)
|
||||||
|
0x561F71, // shiftin
|
||||||
|
164, // H (ASC_-)
|
||||||
|
0x561F70, // shiftout
|
||||||
|
75,34, // 'f (HANG_TA)
|
||||||
|
40,34, // lf (HANG_JA)
|
||||||
|
39,32, // kd (HANG_GI)
|
||||||
|
Input.Keys.ENTER,Input.Keys.ENTER
|
||||||
|
)
|
||||||
|
|
||||||
|
private val textbuf: ArrayList<CodepointSequence> = arrayListOf(
|
||||||
|
CodepointSequence()
|
||||||
|
)
|
||||||
|
|
||||||
|
var keylayoutbase = 0xFA000
|
||||||
|
private val printableKeys = ((Input.Keys.NUM_0..Input.Keys.NUM_9) + (Input.Keys.A..Input.Keys.PERIOD) + 62 + (Input.Keys.BACKSPACE..Input.Keys.SLASH)).toHashSet()
|
||||||
|
|
||||||
|
var initDone = false
|
||||||
|
var initTimer = 0f
|
||||||
|
var initTypingCursor = 0
|
||||||
|
var keystrokeDelay = 0.08f
|
||||||
|
|
||||||
|
fun acceptKey(keycode: Int, force: Boolean = false) {
|
||||||
|
if (initDone || force) {
|
||||||
|
// println("[TypewriterGDX] Accepting key: $keycode")
|
||||||
|
|
||||||
|
val lowkeycode = keycode and 127
|
||||||
|
|
||||||
|
if (keycode == Input.Keys.ENTER) {
|
||||||
|
val tbufsize = textbuf.last().size.div(cols.toFloat()).times(6f).coerceIn(0f, 6f).roundToInt() // 0..6
|
||||||
|
textbuf.add(CodepointSequence())
|
||||||
|
if (tbufsize == 0) sndLF.play()
|
||||||
|
else sndCRs[tbufsize - 1].play()
|
||||||
|
} else if (printableKeys.contains(lowkeycode)) {
|
||||||
|
val cp = keycode + keylayoutbase
|
||||||
|
textbuf.last().add(cp)
|
||||||
|
// println("[TypewriterGDX] width: ${font.glyphProps[cp]}")
|
||||||
|
|
||||||
|
// play audio
|
||||||
|
val isDeadkey = font.glyphProps[cp]?.width == 0
|
||||||
|
if (isDeadkey) {
|
||||||
|
sndDeadkey.play()
|
||||||
|
} else if (lowkeycode == Input.Keys.SPACE || lowkeycode == Input.Keys.BACKSPACE) {
|
||||||
|
sndSpace.play()
|
||||||
|
} else {
|
||||||
|
sndMovingkey.play()
|
||||||
|
}
|
||||||
|
} else if (lowkeycode == Input.Keys.SHIFT_LEFT || lowkeycode == Input.Keys.SHIFT_RIGHT) {
|
||||||
|
sndShiftin.play()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For Shift-out only
|
||||||
|
*/
|
||||||
|
fun shiftOut() {
|
||||||
|
sndShiftout.play()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private val textCol = Color(0.1f,0.1f,0.1f,1f)
|
||||||
|
override fun render() {
|
||||||
|
Gdx.gl.glClearColor(0.97f,0.96f,0.95f,1f)
|
||||||
|
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT)
|
||||||
|
Gdx.gl.glEnable(GL20.GL_TEXTURE_2D)
|
||||||
|
Gdx.gl.glEnable(GL20.GL_BLEND)
|
||||||
|
Gdx.gl.glBlendFuncSeparate(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA, GL20.GL_ONE, GL20.GL_ONE)
|
||||||
|
|
||||||
|
batch.projectionMatrix = camera.combined
|
||||||
|
batch.begin()
|
||||||
|
|
||||||
|
batch.color = textCol
|
||||||
|
|
||||||
|
try {
|
||||||
|
textbuf.forEachIndexed { index, s ->
|
||||||
|
font.draw(batch, s, hmargin.toFloat(), vmargin.toFloat() + 20 * index)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (e: ConcurrentModificationException) {}
|
||||||
|
|
||||||
|
batch.end()
|
||||||
|
|
||||||
|
if (!initDone) {
|
||||||
|
while (initTimer > keystrokeDelay) {
|
||||||
|
val keyToType = intro[initTypingCursor]
|
||||||
|
|
||||||
|
if (keyToType < 256) {
|
||||||
|
acceptKey(keyToType, true)
|
||||||
|
}
|
||||||
|
else if (keyToType == 0x561F71) {
|
||||||
|
acceptKey(Input.Keys.SHIFT_LEFT + 128, true)
|
||||||
|
}
|
||||||
|
else if (keyToType == 0x561F70) {
|
||||||
|
shiftOut()
|
||||||
|
}
|
||||||
|
initTypingCursor += 1
|
||||||
|
initTimer -= keystrokeDelay
|
||||||
|
|
||||||
|
if (keyToType == Input.Keys.ENTER)
|
||||||
|
initTimer -= 0.35f
|
||||||
|
else if (keyToType == 0x561F71)
|
||||||
|
initTimer -= 0.15f
|
||||||
|
else if (keyToType == 0x561F70)
|
||||||
|
initTimer -= 0.1f
|
||||||
|
else
|
||||||
|
initTimer -= Math.random().toFloat() * 0.04f
|
||||||
|
}
|
||||||
|
|
||||||
|
initTimer += Gdx.graphics.deltaTime
|
||||||
|
|
||||||
|
if (initTypingCursor >= intro.size) {
|
||||||
|
initDone = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun dispose() {
|
||||||
|
font.dispose()
|
||||||
|
batch.dispose()
|
||||||
|
inputStrober.dispose()
|
||||||
|
sndMovingkey.dispose()
|
||||||
|
sndDeadkey.dispose()
|
||||||
|
sndShiftin.dispose()
|
||||||
|
sndShiftout.dispose()
|
||||||
|
sndSpace.dispose()
|
||||||
|
sndCRs.forEach { it.dispose() }
|
||||||
|
sndLF.dispose()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class TypewriterInput(val main: TypewriterGDX) : InputAdapter() {
|
||||||
|
|
||||||
|
private var shiftIn = false
|
||||||
|
|
||||||
|
override fun keyDown(keycode: Int): Boolean {
|
||||||
|
// FIXME this shiftIn would not work at all...
|
||||||
|
shiftIn = (keycode == Input.Keys.SHIFT_LEFT || keycode == Input.Keys.SHIFT_RIGHT)
|
||||||
|
if (keycode < 128 && keycode != Input.Keys.SHIFT_LEFT && keycode != Input.Keys.SHIFT_RIGHT) {
|
||||||
|
main.acceptKey(shiftIn.toInt() * 128 + keycode)
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun Boolean.toInt() = if (this) 1 else 0
|
||||||
|
}
|
||||||
|
|
||||||
|
fun main(args: Array<String>) {
|
||||||
|
appConfig = Lwjgl3ApplicationConfiguration()
|
||||||
|
appConfig.useVsync(false)
|
||||||
|
appConfig.setResizable(false)
|
||||||
|
appConfig.setWindowedMode(534, 668)
|
||||||
|
appConfig.setTitle("Terrarum Typewriter Bitmap Test")
|
||||||
|
|
||||||
|
Lwjgl3Application(TypewriterGDX(534, 668, 64, 32, 24), appConfig)
|
||||||
|
}
|
||||||
@@ -0,0 +1,401 @@
|
|||||||
|
package net.torvald.terrarum.gamecontroller
|
||||||
|
|
||||||
|
import TypewriterGDX
|
||||||
|
import com.badlogic.gdx.Gdx
|
||||||
|
import com.badlogic.gdx.Input
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by minjaesong on 2021-11-06.
|
||||||
|
*/
|
||||||
|
class InputStrober(val typewriter: TypewriterGDX) {
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
const val KEY_DOWN = 0
|
||||||
|
const val KEY_CHANGE = 1
|
||||||
|
const val N_KEY_ROLLOVER = 8
|
||||||
|
}
|
||||||
|
|
||||||
|
var KEYBOARD_DELAYS = longArrayOf(0L,250000000L,0L,25000000L,0L)
|
||||||
|
private var stroboTime = 0L
|
||||||
|
private var stroboStatus = 0
|
||||||
|
private var repeatCount = 0
|
||||||
|
private var oldKeys = IntArray(N_KEY_ROLLOVER) { 0 }
|
||||||
|
/** always Low Layer */
|
||||||
|
// private var keymap = IME.getLowLayerByName(App.getConfigString("basekeyboardlayout"))
|
||||||
|
|
||||||
|
private val thread = Thread { while (!Thread.interrupted()) {
|
||||||
|
if (Gdx.input != null) withKeyboardEvent()
|
||||||
|
} }
|
||||||
|
|
||||||
|
init {
|
||||||
|
// println("InputStrobe start")
|
||||||
|
thread.start()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun dispose() {
|
||||||
|
thread.interrupt()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun resetKeyboardStrobo() {
|
||||||
|
stroboStatus = 0
|
||||||
|
repeatCount = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// code proudly stolen from tsvm's TVDOS.SYS
|
||||||
|
private fun withKeyboardEvent() {
|
||||||
|
val keys = strobeKeys()
|
||||||
|
var keyChanged = !arrayEq(keys, oldKeys)
|
||||||
|
val keyDiff = arrayDiff(keys, oldKeys)
|
||||||
|
|
||||||
|
// println("Key strobed: ${keys.joinToString()}")
|
||||||
|
|
||||||
|
if (stroboStatus % 2 == 0 && (keys[0] != 0 || oldKeys[0] != 0)) {
|
||||||
|
stroboStatus += 1
|
||||||
|
stroboTime = System.nanoTime()
|
||||||
|
repeatCount += 1
|
||||||
|
|
||||||
|
val shiftin = keys.contains(Input.Keys.SHIFT_LEFT) || keys.contains(Input.Keys.SHIFT_RIGHT)
|
||||||
|
val newKeysym0 = keysToStr(keyDiff)
|
||||||
|
|
||||||
|
val newKeysym = if (newKeysym0 == null) null
|
||||||
|
else if (shiftin && newKeysym0.size > 1 && newKeysym0[1]?.isNotBlank() == true) newKeysym0[1]
|
||||||
|
else newKeysym0[0]
|
||||||
|
|
||||||
|
val headKeyCode = (if (keyDiff.size < 1) keys[0] else keyDiff[0]).and(127) or (if (shiftin) 128 else 0)
|
||||||
|
|
||||||
|
if (repeatCount == 1) {
|
||||||
|
if (!keyChanged) {
|
||||||
|
// println("KEY_DOWN '$keysym' ($headKeyCode) $repeatCount; ${keys.joinToString()}")
|
||||||
|
// App.inputStrobed(TerrarumKeyboardEvent(KEY_DOWN, keysym, headKeyCode, repeatCount, keys))
|
||||||
|
typewriter.acceptKey(headKeyCode)
|
||||||
|
} else if (newKeysym != null) {
|
||||||
|
// println("KEY_DOWC '$newKeysym' ($headKeyCode) $repeatCount; ${keys.joinToString()}")
|
||||||
|
// App.inputStrobed(TerrarumKeyboardEvent(KEY_DOWN, newKeysym, headKeyCode, repeatCount, keys))
|
||||||
|
typewriter.acceptKey(headKeyCode)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// println("shiftin=${shiftin} oldkeys=${oldKeys.joinToString()}")
|
||||||
|
|
||||||
|
if (!shiftin && (oldKeys.contains(Input.Keys.SHIFT_LEFT) || oldKeys.contains(Input.Keys.SHIFT_RIGHT))) {
|
||||||
|
typewriter.shiftOut()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
oldKeys = keys // don't put this outside of if-cascade
|
||||||
|
}
|
||||||
|
else if (keyChanged || keys[0] == 0) {
|
||||||
|
stroboStatus = 0
|
||||||
|
repeatCount = 0
|
||||||
|
|
||||||
|
if (keys[0] == 0) keyChanged = false
|
||||||
|
}
|
||||||
|
else if (stroboStatus % 2 == 1 && System.nanoTime() - stroboTime < KEYBOARD_DELAYS[stroboStatus]) {
|
||||||
|
Thread.sleep(1L)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
stroboStatus += 1
|
||||||
|
if (stroboStatus >= 4)
|
||||||
|
stroboStatus = 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun keysToStr(keys: IntArray): Array<String?>? {
|
||||||
|
if (keys.isEmpty()) return null
|
||||||
|
val headkey = keys[0]
|
||||||
|
return keymap[headkey]
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun strobeKeys(): IntArray {
|
||||||
|
var keysPushed = 0
|
||||||
|
val keyEventBuffers = IntArray(N_KEY_ROLLOVER) { 0 }
|
||||||
|
for (k in 1..254) {
|
||||||
|
if (Gdx.input.isKeyPressed(k)) {
|
||||||
|
keyEventBuffers[keysPushed] = k
|
||||||
|
keysPushed += 1
|
||||||
|
}
|
||||||
|
|
||||||
|
if (keysPushed >= N_KEY_ROLLOVER) break
|
||||||
|
}
|
||||||
|
return keyEventBuffers
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun arrayEq(a: IntArray, b: IntArray): Boolean {
|
||||||
|
for (i in a.indices) {
|
||||||
|
if (a[i] != b.getOrNull(i)) return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun arrayDiff(a: IntArray, b: IntArray): IntArray {
|
||||||
|
return a.filter { !b.contains(it) }.toIntArray()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private val keymap = arrayOf(arrayOf<String?>(""),arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>("<HOME>"),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>("<CALL>"),
|
||||||
|
arrayOf<String?>("<ENDCALL>"),
|
||||||
|
arrayOf<String?>("0",")"),
|
||||||
|
arrayOf<String?>("1","!"),
|
||||||
|
arrayOf<String?>("2","@"),
|
||||||
|
arrayOf<String?>("3","#"),
|
||||||
|
arrayOf<String?>("4","$"),
|
||||||
|
arrayOf<String?>("5","%"),
|
||||||
|
arrayOf<String?>("6","^"),
|
||||||
|
arrayOf<String?>("7","&"),
|
||||||
|
arrayOf<String?>("8","*"),
|
||||||
|
arrayOf<String?>("9","("),
|
||||||
|
arrayOf<String?>("*"),
|
||||||
|
arrayOf<String?>("#"),
|
||||||
|
arrayOf<String?>("<UP>"),
|
||||||
|
arrayOf<String?>("<DOWN>"),
|
||||||
|
arrayOf<String?>("<LEFT>"),
|
||||||
|
arrayOf<String?>("<RIGHT>"),
|
||||||
|
arrayOf<String?>("<CENTER>"),
|
||||||
|
arrayOf<String?>("<VOL_UP>"),
|
||||||
|
arrayOf<String?>("<VOL_DOWN>"),
|
||||||
|
arrayOf<String?>("<POWER>"),
|
||||||
|
arrayOf<String?>("<CAMERA>"),
|
||||||
|
arrayOf<String?>("<CLEAR>"),
|
||||||
|
arrayOf<String?>("a","A"),
|
||||||
|
arrayOf<String?>("b","B"),
|
||||||
|
arrayOf<String?>("c","C"),
|
||||||
|
arrayOf<String?>("d","D"),
|
||||||
|
arrayOf<String?>("e","E"),
|
||||||
|
arrayOf<String?>("f","F"),
|
||||||
|
arrayOf<String?>("g","G"),
|
||||||
|
arrayOf<String?>("h","H"),
|
||||||
|
arrayOf<String?>("i","I"),
|
||||||
|
arrayOf<String?>("j","J"),
|
||||||
|
arrayOf<String?>("k","K"),
|
||||||
|
arrayOf<String?>("l","L"),
|
||||||
|
arrayOf<String?>("m","M"),
|
||||||
|
arrayOf<String?>("n","N"),
|
||||||
|
arrayOf<String?>("o","O"),
|
||||||
|
arrayOf<String?>("p","P"),
|
||||||
|
arrayOf<String?>("q","Q"),
|
||||||
|
arrayOf<String?>("r","R"),
|
||||||
|
arrayOf<String?>("s","S"),
|
||||||
|
arrayOf<String?>("t","T"),
|
||||||
|
arrayOf<String?>("u","U"),
|
||||||
|
arrayOf<String?>("v","V"),
|
||||||
|
arrayOf<String?>("w","W"),
|
||||||
|
arrayOf<String?>("x","X"),
|
||||||
|
arrayOf<String?>("y","Y"),
|
||||||
|
arrayOf<String?>("z","Z"),
|
||||||
|
arrayOf<String?>(",","<"),
|
||||||
|
arrayOf<String?>(".",">"),
|
||||||
|
arrayOf<String?>("<ALT_L>"),
|
||||||
|
arrayOf<String?>("<ALT_R>"),
|
||||||
|
arrayOf<String?>("<SHIFT_L>"),
|
||||||
|
arrayOf<String?>("<SHIFT_R>"),
|
||||||
|
arrayOf<String?>("<TAB>"),
|
||||||
|
arrayOf<String?>(" "),
|
||||||
|
arrayOf<String?>("<SYM>"),
|
||||||
|
arrayOf<String?>("<EXPLORER>"),
|
||||||
|
arrayOf<String?>("<ENVELOPE>"),
|
||||||
|
arrayOf<String?>("\n"),
|
||||||
|
arrayOf<String?>("\u0008"),
|
||||||
|
arrayOf<String?>("`","~"),
|
||||||
|
arrayOf<String?>("-","_"),
|
||||||
|
arrayOf<String?>("=","+"),
|
||||||
|
arrayOf<String?>("arrayOf<String?>(","{"),
|
||||||
|
arrayOf<String?>(")","}"),
|
||||||
|
arrayOf<String?>("\\","|"),
|
||||||
|
arrayOf<String?>(";",":"),
|
||||||
|
arrayOf<String?>("'","\""),
|
||||||
|
arrayOf<String?>("/","?"),
|
||||||
|
arrayOf<String?>("<AT>"),
|
||||||
|
arrayOf<String?>("<NUM_LOCK>"),
|
||||||
|
arrayOf<String?>("<HEADSETHOOK>"),
|
||||||
|
arrayOf<String?>("<FOCUS>"),
|
||||||
|
arrayOf<String?>("+"),
|
||||||
|
arrayOf<String?>("<MENU>"),
|
||||||
|
arrayOf<String?>("<NOTIFICATION>"),
|
||||||
|
arrayOf<String?>("<SEARCH>"),
|
||||||
|
arrayOf<String?>("<PLAY_PAUSE>"),
|
||||||
|
arrayOf<String?>("<STOP>"),
|
||||||
|
arrayOf<String?>("<NEXT>"),
|
||||||
|
arrayOf<String?>("<PREV>"),
|
||||||
|
arrayOf<String?>("<REW>"),
|
||||||
|
arrayOf<String?>("<FFWD>"),
|
||||||
|
arrayOf<String?>("<MUTE>"),
|
||||||
|
arrayOf<String?>("<PAGE_UP>"),
|
||||||
|
arrayOf<String?>("<PAGE_DOWN>"),
|
||||||
|
arrayOf<String?>("<PICTSYMBOLS>"),
|
||||||
|
arrayOf<String?>("<SW:>TCH_CHARSET>"),
|
||||||
|
arrayOf<String?>("<:A:>"),
|
||||||
|
arrayOf<String?>("<:B:>"),
|
||||||
|
arrayOf<String?>("<:C:>"),
|
||||||
|
arrayOf<String?>("<:X:>"),
|
||||||
|
arrayOf<String?>("<:Y:>"),
|
||||||
|
arrayOf<String?>("<:Z:>"),
|
||||||
|
arrayOf<String?>("<:L1:>"),
|
||||||
|
arrayOf<String?>("<:R1:>"),
|
||||||
|
arrayOf<String?>("<:L2:>"),
|
||||||
|
arrayOf<String?>("<:R2:>"),
|
||||||
|
arrayOf<String?>("<:TL:>"),
|
||||||
|
arrayOf<String?>("<:TR:>"),
|
||||||
|
arrayOf<String?>("<:START:>"),
|
||||||
|
arrayOf<String?>("<:SELECT:>"),
|
||||||
|
arrayOf<String?>("<:MODE:>"),
|
||||||
|
arrayOf<String?>("<ESC>"),
|
||||||
|
arrayOf<String?>("<DEL>"),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>("<CAPS_LOCK>"),
|
||||||
|
arrayOf<String?>("<SCROLL_LOCK>"),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>("<PRINT_SCREEN_SYS_RQ>"),
|
||||||
|
arrayOf<String?>("<PAUSE_BREAK>"),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>("<END>"),
|
||||||
|
arrayOf<String?>("<INSERT>"),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>("<CTRL_L>"),
|
||||||
|
arrayOf<String?>("<CTRL_R>"),
|
||||||
|
arrayOf<String?>("<F1>"),
|
||||||
|
arrayOf<String?>("<F2>"),
|
||||||
|
arrayOf<String?>("<F3>"),
|
||||||
|
arrayOf<String?>("<F4>"),
|
||||||
|
arrayOf<String?>("<F5>"),
|
||||||
|
arrayOf<String?>("<F6>"),
|
||||||
|
arrayOf<String?>("<F7>"),
|
||||||
|
arrayOf<String?>("<F8>"),
|
||||||
|
arrayOf<String?>("<F9>"),
|
||||||
|
arrayOf<String?>("<F10>"),
|
||||||
|
arrayOf<String?>("<F11>"),
|
||||||
|
arrayOf<String?>("<F12>"),
|
||||||
|
arrayOf<String?>("<NUM_LOCK>"),
|
||||||
|
arrayOf<String?>("0"),
|
||||||
|
arrayOf<String?>("1"),
|
||||||
|
arrayOf<String?>("2"),
|
||||||
|
arrayOf<String?>("3"),
|
||||||
|
arrayOf<String?>("4"),
|
||||||
|
arrayOf<String?>("5"),
|
||||||
|
arrayOf<String?>("6"),
|
||||||
|
arrayOf<String?>("7"),
|
||||||
|
arrayOf<String?>("8"),
|
||||||
|
arrayOf<String?>("9"),
|
||||||
|
arrayOf<String?>("/"),
|
||||||
|
arrayOf<String?>("*"),
|
||||||
|
arrayOf<String?>("-"),
|
||||||
|
arrayOf<String?>("+"),
|
||||||
|
arrayOf<String?>("."),
|
||||||
|
arrayOf<String?>("."),
|
||||||
|
arrayOf<String?>("\n"),
|
||||||
|
arrayOf<String?>("="),
|
||||||
|
arrayOf<String?>("("),
|
||||||
|
arrayOf<String?>(")"),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>(null),
|
||||||
|
arrayOf<String?>("<:CIRCLE:>")
|
||||||
|
)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
data class TerrarumKeyboardEvent(
|
||||||
|
val type: Int,
|
||||||
|
val character: String?, // representative key symbol
|
||||||
|
val headkey: Int, // representative keycode
|
||||||
|
val repeatCount: Int,
|
||||||
|
val keycodes: IntArray
|
||||||
|
)
|
||||||
4
LICENSE.md
Normal file → Executable file
@@ -1,6 +1,4 @@
|
|||||||
Terrarum Sans Bitmap
|
Copyright (c) 2017-2023 see CONTRIBUTORS.txt
|
||||||
|
|
||||||
Copyright (c) 2017 Minjae Song (Torvald) and the contributors
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
0
META-INF/MANIFEST.MF
Normal file → Executable file
BIN
PUA_allocation_chart.xlsx
Executable file
173
README.md
Normal file → Executable file
@@ -1,38 +1,46 @@
|
|||||||
# Terrarum Sans Bitmap
|
# Terrarum Sans Bitmap
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
This font is a bitmap font used in [my game project called Terrarum](https://gitlab.com/minjaesong/terrarum) (hence the name). The font supports more than 90 % of european languages, as well as Chinese, Japanese and Korean. More technical side, it supports Latin-1 Supplement, Latin Ext-A, Latin Ext-B, IPA Extension (required by some languages), Greek, Cyrillic (+ Bulgarian, Serbian variants) and the supplement, Armenian, Thai (beta version), Georgian, Unicode Punctuations, CJK Punctuations, Kana, Chinese (limited to Unihan and Ext-A), Hangul (all 11 172 possible syllables) and Fullwidth forms.
|
This font is a bitmap font used in [my game project called Terrarum](https://github.com/minjaesong/Terrarum) (hence the name). The font supports more than 90 % of european languages, as well as Chinese, Japanese and Korean. More technical side, it supports Latin-1 Supplement, Latin Ext-A/B/C, IPA Extension, Greek, Cyrillic (+ Bulgarian, Serbian variants) and the supplement, Armenian, Devanagari, Bengali, Thai, Georgian (Mkhedruli and Mtavruli), General Punctuations, Super/Subscrips, CJK Punctuations, All of the Kana (minus the Hentaigana), Chinese (limited to Unihan and Ext-A), Hangul (every possible syllables) and Fullwidth forms.
|
||||||
|
|
||||||
The JAR package is meant to be used with Slick2d (extends ```Font``` class) and LibGDX (extends ```BitmapFont``` class). If you are not using the framework, please refer to the __Font metrics__ section to implement the font metrics correctly on your system.
|
The JAR package is meant to be used with LibGDX (extends ```BitmapFont``` class). If you are not using the framework, please refer to the __Font metrics__ section to implement the font metrics correctly on your system.
|
||||||
|
|
||||||
The issue page is open. If you have some issues to submit, or have a question, please leave it on the page.
|
The issue page is open. If you have some issues to submit, or have a question, please leave it on the page.
|
||||||
|
|
||||||
#### Little notes
|
#### Notes and Limitations
|
||||||
- You can't display Bulgarian, Russian and Serbian variants at the same time without some more codes; ```reload()```ing them or creating multiple instances of the font would be the easiest solutions.
|
- Displaying Bulgarian/Serbian variants of Cyrillic requires special Control Characters. (`GameFontBase.charsetOverrideBulgarian` -- U+FFFC1; `GameFontBase.charsetOverrideSerbian` -- U+FFFC2)
|
||||||
- All Han characters are in Chinese variant, no other variants are to be supported as most Chinese, Japanese and Korean can understand other's variant and to be honest, we don't bother anyway.
|
- All Han characters are in Mainland Chinese variant. There is no plan to support the other variants unless there is someone willing to do the drawing of the characters
|
||||||
|
- Only the Devanagari and Tamil has full (as much as I can) ligature support for Indic scripts -- Bengali script does not have any ligature support
|
||||||
|
- Slick2d versions are now unsupported. I couldn't extend myself to work on both versions, but I'm still welcome to merge your pull requests.
|
||||||
|
|
||||||
## Contribution guidelines
|
### Design Goals
|
||||||
|
|
||||||
You can contribute to the font by fixing wrong glyphs, suggesting better ones, extending character set (letters for other writing systems or filling in the blanks on the existing ones), or code for other game frameworks (not limited to Java). Please leave pull request for that.
|
- Sans-serif
|
||||||
|
- Realise (some of) handwritten forms
|
||||||
|
- Combininig with the sans-serif, this stands for **no over-simplification**
|
||||||
|
- Condensed capitals for efficient space usage
|
||||||
|
|
||||||
Font Spritesheets are stored in ```assets/graphics/fonts``` directory. Image format must be TGA with Alpha — no PNG. If someone needs PNG, they can batch-convert the font using utils like ImageMagick.
|
## Download
|
||||||
|
|
||||||
|
- Go ahead to the [release tab](https://github.com/minjaesong/Terrarum-sans-bitmap/releases), and download the most recent version. It is **not** advised to use the .jar found within the repository, they're experimental builds I use during the development, and may contain bugs like leaking memory.
|
||||||
|
|
||||||
## Using on your game
|
## Using on your game
|
||||||
|
|
||||||
- Firstly, place the .jar to your library path and unzip spritesheets, then:
|
- Firstly, place the .jar to your library path and assets folder to the main directory of the app, then:
|
||||||
|
|
||||||
### Using on LibGDX
|
### Using on LibGDX
|
||||||
|
|
||||||
On your code (Kotlin):
|
On your code (Kotlin):
|
||||||
|
|
||||||
|
import net.torvald.terrarumsansbitmap.gdx.TerrarumSansBitmap
|
||||||
|
|
||||||
class YourGame : Game() {
|
class YourGame : Game() {
|
||||||
|
|
||||||
lateinit var fontGame: Font
|
lateinit var fontGame: Font
|
||||||
|
|
||||||
override fun create() {
|
override fun create() {
|
||||||
fontGame = GameFontBase(path_to_assets)
|
fontGame = TerrarumSansBitmap(path_to_assets, ...)
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,12 +55,14 @@ On your code (Kotlin):
|
|||||||
|
|
||||||
On your code (Java):
|
On your code (Java):
|
||||||
|
|
||||||
|
import net.torvald.terrarumsansbitmap.gdx.TerrarumSansBitmap;
|
||||||
|
|
||||||
class YourGame extends BasicGame {
|
class YourGame extends BasicGame {
|
||||||
|
|
||||||
Font fontGame;
|
Font fontGame;
|
||||||
|
|
||||||
@Override void create() {
|
@Override void create() {
|
||||||
fontGame = new GameFontBase(path_to_assets);
|
fontGame = new TerrarumSansBitmap(path_to_assets, ...);
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -65,149 +75,26 @@ On your code (Java):
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
### Using on Slick2d
|
|
||||||
|
|
||||||
On your code (Kotlin):
|
|
||||||
|
|
||||||
class YourGame : BasicGame("YourGameName") {
|
|
||||||
|
|
||||||
lateinit var fontGame: Font
|
|
||||||
|
|
||||||
override fun init(gc: GameContainer) {
|
|
||||||
fontGame = GameFontBase(path_to_assets)
|
|
||||||
...
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun render(gc: GameContainer, g: Graphics) {
|
|
||||||
g.font = fontGame
|
|
||||||
g.drawString(...)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
On your code (Java):
|
|
||||||
|
|
||||||
class YourGame extends BasicGame {
|
|
||||||
|
|
||||||
Font fontGame;
|
|
||||||
|
|
||||||
@Override void init(GameContainer gc) {
|
|
||||||
fontGame = new GameFontBase(path_to_assets);
|
|
||||||
...
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override void render(GameContainer gc, Graphics g) {
|
|
||||||
g.setFont(fontGame);
|
|
||||||
g.drawString(...);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
### How to Use Color Code
|
### How to Use Color Code
|
||||||
|
|
||||||
Color codes are individual unicode characters. While you can somehow make a raw character and paste in on your code, it's certainly not desirable. Fortunately, we're also providing utility functions for the color codes.
|
Color codes are individual unicode characters. While you can somehow make a raw character and paste in on your code, it's certainly not desirable. Fortunately, we're also providing utility functions for the color codes.
|
||||||
|
|
||||||
GameFontBase.toColorCode(rgba4444: Int) -- returns String
|
GameFontBase.toColorCode(argb4444: Int) -- returns String
|
||||||
GameFontBase.toColorCode(r: Int, g: Int, b: Int) -- returns String
|
GameFontBase.toColorCode(r: Int, g: Int, b: Int) -- returns String
|
||||||
GameFontBase.toColorCode(r: Int, g: Int, b: Int, a: Int) -- returns String
|
GameFontBase.toColorCode(r: Int, g: Int, b: Int, a: Int) -- returns String
|
||||||
|
|
||||||
```rgba4444``` takes whole RGBA as input, that is, from 0x0000 to 0xFFFF. Most significant bits represents Red, and least significant bits represents Alpha (which should be fixed as F for the most time)
|
```argb4444``` takes whole ARGB (in that order) as input, that is, from 0x0000 to 0xFFFF.
|
||||||
```r, g, b(, a)``` takes RGB and A separately, in the range of 0..F. Any value exceeding the range **are unchecked and may wreak havoc**, so be careful.
|
```r, g, b(, a)``` takes RGB and A separately, in the range of 0x0..0xF. Any value exceeding the range **are unchecked and may wreak havoc**, so be careful.
|
||||||
|
|
||||||
|
U+100000 is used to disable previously-applied color codes (going back to original colour), even if it looks like ARGB of all zero.
|
||||||
|
|
||||||
|
|
||||||
## Font metrics
|
## Contribution guidelines
|
||||||
|
|
||||||
Although the font is basically a Spritesheet, some of the sheet expects variable widths to be supported. Any sheets with ```_variable``` means it expects variable widths. Anything else expects fixed width (regular Spritesheet behaviour). ```cjkpunct``` has width of 10, ```kana``` and ```hangul_johab``` has width of 12, ```wenquanyi``` has width of 16.
|
Please refer to [CONTRIBUTING.md](https://github.com/minjaesong/Terrarum-sans-bitmap/blob/master/CONTRIBUTING.md)
|
||||||
|
|
||||||
### Parsing glyph widths for variable font sheets
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
Width is encoded in binary bits, on pixels. On the font spritesheet, every glyph has vertical dots on their top-right side (to be exact, every (16k - 1)th pixel on x axis). Above image is a sample of the font, with width information coloured in magenta. From top to bottom, each dot represents 1, 2, 4 and 8. For example, in the above image, ! (exclamation mark) has width of 5, " (double quote) has width of 6, # (octothorp) has width of 8, $ (dollar sign) has width of 9.
|
|
||||||
|
|
||||||
### Implementing the Korean writing system
|
|
||||||
|
|
||||||
On this font, Hangul letters are printed by assemblying two or three letter pieces. There are 10 sets of Hangul letter pieces on the font. Top 6 are initials, middle 2 are medials, and bottom 2 are finals. On the rightmost side, there's eight assembled glyphs to help you with (assuming you have basic knowledge on the writing system). Top 6 tells you how to use 6 initials, and bottom 2 tells you how to use 2 finals.
|
|
||||||
|
|
||||||
This is a Kotlin-like pseudocode for assembling the glyph:
|
|
||||||
|
|
||||||
function getHanChosung(hanIndex: Int) = hanIndex / (21 * 28)
|
|
||||||
function getHanJungseong(hanIndex: Int) = hanIndex / 28 % 21
|
|
||||||
function getHanJongseong(hanIndex: Int) = hanIndex % 28
|
|
||||||
|
|
||||||
jungseongWide = arrayOf(8, 12, 13, 17, 18, 21)
|
|
||||||
jungseongComplex = arrayOf(9, 10, 11, 14, 15, 16, 22)
|
|
||||||
|
|
||||||
function 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
|
|
||||||
}
|
|
||||||
|
|
||||||
function isJungseongWide(hanIndex: Int) = jungseongWide.contains(getHanJungseong(hanIndex))
|
|
||||||
function isJungseongComplex(hanIndex: Int) = jungseongComplex.contains(getHanJungseong(hanIndex))
|
|
||||||
|
|
||||||
function 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
|
|
||||||
}
|
|
||||||
|
|
||||||
function getHanMedialRow(hanIndex: Int) = if (getHanJongseong(hanIndex) == 0) 6 else 7
|
|
||||||
|
|
||||||
function getHanFinalRow(hanIndex: Int): Int {
|
|
||||||
val jungseongIndex = getHanJungseong(hanIndex)
|
|
||||||
|
|
||||||
return if (jungseongWide.contains(jungseongIndex))
|
|
||||||
8
|
|
||||||
else
|
|
||||||
9
|
|
||||||
}
|
|
||||||
|
|
||||||
function isHangul(c: Char) = c.toInt() >= 0xAC00 && c.toInt() < 0xD7A4
|
|
||||||
|
|
||||||
...
|
|
||||||
|
|
||||||
for (each Char on the string) {
|
|
||||||
if (isHangul(Char)) {
|
|
||||||
val hIndex = Char.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)
|
|
||||||
|
|
||||||
// get sub image from sprite sheet
|
|
||||||
val choseongImage = hangulSheet.getSubImage(indexCho, choRow)
|
|
||||||
val jungseongImage = hangulSheet.getSubImage(indexJung, jungRow)
|
|
||||||
val jongseongImage = hangulSheet.getSubImage(indexJong, jongRow)
|
|
||||||
|
|
||||||
// actual drawing part
|
|
||||||
draw choseongImage to somewhere you want
|
|
||||||
draw jungseongImage on top of choseongImage
|
|
||||||
draw jongseongImage on top of choseongImage
|
|
||||||
}
|
|
||||||
...
|
|
||||||
}
|
|
||||||
|
|
||||||
## Acknowledgement
|
## Acknowledgement
|
||||||
|
|
||||||
Thanks to kind people of [/r/Typography](https://www.reddit.com/r/typography/) for amazing feedbacks.
|
Thanks to kind people of [/r/Typography](https://www.reddit.com/r/typography/) for amazing feedbacks.
|
||||||
|
|
||||||
CJK Ideographs are powered by [WenQuanYi Font](http://wenq.org/wqy2/index.cgi?BitmapSong). The font is distributed under the GNU GPL version 2. Although the glyphs themselves are not copyrightable (the program codes—e.g. TTF—do), we would like to give a credit for the font and the people behind it.
|
CJK Ideographs are powered by [WenQuanYi Font](http://wenq.org/wqy2/index.cgi?BitmapSong). The font is distributed under the GNU GPL version 2. Although the shapes of typefaces are not copyrightable (the program codes—e.g. TTF—do), we would like to give a credit for the font and the people behind it.
|
||||||
|
|||||||
BIN
alignment_illustration.jpg
Executable file
|
After Width: | Height: | Size: 59 KiB |
|
Before Width: | Height: | Size: 160 KiB |
|
Before Width: | Height: | Size: 260 KiB |
BIN
assets/ascii_variable.tga
Normal file → Executable file
|
Before Width: | Height: | Size: 320 KiB After Width: | Height: | Size: 131 B |
BIN
assets/bengali_variable.tga
LFS
Executable file
BIN
assets/braille_variable.tga
LFS
Normal file
0
assets/cjkpunct.tga
Normal file → Executable file
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
BIN
assets/control_pictures_variable.tga
LFS
Normal file
BIN
assets/currencies_variable.tga
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
assets/cyrilic_bulgarian_variable.tga
Normal file → Executable file
|
Before Width: | Height: | Size: 380 KiB After Width: | Height: | Size: 131 B |
BIN
assets/cyrilic_serbian_variable.tga
Normal file → Executable file
|
Before Width: | Height: | Size: 380 KiB After Width: | Height: | Size: 131 B |
BIN
assets/cyrilic_variable.tga
Normal file → Executable file
|
Before Width: | Height: | Size: 380 KiB After Width: | Height: | Size: 131 B |
BIN
assets/devanagari_internal_extrawide_variable.tga
LFS
Normal file
BIN
assets/devanagari_variable.tga
LFS
Normal file
BIN
assets/diacritical_marks_variable.tga
LFS
Executable file
BIN
assets/enclosed_alphanumeric_supplement_variable.tga
LFS
Normal file
|
Before Width: | Height: | Size: 40 KiB |
BIN
assets/futhark.tga
Normal file → Executable file
|
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 68 KiB |
BIN
assets/greek_polytonic_xyswap_variable.tga
LFS
Executable file
BIN
assets/greek_variable.tga
Normal file → Executable file
|
Before Width: | Height: | Size: 120 KiB After Width: | Height: | Size: 131 B |
BIN
assets/halfwidth_fullwidth_variable.tga
LFS
Normal file
|
Before Width: | Height: | Size: 262 KiB After Width: | Height: | Size: 132 B |
BIN
assets/hayeren_variable.tga
Normal file → Executable file
|
Before Width: | Height: | Size: 120 KiB After Width: | Height: | Size: 131 B |
|
Before Width: | Height: | Size: 40 KiB |
BIN
assets/internal_variable.tga
LFS
Normal file
BIN
assets/ipa_ext_variable.tga
Normal file → Executable file
|
Before Width: | Height: | Size: 120 KiB After Width: | Height: | Size: 131 B |
BIN
assets/kana.tga
Normal file → Executable file
|
Before Width: | Height: | Size: 180 KiB After Width: | Height: | Size: 131 B |
BIN
assets/kartuli_allcaps_variable.tga
LFS
Executable file
BIN
assets/kartuli_variable.tga
Normal file → Executable file
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 130 B |
BIN
assets/latinExtA_variable.tga
LFS
Executable file
BIN
assets/latinExtB_variable.tga
LFS
Executable file
BIN
assets/latinExtC_variable.tga
Executable file
|
After Width: | Height: | Size: 40 KiB |
BIN
assets/latinExtD_variable.tga
LFS
Normal file
BIN
assets/latinExt_additional_variable.tga
LFS
Executable file
BIN
assets/letterlike_symbols_variable.tga
LFS
Normal file
BIN
assets/phonetic_extensions_variable.tga
LFS
Normal file
BIN
assets/puae000-e0ff.tga
Normal file → Executable file
|
Before Width: | Height: | Size: 324 KiB After Width: | Height: | Size: 131 B |
BIN
assets/richtext_furigana.tga
Executable file
|
After Width: | Height: | Size: 24 KiB |
BIN
assets/sundanese_variable.tga
LFS
Normal file
BIN
assets/tamil_extrawide_variable.tga
LFS
Normal file
BIN
assets/thai_variable.tga
Normal file → Executable file
|
Before Width: | Height: | Size: 120 KiB After Width: | Height: | Size: 131 B |
BIN
assets/tsalagi_variable.tga
LFS
Executable file
BIN
assets/typewriter/audio/cr0.wav
LFS
Normal file
BIN
assets/typewriter/audio/cr1.wav
LFS
Normal file
BIN
assets/typewriter/audio/cr2.wav
LFS
Normal file
BIN
assets/typewriter/audio/cr3.wav
LFS
Normal file
BIN
assets/typewriter/audio/cr4.wav
LFS
Normal file
BIN
assets/typewriter/audio/cr5.wav
LFS
Normal file
BIN
assets/typewriter/audio/crlf.wav
LFS
Normal file
BIN
assets/typewriter/audio/deadkey.wav
LFS
Normal file
BIN
assets/typewriter/audio/movingkey.wav
LFS
Normal file
BIN
assets/typewriter/audio/shiftin.wav
LFS
Normal file
BIN
assets/typewriter/audio/shiftout.wav
LFS
Normal file
BIN
assets/typewriter/audio/space.wav
LFS
Normal file
BIN
assets/typewriter/typewriter_intl_qwerty.tga
Normal file
|
After Width: | Height: | Size: 320 KiB |
BIN
assets/typewriter/typewriter_ko_3set-390.tga
Normal file
|
After Width: | Height: | Size: 320 KiB |
BIN
assets/unipunct_variable.tga
Normal file → Executable file
|
Before Width: | Height: | Size: 120 KiB After Width: | Height: | Size: 131 B |
0
assets/wenquanyi.tga.gz
Normal file → Executable file
1
demo/.idea/.name
generated
@@ -1 +0,0 @@
|
|||||||
TerrarumSansDemo
|
|
||||||
15
demo/.idea/artifacts/unnamed.xml
generated
@@ -1,15 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="unnamed">
|
|
||||||
<output-path>$PROJECT_DIR$/out/artifacts/unnamed</output-path>
|
|
||||||
<root id="archive" name="TerrarumSansDemo.jar">
|
|
||||||
<element id="directory" name="META-INF">
|
|
||||||
<element id="file-copy" path="$PROJECT_DIR$/META-INF/MANIFEST.MF" />
|
|
||||||
</element>
|
|
||||||
<element id="file-copy" path="$PROJECT_DIR$/../LICENSE.md" />
|
|
||||||
<element id="file-copy" path="$PROJECT_DIR$/config.properties" />
|
|
||||||
<element id="file-copy" path="$PROJECT_DIR$/text.txt" />
|
|
||||||
<element id="dir-copy" path="$PROJECT_DIR$/lib" />
|
|
||||||
<element id="module-output" name="TerrarumSansDemo" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
6
demo/.idea/kotlinc.xml
generated
@@ -1,6 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="Kotlin2JvmCompilerArguments">
|
|
||||||
<option name="jvmTarget" value="1.8" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
17
demo/.idea/libraries/KotlinJavaRuntime.xml
generated
@@ -1,17 +0,0 @@
|
|||||||
<component name="libraryTable">
|
|
||||||
<library name="KotlinJavaRuntime">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-runtime.jar!/" />
|
|
||||||
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-reflect.jar!/" />
|
|
||||||
<root url="file://$PROJECT_DIR$/lib" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<NATIVE>
|
|
||||||
<root url="file://$PROJECT_DIR$/lib" />
|
|
||||||
</NATIVE>
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-runtime-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
<jarDirectory url="file://$PROJECT_DIR$/lib" recursive="false" />
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
6
demo/.idea/misc.xml
generated
@@ -1,6 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
|
||||||
<output url="file://$PROJECT_DIR$/out" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
8
demo/.idea/modules.xml
generated
@@ -1,8 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="ProjectModuleManager">
|
|
||||||
<modules>
|
|
||||||
<module fileurl="file://$PROJECT_DIR$/TerrarumSansDemo.iml" filepath="$PROJECT_DIR$/TerrarumSansDemo.iml" />
|
|
||||||
</modules>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
828
demo/.idea/workspace.xml
generated
@@ -1,828 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="ArtifactsWorkspaceSettings">
|
|
||||||
<artifacts-to-build>
|
|
||||||
<artifact name="unnamed" />
|
|
||||||
</artifacts-to-build>
|
|
||||||
</component>
|
|
||||||
<component name="ChangeListManager">
|
|
||||||
<list default="true" id="fcc8c48a-4440-438f-9e38-d42425b5efd4" name="Default" comment="" />
|
|
||||||
<ignored path="$PROJECT_DIR$/out/" />
|
|
||||||
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
|
||||||
<option name="TRACKING_ENABLED" value="true" />
|
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
|
||||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
|
||||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
|
||||||
</component>
|
|
||||||
<component name="CreatePatchCommitExecutor">
|
|
||||||
<option name="PATCH_PATH" value="" />
|
|
||||||
</component>
|
|
||||||
<component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
|
|
||||||
<component name="FileEditorManager">
|
|
||||||
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
|
||||||
<file leaf-file-name="GameFontDemo.kt" pinned="false" current-in-tab="true">
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarum/imagefont/GameFontDemo.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="434">
|
|
||||||
<caret line="43" column="0" lean-forward="false" selection-start-line="43" selection-start-column="0" selection-end-line="43" selection-end-column="0" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#40#255#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file leaf-file-name="GameFontBase.kt" pinned="false" current-in-tab="false">
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarum/imagefont/GameFontBase.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="405">
|
|
||||||
<caret line="561" column="32" lean-forward="true" selection-start-line="561" selection-start-column="32" selection-end-line="561" selection-end-column="32" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#48#391#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
</leaf>
|
|
||||||
</component>
|
|
||||||
<component name="FileTemplateManagerImpl">
|
|
||||||
<option name="RECENT_TEMPLATES">
|
|
||||||
<list>
|
|
||||||
<option value="Kotlin File" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
<component name="FindInProjectRecents">
|
|
||||||
<findStrings>
|
|
||||||
<find>"|</find>
|
|
||||||
<find>,\n</find>
|
|
||||||
<find>main</find>
|
|
||||||
<find>E7F</find>
|
|
||||||
</findStrings>
|
|
||||||
<replaceStrings>
|
|
||||||
<replace>\n</replace>
|
|
||||||
</replaceStrings>
|
|
||||||
</component>
|
|
||||||
<component name="GradleLocalSettings">
|
|
||||||
<option name="modificationStamps">
|
|
||||||
<map>
|
|
||||||
<entry key="$PROJECT_DIR$/../../terrarum_renewed" value="2962360935090" />
|
|
||||||
</map>
|
|
||||||
</option>
|
|
||||||
<option name="externalProjectsViewState">
|
|
||||||
<projects_view />
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
<component name="IdeDocumentHistory">
|
|
||||||
<option name="CHANGED_PATHS">
|
|
||||||
<list>
|
|
||||||
<option value="$PROJECT_DIR$/text.properties" />
|
|
||||||
<option value="$PROJECT_DIR$/config.properties" />
|
|
||||||
<option value="$PROJECT_DIR$/META-INF/MANIFEST.MF" />
|
|
||||||
<option value="$PROJECT_DIR$/text.txt" />
|
|
||||||
<option value="$PROJECT_DIR$/src/net/torvald/terrarum/imagefont/GameFontImpl.kt" />
|
|
||||||
<option value="$PROJECT_DIR$/lib/slick.jar!/org/newdawn/slick/opengl/Texture.class" />
|
|
||||||
<option value="$PROJECT_DIR$/lib/slick.jar!/org/newdawn/slick/SpriteSheet.class" />
|
|
||||||
<option value="$PROJECT_DIR$/lib/slick.jar!/org/newdawn/slick/Image.class" />
|
|
||||||
<option value="$PROJECT_DIR$/src/net/torvald/terrarum/imagefont/GameFontDemo.kt" />
|
|
||||||
<option value="$PROJECT_DIR$/src/net/torvald/terrarum/imagefont/GameFontBase.kt" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
<component name="ProjectFrameBounds">
|
|
||||||
<option name="x" value="-8" />
|
|
||||||
<option name="y" value="-8" />
|
|
||||||
<option name="width" value="1936" />
|
|
||||||
<option name="height" value="1176" />
|
|
||||||
</component>
|
|
||||||
<component name="ProjectView">
|
|
||||||
<navigator currentView="ProjectPane" proportions="" version="1">
|
|
||||||
<flattenPackages />
|
|
||||||
<showMembers />
|
|
||||||
<showModules />
|
|
||||||
<showLibraryContents />
|
|
||||||
<hideEmptyPackages />
|
|
||||||
<abbreviatePackageNames />
|
|
||||||
<autoscrollToSource />
|
|
||||||
<autoscrollFromSource />
|
|
||||||
<sortByType />
|
|
||||||
<manualOrder />
|
|
||||||
<foldersAlwaysOnTop value="true" />
|
|
||||||
</navigator>
|
|
||||||
<panes>
|
|
||||||
<pane id="PackagesPane" />
|
|
||||||
<pane id="Scope" />
|
|
||||||
<pane id="ProjectPane">
|
|
||||||
<subPane>
|
|
||||||
<PATH>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="TerrarumSansDemo" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="demo" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
</PATH>
|
|
||||||
<PATH>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="TerrarumSansDemo" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="demo" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="src" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="imagefont" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
</PATH>
|
|
||||||
<PATH>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="TerrarumSansDemo" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="demo" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
<PATH_ELEMENT>
|
|
||||||
<option name="myItemId" value="META-INF" />
|
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
||||||
</PATH_ELEMENT>
|
|
||||||
</PATH>
|
|
||||||
</subPane>
|
|
||||||
</pane>
|
|
||||||
<pane id="Scratches" />
|
|
||||||
</panes>
|
|
||||||
</component>
|
|
||||||
<component name="PropertiesComponent">
|
|
||||||
<property name="settings.editor.selected.configurable" value="project.kotlinCompiler" />
|
|
||||||
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
|
|
||||||
<property name="project.structure.last.edited" value="Modules" />
|
|
||||||
<property name="project.structure.proportion" value="0.15" />
|
|
||||||
<property name="project.structure.side.proportion" value="0.32068965" />
|
|
||||||
</component>
|
|
||||||
<component name="RunDashboard">
|
|
||||||
<option name="ruleStates">
|
|
||||||
<list>
|
|
||||||
<RuleState>
|
|
||||||
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
|
|
||||||
</RuleState>
|
|
||||||
<RuleState>
|
|
||||||
<option name="name" value="StatusDashboardGroupingRule" />
|
|
||||||
</RuleState>
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
<component name="RunManager" selected="Kotlin.net.torvald.terrarum.imagefont.GameFontDemoKt">
|
|
||||||
<configuration default="false" name="net.torvald.terrarum.imagefont.GameFontDemoKt" type="JetRunConfigurationType" factoryName="Kotlin" temporary="true" nameIsGenerated="true">
|
|
||||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
|
||||||
<option name="MAIN_CLASS_NAME" value="net.torvald.terrarum.imagefont.GameFontDemoKt" />
|
|
||||||
<option name="VM_PARAMETERS" />
|
|
||||||
<option name="PROGRAM_PARAMETERS" />
|
|
||||||
<option name="WORKING_DIRECTORY" />
|
|
||||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
|
||||||
<option name="ALTERNATIVE_JRE_PATH" />
|
|
||||||
<option name="PASS_PARENT_ENVS" value="true" />
|
|
||||||
<module name="TerrarumSansDemo" />
|
|
||||||
<envs />
|
|
||||||
<method />
|
|
||||||
</configuration>
|
|
||||||
<configuration default="true" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" factoryName="Plugin">
|
|
||||||
<module name="" />
|
|
||||||
<option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" />
|
|
||||||
<option name="PROGRAM_PARAMETERS" />
|
|
||||||
<predefined_log_file id="idea.log" enabled="true" />
|
|
||||||
<method />
|
|
||||||
</configuration>
|
|
||||||
<configuration default="true" type="Applet" factoryName="Applet">
|
|
||||||
<option name="HTML_USED" value="false" />
|
|
||||||
<option name="WIDTH" value="400" />
|
|
||||||
<option name="HEIGHT" value="300" />
|
|
||||||
<option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
|
|
||||||
<module />
|
|
||||||
<method />
|
|
||||||
</configuration>
|
|
||||||
<configuration default="true" type="Application" factoryName="Application">
|
|
||||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
|
||||||
<option name="MAIN_CLASS_NAME" />
|
|
||||||
<option name="VM_PARAMETERS" />
|
|
||||||
<option name="PROGRAM_PARAMETERS" />
|
|
||||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
|
||||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
|
||||||
<option name="ALTERNATIVE_JRE_PATH" />
|
|
||||||
<option name="ENABLE_SWING_INSPECTOR" value="false" />
|
|
||||||
<option name="ENV_VARIABLES" />
|
|
||||||
<option name="PASS_PARENT_ENVS" value="true" />
|
|
||||||
<module name="" />
|
|
||||||
<envs />
|
|
||||||
<method />
|
|
||||||
</configuration>
|
|
||||||
<configuration default="true" type="GradleRunConfiguration" factoryName="Gradle">
|
|
||||||
<ExternalSystemSettings>
|
|
||||||
<option name="executionName" />
|
|
||||||
<option name="externalProjectPath" />
|
|
||||||
<option name="externalSystemIdString" value="GRADLE" />
|
|
||||||
<option name="scriptParameters" />
|
|
||||||
<option name="taskDescriptions">
|
|
||||||
<list />
|
|
||||||
</option>
|
|
||||||
<option name="taskNames">
|
|
||||||
<list />
|
|
||||||
</option>
|
|
||||||
<option name="vmOptions" />
|
|
||||||
</ExternalSystemSettings>
|
|
||||||
<method />
|
|
||||||
</configuration>
|
|
||||||
<configuration default="true" type="JUnit" factoryName="JUnit">
|
|
||||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
|
||||||
<module name="" />
|
|
||||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
|
||||||
<option name="ALTERNATIVE_JRE_PATH" />
|
|
||||||
<option name="PACKAGE_NAME" />
|
|
||||||
<option name="MAIN_CLASS_NAME" />
|
|
||||||
<option name="METHOD_NAME" />
|
|
||||||
<option name="TEST_OBJECT" value="class" />
|
|
||||||
<option name="VM_PARAMETERS" value="-ea" />
|
|
||||||
<option name="PARAMETERS" />
|
|
||||||
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
|
|
||||||
<option name="ENV_VARIABLES" />
|
|
||||||
<option name="PASS_PARENT_ENVS" value="true" />
|
|
||||||
<option name="TEST_SEARCH_SCOPE">
|
|
||||||
<value defaultName="singleModule" />
|
|
||||||
</option>
|
|
||||||
<envs />
|
|
||||||
<patterns />
|
|
||||||
<method />
|
|
||||||
</configuration>
|
|
||||||
<configuration default="true" type="JarApplication" factoryName="JAR Application">
|
|
||||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
|
||||||
<envs />
|
|
||||||
<method />
|
|
||||||
</configuration>
|
|
||||||
<configuration default="true" type="Java Scratch" factoryName="Java Scratch">
|
|
||||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
|
||||||
<option name="SCRATCH_FILE_ID" value="0" />
|
|
||||||
<option name="MAIN_CLASS_NAME" />
|
|
||||||
<option name="VM_PARAMETERS" />
|
|
||||||
<option name="PROGRAM_PARAMETERS" />
|
|
||||||
<option name="WORKING_DIRECTORY" />
|
|
||||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
|
||||||
<option name="ALTERNATIVE_JRE_PATH" />
|
|
||||||
<option name="ENABLE_SWING_INSPECTOR" value="false" />
|
|
||||||
<option name="ENV_VARIABLES" />
|
|
||||||
<option name="PASS_PARENT_ENVS" value="true" />
|
|
||||||
<module name="" />
|
|
||||||
<envs />
|
|
||||||
<method />
|
|
||||||
</configuration>
|
|
||||||
<configuration default="true" type="JetRunConfigurationType" factoryName="Kotlin">
|
|
||||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
|
||||||
<option name="MAIN_CLASS_NAME" />
|
|
||||||
<option name="VM_PARAMETERS" />
|
|
||||||
<option name="PROGRAM_PARAMETERS" />
|
|
||||||
<option name="WORKING_DIRECTORY" />
|
|
||||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
|
||||||
<option name="ALTERNATIVE_JRE_PATH" />
|
|
||||||
<option name="PASS_PARENT_ENVS" value="true" />
|
|
||||||
<module name="TerrarumSansDemo" />
|
|
||||||
<envs />
|
|
||||||
<method />
|
|
||||||
</configuration>
|
|
||||||
<configuration default="true" type="KotlinStandaloneScriptRunConfigurationType" factoryName="Kotlin script">
|
|
||||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
|
||||||
<option name="filePath" />
|
|
||||||
<option name="vmParameters" />
|
|
||||||
<option name="alternativeJrePath" />
|
|
||||||
<option name="programParameters" />
|
|
||||||
<option name="passParentEnvs" value="true" />
|
|
||||||
<option name="workingDirectory" />
|
|
||||||
<option name="isAlternativeJrePathEnabled" value="false" />
|
|
||||||
<envs />
|
|
||||||
<method />
|
|
||||||
</configuration>
|
|
||||||
<configuration default="true" type="Remote" factoryName="Remote">
|
|
||||||
<option name="USE_SOCKET_TRANSPORT" value="true" />
|
|
||||||
<option name="SERVER_MODE" value="false" />
|
|
||||||
<option name="SHMEM_ADDRESS" value="javadebug" />
|
|
||||||
<option name="HOST" value="localhost" />
|
|
||||||
<option name="PORT" value="5005" />
|
|
||||||
<method />
|
|
||||||
</configuration>
|
|
||||||
<configuration default="true" type="TestNG" factoryName="TestNG">
|
|
||||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
|
||||||
<module name="" />
|
|
||||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
|
||||||
<option name="ALTERNATIVE_JRE_PATH" />
|
|
||||||
<option name="SUITE_NAME" />
|
|
||||||
<option name="PACKAGE_NAME" />
|
|
||||||
<option name="MAIN_CLASS_NAME" />
|
|
||||||
<option name="METHOD_NAME" />
|
|
||||||
<option name="GROUP_NAME" />
|
|
||||||
<option name="TEST_OBJECT" value="CLASS" />
|
|
||||||
<option name="VM_PARAMETERS" value="-ea" />
|
|
||||||
<option name="PARAMETERS" />
|
|
||||||
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
|
|
||||||
<option name="OUTPUT_DIRECTORY" />
|
|
||||||
<option name="ANNOTATION_TYPE" />
|
|
||||||
<option name="ENV_VARIABLES" />
|
|
||||||
<option name="PASS_PARENT_ENVS" value="true" />
|
|
||||||
<option name="TEST_SEARCH_SCOPE">
|
|
||||||
<value defaultName="singleModule" />
|
|
||||||
</option>
|
|
||||||
<option name="USE_DEFAULT_REPORTERS" value="false" />
|
|
||||||
<option name="PROPERTIES_FILE" />
|
|
||||||
<envs />
|
|
||||||
<properties />
|
|
||||||
<listeners />
|
|
||||||
<method />
|
|
||||||
</configuration>
|
|
||||||
<configuration default="true" type="executeSpecs" factoryName="Gauge Execution">
|
|
||||||
<setting name="environment" value="" />
|
|
||||||
<setting name="specsToExecute" value="" />
|
|
||||||
<setting name="tags" value="" />
|
|
||||||
<setting name="parallelNodes" value="" />
|
|
||||||
<setting name="execInParallel" value="false" />
|
|
||||||
<setting name="programParameters" value="" />
|
|
||||||
<setting name="workingDirectory" value="" />
|
|
||||||
<setting name="moduleName" value="" />
|
|
||||||
<envMap />
|
|
||||||
<setting name="rowsRange" value="" />
|
|
||||||
<method />
|
|
||||||
</configuration>
|
|
||||||
<list size="1">
|
|
||||||
<item index="0" class="java.lang.String" itemvalue="Kotlin.net.torvald.terrarum.imagefont.GameFontDemoKt" />
|
|
||||||
</list>
|
|
||||||
<recent_temporary>
|
|
||||||
<list size="1">
|
|
||||||
<item index="0" class="java.lang.String" itemvalue="Kotlin.net.torvald.terrarum.imagefont.GameFontDemoKt" />
|
|
||||||
</list>
|
|
||||||
</recent_temporary>
|
|
||||||
</component>
|
|
||||||
<component name="ShelveChangesManager" show_recycled="false">
|
|
||||||
<option name="remove_strategy" value="false" />
|
|
||||||
</component>
|
|
||||||
<component name="SvnConfiguration">
|
|
||||||
<configuration />
|
|
||||||
</component>
|
|
||||||
<component name="TaskManager">
|
|
||||||
<task active="true" id="Default" summary="Default task">
|
|
||||||
<changelist id="fcc8c48a-4440-438f-9e38-d42425b5efd4" name="Default" comment="" />
|
|
||||||
<created>1487243351068</created>
|
|
||||||
<option name="number" value="Default" />
|
|
||||||
<option name="presentableId" value="Default" />
|
|
||||||
<updated>1487243351068</updated>
|
|
||||||
</task>
|
|
||||||
<servers />
|
|
||||||
</component>
|
|
||||||
<component name="ToolWindowManager">
|
|
||||||
<frame x="-8" y="-8" width="1936" height="1176" extended-state="6" />
|
|
||||||
<editor active="true" />
|
|
||||||
<layout>
|
|
||||||
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32898468" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Palette	" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
|
|
||||||
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32960597" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32898468" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Designer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.17430703" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
|
|
||||||
<window_info id="Structure" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3054371" sideWeight="0.5" order="11" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25790986" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="true" content_ui="tabs" />
|
|
||||||
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="9" side_tool="false" content_ui="combo" />
|
|
||||||
<window_info id="LuaJ" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32960597" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Code Iris" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.32960597" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Documentation" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.1544196" sideWeight="0.4651163" order="10" side_tool="false" content_ui="tabs" x="1380" y="-157" width="1720" height="857" />
|
|
||||||
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Gradle" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
|
||||||
</layout>
|
|
||||||
</component>
|
|
||||||
<component name="VcsContentAnnotationSettings">
|
|
||||||
<option name="myLimit" value="2678400000" />
|
|
||||||
</component>
|
|
||||||
<component name="XDebuggerManager">
|
|
||||||
<breakpoint-manager>
|
|
||||||
<option name="time" value="1" />
|
|
||||||
</breakpoint-manager>
|
|
||||||
<watches-manager />
|
|
||||||
</component>
|
|
||||||
<component name="antWorkspaceConfiguration">
|
|
||||||
<option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
|
|
||||||
<option name="FILTER_TARGETS" value="false" />
|
|
||||||
</component>
|
|
||||||
<component name="editorHistoryManager">
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarum/imagefont/GameFontDemo.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="518">
|
|
||||||
<caret line="43" column="0" lean-forward="false" selection-start-line="43" selection-start-column="0" selection-end-line="43" selection-end-column="0" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#40#255#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarum/imagefont/GameFontBase.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="8442">
|
|
||||||
<caret line="613" column="0" lean-forward="false" selection-start-line="613" selection-start-column="0" selection-end-line="613" selection-end-column="0" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#48#391#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarum/imagefont/GameFontDemo.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="0">
|
|
||||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#40#255#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarum/imagefont/GameFontBase.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="8442">
|
|
||||||
<caret line="613" column="0" lean-forward="false" selection-start-line="613" selection-start-column="0" selection-end-line="613" selection-end-column="0" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#48#391#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarum/imagefont/GameFontDemo.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="0">
|
|
||||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#40#255#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarum/imagefont/GameFontBase.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="8582">
|
|
||||||
<caret line="613" column="0" lean-forward="false" selection-start-line="613" selection-start-column="0" selection-end-line="613" selection-end-column="0" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#48#391#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarum/imagefont/GameFontDemo.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="924">
|
|
||||||
<caret line="72" column="55" lean-forward="false" selection-start-line="72" selection-start-column="55" selection-end-line="72" selection-end-column="55" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#40#255#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/text.txt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="252">
|
|
||||||
<caret line="18" column="0" lean-forward="false" selection-start-line="18" selection-start-column="0" selection-end-line="18" selection-end-column="0" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarum/imagefont/GameFontImpl.kt" />
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarum/imagefont/GameFontBase.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="0">
|
|
||||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#48#391#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarum/imagefont/GameFontDemo.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="924">
|
|
||||||
<caret line="72" column="55" lean-forward="false" selection-start-line="72" selection-start-column="55" selection-end-line="72" selection-end-column="55" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#40#255#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/text.txt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="252">
|
|
||||||
<caret line="18" column="0" lean-forward="false" selection-start-line="18" selection-start-column="0" selection-end-line="18" selection-end-column="0" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarum/imagefont/GameFontImpl.kt" />
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarum/imagefont/GameFontBase.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="0">
|
|
||||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#48#391#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarum/imagefont/GameFontDemo.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="1008">
|
|
||||||
<caret line="72" column="55" lean-forward="false" selection-start-line="72" selection-start-column="55" selection-end-line="72" selection-end-column="55" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#40#255#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/text.txt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="252">
|
|
||||||
<caret line="18" column="0" lean-forward="false" selection-start-line="18" selection-start-column="0" selection-end-line="18" selection-end-column="0" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarum/imagefont/GameFontImpl.kt" />
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarum/imagefont/GameFontBase.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="0">
|
|
||||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#48#391#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarum/imagefont/GameFontDemo.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="924">
|
|
||||||
<caret line="72" column="55" lean-forward="false" selection-start-line="72" selection-start-column="55" selection-end-line="72" selection-end-column="55" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#40#255#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarum/imagefont/GameFontImpl.kt" />
|
|
||||||
<entry file="file://$PROJECT_DIR$/text.txt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="252">
|
|
||||||
<caret line="18" column="0" lean-forward="true" selection-start-line="18" selection-start-column="0" selection-end-line="18" selection-end-column="0" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarum/imagefont/GameFontBase.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="2800">
|
|
||||||
<caret line="204" column="48" lean-forward="false" selection-start-line="204" selection-start-column="48" selection-end-line="204" selection-end-column="48" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#48#391#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarum/imagefont/GameFontDemo.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="924">
|
|
||||||
<caret line="72" column="55" lean-forward="false" selection-start-line="72" selection-start-column="55" selection-end-line="72" selection-end-column="55" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#40#255#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarum/imagefont/GameFontBase.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="6846">
|
|
||||||
<caret line="493" column="0" lean-forward="false" selection-start-line="493" selection-start-column="0" selection-end-line="493" selection-end-column="0" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#48#391#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarum/imagefont/GameFontImpl.kt" />
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarum/imagefont/GameFontDemo.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="0">
|
|
||||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#40#255#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarum/imagefont/GameFontBase.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="7168">
|
|
||||||
<caret line="516" column="36" lean-forward="false" selection-start-line="516" selection-start-column="36" selection-end-line="516" selection-end-column="36" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#48#391#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/config.properties">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="0">
|
|
||||||
<caret line="0" column="10" lean-forward="true" selection-start-line="0" selection-start-column="10" selection-end-line="0" selection-end-column="10" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/text.txt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="0">
|
|
||||||
<caret line="0" column="95" lean-forward="false" selection-start-line="0" selection-start-column="95" selection-end-line="0" selection-end-column="95" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarum/imagefont/GameFontImpl.kt" />
|
|
||||||
<entry file="file://$PROJECT_DIR$/META-INF/MANIFEST.MF">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="28">
|
|
||||||
<caret line="2" column="57" lean-forward="true" selection-start-line="2" selection-start-column="57" selection-end-line="2" selection-end-column="57" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/../../Ba-AA/src/net/torvald/aa/demoplayer/BaAA.java" />
|
|
||||||
<entry file="file://$PROJECT_DIR$/config.properties">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="0">
|
|
||||||
<caret line="0" column="10" lean-forward="false" selection-start-line="0" selection-start-column="10" selection-end-line="0" selection-end-column="10" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="jar://$KOTLIN_BUNDLED$/lib/kotlin-runtime-sources.jar!/kotlin/Primitives.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="338">
|
|
||||||
<caret line="491" column="24" lean-forward="false" selection-start-line="491" selection-start-column="24" selection-end-line="491" selection-end-column="24" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarum/imagefont/GameFontImpl.kt" />
|
|
||||||
<entry file="file://$PROJECT_DIR$/text.txt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="252">
|
|
||||||
<caret line="18" column="0" lean-forward="false" selection-start-line="18" selection-start-column="0" selection-end-line="18" selection-end-column="0" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="jar://$PROJECT_DIR$/lib/slick.jar!/org/newdawn/slick/opengl/Texture.class">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="378">
|
|
||||||
<caret line="30" column="11" lean-forward="false" selection-start-line="30" selection-start-column="11" selection-end-line="30" selection-end-column="11" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="jar://$PROJECT_DIR$/lib/slick.jar!/org/newdawn/slick/Image.class">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="504">
|
|
||||||
<caret line="48" column="14" lean-forward="false" selection-start-line="48" selection-start-column="14" selection-end-line="48" selection-end-column="14" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="jar://$PROJECT_DIR$/lib/slick.jar!/org/newdawn/slick/SpriteSheet.class">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="392">
|
|
||||||
<caret line="34" column="11" lean-forward="false" selection-start-line="34" selection-start-column="11" selection-end-line="34" selection-end-column="11" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarum/imagefont/GameFontBase.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="405">
|
|
||||||
<caret line="561" column="32" lean-forward="true" selection-start-line="561" selection-start-column="32" selection-end-line="561" selection-end-column="32" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#48#391#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/src/net/torvald/terrarum/imagefont/GameFontDemo.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="434">
|
|
||||||
<caret line="43" column="0" lean-forward="false" selection-start-line="43" selection-start-column="0" selection-end-line="43" selection-end-column="0" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#40#255#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</component>
|
|
||||||
<component name="masterDetails">
|
|
||||||
<states>
|
|
||||||
<state key="ArtifactsStructureConfigurable.UI">
|
|
||||||
<settings>
|
|
||||||
<artifact-editor>
|
|
||||||
<show-content>
|
|
||||||
<type id="artifact" />
|
|
||||||
<type id="library" />
|
|
||||||
</show-content>
|
|
||||||
</artifact-editor>
|
|
||||||
<last-edited>unnamed</last-edited>
|
|
||||||
<splitter-proportions>
|
|
||||||
<option name="proportions">
|
|
||||||
<list>
|
|
||||||
<option value="0.32068965" />
|
|
||||||
<option value="0.5" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</splitter-proportions>
|
|
||||||
</settings>
|
|
||||||
</state>
|
|
||||||
<state key="FacetStructureConfigurable.UI">
|
|
||||||
<settings>
|
|
||||||
<last-edited>Detection</last-edited>
|
|
||||||
<splitter-proportions>
|
|
||||||
<option name="proportions">
|
|
||||||
<list>
|
|
||||||
<option value="0.32068965" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</splitter-proportions>
|
|
||||||
</settings>
|
|
||||||
</state>
|
|
||||||
<state key="GlobalLibrariesConfigurable.UI">
|
|
||||||
<settings>
|
|
||||||
<splitter-proportions>
|
|
||||||
<option name="proportions">
|
|
||||||
<list>
|
|
||||||
<option value="0.2" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</splitter-proportions>
|
|
||||||
</settings>
|
|
||||||
</state>
|
|
||||||
<state key="JdkListConfigurable.UI">
|
|
||||||
<settings>
|
|
||||||
<last-edited>1.8</last-edited>
|
|
||||||
<splitter-proportions>
|
|
||||||
<option name="proportions">
|
|
||||||
<list>
|
|
||||||
<option value="0.2" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</splitter-proportions>
|
|
||||||
</settings>
|
|
||||||
</state>
|
|
||||||
<state key="ModuleStructureConfigurable.UI">
|
|
||||||
<settings>
|
|
||||||
<last-edited>Kotlin|TerrarumSansDemo</last-edited>
|
|
||||||
<splitter-proportions>
|
|
||||||
<option name="proportions">
|
|
||||||
<list>
|
|
||||||
<option value="0.32068965" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</splitter-proportions>
|
|
||||||
</settings>
|
|
||||||
</state>
|
|
||||||
<state key="ProjectJDKs.UI">
|
|
||||||
<settings>
|
|
||||||
<last-edited>1.8</last-edited>
|
|
||||||
<splitter-proportions>
|
|
||||||
<option name="proportions">
|
|
||||||
<list>
|
|
||||||
<option value="0.2" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</splitter-proportions>
|
|
||||||
</settings>
|
|
||||||
</state>
|
|
||||||
<state key="ProjectLibrariesConfigurable.UI">
|
|
||||||
<settings>
|
|
||||||
<last-edited>KotlinJavaRuntime</last-edited>
|
|
||||||
<splitter-proportions>
|
|
||||||
<option name="proportions">
|
|
||||||
<list>
|
|
||||||
<option value="0.32068965" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</splitter-proportions>
|
|
||||||
</settings>
|
|
||||||
</state>
|
|
||||||
</states>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
Manifest-Version: 1.0
|
|
||||||
Class-Path: lib/lwjgl.jar lib/lwjgl_util.jar lib/slick.jar lib/kotlin-reflect.jar lib/kotlin-runtime.jar
|
|
||||||
Main-Class: net.torvald.terrarum.imagefont.GameFontDemoKt
|
|
||||||
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<module type="JAVA_MODULE" version="4">
|
|
||||||
<component name="FacetManager">
|
|
||||||
<facet type="kotlin-language" name="Kotlin">
|
|
||||||
<configuration version="2" platform="JVM 1.6" useProjectSettings="false">
|
|
||||||
<compilerSettings />
|
|
||||||
<compilerArguments>
|
|
||||||
<option name="jvmTarget" value="1.6" />
|
|
||||||
<option name="languageVersion" value="1.1" />
|
|
||||||
<option name="apiVersion" value="1.1" />
|
|
||||||
<option name="coroutinesWarn" value="true" />
|
|
||||||
</compilerArguments>
|
|
||||||
</configuration>
|
|
||||||
</facet>
|
|
||||||
</component>
|
|
||||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
|
||||||
<exclude-output />
|
|
||||||
<content url="file://$MODULE_DIR$">
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
|
||||||
</content>
|
|
||||||
<orderEntry type="inheritedJdk" />
|
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
|
||||||
<orderEntry type="library" name="KotlinJavaRuntime" level="project" />
|
|
||||||
</component>
|
|
||||||
</module>
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
locale=enUS
|
|
||||||
@@ -1,700 +0,0 @@
|
|||||||
package net.torvald.terrarumsansbitmap.slick2d
|
|
||||||
|
|
||||||
import org.newdawn.slick.Color
|
|
||||||
import org.newdawn.slick.Font
|
|
||||||
import org.newdawn.slick.Image
|
|
||||||
import org.newdawn.slick.SpriteSheet
|
|
||||||
import org.newdawn.slick.opengl.Texture
|
|
||||||
import java.io.BufferedOutputStream
|
|
||||||
import java.io.File
|
|
||||||
import java.io.FileInputStream
|
|
||||||
import java.io.FileOutputStream
|
|
||||||
import java.util.*
|
|
||||||
import java.util.zip.GZIPInputStream
|
|
||||||
|
|
||||||
/**
|
|
||||||
* LibGDX port of Terrarum Sans Bitmap implementation
|
|
||||||
*
|
|
||||||
* Filename and Extension for the spritesheet is hard-coded, which are:
|
|
||||||
*
|
|
||||||
* - ascii_variable.tga
|
|
||||||
* - hangul_johab.tga
|
|
||||||
* - LatinExtA_variable.tga
|
|
||||||
* - LatinExtB_variable.tga
|
|
||||||
* - kana.tga
|
|
||||||
* - cjkpunct.tga
|
|
||||||
* - wenquanyi.tga.gz
|
|
||||||
* - cyrillic_variable.tga
|
|
||||||
* - fullwidth_forms.tga
|
|
||||||
* - unipunct_variable.tga
|
|
||||||
* - greek_variable.tga
|
|
||||||
* - thai_variable.tga
|
|
||||||
* - puae000-e0ff.tga
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* Glyphs are drawn lazily (calculated on-the-fly, rather than load up all), which is inevitable as we just can't load
|
|
||||||
* up 40k+ characters on the machine, which will certainly make loading time painfully long.
|
|
||||||
*
|
|
||||||
* @param noShadow Self-explanatory
|
|
||||||
* @param flipY If you have Y-down coord system implemented on your GDX (e.g. legacy codebase), set this to ```true``` so that the shadow won't be upside-down. For glyph getting upside-down, set ```TextureRegionPack.globalFlipY = true```.
|
|
||||||
*
|
|
||||||
* Created by minjaesong on 2017-06-15.
|
|
||||||
*/
|
|
||||||
class GameFontBase(fontDir: String, val noShadow: Boolean = false) : Font {
|
|
||||||
|
|
||||||
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() in codeRange[SHEET_HANGUL]
|
|
||||||
private fun isAscii(c: Char) = c.toInt() in codeRange[SHEET_ASCII_VARW]
|
|
||||||
//private fun isRunic(c: Char) = runicList.contains(c)
|
|
||||||
private fun isExtA(c: Char) = c.toInt() in codeRange[SHEET_EXTA_VARW]
|
|
||||||
private fun isExtB(c: Char) = c.toInt() in codeRange[SHEET_EXTB_VARW]
|
|
||||||
private fun isKana(c: Char) = c.toInt() in codeRange[SHEET_KANA]
|
|
||||||
private fun isCJKPunct(c: Char) = c.toInt() in codeRange[SHEET_CJK_PUNCT]
|
|
||||||
private fun isUniHan(c: Char) = c.toInt() in codeRange[SHEET_UNIHAN]
|
|
||||||
private fun isCyrilic(c: Char) = c.toInt() in codeRange[SHEET_CYRILIC_VARW]
|
|
||||||
private fun isFullwidthUni(c: Char) = c.toInt() in codeRange[SHEET_FW_UNI]
|
|
||||||
private fun isUniPunct(c: Char) = c.toInt() in codeRange[SHEET_UNI_PUNCT]
|
|
||||||
private fun isGreek(c: Char) = c.toInt() in codeRange[SHEET_GREEK_VARW]
|
|
||||||
private fun isThai(c: Char) = c.toInt() in codeRange[SHEET_THAI_VARW]
|
|
||||||
private fun isDiacritics(c: Char) = c.toInt() in 0xE34..0xE3A
|
|
||||||
|| c.toInt() in 0xE47..0xE4E
|
|
||||||
|| c.toInt() == 0xE31
|
|
||||||
private fun isCustomSym(c: Char) = c.toInt() in codeRange[SHEET_CUSTOM_SYM]
|
|
||||||
private fun isArmenian(c: Char) = c.toInt() in codeRange[SHEET_HAYEREN_VARW]
|
|
||||||
private fun isKartvelian(c: Char) = c.toInt() in codeRange[SHEET_KARTULI_VARW]
|
|
||||||
private fun isIPA(c: Char) = c.toInt() in codeRange[SHEET_IPA_VARW]
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private fun extAindexX(c: Char) = (c.toInt() - 0x100) % 16
|
|
||||||
private fun extAindexY(c: Char) = (c.toInt() - 0x100) / 16
|
|
||||||
|
|
||||||
private fun extBindexX(c: Char) = (c.toInt() - 0x180) % 16
|
|
||||||
private fun extBindexY(c: Char) = (c.toInt() - 0x180) / 16
|
|
||||||
|
|
||||||
//private fun runicIndexX(c: Char) = runicList.indexOf(c) % 16
|
|
||||||
//private fun runicIndexY(c: Char) = runicList.indexOf(c) / 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 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 unihanIndexX(c: Char) = (c.toInt() - 0x3400) % 256
|
|
||||||
private fun unihanIndexY(c: Char) = (c.toInt() - 0x3400) / 256
|
|
||||||
|
|
||||||
private fun greekIndexX(c: Char) = (c.toInt() - 0x370) % 16
|
|
||||||
private fun greekIndexY(c: Char) = (c.toInt() - 0x370) / 16
|
|
||||||
|
|
||||||
private fun thaiIndexX(c: Char) = (c.toInt() - 0xE00) % 16
|
|
||||||
private fun thaiIndexY(c: Char) = (c.toInt() - 0xE00) / 16
|
|
||||||
|
|
||||||
private fun symbolIndexX(c: Char) = (c.toInt() - 0xE000) % 16
|
|
||||||
private fun symbolIndexY(c: Char) = (c.toInt() - 0xE000) / 16
|
|
||||||
|
|
||||||
private fun armenianIndexX(c: Char) = (c.toInt() - 0x530) % 16
|
|
||||||
private fun armenianIndexY(c: Char) = (c.toInt() - 0x530) / 16
|
|
||||||
|
|
||||||
private fun kartvelianIndexX(c: Char) = (c.toInt() - 0x10D0) % 16
|
|
||||||
private fun kartvelianIndexY(c: Char) = (c.toInt() - 0x10D0) / 16
|
|
||||||
|
|
||||||
private fun ipaIndexX(c: Char) = (c.toInt() - 0x250) % 16
|
|
||||||
private fun ipaIndexY(c: Char) = (c.toInt() - 0x250) / 16
|
|
||||||
|
|
||||||
private val unihanWidthSheets = arrayOf(
|
|
||||||
SHEET_UNIHAN,
|
|
||||||
SHEET_FW_UNI
|
|
||||||
)
|
|
||||||
private val variableWidthSheets = arrayOf(
|
|
||||||
SHEET_ASCII_VARW,
|
|
||||||
SHEET_EXTA_VARW,
|
|
||||||
SHEET_EXTB_VARW,
|
|
||||||
SHEET_CYRILIC_VARW,
|
|
||||||
SHEET_UNI_PUNCT,
|
|
||||||
SHEET_GREEK_VARW,
|
|
||||||
SHEET_THAI_VARW,
|
|
||||||
SHEET_HAYEREN_VARW,
|
|
||||||
SHEET_KARTULI_VARW,
|
|
||||||
SHEET_IPA_VARW
|
|
||||||
)
|
|
||||||
|
|
||||||
private val fontParentDir = if (fontDir.endsWith('/') || fontDir.endsWith('\\')) fontDir else "$fontDir/"
|
|
||||||
private val fileList = arrayOf( // MUST BE MATCHING WITH SHEET INDICES!!
|
|
||||||
"ascii_variable.tga",
|
|
||||||
"hangul_johab.tga",
|
|
||||||
"LatinExtA_variable.tga",
|
|
||||||
"LatinExtB_variable.tga",
|
|
||||||
"kana.tga",
|
|
||||||
"cjkpunct.tga",
|
|
||||||
"wenquanyi.tga.gz",
|
|
||||||
"cyrilic_variable.tga",
|
|
||||||
"fullwidth_forms.tga",
|
|
||||||
"unipunct_variable.tga",
|
|
||||||
"greek_variable.tga",
|
|
||||||
"thai_variable.tga",
|
|
||||||
"hayeren_variable.tga",
|
|
||||||
"kartuli_variable.tga",
|
|
||||||
"ipa_ext_variable.tga",
|
|
||||||
"puae000-e0ff.tga"
|
|
||||||
)
|
|
||||||
private val cyrilic_bg = "cyrilic_bulgarian_variable.tga"
|
|
||||||
private val cyrilic_sr = "cyrilic_serbian_variable.tga"
|
|
||||||
private val codeRange = arrayOf( // MUST BE MATCHING WITH SHEET INDICES!!
|
|
||||||
0..0xFF,
|
|
||||||
0xAC00..0xD7A3,
|
|
||||||
0x100..0x17F,
|
|
||||||
0x180..0x24F,
|
|
||||||
0x3040..0x30FF,
|
|
||||||
0x3000..0x303F,
|
|
||||||
0x3400..0x9FFF,
|
|
||||||
0x400..0x52F,
|
|
||||||
0xFF00..0xFF1F,
|
|
||||||
0x2000..0x205F,
|
|
||||||
0x370..0x3CE,
|
|
||||||
0xE00..0xE5F,
|
|
||||||
0x530..0x58F,
|
|
||||||
0x10D0..0x10FF,
|
|
||||||
0x250..0x2AF,
|
|
||||||
0xE000..0xE0FF
|
|
||||||
)
|
|
||||||
private val glyphWidths: HashMap<Int, Int> = HashMap() // if the value is negative, it's diacritics
|
|
||||||
private val sheets: Array<SpriteSheet>
|
|
||||||
|
|
||||||
|
|
||||||
init {
|
|
||||||
val sheetsPack = ArrayList<SpriteSheet>()
|
|
||||||
|
|
||||||
// first we create pixmap to read pixels, then make texture using pixmap
|
|
||||||
fileList.forEachIndexed { index, it ->
|
|
||||||
val isVariable1 = it.endsWith("_variable.tga")
|
|
||||||
val isVariable2 = variableWidthSheets.contains(index)
|
|
||||||
val isVariable = isVariable1 && isVariable2
|
|
||||||
|
|
||||||
// idiocity check
|
|
||||||
if (isVariable1 && !isVariable2)
|
|
||||||
throw Error("[TerrarumSansBitmap] font is named as variable on the name but not enlisted as")
|
|
||||||
else if (!isVariable1 && isVariable2)
|
|
||||||
throw Error("[TerrarumSansBitmap] font is enlisted as variable on the name but not named as")
|
|
||||||
|
|
||||||
|
|
||||||
val image: Image
|
|
||||||
|
|
||||||
|
|
||||||
// unpack gz if applicable
|
|
||||||
if (it.endsWith(".gz")) {
|
|
||||||
val gzi = GZIPInputStream(FileInputStream(fontParentDir + it))
|
|
||||||
val wholeFile = gzi.readBytes()
|
|
||||||
gzi.close()
|
|
||||||
val fos = BufferedOutputStream(FileOutputStream("tmp_wenquanyi.tga"))
|
|
||||||
fos.write(wholeFile)
|
|
||||||
fos.flush()
|
|
||||||
fos.close()
|
|
||||||
|
|
||||||
image = Image("tmp_wenquanyi.tga")
|
|
||||||
|
|
||||||
File("tmp_wenquanyi.tga").delete()
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
image = Image(fontParentDir + it)
|
|
||||||
}
|
|
||||||
|
|
||||||
val texture = image.texture
|
|
||||||
|
|
||||||
if (isVariable) {
|
|
||||||
println("[TerrarumSansBitmap] loading texture $it [VARIABLE]")
|
|
||||||
buildWidthTable(texture, codeRange[index], 16)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
println("[TerrarumSansBitmap] loading texture $it")
|
|
||||||
}
|
|
||||||
|
|
||||||
val texRegPack = if (isVariable) {
|
|
||||||
SpriteSheet(image, W_VAR_INIT, H - 1, HGAP_VAR)
|
|
||||||
}
|
|
||||||
else if (index == SHEET_UNIHAN) {
|
|
||||||
SpriteSheet(image, W_UNIHAN, H_UNIHAN) // the only exception that is height is 16
|
|
||||||
}
|
|
||||||
// below they all have height of 20 'H'
|
|
||||||
else if (index == SHEET_FW_UNI) {
|
|
||||||
SpriteSheet(image, W_UNIHAN, H)
|
|
||||||
}
|
|
||||||
else if (index == SHEET_CJK_PUNCT) {
|
|
||||||
SpriteSheet(image, W_ASIAN_PUNCT, H)
|
|
||||||
}
|
|
||||||
else if (index == SHEET_KANA) {
|
|
||||||
SpriteSheet(image, W_KANA, H)
|
|
||||||
}
|
|
||||||
else if (index == SHEET_HANGUL) {
|
|
||||||
SpriteSheet(image, W_HANGUL, H)
|
|
||||||
}
|
|
||||||
else if (index == SHEET_CUSTOM_SYM) {
|
|
||||||
SpriteSheet(image, SIZE_CUSTOM_SYM, SIZE_CUSTOM_SYM) // TODO variable
|
|
||||||
}
|
|
||||||
else throw IllegalArgumentException("[TerrarumSansBitmap] Unknown sheet index: $index")
|
|
||||||
|
|
||||||
|
|
||||||
sheetsPack.add(texRegPack)
|
|
||||||
}
|
|
||||||
|
|
||||||
sheets = sheetsPack.toTypedArray()
|
|
||||||
}
|
|
||||||
|
|
||||||
private var localeBuffer = ""
|
|
||||||
|
|
||||||
fun reload(locale: String) {
|
|
||||||
if (!localeBuffer.startsWith("ru") && locale.startsWith("ru")) {
|
|
||||||
val image = Image(fontParentDir + fileList[SHEET_CYRILIC_VARW])
|
|
||||||
sheets[SHEET_CYRILIC_VARW].destroy()
|
|
||||||
sheets[SHEET_CYRILIC_VARW] = SpriteSheet(image, W_VAR_INIT, H, HGAP_VAR, 0)
|
|
||||||
}
|
|
||||||
else if (!localeBuffer.startsWith("bg") && locale.startsWith("bg")) {
|
|
||||||
val image = Image(fontParentDir + cyrilic_bg)
|
|
||||||
sheets[SHEET_CYRILIC_VARW].destroy()
|
|
||||||
sheets[SHEET_CYRILIC_VARW] = SpriteSheet(image, W_VAR_INIT, H, HGAP_VAR, 0)
|
|
||||||
}
|
|
||||||
else if (!localeBuffer.startsWith("sr") && locale.startsWith("sr")) {
|
|
||||||
val image = Image(fontParentDir + cyrilic_sr)
|
|
||||||
sheets[SHEET_CYRILIC_VARW].destroy()
|
|
||||||
sheets[SHEET_CYRILIC_VARW] = SpriteSheet(image, W_VAR_INIT, H, HGAP_VAR, 0)
|
|
||||||
}
|
|
||||||
|
|
||||||
localeBuffer = locale
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getLineHeight(): Int = H
|
|
||||||
override fun getHeight(p0: String) = lineHeight
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private val offsetUnihan = (H - H_UNIHAN) / 2
|
|
||||||
private val offsetCustomSym = (H - SIZE_CUSTOM_SYM) / 2
|
|
||||||
|
|
||||||
private var textBuffer: CharSequence = ""
|
|
||||||
private var textBWidth = intArrayOf() // absolute posX of glyphs from print-origin
|
|
||||||
private var textBGSize = intArrayOf() // width of each glyph
|
|
||||||
|
|
||||||
override fun drawString(x: Float, y: Float, str: String) {
|
|
||||||
drawString(x, y, str, Color.white)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun drawString(p0: Float, p1: Float, p2: String?, p3: Color?, p4: Int, p5: Int) {
|
|
||||||
throw UnsupportedOperationException()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun drawString(x: Float, y: Float, str: String, color: Color) {
|
|
||||||
if (textBuffer != str) {
|
|
||||||
textBuffer = str
|
|
||||||
val widths = getWidthOfCharSeq(str)
|
|
||||||
|
|
||||||
textBGSize = widths
|
|
||||||
|
|
||||||
textBWidth = IntArray(str.length, { charIndex ->
|
|
||||||
if (charIndex == 0)
|
|
||||||
0
|
|
||||||
else {
|
|
||||||
var acc = 0
|
|
||||||
(0..charIndex - 1).forEach { acc += maxOf(0, widths[it]) } // don't accumulate diacrtics (which has negative value)
|
|
||||||
/*return*/acc
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//print("[TerrarumSansBitmap] widthTable for $textBuffer: ")
|
|
||||||
//textBWidth.forEach { print("$it ") }; println()
|
|
||||||
|
|
||||||
|
|
||||||
val mainCol = color
|
|
||||||
val shadowCol = color.darker(0.5f)
|
|
||||||
|
|
||||||
|
|
||||||
textBuffer.forEachIndexed { index, c ->
|
|
||||||
val sheetID = getSheetType(c)
|
|
||||||
val sheetXY = getSheetwisePosition(c)
|
|
||||||
|
|
||||||
//println("[TerrarumSansBitmap] sprite: $sheetID:${sheetXY[0]}x${sheetXY[1]}")
|
|
||||||
|
|
||||||
if (sheetID == SHEET_HANGUL) {
|
|
||||||
val hangulSheet = sheets[SHEET_HANGUL]
|
|
||||||
val hIndex = c.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)
|
|
||||||
|
|
||||||
|
|
||||||
if (!noShadow) {
|
|
||||||
hangulSheet.getSubImage(indexCho, choRow ).draw(x + textBWidth[index] + 1, y, shadowCol)
|
|
||||||
hangulSheet.getSubImage(indexCho, choRow ).draw(x + textBWidth[index] , y, shadowCol)
|
|
||||||
hangulSheet.getSubImage(indexCho, choRow ).draw(x + textBWidth[index] + 1, y, shadowCol)
|
|
||||||
|
|
||||||
hangulSheet.getSubImage(indexJung, jungRow).draw(x + textBWidth[index] + 1, y, shadowCol)
|
|
||||||
hangulSheet.getSubImage(indexJung, jungRow).draw(x + textBWidth[index] , y, shadowCol)
|
|
||||||
hangulSheet.getSubImage(indexJung, jungRow).draw(x + textBWidth[index] + 1, y, shadowCol)
|
|
||||||
|
|
||||||
hangulSheet.getSubImage(indexJong, jongRow).draw(x + textBWidth[index] + 1, y, shadowCol)
|
|
||||||
hangulSheet.getSubImage(indexJong, jongRow).draw(x + textBWidth[index] , y, shadowCol)
|
|
||||||
hangulSheet.getSubImage(indexJong, jongRow).draw(x + textBWidth[index] + 1, y, shadowCol)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
hangulSheet.getSubImage(indexCho, choRow ).draw(x + textBWidth[index], y, mainCol)
|
|
||||||
hangulSheet.getSubImage(indexJung, jungRow).draw(x + textBWidth[index], y, mainCol)
|
|
||||||
hangulSheet.getSubImage(indexJong, jongRow).draw(x + textBWidth[index], y, mainCol)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
try {
|
|
||||||
val offset = if (!isDiacritics(c)) 0 else {
|
|
||||||
if (index > 0) // LIMITATION: does not support double (or more) diacritics properly
|
|
||||||
(textBGSize[index] - textBGSize[index - 1]) / 2
|
|
||||||
else
|
|
||||||
textBGSize[index]
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!noShadow) {
|
|
||||||
sheets[sheetID].getSubImage(sheetXY[0], sheetXY[1]).draw(
|
|
||||||
x + textBWidth[index] + 1 + offset,
|
|
||||||
y + (if (sheetID == SHEET_UNIHAN) // evil exceptions
|
|
||||||
offsetUnihan
|
|
||||||
else if (sheetID == SHEET_CUSTOM_SYM)
|
|
||||||
offsetCustomSym
|
|
||||||
else
|
|
||||||
0),
|
|
||||||
shadowCol
|
|
||||||
)
|
|
||||||
sheets[sheetID].getSubImage(sheetXY[0], sheetXY[1]).draw(
|
|
||||||
x + textBWidth[index] + offset,
|
|
||||||
y + (if (sheetID == SHEET_UNIHAN) // evil exceptions
|
|
||||||
offsetUnihan + 1
|
|
||||||
else if (sheetID == SHEET_CUSTOM_SYM)
|
|
||||||
offsetCustomSym + 1
|
|
||||||
else
|
|
||||||
1),
|
|
||||||
shadowCol
|
|
||||||
)
|
|
||||||
sheets[sheetID].getSubImage(sheetXY[0], sheetXY[1]).draw(
|
|
||||||
x + textBWidth[index] + 1 + offset,
|
|
||||||
y + (if (sheetID == SHEET_UNIHAN) // evil exceptions
|
|
||||||
offsetUnihan + 1
|
|
||||||
else if (sheetID == SHEET_CUSTOM_SYM)
|
|
||||||
offsetCustomSym + 1
|
|
||||||
else
|
|
||||||
1),
|
|
||||||
shadowCol
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sheets[sheetID].getSubImage(sheetXY[0], sheetXY[1]).draw(
|
|
||||||
x + textBWidth[index] + offset,
|
|
||||||
y + if (sheetID == SHEET_UNIHAN) // evil exceptions
|
|
||||||
offsetUnihan
|
|
||||||
else if (sheetID == SHEET_CUSTOM_SYM)
|
|
||||||
offsetCustomSym
|
|
||||||
else 0,
|
|
||||||
mainCol
|
|
||||||
)
|
|
||||||
}
|
|
||||||
catch (noSuchGlyph: ArrayIndexOutOfBoundsException) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
fun dispose() {
|
|
||||||
sheets.forEach { it.destroy() }
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun getWidthOfCharSeq(s: CharSequence): IntArray {
|
|
||||||
val len = IntArray(s.length)
|
|
||||||
for (i in 0..s.lastIndex) {
|
|
||||||
val chr = s[i]
|
|
||||||
val ctype = getSheetType(s[i])
|
|
||||||
|
|
||||||
if (variableWidthSheets.contains(ctype)) {
|
|
||||||
if (!glyphWidths.containsKey(chr.toInt())) {
|
|
||||||
println("[TerrarumSansBitmap] no width data for glyph number ${Integer.toHexString(chr.toInt()).toUpperCase()}")
|
|
||||||
len[i] = W_LATIN_WIDE
|
|
||||||
}
|
|
||||||
|
|
||||||
len[i] = glyphWidths[chr.toInt()]!!
|
|
||||||
}
|
|
||||||
else if (ctype == SHEET_CJK_PUNCT)
|
|
||||||
len[i] = W_ASIAN_PUNCT
|
|
||||||
else if (ctype == SHEET_HANGUL)
|
|
||||||
len[i] = W_HANGUL
|
|
||||||
else if (ctype == SHEET_KANA)
|
|
||||||
len[i] = W_KANA
|
|
||||||
else if (unihanWidthSheets.contains(ctype))
|
|
||||||
len[i] = W_UNIHAN
|
|
||||||
else if (ctype == SHEET_CUSTOM_SYM)
|
|
||||||
len[i] = SIZE_CUSTOM_SYM
|
|
||||||
else
|
|
||||||
len[i] = W_LATIN_WIDE
|
|
||||||
|
|
||||||
if (scale > 1) len[i] *= scale
|
|
||||||
|
|
||||||
if (i < s.lastIndex) len[i] += interchar
|
|
||||||
}
|
|
||||||
return len
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun getSheetType(c: Char): Int {
|
|
||||||
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 (isExtB(c))
|
|
||||||
return SHEET_EXTB_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 (isThai(c))
|
|
||||||
return SHEET_THAI_VARW
|
|
||||||
else if (isCustomSym(c))
|
|
||||||
return SHEET_CUSTOM_SYM
|
|
||||||
else if (isArmenian(c))
|
|
||||||
return SHEET_HAYEREN_VARW
|
|
||||||
else if (isKartvelian(c))
|
|
||||||
return SHEET_KARTULI_VARW
|
|
||||||
else if (isIPA(c))
|
|
||||||
return SHEET_IPA_VARW
|
|
||||||
else
|
|
||||||
return SHEET_UNKNOWN
|
|
||||||
// fixed width
|
|
||||||
// fallback
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun getSheetwisePosition(ch: Char): IntArray {
|
|
||||||
val sheetX: Int; val sheetY: Int
|
|
||||||
when (getSheetType(ch)) {
|
|
||||||
SHEET_UNIHAN -> {
|
|
||||||
sheetX = unihanIndexX(ch)
|
|
||||||
sheetY = unihanIndexY(ch)
|
|
||||||
}
|
|
||||||
SHEET_EXTA_VARW -> {
|
|
||||||
sheetX = extAindexX(ch)
|
|
||||||
sheetY = extAindexY(ch)
|
|
||||||
}
|
|
||||||
SHEET_EXTB_VARW -> {
|
|
||||||
sheetX = extBindexX(ch)
|
|
||||||
sheetY = extBindexY(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_THAI_VARW -> {
|
|
||||||
sheetX = thaiIndexX(ch)
|
|
||||||
sheetY = thaiIndexY(ch)
|
|
||||||
}
|
|
||||||
SHEET_CUSTOM_SYM -> {
|
|
||||||
sheetX = symbolIndexX(ch)
|
|
||||||
sheetY = symbolIndexY(ch)
|
|
||||||
}
|
|
||||||
SHEET_HAYEREN_VARW -> {
|
|
||||||
sheetX = armenianIndexX(ch)
|
|
||||||
sheetY = armenianIndexY(ch)
|
|
||||||
}
|
|
||||||
SHEET_KARTULI_VARW -> {
|
|
||||||
sheetX = kartvelianIndexX(ch)
|
|
||||||
sheetY = kartvelianIndexY(ch)
|
|
||||||
}
|
|
||||||
SHEET_IPA_VARW -> {
|
|
||||||
sheetX = ipaIndexX(ch)
|
|
||||||
sheetY = ipaIndexY(ch)
|
|
||||||
}
|
|
||||||
else -> {
|
|
||||||
sheetX = ch.toInt() % 16
|
|
||||||
sheetY = ch.toInt() / 16
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return intArrayOf(sheetX, sheetY)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun buildWidthTable(texture: Texture, codeRange: IntRange, cols: Int = 16) {
|
|
||||||
val binaryCodeOffset = W_VAR_INIT
|
|
||||||
|
|
||||||
val cellW = W_VAR_INIT + 1
|
|
||||||
val cellH = H
|
|
||||||
|
|
||||||
for (code in codeRange) {
|
|
||||||
|
|
||||||
val cellX = ((code - codeRange.start) % cols) * cellW
|
|
||||||
val cellY = ((code - codeRange.start) / cols) * cellH
|
|
||||||
|
|
||||||
val codeStartX = cellX + binaryCodeOffset
|
|
||||||
val codeStartY = cellY
|
|
||||||
|
|
||||||
var glyphWidth = 0
|
|
||||||
|
|
||||||
for (downCtr in 0..3) {
|
|
||||||
// if ALPHA is not zero, assume it's 1
|
|
||||||
if (texture.textureData[4 * (codeStartX + (codeStartY + downCtr) * texture.textureWidth) + 3] != 0.toByte()) {
|
|
||||||
glyphWidth = glyphWidth or (1 shl downCtr)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
val isDiacritics = texture.textureData[4 * (codeStartX + (codeStartY + H - 1) * texture.textureWidth) + 3] != 0.toByte()
|
|
||||||
if (isDiacritics)
|
|
||||||
glyphWidth = -glyphWidth
|
|
||||||
|
|
||||||
glyphWidths[code] = glyphWidth
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
override fun getWidth(text: String): Int {
|
|
||||||
return getWidthOfCharSeq(text).sum()
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
|
|
||||||
internal val JUNG_COUNT = 21
|
|
||||||
internal val JONG_COUNT = 28
|
|
||||||
|
|
||||||
internal val W_ASIAN_PUNCT = 10
|
|
||||||
internal val W_HANGUL = 12
|
|
||||||
internal val W_KANA = 12
|
|
||||||
internal val W_UNIHAN = 16
|
|
||||||
internal val W_LATIN_WIDE = 9 // width of regular letters
|
|
||||||
internal val W_VAR_INIT = 15
|
|
||||||
|
|
||||||
internal val HGAP_VAR = 1
|
|
||||||
|
|
||||||
internal val H = 20
|
|
||||||
internal val H_UNIHAN = 16
|
|
||||||
|
|
||||||
internal val SIZE_CUSTOM_SYM = 18
|
|
||||||
|
|
||||||
internal val SHEET_ASCII_VARW = 0
|
|
||||||
internal val SHEET_HANGUL = 1
|
|
||||||
internal val SHEET_EXTA_VARW = 2
|
|
||||||
internal val SHEET_EXTB_VARW = 3
|
|
||||||
internal val SHEET_KANA = 4
|
|
||||||
internal val SHEET_CJK_PUNCT = 5
|
|
||||||
internal val SHEET_UNIHAN = 6
|
|
||||||
internal val SHEET_CYRILIC_VARW = 7
|
|
||||||
internal val SHEET_FW_UNI = 8
|
|
||||||
internal val SHEET_UNI_PUNCT = 9
|
|
||||||
internal val SHEET_GREEK_VARW = 10
|
|
||||||
internal val SHEET_THAI_VARW = 11
|
|
||||||
internal val SHEET_HAYEREN_VARW = 12
|
|
||||||
internal val SHEET_KARTULI_VARW = 13
|
|
||||||
internal val SHEET_IPA_VARW = 14
|
|
||||||
internal val SHEET_CUSTOM_SYM = 15
|
|
||||||
|
|
||||||
internal val SHEET_UNKNOWN = 254
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Runic letters list used for game. The set is
|
|
||||||
* Younger Futhark + Medieval rune 'e' + Punct + Runic Almanac
|
|
||||||
|
|
||||||
* BEWARE OF SIMILAR-LOOKING RUNES, especially:
|
|
||||||
|
|
||||||
* * Algiz ᛉ instead of Maðr ᛘ
|
|
||||||
|
|
||||||
* * Short-Twig Hagall ᚽ instead of Runic Letter E ᛂ
|
|
||||||
|
|
||||||
* * Runic Letter OE ᚯ instead of Óss ᚬ
|
|
||||||
|
|
||||||
* Examples:
|
|
||||||
* ᛭ᛋᛁᚴᚱᛁᚦᛦ᛭
|
|
||||||
* ᛭ᛂᛚᛋᛅ᛭ᛏᚱᚢᛏᚾᛁᚾᚴᚢᚾᛅ᛬ᛅᚱᚾᛅᛏᛅᛚᛋ
|
|
||||||
*/
|
|
||||||
//internal val runicList = arrayOf('ᚠ', 'ᚢ', 'ᚦ', 'ᚬ', 'ᚱ', 'ᚴ', 'ᚼ', 'ᚾ', 'ᛁ', 'ᛅ', 'ᛋ', 'ᛏ', 'ᛒ', 'ᛘ', 'ᛚ', 'ᛦ', 'ᛂ', '᛬', '᛫', '᛭', 'ᛮ', 'ᛯ', 'ᛰ')
|
|
||||||
// TODO expand to full Unicode runes
|
|
||||||
|
|
||||||
var interchar = 0
|
|
||||||
var scale = 1
|
|
||||||
set(value) {
|
|
||||||
if (value > 0) field = value
|
|
||||||
else throw IllegalArgumentException("Font scale cannot be zero or negative (input: $value)")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||