Saya ingin memiliki aplikasi menyertakan font khusus untuk rendering teks, memuatnya, dan kemudian menggunakannya dengan UIKit
elemen standar seperti UILabel
. Apakah ini mungkin?
ios
cocoa-touch
fonts
Airsource Ltd
sumber
sumber
Jawaban:
iOS 3.2 dan yang lebih baru mendukung ini. Langsung dari Apa yang Baru di iPhone OS 3.2 doc:
Setelah font telah diatur dalam
Info.plist
, Anda dapat menggunakan font khusus Anda seperti font lain di IB atau secara terprogram.Ada utas yang sedang berlangsung di Forum Pengembang Apple:
https://devforums.apple.com/thread/37824 (diperlukan login)
Dan inilah tutorial 3 langkah yang sangat bagus dan sederhana tentang cara mencapai ini (tautan rusak dihapus)
Info.plist
file Anda yang disebutUIAppFonts
.UIAppFonts
arrayInfo.plist
[UIFont fontWithName:@"CustomFontName" size:12]
untuk mendapatkan font khusus untuk digunakan dengan UILabel dan UITextViews Anda , dll ...Juga: Pastikan font ada di Sumber Bundel Salin Anda.
sumber
Sunting: Pada iOS 3.2, fungsi ini sudah ada di dalam. Jika Anda perlu mendukung pra-3.2, Anda masih dapat menggunakan solusi ini.
Saya membuat modul sederhana yang memperluas
UILabel
dan menangani memuat file .ttf. Saya merilisnya opensource di bawah lisensi Apache dan meletakkannya di github Here.File-file penting adalah
FontLabel.h
danFontLabel.m
.Ini menggunakan beberapa kode dari jawaban Genericrich .
Jelajahi sumbernya di sini.
ATAU
Salin file font Anda ke sumber daya
Tambahkan kunci ke
Info.plist
file Anda yang disebut UIAppFonts. ("Font disediakan oleh aplikasi)Jadikan kunci ini sebagai array
Untuk setiap font yang Anda miliki, masukkan nama lengkap file font Anda (termasuk ekstensi) sebagai item ke array UIAppFonts
Menyimpan
Info.plist
Sekarang dalam aplikasi Anda, Anda dapat menelepon
[UIFont fontWithName:@"CustomFontName" size:15]
untuk mendapatkan font khusus untuk digunakan denganUILabels
danUITextViews
, dll ...Untuk informasi lebih lanjut
sumber
Ada cara sederhana untuk menggunakan font khusus di iOS 4 .
Chalkduster.ttf
) ke folder Resources proyek di XCode.info.plist
dan tambahkan kunci baru yang disebutUIAppFonts
. Jenis kunci ini harus berupa array.Chalkduster.ttf
).[UIFont fontWithName:@"Chalkduster" size:16]
aplikasi Anda.Sayangnya, IB tidak mengizinkan untuk menginisialisasi label dengan font khusus. Lihat pertanyaan ini untuk menyelesaikan masalah ini. Solusi favorit saya adalah menggunakan
UILabel
subkelas khusus :sumber
Di Info.plist tambahkan entri "Font yang disediakan oleh aplikasi" dan sertakan nama font sebagai string:
Kemudian periksa untuk memastikan font Anda disertakan dengan menjalankan:
Perhatikan bahwa nama file ttf Anda mungkin bukan nama yang sama yang Anda gunakan ketika Anda mengatur font untuk label Anda (Anda dapat menggunakan kode di atas untuk mendapatkan parameter "fontWithName"):
sumber
sunting: Jawaban ini tidak aktif pada iOS3.2; gunakan UIAppFonts
Satu-satunya cara saya berhasil memuat kustom
UIFont
adalah melalui kerangka kerja GraphicsServices pribadi.Berikut ini akan memuat semua
.ttf
font dalam bundel utama aplikasi:Setelah font dimuat, mereka dapat digunakan seperti font yang disediakan Apple:
GraphicsServices bahkan dapat dimuat saat runtime jika API menghilang di masa depan:
sumber
[NSString sizeWithFont:[UIFont fontWithName:@"customFont" size:14]];
mengembalikan 0 lebar dan tinggi untuk font kustom apa pun yang telah saya coba.Dengan
iOS 8
+ danXcode 6
+ Anda dapat membuatnya dengan mudah. Berikut langkah-langkahnya:1) Seret dan lepas font Anda ke
Xcode
folder File Pendukung. Jangan lupa untuk menandai aplikasi Anda di bagian Tambahkan ke target . Mulai saat ini Anda dapat menggunakan font iniIB
dan memilihnya dari font palet.2) Untuk membuat font ini tersedia di perangkat Anda, buka
info.plist
dan tambahkanFonts provided by application
kunci Anda. Ini akan berisi kunci Item 0, Anda harus menambahkan nama font Anda sebagai nilainya. Nama font dapat bervariasi dari nama file font Anda. Tetapi pertama-tama, cobalah untuk menambahkan nama file Anda dalam banyak kasus pekerjaan ini.Jika tidak, artikel ini selalu membantu saya.
Berikut ini cuplikan singkat kode dari artikel ini untuk membantu Anda menemukan nama font Anda.
EDIT
Saya ingin menyebutkan, bahwa Anda perlu menambahkan file font ke Fase Build Target Anda , Salin Sumber Daya Bundel . Tanpa itu, Anda tidak akan melihat font Anda di perangkat. Dan itu bisa mengarah pada perilaku tak terduga.
Sebagai contoh, saya menemukan
bug
, ketikaUITextField
memiliki font khusus, tetapi font ini tidak ada dalam Salin Bundle Resources . Dan ketika saya segueviewcontroller
dengan initextfield
, ada penundaan sekitar 4 detik sebelumviewDidLoad
fungsi dipanggil. Menyelesaikan masalah font menghapus penundaan ini. Jadi, rekomendasikan untuk memeriksanya dua kali. (rdar: // 20028250) Btw, saya tidak dapat mereproduksi bug, tapi saya yakin masalahnya ada pada font.sumber
Saya telah melakukan ini seperti ini:
Muat font:
Sekarang, di Anda
drawRect:
, lakukan sesuatu seperti ini:Pada dasarnya Anda harus melakukan beberapa brute force melalui teks dan mencari-cari nomor ajaib untuk menemukan offset Anda (di sini, lihat saya menggunakan 29) di font, tetapi berfungsi.
Anda juga harus memastikan font tersebut dapat disematkan secara hukum. Kebanyakan tidak dan ada pengacara yang berspesialisasi dalam hal semacam ini, jadi berhati-hatilah.
sumber
CGContextShowTextAtPoint()
- meskipun tidak bekerja dengan UTF-8.Ya, Anda dapat memasukkan font khusus. Lihat dokumentasi pada UIFont, khususnya,
fontWithName:size:
metode ini.1) Pastikan Anda memasukkan font di folder sumber daya Anda.
2) "nama" font belum tentu nama file.
3) Pastikan Anda memiliki hak hukum untuk menggunakan font itu. Dengan memasukkannya ke dalam aplikasi Anda, Anda juga mendistribusikannya, dan Anda harus memiliki hak untuk melakukannya.
sumber
Jika Anda menggunakan
xcode 4.3
, Anda harus menambahkanfont
keBuild Phase
bawahCopy Bundle Resources
, menurut https://stackoverflow.com/users/1292829/arne di utas, Custom Fonts Xcode 4.3 . Ini berhasil bagi saya, berikut adalah langkah-langkah yang saya ambil agar font khusus berfungsi di aplikasi saya:OTF
(atauTTF
) ke grup baru yang saya buat dan menerima pilihan xcode untukcopying the files over to the project folder
.UIAppFonts
array dengan font Anda terdaftar sebagai item dalam array. Hanyanames
, bukan ekstensi (mis. "GothamBold
", "GothamBold-Italic
").project name
jalan di bagian atasProject Navigator
di sisi kiri layar.Build Phases
tab yang muncul di area utama xcode.Copy Bundle Resources
" dan klik"+"
untuk menambahkan font."+"
.add to the project
.sumber
Inilah petunjuk langkah demi langkah cara melakukannya. Tidak perlu perpustakaan tambahan atau pengkodean khusus.
http://shang-liang.com/blog/custom-fonts-in-ios4/
Sebagian besar masalah adalah font bukan metode. Cara terbaik untuk melakukannya adalah dengan menggunakan font yang pasti akan berfungsi, seperti verdana atau geogia. Kemudian ubah ke font yang dimaksud. Jika tidak berfungsi, mungkin nama fontnya tidak benar, atau fontnya bukan font yang diformat dengan baik.
sumber
Sangat mudah untuk menambahkan font baru di Aplikasi iOS Anda yang sudah ada.
Anda hanya perlu menambahkan font mis. Font.ttf ke dalam Resource Folder Anda.
Buka aplikasi Anda
info.plist
. Tambahkan baris baru sebagai "Font yang disediakan oleh aplikasi" dan ketikkan nama font sebagai font.ttf.Dan ketika mengatur font lakukan sebagai
setFont:"corresponding Font Name"
Anda dapat memeriksa apakah font Anda ditambahkan atau tidak oleh
NSArray *check = [UIFont familyNames];
.Ini mengembalikan semua font yang didukung aplikasi Anda.
sumber
Saya akan merekomendasikan mengikuti salah satu tutorial singkat favorit saya di sini: http://codewithchris.com/common-mistakes-with-adding-custom-fonts-to-your-ios-app/ dari mana informasi ini berasal.
Langkah 1 - Seret .ttf atau .otf Anda dari Finder ke Proyek Anda
CATATAN - Pastikan untuk mengklik kotak 'Tambah ke target' pada target aplikasi utama Anda
Jika Anda lupa untuk klik untuk menambahkannya ke target kemudian klik pada file font dalam hirarki proyek Anda dan pada panel sebelah kanan klik target aplikasi utama dalam Sasaran Keanggotaan bagian
Untuk memastikan font Anda adalah bagian dari target aplikasi Anda, pastikan font itu muncul di Sumber Salin Bundel Anda dalam Fase Pembuatan
Langkah 2 - Tambahkan nama file font ke Plist Anda
Buka Properti Target iOS Khusus di Bagian Info Anda dan tambahkan kunci ke item di bagian yang disebut
Fonts provided by application
(Anda akan melihatnya muncul sebagai opsi saat Anda mengetik dan itu akan mengatur dirinya sendiri sebagai sebuah array. Klik panah kecil untuk membuka item array dan ketik nama file .ttf atau .otf yang Anda tambahkan untuk memberi tahu aplikasi Anda bahwa ini adalah file font yang Anda inginkan tersediaCATATAN - Jika aplikasi Anda mogok tepat setelah langkah ini maka periksa ejaan Anda pada item yang Anda tambahkan di sini
Langkah 3 - Cari tahu nama font Anda sehingga Anda dapat memanggilnya
Seringkali nama font yang dilihat oleh aplikasi Anda berbeda dari apa yang Anda pikir didasarkan pada nama file untuk font itu, taruh ini dalam kode Anda dan lihat log aplikasi Anda membuat untuk melihat apa nama font untuk memanggil kode Anda
Cepat
Tujuan C
Log Anda akan terlihat seperti ini:
Langkah 4 - Gunakan font khusus baru Anda menggunakan nama dari Langkah 3
Cepat
Tujuan C
sumber
Temukan TTF di pencari dan "Dapatkan Info". Di bawah judul "Nama lengkap:" itu memberi saya nama yang kemudian saya gunakan
fontWithName
(saya hanya menyalin dan menempelkan nama yang tepat, dalam hal ini tidak diperlukan ekstensi '.ttf').sumber
Ini belum keluar, tetapi versi cocos2d (kerangka permainan 2d) berikutnya akan mendukung font bitmap panjang variabel sebagai peta karakter.
http://code.google.com/p/cocos2d-iphone/issues/detail?id=317
Penulis tidak memiliki tanggal rilis yang dipaku untuk versi ini, tetapi saya memang melihat posting yang mengindikasikan itu akan berada dalam satu atau dua bulan mendatang.
sumber
Satu pemberitahuan penting: Anda harus menggunakan "Nama PostScript" yang terkait dengan font, bukan nama lengkap atau nama keluarga. Nama ini seringkali berbeda dari nama normal font.
sumber
ikuti langkah ini
1) Salin font Anda di proyek Anda
2) buka
.plist
file Anda dalam mode kode sumber ... (Catatan- Jangan bukainfo.plist
)3) Sebelum itu - Klik kanan pada font Anda dan buka di fontforge atau editor serupa dan
install
di sistem Anda, itu harusinstall
4) Ketikkan ini
5) Ketikkan kode ini di
class .m
Di sini lblPoints akan berubah pada Anda
UILabel
Selesai !! Jika font Anda masih tidak berfungsi, periksa kompatibilitas font Anda terlebih dahulu
sumber
info.plist
?Mungkin penulis lupa memberi font nama Mac FOND ?
Anda juga bisa mencoba opsi "Apple" di dialog ekspor.
DISCLAIMER : Saya bukan pengembang IPhone!
sumber
Saya telah mencoba berbagai saran di halaman ini di iOS 3.1.2 dan ini adalah kesimpulan saya:
Cukup menggunakan
[UIFont fontWithName:size:]
dengan font di direktori Resources tidak akan berfungsi, bahkan jika nama FOND diatur menggunakan FontForge.[UIFont fontWithName:size:]
akan berfungsi jika font dimuat pertama kali menggunakan GSFontAddFromFile. TetapiGSFontAddFromFile
bukan bagian dari iOS 3.1.2 sehingga harus dimuat secara dinamis seperti dijelaskan oleh @rpetrich.sumber
Lihatlah
ATSApplicationFontsPath
Entri plist sederhana yang memungkinkan Anda untuk memasukkan file font (s) dalam folder sumber daya aplikasi Anda dan mereka "hanya bekerja" di aplikasi Anda.
sumber
Saya telah menggabungkan beberapa saran pada halaman ini menjadi sesuatu yang bekerja untuk saya di iOS 5.
Pertama, Anda harus menambahkan font khusus ke proyek Anda. Kemudian, Anda harus mengikuti saran dari @iPhoneDev dan menambahkan font ke file info.plist Anda.
Setelah Anda melakukannya, ini berfungsi:
Namun, Anda perlu tahu nama Postscript font Anda. Cukup ikuti saran @Daniel Wood dan tekan command-i saat Anda berada di FontBook.
Lalu, nikmati font khusus Anda.
sumber
Pertama tambahkan font dalam format .odt ke sumber daya Anda, dalam hal ini kami akan menggunakan DINEngschriftStd.otf, kemudian gunakan kode ini untuk menetapkan font ke label
Untuk memastikan font Anda dimuat pada proyek panggil saja
Pada .plist Anda harus mendeklarasikan font. Cukup tambahkan catatan 'Font yang disediakan oleh aplikasi' dan tambahkan string item 0 dengan nama font (DINEngschriftStd.otf)
sumber
Untuk iOS 3.2 dan di atasnya: Gunakan metode yang disediakan oleh beberapa di atas, yaitu:
[UIFont fontWithName:@"Real Font Name" size:16]
di aplikasi Anda.TETAPI "Nama Font Asli" tidak selalu yang Anda lihat di Fontbook. Cara terbaik adalah bertanya pada perangkat Anda font apa yang dilihatnya dan nama persisnya.
Saya menggunakan uifont-name-grabber yang diposting di: uifont-name-grabber
Cukup letakkan font yang Anda inginkan ke proyek xcode, tambahkan nama file ke plistnya, dan jalankan di perangkat yang Anda buat, itu akan mengirimi Anda daftar font lengkap menggunakan nama yang
UIFont fontWithName:
diharapkan.sumber
Solusi yang lebih baik adalah menambahkan "
Fonts provided by application
" properti baru keinfo.plist
file Anda .Kemudian, Anda dapat menggunakan font khusus seperti biasa
UIFont
.sumber
Ada cara baru untuk menggunakan font khusus, dimulai dengan iOS 4.1. Ini memungkinkan Anda untuk memuat font secara dinamis, baik dari file yang disertakan dengan aplikasi, data yang diunduh, atau apa pun yang Anda miliki. Ini juga memungkinkan Anda memuat font sesuai kebutuhan Anda, sedangkan metode lama memuat semuanya pada waktu startup aplikasi, yang bisa terlalu lama jika Anda memiliki banyak font.
Metode baru dijelaskan di ios-dynamic-font-loading
Anda menggunakan
CTFontManagerRegisterGraphicsFont
fungsinya, memberinya buffer dengan data font Anda. Ini kemudian tersedia untukUIFont
dan tampilan web, sama seperti dengan metode lama. Berikut kode contoh dari tautan itu:sumber
kCTFontManagerErrorAlreadyRegistered
, "File telah terdaftar dalam ruang lingkup yang ditentukan." developer.apple.com/library/ios/#documentation/Carbon/Reference/…Swift, cara kode: (berfungsi juga dengan swift 2.0)
Tambahkan font yang diperlukan ke proyek Anda (seperti menambahkan gambar, seret ke Xcode), pastikan bahwa mereka ditargetkan ke proyek Anda,
tambahkan metode ini dan muat font khusus (disarankan dalam
appDelegate didFinishLaunchingWithOptions
)Gunakan contoh:
Gunakan fonta:
sumber
Anda dapat menambahkan file "FONT" yang diperlukan dalam folder sumber daya. Kemudian buka
Info.plist
file Proyek dan gunakan "Font yang disediakan oleh aplikasi" dan nilai sebagai "FONT NAME".Maka Anda dapat memanggil metode
[UIFont fontwithName:@"FONT NAME" size:12];
sumber
Saya membuat semuanya mungkin tetapi font baru tidak muncul jadi saya menemukan solusinya:
Saat Anda menyeret file fot (otf atau ttf) JANGAN lupa untuk mencentang kotak di bawah "Tambahkan ke target".
Setelah melakukan itu, font Anda akan muncul dan semuanya akan berfungsi dengan baik.
sumber
Meskipun beberapa jawaban di atas benar, saya telah menulis tutorial visual terperinci untuk orang-orang yang masih memiliki masalah dengan font.
Solusi di atas yang memberi tahu Anda untuk menambahkan font ke plist dan gunakan
adalah yang benar. Silakan lakukan sekarang menggunakan cara peretasan lainnya. Jika Anda masih menghadapi masalah dalam menemukan nama font dan menambahkannya, berikut adalah tutorialnya -
Menggunakan font khusus dalam aplikasi ios
sumber
ya Anda dapat menggunakan font khusus di aplikasi Anda
langkah demi langkah mengikuti di sana:
Tambahkan file font khusus Anda ke proyek Anda dalam file pendukung
Tambahkan kunci ke file Info.plist Anda yang disebut UIAppFonts.
Jadikan kunci ini sebagai array
Untuk setiap font yang Anda miliki, masukkan nama lengkap file font Anda (termasuk ekstensi) sebagai item ke array UIAppFonts
Simpan Info.plist Sekarang di aplikasi Anda, Anda dapat memanggil [UIFont fontWithName: @ "Your font Name" ukuran: 20] untuk mendapatkan font khusus untuk digunakan dengan label UIL Anda setelah menerapkan ini jika Anda tidak mendapatkan font yang benar maka Anda klik dua kali pada font khusus, dan lihat dengan hati-hati nama font sisi atas datang dan salin font ini, tempel, di sini [UIFont fontWithName: @ "lewat Nama font Kustom Anda" size: 20]
Saya harap Anda mendapatkan jawaban yang benar
sumber
ya Anda dapat menggunakan font khusus di aplikasi Anda
langkah demi langkah mengikuti di sana:
Info.plist
file Anda yang disebut UIAppFonts.Info.plist
Sekarang di aplikasi Anda, Anda dapat menelepon[UIFont fontWithName:@"your Custom font Name" size:20]
untuk mendapatkan font khusus untuk digunakan denganUILabels
setelah menerapkan ini jika Anda tidak mendapatkan font yang benar maka Anda klik dua kali pada font kustom, dan lihat dengan hati-hati nama font sisi atas datang dan salin font ini, tempel, di sini
[UIFont fontWithName:@" here past your Custom font Name" size:20]
saya harap Anda akan mendapatkan jawaban yang benarsumber