> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 枠付き文字を含むテキスト field の記述

> block の Expression コードで White Gap 要素から field の境界を導き出し、FlexiLayout Studio で枠付き文字（combed）のテキスト field を記述します。

従来型の固定レイアウト文書によく見られる field を検索するために、FlexiLayout を作成する必要が生じることがあります。たとえば、文字を小さな枠内に記入する field を記述する必要がある場合です。

典型的な例として、企業が各地域オフィスから文書を収集するケースがあります。文書は同じように見えることが想定されていても、地域オフィスごとにレイアウトにわずかな違いがある場合があり、その結果、単一の「ハード」な Document Definition では処理できないことがあります。このような場合は、少しずつ異なる複数の「ハード」な Document Definition を使うよりも、1 つの FlexiLayout を使用する方が適していることがあります。

<div id="when-to-search-for-boundaries-with-white-gap-elements">
  ## White Gap 要素を使用して境界を検索する場合
</div>

文書上で検索対象となる data field が「枠付き文字」または「個別の枠付き文字」タイプである場合、このような field の境界をセパレーターに基づいて検索するのは非常に複雑になることがあり、特にそのような field の名前が利用できない場合や認識の信頼性が低い場合には、要素の記述が煩雑になりがちです。

さらに、block にはこれらの field だけでなく、枠全体も含まれていることが非常に重要です。セパレーターの線が細い場合、印刷がかすれていたり、スキャン時に消失したりすることがあります。そのような場合は、**White Gap** 要素を使用して境界を検索します。

このような field の境界は、block の **Properties** ダイアログの **Expression** field で、特別な FlexiLayout language を使用して記述します。

field の上境界は上側の white gap の下端、下境界は下側の white gap の上端、右境界は右側の white gap の左境界、左境界は左側の white gap の右境界として記述できます。

テスト画像とテスト済みの FlexiLayout を含む FlexiLayout Studio プロジェクトは、`%public%\ABBYY\FlexiCapture\12.0\Samples\FLS\Tips and Tricks` にあります。

<div id="derive-the-field-boundaries-from-four-white-gap-elements">
  ## 4 つの White Gap 要素から field の境界を導き出す
</div>

ここでは、画像内の data field の位置を正確に記述するために必要な 4 つの gap (`LeftGapName`、`RightGapName`、`TopGapName`、`BottomGapName`) がすべて見つかっているものとします。

<Frame>
  <img src="https://mintcdn.com/abbyy/fmgRWFNHKYN2MLSg/images/flexi-capture/fls/Combed_Letter_I.gif?s=a186427959c60f5e4d4af4e33b38172a" alt="4 つの White Gap 要素で囲まれた枠付き文字の data field を示す図。左、右、上、下の gap が field の境界を定義しています。" width="279" height="106" data-path="images/flexi-capture/fls/Combed_Letter_I.gif" />
</Frame>

この場合、**Expression** field 内のコードは次のようになります。

```text theme={null}
Rect outputRect;
Let FieldLeft = LeftGapName.Rect.Right;
Let FieldRight = RightGapName.Rect.Left;
Let FieldTop = TopGapName.Rect.Bottom;
Let FieldBottom = BottomGapName.Rect.Top;
outputRect = Rect(FieldLeft, FieldTop, FieldRight, FieldBottom);
OutputRegion = outputRect;
```

<Note>
  `LeftGapName`、`RightGapName`、`TopGapName`、`BottomGapName` の代わりに、対応する **White Gap** 要素の名前を指定してください。必要に応じて、**Inflate** オプションを使用して field の幅と高さを広げることができます。
</Note>

<div id="search-for-individual-lines-in-multiline-framed-fields">
  ## 複数行の枠付き field 内の個々の行を検索する
</div>

文書上で検索対象となる data field が複数行の field で、「枠付き文字」または「個別の枠付き文字」タイプの marking を持ち、各行が gap で区切られていない場合は、**White Gap** 要素を使用して上、下、右、左の境界を検索する必要があります。

その後、各行の検索は **Expression** field で特別なアルゴリズムとして指定する必要があります。この例では、各行の高さは field 全体の高さを 2 で割ることで計算できます。

<Frame>
  <img src="https://mintcdn.com/abbyy/fmgRWFNHKYN2MLSg/images/flexi-capture/fls/Combed_Letter_II.gif?s=79edde6918aa51c08f537614e0e22e0e" alt="各行の高さが、field 全体の高さを行数で割った値に等しい複数行の枠付き文字 field の図。" width="270" height="158" data-path="images/flexi-capture/fls/Combed_Letter_II.gif" />
</Frame>
