etxt
v0.0.9
ETXT는 Hajime Hoshi가 만든 2D 게임 엔진 인 Ebitengine 과 함께 사용되도록 설계된 Golang의 벡터 1 텍스트 렌더링 패키지입니다.
EBITENGINE에는 이미 EBITEN/V2/TEXT/V2 패키지가 포함되어 있지만 ETXT 에는 몇 가지 장점이 있습니다.
font.Face 제거합니다.ETXT 가하지 않는 것 :
타이포그래피 용어 및 개념에 익숙하지 않은 경우 프리 타입 글리프 컨벤션의 첫 장을 읽는 것이 좋습니다. 인터넷에서 찾을 수있는 주제에 대한 가장 좋은 참조 중 하나입니다.
적은 대화와 더 많은 코드!
package main
import ( "math" ; "image/color" )
import "github.com/hajimehoshi/ebiten/v2"
import "github.com/tinne26/etxt"
import "github.com/tinne26/fonts/liberation/lbrtserif"
const WordsPerSec = 2.71828
var Words = [] string {
"solitude" , "joy" , "ride" , "whisper" , "leaves" , "cookie" ,
"hearts" , "disdain" , "simple" , "death" , "sea" , "shallow" ,
"self" , "rhyme" , "childish" , "sky" , "tic" , "tac" , "boom" ,
}
// ---- Ebitengine's Game interface implementation ----
type Game struct { text * etxt. Renderer ; wordIndex float64 }
func ( self * Game ) Layout ( winWidth int , winHeight int ) ( int , int ) {
scale := ebiten . DeviceScaleFactor () // *
// * ebiten.Monitor().DeviceScaleFactor() in >=v2.7.0
self . text . SetScale ( scale ) // relevant for HiDPI
canvasWidth := int ( math . Ceil ( float64 ( winWidth ) * scale ))
canvasHeight := int ( math . Ceil ( float64 ( winHeight ) * scale ))
return canvasWidth , canvasHeight
}
func ( self * Game ) Update () error {
newIndex := ( self . wordIndex + WordsPerSec / 60.0 )
self . wordIndex = math . Mod ( newIndex , float64 ( len ( Words )))
return nil
}
func ( self * Game ) Draw ( canvas * ebiten. Image ) {
// background color
canvas . Fill (color. RGBA { 229 , 255 , 222 , 255 })
// get screen center position
bounds := canvas . Bounds () // assumes origin (0, 0)
x , y := bounds . Dx () / 2 , bounds . Dy () / 2
// draw text
word := Words [ int ( self . wordIndex )]
self . text . Draw ( canvas , word , x , y )
}
// ---- main function ----
func main () {
// create text renderer, set the font and cache
renderer := etxt . NewRenderer ()
renderer . SetFont ( lbrtserif . Font ())
renderer . Utils (). SetCache8MiB ()
// adjust main text style properties
renderer . SetColor (color. RGBA { 239 , 91 , 91 , 255 })
renderer . SetAlign ( etxt . Center )
renderer . SetSize ( 72 )
// set up Ebitengine and start the game
ebiten . SetWindowTitle ( "etxt/examples/ebiten/words" )
err := ebiten . RunGame ( & Game { text : renderer })
if err != nil { panic ( err ) }
}당신은 2 로 직접 실행할 수 있습니다.
go run github.com/tinne26/etxt/examples/ebiten/words@latest
또는 https://tinne26.github.io/etxt-examples/로 이동하여 웹 버전의 첫 번째 예제를 클릭 할 수 있습니다.
이것은 매우 간단하고 독립적 인 예입니다. 자세한 내용은 ETXT/예를 살펴보십시오!
예, -tags gtxt 로 컴파일 할 수 있습니다. gtxt 는 CPU에서 텍스트 도면이 발생할 것이므로 실시간 응용 프로그램에 사용하지 마십시오. 특히, 실수로 eBitEngine과 함께 gtxt 사용하지 않도록주의하십시오 (많은 경우 호환되지만 성능은 죽을 것입니다).
etxt/test 의 지침을 참조하십시오.Pixel-Art와 같은 벡터 글꼴을 사용하는 경우이 팁을 읽으십시오. ↩
Golang> = 1.18이 필요하며 이전에 EBITENGINE을 사용한 적이 없다면 일부 종속성을 설치해야 할 수도 있습니다 (일반적으로 Linux 또는 FreeBSD에만). ↩