0

ユーザーからテキストの長さを受け取るダイアログの実装があり、視覚的に快適な方法で複数行にフォーマットしたいと考えています。ユーザーは、説明したい独自の改行を文字列に含めることができます。

そのようなアルゴリズムをコーディングするための参照として使用できる疑似コードまたは他の公開されているものを知っている人はいますか?

4

2 に答える 2

0

ランダムなハイフネーションで問題がなければ、解決策は簡単です。

ワードラップ境界でスペースをカットするだけで簡単です。

  wordwrap(line_length, input_string, output_string_list):
      offset = backward_search_for_space( input_string + line_length )
      if offset is zero ## a word taking more than a line !!
          offset = forward_search(input_string )
      append  line_length[0:offset] to ouptput_string_list
      if input_string is not null
          wordwrap( line_length, input_string + offset, string_list)

ランダムでないハイフネーションが必要な場合 (つまり、un-known は許可されますが、byt unk-own は許可されません)、ハイフンで区切られた単語リストまたは一連のルールを保持し、上記のアルゴリズムを変更する必要があります

「等間隔」が必要な場合は、上記のアルゴの後よりも、line_length 未満の行を取得する必要があり、行の途中でスペースを増やします。やりやすい

フォントが可変幅の場合、アルゴを文字数ではなく物理測定単位で実装する必要があります。やり方も簡単です。「幅」配列が維持され、line_length チェックが計算されます。

于 2010-10-18T09:22:09.540 に答える
0

基本的なワードラップを意味する場合は、この投稿を楽しく読むことができました. ハイフネーション、完全な両端揃え、およびカーニングについて話している場合は、今のところ何も説明していません。

于 2010-10-18T05:40:20.350 に答える