Выравнивание по ширине
quittance.ru
документы
прочее
Выравнивание по ширине
   / реализация выравнивания на php

Реализация выравнивания текста по ширине на php

phpJustifier

Биб­лио­те­ка phpJustifier пред­на­зна­че­на для раз­бив­ки на стро­ки и вы­рав­ни­ва­ния по ши­рине тек­ста, на­бран­но­го мо­но­ши­рин­ным шриф­том. Вырав­ни­ва­ние осу­ществ­ля­ет­ся пу­тем до­бав­ле­ния до­пол­ни­тель­ных про­бе­лов к уже име­ю­щим­ся. Под­дер­жи­ва­ют­ся пред­ва­ри­тель­но рас­став­лен­ные мяг­кие пе­ре­но­сы и нераз­рыв­ные про­белы.

Назва­ние:phpJustifyer
Вер­сия:0.0.2
Дата:24.07.2010
Ста­тус:alpha
Автор:Сер­гей Кура­кин
Лицен­зия:LGPL v.3
Опи­са­ние:Биб­лио­те­ка php-функ­ций для раз­бив­ки на стро­ки и вы­рав­ни­ва­ния по ши­рине тек­ста, на­бран­но­го мо­но­ши­рин­ным шриф­том. Вырав­ни­ва­ние осу­ществ­ля­ет­ся пу­тем до­бав­ле­ния до­пол­ни­тель­ных про­бе­лов к уже име­ю­щим­ся. Под­дер­жи­ва­ют­ся пред­ва­ри­тель­но рас­став­лен­ные в тек­сте мяг­кие пе­ре­но­сы и нераз­рыв­ные про­белы.
Download:phpjustifier-0.0.2.tar.gz 

C ра­бо­той phpJustifier мож­но озна­ко­мить­ся в раз­де­ле «Вырав­ни­ва­ние тек­ста по ши­рине».

1 комментарий 24/07/2010

Возможности phpJustifier

Под­держ­ка пред­ва­ри­тель­но рас­став­лен­ных мяг­ких пе­ре­но­сов в ком­мен­та­ри­ях не нуж­да­ется.

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

Реа­ли­зо­ван до­воль­но гиб­кий ал­го­ритм вы­чис­ле­ния мест, ку­да луч­ше до­ба­вить до­пол­ни­тель­ный про­бел для вы­рав­ни­ва­ния строк по ши­рине. В ре­зуль­та­те рас­ши­рен­ные про­бе­лы в ка­кой-то сте­пе­ни со­от­вет­ству­ют кон­тек­сту. Наи­выс­ший при­о­ри­тет име­ют оди­ноч­ные про­бе­лы по­сле кон­ца пред­ло­же­ния; за ни­ми сле­ду­ют оди­ноч­ные про­бе­лы по­сле за­пя­той, двое­то­чия, точ­ки с за­пя­той. Сле­ду­ю­щий при­о­ри­тет име­ют оди­ноч­ные про­бе­лы по­сле длин­ных слов, по­сле сред­них слов, по­сле ко­рот­ких слов… Если по­сле это­го ре­зуль­тат не до­стиг­нут, то есть дли­на стро­ки всё еще мень­ше тре­бу­е­мой, то весь цикл по­вто­ря­ет­ся для двой­ных про­бе­лов, за­тем  для нераз­рыв­ных про­бе­лов, за­тем  для трой­ных про­бе­лов… И толь­ко в по­след­нюю оче­редь про­бе­лы бу­дут до­бав­ле­ны в лю­бые про­ме­жут­ки меж­ду сло­ва­ми неза­ви­си­мо от кон­тек­ста.

Для пра­виль­ной ра­бо­ты опи­сан­но­го ал­го­рит­ма с од­но­байт­ны­ми ко­ди­ров­ка­ми необ­хо­ди­мо уста­но­вить со­от­вет­ству­ю­щую ло­каль. При ра­бо­те в ко­ди­ров­ке UTF-8 ло­каль не ока­зы­ва­ет вли­я­ния на ре­зуль­тат.

Реа­ли­зо­ва­на под­держ­ка Unicode, точ­нее  ко­ди­ров­ки UTF-8. Для вклю­че­ния под­держ­ки ко­ди­ров­ки UTF-8 необ­хо­ди­мо пе­ре­дать флаг JST_UNICODE. Кро­ме то­го, для ра­бо­ты с тек­стом в ко­ди­ров­ке UTF-8 по­тре­бу­ет­ся рас­ши­ре­ние mbstring, ко­то­рое, впро­чем, яв­ля­ет­ся стан­дарт­ным для php5. Дру­гие муль­ти­байт­ные ко­ди­ров­ки не под­дер­жи­ва­ются.

Реа­ли­зо­ва­на «ви­ся­чая пунк­ту­а­ция» (флаг JST_ONHANG). Этот жар­гон­ный тер­мин обо­зна­ча­ет пол­ный или ча­стич­ный вы­нос «лег­ких» зна­ков пре­пи­на­ния за гра­ни­цы по­ло­сы на­бо­ра, с це­лью до­бить­ся ви­зу­аль­но бо­лее ров­ных кра­ев тек­сто­во­го бло­ка. В на­бо­ре мо­но­ши­рин­ным шриф­том ви­ся­чая пунк­ту­а­ция вы­гля­дит несколь­ко гру­бо и за­ча­стую не оправ­ды­ва­ет сво­е­го пря­мо­го пред­на­зна­че­ния, но тем не ме­нее мо­жет пред­став­лять ин­те­рес. За пра­вую гра­ни­цу по­ло­сы на­бо­ра вы­но­сят­ся точ­ка, за­пя­тая, за­кры­ва­ю­щие ка­выч­ки и скоб­ки, двое­то­чие, точ­ка с за­пя­той и оди­ноч­ные де­фи­сы, вклю­чая де­фи­сы пе­ре­но­сов слов.

комментировать 24/07/2010

Функции phpJustifier

string justfy( string $str [, string $str [, int $width = 72 [, int $indent = 0
[, int $interval = 1 [, int $options = 0 ]]]]] )
Раз­би­ва­ет на стро­ки и вы­рав­ни­ва­ет по ши­рине текст с под­держ­кой пред­ва­ри­тель­но рас­став­лен­ных мяг­ких пе­ре­но­сов и нераз­рыв­ных про­бе­лов.

воз­вра­ща­ет текст, раз­би­тый на стро­ки оди­на­ко­вой ши­рины
$str ис­ход­ный текст
$width ши­ри­на на­бора
$indent аб­зац­ный от­ступ  ко­ли­че­ство про­бе­лов, до­бав­ля­е­мых в на­ча­ло каж­до­го аб­заца
$interval аб­зац­ный ин­тер­вал  ко­ли­че­ство пу­стых строк, до­бав­ля­е­мых меж­ду аб­за­цами
$options на­бор фла­гов, опре­де­ля­ю­щих до­пол­ни­тель­ные воз­мож­но­сти

Пара­метр $options дол­жен со­сто­ять из ком­би­на­ции сле­ду­ю­щих фла­гов:

JST_TYPESETTER при­ве­сти сим­во­лы пунк­ту­а­ции и дру­гие спе­ци­аль­ные сим­во­лы к ба­зо­во­му на­бо­ру ASCII
JST_NOENTITIES не пре­об­ра­зо­вы­вать html сущ­но­сти (англ. entities); по умол­ча­нию html сущ­но­сти пре­об­ра­зо­вы­ва­ют­ся в со­от­вет­ству­ю­щие сим­волы
JST_ONHANG «ви­ся­чая пунк­ту­а­ция»  неко­то­рые «лег­кие» зна­ки пунк­ту­а­ции вы­хо­дят за пра­вую гра­ни­цу по­ло­сы на­бора
JST_DOSLINEBREAKS пе­ре­во­ды строк на вы­хо­де в сти­ле DOS; по умол­ча­нию: в сти­ле UNIX
JST_MACLINEBREAKS пе­ре­во­ды строк на вы­хо­де в сти­ле MacOS; по умол­ча­нию: в сти­ле UNIX
JST_UNICODE вход­ной и вы­ход­ной текст в ко­ди­ров­ке UTF-8 


При­ме­ча­ния:

1. Стиль пе­ре­во­дов строк на вхо­де зна­че­ния не имеет.

2. Пол­но­стью под­дер­жи­ва­ют­ся толь­ко те од­но­байт­ные ко­ди­ров­ки, в ко­то­рых сим­вол мяг­ко­го пе­ре­но­са на­хо­дит­ся на по­зи­ции xAD, а сим­вол нераз­рыв­но­го про­бе­ла  на по­зи­ции xA0. В от­но­ше­нии рус­ско­го язы­ка это озна­ча­ет без­услов­ную под­держ­ку од­но­байт­ных ко­ди­ро­вок CP1251 и ISO-8859–5.

3. Кро­ме ос­нов­ной функ­ции justify(), биб­лио­те­ка со­дер­жит еще од­ну поль­зо­ва­тель­скую функ­цию typesetterize(), ко­то­рую мож­но ис­поль­зо­вать от­дель­но для при­ве­де­ния сим­во­лов пунк­ту­а­ции и дру­гих спе­ци­аль­ных сим­во­лов к ба­зо­во­му на­бору ASCII.

комментировать 24/07/2010

Файлы phpJustifyer

justifier.php поль­зо­ва­тель­ские функ­ции phpJustifier 
sk_lib_i.php слу­жеб­ные функ­ции, ис­поль­зу­е­мые в phpJustifier 
README.ru до­ку­мен­та­ция на рус­ском языке
комментировать 24/07/2010

ChangeLog

phpJustifier 0.0.2 (24.07.2010)

  • Мало­зна­чи­тель­ные ис­прав­ле­ния

phpJustifier 0.0.1 (01.09.2009)

  • Пер­вая опуб­ли­ко­ван­ная вер­сия
1 комментарий 24/07/2010
Copyright 2009–2010 Sergey Kurakin