2017-03-01 29 views
1

我想用類型安全的css在tornadofx-app中加載自定義字體,這可能嗎? 感謝和問候。如何使用類型安全的CSS加載自定義字體?

+0

嗨!目前沒有對@ font-face規則的特別支持,但我們正在努力。現在,您可以覆蓋樣式表的'render()'函數並添加'「@ font-face {...}」+ super.render()'。我們會盡快收到更好的解決方案:) –

回答

2

Edvin是正確的,我們正在尋求解決方案,但我暫時發現了一個更好的解決方案。只要字體被加載,它可以在CSS中使用,所以下面的工作:

class FontTest : App(Main::class, Styles::class) { 
    class Main : View("Font Test") { 
     override val root = stackpane { 
      label("This is my Label") { 
       addClass(Styles.custom) 
      } 
     } 
    } 

    class Styles : Stylesheet() { 
     companion object { 
      val custom by cssclass() 
      val riesling: Font? = Styles::class.java.getResourceAsStream("/fonts/riesling.ttf").use { Font.loadFont(it, 48.0) } 
     } 

     init { 
      custom { 
       padding = box(25.px) 

       riesling?.let { font = it } 
       // or if you just want to set the font family: 
       // riesling?.let { fontFamily = it.family } 
      } 
     } 
    } 
} 

enter image description here

+0

嗨,Edvin和Ruckus T-Boom,感謝您的快速幫助。它適合我。隨着TornadoFx你做了一個偉大的工作。 – thlinde

0

順便說自29天爲Ruckus T-Boom回答了這個問題,他補充loadFont功能:) ,有可能寫:

class Styles : Stylesheet() { 
    private val customFont = loadFont("/fonts/custom-font.ttf", 14)!! 

    init { 
     root { 
      font = customFont 
      fontSize = 11.px 
     } 
    } 
}