티스토리 뷰

Flutter에서 폰트는 앱의 디자인과 사용자 경험을 크게 좌우하는 중요한 요소입니다. 특히 여러 앱에서 동일한 폰트를 사용하려면, 폰트를 개별적으로 선언하는 대신 패키지화하여 재사용하는 것이 훨씬 효율적입니다. 이 글에서는 Flutter에서 패키지를 통해 폰트를 추가하고 사용하는 방법에 대해 다루며, 이를 통해 개발자들이 폰트를 쉽게 공유하고 관리할 수 있는 방법을 설명합니다.

패키지에 폰트 추가하기

먼저, 폰트를 패키지에 추가하는 단계부터 시작합니다. 패키지 내 lib 디렉토리에 폰트 파일을 저장하고 이를 관리할 수 있습니다. 예를 들어, awesome_package라는 패키지의 lib/fonts 폴더에 폰트 파일들을 넣을 수 있습니다. 이 과정은 폰트를 패키지화하고 여러 앱에서 공유할 수 있게 하는 기초 작업입니다.

awesome_package/
 lib/
   awesome_package.dart
   fonts/
     Raleway-Regular.ttf
     Raleway-Italic.ttf

앱에 패키지와 폰트 추가하기

폰트를 패키지화한 후, 이 패키지를 앱에서 사용하려면 pubspec.yaml 파일에서 해당 패키지를 의존성으로 추가해야 합니다. 패키지 의존성은 flutter pub add 명령어를 통해 간단히 추가할 수 있습니다.

flutter pub add awesome_package

그런 다음, pubspec.yaml 파일에서 패키지 내 폰트 경로를 지정해 줍니다. 폰트 경로 앞에 packages/ 접두사를 사용하여 Flutter가 패키지 내부에서 폰트를 찾을 수 있도록 설정합니다.

flutter:
  fonts:
    - family: Raleway
      fonts:
        - asset: packages/awesome_package/fonts/Raleway-Regular.ttf
        - asset: packages/awesome_package/fonts/Raleway-Italic.ttf
          style: italic

이 설정을 통해 Flutter는 awesome_package 패키지 내 Raleway 폰트를 사용할 수 있게 됩니다.

폰트 사용하기

폰트를 앱에서 사용하려면, TextStyle을 통해 폰트를 지정할 수 있습니다. 아래는 패키지 내 Raleway 폰트를 사용하는 예시입니다:

Text(
  'Using the Raleway font from the awesome_package',
  style: TextStyle(
    fontFamily: 'Raleway',
  ),
);

이처럼 Text 위젯에서 TextStyle을 사용해 원하는 폰트 패밀리를 설정할 수 있으며, 이를 통해 앱의 텍스트 스타일을 더욱 풍부하게 표현할 수 있습니다.

폰트 패키지 사용의 장점

  • 효율성: 여러 프로젝트에서 동일한 폰트를 사용할 때, 패키지화된 폰트를 사용하면 각 프로젝트에서 개별적으로 폰트를 선언할 필요가 없습니다. 이는 코드 관리와 유지보수를 용이하게 합니다.
  • 재사용성: 폰트를 패키지로 관리하면 폰트 업데이트가 필요할 때도 패키지만 수정하면 되므로, 여러 프로젝트에 즉시 반영할 수 있습니다.
  • 구글 폰트 패키지 활용: Flutter에서 google_fonts 패키지를 사용하면 수천 개의 오픈소스 폰트에 쉽게 접근할 수 있습니다. 이는 추가적인 폰트 라이센스 문제를 해결하면서도 다양한 폰트를 손쉽게 사용할 수 있는 강력한 도구입니다.

결론

Flutter에서 폰트를 패키지로 관리하는 방법은 프로젝트를 확장하거나 여러 앱에서 일관된 디자인을 유지할 때 매우 유용합니다. pubspec.yaml 파일에서 폰트를 선언하고, TextStyle을 사용하여 간단히 적용할 수 있는 이 기능을 통해 디자인과 사용자 경험을 크게 향상시킬 수 있습니다. 개발자들은 이러한 패키지화된 폰트 관리 방식을 통해 코드의 재사용성을 높이고, 프로젝트를 효율적으로 관리할 수 있을 것입니다.

 

// pubspec.yaml
name: package_fonts
description: An example of how to use package fonts with Flutter

dependencies:
  awesome_package:
  flutter:
    sdk: flutter

dev_dependencies:
  flutter_test:
    sdk: flutter

flutter:
  fonts:
    - family: Raleway
      fonts:
        - asset: packages/awesome_package/fonts/Raleway-Regular.ttf
        - asset: packages/awesome_package/fonts/Raleway-Italic.ttf
          style: italic
  uses-material-design: true

 

// main.dart
import 'package:flutter/material.dart';

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      title: 'Package Fonts',
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  const MyHomePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      // The AppBar uses the app-default font.
      appBar: AppBar(title: const Text('Package Fonts')),
      body: const Center(
        // This Text widget uses the Raleway font.
        child: Text(
          'Using the Raleway font from the awesome_package',
          style: TextStyle(
            fontFamily: 'Raleway',
          ),
        ),
      ),
    );
  }
}