Ghostty ๊ฐ๋ฐ ๋ก๊ทธ 001
Ghostty ๐ป์ ์ฒซ ๊ฐ๋ฐ ๋ก๊ทธ์์! Ghostty๋ ์ ๊ฐ 2021๋ ๋ถํฐ ์ฌ์ด๋ ํ๋ก์ ํธ๋ก ๊ฐ๋ฐํด ์จ ํฐ๋ฏธ๋ ์๋ฎฌ๋ ์ดํฐ์์. ์ผ๋ง ์ Ghostty์ ์กด์ฌ๋ฅผ ๊ณต๊ฐํ๋๋ฐ ๊ทธ ์ดํ๋ก ์ ๋ง ๋ง์ ๊ด์ฌ์ ๋ฐ์์ด์!
์์ง ์ผ๋ฐ์ ๊ณต๊ฐํ ์ค๋น๋ ๋์ง ์์์ด์(ํ์ง๋ง ์์ ํ ์คํ์์ค(FOSS)๋ก ๊ณต๊ฐํ ๊ณํ์ด๋ผ๋ ๊ฑด ์ฝ์๋๋ ค์). ๊ทธ๋๋ ๊ธฐ๋ก์ ๋จ๊ธฐ๊ธฐ ์ํด ํฐ๋ฏธ๋์ ๋ํ ์์ธํ ์ด์ผ๊ธฐ์ ์งํ ์ํฉ์ ๊ณต์ ํ๋ ๊ฐ๋ฐ ๋ก๊ทธ๋ฅผ ์์ํ๊ณ ์ถ์์ด์. ๊ณต์ ํ ๋งํ ํฅ๋ฏธ๋ก์ด ์์ง๋์ด๋ง ์ด์ผ๊ธฐ๊ฐ ๊ฝค ์๋ค๊ณ ์๊ฐํ๊ณ , ์ฌ๋ฌ๋ถ์ด ์ฌ๋ฏธ์๊ฒ ๋ด์ฃผ์๊ณ ํ๋ ๊ฐ์ง ์ ๋๋ ๋ฐฐ์ ๊ฐ์๊ธธ ๋ฐ๋ผ์. (ํน์ ์ฐ๋ฝํด์ ์ ์๊ฒ ํ๋ ๊ฐ์ง ์๋ ค์ฃผ์ ๋ ์ข๊ณ ์.)
์ด ๊ฐ๋ฐ ๋ก๊ทธ๋ค์ ๋ชจ๋ ์์ฃผ ์บ์ฃผ์ผํ๊ณ ๊ฑฐ์ ๋ํํ๋ฏ ํธ์ํ ํค์ผ๋ก ์ฐ์ผ ๊ฑฐ์์. ํน์ ํ ์ฃผ๊ธฐ๋ก ์ฌ๋ผ์ค์ง๋ ์์ ๊ฑฐ๊ณ ์. ํฐ๋ฏธ๋๊ณผ ๊ด๋ จ๋ ๊ฒ์ด๋ผ๋ฉด ๋ญ๋ ๋ค๋ฃฐ ์์ ์ด์์. ๊ธฐ๋ฅ ์ด์ผ๊ธฐ, ์ด์ํ ๋ฒ๊ทธ, ์ ๊ฐ ๋ฏธ์ฒ ๋ชฐ๋๋ ๊ฒ๋ค ๋ฑ๋ฑ์.
๊ธฐ์ ์คํ
์ฒซ ๊ฐ๋ฐ ๋ก๊ทธ์ด๋ Ghostty์ ๊ธฐ์ ์คํ์ ๋ํด ์ด์ผ๊ธฐํด ๋ณผ๊ฒ์. Ghostty๋ ํฌ๋ก์ค ํ๋ซํผ(ํ์ฌ๋ macOS์ Linux๋ฅผ ์ง์ํ์ง๋ง ๋์ค์ Windows๋ ์ง์ํ ์ ์๋๋ก ์์ฑ๋์ด์) GPU ๊ฐ์ ํฐ๋ฏธ๋ ์๋ฎฌ๋ ์ดํฐ์์.
- Zig๋ก ์์ฑ
- Libxev ์ด๋ฒคํธ ๋ฃจํ(Ghostty๋ฅผ ์ํด ์ง์ ์์ฑํด ๋ถ๋ฆฌํ ๊ฒ์ด์์)
- Linux์์๋ OpenGL, macOS์์๋ Metal
- Linux ํฐํธ ๋ ๋๋ง์ Fontconfig, Freetype, Harfbuzz
- macOS ํฐํธ ๋ ๋๋ง์ CoreText์ Harfbuzz
- macOS ํ๋ก ํธ์๋๋ SwiftUI, Linux์์๋ GTK, ์ถ๊ฐ๋ก GLFW ์ต์ ๋ ์์ด์
- ๊ทธ ์ธ ๊ฑฐ์ ๋ชจ๋ ๋ถ๋ถ์ Zig๋ก ์ง์ ๋ง๋ค์์ด์
๊ฐ๊ฐ์ ์ ์ ํํ๋์ง์ ๋ํด์๋ ์ด์ผ๊ธฐํ์ง ์์๊ฒ์. ๊ทธ๋ฅ ๊ด์ฌ ์๋ ๋ถ๋ค์ ์ํด ๊ธฐ์ ์คํ์ ์๋ ๊ทธ๋๋ก ์ ๋ฆฌํด ๋ ๊ฑฐ์์. ํธํ๊ฒ ๋ฐ์๋ค์ฌ ์ฃผ์๋ฉด ๋ผ์.
์ ธ ํตํฉ ์๋ ์ฃผ์ (#191)
์ฒซ ๋ฒ์งธ ๊ธฐ๋ฅ์ ์ด์ผ๊ธฐํด ๋ณผ๊ฒ์!
์ต์ ํฐ๋ฏธ๋ ์๋ฎฌ๋ ์ดํฐ๊ฐ ์ ธ๊ณผ ํต์ ํด์(์ ๋๋ก ์ค์ ๋ ๊ฒฝ์ฐ) ์ ๋ง ์ ์ฉํ ๊ธฐ๋ฅ๋ค์ ๋ง์ด ์ ๊ณตํ ์ ์๋ค๋ ์ฌ์ค, ์๊ณ ๊ณ์ จ๋์? ์ ์ฃผ๋ณ ๊ฐ๋ฐ์ ์น๊ตฌ๋ค์๊ฒ ๋ฌผ์ด๋ณด๋ฉด ๋๋ถ๋ถ ์ด ์ฌ์ค์ ๋ชจ๋ฅด๊ฑฐ๋, ์ค์ ํด ๋์ง ์์๊ฑฐ๋, ์ด๋ฐ ๊ธฐ๋ฅ์ ์ง์ํ์ง ์๋ ํฐ๋ฏธ๋์ ์ฐ๊ณ ์๋๋ผ๊ณ ์. ๐ข
ํฐ๋ฏธ๋์ ์ ธ ํตํฉ์ ์ ๋ง ๋ง์ ์ผ์ ํด์(Kitty ์ฐธ๊ณ ). ์ํฌํ๋ก ์ง์ ์์ด๋ ์ถ์ ์ง์ ํ ๋์ฌ์ฃผ๋ ๊ธฐ๋ณธ ๊ธฐ๋ฅ ๋ช ๊ฐ์ง๋ ์ด๊ฑฐ์์.
- ๋ฆฌ์ฌ์ด์ฆ ์ ๋ณต์กํ ํ๋กฌํํธ ๋ค์ ๊ทธ๋ฆฌ๊ธฐ. ์ต์ ์ ๋ณต์กํ ํ๋กฌํํธ๋ฅผ ์ธ ๋ ํฐ๋ฏธ๋ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํด๋ ํจ์ฌ ๋ ๊นจ์ ธ์.
- ์์ ๋๋ ํฐ๋ฆฌ ๋ณด๊ณ . ์ด์ ์ ํฌ์ปค์ค๋ ํฐ๋ฏธ๋์ ์์ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ ํญ์ด๋ ๋ถํ ์ฐฝ์ด ๊ทธ๋๋ก ์ด์ด๋ฐ์์.
- ํ์ฑ ํ๋ก์ธ์ค ๊ฐ์ง. ํฐ๋ฏธ๋ ์๋ฎฌ๋ ์ดํฐ๊ฐ ์ฌ์ฉ์๊ฐ ๋จ์ํ ์ ธ ํ๋กฌํํธ์ ๋จธ๋ฌผ๋ฌ ์๋ค๋ ๊ฑธ ์๋ฉด, ์ข ๋ฃ ์ ํ์ธ์ ๋ฌป์ง ์๊ณ ๋ ์์ ํ๊ฒ ๋ซ์ ์ ์์ด์.
์ ๋ ๋ฐ๋ชจ๋ฅผ ์ข์ํด์ ์์ ํ๋๋ฅผ ๋ณด์ฌ ๋๋ฆด๊ฒ์. ๋ฐ๋ก ๋ณต์กํ ํ๋กฌํํธ ๋ค์ ๊ทธ๋ฆฌ๊ธฐ์์. ์๋ ์์์ Ghostty๊ฐ ์๋๊ณ , macOS์์ ์ธ๊ธฐ ์๋ ๋ค๋ฅธ ํฐ๋ฏธ๋ ์๋ฎฌ๋ ์ดํฐ์์. ์ ธ ํตํฉ ์์ด fish ํ๋กฌํํธ๋ฅผ ๋ฆฌ์ฌ์ด์ฆํ๋ ๋ชจ์ต์ด์์.
ํ๋กฌํํธ๊ฐ ์๋ง์ด ๋๋ ๊ฑธ ๋ณด์ธ์. ํฐ๋ฏธ๋ ์๋ฎฌ๋ ์ดํฐ๊ฐ ์๋ชปํ ๊ฑด ์๋์์. ํ ์คํธ๋ฅผ ๋ฆฌํ๋ก์ฐํ๋๋ฐ, ์ ธ์ด ๊ทธ ํ๋กฌํํธ๊ฐ ์ฌ๋ฌ ์ค๋ก ๋ฆฌํ๋ก์ฐ๋๋ค๋ ๊ฑธ(์ง๊ธ์ผ๋ก์๋) ์ ๋ฐฉ๋ฒ์ด ์์ด์ ์๋์ชฝ ์ ์ค์ ๋ค์ ๊ทธ๋ ค์ง๋ฉด์ ์ค๋ณต์ด ์๊ธฐ๋ ๊ฑฐ์์.
๋ค์์ ์ ธ ํตํฉ์ ์ค์ ํ Ghostty์์.
ํจ์ฌ ๋ซ์ฃ ! ์ ธ์ด ๋ฆฌ์ฌ์ด์ฆ ์ ํ๋กฌํํธ๋ฅผ ๋ค์ ๊ทธ๋ฆด ์ ์๋ค๋ ๊ฑธ ํฐ๋ฏธ๋์ ์๋ ค์ค ์ ์์ด์. ๋ฆฌ์ฌ์ด์ฆํ ๋ Ghostty๋ ํฐ๋ฏธ๋ ๋ผ์ธ์ ์ง์์(๊น๋นก์ด๋ ๊ฒ ๋ณด์ด์ค ํ ๋ฐ ๋์ค์ ๊ฐ์ ํ๊ณ ์ถ์ด์). ๋๋ถ์ ํ ์คํธ ๋ฆฌํ๋ก์ฐ๊ฐ ์ผ์ด๋์ง ์๊ณ ์ ์ค๋ ์๊ธฐ์ง ์์์ ๋ฆฌ์ฌ์ด์ฆํด๋ ๊น๋ํ๊ฒ ์ ์ง๋ผ์.
๊ทธ๋ผ ์ด๊ฑด ์ด๋ป๊ฒ ์ค์ ํ๋์? ์ ธ๋ณ๋ก ๋ค๋ฅธ ์ค์ (zsh์ฉ์ zsh ์ฝ๋, fish์ฉ์ fish ์ฝ๋, bash์ฉ์ ๋ณ๋ก์ธ ์ฝ๋ ๋ฑ)์ด ํ์ํด์. #191 ์ด์ ์๋ ์ฌ์ฉ์๊ฐ ์ง์ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๋ฌธ์๋ก ์๋ดํ์ด์.
ํ์ง๋ง ์ด์ Ghostty๊ฐ ๐ช ๋ง๋ฒ์ฒ๋ผ ์๋์ผ๋ก ๐ช ์ฒ๋ฆฌํด ์ค์(์ง๊ธ์ fish์ zsh๋ง ํด๋นํด์). ์ด ๊ธฐ๋ฅ์ ๋ ์๋ ์์ง๋ง, ๋์ ๋ฐฉ์์ ๊ฐ๋จํด์. ์ ธ ์ด๋ฆ์ basename์ ํ์ธํด์ โfishโ๋ฉด fish๋ก, โzshโ๋ฉด zsh๋ก ์ธ์ํ๊ณ , ์ฌ๋ฐ๋ฅธ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํด์ ์ ธ์ด ์คํ๋ ๋ ํ์ํ ์ค์ ํ์ผ๋ค์ด ์๋์ผ๋ก ๋ก๋๋๋๋ก ํ๋ ๊ฑฐ์์.
์ด ๊ธ์ ์ฐ๋ ์์ ์๋ Ghostty๊ฐ ์์ง ๊ณต๊ฐ๋์ง ์์์ผ๋, ํ์ฌ ์ ธ ํตํฉ์ด ๊ฐ์ฅ ์ ๋์ด ์๋ ํฐ๋ฏธ๋์ Kitty์์. Kitty๋ ์ ธ ํตํฉ์ ์๋์ผ๋ก ํด์ค์. ์ด๋ฐ ๊ธฐ๋ฅ์ ์ง๊ธ ๋ฐ๋ก ์ฐ๊ณ ์ถ๋ค๋ฉด Kitty๋ฅผ ์จ ๋ณด์ธ์. ๋ค๋ฅธ ํฐ๋ฏธ๋ ์๋ฎฌ๋ ์ดํฐ๋ค๋ ์ด๋ฐ ๊ธฐ๋ฅ ์ค ์ผ๋ถ๋ฅผ ์ง์ํ๊ณ ์์ด์!
ํฐํธ ์๋ ์ดํค๋ฆญ ์ฒ๋ฆฌ (#179)
์ด๋ฒ์๋ ๋ฒ๊ทธ ํ๋๋ฅผ ๊ณ ์น๊ณ ๊ธฐ๋ฅ ํ๋๋ฅผ ์ถ๊ฐํ์ด์.
๊ธฐ๋ณธ๋ถํฐ ์ค๋ช
ํ ๊ฒ์. ์ผ๋ฐ(regular), ๋ณผ๋, ์ดํค๋ฆญ, ๋ณผ๋ ์ดํค๋ฆญ์ ์๋ก ๋ค๋ฅธ ํฐํธ ํ์ด์ค์์. MyAwesomeFont.ttf ๊ฐ์ ํฐํธ๊ฐ ์๋ค๋ฉด, ๊ทธ๊ฑด ๋ณดํต ํ๋์ ํ์ด์ค(์๋ง๋ regular)์ผ ๋ฟ์ด์์. ๋ง์ด ๋จ์ํํ ์ค๋ช
์ด์ง๋ง ๋์ฒด๋ก ๊ทธ๋ ๋ค๊ณ ๋ณด์๋ฉด ๋ผ์.
์ฌ์ฉ์๊ฐ MyAwesomeFont๋ฅผ ์ฐ๊ฒ ๋ค๊ณ ํ๋ฉด, Ghostty๋ ๊ทธ ํฐํธ ์์ฒด๋ฟ ์๋๋ผ ๊ทธ ํฐํธ์ ์ฐ๊ฒฐ๋ ๋ชจ๋ ํ์ด์ค๋ฅผ ์ฐพ์์ผ ํด์. ๋ง์ ํ๋ก๊ทธ๋๋ฐ์ฉ ํฐํธ์๋ ์ดํค๋ฆญ์ด๋ ๋ณผ๋ ํ์ด์ค๊ฐ ์๊ฑฐ๋ ์. (์ฐธ๊ณ ๋ก ํฐํธ์ ์ฐ๊ฒฐ๋ ๋ชจ๋ ํ์ด์ค๋ฅผ ์ฐพ๋ ๊ณผ์ ์ ๋ณดํต ํฐํธ ํ์(font discovery)์ด๋ผ๊ณ ํด์. ๋ ๋๊ฒ๋ ์ฌ์ฉ์๊ฐ ํฐํธ๋ฅผ ์ง์ ํ์ง ์์์ ๋ ์ด๋ค ํฐํธ๋ฅผ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ธ์ง ๊ฒฐ์ ํ๋ ๋ฌธ์ ๊น์ง ํฌํจํ๊ณ ์.)
๋จผ์ , ๋ฒ๊ทธ ์ด์ผ๊ธฐ
๋ ํ๋ ์ค์ํ ๋ฐฐ๊ฒฝ ์ง์์, ํฐํธ๊ฐ ๋ชจ๋ ๊ธ๋ฆฌํ(ํ๋์ ๊ทธ๋ฆด ์ ์๋ ๋ฌธ์)๋ฅผ ๊ฐ์ง๊ณ ์์ง ์์ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค๋ ๊ฑฐ์์. ์๋ฅผ ๋ค์ด ์ผ๋ฐ์ ์ธ ๊ณ ์ ํญ ํ๋ก๊ทธ๋๋ฐ ํฐํธ์๋ ์ค๊ตญ์ด ๋ฌธ์(์: ํ ์ด(่) โ ์ ๋๋ก ๋ณด์ด์ จ๋ค๋ฉด)๊ฐ ์์ ํ๋ฅ ์ด ๋์์.
ํ๋ก๊ทธ๋จ์ด ์ค์ ํ ํฐํธ์ ์๋ ๋ฌธ์๋ฅผ ๊ทธ๋ฆฌ๋ ค๊ณ ํ๋ฉด, Ghostty๋ ๊ทธ ๋ฌธ์๋ฅผ ๊ฐ์ง ๋ค๋ฅธ ํฐํธ๋ฅผ ์ฐพ์๋ณด๋ ค๊ณ ํด์. ์กด์ฌํ๋ ๋ชจ๋ ๊ธ๋ฆฌํ๋ฅผ ํฐํธ ํ์ผ ํ๋์ ๋ค ๋ฃ๋๋ก ๊ฐ์ ํ๋ ๊ฒ๋ณด๋ค ๋ณดํต์ ์ด๊ฒ ๋ ๋์ ๋์์ด๊ฑฐ๋ ์. ๋ฌผ๋ก ์ค์ ํ ํฐํธ์ ์ด์ธ๋ฆฌ๋๋ก ๊ทธ ๊ธ๋ฆฌํ๋ฅผ ๊ทธ๋ฆฌ๋ ๋ฐฉ๋ฒ์๋ ๋ณต์กํ ๋ฌธ์ ๋ค์ด ์์ง๋ง, ์ง๊ธ์ ๊ทธ ์ด์ผ๊ธฐ๊ฐ ์๋๋ ๊ทธ๋ฐ ๋ฌธ์ ๋ค์ด ์กด์ฌํ๋ค๋ ๊ฒ๋ง ์์๋์๋ฉด ๋ผ์. ๊ฐ์ธ์ ์ผ๋ก ๊ทธ ํด๋ฒ์ ๊ณ ๋ฏผํ๋ ๊ฑด ์ผ์ข ์ ์ํด ํ์์ฒ๋ผ ๋๊ปด์ง๊ณ ์.
๋ฒ๊ทธ ๋ด์ฉ์ ์ด๋ฌ์ด์. ์ด์ ์๋ ํน์ ์คํ์ผ์ ํฐํธ์ ๋ฌธ์๊ฐ ์์ ๊ฒฝ์ฐ, Ghostty๊ฐ ๊ทธ ์คํ์ผ๋ก ๊ทธ ๋ฌธ์๋ฅผ ๊ฐ์ง ํฐํธ๋ฅผ ์ฐพ์๋ค๋ ์ด์. ๊ทธ ๊ฒฐ๊ณผ๋โฆ ์ ๋ง ๋ณด๊ธฐ ํํ์ฃ . ๊ณ ์ ํญ ํฐํธ์ ์๋ ๋ฌธ์๊ฐ ์์ผ๋ฉด ๊ณ ์ ํญ์ด ์๋ ํฐํธ๋ฅผ ์ฐพ์์์ ์ด๋ฐ ๋ชจ์ต์ด ๋๊ฑฐ๋ ์.

๋ง์์ฌ. ๋ฒ๊ทธ ์์ ๋ฐฉ๋ฒ์ ์ด๋ฌ์ด์. ํน์ ์คํ์ผ์ ๋ฌธ์๊ฐ ์๊ณ ๊ทธ ์คํ์ผ์ด โregularโ๊ฐ ์๋๋ผ๋ฉด, ๋จผ์ regular์์ ์ฐพ์๋ด์. ๊ทธ๋ฌ๋ฉด ์คํ์ผ์ ๋ฌด์๋์ง๋ง ๋ ๋๋ง์ ์ ๋๋ก ๋ผ์. ์ข์์.
์ฐธ๊ณ ๋ก Ghostty๋ ์ด๋ฏธ ๊ณ ์ ํญ ํฐํธ๋ถํฐ ๋จผ์ ์ฐพ๋๋ก ๋์ด ์์์ด์. ๊ณ ์ ํญ์ด ์๋(๊ฐ๋ณํญ) ํฐํธ๋ฅผ ์์ ์ฐ์ง ์๋ ๊ฒ ๋ซ์ง ์๋๊ณ ์๊ฐํ ์๋ ์์ง๋ง, ์ค๊ตญ์ด ๋ฌธ์ ๊ฐ์ ๊ฒฝ์ฐ๋ ๊ฐ๋ณํญ ํฐํธ์์๋ ๊ฝค ์ ๋ณด์ด๊ธฐ ๋๋ฌธ์ ๊ตณ์ด ๊ทธ๋ ๊ฒ ์ ํํ ํ์๋ ์๋ค๊ณ ๋ด์.
๋ ๋์๊ฐ, ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ์ดํค๋ฆญ ๋ง๋ค๊ธฐ
ํนํ ์ดํค๋ฆญ์ ๊ฒฝ์ฐ์๋ ๋ ์ํ ์ ์์ด์. ํฐํธ์ ์ดํค๋ฆญ์ฒด๊ฐ ์์ผ๋ฉด, ์ผ๋ฐ์ฒด๋ฅผ ๊ธฐ์ธ์ฌ์ ๊ฐ์ง ์ดํค๋ฆญ์ ๋ง๋ค ์ ์๊ฑฐ๋ ์. ์ฑ๊ธ ์ค๋ฆฌ์ง ํธ๋๋๋ฆฝ์ ๋ง์๋ฉฐ ์ฅ์ธ์ด ์ ์ฑ๊ป ๋์์ธํ ๊ฒ๋งํผ ๋ณด๊ธฐ ์ข์ง ์๊ฒ ์ง๋ง, ๊ทธ๋๋โฆ ์ธ ๋ง์ ํด์.
๊ทธ๋์ Ghostty๊ฐ ์ด์ ํ๋ ์ผ์ด ๋ฐ๋ก ๊ทธ๊ฑฐ์์. ์ดํค๋ฆญ์ผ๋ก ๋ ๋ฌธ์๋ฅผ ์์ฒญํ๋๋ฐ ์ฌ์ฉ ์ค์ธ ํฐํธ๊ฐ ์ดํค๋ฆญ์ ์ง์ํ์ง ์์ผ๋ฉด, ์ผ๋ฐ ๊ธ๋ฆฌํ๋ฅผ ๋์คํฐ๋ผ์ด์ฆํ ๋ ๊ธฐ์ธ์์ ์ ์ฉํด์ ๊ฐ์ง ์ดํค๋ฆญ์ ๋ง๋ค์ด์.

์ ํฐํธ๋ ์ดํค๋ฆญ์ ์ง์ํ์ง ์์์. ์ดํค๋ฆญ์ ๊ฐ์ง์์. ๊ทธ๋๋ ๊ด์ฐฎ์ ๋ณด์ด์ฃ ! ๊ทธ๋ฆฌ๊ณ ์ดํค๋ฆญ์ ์์ ํ์ํ์ง ์๋ ๊ฒ๋ณด๋ค๋ ํ์คํ ๋ซ๊ณ ์.
๋ด๋ถ ๋์์ด ๊ถ๊ธํ์๋ค๋ฉด, FreeType์ด๋ CoreText ๊ฐ์ ํฐํธ ๋์คํฐ๋ผ์ด์ ์ด์
๋ผ์ด๋ธ๋ฌ๋ฆฌ์์๋ ํธ์ถ์๊ฐ ๋ณํ ํ๋ ฌ์ ์ ๋ฌํ ์ ์๊ฒ ํด์ค์. CoreText์ ๊ฒฝ์ฐ CTFontCreateCopyWithAttributes๋ก ํฐํธ๋ฅผ ์ด๊ธฐํํ ๋ ๋ณํ ํ๋ ฌ์ ๋๊ธธ ์ ์์ด์.
Ghostty์์๋ ๊ทธ๋ฅ 15๋ ๊ธฐ์ธ์์ ํ๋์ฝ๋ฉํด ๋์์ด์(์๋ ์ฝ๋ ์ฐธ์กฐ). ํ์ง๋ง ๋ณด์๋ค์ํผ ์ํ๋ ๋๋ก ๊ธ๋ฆฌํ๋ฅผ ๊ธฐ์ธ์ด๋๋ก ์ปค์คํฐ๋ง์ด์ฆํ ์๋ ์์ด์.
pub const italic_skew: macos.graphics.AffineTransform = .{
.a = 1,
.b = 0,
.c = 0.267949, // approx. tan(15)
.d = 1,
.tx = 0,
.ty = 0,
};๋ง๋ฌด๋ฆฌ
์ด๊ฒ์ผ๋ก ์ฒซ Ghostty ๊ฐ๋ฐ ๋ก๊ทธ๋ฅผ ๋ง์น ๊ฒ์. ํ๋ ๊ฐ์ง ๋ฐฐ์ฐ์ จ๊ฑฐ๋ ์ฌ๋ฏธ์๊ฒ ๋ณด์ จ๊ธธ ๋ฐ๋ผ์. ์ฒซ ๋ฒ์งธ์ธ ๋งํผ ๋ค๋ฃฐ ์ ์์๋ ์ด์ผ๊ธฐ๊ฐ ์ ๋ง ๋ง์๋๋ฐ, ๋ค์ ๊ฐ๋ฐ ๋ก๊ทธ๋ฅผ ์ํด ์๊ปด ๋๊ฒ์(์์ผ๋ก๋ ๋ ์ต์ ๊ฐ๋ฐ ๋ด์ฉ์ ์ค์ฌ์ผ๋ก ๋ค๋ฃจ๋ ค๊ณ ํด์).
์ต์ ์์์ ๋ฐ์๋ณด๊ณ ์ถ๋ค๋ฉด ํธ์ํฐ๋ ๋ง์คํ ๋์์ ์ ๋ฅผ ํ๋ก์ฐํด ์ฃผ์ธ์(๋งํฌ๋ ํธํฐ์ ์์ด์). ์ด ๋ธ๋ก๊ทธ์๋ RSS ํผ๋๋ ์์ด์.
Boo. ๐ป
๊ธ์ ๋ฌด์์๋ก ์ฝ๊ธฐ