Saya mendapatkan UIButton
yang menggunakan font khusus, yang disetel saat tampilan saya dimuat:
- (void)viewDidLoad
{
[super viewDidLoad];
self.searchButton.titleLabel.font = [UIFont fontWithName: @"FONTNAME" size: 15.0 ];
}
Masalah yang saya hadapi adalah font tampak melayang di atas garis tengah. Jika saya mengomentari baris ini, font default muncul di tengah vertikal dengan baik. Tetapi mengubah ke font kustom akan merusak perataan vertikal.
Saya mendapatkan masalah yang sama pada Sel Tabel dengan font khusus juga.
Apakah saya perlu memberi tahu tampilan di suatu tempat bahwa font kustom tidak setinggi font lainnya?
EDIT: Saya baru saja menyadari bahwa font yang saya gunakan adalah Windows TrueType Font. Saya dapat menggunakannya dengan baik di TextEdit di Mac, hanya masalah dengan penyelarasan di App saya
Jawaban:
Masalah serupa telah dibahas di Font yang dipasang khusus tidak ditampilkan dengan benar di UILabel . Tidak ada solusi yang diberikan.
Inilah solusi yang berfungsi untuk font khusus saya yang memiliki masalah yang sama di UILabel, UIButton dan semacamnya. Masalah dengan font ternyata fakta bahwa properti ascender terlalu kecil dibandingkan dengan nilai font sistem. Ascender adalah spasi vertikal di atas karakter font. Untuk memperbaiki font Anda, Anda harus mengunduh utilitas baris perintah Apple Font Tool Suite . Kemudian ambil font Anda dan lakukan hal berikut:
Ini akan membuat
Bold.hhea.xml
. Buka dengan editor teks dan tingkatkan nilaiascender
atribut. Anda harus sedikit bereksperimen untuk mengetahui nilai pasti yang paling sesuai untuk Anda. Dalam kasus saya, saya mengubahnya dari 750 menjadi 1200. Kemudian jalankan utilitas lagi dengan baris perintah berikut untuk menggabungkan perubahan Anda kembali ke file ttf:Kemudian gunakan saja font ttf yang dihasilkan di aplikasi Anda.
OS X El Capitan
Penginstal Apple Font Tool Suite tidak berfungsi lagi di OSX El Capitan karena SIP karena mencoba menginstal file biner ke direktori yang dilindungi. Anda harus mengekstrak secara manual
ftxdumperfuser
. Pertama salin pkg dari dmg ke direktori lokal setelah itu ekstrakOS X Font Tools.pkg
withSekarang arahkan ke folder
fontTools.pkg
denganEkstrak muatan dengan
Sekarang
ftxdumperfuser
biner ada di folder Anda saat ini. Anda dapat memindahkannya ke/usr/local/bin/
sehingga Anda dapat menggunakannya di setiap folder di dalam aplikasi terminal dengan yang berikut ini.sumber
Saya memecahkan masalah menyesuaikan inset konten teratas (bukan judul!).
Misalnya: button.contentEdgeInsets = UIEdgeInsetsMake (10.0, 0.0, 0.0, 0.0);
Semoga berhasil!
sumber
Tidak yakin apakah ini akan membantu karena mungkin tergantung pada font Anda, tetapi bisa jadi garis dasar Anda tidak sejajar.
sumber
Saya rasa ini adalah jawaban terbaik. tidak bermain dengan ascender, numberOfHMetrics dll ... cukup impor-ekspor dengan aplikasi Glyphs dan Pekerjaan selesai. Berkat jawaban ini: https://stackoverflow.com/a/16798036/1207684
sumber
Anda dapat mencobanya di Interface Builder. Berikut ini gambaran singkat tentang cara melakukannya -
Seperti yang Anda lihat, mencoba melakukan ini di IB memiliki keuntungan tersendiri.
sumber
Terlambat ke pesta, tetapi karena masalah ini menghantam saya untuk ke-N kalinya, saya pikir saya akan memposting solusi paling sederhana yang saya temukan: menggunakan Python FontTools .
Instal Python 3 jika tidak tersedia di sistem Anda.
Pasang FontTools
pip3 install fonttools
FontTools menyertakan alat TTX yang memungkinkan konversi ke dan dari XML.
Ubah font Anda menjadi .ttx di folder yang sama
ttx myFontFile.otf
Lakukan pengeditan yang diperlukan untuk .ttx dan hapus file .otf karena ini akan diganti di langkah berikutnya.
Konversikan file kembali ke .otf
ttx myFontFile.ttx
Motivasi: The solusi dengan kolyuchi tidak lengkap, dan bahkan dengan aliran instalasi diperpanjang ini , berjalan
ftxdumperfuser
mengakibatkan kesalahan pada 10.15.2 Catalina.sumber