안녕하세요
로로봉입니다 : )
오늘은 델파이에서 안드로이드 앱 개발 중 기본 폰트가 아닌 커스텀 폰트를 사용해보도록 하겠습니다.
안드로이드에서 커스텀 폰트를 사용하기 위해선 ttf 파일을 프로젝트에 포함시켜주어야 합니다.
나눔스퀘어라운드 폰트를 사용하고자 할 때 제어판-글꼴에서 ttf 파일을 복사하여 가져옵니다.
사용하기 쉽도록 Bold와 ExtraBold 파일을 아래와 같이 이름을 변경해주었습니다.
이제 프로젝트에서 사용하는 방법은 ttf 파일명이 폰트의 Family에 동일하게 설정해주면 됩니다.
Family명을 맞춰준 뒤 실제 컴파일프로젝트에 ttf 파일을 포함시켜주어야 됩니다.
Project – Deplyment 를 선택합니다.
열리는 Deployment 창에서 ttf 파일을 추가해줍니다.
반드시 Remoth Path에는 .\assets\internal\ 경로로 지정해주어야 어플리케이션이 컴파일될 때 ttf 파일이 해당 경로에 저장되게 됩니다.
델파이 10.4 버전에서는 FontGlyphs 파일이 수정되어 있어서 별도의 작업을 하지 않아도 되지만 이전 버전인 10.3버전에서만 해도 FontGlyphs 파일을 커스텀 폰트를 찾을 수 있도록 수정해 주어야 합니다.
일반적으로 아래의 경로에 FMX.FontGlyphs.Android.pas 파일이 존재합니다.
C:\Program Files (x86)\Embarcadero\Studio\20.0\source\fmx\
FMX.FontGlyphs.Android.pas 파일을 복사하여 실행 프로젝트로 가져옵니다.
이제 복사해온 FMX.FontGlyphs.Android.pas 파일을 열어서 아래와 같이 수정해주고 저장합니다.
uses 절에 System.IOUtils, FMX.FontGlyphs 추가
LoadResource 프로시저 수정
procedure TAndroidFontGlyphManager.LoadResource;
var
TypefaceFlag: Integer;
Typeface: JTypeface;
FamilyName: JString;
Metrics: JPaint_FontMetricsInt;
NomeFonte : string;
begin
FPaint.setAntiAlias(True);
FPaint.setTextSize(CurrentSettings.Size * CurrentSettings.Scale);
FPaint.setARGB(255, 255, 255, 255);
if TOSVersion.Check(4, 0) then
FPaint.setHinting(TJPaint.JavaClass.HINTING_ON);
//Font
try
FamilyName := StringToJString(CurrentSettings.Family);
if not CurrentSettings.Style.Slant.IsRegular and not CurrentSettings.Style.Weight.IsRegular then
TypefaceFlag := TJTypeface.JavaClass.BOLD_ITALIC
else
if not CurrentSettings.Style.Weight.IsRegular then
TypefaceFlag := TJTypeface.JavaClass.BOLD
else
if not CurrentSettings.Style.Slant.IsRegular then
TypefaceFlag := TJTypeface.JavaClass.ITALIC
else
TypefaceFlag := TJTypeface.JavaClass.NORMAL;
// Typeface := TJTypeface.JavaClass.create(FamilyName, TypefaceFlag);
NomeFonte := TPath.Combine(TPath.GetDocumentsPath, CurrentSettings.Family + '.ttf');
if FileExists(NomeFonte) then
Typeface := TJTypeface.JavaClass.createFromFile(StringToJString(NomeFonte))
else
Typeface := TJTypeface.JavaClass.create(FamilyName, TypefaceFlag);
FPaint.setTypeface(Typeface);
try
Metrics := FPaint.getFontMetricsInt;
//
FTop := Metrics.top;
FAscent := Metrics.ascent;
FDescent := Metrics.descent;
FBottom := Metrics.bottom;
FLeading := Metrics.leading;
finally
Metrics := nil;
end;
finally
FamilyName := nil;
Typeface := nil;
end;
end;
위와 같이 수정해주고 컴파일하게 되면 ttf 파일을 잘 불러와서 폰트가 변경되는 것을 볼 수 있습니다.
좋아요♥ + 구독 부탁드립니다 : )
'개발 정보 > 델파이' 카테고리의 다른 글
[Delphi] 델파이 Datasnap 서버 클라이언트 통신 방법 (4) | 2021.01.06 |
---|---|
[Delphi] 델파이 안드로이드 메시지 창 처리 (2) | 2021.01.05 |
[Delphi] 델파이 10.4 Sydney iOS 개발 환경 만들기 (16) | 2020.12.23 |
[Delphi] 델파이 10.4 Sydney GetIt 패키지 설치 오류 해결하기 (3) | 2020.11.26 |
[Delphi] 델파이 안드로이드 상태바, 네비게이션 바 높이 구하기 (0) | 2020.11.26 |
댓글