Быстрый ответ
Объем работы, необходимый для надежной реализации этого (с учетом всех возможных сценариев, как и к чему можно применить семейство шрифтов), не стоит более чистого вывода.
Длинный ответ
Во-первых, вам нужно понять, как работает модель редактора .Что это абстрактное представление содержимого расширенного текста (в котором вы не найдете стили, только общие атрибуты), которое позже преобразуется в DOM-подобный вид .
Итак,ответ на вопрос, почему стиль семейства шрифтов не отображался в DOM, несмотря на то, что вы изменили какой-либо атрибут в модели - это потому, что вы не предоставили конвертеры для этого атрибута.По умолчанию плагин шрифтов предоставляет только конвертер для текстового атрибута (да, встроенные стили модели представлены в виде текстовых атрибутов).
Теперь давайте рассмотрим, предоставили ли вы правильные конвертеры,Что теперь?
Пользователь применяет семейство шрифтов ко всему абзацу - поэтому вы изменяете этот атрибут в этом абзаце.Он отображается как <p style=...>
.
Но затем пользователь изменяет семейство шрифтов для части текста в этом абзаце.Если вы не будете что-то делать, вы получите:
<p style="font-family:x">foo <span style="font-family:y">bar</span></p>
И вскоре у вас может появиться это:
<p style="font-family:x"><span style="font-family:y">bar</span></p>
Не более чистый вывод, верно?
Итак, вам нужно наблюдать за всеми изменениями в модели и, в какой-то момент, удалить этот атрибут из абзаца.На самом деле есть даже концепция post-fixers , которую можно использовать для такой работы.Но это становится сложным, не так ли?
Другой вариант - использовать тот факт, что преобразование (между моделью и представлением) в CKEditor 5 является чем-то действительно мощным.Вы должны иметь возможность преобразовать текстовый атрибут модели в (условно):
- атрибут элемента представления, если этот атрибут присутствует во всем содержимом этого элемента;
- или с использованием конвертеров по умолчанию (которые создают
<span>
s для текста).
Где код?Мне лень это писать.И проверить это.Это улучшение, ИМО, не стоит усилий.
РЕДАКТИРОВАТЬ: Извините за тон в последнем предложении, но это то, что я чувствую по поводу настройки таких вещей.Как разработчики, мы склонны быть педантичными, но с точки зрения данных это не имеет большого значения (в данном случае).