現在オフラインです。再接続するためにインターネットの接続を待っています

お使いのブラウザーはサポートされていません

このサイトを利用するには、ブラウザーを更新する必要があります。

Internet Explorer を最新バージョンに更新する

GetGlyphOutline() ネイティブ バッファー フォーマットする方法

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB:87115
サポート期間が終了した「サポート技術情報」資料に関する免責事項
この資料は、マイクロソフトでサポートされていない製品について記述したものです。そのため、この資料は現状ベースで提供されており、今後更新されることはありません。
概要
は、 GetGlyphOutline メソッドをアプリケーションに機能を提供します。最下位レベルでは、TrueType のグリフ情報を取得します。環境です。この資料では、データの形式を説明、GetGlyphOutline 関数を返します。
詳細
グリフのアウトラインを一連のグリフを記述するコンターです。各によって輪郭を定義します。 TTPOLYGONHEADER データ構造体は、多くとして続く TTPOLYCURVE データ構造体のようにする必要があります。輪郭をについて説明します。

各位置で記載されている、 POINTFX データ構造は、いない、相対的な位置、絶対位置を表します。開始終了点のグリフが与えですが pfxStart メンバー、 TTPOLYGONHEADER データ構造体です。

は、 TTPOLYCURVE データ構造体は 2 種類に分類されます。 TT_PRIM_LINEレコードまたはレコードの TT_PRIM_QSPLINE。TT_PRIM_LINE のレコードは、一連のです。ポイントです。点の間に描画される線の輪郭を説明する、グリフです。TT_PRIM_QSPLINE レコード一連のポイントを定義するには、2 次スプライン (q スプライン) のアウトラインを作成するために必要な文字があります。

TrueType では、q スプラインが 3 つ定義されてポイント (A、B、および C)A と C のポイント、カーブと点 B がオフ曲線です。各 q スプラインの数式のとおりです (xA を表します、x 座標のポイント A、無謀の点の y 座標を表す、いうように)
   x(t) = (xA-2xB+xC)*t^2 + (2xB-2xA)*t + xA   y(t) = (yA-2yB+yC)*t^2 + (2yB-2yA)*t + yA				
場所 t は 0.0 から 1.0 に異なります。

TT_PRIM_QSPLINE レコードの形式は次のとおりです。
  • ポイント q スプラインの現在位置 (どちらか pfxStart ではTTPOLYGONHEADER、TTPOLYCURVE の開始点を終了点は、以前の TTPOLYCURVE の)。
  • レコードの現在の位置は点 B です。
  • ポイント C は次のとおりです。
    • C は 2 つのレコードを持っています、B 点の後、多くのポイントをポイントします。ポイント B と次のポイントの中間ですがレコードです。
    • それ以外の場合、ポイント C を B 点の後にポイントです。
アルゴリズムを次のコードを表示するプロセスには、TT_PRIM_QSPLINE のレコードです。このコードを抽出する方法を示していますがq スプライン TT_PRIM_QSPLINE 記録から、用途に適してではありません。アプリケーションでは。
   pfxA = pfxStart;                // Starting point for this polygon   for (u = 0; u < cpfx - 1; u++)  // Walk through points in spline   {   pfxB = apfx[u];              // B is always the current point   if (u < cpfx - 2)            // If not on last spline, compute C      {      pfxC.x = (pfxB.x + apfx[u+1].x) / 2;  // x midpoint      pfxC.y = (pfxB.y + apfx[u+1].y) / 2;  // y midpoint      }   else                         // Else, next point is C      pfxC = apfx[u+1];                                // Draw q-spline   DrawQSpline(hdc, pfxA, pfxB, pfxC);   pfxA = pfxC;                 // Update current point   }				
上記のアルゴリズム点直接浮動小数点を使用した操作します。演算子。ただし、点 q スプライン レコードは固定に格納されます。データを入力します。次のコードは、固定を操作する方法を示しています。データ項目。
   FIXED fx;   long *pl = (long *)&fx;   // Perform all arithmetic on *pl rather than on fx   *pl = *pl / 2;				
次の関数は、浮動小数点数に固定の変換します。表示:
   FIXED FixedFromDouble(double d)   {   long l;   l = (long) (d * 65536L);   return *(FIXED *)&amp;l;   }				
書き込みではなく、実稼働のアプリケーションでは、 DrawQSpline 個別に各 q スプラインを描画する機能、効率的にq スプライン上のポイントを計算し、それらの配列に格納 ポイントデータ構造です。グリフの計算が完了すると、通過します。点の配列には、 PolyPolygon 関数を描画して塗りつぶすにはグリフです。

次の使用例で返されるデータが表示されます、24 ポイントの ms p ゴシック フォントの小文字の"j"用 GetGlyphOutline8514/a (小さなフォント) のビデオ ドライバーの。
   GetGlyphOutline GGO_NATIVE 'j'   dwrc            = 208      // Total native buffer size in bytes   gmBlackBoxX, Y  = 6, 29    // Dimensions of black part of glyph   gmptGlyphOrigin = -1, 23   // Lower-left corner of glyph   gmCellIncX, Y   = 7, 0     // Vector to next glyph origin   TTPOLYGONHEADER #1           // Contour for dot on "j"   cb       = 44              // Total size of dot polygon   dwType   = 24              // TT_POLYGON_TYPE   pfxStart = 2.000, 20.000   // Start at lower-left corner of dot   TTPOLYCURVE #1   wType  = TT_PRIM_LINE   cpfx   = 3   pfx[0] = 2.000, 23.000   pfx[1] = 5.000, 23.000   pfx[2] = 5.000, 20.000   // Automatically close to pfxStart   TTPOLYGONHEADER #2   // Contour for body of "j"   cb       = 164     // Total size is 164 bytes   dwType   = 24      // TT_POLYGON_TYPE   pfxStart = -1.469, -5.641   TTPOLYCURVE #1     // Finish flat bottom end of "j"   wType  = TT_PRIM_LINE   cpfx   = 1   pfx[0] = -0.828, -2.813   TTPOLYCURVE #2    // Make hook in "j" with spline                    // Point A in spline is end of TTPOLYCURVE #1    wType  = TT_PRIM_QSPLINE    cpfx   = 2               // two points in spline -> one curve    pfx[0] = -0.047, -3.000  // This is point B in spline    pfx[1] = 0.406, -3.000   // Last point is always point C   TTPOLYCURVE #3    // Finish hook in "j"                    // Point A in spline is end of TTPOLYCURVE #2   wType  = TT_PRIM_QSPLINE   cpfx   = 3               // Three points -> two splines   pfx[0] = 1.219, -3.000   // Point B for first spline                             // Point C is (pfx[0] + pfx[1]) / 2   pfx[1] = 2.000, -1.906   // Point B for second spline   pfx[2] = 2.000, 0.281    // Point C for second spline   TTPOLYCURVE #4    // Majority of "j" outlined by this polyline    wType  = TT_PRIM_LINE    cpfx   = 3    pfx[0] = 2.000, 17.000    pfx[1] = 5.000, 17.000    pfx[2] = 5.000, -0.250   TTPOLYCURVE #5    // start of bottom of hook    wType  = TT_PRIM_QSPLINE    cpfx   = 2               // One spline in this polycurve    pfx[0] = 5.000, -3.266   // Point B for spline    pfx[1] = 4.188, -4.453   // Point C for spline   TTPOLYCURVE #6    // Middle of bottom of hook    wType  = TT_PRIM_QSPLINE    cpfx   = 2               // One spline in this polycurve    pfx[0] = 3.156, -6.000   // B for spline    pfx[1] = 0.766, -6.000   // C for spline   TTPOLYCURVE #7    // Finish bottom of hook and glyph    wType  = TT_PRIM_QSPLINE    cpfx   = 2               // One spline in this polycurve    pfx[0] = -0.391, -6.000  // B for spline    pfx[1] = -1.469, -5.641  // C for spline				

警告: この記事は自動翻訳されています

プロパティ

文書番号:87115 - 最終更新日: 07/21/2011 14:02:00 - リビジョン: 4.0

  • kbhowto kbmt KB87115 KbMtja
フィードバック
t=">n.protocol) + "//c.microsoft.com/ms.js'><\/script>");