마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

원래 폰트마다 사이즈가 다른가요?

0 추천

Roboto - Google Fonts

여기 구글 폰트에서 noto_sans 폰트를 받아서 일괄적용했습니다.

 

그런데 적용하고 실행시켜보니 폰트크기가 커져 뷰들이 커지고 사이즈가 고정되어있는 뷰들은

텍스트가 잘리는 현상까지 발생하는데요. 원래이런건가요?

링크 들어가보시면 폰트가 40px가 고정이고 바꿔 다운받을수도 있고그러던데

제가 여러 사이즈로 바꿔서 해봐도 이전과 똑같은걸보니 링크의 폰트사이즈는 영향이없고

 

폰트자체 영향인걸로 파악이 되는데요..

바꾼 폰트 자체가 크다보니 텍스트 사이즈를 새로 지정할때도 조금 곤란해지네요.

그리고 원래 컸다보니 텍스트 사이즈를 줄여도 텍스트사이즈는 줄어도는데 뷰크기가 상대적으로

안줄어들기도 하고 이런현상이 발생하네요..

 

제가 여태 코딩하면서 사용하던 사이즈들 예를들어 24dp면 이정도 사이즈는 되겠다 하는

사이즈들이 전혀 다르니 난감합니다.

원래 이런건가요?

 

+) 그리고 번외 질문입니다

<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:fontSize="http://schemas.android.com/tools">

    <!-- app: 네임스페이스를 사용하는 이유는 api 레벨 26미만에서도 이 파일을 사용하기 위함 -->
    <!-- Font Resource File.xml은 api 레벨 26이상에서 사용가능 함   -->

    <!-- thin -->
    <font
        android:font="@font/noto_sans_kr_thin"
        android:fontStyle="normal"
        android:fontWeight="100"
        app:font="@font/noto_sans_kr_thin"
        app:fontStyle="normal"
        app:fontWeight="100"/>

    <!-- light -->
    <font
        android:font="@font/noto_sans_kr_light"
        android:fontStyle="normal"
        android:fontWeight="300"
        app:font="@font/noto_sans_kr_light"
        app:fontStyle="normal"
        app:fontWeight="300"/>

    <font
        android:font="@font/noto_sans_kr_black"
        android:fontStyle="normal"
        android:fontWeight="900"
        app:font="@font/noto_sans_kr_black"
        app:fontStyle="italic"
        app:fontWeight="900" />
</font-family>

폰트를 일괄적용하려고 이러한 noto_sans_font_family.xml파일을 만들었습니다. 그리고

 

themes.xml ( 구 styles.xml)에서 이러한 코드를 작성했는데요

<resources xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Base application theme. -->
    <style name="Theme.WriteWeight" parent="Theme.MaterialComponents.DayNight.NoActionBar">
        <!-- Primary brand color. -->
        <item name="colorPrimary">@color/purple_500</item>
        <item name="colorPrimaryVariant">@color/light_green_dark</item>
        <item name="colorOnPrimary">@color/white</item>
        <!-- Secondary brand color. -->
        <item name="colorSecondary">@color/teal_200</item>
        <item name="colorSecondaryVariant">@color/teal_700</item>
        <item name="colorOnSecondary">@color/black</item>
        <!-- Status bar color. -->
        <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
        <!-- Customize your theme here. -->


        <!-- 폰트 일괄 적용 -->
        <item name="android:textViewStyle">@style/TextViewFont</item>
    </style>

    <style name="TextViewFont" parent="@android:style/Widget.DeviceDefault.TextView">
        <item name="android:fontFamily">@font/noto_sans_kr_light</item>
    </style>
</resources>

여기서 궁금한게 마지막 style 태그에서 @font/ 면 font폴드의 하위폴더를 의미하는 것일텐데요..

font 폴더 아래 noto_sans_kr_light.otf 파일을 의미하는거잖아요..?

그럼 여기서 제가 정의한 xml파일 내의 font 태그들은 무슨 의미가 되냐 이게 궁금합니다...

일괄적용방법을 찾다가 샘플코드들을 보니 @font/noto_sans_font_family 이런식으로 한번에

정의해놨던데 당최 이해가 안가더라구요.. fontWeight가 폰트 굵기라는데 적용도 안되고..

 

@font/noto_sans_font_family로 지정해준다하더라도 저 스타일이 이 xml파일안에서 어떤 폰트를

사용할지 모르는데 어떤식으로 되는건가요?

codeslave (3,940 포인트) 님이 2021년 2월 18일 질문
질문에 폰트사이즈에  dp를 언급하셔서 그러는데, 혹 폰트사이즈에 dp를 사용하시는 거는 아니죠?
엇..dp 사용중입니다만..ㅜ
폰트의 단위는 dp가 아니라 sp예요.
아 그럼 텍스트 사이즈 설정할때 sp를 사용해야하는것인가요...
암튼 별개로 질문에 대한 답변은 해결했습니다..다운 받음 폰트가 기본적으로 가지고 있는
패딩값이 문제였던거였어요.. includeFomtPadding  속성이었나 이걸 false로 주고 해결했습니다.

그런데 또 문제는 themes.xml 그러니까 style.xml 에서 뷰에 지정해줘도
텍스트뷰외에는 적용이 되지 않던데 이유를 아시나요?
님의 theme 파일에는 android:textViewStyle에만 폰트를 적용하고 있네요.
theme에 아래 속성을 추가하세요.
<item name="android:fontFamily">@font/your_font</item> <!--- API 26 이하 -->
<item name="fontFamily">@font/your_font</item> <!-- API 26이상 -->
서포트 라이브러리를 사용하면 <item name="fontFamily"> 만 사용하면 된다고 나오네요.
감사합니다 스택오버플로우에서도 봤었는데 안돼서.. 매테리얼 라이브러리 쓰는데 그것때문인지 <item name="materialButtonStyle">을 사용하니 되네요..
근데 웃긴건 Chip스타일은 여전히 안되네요...이건 다른 android:chipStyle이나 다른것도 없는것같은데..
어찌어찌 대충해결했네요 원하는결과는 아니지만 textAppearance에서 스타일을 적용시키니 되네요.. 감사합니다

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...