Gostaria que um aplicativo incluísse uma fonte personalizada para renderizar texto, carregá-lo e depois usá-lo com UIKit
elementos padrão como UILabel
. Isso é possível?
ios
cocoa-touch
fonts
Airsource Ltd
fonte
fonte
Respostas:
O iOS 3.2 e versões posteriores suportam isso. Diretamente do documento O que há de novo no iPhone OS 3.2 :
Depois que as fontes forem definidas
Info.plist
, você poderá usar suas fontes personalizadas como qualquer outra fonte no IB ou programaticamente.Há um tópico em andamento nos Fóruns de desenvolvedores da Apple:
https://devforums.apple.com/thread/37824 (é necessário fazer login)
E aqui está um excelente e simples tutorial de 3 etapas sobre como conseguir isso (link quebrado removido)
Info.plist
arquivo chamadoUIAppFonts
.UIAppFonts
matrizInfo.plist
[UIFont fontWithName:@"CustomFontName" size:12]
para obter a fonte personalizada para usar com seus UILabels e UITextViews , etc.Além disso: verifique se as fontes estão nos seus Recursos do pacote de cópias.
fonte
Editar: a partir do iOS 3.2, essa funcionalidade é incorporada. Se você precisar oferecer suporte ao pré-3.2, ainda poderá usar esta solução.
Criei um módulo simples que estende
UILabel
e manipula o carregamento de arquivos .ttf. Eu o liberei opensource sob a licença Apache e coloquei no github Here.Os arquivos importantes são
FontLabel.h
eFontLabel.m
.Ele usa parte do código da resposta de Genericrich .
Navegue pela fonte Aqui.
OU
Copie seu arquivo de fonte em recursos
Adicione uma chave ao seu
Info.plist
arquivo chamada UIAppFonts. ("Fontes fornecidas pelo aplicativo)Faça desta chave uma matriz
Para cada fonte que você possui, digite o nome completo do seu arquivo de fonte (incluindo a extensão) como itens da matriz UIAppFonts
Salve
Info.plist
Agora, no seu aplicativo, você pode simplesmente ligar
[UIFont fontWithName:@"CustomFontName" size:15]
para obter a fonte personalizada para usar com o seuUILabels
eUITextViews
, etc.Para maiores informações
fonte
Existe uma maneira simples de usar fontes personalizadas no iOS 4 .
Chalkduster.ttf
) à pasta Resources do projeto no XCode.info.plist
e adicione uma nova chave chamadaUIAppFonts
. O tipo dessa chave deve ser matriz.Chalkduster.ttf
).[UIFont fontWithName:@"Chalkduster" size:16]
no seu aplicativo.Infelizmente, o IB não permite inicializar rótulos com fontes personalizadas. Veja esta pergunta para resolver este problema. Minha solução favorita é usar
UILabel
subclasse personalizada :fonte
No Info.plist, adicione a entrada "Fontes fornecidas pelo aplicativo" e inclua os nomes das fontes como strings:
Em seguida, verifique se a fonte está incluída executando:
Observe que o nome do seu arquivo ttf pode não ser o mesmo que você usa quando define a fonte para sua etiqueta (você pode usar o código acima para obter o parâmetro "fontWithName"):
fonte
editar: esta resposta está extinta a partir do iOS3.2; use UIAppFonts
A única maneira de conseguir carregar
UIFont
s personalizados com sucesso é através da estrutura privada GraphicsServices.O seguinte carregará todas as
.ttf
fontes no pacote principal do aplicativo:Depois que as fontes são carregadas, elas podem ser usadas como as fontes fornecidas pela Apple:
O GraphicsServices pode até ser carregado em tempo de execução, caso a API desapareça no futuro:
fonte
[NSString sizeWithFont:[UIFont fontWithName:@"customFont" size:14]];
retorna 0 largura e altura para todas as fontes personalizadas que eu tentei.Com
iOS 8
+ eXcode 6
+ você pode fazer isso facilmente. Aqui estão os passos:1) Arraste e solte sua fonte na
Xcode
pasta Arquivos de Suporte. Não esqueça de marcar seu aplicativo na seção Adicionar às metas . A partir deste momento, você pode usar essa fonteIB
e selecioná-la no palete de fontes.2) Para disponibilizar esta fonte no seu dispositivo, abra sua chave
info.plist
e adicioneFonts provided by application
. Ele conterá a chave do item 0, você deve adicionar o nome da fonte como valor. O nome da fonte pode variar do seu nome de arquivo. Mas primeiro, tente adicionar seu nome de arquivo na maioria dos casos, este trabalho.Caso contrário, este artigo sempre me ajudou.
Aqui está um trecho rápido do código deste artigo para ajudá-lo a encontrar o nome da fonte.
EDITAR
Quero mencionar que você precisa adicionar arquivos de fonte às fases de compilação do seu destino , copiar recursos do pacote . Sem ele, você não verá sua fonte no dispositivo. E isso pode levar a um comportamento inesperado.
Por exemplo, encontro um
bug
, quandoUITextField
tenho uma fonte personalizada, mas essa fonte não estava nos Recursos do pacote de cópias . E quando eu passo paraviewcontroller
issotextfield
, há um atraso cerca de 4 segundos antes daviewDidLoad
função ser chamada. A resolução de problemas de fonte removeu esse atraso. Portanto, recomende verificar duas vezes. (rdar: // 20028250) Aliás, não consegui reproduzir o bug, mas tenho certeza de que o problema estava com a fonte.fonte
Eu fiz isso assim:
Carregue a fonte:
Agora, no seu
drawRect:
, faça algo parecido com isto:Basicamente, você precisa fazer alguma força bruta percorrendo o texto e zerando com o número mágico para encontrar seu deslocamento (aqui, veja-me usando 29) na fonte, mas funciona.
Além disso, você deve garantir que a fonte seja legalmente incorporável. A maioria não é e existem advogados especializados nesse tipo de coisa, portanto, seja avisado.
fonte
CGContextShowTextAtPoint()
- embora não funcione com UTF-8.Sim, você pode incluir fontes personalizadas. Consulte a documentação do UIFont, especificamente, o
fontWithName:size:
método.1) Certifique-se de incluir a fonte na sua pasta de recursos.
2) O "nome" da fonte não é necessariamente o nome do arquivo.
3) Verifique se você tem o direito legal de usar essa fonte. Ao incluí-lo no seu aplicativo, você também está distribuindo e precisa ter o direito de fazer isso.
fonte
Se você estiver usando
xcode 4.3
, será necessário adicionarfont
aoBuild Phase
subCopy Bundle Resources
, de acordo com https://stackoverflow.com/users/1292829/arne no segmento, Custom Fonts Xcode 4.3 . Isso funcionou para mim. Aqui estão as etapas que eu tomei para que fontes personalizadas funcionassem no meu aplicativo:OTF
(ouTTF
) para um novo grupo que criei e aceitei a opção de xcodecopying the files over to the project folder
.UIAppFonts
matriz com suas fontes listadas como itens dentro da matriz. Apenas anames
extensão, não a extensão (por exemplo, "GothamBold
", "GothamBold-Italic
").project name
caminho na parte superior doProject Navigator
lado esquerdo da tela.Build Phases
guia que aparece na área principal do xcode.Copy Bundle Resources
seção " " e clique em"+"
para adicionar a fonte."+"
.add to the project
.fonte
Aqui estão as instruções passo a passo de como fazê-lo. Não há necessidade de biblioteca extra ou qualquer codificação especial.
http://shang-liang.com/blog/custom-fonts-in-ios4/
Na maioria das vezes o problema ocorre com a fonte e não com o método. A melhor maneira de fazer isso é usar uma fonte que com certeza funcione, como verdana ou geogia. Mude para a fonte pretendida. Se não funcionar, talvez o nome da fonte não esteja correto ou a fonte não esteja bem formatada.
fonte
É muito fácil adicionar uma nova fonte ao seu aplicativo iOS existente.
Você só precisa adicionar a fonte, por exemplo, font.ttf na sua Pasta de Recursos.
Abra seu aplicativo
info.plist
. Adicione uma nova linha como "Fontes fornecidas pelo aplicativo" e digite o nome da fonte como font.ttf.E ao definir a fonte, faça o
setFont:"corresponding Font Name"
Você pode verificar se sua fonte foi adicionada ou não por
NSArray *check = [UIFont familyNames];
.Ele retorna toda a fonte suportada pelo aplicativo.
fonte
Eu recomendaria seguir um dos meus tutoriais curtos favoritos aqui: http://codewithchris.com/common-mistakes-with-adding-custom-fonts-to-your-ios-app/ a partir do qual essas informações vêm.
Etapa 1 - Arraste seu arquivo .ttf ou .otf do Finder para o seu projeto
NOTA - Clique na caixa para 'Adicionar aos destinos' no destino principal do aplicativo
Se você esqueceu de clicar para adicioná-lo ao seu destino, clique no arquivo de fonte na hierarquia do projeto e, no painel direito, clique no alvo principal do aplicativo na seção Associação ao Destino
Para garantir que suas fontes façam parte do destino do seu aplicativo, verifique se elas são exibidas em Recursos do pacote de cópias em Fases de compilação
Etapa 2 - Adicione os nomes dos arquivos de fonte ao seu Plist
Vou ao Propriedades personalizadas do destino do iOS na sua seção Informações e adicione uma chave aos itens dessa seção chamados
Fonts provided by application
(você deve vê-la como uma opção à medida que a digita, e ela será configurada como uma matriz. Clique na pequena seta para abrir os itens da matriz e digite os nomes dos arquivos .ttf ou .otf que você adicionou para que seu aplicativo saiba que esses são os arquivos de fonte que você deseja disponibilizarNOTA - Se o seu aplicativo falhar logo após esta etapa, verifique a ortografia nos itens adicionados aqui
Etapa 3 - Descubra os nomes das suas fontes para poder chamá-las
Muitas vezes, o nome da fonte visto pelo seu aplicativo é diferente do que você acha que se baseia no nome do arquivo dessa fonte, insira isso no seu código e verifique o log que seu aplicativo faz para ver qual nome de fonte chamar no seu código
Rápido
Objetivo C
Seu log deve ser algo como isto:
Etapa 4 - Use sua nova fonte personalizada usando o nome da Etapa 3
Rápido
Objetivo C
fonte
Encontre o TTF no localizador e em "Obter informações". Sob o título "Nome completo:", ele me deu um nome com o qual eu usei
fontWithName
(apenas copiei e colei o nome exato, neste caso, nenhuma extensão '.ttf' era necessária).fonte
Ainda não saiu, mas a próxima versão do cocos2d (estrutura de jogos em 2D) suportará fontes de bitmap de comprimento variável como mapas de caracteres.
http://code.google.com/p/cocos2d-iphone/issues/detail?id=317
O autor não tem uma data de lançamento definida para esta versão, mas eu vi uma postagem que indicava que seria no próximo mês ou dois.
fonte
Um aviso importante: você deve usar o "nome PostScript" associado à fonte, não seu nome completo ou nome de família. Esse nome geralmente pode ser diferente do nome normal da fonte.
fonte
siga esta etapa
1) Copie sua fonte no seu projeto
2) abra seu
.plist
arquivo no modo de código-fonte ... (Nota - Não abrainfo.plist
)3) Antes disso - clique com o botão direito do mouse na sua fonte e abra-a no fontforge ou editor similar e
install
em seu sistema.install
4) Digite isso
5) Digite este código no seu
class .m
Aqui os lblPoints serão alterados a partir do seu
UILabel
Feito!! Se a fonte ainda não funcionar, verifique primeiro a compatibilidade da fonte
fonte
info.plist
?Talvez o autor tenha esquecido de dar à fonte um nome MAC FOND ?
Você também pode experimentar a opção "Apple" na caixa de diálogo de exportação.
AVISO LEGAL : Eu não sou um desenvolvedor de iPhone!
fonte
Venho testando as várias sugestões desta página no iOS 3.1.2 e estas são minhas conclusões:
Simplesmente usando
[UIFont fontWithName:size:]
com as fontes no diretório Resources não funcionará, mesmo que o nome FOND seja definido usando FontForge.[UIFont fontWithName:size:]
funcionará se as fontes forem carregadas primeiro usando GSFontAddFromFile. MasGSFontAddFromFile
não faz parte do iOS 3.1.2, portanto, ele deve ser carregado dinamicamente, conforme descrito por @rpetrich.fonte
Olho para cima
ATSApplicationFontsPath
Uma entrada simples que permite incluir o (s) arquivo (s) de fonte na pasta de recursos do aplicativo e eles "simplesmente funcionam" no aplicativo.
fonte
Combinei alguns dos conselhos desta página em algo que funciona para mim no iOS 5.
Primeiro, você precisa adicionar a fonte personalizada ao seu projeto. Em seguida, você precisa seguir os conselhos do @iPhoneDev e adicionar a fonte ao seu arquivo info.plist.
Depois de fazer isso, isso funciona:
No entanto, você precisa saber o nome do Postscript da sua fonte. Basta seguir o conselho de @Daniel Wood e pressionar command-i enquanto estiver no FontBook.
Em seguida, aproveite sua fonte personalizada.
fonte
Primeiro adicione a fonte no formato .odt aos seus recursos; nesse caso, usaremos DINEngschriftStd.otf e, em seguida, usar esse código para atribuir a fonte ao rótulo
Para garantir que sua fonte seja carregada no projeto, basta ligar
Na lista. Você deve declarar a fonte. Basta adicionar um registro 'Fontes fornecidas pelo aplicativo' e adicionar uma sequência de itens 0 com o nome da fonte (DINEngschriftStd.otf)
fonte
Para iOS 3.2 e superior: use os métodos fornecidos por vários acima, que são:
[UIFont fontWithName:@"Real Font Name" size:16]
no seu aplicativo.MAS O "Nome real da fonte" nem sempre é o que você vê no Fontbook. A melhor maneira é perguntar ao seu dispositivo quais fontes ele vê e quais são os nomes exatos.
Eu uso o uifont-name-grabber postado em: uifont-name-grabber
Basta soltar as fontes que você deseja no projeto xcode, adicionar o nome do arquivo ao seu plist e executá-lo no dispositivo para o qual você está construindo; ele enviará por e-mail uma lista completa das fontes usando os nomes
UIFont fontWithName:
esperados.fonte
Melhor solução é adicionar uma nova propriedade "
Fonts provided by application
" ao seuinfo.plist
arquivo.Em seguida, você pode usar sua fonte personalizada como normal
UIFont
.fonte
Há uma nova maneira de usar fontes personalizadas, começando com o iOS 4.1. Ele permite que você carregue fontes dinamicamente, sejam de arquivos incluídos no aplicativo, de dados baixados ou do que você possui. Ele também permite carregar fontes conforme necessário, enquanto o método antigo carrega todas elas no momento da inicialização do aplicativo, o que pode levar muito tempo se você tiver muitas fontes.
O novo método é descrito em ios-dynamic-font-loading
Você usa a
CTFontManagerRegisterGraphicsFont
função, fornecendo um buffer com os dados da fonte. Em seguida, fica disponível paraUIFont
visualizações da Web e da Web, assim como no método antigo. Aqui está o código de exemplo desse link:fonte
kCTFontManagerErrorAlreadyRegistered
: "O arquivo já foi registrado no escopo especificado". developer.apple.com/library/ios/#documentation/Carbon/Reference/…Swift, code way: (funciona também com o swift 2.0)
Adicione as fontes necessárias ao seu projeto (assim como adicionar imagens, basta arrastar para o Xcode), verifique se elas estão direcionadas ao seu projeto.
Adicione este método e carregue fontes personalizadas (recomendado em
appDelegate didFinishLaunchingWithOptions
)Use exemplo:
Use a fonte:
fonte
Você pode adicionar os arquivos "FONT" necessários na pasta de recursos. Em seguida, vá para o
Info.plist
arquivo Projeto e use a CHAVE "Fontes fornecidas pelo aplicativo" e o valor como "NOME DA FONTE".Então você pode chamar o método
[UIFont fontwithName:@"FONT NAME" size:12];
fonte
Eu fiz todo o possível, mas as novas fontes não aparecem, então encontrei a solução:
Quando você arrasta os arquivos fot (otf ou ttf), NÃO marque a caixa de seleção em "Adicionar aos destinos".
Depois de fazer isso, sua fonte aparecerá e tudo funcionará bem.
fonte
Embora algumas das respostas acima estejam corretas, escrevi um tutorial visual detalhado para pessoas que ainda têm problemas com fontes.
As soluções acima que lhe dizem para adicionar a fonte ao plist e usar
são os corretos. Por favor, use agora qualquer outra maneira hackeada. Se você ainda estiver com problemas para encontrar nomes de fontes e adicioná-los, aqui está o tutorial -
Usando fontes personalizadas no aplicativo ios
fonte
sim, você pode usar fonte personalizada em seu aplicativo
passo a passo a seguir:
Adicione seus arquivos de fonte personalizados ao seu projeto em arquivos de suporte
Adicione uma chave ao seu arquivo Info.plist chamado UIAppFonts.
Faça desta chave uma matriz
Para cada fonte que você possui, digite o nome completo do seu arquivo de fonte (incluindo a extensão) como itens na matriz UIAppFonts
Salve Info.plist Agora, no seu aplicativo, você pode simplesmente chamar [UIFont fontWithName: @ "your Custom Font Name" tamanho: 20] para obter a fonte personalizada para usar com seus UILabels depois de aplicá-la, se você não obtiver a fonte correta, clique duas vezes na fonte personalizada e veja com atenção o nome da fonte do lado superior chegando e copie esta fonte, cole aqui [UIFont fontWithName: @ "aqui após o nome da fonte personalizada" tamanho: 20]
espero que você obtenha a resposta correta
fonte
sim, você pode usar fonte personalizada em seu aplicativo
passo a passo a seguir:
Info.plist
arquivo chamada UIAppFonts.Info.plist
agora em seu aplicativo, você pode simplesmente ligar[UIFont fontWithName:@"your Custom font Name" size:20]
para obter a fonte personalizada para usar com o seuUILabels
depois de aplicar isso, se você não estiver obtendo a fonte correta, clique duas vezes na fonte personalizada e veja cuidadosamente o nome da fonte do lado superior chegando e copie esta fonte e cole-a, cole,
[UIFont fontWithName:@" here past your Custom font Name" size:20]
espero que você obtenha a resposta corretafonte