Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Fmx Android ve IOS Custom Font Kullanımı
#1
Merhaba

Fmx android ve ios projesinde custom font kullanımı ile ilgili yaşadığım sorunu paylaşayım.

Form(lar) üzerinde çeşitli nesneler, label, edit, memo, button vs nesnelerde bu custom font kullanılmak istenmektedir.

Aşağıdaki denemelerde google fontlarından quicksand yazı tipi kullanılmıştır.

IOS tarafında bir sorun yaşamadım.

IOS tarafında yapılanlar:
+ Deployment ekranından ilgili fontlar eklendi ve remote path olarak .\ verildi.
+ plist dosyası bu fontların eklendiği hali ile yer değiştirildi. Otomatik oluşturulan plist içeriğine font isimleri eklendi ve deployment penceresenide bu plist kullanılacak şekilde eklendi. Bu durum aşağıdaki resimde 1 ve 2 numara ile gösterildi.

Plist içeriğinin ilgili kısmı

 <key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>

<key>UIAppFonts</key>
<array>
<string>Quicksand-Bold.ttf</string>
<string>Quicksand-Light.ttf</string>
<string>Quicksand-Medium.ttf</string>
<string>Quicksand-Regular.ttf</string>
<string>Quicksand-SemiBold.ttf</string>
</array>

</dict>
</plist>

Android tarafında ise 
+ Deployment ekranından fontlar eklendi ve remote path .\ olarak ayarlandı.

Bu şekilde bir kullanımda android bu fontları kullanmıyor varsayılan sistem fontunu kullanıyor.
Android için TextSettings>Font>Family  = Quicksand-Regular şeklinde font ailesinin tam adını kullanınca bu değişim uygulamaya yansıyor. Fakat bu seferde uygulama IOS için derlenmesi gerektiğinde bu durum sorun çıkartıyor.  -Regular, -Bold gibi font ismindeki ilaveler, şeçilen FontStyle [fsbold vb.] e göre seçiliyor. 

Aşağıdaki 2015 yılına ait embarcadero bloğunda bu durum anlatıldı. IOS için işlem adımları işe yarıyor fakat android için ben çözüm üretemedim.

Blogda editlenmesi istenen FMX.FontGlyphs.Android.pas dosyası içeriği zaten D12 de bu şekilde düzenlenmiş.

https://blogs.embarcadero.com/true-type-...-ios-apps/

Atladığım veya gözden kaçırdığım bir noktamı var.

Değerli görüşlerinizi varsa çözüm önerilerinizi paylaşırsanız sevinirim.


Projenin genel tasarımı

b8hd5mz.png


IOS (simulator) deployment ayarları

iror88k.png


Android tarafı Deployment ayarları

eui9f14.png
Cevapla
#2
Merhaba,
Aşağıdaki konuya bakarak, çözüme ulaşabileceğinizi düşünüyorum.
FMX Mimarisinde Harici Yazı FONT'u Kullanmak
Begin : = end / 2;
Cevapla
#3
Teşekkürler @RAD Coder hocam.

IOS için plist için template kullanımının bu işi kolaylaştıracağını sizin mesajınızı görünce hatırladım. Diğer türlü IDE içerisinden versiyon ve bundle name gibi değişiklikleri yapmak angarya olacak diye düşünüyordum Smile

Android tarafında ilgili adımları geliştirme ortamının başına geçince deneyeceğim.

Fakat düzenleme yapılacak projede çok fazla bileşen var. Bazıları style lara bağlandı özellikle Tbuton ve Teditler. Bazıları ise bağımsız olarak ayarlanmış. Style içerisindeki font tanımlarını android için myfont-regular, ios için myfont şeklinde değiştirip denemeyi düşünüyorum.

En kötü senaryoda ise kod içerisinden nesnelerin font özelliğine müdahele etmek gerekecek.
Cevapla
#4
Yaşadığım problemi aşağıdaki şekilde çözüme ulaştırdım. Umduğumdan daha kolay oldu Smile . @RAD Coder  ın yukarıdaki mesajdaki konusu bu konuda çok faydalı oldu. Tekrar kendisine teşekkür ederim.

Buton, edit, label gibi nesneleri style lere bağladım. Zaten bir kısmı bağlıydı, bağlı olmayanlarıda ben bağladım. Style editörde android ve ios için aşağıdaki şekilde font tanımlamalarını yaptım . Bu yöntem işimi çok kolaylaştırdı. Kodlama ile uğraşmadan pratik bir çözüm oldu.


daa3l4g.png


bwakz1b.png


TListview içerisindeki Item ler içinde, listviewi doldurduğum yerde aşağıdaki şekilde bir yaklaşımla onlarıda her iki platformda çalışacak hale getirdim.

// constant font ismi tanımlama              
{$IF DEFINED(IOS) OR DEFINED(MSWINDOWS)}
    myFont_regular = 'Quicksand';
    myFont_bold = 'Quicksand';
{$ELSEIF DEFINED(ANDROID)}
    myFont_regular = 'Quicksand-Regular';
    myFont_bold = 'Quicksand-Bold';
{$ENDIF}
              
              
//Listview text itemler içerik doldurma kısmında fontlar ayarlanıyor              
//....              
{$IF DEFINED(IOS) OR DEFINED(MSWINDOWS)}
    Item.Objects.FindObjectT<TListItemText>('baslik').Font.Family := myFont_regular;
    Item.Objects.FindObjectT<TListItemText>('baslik').Font.Style  := [TFontStyle.fsBold]; // başlık bold
{$ELSEIF DEFINED(ANDROID)}
    Item.Objects.FindObjectT<TListItemText>('baslik').Font.Family := myFont_bold; // başlık bold
{$ENDIF}

Item.Objects.FindObjectT<TListItemText>('adres').Font.Family := myFont_regular;
Item.Objects.FindObjectT<TListItemText>('sehir').Font.Family := myFont_regular;

//....
Cevapla
#5
Merhaba,

Hocam hangi Mac'i kullanıyorsunuz? Delphi için müthiş bir ortam kurmuşsunuz gibi bir izlenime kapıldım  Smile
Serhat YANALAK - FMX Software Developer
Cevapla
#6
@Mr.X MacBook Pro M2 bir makinede düzenlemeleri yapıyorum.

Ios simulator gibi mac üzerinde çalışan native android simulatorude bağlamaya uğraştım ama, android simulator kendi loopback networkde çalışıyor, dışarıdan bağlantı için bir çözüm üretemedim.

3. Parti emulatorlerde ise android versiyon seviyesi düşük oluyor. Android tarafı için fiziksel cihaz kullanıyorum.
Cevapla
#7
(04-06-2025, Saat: 15:32)frmman Adlı Kullanıcıdan Alıntı: @Mr.X  MacBook Pro M2 bir makinede düzenlemeleri yapıyorum.

Ios simulator gibi mac üzerinde çalışan native android simulatorude bağlamaya uğraştım ama, android simulator kendi loopback networkde çalışıyor, dışarıdan bağlantı için bir çözüm üretemedim.

3. Parti emulatorlerde ise android versiyon seviyesi düşük oluyor. Android tarafı için fiziksel cihaz kullanıyorum.

Süper.
Parallels Desktop ile windows üzerinden android studio'nun emulatörlerini kullanmak mümkün olur diye düşünüyorum. Hiç denediniz mi peki?
Serhat YANALAK - FMX Software Developer
Cevapla
#8
(04-06-2025, Saat: 16:20)Mr.X Adlı Kullanıcıdan Alıntı: Süper.
Parallels Desktop ile windows üzerinden android studio'nun emulatörlerini kullanmak mümkün olur diye düşünüyorum. Hiç denediniz mi peki?

Ona uğraştım zaten. Ama android studio ile gelen emulator local makinede kendisine ait bir network / ip arayüzü arkasında çalışıyor. Ağdaki bir başka makineden buna normal yollar ile bağlanılamıyor.

Hem macde hemde diğer makinede port ve adb yönlendirme ile ilgili çeşitli öneriler var. Benim denediklerimde bir sonuca ulaşamadım. 

Native simulatorlar ve emulatorler arm platformlarda performanslı çalışıyorlar. Android studio emulatorude haricen kullanılabilse çok iyi olacak.
Cevapla
#9
(04-06-2025, Saat: 18:51)frmman Adlı Kullanıcıdan Alıntı: Ona uğraştım zaten. Ama android studio ile gelen emulator local makinede kendisine ait bir network / ip arayüzü arkasında çalışıyor. Ağdaki bir başka makineden buna normal yollar ile bağlanılamıyor.

Hem macde hemde diğer makinede port ve adb yönlendirme ile ilgili çeşitli öneriler var. Benim denediklerimde bir sonuca ulaşamadım. 

Native simulatorlar ve emulatorler arm platformlarda performanslı çalışıyorlar. Android studio emulatorude haricen kullanılabilse çok iyi olacak.

Anladım hocam. Bilgilendirme için çok sağolun.
Serhat YANALAK - FMX Software Developer
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Android işlem öneriliyor uyarısı! Coban 9 962 07-08-2025, Saat: 12:07
Son Yorum: RAD Coder
  FMX Android Adaptive Icons kullanabilir miyiz? egeven 1 1.833 30-06-2025, Saat: 21:46
Son Yorum: emozgun
  Android Veriabanı hatası mkucuktepe@msn.com 1 283 10-05-2025, Saat: 23:13
Son Yorum: mcuyan
Thumbs Up Android Tam Ekran konusunda bir örnektir. mrmarman 13 2.011 16-04-2025, Saat: 06:21
Son Yorum: barissagir
  Android Kontakt, Telefon numaralarını alma.. ARM 1 382 09-03-2025, Saat: 07:00
Son Yorum: ARM



Konuyu Okuyanlar: 1 Ziyaretçi