Bram Stein ( http://www.bramstein.com - blstein@gmail.com )
Гэта ажыццяўленне Пуга і Пласс лініі парушэнне алгарытму выкарыстанні JavaScript і палатно элемент HTML5. Мэта дадзенай рэалізацыі з'яўляецца аптымальнай налады выраўноўванне тэксту ў новы элемент палатно HTML5, і ў канчатковым выніку забяспечыць бібліятэкі для розных парыву ліній алгарытмаў у JavaScript.
Пункта ніжэй усталёўваецца з дапамогай рэалізацыі JavaScript класічнага Пуга і Пласс алгарытм, выкарыстоўваны ў T E X. Нумары на права кожнай лініі расцяжэння ці скарачэнні стаўленне ў параўнанні з аптымальнай шырыні лініі. У гэтым прыкладзе выкарыстоўваецца па змаўчанні прастора 1 / 3 іх, з расцяжымасць і термоусадочную здольнасць 1 / 6 іх і 1 / 9 ет адпаведна.
Наступны пункт усталяваны ў вашым браўзары выкарыстаннем text-align: justify. Звернеце ўвагу на лініі ў пункце набор у вашым браўзары, у сярэднім, больш паміж словам адлегласць, чым палатно версія, якая паспяхова на звестку да мінімуму паміж словам адлегласці па ўсіх лініях.
Ваш браўзар таксама сканчаецца дзесяць радкоў замест дзевяці ліній знойдзены Пуга і Пласс лініі парушэнне алгарытму. Гэта параўнанне можа быць не цалкам справядлівым, бо мы не ведаем, па змаўчанні прастора паміж слова выкарыстоўваецца браўзар (ні яго расцяжэнне і скарачэнне параметраў.) Эксперыментальныя вынікі паказваюць, аднак значэнні, якія выкарыстоўваюцца ў большасці браўзараў, або ідэнтычныя ці вельмі падобныя. У наступнай частцы тлумачыцца, як стаўленне значэння для вашага браўзара былі разлічаны.
Нажаль, не API для атрымання пазіцыі радкоў браўзара ўставіць, так што нам прыйдзецца звярнуцца да некаторых зману. Па пакаванні кожнага слова ў нябачнай <span> элемент і атрыманні яго y пазіцыі мы можам пазнаць, калі пачынаецца новы радок. Калі y пазіцыі бягучага слова адрозніваецца ад папярэдняга слова мы ведаем новай лініі пачалася. Такім чынам, абзац разбіваецца на некалькі асобных ліній.
Адносіны, затым разлічваецца шляхам вымярэння розніцы паміж шырыня кожнай лініі, калі text-align усталяваны ў justify, і калі ён усталяваны на left. Гэта розніца падзяляецца на колькасць расцяжымасць лініі, г.зн. колькасць месцаў памнажаецца на ўчастку шырыня прасторы. Хоць мы не ведаем фактычныя расцяжымасць мы можам выкарыстоўваць 1 / 6 іх, гэтак жа, як і Пласс алгарытм Пугі, калі толькі выкарыстоўваць яго для параўнання.
Наступны пункт усталёўваецца ў адпаведнасці з парывамі радкоў знойдзены Пуга і Пласс алгарытм, але замест таго каб выкарыстоўваць элемент HTML5 Canvas ён апыняецца ў вашым браўзары. Рэгулюючы CSS word-spacing уласнасці мы дамагліся таго ж пункта, як у прыкладзе Canvas.
Лініі парушэнне алгарытму з'яўляецца не толькі здольная апраўдаць тэкст, ён можа выконваць усе выгляды ўзгаднення з адпаведным выбарам скрынкі, клей і штрафаў. Акрамя таго, можна даць яму рознай шырыні ліній у струмені тэксту вакол ілюстрацыі, адступаў ці двукоссі. Акрамя таго, рознай шырыні лініі можа быць скарыстана для стварэння цікавых тэкст формы, як паказана ніжэй.
У наступным прыкладзе ўсталёўваецца выраўноўванні па правым. Ірваныя права не проста апраўданы тэксту з фіксаванай адлегласцю шырыня паміж словам. Замест таго, алгарытм спрабуе звесці да мінімуму колькасць белай прасторы ў канцы кожнай прапановы на ўвесь пункт. Яна таксама спрабуе паменшыць колькасць слоў, якія з'яўляюцца "прыліпанні" з краю. Гэта вельмі прыкметна, што тут пераносы могуць палепшыць выраўноўванні па правым усталёўка значна, напрыклад, Перанос слова "ліпа".
Ірваныя злева тэкст можа быць дасягнуты пры выкарыстанні выраўноўвання па правым краі тэксту і прывядзенні яго канчатка адпаведнасці з левага краю. У прыведзеным ніжэй прыкладзе ўсталёўваецца па цэнтры. Ізноў жа гэта не проста цэнтраванне апраўдана тэкст, але замест спробы мінімізацыі даўжыні лініі на цэлы абзац.
Змяняючы шырыню лініі для пункта можна струменя тэксту вакол ілюстрацыі, адступаў, цытаты і такія. У прыведзеным ніжэй прыкладзе лісця шчыліны для ілюстрацыі, усталяваўшы шырыні ліній часова кароткія, а затым вяртаецца.
Гэта таксама можна зрабіць некалькі непрямоугольной формы, як паказана на прыкладзе ніжэй. Гэты тэкст з дапамогай каманды павелічэння шырыні лініі і цэнтрам узгаднення кожнай лініі. Тут таксама становіцца відавочным, што пераносы неабходны, каб пазбегнуць вялікіх прастор паміж слова ў другой і трэцяй ліній.
Ніжэй прыведзены некаторыя пашырэнні алгарытму абмяркоўваецца ў арыгінальным артыкуле, якую я мае намер ажыццяўляць (у некаторай кропцы.)
Некаторыя людзі аддаюць перавагу мець правага краю іх тэкст паглядзець "цвёрдых", усталяваўшы перыяды, коскі і іншыя знакі прыпынку (уключаючы ўкаранёныя злучок) у поле справа. Напрыклад, такая практыка часам выкарыстоўваецца ў сучаснай рэкламе. Лёгка ўстаўляюцца злучкі ў поле: Мы проста хай шырыня адпаведны пункт карай смерцю быць роўная нулю. І гэта амаль гэтак жа лёгка зрабіць тое ж самае для перыядаў і іншых знакаў, мяркуючы кожны такі знак у акне шырынёй нуля і даданне фактычная шырыня знака клей, які наступным чынам. Калі не адбываецца перапыненне на гэты клей, назапашаных шырыня такая ж, як раней, а калі парыў адбываецца, лінія будзе апраўдана, калі тэрмін ці іншы знак не было.
text-justify CSS уласнасці. Гэтыя рэсурсы апынуліся для мяне найболей карысным пры рэалізацыі алгарытму парыву ліній.