İPhone fonunda öz fontumuzu yerləşdirə bilərəm?

Bu sual iOS üçün pre-3.2 tətbiq olunur. 3.2-dən başlayaraq, bu funksionallıq aşağıdakı samvermette cavabı ilə asanlıqla əldə edilə bilər və mən bunu (komanda üçün samvermette) əks etdirmək üçün qəbul etmişəm. Hər iki cavab üçün ədalət edə bilməzdim (yuxarıdan başqa), amma hər ikisi yaxşıdır.

Tətbiqə mətn göstərilməsi, yüklənməsi və UIKit kimi standart UIKit elementləri ilə istifadə etmək üçün xüsusi bir font daxil etmək UILabel . Mümkündürmü?

Aşağıdakı bağlantıları tapdım:

ancaq hər glyphi, xüsusilə də çox satırlı mətn üçün çox çalışqan kimi, mənə göstərməli idi.

Mən də bunun mümkün olmadığını söyləyən mesajlar tapdım, lakin bəhanə olmadan, mən son cavab axtarıram.


EDIT - başarısız oldu -[UIFont fontWithName:size:]

Mən Harrowprint.tff ( buradan yüklədim) yüklədim və mənim resurs kitabçam və layihəmə əlavə etdi. Sonra bu kodu sınadım:

 UIFont* font = [UIFont fontWithName:@"Harrowprint" size:20]; 

nəticədə istisna istisna edildi. Finder'daki TTF faylına baxaraq, font adı Harrowprint olduğunu doğruladı.


XÜSUSİYYƏTLƏRİ - bu günə qədər X və ya Y sənədlərini oxumağımı bildirən bir çox cavablar olmuşdur. Bütün bunlarla bir çox təcrübəni sınamışam və heç bir yerdə qalmamışam. Bir halda, X yalnız iPhone OS üçün deyil, OS X üçün aiddir. Buna görə də bu sual üçün lütf qururam və mükafatı cihazda bu işi almaq üçün kifayət qədər məlumat verən cavabı verən ilk şəxsə (yalnız sənədləşdirilmiş API istifadə edərək) verəcəyəm. Simulatorda işləmək də bir bonus olardı.


EDIT. Göründüyü kimi, mükafat mükafatının ən çox səs çoxluğu məsuliyyət daşıyır. Maraqlıdır. Kimsə həqiqətən sual soruşulduqca soruşulan bir cavab vermədi - öz UILabel alt UILabel kodlaşdırmağı əhatə edən bir həll mənim üçün vacib bir xüsusiyyət olan word- UILabel dəstəkləmir - baxmayaraq ki, mən genişləndirə bilərəm bunu etməlidir.

739
11 дек. Airsource Ltd tərəfindən 11 dekabr. 2008-12-11 23:21 '08 at 11:21 pm 2008-12-11 23:21
@ 32 cavab
  • 1
  • 2

iOS 3.2 və daha sonrakı versiyaları dəstəkləyir. İPhone OS 3.2 doc-dən nə hüququ:

Xüsusi font dəstəyi
Xüsusi şriftlərdən istifadə etmək istəyən ərizələr, bu şriftləri tətbiq paketinə daxil edə bilər və bu şriftləri sistemdən istifadə edərək, onların Info.plist faylında UIAppFonts düyməsini daxil edə bilər. Bu düymənin dəyəri tətbiq setində yazı tipli faylları müəyyən edən bir sıra simvoludur. Sistem açarı görəndə, müəyyən şriftləri yükləyir və tətbiqə təqdim edir.

Şriftlər Info.plist də quraşdırıldıqdan sonra, xüsusi şriftlərinizi IB-də hər hansı başqa font kimi və ya proqramlı şəkildə istifadə edə bilərsiniz.

Apple developer forumlarında daimi bir axın var:
https://devforums.apple.com/thread/37824 (giriş tələb olunur)

Və buna nail olmaq üçün əla və sadə 3 addım tutorial

  • Xcode'u bir qaynaq olaraq istifadə edərək, öz yazı fayllarını layihənizə əlavə edin
  • UIAppFonts adlı Info.plist faylına bir əlavə əlavə edin.
  • Bu əsası bir sıra halına gətirin
  • Hər bir yazı UIAppFonts üçün, UIAppFonts array elementləri kimi font faylının tam adını (uzantı daxil olmaqla) daxil edin
  • Info.plist saxla
  • İndi tətbiqdə UILabelsUITextViews , və s. İlə istifadə ediləcək öz fontunuzu almaq üçün sadəcə [UIFont fontWithName:@"CustomFontName" size:12] deyə bilərsiniz.

Həmçinin: fontların Bundle surəti resurslarında olduğundan əmin olun.

624
11 апр. cavab samvermette tərəfindən verilir 11 Apr 2010-04-11 08:01 '10 saat 08:01 'da 2010-04-11 08:01

Change: iOS 3.2 ilə başlayaraq, bu funksiya quraşdırılmışdır. Əgər əvvəlcədən 3.2-ə dəstək olmağınız lazım olsa, bu həlli istifadə edə bilərsiniz.

UILabel genişləndirən və UILabel faylları UILabel sadə modul UILabel . Mən açıq mənbə Apache lisenziyası altında buraxdım və github-da qoydum .

Önemli fayllar FontLabel.hFontLabel.m .

Genericrich cavabından kodun bir hissəsini istifadə edir.

border=0

Burada mənbəyə baxın.

Və ya

  • Font faylını resurslara köçürün

  • UIAppFonts adlı Info.plist faylına bir əlavə əlavə edin. ("Ərizə tərəfindən verilən yazı tipləri)

  • Bu əsası bir sıra halına gətirin

  • Hər bir yazı tipiniz üçün, UIAppFonts array elementləri kimi font faylının tam adını (uzantı daxil olmaqla) daxil edin

  • Info.plist saxla

  • İndi tətbiqinizdə UILabelsUITextViews , və s. UILabels istifadə ediləcək xüsusi bir font almaq üçün sadəcə [UIFont fontWithName:@"CustomFontName" size:15] zəng edə bilərsiniz ...

Daha ətraflı məlumat üçün

290
01 мая '09 в 0:57 2009-05-01 00:57 Cavab komandanın 01 may '09 tarixində 0:57 'da verildi. 2009-05-01 00:57

İOS 4-də xüsusi fonts istifadə etmək üçün asan bir yol var.

  • Bir şrift faylını (məsələn, Chalkduster.ttf ) Xcode Project Resources qovluğuna əlavə edin.
  • info.plist açın və info.plist adlı yeni bir düyməni əlavə edin. Bu düymənin növü bir sıra olmalıdır.
  • Extension ( Chalkduster.ttf ) daxil olmaqla, bu array öz font adınızı əlavə edin.
  • İndi [UIFont fontWithName:@"Chalkduster" size:16] istifadə edə bilərsiniz.

Təəssüf ki, IB, xüsusi yazı tiplərini istifadə edərək etiketlərin başlanmasına icazə vermir. Bu problemi həll etmək üçün bu suala baxın. En sevdiğim çözüm UILabel xüsusi bir alt UILabel istifadə UILabel :

 @implementation CustomFontLabel - (id)initWithCoder:(NSCoder *)decoder { if (self = [super initWithCoder: decoder]) { [self setFont: [UIFont fontWithName: @"Chalkduster" size: self.font.pointSize]]; } return self; } @end 
112
08 июля '10 в 0:05 2010-07-08 00:05 Cavab 08 iyul 2010-cu il saat 08: 00-da alexey tərəfindən verilir

Info.plist-də "Ərizə tərəfindən verilən şriftlər" yazısını əlavə edin və font adlarını strings kimi əlavə edin:

 Fonts provided by application Item 0 myfontname.ttf Item 1 myfontname-bold.ttf ... 

Sonra yazı tipinizin açıq olduğundan əmin olun:

 for (NSString *familyName in [UIFont familyNames]) { for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) { NSLog(@"%@", fontName); } } 

Etiketinizin yazı tipini təyin edərkən ttf faylınızın adını istifadə etdiyiniz adla eşleşmeyebileceğini unutmayın ("fontWithName" parametresini almaq üçün yuxarıda göstərilən kodu istifadə edə bilərsiniz):

 [label setFont:[UIFont fontWithName:@"MyFontName-Regular" size:18]]; 
50
17 окт. Cavab bdev 17 oktyabr verilir . 2012-10-17 16:29 '12 at 4:29 pm 2012-10-17 16:29

redaktə: bu cavab iOS3.2 kimi işləmir; UIAppFonts istifadə edin

UIFont müvəffəqiyyətlə yükləmənin yeganə üsulu xüsusi GraphicsServices infrastrukturundan keçirildi.

Əsas proqram paketi içərisindəki .ttf yazı tiplərinin hamısı aşağıda verilmişdir:

 BOOL GSFontAddFromFile(const char * path); NSUInteger loadFonts() { NSUInteger newFontCount = 0; for (NSString *fontFile in [[NSBundle mainBundle] pathsForResourcesOfType:@"ttf" inDirectory:nil]) newFontCount += GSFontAddFromFile([fontFile UTF8String]); return newFontCount; } 

Şriftlər endirildikdən sonra onlar Apple tərəfindən verilən şriftlərlə eyni şəkildə istifadə edilə bilər:

 NSLog(@"Available Font Families: %@", [UIFont familyNames]); [label setFont:[UIFont fontWithName:@"Consolas" size:20.0f]]; 

GraphicsServices gələcəkdə API yoxa çıxdıqda hətta iş vaxtında yüklənə bilər:

 #import <dlfcn.h> NSUInteger loadFonts() { NSUInteger newFontCount = 0; NSBundle *frameworkBundle = [NSBundle bundleWithIdentifier:@"com.apple.GraphicsServices"]; const char *frameworkPath = [[frameworkBundle executablePath] UTF8String]; if (frameworkPath) { void *graphicsServices = dlopen(frameworkPath, RTLD_NOLOAD | RTLD_LAZY); if (graphicsServices) { BOOL (*GSFontAddFromFile)(const char *) = dlsym(graphicsServices, "GSFontAddFromFile"); if (GSFontAddFromFile) for (NSString *fontFile in [[NSBundle mainBundle] pathsForResourcesOfType:@"ttf" inDirectory:nil]) newFontCount += GSFontAddFromFile([fontFile UTF8String]); } } return newFontCount; } 
35
01 мая '09 в 2:25 2009-05-01 02:25 Cavab rpetrich 01 May '09 saat 2:25 'də verildi 2009-05-01 02:25

iOS 8 Xcode 6Xcode 6 ilə asanlıqla edə bilərsiniz. İşdə addımlar:

1) Yazı Xcode Supporting Files qovluğuna sürüşdürün və buraxın. Tətbiqinizi " Hedefə əlavə et " bölməsində qeyd etməyi unutmayın. Bu nöqtədən bu şrifti IB istifadə edə və font IB seçə bilərsiniz.

2019

30
02 сент. Dima Deplov tərəfindən verilmiş cavab 02 Sep 2014-09-02 11:08 '14 at 11:08 2014-09-02 11:08

Bunu belə etdim:

Şrifti yükləyin:

 - (void)loadFont{ // Get the path to our custom font and create a data provider. NSString *fontPath = [[NSBundle mainBundle] pathForResource:@"mycustomfont" ofType:@"ttf"]; CGDataProviderRef fontDataProvider = CGDataProviderCreateWithFilename([fontPath UTF8String]); // Create the font with the data provider, then release the data provider. customFont = CGFontCreateWithDataProvider(fontDataProvider); CGDataProviderRelease(fontDataProvider); } 

İndi, sizin drawRect: belə bir şey edin:

 -(void)drawRect:(CGRect)rect{ [super drawRect:rect]; // Get the context. CGContextRef context = UIGraphicsGetCurrentContext(); CGContextClearRect(context, rect); // Set the customFont to be the font used to draw. CGContextSetFont(context, customFont); // Set how the context draws the font, what color, how big. CGContextSetTextDrawingMode(context, kCGTextFillStroke); CGContextSetFillColorWithColor(context, self.fontColor.CGColor); UIColor * strokeColor = [UIColor blackColor]; CGContextSetStrokeColorWithColor(context, strokeColor.CGColor); CGContextSetFontSize(context, 48.0f); // Create an array of Glyph the size of text that will be drawn. CGGlyph textToPrint[[self.theText length]]; // Loop through the entire length of the text. for (int i = 0; i < [self.theText length]; ++i) { // Store each letter in a Glyph and subtract the MagicNumber to get appropriate value. textToPrint[i] = [[self.theText uppercaseString] characterAtIndex:i] + 3 - 32; } CGAffineTransform textTransform = CGAffineTransformMake(1.0, 0.0, 0.0, -1.0, 0.0, 0.0); CGContextSetTextMatrix(context, textTransform); CGContextShowGlyphsAtPoint(context, 20, 50, textToPrint, [self.theText length]); } 

Əsasən, yazı içərisində hərəkət etmək və seqmentin (burada, mənə bax, 29 istifadə edin) sehrli nömrə ilə səyahət etməklə bir neçə kobud qüvvəyə ehtiyacınız var, amma işləyir.

Bundan əlavə, yazı tipinin qanuni olaraq quraşdırılacağına əmin olmalısınız. Onların əksəriyyəti bu cür işlərə ixtisaslaşmayan avukatlardır, buna görə də diqqətli olun.

26
16 дек. Cavab verilir Genericrich 16 dekabr. 2008-12-16 04:28 '08 at 4:28 2008-12-16 04:28

xcode 4.3 istifadə xcode 4.3 , iş xcode 4.3 https://stackoverflow.com/users/1292829/arne , Custom Xcode 4.3 yazı tiplərinə uyğun olaraq, Copy Bundle Resources bölümü bölümündeki xcode 4.3 font eklemeniz lazımdır. Mənim üçün çalışdı, mənim ərizəmdə işləmək üçün xüsusi şriftlər üçün atdığım addımlar:

  • Layihəyə bir font əlavə edin. Mən OTF (və ya TTF ) fayllarını yaratdığım yeni bir qrupa sürükledim və xcode copying the files over to the project folder seçimini qəbul etdim.
  • Array elementləri olaraq siyahıda olan şriftlərinizlə bir UIAppFonts array yaradın. Yalnız names , bir uzantı deyil (məsələn, " GothamBold ", " GothamBold-Italic ").
  • Ekranın sol tərəfindəki Project Navigator yuxarısındaki project name düyməsini basın.
  • Əsas xcode ərazisində göstərilən Quruluş Build Phases sekmesini basın.
  • " Copy Bundle Resources " bölməsini genişletin və "+" yazı tipini əlavə edin.
  • "+" Düyməsinə vurduğunuzda açılan fayl naviqatorundan font faylını seçin.
  • add to the project etdiyiniz hər bir font üçün bunu add to the project .
20
27 марта '12 в 22:45 2012-03-27 22:45 cavab SKris 27 mart '12 saat 10:45 'da verilir 2012-03-27 22:45

Bəli, xüsusi yazı tiplərini əlavə edə bilərsiniz. UIFont sənədlərinə baxın, xüsusilə fontWithName:size: metodu.

1) Resurs qovluğundakı fontu daxil etdiyinizə əmin olun.

2) Fontun "adı" mütləq faylın adı deyil.

3) Bu yazıdan istifadə etmək hüququ olduğundan əmin olun. Ərizənizə əlavə etməklə, onu da yayırsınız və bunun üçün uyğun olmaq lazımdır.

19
12 дек. cavab 12 avqustda verilir . 2008-12-12 04:18 '08 at 4:18 'da 2008-12-12 04:18

Bunu necə etməklə bağlı addım-addım təlimatlar. Əlavə kitabxana və ya xüsusi kodlaşdırmaya ehtiyac yoxdur.

http://shang-liang.com/blog/custom-fonts-in-ios4/

Çox hallarda, problem üsulla deyil, yazı tiplidir. Bunun ən yaxşı yolu, yəqin ki, işləyəcək bir yazı tipindən istifadə etməkdir, məsələn verdana və ya coğrafiya. Sonra nəzərdə tutulmuş yazı tipinə keçin. Bu işə yaramırsa, yazı tipinin adı yanlışdır və ya yazı tipi yaxşı biçimlendirilmiş bir yazı tipi deyildir.

12
22 марта '11 в 8:59 2011-03-22 08:59 cavab 5566 22 mart 'da 11 saat 8:59' də verilir

Mövcud bir iOS proqramına yeni bir font əlavə etmək çox asandır.

Məsələn, bir font əlavə etməlisiniz. font.ttf resurs qovluğuna.

info.plist tətbiqini açın. "Ərizə tərəfindən verilən şriftlər" kimi yeni bir xətt əlavə edin və yazı tipini font.ttf kimi daxil edin.

Yazı tipini qurarkən, setFont:"corresponding Font Name"

Yazı NSArray *check = [UIFont familyNames]; əlavə olub-olmadığını yoxlaya bilərsiniz, NSArray *check = [UIFont familyNames]; .

Ərizə tərəfindən dəstəklənən bütün yazı tipini qaytarır.

11
30 марта '12 в 13:12 2012-03-30 13:12 Cavab 30 Mart 2012-ci il saat 13:12 radələrində verilir. 2012-03-30 13:12

Ən sevimli qısa dərsliklərimdən birini təklif edərdim: http://codewithchris.com/common-mistakes-with-adding-custom-fonts-to-your-ios-app/ , bu məlumatın gəlməsi.

Adım 1 - Buluddan .ttf və ya .tf faylını layihəyə sürükləyin və buraxın

Qeyd. Tətbiqin əsas məqsədi ilə "Hedeflərə əlavə et" alanına əmin olun.

2019

29 сент. ColossalChris tərəfindən verilmiş cavab Sep 29 2015-09-29 19:53 '15 'da 19:53' de, 2015-09-29 19:53

TTF-i axtarışda və "Məlumat əldə edin". "Tam adı:" başlığı altında mənə bir fontWithName sonra mən fontWithName ilə istifadə etdilər (mən yalnız kopyaladım və tam adı yazdırdım, bu halda ".ttf" lazım idi).

9
07 дек. Cavab Nano 07 Dekabr. 2010-12-07 04:16 '10 at 4:16 2010-12-07 04:16

Bir vacib qeyd: yazı ilə əlaqəli "PostScript" adını istifadə etməlisiniz, onun tam adı və ya soyadı deyil. Bu ad adətən font adından fərqlənə bilər.

8
15 янв. cavab user576862 15 yanvar tərəfindən verilir . 2011-01-15 19:40 '11 saat 19:40 'da 2011-01-15 19:40

Bütün bunlar deyil, lakin cocos2d (2d oyun çərçivəsi) növbəti versiyası xarakter xəritələri kimi dəyişən uzunluqlu bitmap şriftləri dəstəkləyəcək.

http://code.google.com/p/cocos2d-iphone/issues/detail?id=317

Müəllif bu versiya üçün müəyyən bir yayım tarixinə malik deyil, amma növbəti ayda və ya iki ildə olacağını qeyd edən bir nəşr gördüm.

7
28 апр. Cavab 28 aprelda John tərəfindən verildi. 2009-04-28 01:56 '09 saat 01:56 'da 2009-04-28 01:56

Öncelikle kaynaklarınızda .odt yazı tipini əlavə edin, bu halda DINEngschriftStd.otf istifadə edəcəyik və sonra yazı tipini etiketə təyin etmək üçün bu kodu istifadə edin.

 [theUILabel setFont:[UIFont fontWithName:@"DINEngschriftStd" size:21]]; 

Yazı tipinizin layihəyə yükləndiyinə əmin olmaq üçün sadəcə zəng edin

 NSLog(@"Available Font Families: %@", [UIFont familyNames]); 

Şəklində yazı tipini elan etməlisiniz. Yalnız "Ərizə tərəfindən verilən şriftlər" yazısını əlavə edin və font adı ilə "0" satırını əlavə edin (DINEngschriftStd.otf)

5
26 сент. Alejandro Luengo tərəfindən 26 Sentyabrda verilən cavab. 2012-09-26 12:58 '12 at 12:58 2012-09-26 12:58

İOS 3.2 və yuxarı üçün: yuxarıdakı üsulları istifadə edin:

  • Bir şrift faylını (məsələn, Chalkduster.ttf ) Xcode Project Resources qovluğuna əlavə edin.
  • İnfo.plist faylını açın və UIAppFonts adlı yeni bir düyməni əlavə edin. Bu düymənin növü bir sıra olmalıdır.
  • Extension ( Chalkduster.ttf ) daxil olmaqla, bu array öz font adınızı əlavə edin.
  • [UIFont fontWithName:@"Real Font Name" size:16] istifadə edin.

BUT "Real Font Adı" həmişə FontBookda gördüyünüzə uyğun deyil. Ən yaxşı yolu, yazı tipində gördüyü cihazı və tam olaraq hansı adları soruşmaqdır.

Uifont-name-grabber istifadə, uifont-name-grabber göndərilir

Yalnız xcode layihəsində lazımi şriftləri buraxın, fayl adını plistinə əlavə edin və qurduğunuz cihazda işə salın ki, UIFont fontWithName: gözlənilən adları istifadə edərək, şriftlərin tam siyahısını göndərin.

5
29 дек. 29 dekabrda Jarson tərəfindən cavab verildi. 2011-12-29 22:20 '12 saat 10.20 'da 2011-12-29 22:20

Bu səhifədəki bəzi məsləhətləri iOS 5-də mənim üçün işləyən bir şeyə birləşdirirdim.

Birincisi, layihəyə xüsusi bir font əlavə etməlisiniz. Sonra @iPhoneDev məsləhətini izləyin və fontunu info.plist faylına əlavə edin.

Bundan sonra işləyir:

 UIFont *yourCustomFont = [UIFont fontWithName:@"YOUR-CUSTOM-FONT-POSTSCRIPT-NAME" size:14.0]; [yourUILabel setFont:yourCustomFont]; 

Bununla belə, yazı tipinizin postscript adını bilmək lazımdır. Yalnız @ Daniel Wood'un məsləhətinə əməl edin və FontBook'ta olduğunuzda -i əmrini vurun.

Sonra xüsusi bir font istifadə edin.

5
03 сент. Cavab AaronBaker tərəfindən verilib 03 Sep. 2012-09-03 19:13 '12 at 19:13 2012-09-03 19:13

Yəqin ki, müəllif yazı tipini Mac FOND adını verməyi unutmadı?

  • FontForge- də fontu açın, daha sonra Element> Font məlumatına keçin
  • Существует опция "Mac", где вы можете установить имя FOND.
  • В разделе "Файл" > "Экспорт шрифта" вы можете создать новый ttf