QRawFont Class
QRawFont クラスは、フォントの単一の物理インスタンスへのアクセスを提供します。詳細...
| ヘッダー: | #include <QRawFont> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
- 継承されたメンバーを含む、すべてのメンバーの一覧
- QRawFontは「暗黙的に共有されるクラス」の一部です。
パブリック型
| enum | AntialiasingType { PixelAntialiasing, SubPixelAntialiasing } |
| enum | LayoutFlag { SeparateAdvances, KernedAdvances, UseDesignMetrics } |
| flags | LayoutFlags |
パブリック関数
| QRawFont() | |
| QRawFont(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference = QFont::PreferDefaultHinting) | |
| QRawFont(const QString &fileName, qreal pixelSize, QFont::HintingPreference hintingPreference = QFont::PreferDefaultHinting) | |
| QRawFont(const QRawFont &other) | |
| ~QRawFont() | |
| QList<QPointF> | advancesForGlyphIndexes(const QList<quint32> &glyphIndexes, QRawFont::LayoutFlags layoutFlags) const |
| bool | advancesForGlyphIndexes(const quint32 *glyphIndexes, QPointF *advances, int numGlyphs, QRawFont::LayoutFlags layoutFlags) const |
| QList<QPointF> | advancesForGlyphIndexes(const QList<quint32> &glyphIndexes) const |
| bool | advancesForGlyphIndexes(const quint32 *glyphIndexes, QPointF *advances, int numGlyphs) const |
| QImage | alphaMapForGlyph(quint32 glyphIndex, QRawFont::AntialiasingType antialiasingType = SubPixelAntialiasing, const QTransform &transform = QTransform()) const |
| qreal | ascent() const |
| qreal | averageCharWidth() const |
| QRectF | boundingRect(quint32 glyphIndex) const |
| qreal | capHeight() const |
| qreal | descent() const |
| QString | familyName() const |
(since 6.7) QByteArray | fontTable(QFont::Tag tag) const |
| QByteArray | fontTable(const char *tag) const |
(since 6.11) quint32 | glyphCount() const |
| bool | glyphIndexesForChars(const QChar *chars, int numChars, quint32 *glyphIndexes, int *numGlyphs) const |
| QList<quint32> | glyphIndexesForString(const QString &text) const |
(since 6.11) QString | glyphName(quint32 glyphIndex) const |
| QFont::HintingPreference | hintingPreference() const |
| bool | isValid() const |
| qreal | leading() const |
| qreal | lineThickness() const |
| void | loadFromData(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference) |
| void | loadFromFile(const QString &fileName, qreal pixelSize, QFont::HintingPreference hintingPreference) |
| qreal | maxCharWidth() const |
| QPainterPath | pathForGlyph(quint32 glyphIndex) const |
| qreal | pixelSize() const |
| void | setPixelSize(qreal pixelSize) |
| QFont::Style | style() const |
| QString | styleName() const |
| QList<QFontDatabase::WritingSystem> | supportedWritingSystems() const |
| bool | supportsCharacter(QChar character) const |
| bool | supportsCharacter(uint ucs4) const |
| void | swap(QRawFont &other) |
| qreal | underlinePosition() const |
| qreal | unitsPerEm() const |
| int | weight() const |
| qreal | xHeight() const |
| bool | operator!=(const QRawFont &other) const |
| QRawFont & | operator=(const QRawFont &other) |
| bool | operator==(const QRawFont &other) const |
静的パブリックメンバー
| QRawFont | fromFont(const QFont &font, QFontDatabase::WritingSystem writingSystem = QFontDatabase::Any) |
関連する非メンバー
| size_t | qHash(const QRawFont &key, size_t seed = 0) |
詳細な説明
注:QRawFont は 低レベルのクラスです。ほとんどの場合、QFont の方がより適切なクラスです。
通常、ユーザーインターフェースでテキストを表示する場合、文字のレンダリングに使用される正確なフォントは、ある程度不明です。 これにはいくつかの理由があります。たとえば、ターゲットシステムに実際に存在するフォントが開発者の予想外のものだったり、テキストにユーザーが選択したスタイル、サイズ、あるいはコードで選択されたフォントがサポートしていない文字体系が含まれていたりする場合などです。
したがって、Qt XML の `QFont ` クラスは、実際にはフォントに対するクエリを表しています。テキストが解釈される際、Qt はそのテキストをクエリにできるだけ一致させるよう努めますが、サポート状況によっては、裏側で異なるフォントが使用される場合があります。
ほとんどのユースケースにおいて、これは予想されるものであり、また必要なことでもあります。これにより、ユーザーインターフェース上のテキストが表示不能になる可能性を最小限に抑えることができるからです。しかし、場合によっては、このプロセスをより直接的に制御することが有用なこともあります。QRawFontクラスは、まさにこうしたユースケースのために存在します。
QRawFont オブジェクトは、指定されたピクセルサイズにおける、特定のフォントの単一の物理的なインスタンスを表します。 つまり、一般的なケースでは、TrueType または OpenType フォントテーブルのセットを表し、ユーザーが指定したピクセルサイズを使用して、メトリックを論理ピクセル単位に変換します。このクラスは、QGlyphRun クラスと組み合わせて、特定の位置に特定のグリフインデックスを描画するために使用でき、また、物理的なフォント内の関連データにアクセスするためのアクセサも備えています。
QRawFont は、主要なフォント技術(Windows プラットフォーム上の GDI および DirectWrite、Linux プラットフォーム上の FreeType、macOS 上の CoreText)のみをサポートしています。その他のフォントバックエンドについては、API が無効化されます。
QRawFontは、いくつかの方法で生成できます:
- QTextLayout::glyphs() または QTextFragment::glyphs() を呼び出すことでインスタンス化できます。返される QGlyphs オブジェクトには、テキストの各部分をレンダリングするために実際に使用されるフォントを表す QRawFont オブジェクトが含まれます。
- QFont オブジェクトをQRawFont::fromFont()に渡すことで生成できます。この関数は、QFont クエリおよび選択された記述体系に応じて選択されるフォントを表すQRawFontオブジェクトを返します。
- これは、ファイル名またはQByteArray をQRawFontコンストラクタに直接渡すか、loadFromFile()またはloadFromData()を呼び出すことで構築できます。この場合、フォントはQFontDatabase に登録されず、通常のフォント選択の一部として利用することはできません。
QRawFontは、それが生成されたスレッド(コンストラクタの使用、またはloadFromData()やloadFromFile()の呼び出しによる)に局所的なものとみなされます。QRawFontを別のスレッドに移動することはできず、当該スレッド内で再作成する必要があります。
注: アプリケーションの内部ループ内での再描画や再レイアウトを回避するために、静的テキストのグリフインデックスやフォント選択をキャッシュする必要がある場合は、 QStaticText クラスを使用することをお勧めします。このクラスはキャッシュのメモリ消費を最適化するだけでなく、ペイントエンジン固有のキャッシュ機能を提供することで、さらなる高速化が可能になります。
メンバ型のドキュメント
enum QRawFont::AntialiasingType
この列挙型は、関数 `alphaMapForGlyph()` において、グリフがラスタライズされるさまざまな方法を表しています。
| 定数 | 値 | 定数説明 |
|---|---|---|
QRawFont::PixelAntialiasing | 0 | ピクセル全体に対する形状の被覆率を測定してラスタライズします。返される画像には、グリフ形状の被覆率に基づいた各ピクセルのアルファ値が含まれます。 |
QRawFont::SubPixelAntialiasing | 1 | 各サブピクセルの被覆率を測定してラスタライズし、各ピクセルの赤、緑、青の各成分について個別のアルファ値を返します。 |
enum QRawFont::LayoutFlag
flags QRawFont::LayoutFlags
この列挙型は、関数 `advancesForGlyphIndexes()` に対して、進みの計算方法を指定します。
| 定数 | 値 | 説明 |
|---|---|---|
QRawFont::SeparateAdvances | 0 | 各グリフのアドバンスを個別に計算します。 |
QRawFont::KernedAdvances | 1 | 隣接するグリフ間にカーニングを適用します。なお、OpenType GPOS ベースのカーニングは現在サポートされていません。 |
QRawFont::UseDesignMetrics | 2 | ペイントデバイスの解像度に合わせて調整されたヒント付きメトリックではなく、デザインメトリックを使用します。上記のオプションのいずれかと OR 演算で組み合わせることができます。 |
LayoutFlags 型は、QFlags<LayoutFlag> の typedef です。LayoutFlag 値の OR 組み合わせを格納します。
メンバ関数のドキュメント
QRawFont::QRawFont()
無効な QRawFont を生成します。
QRawFont::QRawFont(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference = QFont::PreferDefaultHinting)
指定されたfontData に含まれるフォントを、pixelSize で指定されたサイズ(ピクセル単位)で、hintingPreference で指定されたヒンティング設定を使用して、QRawFontとして生成します。
注:データには 、TrueType または OpenType フォントが含まれている必要があります。
QRawFont::QRawFont(const QString &fileName, qreal pixelSize, QFont::HintingPreference hintingPreference = QFont::PreferDefaultHinting)
fileName で参照されるファイルに含まれるフォントを、pixelSize で指定されたサイズ(ピクセル単位)で、hintingPreference で指定されたヒンティング設定を使用して、QRawFont オブジェクトとして生成します。
注: 参照されるファイルには 、TrueType または OpenType フォントが含まれている必要があります。
QRawFont::QRawFont(const QRawFont &other)
other のコピーであるQRawFontを作成します。
[noexcept] QRawFont::~QRawFont()
を破壊するQRawFont
QList<QPointF> QRawFont::advancesForGlyphIndexes(const QList<quint32> &glyphIndexes, QRawFont::LayoutFlags layoutFlags) const
各glyphIndexes に対するQRawFont のアドバンスをピクセル単位で返します。アドバンスとは、2つのグリフにスペースがないかのように見せるために、指定されたグリフの位置から次のグリフが描画されるべき位置までの距離を指します。アドバンスの計算方法は、layoutFlags によって制御されます。
注: KernedAdvances が要求された場合 、この関数は、フォントにKERN テーブルが存在すれば、そこからカーニングルールを適用します。多くの現代のフォントでは、カーニングはOpenTypeルールまたはAATルールを通じて処理されており、これには完全なシェーピング処理の適用が必要です。テキストを完全にシェーピングした結果を得るには、QTextLayout を使用してください。
QTextLine::horizontalAdvance()、QFontMetricsF::horizontalAdvance()、およびQTextLayout::glyphRuns()も参照してください 。
bool QRawFont::advancesForGlyphIndexes(const quint32 *glyphIndexes, QPointF *advances, int numGlyphs, QRawFont::LayoutFlags layoutFlags) const
各glyphIndexes に対するQRawFont のアドバンスをピクセル単位で返します。このアドバンスは、指定されたグリフの位置から、2つのグリフの間にスペースがないように見えるように次のグリフを描画すべき位置までの距離を表します。 グリフインデックスは配列 `glyphIndexes ` で指定され、結果は `advances` を通じて返されます。これらはいずれもnumGlyphs 個の要素を持つ必要があります。アドバンスの計算方法は、layoutFlags によって制御されます。
注: KernedAdvances が要求された場合 、この関数は、フォントにKERN テーブルが存在する場合、そのカーニング規則を適用します。多くの現代のフォントでは、カーニングはOpenType規則またはAAT規則によって処理されており、これには完全なシェイピング処理の適用が必要です。テキストを完全にシェイピングした結果を得るには、QTextLayout を使用してください。
QTextLine::horizontalAdvance()、QFontMetricsF::horizontalAdvance()、およびQTextLayout::glyphRuns()も参照してください 。
QList<QPointF> QRawFont::advancesForGlyphIndexes(const QList<quint32> &glyphIndexes) const
各glyphIndexes に対するQRawFont のアドバンスをピクセル単位で返します。アドバンスとは、2つのグリフの間にスペースがないかのように見せるために、指定されたグリフの位置から次のグリフを描画すべき位置までの距離を指します。各グリフのアドバンスは個別に計算されます。
これはオーバーロードされた関数です。
QTextLine::horizontalAdvance() およびQFontMetricsF::horizontalAdvance()も参照してください 。
bool QRawFont::advancesForGlyphIndexes(const quint32 *glyphIndexes, QPointF *advances, int numGlyphs) const
各glyphIndexes に対するQRawFont のアドバンスをピクセル単位で返します。このアドバンスは、2つのグリフの間にスペースがないように見せるために、指定されたグリフの位置から次のグリフが描画されるべき位置までの距離を表します。 グリフのインデックスは配列 `glyphIndexes ` で指定され、結果は `advances` を通じて返されます。両者ともnumGlyphs 個の要素を持つ必要があります。各グリフのアドバンスは個別に計算されます。
これはオーバーロードされた関数です。
QTextLine::horizontalAdvance() およびQFontMetricsF::horizontalAdvance()も参照してください 。
QImage QRawFont::alphaMapForGlyph(quint32 glyphIndex, QRawFont::AntialiasingType antialiasingType = SubPixelAntialiasing, const QTransform &transform = QTransform()) const
この関数は、指定されたglyphIndex に対応する、基となるフォント内のグリフのラスタライズ済み画像を、指定されたtransform を使用して返します。QRawFont が無効な場合、この関数は無効なQImage を返します。
フォントがカラーフォントの場合、結果の画像には現在のピクセルサイズでレンダリングされたグリフが含まれます。この場合、antialiasingType は無視されます。
それ以外の場合、antialiasingType がQRawFont::SubPixelAntialiasing に設定されていると、結果の画像はQImage::Format_RGB32 形式となり、各ピクセルのRGB値は、グリフのラスタライズにおけるそのピクセルのサブピクセル不透明度を表します。それ以外の場合、画像はQImage::Format_Indexed8 形式となり、各ピクセルにはラスタライズにおけるそのピクセルの不透明度が含まれます。
pathForGlyph() およびQPainter::drawGlyphRun()も参照してください 。
qreal QRawFont::ascent() const
このQRawFont のアセントをピクセル単位で返します。
フォントのアセントとは、ベースラインから文字が伸びる最高位置までの距離のことです。実際には、フォントデザイナーによっては、例えば文字の上に複数のアクセントを配置する場合や、珍しい言語の特殊な文字に対応する場合など、このルールに例外を設けることがあります。そのため、この値が小さすぎる場合もあり得ます(ただし、まれです)。
QFontMetricsF::ascent()も参照してください 。
qreal QRawFont::averageCharWidth() const
このQRawFont の文字の平均幅をピクセル単位で返します。
QFontMetricsF::averageCharWidth()も参照してください 。
QRectF QRawFont::boundingRect(quint32 glyphIndex) const
指定されたglyphIndex を持つグリフを含む、最小の矩形を返します。
qreal QRawFont::capHeight() const
このQRawFont のキャップハイトをピクセル単位で返します。
フォントのキャップハイトとは、大文字がベースラインから上方に伸びる高さのことです。具体的には、H や I のような平らな大文字の高さを指し、O のような丸みを帯びた文字や A のような先端が尖った文字とは対照的です。後者の2種類は、オーバーシュートが発生する可能性があります。
QFontMetricsF::capHeight()も参照してください 。
qreal QRawFont::descent() const
このQRawFont のディセントをピクセル単位で返します。
ディセントとは、ベースラインから文字が伸びる最も低い点までの距離のことです。実際には、一部のフォントデザイナーがこのルールを破る場合があります(例えば、珍しい言語の特殊な文字に対応するためなど)。そのため、この値が小さすぎる可能性もあります(ただし、稀です)。
QFontMetricsF::descent()も参照してください 。
QString QRawFont::familyName() const
このQRawFont のファミリー名を返します。
[since 6.7] QByteArray QRawFont::fontTable(QFont::Tag tag) const
tag で指定された sfnt テーブルを、基盤となる物理フォントから取得します。該当するテーブルが見つからない場合は、空のバイト配列を返します。返されるフォントテーブルのバイト順は、sfnt 形式で規定されている通り、ビッグエンディアンです。
この関数は Qt 6.7 で導入されました。
QByteArray QRawFont::fontTable(const char *tag) const
名前は4文字の文字列でなければなりません。
この関数は、fontTable (QFont::Tag)をオーバーロードしています。
[static] QRawFont QRawFont::fromFont(const QFont &font, QFontDatabase::WritingSystem writingSystem = QFontDatabase::Any)
font クエリに基づいて、物理的な表現を取得します。返される物理フォントは、選択されたwritingSystem でテキストを表示する際に、Qtが優先して使用するフォントです。
警告: この関数は 処理負荷が高くなる可能性があるため、パフォーマンスが重要なコード内では呼び出さないでください。
[since 6.11] quint32 QRawFont::glyphCount() const
このQRawFont に含まれるグリフの数を返します。
この関数は Qt 6.11 で導入されました。
bool QRawFont::glyphIndexesForChars(const QChar *chars, int numChars, quint32 *glyphIndexes, int *numGlyphs) const
Unicodeポイントの文字列を、基となるフォントのCMAPテーブルを使用してグリフインデックスに変換します。 この関数は、glyphIndexesForString()と同様に動作しますが、引数として配列(chars )を受け取る点が異なります。結果はglyphIndexes 配列を通じて返され、グリフの数はnumGlyphs に設定されます。glyphIndexes 配列のサイズは、少なくともnumChars でなければなりません。それでも容量が不足している場合、この関数はfalseを返します。その場合は、numGlyphs で返されたサイズに基づいてglyphIndexes のサイズを変更してください。
関連項目: glyphIndexesForString()、advancesForGlyphIndexes()、QGlyphRun 、QTextLayout::glyphRuns()、およびQTextFragment::glyphRuns()。
QList<quint32> QRawFont::glyphIndexesForString(const QString &text) const
text で指定された Unicode ポイントの文字列を、基となるフォントの CMAP テーブルを使用してグリフインデックスに変換し、その結果を含むリストを返します。
なお、フォント内にテキストのシェーピングに影響を与える他のテーブルが存在する場合、返されるグリフインデックスはテキストのレンダリングを正しく表さないことに注意してください。 正しく整形されたテキストを取得するには、QTextLayout を使用してテキストのレイアウトと整形を行い、その後 QTextLayout::glyphs() を呼び出して、グリフインデックスリストとQRawFont のペアのセットを取得します。
advancesForGlyphIndexes()、glyphIndexesForChars()、QGlyphRun 、QTextLayout::glyphRuns()、およびQTextFragment::glyphRuns()も参照してください 。
[since 6.11] QString QRawFont::glyphName(quint32 glyphIndex) const
指定されたglyphIndex の名前を返します。
そのグリフがフォント内で明示的な名前を持っていない場合、グリフインデックスに基づいて名前が生成されます。
この関数は Qt 6.11 で導入されました。
QFont::HintingPreference QRawFont::hintingPreference() const
このQRawFont の生成に使用されたヒント設定を返します。
QFont::hintingPreference()も参照してください 。
bool QRawFont::isValid() const
QRawFont が有効な場合は `true ` を返し、そうでない場合は `false` を返します。
qreal QRawFont::leading() const
このQRawFont の先頭余白をピクセル単位で返します。
これは自然な行間です。
QFontMetricsF::leading()も参照してください 。
qreal QRawFont::lineThickness() const
このフォントで描画されたテキストに沿って、線(下線、上線など)を描画するための線幅を返します。
void QRawFont::loadFromData(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference)
現在のQRawFont を、pixelSize で指定されたサイズ(ピクセル単位)で、fontData に含まれるフォントに置き換え、hintingPreference で指定されたヒンティング設定を適用します。
fontData には、TrueType または OpenType フォントが含まれている必要があります。
loadFromFile()も参照してください 。
void QRawFont::loadFromFile(const QString &fileName, qreal pixelSize, QFont::HintingPreference hintingPreference)
現在のQRawFont を、fileName で指定されたファイルの内容に置き換えます。この際、pixelSize で指定されたサイズ(ピクセル単位)で、hintingPreference で指定されたヒンティング設定が適用されます。
ファイルは、TrueType または OpenType フォントを参照している必要があります。
loadFromData()も参照してください 。
qreal QRawFont::maxCharWidth() const
そのフォントの中で最も幅の広い文字の幅を返します。
QFontMetricsF::maxWidth()も参照してください 。
QPainterPath QRawFont::pathForGlyph(quint32 glyphIndex) const
この関数は、QRawFont が有効である場合、基になるフォント内の指定されたglyphIndex におけるグリフの形状を返します。そうでない場合は、空のQPainterPath を返します。
返されるグリフは、常にヒント処理が適用されていない状態となります。
alphaMapForGlyph() およびQPainterPath::addText()も参照してください 。
qreal QRawFont::pixelSize() const
このQRawFont に設定されたピクセルサイズを返します。ピクセルサイズは、グリフのラスタライズ方法や、pathForGlyph()によって返されるグリフのサイズに影響を与え、内部メトリックをデザイン単位から論理ピクセル単位に変換するために使用されます。
setPixelSize()も参照してください 。
void QRawFont::setPixelSize(qreal pixelSize)
このフォントのレンダリングに使用するピクセルサイズをpixelSize に設定します。
pixelSize()も参照してください 。
QFont::Style QRawFont::style() const
このQRawFont のスタイルを返します。
QFont::style()も参照してください 。
QString QRawFont::styleName() const
このQRawFont のスタイル名を返します。
QFont::styleName()も参照してください 。
QList<QFontDatabase::WritingSystem> QRawFont::supportedWritingSystems() const
フォントファイル内のデザイナーが提供した情報に基づき、そのフォントがサポートする文字体系のリストを返します。ただし、これはフォントが特定のユニコードポイントをサポートしていることを保証するものではない点にご注意ください。個々の特定の文字のサポート状況を確認するには、supportsCharacter() を使用してください。
注:このリストは 、フォントの OS/2 テーブルに設定された Unicode 範囲およびコードページ範囲に基づいて決定されるため、基となるフォントファイルに当該テーブルが存在する必要があります。
supportsCharacter()も参照してください 。
bool QRawFont::supportsCharacter(QChar character) const
フォントに、指定されたcharacter に対応するグリフが含まれている場合、true を返します。
supportedWritingSystems()も参照してください 。
bool QRawFont::supportsCharacter(uint ucs4) const
フォントに、UCS-4 エンコードされた文字ucs4 に対応するグリフが含まれている場合、true を返します。
これはオーバーロードされた関数です。
supportedWritingSystems()も参照してください 。
[noexcept] void QRawFont::swap(QRawFont &other)
この生のフォントをother に置き換えます。この操作は非常に高速で、失敗することはありません。
qreal QRawFont::underlinePosition() const
このフォントでレンダリングされたテキストの下に下線を引く際の、ベースラインからの位置を返します。
qreal QRawFont::unitsPerEm() const
このQRawFont における em 単位の正方形の幅と高さを定義するデザイン単位の数を返します。内部のメトリックはデザイン単位で指定されており、ピクセルサイズは 1 em のピクセル単位でのサイズを示すため、デザインメトリックをピクセル単位に変換する際には、この値がピクセルサイズと組み合わせて使用されます。
pixelSize() およびsetPixelSize()も参照してください 。
int QRawFont::weight() const
このQRawFont の重みを返します。
QFont::weight()も参照してください 。
qreal QRawFont::xHeight() const
このQRawFont のxHeightをピクセル単位で返します。
これは、多くの場合、文字「x」の高さと同じですが、必ずしもそうとは限りません。
QFontMetricsF::xHeight()も参照してください 。
bool QRawFont::operator!=(const QRawFont &other) const
この `QRawFont ` が `other` と等しくない場合、true を返します。それ以外の場合は、false を返します。
QRawFont &QRawFont::operator=(const QRawFont &other)
other をこのQRawFont に割り当てます。
bool QRawFont::operator==(const QRawFont &other) const
この `QRawFont ` が `other` と等しい場合、`true ` を返します。それ以外の場合は、`false` を返します。
関連する非メンバー関数
[noexcept] size_t qHash(const QRawFont &key, size_t seed = 0)
`key` のハッシュ値を、計算のシードとして `seed ` を使用して返します。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.