QGlyphRun Class

QGlyphRun 클래스는 글꼴의 내부 글리프에 직접 액세스할 수 있습니다. 더 보기...

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

공용 유형

enum GlyphRunFlag { Overline, Underline, StrikeOut, RightToLeft, SplitLigature }
flags GlyphRunFlags

공용 함수

QGlyphRun()
QGlyphRun(const QGlyphRun &other)
~QGlyphRun()
QRectF boundingRect() const
void clear()
QGlyphRun::GlyphRunFlags flags() const
QList<quint32> glyphIndexes() const
bool isEmpty() const
bool isRightToLeft() const
bool overline() const
QList<QPointF> positions() const
QRawFont rawFont() const
void setBoundingRect(const QRectF &boundingRect)
void setFlag(QGlyphRun::GlyphRunFlag flag, bool enabled = true)
void setFlags(QGlyphRun::GlyphRunFlags flags)
void setGlyphIndexes(const QList<quint32> &glyphIndexes)
void setOverline(bool overline)
void setPositions(const QList<QPointF> &positions)
void setRawData(const quint32 *glyphIndexArray, const QPointF *glyphPositionArray, int size)
void setRawFont(const QRawFont &rawFont)
void setRightToLeft(bool rightToLeft)
(since 6.5) void setSourceString(const QString &sourceString)
void setStrikeOut(bool strikeOut)
(since 6.5) void setStringIndexes(const QList<qsizetype> &stringIndexes)
void setUnderline(bool underline)
(since 6.5) QString sourceString() const
bool strikeOut() const
(since 6.5) QList<qsizetype> stringIndexes() const
void swap(QGlyphRun &other)
bool underline() const
bool operator!=(const QGlyphRun &other) const
QGlyphRun &operator=(const QGlyphRun &other)
bool operator==(const QGlyphRun &other) const

상세 설명

Qt가 유니코드로 인코딩된 텍스트 문자열을 표시할 때, 먼저 유니코드 포인트를 하나 이상의 글꼴에 기반한 글리프 인덱스 목록과 위치 목록으로 변환합니다. 이 경우 텍스트와 QFont 객체의 유니코드 표현은 화면에 텍스트를 표시할 때 실제로 발생하는 세부 사항을 숨기는 편리한 추상화 역할을 합니다. 예를 들어, 텍스트가 실제로 화면에 표시될 때는 원래 선택한 글꼴이 텍스트에 포함된 모든 문자 체계를 지원하지 않는 경우와 같이 사용자가 지정한 글꼴 외에 다른 글꼴 집합으로 표시될 수 있습니다.

특정 상황에서는 애플리케이션 개발자가 특정 글꼴의 어떤 글리프가 화면에 그려지는지 보다 낮은 수준의 제어를 하는 것이 유용할 수 있습니다. 예를 들어 외부 폰트 엔진과 텍스트 셰이퍼를 Qt와 함께 사용하는 애플리케이션이 이에 해당할 수 있습니다. QGlyphRun은 화면에 텍스트를 표시하는 데 필요한 원시 데이터에 대한 인터페이스를 제공합니다. 여기에는 글리프 인덱스 목록, 각 글리프의 위치 및 글꼴이 포함되어 있습니다.

선택한 글꼴에 제공된 글리프 인덱스가 실제로 포함되어 있는지 확인하는 것은 사용자의 책임입니다.

QTextLayout::glyphRuns() 또는 QTextFragment::glyphRuns()를 사용하여 유니코드 인코딩된 텍스트를 QGlyphRun 객체 목록으로 변환하고 QPainter::drawGlyphRun()를 사용하여 글리프를 그릴 수 있습니다.

참고: QRawFont 은 작성된 스레드에 로컬로 간주된다는 점에 유의하세요. 즉, 다른 스레드로 이동하면 새로운 QRawFont 을 생성하고 QGlyphRun에 설정해야 합니다. 현재 스레드가 아닌 다른 스레드의 QRawFont 에 대한 참조가 QGlyphRun에 포함되어 있으면 QPainter 을 사용하여 글리프를 그릴 수 없으므로 이 경우 QRawFont 은 유효하지 않고 액세스 할 수 없는 것으로 간주됩니다.

멤버 유형 문서

열거형 QGlyphRun::GlyphRunFlag
플래그 QGlyphRun::GlyphRunFlags

이 열거형은 시각적 레이아웃에서 글리프 실행이 표시되거나 동작하는 방식을 변경하는 플래그를 설명합니다. 글리프 실행을 생성하는 레이아웃은 관련 내부 데이터를 기반으로 이러한 플래그를 설정하여 레이아웃 사용자가 의도한 대로 텍스트를 표시하는 데 필요한 정보를 유지할 수 있습니다.

Constant설명
QGlyphRun::Overline0x01글리프가 오버라인과 함께 시각화되어야 함을 나타냅니다.
QGlyphRun::Underline0x02글리프가 밑줄과 함께 시각화되어야 함을 나타냅니다.
QGlyphRun::StrikeOut0x04글리프에 밑줄을 시각적으로 표시해야 함을 나타냅니다.
QGlyphRun::RightToLeft0x08글리프가 오른쪽에서 왼쪽으로 정렬됨을 나타냅니다. 이는 인라인 텍스트 개체와 같이 글리프 실행에 상대적인 다른 화면 요소의 위치에 영향을 줄 수 있습니다.
QGlyphRun::SplitLigature0x10글리프 실행이 합자 글리프를 분할함을 나타냅니다. 즉, 합자 글리프가 실행에 포함되지만 해당 글리프가 나타내는 문자는 해당 합자의 일부에만 해당합니다. 이 경우 글리프 런의 boundingRect() 함수를 사용하여 글리프 런으로 표시된 문자에 해당하는 글리프가 포함된 영역을 검색할 수 있습니다. 글리프를 시각화할 때는 합자의 해당 부분만 그려지도록 이 경계 직사각형에 클립핑하는 데 주의를 기울여야 합니다. 특히 QTextLayout 에서 특정 문자 범위에 대한 글리프 런을 검색할 때(예: QTextLayout 에서 선택한 영역을 검색할 때) 이러한 경우가 발생할 수 있습니다.

GlyphRunFlags 유형은 QFlags<GlyphRunFlag>에 대한 typedef입니다. GlyphRunFlag 값의 OR 조합을 저장합니다.

멤버 함수 문서

QGlyphRun::QGlyphRun()

빈 QGlyphRun 객체를 생성합니다.

QGlyphRun::QGlyphRun(const QGlyphRun &other)

other 의 복사본인 QGlyphRun 객체를 생성합니다.

[noexcept] QGlyphRun::~QGlyphRun()

QGlyphRun 를 파괴합니다.

QRectF QGlyphRun::boundingRect() const

QGlyphRun 에 있는 모든 글리프를 포함하는 가장 작은 직사각형을 반환합니다. setBoundingRect ()를 사용하여 바운딩 사각형이 설정된 경우 이 사각형이 반환됩니다. 그렇지 않으면 글리프 실행에 있는 글리프의 글꼴 메트릭을 기준으로 바운딩 직사각형이 계산됩니다.

setBoundingRect()도 참조하세요 .

void QGlyphRun::clear()

QGlyphRun 개체의 모든 데이터를 지웁니다.

QGlyphRun::GlyphRunFlags QGlyphRun::flags() const

QGlyphRun 에 설정된 플래그를 반환합니다.

setFlags(), setFlag(), setFlag()도 참조하세요 .

QList<quint32> QGlyphRun::glyphIndexes() const

QGlyphRun 객체에 대한 글리프 인덱스를 반환합니다.

setGlyphIndexes() 및 setPositions()도 참조하세요 .

bool QGlyphRun::isEmpty() const

QGlyphRun 에 글리프가 포함되어 있지 않으면 true 을 반환합니다.

bool QGlyphRun::isRightToLeft() const

QGlyphRun 에 오른쪽에서 왼쪽으로 칠해진 글리프가 포함된 경우 true 를 반환합니다.

setRightToLeft() 및 flags()도 참조하세요 .

bool QGlyphRun::overline() const

QGlyphRun 을 오버라인 장식으로 칠해야 하는 경우 true 을 반환합니다.

setOverline() 및 flags()도 참조하세요 .

QList<QPointF> QGlyphRun::positions() const

이 글리프 인덱스 집합의 각 글리프에 대한 기준선 가장자리 위치를 반환합니다.

setPositions()도 참조하세요 .

QRawFont QGlyphRun::rawFont() const

QGlyphRun 객체에 대해 선택된 글꼴을 반환합니다.

setRawFont()도 참조하세요 .

void QGlyphRun::setBoundingRect(const QRectF &boundingRect)

QGlyphRun 에 있는 글리프의 경계 사각형을 boundingRect 로 설정합니다. 이 사각형은 null이 아닌 한 boundingRect()에 의해 반환되며, 이 경우 글리프 실행에 있는 글리프의 경계 사각형이 대신 반환됩니다.

참고: 텍스트 셰이핑을 구현하지 않는 한 이 함수를 사용할 필요가 없습니다. QGlyphRun 이 포함된 글리프의 영역보다 작은 영역을 나타내야 할 때 특별히 사용됩니다. 예를 들어 QTextLayout::glyphRuns()를 호출하여 글리프 실행을 검색하고 지정된 범위가 합자(두 개 이상의 문자가 하나의 글리프에 결합된 경우)의 일부만 포함하는 경우 발생할 수 있습니다. 이 경우 경계 사각형은 합자 문자의 평균 너비 계산에 따라 합자 글리프의 적절한 부분만 포함해야 합니다.

이러한 경우(예: 주 텍스트 색상과 다른 색상으로 그려야 하는 선택 항목)를 지원하려면 boundingRect()에서 반환된 직사각형에 페인팅 메커니즘을 클립하여 전체 합자 글리프가 그려지지 않도록 해야 합니다.

boundingRect()도 참조하세요 .

void QGlyphRun::setFlag(QGlyphRun::GlyphRunFlag flag, bool enabled = true)

enabled 이 참이면 flag 이 활성화되고, 그렇지 않으면 비활성화됩니다.

flags() 및 setFlags()도 참조하세요 .

void QGlyphRun::setFlags(QGlyphRun::GlyphRunFlags flags)

QGlyphRun 의 플래그를 flags 로 설정합니다.

setFlag() 및 flags()도 참조하세요 .

void QGlyphRun::setGlyphIndexes(const QList<quint32> &glyphIndexes)

QGlyphRun 객체의 글리프 인덱스를 glyphIndexes 로 설정합니다. 글리프 인덱스는 선택한 글꼴에 유효해야 합니다.

glyphIndexes()도 참조하세요 .

void QGlyphRun::setOverline(bool overline)

overline 이 참이면 QGlyphRun 을 밑줄 장식으로 그려야 함을 나타냅니다. 그렇지 않으면 QGlyphRun 은 밑줄 장식 없이 그려야 합니다.

overline(), setFlag() 및 setFlags()도 참조하세요 .

void QGlyphRun::setPositions(const QList<QPointF> &positions)

이 글리프 인덱스 집합의 각 글리프에 대한 기준선 가장자리 위치를 positions 로 설정합니다.

positions()도 참조하세요 .

void QGlyphRun::setRawData(const quint32 *glyphIndexArray, const QPointF *glyphPositionArray, int size)

QGlyphRun 의 글리프 인덱스와 위치를 설정하여 glyphIndexArrayglyphPositionArray 배열의 첫 번째 size 요소를 사용하도록 합니다. 데이터는 복사되지 않습니다. 호출자는 이 QGlyphRun 및 그 복사본이 존재하는 한 배열이 삭제되지 않도록 보장해야 합니다.

setGlyphIndexes() 및 setPositions()도 참조하세요 .

void QGlyphRun::setRawFont(const QRawFont &rawFont)

글리프 인덱스를 조회할 글꼴을 지정된 rawFont 로 설정합니다.

rawFont() 및 setGlyphIndexes()도 참조하세요 .

void QGlyphRun::setRightToLeft(bool rightToLeft)

rightToLeft 이 참이면 오른쪽에서 왼쪽으로 정렬해야 하는 글리프가 QGlyphRun 에 포함되어 있음을 나타냅니다. 그렇지 않으면 글리프의 순서는 왼쪽에서 오른쪽으로 가정합니다.

isRightToLeft(), setFlag() 및 setFlags()도 참조하세요 .

[since 6.5] void QGlyphRun::setSourceString(const QString &sourceString)

글리프 실행에 해당하는 문자열을 sourceString 로 설정합니다. 설정하면 stringIndexes()가 반환하는 인덱스는 이 문자열에 대한 인덱스가 됩니다.

이 함수는 Qt 6.5에 도입되었습니다.

sourceString() 및 stringIndexes()도 참조하십시오 .

void QGlyphRun::setStrikeOut(bool strikeOut)

strikeOut 이 참이면 QGlyphRun 을 삼진 아웃 장식으로 칠해야 함을 나타냅니다. 그렇지 않으면 QGlyphRun 은 삼진 아웃 장식 없이 그려야 합니다.

strikeOut(), setFlag() 및 setFlags()도 참조하세요 .

[since 6.5] void QGlyphRun::setStringIndexes(const QList<qsizetype> &stringIndexes)

글리프 인덱스에 해당하는 문자열 인덱스 목록을 다음과 같이 설정합니다. stringIndexes

이 목록의 규칙에 대한 자세한 내용은 stringIndexes()를 참조하십시오.

이 함수는 Qt 6.5에 도입되었습니다.

stringIndexes() 및 sourceString()도 참조하십시오 .

void QGlyphRun::setUnderline(bool underline)

underline 이 참이면 QGlyphRun 을 밑줄 장식으로 칠해야 함을 나타냅니다. 그렇지 않으면 QGlyphRun 은 밑줄 장식 없이 그려야 합니다.

underline(), setFlag() 및 setFlags()도 참조하세요 .

[since 6.5] QString QGlyphRun::sourceString() const

문자열에서 글리프 실행이 생성되고 레이아웃에서 문자열이 요청된 경우, 글리프 실행에 해당하는 문자열을 반환합니다.

이 함수는 Qt 6.5에 도입되었습니다.

setSourceString(), stringIndexes() 및 QTextLayout::glyphRuns()도 참조하십시오 .

bool QGlyphRun::strikeOut() const

QGlyphRun 을 삼진 아웃 장식으로 칠해야 하는 경우 true 을 반환합니다.

setStrikeOut() 및 flags()도 참조하세요 .

[since 6.5] QList<qsizetype> QGlyphRun::stringIndexes() const

글리프 실행이 문자열로 구성되고 레이아웃에서 문자열 인덱스가 요청된 경우 각 글리프 인덱스에 해당하는 문자열 인덱스를 반환합니다. 이 경우 반환된 벡터의 길이는 glyphIndexes()의 길이에 해당합니다. 다른 경우에는 비어 있습니다.

하나의 글리프가 소스 문자열의 여러 문자에 대응할 수 있으므로 문자열 인덱스 목록에 공백이 있을 수 있습니다. 예를 들어 문자열 "first"가 문자 쌍 "fi"에 대한 합자를 포함하는 글꼴로 처리되는 경우 5개의 문자 문자열은 4개의 글리프만으로 구성된 글리프 실행을 생성합니다. 이 경우 글리프 인덱스는 (1, 2, 3, 4)(임의의 글리프 인덱스 4개)가 될 수 있지만 문자열 인덱스는 (0, 2, 3, 4)가 될 것입니다. 글리프는 문자열의 논리적 순서에 따르므로 이 경우 첫 번째 글리프는 문자 0과 1에 걸쳐 있음을 의미합니다.

반대로 단일 문자가 여러 개의 글리프를 생성할 수도 있으며, 이 경우 문자열 인덱스 목록에 중복 항목이 있을 수 있습니다.

문자열 인덱스는 sourceString()를 통해 선택적으로 사용할 수 있는 문자열에 해당합니다.

이 함수는 Qt 6.5에 도입되었습니다.

setStringIndexes(), sourceString() 및 QTextLayout::glyphRuns()도 참조하십시오 .

[noexcept] void QGlyphRun::swap(QGlyphRun &other)

이 글리프 실행 인스턴스를 other 로 바꿉니다. 이 작업은 매우 빠르며 실패하지 않습니다.

bool QGlyphRun::underline() const

QGlyphRun 을 밑줄 장식으로 칠해야 하는 경우 true 을 반환합니다.

setUnderline() 및 flags()도 참조하세요 .

bool QGlyphRun::operator!=(const QGlyphRun &other) const

other 과 이 QGlyphRun 객체를 비교합니다. 글리프 인덱스 목록, 위치 목록 또는 글꼴 중 하나라도 다르면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

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

QGlyphRun 객체에 other 을 할당합니다.

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

other 과 이 QGlyphRun 객체를 비교합니다. 글리프 인덱스 목록, 위치 목록, 글꼴이 모두 같으면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

© 2025 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.