2016-10-12 1 views
1

IOSアプリケーションでカスタムフォントを使用しているときにモノスペースに強制することができたと思いました。私は例を見つけ、コンパイルするコードを使用しましたが、数字の間隔はまだ比例しています。誰もがこの作業を持っていると私は間違って何をしている場合は?xamarin ios monospaced UIFontFeatureを使用している数字 - これがうまくいかない理由を知っている人はいますか?

UIFont bigNumberFont = UIFont.FromName("Dosis-Light", 60f); 

var originalDescriptor = bigNumberFont.FontDescriptor; 
var attributes = new UIFontAttributes(new UIFontFeature(CTFontFeatureNumberSpacing.Selector.MonospacedNumbers), 
      new UIFontFeature((CTFontFeatureCharacterAlternatives.Selector)0)); 

var newDesc = originalDescriptor.CreateWithAttributes(attributes); 

UIFont bigNumberMono = UIFont.FromDescriptor(newDesc, 60f); 

lbCurrentPaceMinute.Font = bigNumberMono; 

マイカスタムフォントがうまくレンダリングが、私はまだのように多数の間隔を超える任意のコントロールを得るカント:

は、ここに私のコードです。任意の提案を大いに感謝!

答えて

1

まず、フォントがモノスペースではありません。

固定幅フォントモードで数字を表示するには、フォントを調整する必要があります。したがって、あなたの数字はすべて同じ幅になります。以下は

4つのラベル、1例であるDocisライト、第二は、あなたの微調整とDocisライトです、第三は、同じサイズのシステムフォントで、第4回は、あなたの微調整とシステムフォントです:

monospaced digits font tweak in ios

ご覧のように、Docis Lightはすでにモノスペースの数字をサポートしています。

あなたは等幅フォントを使用する必要がある場合、あなたは(モノスペースされるように設計された)カスタム等幅フォントを使用するために持っているか、あなたは、このような宅配便やスタンフォードなどの組み込みのiOSの等幅フォントを使用することができます(http://iosfonts.com/で利用可能なすべてのiOSのフォントを参照してください)

これは、彼らが同じシナリオでどのように見えるかです:

courier and menlo monospaced iOS fonts

または微調整なしで、彼らはすでにモノスペースであり、それらの数字も同様にモノスペースされています。

最後に、モノスペースの数字のフォント(コードの機能)が必要な場合は、文字の代替方法を調整する必要はありません。コードは

public static class UIFontExtensions 
{ 
    public static UIFont MonospacedDigitFont(this UIFont font) 
    { 
     var originalDescriptor = font.FontDescriptor; 
     var monospacedNumbersFeature = new UIFontFeature(CTFontFeatureNumberSpacing.Selector.MonospacedNumbers); 
     var attributes = new UIFontAttributes(monospacedNumbersFeature); 
     var newDescriptor = originalDescriptor.CreateWithAttributes(attributes); 
     return UIFont.FromDescriptor(newDescriptor, font.PointSize); 
    } 
} 

となります。私はあなたがiOSでフォントを微調整する方法と細かい方法を詳しく知ることが面白いと感じました。

+0

こんにちはALex、お返事ありがとうございます。私はあなたの答えにセクションで回答します。 –

+0

"まず、フォントはモノスペースではありません。モノスペースモードで数字をレンダリングするためにフォントを調整していますので、数字はすべて同じ幅になります。 –

+0

私はこれを理解しています。それが、数字を固定幅にすることを明示した理由です。しかし、とにかく明確化のおかげで。また、Dosis Lightフォントはモノスペースの数字を表示していますが、提供した画像は2つのモノスペースライトの例が同じであることを示しています。 –

関連する問題