C
MCU.Config.glyphsLayoutCacheExhaustionPolicy
説明
テキストのグリフデータがキャッシュ内の空き領域に収まらない場合、キャッシュはまず LRU 戦略を用いてエントリをリサイクルし、空き領域を確保します。 それでも割り当てに失敗した場合(空き領域の合計が十分にあるにもかかわらず、断片化によって割り当てが失敗することがあります)、キャッシュを空にしてからレイアウトを一度再試行するため、キャッシュの断片化だけが原因で失敗したテキストも正常にレンダリングされます。
このプロパティは、その再試行も失敗した場合、つまり、本来は空であるはずのキャッシュにもテキストが収まらない場合(つまり、MCU.Config.glyphsLayoutCacheSizeで設定されたキャッシュサイズが小さすぎる場合)の挙動を指定します。
RenderNothing(デフォルト): テキストは描画されず、設定されたキャッシュサイズを示すヒントがログに記録されるため、UIの他の部分は正常に動作し続けます。 このヒントは、1回目、2回目、4回目、8回目……と発生するたびにログに記録されます。これにより、キャッシュサイズが不足している状態が画面上に表示されている間、コンソールがヒントで溢れかえることなく、開発中にヒントを常に確認できるようになります。Halt:QulError_GlyphLayoutCache_GlyphDataDoesNotFitInCache をQul::PlatformInterface::error 経由で報告するため、キャッシュサイズが不足していることが即座に明らかになります。
RenderNothing では、テキストは永久に失われるわけではありません。後の更新時にレイアウトが再実行されるため、収まるほど小さくなれば(たとえば、コンテンツがより短い文字列に変わったり、フォントサイズが小さくなるなど、レイアウト設定が変更されたりした場合)、再びレンダリングされます。 他のキャッシュされたテキストを解放しても効果はありません。なぜなら、キャッシュが空になった状態でレイアウトの再試行が行われるためです。
いずれにせよ、解決すべきはキャッシュサイズです。サイズの設定方法については、MCU.Config.glyphsLayoutCacheSize を参照してください。
使用方法
このプロパティは、メインアプリケーションの.qmlproject ファイルで指定できます。引数として文字列を受け取り、デフォルト値は"RenderNothing" です。
利用可能なオプションは以下の通りです:
"RenderNothing""Halt"
コード例:
MCU.Config {
glyphsLayoutCacheExhaustionPolicy: "Halt"
}古い(qmlproject ではない)ビルド設定を使用している場合、CMake 定義 `GLYPHS_LAYOUT_CACHE_EXHAUSTION_POLICY ` を `RenderNothing ` または `Halt` に設定することで、このポリシーを構成できます。
なお
このプロパティは、QmlProject API 1.12で導入されました。
「テキストのキャッシュ」および「MCU.Config.glyphsLayoutCacheSize」も参照してください 。
特定のQtライセンスの下で利用可能です。
詳細はこちらをご覧ください。