Преобразование новой строки в пространство имеет смысл для английского языка, например, следующий HTML
<p>
This is
a sentence.
</p>
Мы получаем следующее после преобразования новой строки в пространство в браузере:
This is a sentence.
Это хорошо для английского, но не подходит для китайских иероглифов, потому что мы не используем пробелы для разделения слов на китайском языке. Вот пример (китайское предложение имеет то же значение "Это предложение" ):
<p>
这是
一句话。
</p>
Я получаю следующий результат в Chrome, Safari и IE
这是 一句话。
Мне нужно следующее, без лишнего места.
这是一句话。
Я не знаю , почему браузер не игнорирует новую строку, если последний символ текущей строки и первый символ следующей строки - это и китайские символы (что, я думаю, имеет смысл). Или они предоставили этот механизм, но нуждаются в особой обработке?
BTW, в Vim, при использовании "J" для объединения строк не будет добавлено места, если последний и первый символ двух строк - все китайские символы. Но для английского языка будет добавлено пространство. Поэтому я думаю, что Vim делает для этого специальную обработку.
Update:
Хотя я думаю, что это проблема с браузером, я должен жить с этим. Поэтому в настоящее время я должен предварительно обработать текст Markdown, чтобы присоединиться к китайским линиям, прежде чем генерировать HTML. Здесь, как я это делаю в Ruby, полный код, который также обрабатывает китайские пунктуации, находится на gist
#encoding: UTF-8
# Requires ruby 1.9.x, and assume using UTF-8 encoding
class String
# The regular expression trick to match CJK characters comes from
# http://stackoverflow.com/a/4681577/306935
def join_chinese
gsub(/(\p{Han})\n(\p{Han})/m, '\1\2')
end
end