이 페이지에서

QGlyphRun Class

QGlyphRun 클래스는 글꼴 내부의 글리프에 직접 접근할 수 있게 해줍니다. 더 보기...

헤더: #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 는 생성된 스레드 내에서만 유효하다는 점에유의하십시오 . 즉, QGlyphRun이 다른 스레드로 이동될 경우 새로운 QRawFont 를 생성하여 QGlyphRun에 설정해야 합니다. QGlyphRun이 현재 스레드와 다른 스레드의 QRawFont 에 대한 참조를 포함하고 있는 경우, QPainter 를 사용하여 글리프를 그릴 수 없습니다. 이 경우 QRawFont 는 유효하지 않고 접근할 수 없는 것으로 간주되기 때문입니다.

멤버 유형 문서

enum QGlyphRun::GlyphRunFlag
flags QGlyphRun::GlyphRunFlags

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

상수값설명
QGlyphRun::Overline0x01글리프가 위줄과 함께 표시되어야 함을 나타냅니다.
QGlyphRun::Underline0x02글리프가 밑줄과 함께 표시되어야 함을 나타냅니다.
QGlyphRun::StrikeOut0x04글리프가 시각적으로 취소선으로 표시되어야 함을 나타냅니다.
QGlyphRun::RightToLeft0x08글리프의 순서가 오른쪽에서 왼쪽으로 배열됨을 나타냅니다. 이는 인라인 텍스트 객체와 같이 글리프 런을 기준으로 하는 다른 화면 요소의 위치에 영향을 줄 수 있습니다.
QGlyphRun::SplitLigature0x10글리프 런이 리가처 글리프를 분할함을 나타냅니다. 즉, 리가처 글리프가 런에 포함되어 있지만, 이 글리프가 나타내는 문자는 해당 리가처의 일부에만 해당합니다. 이 경우 글리프 런의 ` boundingRect()` 함수를 사용하여, 해당 글리프 런이 나타내는 문자에 해당하는 글리프들이 차지하는 영역을 가져올 수 있습니다. 글리프를 시각화할 때는 리가처의 해당 부분만 그려지도록 이 경계 사각형(bounding rect)에 맞춰 잘라내는 데 주의를 기울여야 합니다. 특히, 특정 문자 범위에 대한 글리프 런을 ` 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()도 참조하십시오 .

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 에 위선(overline) 장식을 적용해야 하는 경우 true 를 반환합니다.

setOverline() 및 flags()도 참조하십시오 .

QList<QPointF> QGlyphRun::positions() const

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

setPositions()도 참조하십시오 .

QRawFont QGlyphRun::rawFont() const

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

setRawFont()도 참조하십시오 .

void QGlyphRun::setBoundingRect(const QRectF &boundingRect)

이 글리프 런( QGlyphRun )에 포함된 글리프들의 경계 사각형을 ` boundingRect`로 설정합니다. 이 사각형은 ` boundingRect()` 함수를 호출했을 때 반환되며, 해당 값이 null인 경우에는 대신 글리프 런에 포함된 글리프들의 경계 사각형이 반환됩니다.

참고: 텍스트 셰이핑을 구현하는경우가 아니라면 이 함수를 사용할 필요가 없습니다. 이 함수는 특히 QGlyphRun 가 포함된 글리프의 면적보다 더 작은 영역을 나타내야 할 때 사용됩니다. 예를 들어, ` QTextLayout::glyphRuns()`를 호출하여 글리프 런을 가져왔을 때, 지정된 범위가 리가처(두 개 이상의 문자가 하나의 글리프로 결합된 것)의 일부만 포함하는 경우와 같이 이러한 상황이 발생할 수 있습니다. 이 경우, 경계 사각형은 리가처 내 문자의 평균 너비를 계산하여 리가처 글리프의 적절한 부분만을 포함해야 합니다.

이러한 경우(예: 본문 텍스트 색상과 다른 색상으로 그려져야 하는 선택 영역)를 지원하기 위해서는, 리가처 글리프 전체가 그려지는 것을 방지하기 위해 boundingRect()에서 반환된 사각형으로 그리기 메커니즘을 제한해야 합니다.

boundingRect()도 참조하십시오 .

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

enabled 가 true인 경우, 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 `의 글리프 인덱스와 위치를 설정하여, 배열 ` glyphIndexArray ` 및 ` glyphPositionArray`의 첫 번째 ` size ` 요소를 사용하도록 합니다. 데이터는 복사되지 않습니다. 호출자는 이 ` QGlyphRun ` 및 그 복사본이 존재하는 동안 해당 배열이 삭제되지 않도록 보장해야 합니다.

setGlyphIndexes() 및 setPositions()도 참조하십시오 .

void QGlyphRun::setRawFont(const QRawFont &rawFont)

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

rawFont() 및 setGlyphIndexes()도 참조하십시오 .

void QGlyphRun::setRightToLeft(bool rightToLeft)

이 QGlyphRun 에 포함된 글리프가, rightToLeft 가 true인 경우 오른쪽에서 왼쪽으로 정렬되어야 함을 나타냅니다. 그렇지 않은 경우 글리프의 순서는 왼쪽에서 오른쪽으로 정렬된 것으로 간주됩니다.

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 가 true인 경우, 이 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()`의 길이와 일치합니다. 그 외의 경우에는 빈 벡터가 반환됩니다.

단일 글리프가 소스 문자열의 여러 문자에 대응할 수 있으므로, 문자열 인덱스 목록에 공백이 있을 수 있습니다. 예를 들어, "fi" 문자 쌍에 대한 리가처가 포함된 폰트로 "first"라는 문자열을 처리할 경우, 이 5자 문자열은 4개의 글리프로만 구성된 글리프 런을 생성하게 됩니다. 이 경우 글리프 인덱스는 (1, 2, 3, 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 를 반환합니다.

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