2018年4月10日

font

クラス継承

QFont

プロパティー

font.bold: bool = false final
font.capitalization: Capitalization =  Font.MixedCase final
font.family: QString = プラットフォームデフォルト final
font.hintingPreference: HintingPreference = Font.PreferDefaultHinting) final
font.italic: bool = false final
font.kerning: bool = true final
font.letterSpacing: real = 0 final
font.overline: bool = false final
font.pixelSize: int = プラットフォームデフォルト final
font.pointSize: real = プラットフォームデフォルト final
font.preferShaping: bool = true final
font.strikeout: bool = false final
font.styleName: QString = "" final
font.underline: bool = false final
font.weight: FontWeight = Font.Normal final
font.wordSpacing: real = 0 final

説明


フォント指定で使われるタイプ。指定したフォントから実際に使われるフォントが求められて使われる。QFont の機能を部分的に QML で利用していて、pointSize と pixelSize の扱いは QML 向けになっている。

プロパティーの説明

font.bold: bool

true ならば太文字。

font.capitalization: Capitalization

テキスト描画時に小文字を大文字にする方法。以下の方法が用意されている。
列挙値 説明
Font.MixedCase 0 そのままで何も変えない
Font.AllUppercase 1 小文字を大文字に変える
Font.AllLowercase 2 大文字を小文字に変える
Font.SmallCaps 3 小文字をサイズの小さい大文字に変える
Font.Capitalize 4 語の先頭文字を大文字にする。語の区切りはホワイトスペース

font.family: QString

ファミリー名。

font.hintingPreference: HintingPreference

font.italic: bool

true ならばイタリック体。

font.kerning: bool

true ならばカーニングを行う。

font.letterSpacing: qreal

文字間隔を指定値に変更する。正負値共に可能。QFont::setLetterSpacing(QFont::AbsoluteSpacing, 指定値) を呼び出して変更している。

font.overline: bool

true ならば上線を付ける。

font.pixelSize: int

ピクセルサイズ。pointSize を設定した場合に QFontInfo の pixelSize になる。

font.pointSize: qreal

ポイントサイズ。pixelSize を設定した場合に QFontInfo の pointSize になる。

font.preferShaping: bool

true ならば QFont::setStyleStrategy() を呼び出して QFont::PreferNoShaping ビットを落とす。false ならばビットを立てる。

Text タイプのリファレンスに false に設定すると大抵の場合に効率がよくなると書かれている。しかし、拗音や捨て仮名、全角ギリシア文字の小文字などの語幅が広がってしまうため使い道は限られる。

font.strikeout: bool

true ならば取り消し線を付ける。

font.styleName: QString

スタイル名。

font.underline: bool

true ならば下線を付ける。

font.weight: FontWeight

フォントウェイト。0 から 99 までの値で、以下の FontWeight 型の列挙値で設定する。
列挙値
Font.Thin0
Font.ExtraLight12
Font.Light25
Font.Normal50
Font.Medium57
Font.DemiBold63
Font.Bold75
Font.ExtraBold81
Font.Black87

font.wordSpacing: qreal

語間隔を指定値に変更する。正負値共に可能。語の区切りはホワイトスペース。

注意


指定した通りのフォントが使われるのではない。Text では実際に使われるフォントは fontInfo プロパティーでわかるようになっている。しかし、font プロパティーのあるタイプに fontInfo プロパティーがあるとは限らない。実際には Text と Text を継承した Label のみに fontInfo プロパティーがある。

family と styleName に存在しない名前を指定した場合にはデフォルト値が使われエラーにはならない。存在しない場合でも指定した名前が説明文字列に入る。

QFont ではポイントサイズとピクセルサイズを共に設定すると最後に設定したものが有効になり、もう一方は -1 になる。QML の font は QFont とは違って、QFontInfo で求めた値がもう一方の値になり、等式 pixelSize = Math.floor(pointSize * (dpi/72)) が成り立つ。font の説明文字列は QFont の説明文字列のため、どちらかを設定した場合に説明文字列中のもう一方は -1 になり、QML の font の pointSize と pixelSize 両方が説明文字列の値と一致することはない。

QML ではポイントサイズとピクセルサイズの両方を指定すると警告され、ピクセルサイズが優先して使われる。宣言的に値を設定した場合に構文的に優先順を明示する適切な方法がないためこのような制約がある。

toString() が返す説明文字列の情報がプロパティーと一致してはいない。pointSize に 12.5 を設定した場合に、説明文字列の内容は以下のようになる。styleName 設定の有無で 10 要素か 11 要素の違いがある。
QFont(.SF NS Text,12.5,-1,5,50,0,0,0,0,0)
QFont(Osaka,12.5,-1,5,50,0,0,0,0,0,Regular-Mono) (styleName に "Regular-Mono" を設定)
上記の説明文字列の各要素はこのようになる。
説明文字列要素 要素値 QFontInfo の値 QML fontInfo の値
family QString .SF NS Text/Osaka .SF NS Text/Osaka .SF NS Text/Osaka
pointSizeF qreal 12.5 13 13
pixelSize int -1 13 13
styleHint StyleHint 5 (QFont::AnyStyle) QFont::AnyStyle なし
weight int 50 50 50
style Style 0 (QFont::StyleNormal) QFont::StyleNormal なし
underline bool 0 (false) false なし
strikeout bool 0 (false) false なし
fixedPitch bool 0 (false) false なし
空き bool 常に 0 (false) なし なし
styleName QString なし/Regular-Mono Regular/Regular-Mono Regular/Regular-Mono

問題


font のリファレンスには styleName の記述が漏れている。QFont のリファレンスには記述されている。

参考情報

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。