前のトピック     次のトピック

第 9 章 テキストの動作の設計

セクション 2   テキストを含む図形のサイズ変更

テキストを編集したり図形のサイズを変更すると、テキストが見やすくなります。図形座標とテキストに関連した数式を使って、テキストの動作と外観を制御できます。テキストに共通の数式を追加するには、スマートシェイプ ウィザードを使う方法が最も簡単です。一方、シェイプシート (ShapeSheet®) ウィンドウでセルを編集すると、より高度な数式を追加することができます。

ここでは、図形のテキストブロックにテキストを入力しながらサイズを制御する方法、図形のサイズをテキストの量か値に応じて変更する方法、図形のサイズ変更に応じて文字サイズを変更する方法について説明します。

このセクションの内容...

テキストブロックのサイズの制御

テキストの量に応じた図形のサイズ変更

テキストの値に応じた図形のサイズ変更

図形のサイズに応じた文字サイズの変更

テキストブロックのサイズの制御

スマートシェイプ ウィザードを使ってテキストブロックの動作をユーザー設定すると、テキストの追加に伴ってテキストブロックが拡張されるように、テキストブロックのサイズを制御する数式が自動的に追加されます。これらの数式は、テキストブロックの初期境界を設定した上で、テキストが追加されればテキストブロックのサイズを変更して、追加テキストも含めたテキスト全体が収まるようにします。この数式は、修正することができ、独自の数式を入力して別の動作を設定することもできます。

ウィザードでテキストブロックのサイズを制御すると、MAX 関数によって最大許容サイズが定義され、TEXTWIDTH 関数と TEXTHEIGHT 関数によって図形に作成されたテキストの幅と高さが評価されます。さらに、ウィザードによって上記の数式が図形の [図形情報] セクションに追加されます。

  TxtWidth
  TxtHeight

= MAX(TEXTWIDTH(theText), 8 * Char.Size)
= TEXTHEIGHT(theText, TxtWidth)

テキストブロックの幅の制御

デフォルトでは、ハード リターンで終わる最も長いテキスト行か、文字サイズの 8 倍 (テキストブロックに少なくとも 1 語か 2 語入る幅) の値のうちいずれか大きい方にテキストブロックの幅を設定できます。テキストブロックに文字サイズの異なるテキストが含まれている場合、数式が作成された時点でテキストブロックの最初の文字に設定されているフォントの文字サイズが使用されます。

テキストブロックの幅を変数で規定するには 数式を使って、テキストブロックの幅を 2 種類以上の変数で規定することができます。この変数としては、たとえばシェイプの幅やテキストの文字サイズがあります。あるいは、固定幅のテキストブロックを指定することもできます。デフォルトでは、テキストブロックの幅は図形の幅と同じです。テキストブロックの幅を図形の半分にするには、シェイプのシートにある [テキスト情報] セクションに次のような数式を入力します。

TxtWidth = Width/2

また、テキストブロックを文字サイズ幅の 20 倍にするには、次のような数式を入力します。

TxtWidth = 20 * Char.Size

テキストブロックの最小幅を設定するには MIN 関数を使うと、テキストブロックの幅を最小にすることができます。たとえば、次の数式は、図形のサイズを変更しても、その図形のテキストブロックの幅が 4 cm 以上にならないようするか、1 cm 未満にならないようにします。

TxtWidth = MIN(4 cm, MAX(1 cm, Width))

この場合、テキストブロックの最大幅は、1 cm か図形の幅の大きい方になります。次に、4 cm とテキストブロックの最大幅が比較されて小さい方がテキストブロックの最小幅になります。

テキストブロックのサイズを変更できないようにするには テキストブロックを固定幅に設定すれば、図形のサイズを変更してもテキストブロックのサイズは変わりません。たとえば、テキストブロックの幅を 2 cm にするには、次のような数式を入力します。

TxtWidth = 2 cm

テキストブロックの高さの制御

テキストブロックにテキストを追加していく場合、通常はブロックを縦方向に拡張していきます。このため、テキストブロックの基本動作を設計するときは、図形にテキストを自由に入力できるように、できるだけ柔軟性を持たせておく必要があります。デフォルトの設定では、[TxtHeight] の値は図形の高さに等しくなります。スマートシェイプ ウィザードを使用すると、ウィザードで入力される [TxtHeight] の式は図形のテキストの高さを返します。この際に、テキスト行の長さすべては [TxtWidth] の値以内になります。

TxtHeight = TEXTHEIGHT(TheText、TxtWidth)

この数式は、図形に含まれるテキストの高さを示しています。テキストの高さには行間やブロックの前後のスペースも含まれ、[TxtWidth] の最大値よりも長い行は存在しないというのが前提です。ほとんどの場合はこの数式が有効で、テキストを入力していくにつれてテキストブロックを縦方向に拡張することができます。

TOP へ

テキストの量に応じた図形のサイズ変更

入力されるテキストの量に応じてサイズが変わる図形を作成することができます。テキストがちょうど入る大きさの図形が必要な場合は、図形の幅と高さを表す数式の一部に TEXTWIDTH 関数と TEXTHEIGHT 関数を使います。これは、吹出しや引出線の図形などに適しています。

たとえば、[図形情報] セクションに次のような数式を定義すると、図形はテキスト行の長さに余白を少し加えた幅に制限されます。

Width = GUARD(TEXTWIDTH(s) + 1 cm)

この関数は、図形内のテキスト全体の幅 (theText) を返します。図形の幅は、theText の値プラス 1 cm に制限されます。テキストブロックが空の場合、シェイプの幅は 1 cm になります。GUARD 関数が使われているため、選択ハンドルのあるシェイプの幅が変更されることはありません。このため、新しい値が [Width] セルの数式に上書きされます。あるいは、[保護] セクションの [LockWidth] セルを設定して、シェイプのサイズを変更できないようにすることもできます。

次の数式は、シェイプの高さをそこに入力されたテキストの行数に制限します。

Height = GUARD(TEXTHEIGHT(TheText,Width))


ヒント TEXTWIDTH 関数と TEXTHEIGHT 関数を使用すると、1 文字入力するごとにシェイプのテキストが再配置されます。パフォーマンスを最大にするには、数式に最小サイズ テストを追加し、テキストが指定された幅か高さになるまではテキストブロックのサイズが大きくならないようにします。指定された幅か高さを超えると、1 文字入力するごとにテキストが再配置されます。たとえば、4 cm × 1 cmのボックスを作成し、テキストを追加するとボックスが縦に伸びるようにすることができます。パフォーマンス面での悪影響を抑えるために、テキストの高さが 1 cm になるまでボックスのサイズは変わりません。このような動作にするには、[図形情報] セクションに次の数式を追加します。

  Width
  Height

= 5 cm.
= GUARD(MAX(1 cm., TEXTHEIGHT(TheText, Width)))


TOP へ

テキストの値に応じた図形のサイズ変更

入力されるテキストの値に応じてサイズが調整される図形を作成することができます。たとえば、棒グラフでは、入力されたテキストの示す値に応じて棒のサイズが変わるようにすることができます。EVALTEXT 関数を使うと、値を入力できる簡単なグラフなどのシェイプを作成できます。この値がシェイプの幅や高さに影響します。たとえば、シェイプの幅とテキストの値とを関連させるには、[図形情報] セクションに次のような数式を入力します。

Width = GUARD(EVALTEXT(TheText))

EVALTEXT 関数は、図形のテキストブロックに含まれるテキストを数式のように扱い、結果を返します。たとえば、「10 cm」と入力すると、図形の幅は 10 cm に変わります。テキストがないか、テキストを評価できない (たとえば数値以外の値が入力された) 場合は、図形の [Width] は 0 になります。伸ばす方向にだけ図形のサイズを変更することにより、シェイプをさらに微調整できます。これは、右に伸びるバーの場合などに使うと便利です。これには、[自由に回転ツール] を使ってバーの根元まで図形の Pin を移動します。

TOP へ

図形のサイズに応じた文字サイズの変更

デフォルトの設定では、図形のサイズを変更すると、その図形座標とテキストブロックは変化しますが、文字サイズは変わりません。スマートシェイプ ウィザードを使用するか、独自の数式を記述すれば、文字サイズが図形座標の関数になります。ここで説明する数式を使うと、文字サイズだけを調整できます。テキストのインデントや行間を変更したい場合は、これらの属性を制御するセルで同様の数式が必要になります。


図面の縮尺が設定されている場合、文字サイズを図形の高さの関数にするときに図面縮尺を考慮に入れることを忘れないでください。


スマートシェイプ ウィザードを使ったテキストサイズ変更の数式の作成

スマートシェイプ ウィザードを使用して、文字サイズを図形のサイズの関数として表すことができます。図形のサイズを変更すると、テキストは図形の高さに比例して大きくなります。

スマートシェイプ ウィザードを使ってテキストのサイズを変更するには

  1. 図形を選択し、[ツール] メニューから [マクロ] をポイントします。次に、[Visio エキストラ] をポイントして [スマートシェイプ ウィザード] を選択します。
  2. [スマートシェイプ オプション] で、[図形のテキストの動作を決める] を選択し、[オプション変更] をクリックします。
  3. [文字のサイズ] 画面が表示されるまで [次へ] をクリックし、[図形のサイズに合わせて変更] を選択します。
  4. 画面の指示に従って、ウィザードを終了します。

これにより、[文字の書式] セクションに次の数式が追加され、文字サイズが図形の高さに応じて設定されるようになります。

Size = 1 * Height * 0.0741

この数式の右辺の 3 つ目の数値は、元のテキスト サイズを図形の高さで割って得られる比率です。たとえば、[基本シェイプ] ステンシルにある [三角形] シェイプをデフォルトのサイズで使うと、この値は 0.037 (4 ポイントだったテキストに対して) から 1.1852 (128 ポイントだったテキストに対して) まで変化します。

サイズ変更用のユーザー定義式の作成

図形のサイズとその文字サイズを等比率でサイズ変更する場合は、[文字の書式] セクションで次の一般式を使用します。

Size = (Height/<元の高さ>) * (<元のフォントサイズ>)

図形のパフォーマンスを改善するために、ユーザー定義セルにプロポーションの数式を格納する方法があります。たとえば、元のシェイプの高さが 3 cm、元の文字サイズが 10 ポイントの場合は、[ユーザー定義セル] セクションをシェイプシート ウィンドウに挿入し、次のような数式を追加します。

  User.FontSize
  Char.Size

= Height/3cm * 10pt
= User.FontSize

いつも読みやすいサイズの文字にするために、文字サイズの範囲を制限できます。たとえば、文字サイズを 4 ポイントから 128 ポイントに制限するには、MIN 関数と MAX 関数を使います。

User.FontSize = MIN(128pt, MAX(4pt, Height/3cm * 10pt))

[MIN] 関数と [MAX] 関数の構文の詳細については、Visio 製品付属のオンラインヘルプ「開発者用リファレンス」 ([ヘルプ] メニューから [開発者用リファレンス] を選択) を参照してください。

使用するプリンタとドライバでサポートしている文字サイズの制限にも注意が必要です。[文字の書式] セクションに 2 行以上含まれている場合に一貫性を保つには、後続の行の [Size] セルにも同じような数式を定義してください。

Top