QRawFont Class

QRawFont クラスはフォントの物理的なインスタンスへのアクセスを提供します。詳細...

Header: #include <QRawFont>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui

パブリックタイプ

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
bool glyphIndexesForChars(const QChar *chars, int numChars, quint32 *glyphIndexes, int *numGlyphs) const
QList<quint32> glyphIndexesForString(const QString &text) 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 &font, size_t seed = 0)

詳細説明

注意: QRawFontは低レベルのクラスです。ほとんどの目的には、QFont がより適切なクラスです。

ほとんどの場合、ユーザーインターフェイスでテキストを表示する場合、文字のレンダリングに使用される正確なフォントはある程度不明です。これにはいくつかの理由があります:例えば、ターゲットシステム上に存在する実際の物理的なフォントが開発者にとって予想外のものであったり、コードで選択されたフォントではサポートされていない、ユーザーが選択したスタイルやサイズ、文字体系がテキストに含まれていたりします。

そのため、QtのQFont クラスは、フォントのクエリを表しています。テキストが解釈されるとき、Qt はテキストをクエリに一致させるために最善を尽くしますが、サポートによっては、裏で異なるフォントが使用されることもあります。

ほとんどのユースケースでは、ユーザーインターフェイスのテキストが表示されない可能性を最小限に抑えることができるため、これは予想されたことであり、必要なことでもあります。しかし、場合によっては、プロセスをより直接的に制御することが有用なこともある。このようなユースケースのためにQRawFontクラスが存在します。

QRawFontオブジェクトは、指定されたフォントの、指定されたピクセルサイズの、単一の物理的なインスタンスを表します。つまり、典型的なケースでは、TrueTypeまたはOpenTypeフォント・テーブルのセットを表し、ユーザーが指定したピクセル・サイズを使用して、メトリクスを論理的なピクセル単位に変換します。これはQGlyphRun クラスと組み合わせて使用することで、特定のグリフインデックスを特定の位置に描画したり、物理フォント内のいくつかの関連データへのアクセッサを持ったりすることができます。

QRawFont は主要なフォント技術にのみ対応しています:WindowsプラットフォームではGDIとDirectWrite、LinuxプラットフォームではFreeType、macOSではCoreTextです。その他のフォントのバックエンドについては、APIは無効になります。

QRawFontは様々な方法で構築することができます:

  • QTextLayout::glyphs() または QTextFragment::glyphs() を呼び出すことで構築できます。返される QGlyphs オブジェクトは QRawFont オブジェクトを含み、これはテキストの各部分のレンダリングに使われる実際のフォントを表します。
  • これはQRawFont::fromFont() にQFont オブジェクトを渡すことで構築できます。この関数は、QFont のクエリに対する応答として選択されるフォントと、選択された書記体系を表す QRawFont オブジェクトを返します。
  • QRawFont オブジェクトは、ファイル名やQByteArray を QRawFont コンストラクタに直接渡したり、loadFromFile() やloadFromData() を呼び出すことで構築することができます。こ の場合、 フ ォ ン ト はQFontDatabase には登録 さ れず、 通常の フ ォ ン ト 選択の一部 と し ては利用で き ません。

QRawFont は、それが構築されたスレッド(コンストラクタを使用するか、loadFromData ()またはloadFromFile ()を呼び出す)に対してローカルであるとみなされます。QRawFontを別のスレッドに移動することはできませんが、問題のスレッドで再作成する必要があります。

注: 静的テキストのグリフインデックスとフォント選択をキャッシュして、アプリケーションの内部ループでのリシェイプとリレイアウトを回避するという要件に対しては、QStaticText クラスを選択するのがよいでしょう。これはキャッシュのメモリコストを最適化し、さらに高速化のためにペイントエンジン固有のキャッシュの可能性も提供するからです。

メンバ型ドキュメント

enum QRawFont::AntialiasingType

この列挙型は、関数alphaMapForGlyph() でグリフをラスタライズするさまざまな方法を表します。

定数説明
QRawFont::PixelAntialiasing0全ピクセルの形状のカバー率を測定することによってラスタライズする。返される画像は、グリフ形状のカバー率に基づく各ピクセルのアルファ値を含みます。
QRawFont::SubPixelAntialiasing1各サブピクセルのカバー率を測定してラスタライズし、各ピクセルの赤、緑、青の各成分について個別のアルファ値を返します。

enum QRawFont::LayoutFlag
flags QRawFont::LayoutFlags

この enum は、関数advancesForGlyphIndexes() に進みの計算方法を指示します。

定数説明
QRawFont::SeparateAdvances0各グリフの前進を個別に計算する。
QRawFont::KernedAdvances1隣接するグリフ間にカーニングを適用する。OpenType GPOS ベースのカーニングは現在サポートされていないことに注意。
QRawFont::UseDesignMetrics2ペ イ ン ト デバ イ ス の解像度に合わせて調整 さ れた ヒ ン ト メ ト リ ッ ク のかわ り に、 デザ イ ン メ ト リ ッ ク を用います。上記のいずれかのオプシ ョ ン と OR にする こ と がで き ます。

LayoutFlags 型はQFlags<LayoutFlag> の typedef です。LayoutFlag値のORの組み合わせを格納する。

メンバ関数の説明

QRawFont::QRawFont()

無効な QRawFont を構築する。

QRawFont::QRawFont(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference = QFont::PreferDefaultHinting)

与えられたfontData に含まれるフォントを表す QRawFont を、pixelSize で与えられたサイズ(ピクセル単位)で、hintingPreference で指定されたヒンティングの優先順位を使用して構築します。

注: データは TrueType または OpenType フ ォ ン ト を含んでいなければな り ません。

QRawFont::QRawFont(const QString &fileName, qreal pixelSize, QFont::HintingPreference hintingPreference = QFont::PreferDefaultHinting)

fileName で参照 さ れてい る フ ァ イ ル内に含まれてい る フ ォ ン ト を表す QRawFont を、pixelSize で与え ら れたサ イ ズ (ピ ク セル単位) で、 かつhintingPreference で指定 さ れた ヒ ン ト 化優先順位を用いて構築 し ます。

注: 参照 さ れた フ ァ イ ルは 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 が要求されたとき、この関数は、TrueType テーブル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 の進み具合をピクセル単位で返す。advanceは、与えられたグリフの位置から、次のグリフが描画されるべき位置までの距離を与え、あたかも2つのグリフが間隔を空けていないかのように見せる。numGlyphs グリフのインデックスは配列glyphIndexes で与えられ、結果はadvances で返される。進みの計算方法はlayoutFlags で制御されます。

注: KernedAdvances が要求 さ れた と き 、 こ の関数は、 TrueType テーブル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 の進み具合をピクセル単位で返す。advanceは、与えられたグリフの位置から、次のグリフが描画されるべき位置までの距離を与える。numGlyphs グリフのインデックスは配列glyphIndexes で与えられ、結果はadvances で返される。各グリフの前進は個別に計算されます

QTextLine::horizontalAdvance() およびQFontMetricsF::horizontalAdvance()も参照

QImage QRawFont::alphaMapForGlyph(quint32 glyphIndex, QRawFont::AntialiasingType antialiasingType = SubPixelAntialiasing, const QTransform &transform = QTransform()) const

こ の関数は、 下地フ ォ ン ト 内で指定 さ れたtransform を用いて、 与えられたglyphIndex にあ る グ リ フ の ラ ス タライズ画像を返 し ます。QRawFont が有効でない と き は、 こ の関数は無効なQImage を返 し ます。

フ ォ ン ト がカ ラ ー フ ォ ン ト の と き は、 結果画像は、 カ レ ン ト ピ ク セルサ イ ズでのレ ン ダ リ ング さ れたグ リ フ を内容 と し ます。こ の場合、antialiasingType は無視 さ れます。

そ う でない と きは、antialiasingTypeQRawFont::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 のような尖った文字とは対照的です。

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

この関数はfontTable(QFont::Tag) をオーバーロードしています。

名前は 4 文字の文字列でなければなりません。

[static] QRawFont QRawFont::fromFont(const QFont &font, QFontDatabase::WritingSystem writingSystem = QFontDatabase::Any)

font クエリに基づいて物理表現を取得します。返される物理フォントは、選択されたwritingSystem でテキストを表示するために Qt によって優先されるフォントです。

警告: 警告 : こ の関数は高 コ ス ト にな る 可能性があ り ますので、 パフ ォーマ ン ス を重視す る コ ー ド では呼び出 し てはいけ ません。

bool QRawFont::glyphIndexesForChars(const QChar *chars, int numChars, quint32 *glyphIndexes, int *numGlyphs) const

グ リ フ イ ンデ ッ ク スへの Unicode 点列の変換 Unicode 点列を、 基礎フ ォ ン ト 内の CMAP テーブルを用いてグ リ フ イ ンデ ッ ク スへ変換 し ます。この関数はglyphIndexesForString() のように動作しますが、配列 (chars) を受け取ります。結果はglyphIndexes 配列として返され、グリフ数はnumGlyphs に設定されます。glyphIndexes 配列のサイズはnumChars 以上でなければなりません。それでも足りない場合はこの関数は false を返し、numGlyphs で返されたサイズからglyphIndexes のサイズを変更することができます。

glyphIndexesForString()、advancesForGlyphIndexes()、QGlyphRunQTextLayout::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()も参照してください

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 を、 与えたfontData に含まれる フ ォ ン ト で、pixelSize で与えたサ イ ズ (単位 ピ ク セル) に対 し て、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

このフォントが対応している書記体系の一覧を、フォントファイル内のデザイナが与えた情報に従って返します。こ れは、 フ ォ ン ト 内の特定の unicode 点への対応を保証す る も のではない こ と に留意 し て く だ さ い。supportsCharacter() を使 う と 、 特定の 1 個のキ ャ ラ ク タ に対す る 対応を調べる こ と がで き ます。

注 : こ の リ ス ト は、 フ ォ ン ト の 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)

こ の raw フ ォ ン ト を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

このQRawFontother と等しくない場合はtrue を返す。それ以外の場合はfalse を返す。

QRawFont &QRawFont::operator=(const QRawFont &other)

このQRawFontother を代入する。

bool QRawFont::operator==(const QRawFont &other) const

このQRawFontother と等しい場合はtrue を返す。それ以外の場合は、false を返します。

関連する非会員

[noexcept] size_t qHash(const QRawFont &font, size_t seed = 0)

font のハッシュ値を返します。指定された場合、seed がハッシュの初期化に使用されます。

©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。