ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Android] compose에 폰트 적용하기
    Android 2024. 6. 17. 16:03
    반응형

    폰트 저장하기

    폰트를 사용하려면 일단 해당 폰트 파일을 저장해야 합니다. 위치는 res/font 에 저장하면 됩니다. 이 때 각 폰트의 굵기 파일도 각각 사용할 필요가 있다면 모두 저장해두면 좋습니다. 


    폰트 불러오기

    폰트를 선언해주어야 해요. 위에서 정한 폰트를 아래와 같이 선언해주세요. 참고로 폰트 클래스는 사진과 같습니다. 이 때 Font의 weight에 각각 파일 별로 weight를 지정해주면 TextStyle을 사용할 때 원하는 weight를 줬을 때 해당 파일이 적용됩니다.

    @Stable
    fun Font(
        resId: Int,
        weight: FontWeight = FontWeight.Normal,
        style: FontStyle = FontStyle.Normal,
        loadingStrategy: FontLoadingStrategy = FontLoadingStrategy.Blocking
    ): Font = ResourceFont(resId, weight, style, FontVariation.Settings(), loadingStrategy)
    val Pretendard = FontFamily(
        fonts = listOf(
            Font(R.font.pretendard_light, weight = FontWeight.Light),
            Font(R.font.pretendard_medium, weight = FontWeight.Medium),
            Font(R.font.pretendard_black, weight = FontWeight.Black),
            Font(R.font.pretendard_bold, weight = FontWeight.Bold),
            Font(R.font.pretendard_extrabold, weight = FontWeight.ExtraBold),
            Font(R.font.pretendard_extralight, weight = FontWeight.ExtraLight),
            Font(R.font.pretendard_semibold, weight = FontWeight.SemiBold),
            Font(R.font.pretendard_regular, weight = FontWeight.Normal),
            Font(R.font.pretendard_thin, weight = FontWeight.Thin)
        )
    )
    
    val MoveSans = FontFamily(
        fonts = listOf(
            Font(R.font.movesans_light),
            Font(R.font.movesans_medium),
            Font(R.font.movesans_bold),
        )
    )
    
    val Gimpo = FontFamily(
        fonts = listOf(
            Font(R.font.gimpo_1, weight = FontWeight.Light),
            Font(R.font.gimpo_2, weight = FontWeight.Normal)
        )
    )
    
    
    val oaGothic = FontFamily(
        Font(R.font.oa_gothic_medium, FontWeight.Medium, FontStyle.Normal),
        Font(R.font.oa_gothic_extra_bold, FontWeight.ExtraBold, FontStyle.Normal)
    )

     

    위와 같이 파일 별 weight을 적용하면 아래와 같이 TextStyle에 fontWeight를 줬을 때 쌍으로 맞춰놓은 파일이 적용됩니다.

    TextStyle(
        fontFamily = fontFamily,
        fontWeight = fontWeight
    )

    폰트 적용하기

    위에서 얘기한 것처럼 TextStyle을 만들어서 사용할 수도 있고, Typography를 만들어서 사용할 수도 있습니다.

    val Typography = Typography(
        titleLarge = TextStyle(
            fontFamily = oaGothic,
            fontWeight = FontWeight.ExtraBold,
            fontSize = 24.sp
        ),
        headlineLarge = TextStyle(
            fontFamily = Pretendard,
            fontWeight = FontWeight.Bold,
            fontSize = 25.sp
        ),
        bodyLarge = TextStyle(
            fontFamily = oaGothic,
            fontWeight = FontWeight.Medium,
            fontSize = 16.sp,
            lineHeight = 24.sp,
            letterSpacing = 0.5.sp
        )
    	...
    )

     

     

     

     

    반응형
Designed and Written by keykat.