Font - kuimoani/defold GitHub Wiki
ํฐํธ๋ GUI ์ฌ(GUI scene)์์ ๋ผ๋ฒจ ์ปดํฌ๋ํธ(label component)์ ํ ์คํธ ๋ ธ๋(text node)๋ฅผ ๋ ๋๋ง ํ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ด ๋งค๋ด์ผ์ Defold๊ฐ ํฐํธ๋ฅผ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ๊ณผ ๊ฒ์ํ๋ฉด์ ์ฐ์ผ ํฐํธ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํฉ๋๋ค.
ํฐํธ ํ์ผ์ TrueType, OpenType, BMFont ํฌ๋ฉง์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ Defold๊ฐ ๋ ๋๋ง ํ ์ ์๋๋ก ๊ทธ๋ํฝํ์์ ํฌ๋ฉง์ผ๋ก ์๋์ผ๋ก ๋ณํํฉ๋๋ค. ๋นํธ๋งต(bitmap)๊ณผ ๋์คํด์ค ํ๋(distance field) ๋ ๊ฐ์ง์ ๋ ๋๋ง ๊ธฐ์ ์ด ์์ผ๋ฉฐ ๊ฐ๊ฐ ์ฅ๋จ์ ์ด ์์ต๋๋ค.
Defold์์ ์ฌ์ฉํ ํฐํธ๋ฅผ ๋ง๋ค๋ ค๋ฉด, File > New > Font File ๋ฉ๋ด๋ฅผ ์ ํํด์ ์ ํฐํธํ์ผ์ ์์ฑํ ์ ์์ต๋๋ค. (ํน์ Project Explorer์์ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋ฒํผ ๋๋ฌ์ ํ์ผ ์์ฑ)
๋ํ Defold ํ๋ก์ ํธ๋ก ํฐํธ๋ฅผ ์ํฌํธ ํด์ผํฉ๋๋ค. TrueType์ด๋ OpenType (ํน์ BMFont, ์๋ ์ฐธ๊ณ ) ํ์ผ์ Project Explorer์ ์ํ๋ ์์น์ ๋๋๊ทธ-์ค-๋๋กญ ํ๋ฉด ๋ฉ๋๋ค.
ํฐํธ์ ๊ทธ๋ฆผ์ ๋ ๋๋ง์ ํ์ฌ ์ฑ๋ฅ์์ ์ด์ ๋๋ฌธ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ ๋์ด ์์ต๋๋ค. ํ์ํ ๊ฒฝ์ฐ์ ๊ทธ๋ฆผ์๋ฅผ ๋ ๋๋งํ๋ ์ปค์คํ ์์ด๋๋ฅผ ๋ง๋ค์ด ์ฐ๋ฉด ๋ฉ๋๋ค(์ฑ๋ฅ์ ๋น์ฉ์ด ์กฐ๊ธ ๋ค๊ฒ๋จ). ์์ผ๋ก Defold๋ ์ฌ์ฉ๋ ๊ธฐ๋ฅ์ ๊ธฐ๋ฐ์ผ๋ก ์ ๋นํ ์์ด๋๋ฅผ ์ ํํ ์ ์๊ฒ ๋ ๊ฒ์ ๋๋ค.
์ํฌํธํ TTF, OTF, .fnt ํ์ผ(ํ์ผ์ ์ฐพ์ผ๋ ค๋ฉด [...] ๋ฒํผ ํด๋ฆญ)์ ์ด ์์ฑ์ ์ค์ ํ๋ฉด ์๋ํฐ๋ ์ฆ์ ํฐํธ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๊ณ ํฐํธ ์๋ํฐ์์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
ํฐํธ๋ฅผ ๋ ๋๋งํ๋๋ฐ ์ฌ์ฉ๋๋ ๋ฉํฐ๋ฆฌ์ผ. ๋์คํด์ค ํ๋ ํฐํธ(distance field font)๋ ๋นํธ๋งต ํฐํธ(BMFont)๋ฅผ ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ ์ด ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค. (์์ธํ ๋ด์ฉ์ ์๋ ์ฐธ๊ณ )
ํฝ์ ๋จ์์ ๋ฌธ์(glyph) ํฌ๊ธฐ
๋นํธ๋งต์ผ๋ก ๊ตฌ์ธ(bake)๋ ์ํฐ์๋ฆฌ์์ฑ์ ์ ์ฉํ ๋จ์. 0์ด๋ฉด ํฝ์ ํผํํธ(pixel perfect)๋ก ํฐํธ๋ฅผ ๋ ๋๋ง ํฉ๋๋ค.
0.0~1.0 ๊น์ง์ ์ํ ์ฑ๋ ๊ฐ. 0.0์ ํฌ๋ช (transparent)ํ๊ณ 1.0์ ๋ถํฌ๋ช (opaque)ํจ
0.0~1.0 ๊น์ง์ ์ธ๊ณฝ์ ์ ์ํ ์ฑ๋ ๊ฐ
ํฝ์ ๋จ์์ ์ธ๊ณฝ์ ๋๊ป. 0์ผ๋ก ์ค์ ํ๋ฉด ์ธ๊ณฝ์ ์์.
0.0~1.0 ๊น์ง์ ๊ทธ๋ฆผ์ ์ํ ์ฑ๋ ๊ฐ
ํฝ์ ๋จ์์ ๊ทธ๋ฆผ์์ ๋ธ๋ฌ ๋ฐ๊ฒฝ(blur radius)
๊ทธ๋ฆผ์์ ๊ฐ๋ก ์คํ์ (horizontal offset)
๊ทธ๋ฆผ์์ ์ธ๋ก ์คํ์ (vertical offset)
๊ธฐ๋ณธ์ ์ผ๋ก ํฐํธ๋ ASCII์ ์ธ์ ๊ฐ๋ฅํ ๋ฌธ์(char code 32~126)๋ค์ ํฌํจํ๊ณ ์์ต๋๋ค. ์ด์ธ์ ๋ฌธ์๋ฅผ ๋ ์ถ๊ฐํ๋ ค๋ฉด ์ด ์์ฑ์ ์ถ๊ฐํ ๋ฌธ์๋ฅผ ์ ๋ ฅํ๋ฉด ๋ฉ๋๋ค.
์ด ์์ฑ์ ์์ฑ๋ ํฐํธ์ ํ์ ์ ์ ์ดํฉ๋๋ค.
-
TYPE_BITMAP: ํฐํธ๊ฐ OTF๋ TTF ํ์ผ์ธ ๊ฒฝ์ฐ์, ์ํฌํธํ ํฐํธ๋ฅผ ๋นํธ๋งต ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ํ ์คํธ ๋ ธ๋(text node)๋ฅผ ๋ ๋๋งํ๋ ํฐํธ ์ํธ ํ ์ค์ณ(font sheet texture)๋ก ๋ณํํฉ๋๋ค. ์ปฌ๋ฌ ์ฑ๋์ ํฐํธ์ face shape, outline, shadow ๊ฐ์ ํฐํธ์ ์ฌ๋ฌ ์ธก๋ฉด์ ์ธ์ฝ๋ฉ ํ๋๋ฐ ์ฌ์ฉ๋์ด ๊ธ๊ผด์ ์์ ๋ชจ์์ red ์ฑ๋๋ก, outline์ green ์ฑ๋๋ก, shadow๋ blue ์ฑ๋๋ก ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ๋ณด์ฌ ์ค๋๋ค. ๋นํธ๋งต ํ์ ํฐํธ์ ํฝ์ ์ ๋ฐ๋(density)๋ ๊ณ ์ ๋์ด ์์ผ๋ฏ๋ก ์ ํด์ง ์ฌ์ด์ฆ ํน์ ์์ ์ฌ์ด์ฆ๋ก ๋ณด์ฌ์ฃผ๋ ๊ฒฝ์ฐ์ ๊น๋ํ๊ฒ ๋ณด์ผ ๊ฒ์ ๋๋ค. ๋นํธ๋งต ํฐํธ๋ ์์ฃผ ๋น ๋ฅด๊ฒ ๋ ๋๋ง ๋์ง๋ง ์ฌ์ด์ฆ์ ์ ํ์ด ์์ผ๋ฏ๋ก ์ค์ผ์ผ์ ํ๋ ๊ฒฝ์ฐ์ ๋ญ๊ฐ์ง ํ์์ด ๋ํ๋ฉ๋๋ค.
-
TYPE_DISTANCE_FIELD: ์ํฌํธํ ํฐํธ๋ฅผ ํฝ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์คํฌ๋ฆฐ ํฝ์ (screen pixel)์ด ์๋๋ผ ํฐํธ ๊ฐ์ฅ์๋ฆฌ์ ๊ฑฐ๋ฆฌ(distances to the font edge)๋ก์ ๋ํ๋ด๋ ํฐํธ ์ํธ ํ ์ค์ณ(font sheet texture)๋ก ๋ณํํฉ๋๋ค.
์ด ์์ฑ์ true๋ก ์ค์ ํ๋ฉด ์๋ณธ ํฐํธ ํ์ผ์ ๋ชจ๋ ๋ฌธ์๊ฐ ์ถ๋ ฅ์ ํฌํจ๋ฉ๋๋ค.
๋ฌธ์ ์บ์ฌ ๋นํธ๋งต(glyph cache bitmap)์ ๋์ด๋ฅผ ์ ํํ๋ ค๋ฉด ์ด ๊ฐ์ ์ค์ ํ์ญ์์ค. ์์ง์ด ํ ์คํธ๋ฅผ ๋ ๋๋งํ ๋, ๋จผ์ ์บ์ฌ ๋นํธ๋งต์์ ๋ฌธ์(glyph)๋ฅผ ์ฐพ๊ฒ ๋๋๋ฐ, ์บ์ฌ์ ํด๋น ๋ฌธ์๊ฐ ์กด์ฌํ์ง ์๋๋ค๋ฉด ๋ ๋๋งํ๊ธฐ ์ ์ ์บ์ฌ์ ๋ฌธ์๋ฅผ ์ถ๊ฐํฉ๋๋ค. ์บ์ฌ ๋นํธ๋งต์ด ๋๋ฌด ์์์ ์์ง์ด ๋ ๋๋ง ํ ์ ์๋ ๊ฒฝ์ฐ ์๋ฌ(ERROR: RENDER: Out of available cache cells! Consider increasing cache_width or cache_height for the font.)๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด ๊ฐ์ 0์ผ๋ก ์ค์ ํ๋ฉด ์บ์ฌ ์ฌ์ด์ฆ๊ฐ ์๋์ ์ผ๋ก ์ค์ ๋ฉ๋๋ค.
๋ฌธ์ ์บ์ฌ ๋นํธ๋งต(glyph cache bitmap)์ ๋์ด๋ฅผ ์ ํํ๋ ค๋ฉด ์ด ๊ฐ์ ์ค์ ํ์ญ์์ค. ์ด ๊ฐ์ 0์ผ๋ก ์ค์ ํ๋ฉด ์บ์ฌ ์ฌ์ด์ฆ๊ฐ ์๋์ ์ผ๋ก ์ค์ ๋ฉ๋๋ค.
ASCII์ ์ถ๋ ฅ ๊ฐ๋ฅํ ๋ฌธ์๋ค: space ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~
์์ฑ๋ ๋นํธ๋งต ์ด์ธ์๋ Defold๋ ๋ฏธ๋ฆฌ ๊ตฌ์์ง(prebaked) ๋นํธ๋งต์ธ "BMFont" ํฌ๋ฉง์ ํฐํธ๋ฅผ ์ง์ํฉ๋๋ค. ์ด ํฐํธ๋ ๋ชจ๋ ๋ฌธ์ ๋ชจ์์ด ์๋ PNG ํฐํธ ์ํธ(PNG font sheet)๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๋ํ .fnt ํ์ผ์๋ ์ฌ์ด์ฆ์ ์ปค๋(kerning) ์ ๋ณด ๋ฟ๋ง์๋๋ผ ๊ฐ ๋ฌธ์ ๋ชจ์์ ์ํธ์์ ์ฐพ๊ธฐ ์ํ ์ ๋ณด๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
์ด ํฐํธ ํ์ ์ TrueType ์ด๋ OpenType ํฐํธ ํ์ผ์์ ์์ฑ๋ ๋นํธ๋งต ํฐํธ์ ๋นํด ์ฑ๋ฅ์ด ์ข์ง๋ ์์ง๋ง, ์์์ ๊ทธ๋ํฝ์ด๋ ์ปฌ๋ฌ ํจ๊ณผ, ๊ทธ๋ฆผ์๋ฅผ ๋ฃ์ด ์ํ๋ ๋๋ก ๊พธ๋ฐ ์ ์์ต๋๋ค.
Defold ํ๋ก์ ํธ์ .fnt์ .png ํ์ผ์ ์ถ๊ฐํด ๋ณด์ธ์. ์ด ๋ ํ์ผ์ ๊ฐ์ ํด๋์ ์์ด์ผ ํฉ๋๋ค. ์ ํฐํธ ํ์ผ์ ๋ง๋ค๊ณ font ์์ฑ๊ฐ์ผ๋ก .fnt ํ์ผ์ ์ง์ ํ๊ณ output_format ์์ฑ์ "TYPE_BITMAP"์ผ๋ก ์ค์ ํ์ธ์. Defold๋ ๋นํธ๋งต์ ์์ฑํ์ง ์๋ ๋์ ๋น์ ์ด ์ถ๊ฐํ PNG ํ์ผ์ ์ฌ์ฉํฉ๋๋ค.
BMFont ๋ฅผ ๋ง๋ค๊ธฐ ์ํด์๋ ์ ์ฉ ํด์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ฌ๊ธฐ ์ฌ๋ฌ ์ต์ ์ด ์์ต๋๋ค.
- Bitmap Font Generator, AngelCode์ ์ํด ์ ๊ณต๋๋ Windows ์ ์ฉ ํด
- Shoebox, Windows์ MacOS๋ฅผ ์ํ ๋ฌด๋ฃ Adobe Air ๊ธฐ๋ฐ์ ์ฑ
- Hiero, Java ๊ธฐ๋ฐ์ ์คํ์์ค
- Glyph Designer, 71 Squared์ ์ ๋ฃ MacOS ํด
- bmGlyph, Sovapps์ ์ ๋ฃ MacOS ํด
๋์คํด์ค ํ๋(distance field) ํฐํธ๋ฅผ ๋ง๋ค๊ธฐ ์ํด์๋, output_format ์์ฑ์ "TYPE_DISTANCE_FIELD"๋ฅผ ์ ํํ๋ฉด ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ํฐํธ๋ก๋ถํฐ ๋์คํด์ค ํ๋ ๋งต(distance field map)์ ์์ฑํฉ๋๋ค. ์์ง์ด ํฐํธ๋ฅผ ๋ ๋๋งํ๊ฒ๋๋ฉด, ์ด ๋์คํด์ค ๋ฐ์ดํฐ๋ฅผ ํด์ํ์ฌ ๋ ์นด๋ก์ด ํฐํธ์ ๊ฐ์ฅ์๋ฆฌ(sharp font edge)๋ฅผ ๋ง๋ค์ด์ฃผ๋ ํน์ํ ์์ด๋๋ฅผ ํ์๋ก ํฉ๋๋ค. ๋์คํด์ค ํ๋ ํฐํธ๋ ๋นํธ๋งต ํฐํธ์ ๋นํด ๋ง์ ์ฑ๋ฅ์ ์๋ชจํ์ง๋ง ๊ธ์์ ์ฌ์ด์ฆ๋ฅผ ์กฐ์ ํ๋๋ฐ ๋งค์ฐ ์ ์ฐํฉ๋๋ค.
์ด ํฐํธ๋ฅผ ๋ง๋ค ๊ฒฝ์ฐ(ํน์ ํ๋ฉด์ ๋ ๋๋ง ๋ ๋ ํฐํธ๊ฐ ์๋ง์ ์์ด๋๋ฅผ ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ)์๋ material ์์ฑ๊ฐ์ "builtins/fonts/font-df.material"(ํน์ ๋์คํด์ค ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ์ ์๋ ๋ค๋ฅธ ๋ฉํฐ๋ฆฌ์ผ)๋ก ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก, ๋นํธ๋งต ํฐํธ๋ ์ค์ผ์ผ๋ง ์์ด ๋ ๋๋ง ๋ ๊ฒฝ์ฐ์ ์ต์ ์ ์ ํ์ ๋๋ค. ๋นํธ๋งต ํฐํธ๋ ๋์คํด์ค ํ๋ ํฐํธ๋ณด๋ค ํ๋ฉด์ ๋น ๋ฅด๊ฒ ๋ ๋๋ง ๋ฉ๋๋ค.
๋์คํด์ค ํ๋ ํฐํธ(Distance field font)๋ ํฐํธ์ฌ์ด์ฆ๋ฅผ ํค์ธ(upscaling) ๊ฒฝ์ฐ์ ์์ฃผ ์ข์ต๋๋ค. ๋ฐ๋ฉด ๋นํธ๋งต ํฐํธ๋ ๋จ์ง ํฝ์ ๋ก ๋ ์ด๋ฏธ์ง ์ด๊ธฐ ๋๋ฌธ์ ํฐํธ ์ฌ์ด์ฆ๊ฐ ์ฆ๊ฐํ ๊ฒฝ์ฐ ํฝ์ ์ ํฌ๊ธฐ๋ ์ปค์ง๊ฒ ๋์ด ๊ฒฐ๊ณผ์ ์ผ๋ก ์ธํ๋ถํํ ๋ชจ์(blocky artifacts)์ด ๋ฉ๋๋ค. ์๋๋ 48ํฝ์ ํฌ๊ธฐ์ ํฐํธ๋ฅผ ์ฝ 8๋ฐฐ ์ ๋ ์ค์ผ์ผ-์ ํ ์์ ์ ๋๋ค.
์ค์ผ์ผ-๋ค์ดํ๋ฉด, ์ํฉ์ ๋ฐ๋๊ฐ ๋ฉ๋๋ค. ํฝ์ ํ ์ค์ณ๋ ์์์ง๋ฉด ๋ ๋๋ง ํ๋์จ์ด์ ์ํด์ ์ํฐ์๋ฆฌ์์ฑ ์ฒ๋ฆฌ๋ฉ๋๋ค. ์๋๋ ์์ ๊ฐ์ 48ํฝ์ ํฌ๊ธฐ์ ํฐํธ๋ฅผ ์ ๋ฐ ํฌ๊ธฐ๋ก ์ค์ธ ์์ ์ ๋๋ค.
๋์คํด์ค ํ๋ ํฐํธ๋ ํน์ ์ํฉ์์ ๋ ๋ค๋ฅธ ์ ํ์ ์ด์ํ์(artifacts)์ ๋ง๋ค์ด ๋ ๋๋ค. ๋ง์ฝ ํฐํธ ๋ชจ์์ ์์ฃผ ์์ ์ ์ด ์์ ๊ฒฝ์ฐ ์ด ํฐํธ๋ฅผ ์์ ์ฌ์ด์ฆ(size ์์ฑ)๋ก ๋ ๋๋ง ํ๋ฉด, ๋์คํด์ค ํ๋ ํ ์ค์ณ๊ฐ ๋ฌธ์ ๋ชจ์์ ์ค์ํ ์ ์ ํํํ๋๋ฐ ๋ฐ์ดํฐ๊ฐ ์ถฉ๋ถํ์ง ์์ผ๋ฏ๋ก ์๋ง ์๋์ ๊ฐ์ด ๋ ๋๋ง ๋ ๊ฒ์ ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด, ๋ ํฐ ์ฌ์ด์ฆ๋ก ํฐํธ๋ฅผ ๋ง๋์๊ธฐ ๋ฐ๋๋๋ค.






