Определение правил пробелов в HTML? - PullRequest
8 голосов
/ 15 сентября 2009

Я ищу это определение, чтобы мой HTML рендерер немного лучше соответствовал. В настоящее время он угадывает, какие пробелы оставить, какие свернуть и что выбросить. Стандарт SGML трудно найти, и стандарт HTML, кажется, не рассматривает предмет с необходимой глубиной для моих нужд.

В настоящее время мой рендерер анализирует HTML в дерево, а затем выполняет рекурсивную передачу макета для позиционирования всех элементов и их содержимого. Я экспериментирую с выбрасыванием некоторых пробелов на этапе синтаксического анализа, то есть при определенных обстоятельствах не испускаю только пробельные фрагменты текста. Какой тип работает в большинстве случаев, но есть довольно много крайних случаев, с которыми трудно иметь дело.

(Я также работаю над подклассом редактора HTML-элемента управления, и временные решения макета оказываются в редакторе небольшой проблемой, поэтому я работаю над тем, чтобы перевести их на этап анализа. Информация о макете не доступно до времени перекомпоновки, которое наступает через некоторое время после редактирования документа.)

Огонь прочь со связью / пламенем.

Ответы [ 3 ]

10 голосов
/ 15 сентября 2009

Я думаю, что раздел 9.1 Пробел в спецификации HTML 4 - это то, что вы ищете.

5 голосов
/ 01 ноября 2012

Итак, я думаю, что ближайший ответ на этот вопрос здесь: http://www.w3.org/TR/CSS2/text.html#white-space-model

3 голосов
/ 15 сентября 2009

Если вы пишете свой собственный анализатор HTML, я настоятельно рекомендую вам использовать алгоритм синтаксического анализа в спецификации HTML 5. http://www.whatwg.org/html5 Он охватывает большое количество краевых и угловых случаев и общую странность браузера. Браузеры не следуют правилам SGML, но все они используют либо то, что говорит спецификация HTML 5, либо ее функциональный эквивалент. Есть несколько доступных анализаторов с открытым исходным кодом, которые реализуют алгоритм, поэтому он должен иметь все, что вам нужно.

...