フォント

QML Scene Graph におけるテキスト描画

Published Thursday July 21st, 2011 | Leave a comment
Posted in Qt | Tags: , ,

この記事は Qt Blog の “Text Rendering in the QML Scene Graph” を翻訳したものです。 執筆: Yoann Lopes, 2011年7月15日 少し前に、Gunnar が QML Scene Graph の新機能について 説明しました 。その記事で述べられたように、新機能の一つが “Distance Field Alpha Testing” に基づいたテキスト描画の新技術です。この技術は OpenGL の全てのパワーを活用して、それまでの Qt では成し得なかったスケーラブルでサブピクセル座標、サブピクセルアンチエイリアシングなテキストをほぼノーコストで持つことが可能となります。 まずは、以下のビデオでこの技術がもたらす改善をご覧ください。

Read More

ヒントを活用したフォントのラスタライズ

Published Friday March 25th, 2011 | Leave a comment
Posted in Qt | Tags:

この記事は Qt Blog の “Hint, hint, nudge, nudge, say no more!“を翻訳したものです。 執筆: Eskil Abrahamsen Blomfeldt 2011年3月14日 この記事の執筆時点で、Qt のバグトラッカー で最も多くの投票を得ているのは “Allow better font rendering for projects like Koffice” (Koffice のようなプロジェクトのためのより良いフォントレンダリング) という若干漠然としたタイトルのタスクです。 このタスクの背景として、Qt がフォントのデザインメトリックスで行うテキストのレイアウトにおけるクロスプラットフォームサポートの欠如があります。Qt のフォントのバックエンドはオペレーティングシステムに依存しているため、テキストの描画にヒントを使用する場合があります。ヒントの利用とは、特定のサイズと解像度での描画用に最適化されたグリフ(字体)を、さらに画面に描画される前にわずかに変更することを意味しています。プリンタのような高解像度のデバイスではグリフのヒントは必要ありません。しかし、デスクトップモニタのように低解像度で表示する際には、ヒントを使用してピクセルグリッドに沿った配置にする事で、よりくっきりとした字体ではっきりと読めるように出来るでしょう。 代表的な例を挙げると、水平および垂直方向のグリフのヒント(フルヒント)を活用するものとして Windows の GDI、一切のヒントを使用しないものとして Mac OS X の Core Text があります。Linux でテキストのラスタライズに用いられる FreeType ではフルヒントから垂直方向のみ、ヒントなしまでカスタマイズする事が出来ます。Windows と Mac のテキストラスタライズの違いを下記のスクリーンショットでご確認ください。

Read More

テキストラスタライズの2つ目の春

Published Thursday March 24th, 2011 | Leave a comment
Posted in Qt | Tags: ,

この記事は Qt Blog の “A second spring of text rasterization” を翻訳したものです。 執筆: Eskil Abrahamsen Blomfeldt 2010年9月9日 「秋は、すべての葉が花になる2つ目の春だ」と言ったのはアルベール・カミュですが、それに習えば Mac OS X は全ての文字が永遠に花咲く常夏です。 この記事の背景には私の Jira のタスクリストにしばらく居座っていて、そしてまもなく完了する テキストレンダリングに関連したタスク があります。このタスクのゴールは、Mac におけるテキストのレンダリング結果をネイティブのペイントエンジンとラスターペイントエンジンとで同一にする事です。このタスクが重要である理由の一つは、QRasterPaintEngine を Mac/Cocoa でのデフォルトペイントエンジンにすることを考えているからです(訳注: この記事の翻訳時点では、既に master ブランチでの変更は行われました)。ラスターペイントエンジンは Qt の標準となるペイントエンジンであり、Windows ではデフォルトで使用されています。Mac OS X のネイティブのペイントエンジンを利用するよりもより良い表示内容を提供できるだけでなく、多くの鍵となる領域でより良いパフォーマンスを得られます。また、複数の異なるプラットフォームでデフォルトのテクノロジーを統一する事によって、Qt のメンテナンスコストを下げ、プラットフォームごとにデグレードを修正するよりもその他の改善に注力できるようになります(つまり、メリットだらけです)。もちろん統一を行う前に、ラスターペイントエンジンがそのプラットフォームにおけるこれまでの Qt のネイティブのルック&フィールを壊さない事を保証する必要があります。[qtbug QTBUG-5053] は、そのために解決が必要なタスクの一つでした。 付け加えると、このタスクは Qt のテキストレンダリングで正確な印刷を実現するために進めている プロジェクト の一部になります。そのプロジェクトについては後日記事を書きたいと思っています。現時点ではラスターエンジンの変更に注力するつもりです(訳注: 昨年9月のお話しです)。

Read More
Get started today with Qt Download now