Как начать реализацию бегущего текстового алгоритма? - PullRequest
0 голосов
/ 18 октября 2010

У меня есть диалоговая реализация, которая получает текст от пользователя, и я хотел бы отформатировать его в несколько строк визуально приятным способом.Пользователь может включать свои собственные разрывы строк в строку, которую я также хотел бы учитывать.

Кто-нибудь знает о псевдокоде или о чем-то еще общедоступном, я мог бы использовать в качестве справочного материала для кодирования такого алгоритма?*

Ответы [ 2 ]

0 голосов
/ 18 октября 2010

Если вы согласны со случайным переносом слов, то решение тривиально.

Простое сокращение пробела на границе переноса слов легко.

  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)

Если вы хотите использовать неслучайный перенос (то есть неизвестное разрешено, byt unk-own - нет), чем вам нужно сохранить список слов или набор правил с дефисами и изменить вышеописанный алгоритм

, если вы хотите, чтобы он был «одинаково разнесен», чем послеВыше algo вам нужно взять строки меньше, чем line_length, и увеличить пробелы в середине строк.Легко сделать

Если ваш шрифт имеет переменную ширину, вам нужно будет использовать алгоритм в физических единицах измерения, а не в количестве символов.Это также легко сделать.Массив 'width' должен быть сохранен, а проверка line_length должна быть вычислена.

0 голосов
/ 18 октября 2010

Если вы имеете в виду простое перенос слов, я нашел эту публикацию приятным чтением. Если вы говорите о переносе слов, полном оправдании и кернинге ... Я пока что выхожу пустым.

...