Eu tenho um UIButton
que usa uma fonte personalizada, que é definida quando minha visualização é carregada:
- (void)viewDidLoad
{
[super viewDidLoad];
self.searchButton.titleLabel.font = [UIFont fontWithName: @"FONTNAME" size: 15.0 ];
}
O problema que tenho é que a fonte parece flutuar acima da linha central. Se eu comentar esta linha, a fonte padrão aparecerá bem centralizada verticalmente. Mas mudar para a fonte personalizada quebra o alinhamento vertical.
Estou tendo o mesmo problema em uma célula de tabela com uma fonte personalizada também.
Preciso informar à visualização em algum lugar que a fonte personalizada não é tão alta quanto as outras fontes?
EDIT: Acabei de perceber que a fonte que estou usando é uma fonte TrueType do Windows. Posso usá-lo bem no TextEdit no Mac, apenas um problema com o alinhamento do meu aplicativo
Respostas:
Um problema semelhante foi discutido em Fonte instalada personalizada não exibida corretamente no UILabel . Não houve solução dada.
Aqui está a solução que funcionou para minha fonte personalizada que tinha o mesmo problema em UILabel, UIButton e outros. O problema com a fonte acabou sendo o fato de que sua propriedade ascender era muito pequena em comparação com o valor das fontes do sistema. Ascender é um espaço em branco vertical acima dos caracteres da fonte. Para corrigir sua fonte, você terá que baixar os utilitários de linha de comando do Apple Font Tool Suite . Em seguida, pegue sua fonte e faça o seguinte:
Isso vai criar
Bold.hhea.xml
. Abra-o com um editor de texto e aumente o valor doascender
atributo. Você terá que experimentar um pouco para descobrir o valor exato que funciona melhor para você. No meu caso, mudei de 750 para 1200. Em seguida, execute o utilitário novamente com a seguinte linha de comando para mesclar suas alterações de volta no arquivo ttf:Em seguida, basta usar a fonte ttf resultante em seu aplicativo.
OS X El Capitan
O Apple Font Tool Suite Installer não funciona mais no OSX El Capitan por causa do SIP porque ele tenta instalar os arquivos binários em um diretório protegido. Você tem que extrair manualmente
ftxdumperfuser
. Primeiro copie o pacote do dmg para um diretório local, depois descompacte oOS X Font Tools.pkg
comAgora navegue para a pasta
fontTools.pkg
comExtraia carga útil com
Agora o
ftxdumperfuser
binário está em sua pasta atual. Você pode movê-lo para/usr/local/bin/
para que possa usá-lo em todas as pastas dentro do aplicativo de terminal com o seguinte.fonte
Resolvi o problema ajustando a inserção do conteúdo principal (não o título!).
Por exemplo: button.contentEdgeInsets = UIEdgeInsetsMake (10.0, 0.0, 0.0, 0.0);
Boa sorte!
fonte
Não tenho certeza se isso vai ajudar, pois pode depender da sua fonte, mas pode ser que sua linha de base esteja desalinhada.
fonte
Acho que essa é a melhor resposta. sem brincar com ascender, numberOfHMetrics etc ... apenas importar-exportar pelo aplicativo Glyphs e Job done. Graças a esta resposta: https://stackoverflow.com/a/16798036/1207684
fonte
Você pode tentar isso no Interface Builder. Aqui está um resumo de como fazer isso -
Como você pode ver, tentar fazer isso no IB tem seus próprios benefícios.
fonte
Atrasado para a festa, mas como esse problema me atingiu pela enésima vez, pensei em postar a solução mais simples que encontrei: usando Python FontTools .
Instale o Python 3 se não estiver disponível em seu sistema.
Instale FontTools
pip3 install fonttools
FontTools inclui uma ferramenta TTX que permite a conversão de e para XML.
Converta sua fonte para .ttx na mesma pasta
ttx myFontFile.otf
Faça as edições necessárias em .ttx e exclua o arquivo .otf, pois ele será substituído na próxima etapa.
Converta o arquivo de volta para .otf
ttx myFontFile.ttx
Motivação: A solução de kolyuchi está incompleta e, mesmo com esse fluxo de instalação estendido , a execução
ftxdumperfuser
resultou em um erro no 10.15.2 Catalina.fonte