ユーザーからテキストの長さを受け取るダイアログの実装があり、視覚的に快適な方法で複数行にフォーマットしたいと考えています。ユーザーは、説明したい独自の改行を文字列に含めることができます。
そのようなアルゴリズムをコーディングするための参照として使用できる疑似コードまたは他の公開されているものを知っている人はいますか?
ユーザーからテキストの長さを受け取るダイアログの実装があり、視覚的に快適な方法で複数行にフォーマットしたいと考えています。ユーザーは、説明したい独自の改行を文字列に含めることができます。
そのようなアルゴリズムをコーディングするための参照として使用できる疑似コードまたは他の公開されているものを知っている人はいますか?
ランダムなハイフネーションで問題がなければ、解決策は簡単です。
ワードラップ境界でスペースをカットするだけで簡単です。
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 チェックが計算されます。
基本的なワードラップを意味する場合は、この投稿を楽しく読むことができました. ハイフネーション、完全な両端揃え、およびカーニングについて話している場合は、今のところ何も説明していません。