Формат world что это
Формат world что это
Microsoft Word (часто — MS Word, WinWord или просто Word) — это текстовый редактор, предназначенный для создания, просмотра и редактирования текстовых документов, с локальным применением простейших форм таблично-матричных алгоритмов. Текстовый процессор, выпускается в составе пакета Microsoft Office. Первая версия была написана Ричардом Броди (Richard Brodie) для IBM PC, использующих 1983 году. Позднее выпускались версии для (1984), SCO UNIX и Microsoft Windows (1989).
Содержание
Начало
Microsoft Word многим обязан Bravo — текстовому процессору с оригинальным графическим интерфейсом, разработанному в исследовательском центре «Xerox PARC». Создатель Bravo, Чарльз Симони (Charles Simonyi) покинул PARC в 1981 году. Тем же летом Симони переманил Броди, с которым вместе работал над Bravo.
Первый выпуск Word для MS-DOS состоялся в конце 1983 года. Он был плохо принят рынком, продажи снижало наличие конкурирующего продукта — WordPerfect.
Microsoft Word (Mac OS X) | |
Тип | Текстовый процессор |
Разработчик | Майкрософт |
ОС | Mac OS X |
Версия | 12.1.1 сборка 080522 (2008) — 14 мая 2008 |
Лицензия | Собственническое |
Сайт | Microsoft Word 2008 for Mac |
Однако версия для Макинтоша, выпущенная в 1985 году, получила широкое распространение. Через два года «Word 3.01 для Macintosh» усилил позиции (версия 3.0 изобиловала ошибками и быстро была заменена). Как и прочее программное обеспечение для Макинтоша, Word был полностью
Хотя MS-DOS и являлась текстовой операционной системой, лишённой графической оболочки, Word для DOS был первым текстовым процессором для IBM PC, который был способен отображать разметку текста, например, полужирный или курсивный текст в процессе редактирования. Однако он всё же не являлся в полном смысле WYSIWYG-редактором. Другие же текстовые процессоры, такие как WordStar и WordPerfect, использовали простой текстовый экран с кодами разметки, иногда текст был цветным.
Однако, поскольку в большинстве программного обеспечения под DOS применялись собственные труднозапоминаемые комбинации «горячих клавиш» для каждой команды (например, в Word’е для DOS сохранение файла выполнялось по комбинации ESC-T-S) и большинство секретарей умели пользоваться только WordPerfect, компании весьма неохотно переходили на конкурирующие с ним продукты, имеющие сравнительно небольшие преимущества.
1990—1995 годы
Первая версия Word для Windows, выпущенная в 1989 году, продавалась по цене 500 долларов США. Она демонстрировала выбранный компанией Майкрософт путь развития: как и сама Windows, она многое взяла от Macintosh, и использовала стандартные клавиатурные сокращения (например, CTRL-S для сохранения файла). После выпуска в следующем году Windows 3.0 продажи поползли вверх (Word 1.0 гораздо лучше работал с Windows 3.0, чем с более старыми версиями Windows/386 и Windows/286), главный конкурент — WordPerfect — не смог выпустить рабочую версию под Windows, что оказалось для него смертельной ошибкой. Версия 2.0 утвердила WinWord на позиции лидера рынка.
У Word для Macintosh никогда не было серьёзных конкурентов, даже несмотря на наличие программ вроде Nisus, предоставлявшую возможность выделения нескольких несвязных кусков текста (появившуюся только в Word 2002 из Office XP) и несмотря на мнение многих пользователей об отсутствии кардинальных различий между версиями 3.01, выпущенной в 1987 году и версией 5.0, выпущенной в 1991. Однако, версия 6.0 для Macintosh, вышедшая в 1994 году, была многими воспринята довольно скептически. Это была первая версия без значительных отличий в коде ядра между версиями под Windows и под Mac. Версия под Windows, следовавшая за 2.0, была пронумерована как 6.0 для координации названия версий под разные платформы.
Последовавшие версии добавляли возможности, выходящие за рамки простого текстового процессора. Инструменты рисования позволяли выполнять примитивные операции вёрстки, такие как добавление графики в документ, хотя, естественно, специализированные программы для вёрстки лучше справляются с этими задачами. Внедрение объектов, сравнение версий документа, мультиязычная поддержка и многие другие возможности были добавлены за последовавшие несколько лет.
Настоящее время
Microsoft Word является наиболее популярным из используемых в данный момент текстовых процессоров, что сделало его бинарный формат документа стандартом де-факто, и многие конкурирующие программы имеют поддержку совместимости с данным форматом. Расширение «.doc» на платформе IBM PC стало синонимом двоичного формата Word 97—2000. Фильтры экспорта и импорта в данный формат присутствуют в большинстве текстовых процессоров.Формат документа разных версий Word меняется, различия бывают довольно тонкими. Форматирование, нормально выглядящее в последней версии, может не отображаться в старых версиях программы, однако есть ограниченная возможность сохранения документа с потерей части форматирования для открытия в старых версиях продукта. Последняя версия MS Word 2007 «использует по умолчанию» формат основанный на Microsoft Office Open XML. Спецификация форматов файлов Word 97-2007 были опубликован Microsoft в 2008 году. [1] [2] Ранее, большая часть информации, нужной для работы с данным форматом, добывалась посредством обратного инжиниринга, поскольку основная её часть отсутствовала в открытом доступе или была доступна лишь ограниченному числу партнеров и контролирующих организаций.
Как и прочие приложения из Microsoft Office, Word может расширять свои возможности посредством использования встроенного макроязыка (сначала использовался WordBasic, с версии Word 97 применяется VBA — Visual Basic для приложений). Однако это предоставляет широкие возможности для написания встраиваемых в документы вирусов (так называемые «макровирусы»). Наиболее ярким примером была эпидемия червя Melissa. В связи с этим, многие считают разумной рекомендацию всегда выставлять наивысший уровень настроек безопасности при использовании Word (Меню: «Tools>Macro>Security», «Сервис>Макрос>Безопасность…» в локализованных русских версиях). Также нелишним будет использовать антивирусное программное обеспечение. Первым вирусом, заражавшим документы Microsoft Word, был DMV, созданный в декабре 1994 года Дж. МакНамарой для демонстрации возможности создания макровирусов. Первым же вирусом, попавшим в «дикую природу» и вызвавшим первую в мире эпидемию макровирусов (это произошло в июле-августе 1995 г.), был Concept.
История версий
Версии для SCO UNIX:
Недокументированные возможности и курьёзы
Следующие функции вводятся в любом месте документа с начала строки. Замена их на определённый текст осуществляется при нажатии клавиши Enter.
Функция rand()
В редакторе версии младше 2007 строка с командой будет заменена матрицей из панграмм:
Параметр x задаёт количество столбцов матрицы, y — количество строк. Параметры можно не указывать.
В редакторе Word 2007 строка с данной функцией будет заменена на отрывок из текста справки, параметр x задаёт количество абзацев, y — количество предложений в каждом абзаце.
Функция lorem()
В редакторе Word 2007 строка с данной функцией будет заменена на отрывок из текста Lorem ipsum.
Курьёзные ошибки в модуле проверки русской орфографии
Примечания
Ссылки
Литература
Microsoft Office
Полезное
Смотреть что такое «Word» в других словарях:
Word — Word, n. [AS. word; akin to OFries. & OS. word, D. woord, G. wort, Icel. or[eth], Sw. & Dan. ord, Goth. wa[ u]rd, OPruss. wirds, Lith. vardas a name, L. verbum a word; or perhaps to Gr. rh twr an orator. Cf.
Word Up! — «Word Up!» Сингл Cameo из альбома Word Up! Выпущен … Википедия
word — ► NOUN 1) a single distinct meaningful element of speech or writing, used to form sentences with others. 2) a remark or statement. 3) (a word) even the smallest amount of something spoken or written: don t believe a word. 4) (words) angry talk.… … English terms dictionary
WORD — WORD, in the Bible, primarily renders the Hebrew davar, but also omer (pl. amarim), imrah, and peh (lit. mouth ). The word of the Lord, an oft–recurring scriptural phrase, signifies a divine communication to man that reveals God s character or… … Encyclopedia of Judaism
word — O.E. word speech, talk, utterance, word, from P.Gmc. *wurdan (Cf. O.S., O.Fris. word, Du. woord, O.H.G., Ger. wort, O.N. orð, Goth. waurd), from PIE *were speak, say (see VERB (Cf. verb)). The meaning promise was in O.E., as … Etymology dictionary
Word — (zumeist von engl. word „Wort“) steht für eine Textverarbeitungssoftware von Microsoft, siehe Microsoft Word ein Datenwort, die Grundverarbeitungsdatengröße bei einem Computer die Bekräftigung oder Zustimmung (zu) einer vorangegangenen Aussage,… … Deutsch Wikipedia
word — [n1] discussion chat, chitchat*, colloquy, confab*, confabulation, consultation, conversation, discussion, talk, tête è tête; concept 56 Ant. silence word [n2] statement account, adage, advice, announcement, bulletin, byword, comment,… … New thesaurus
Word Up — may refer to:*Word Up!, a 1986 R B album by Cameo **Word Up!, a song on the above album, also covered by Gun, Melanie B and Korn *Word Up!, a slang phrase, usually an exclamation or interjection *Word Up, computer pub game, popular in the UK… … Wikipedia
Word — Word, v. t. [imp. & p. p.
Word — Saltar a navegación, búsqueda Word, palabra inglesa que significa precisamente palabra, puede referirse a: El programa de edición de textos Microsoft Word. Palabra (computación). Obtenido de Word Categoría: Wikipedia:Desambiguación … Wikipedia Español
Формат docx что это такое, формат doc? Чем открыть эти файлы
Формат docx что это такое? В статье рассмотрим вопрос. Кроме того, будут показаны отличия форматов docx и doc. Также мы покажем, как открывать данные форматы на компьютере и на других устройствах.
Формат docx что это такое? Формат doc — в чем разница, история
Здравствуйте, друзья! Начинающие пользователи программы Ворд иногда задают вопрос, что такое Docx или Doc. Сегодня мы поговорим об этих форматах подробно.
Итак, формат docx что это такое? Это файловый формат документа, предназначенный для хранения, создания и обработки текстов в Ворде. Он входит в линейку форматов Office Open XML (расширяемый язык разметки). Данный документ был создан компанией Майкрософт Офис Ворд в 2008 году, на базе офисного пакета Ворд 2007. Этот формат может сохранять в себе стили разных документов, форматирование, картинки, видео, ссылки, объекты документа и другие данные (скрин 1).
Что такое формат Doc? Это расширение, которое обозначает текстовый файл документа Ворд. То есть, формат для хранения текстовых документов, как и docx. Формат был создан в 1985 году, и постоянно обновлялся до 2007 года Данный формат документов так же используется в текстовом редакторе Word.
В чем разница между Docx и Doc форматами? Первое отличие формата docx от doc – это работа с версиями Ворда. То есть, документ в формате docx используются в программе Ворд 2007 и более новыми. Формат doc работает с более старыми версиями программы Ворд.
Второе отличие форматов – сжатие. Файл документа Docx использует сжатие данных. Он позволяет сжимать документы без потери качества в килобайтах. В то время, как формат doc этого сделать не сможет.
Последнее отличие – несовместимость форматов. К примеру, формат doc не совместим со многими программами. А формат docx отлично работает на компьютере и других устройствах.
Если у вас возникла проблема с открытием форматов docx или doc, далее в статье мы разберем, как их можно открыть.
Формат docx чем открыть (doc) на компьютере
Итак, чтобы открыть формат docx на компьютере, нужны соответствующие программы. В этом вам помогут текстовые редакторы:
Рассмотрим открытие документов в формате docx или doc с помощью программы Word 2007. Для начала вам нужно скачать и установить подходящую версию программы Ворд на компьютер, чтобы открыть данные форматы. Затем, нажмите по документу правой кнопкой мыши, далее кнопку «Открыть» (скрин 2).
Чтобы открыть doc формат, также используйте текстовые редакторы.
Кроме того, можете воспользоваться статьей на блоге: «как открыть файлы, если не знаете их расширения». Статья поможет вам узнать расширения файлов и открыть на компьютере файлы.
Чем открыть формат doc (docx) на айфоне
На айфон нужно установить приложение, которое будет открывать форматы doc и docx. Одно из приложений — это Office reader. Скачать на айфон его можете с магазина АппСторе.
Нужно найти приложение через поиск и нажать «Установить». Когда программа будет установлена, запустите ее на айфоне. Затем, найдите в программе документы с форматами doc или docx (скрин 3).
Кликните по найденным форматам, и документ откроется для просмотра.
Вместе с тем, можно установить другие приложения на айфон:
Перечисленные программы работают без проблем, пользоваться ими можно бесплатно.
Чем открыть формат doc (docx) на Андроид
Вы можете открыть формат doc или docx на Андроид. Для этого скачайте и установите специальные приложения с Плей Маркета:
Запустите одно из приложений и просто перенести документ в формате doc (docx).
Чем открыть файлы doc (docx) в онлайн
В Интернете есть специальные сервисы, которые открывают документы форматов doc или docx. Перечислим популярные ресурсы:
Разберем, как открыть doc формат в сервисе «onlinedocumentviewer.com/Welcome/». Сначала откройте сервис в браузере. Далее нажмите кнопку «UPLOAD File» (скрин 4).
После чего кликните по кнопке «Обзор», чтобы выбрать и загрузить документ doc с компьютера (скрин 5).
На других сервисах, документы в формате doc и docx, открываются по похожему принципу.
Используем возможности Windows – программа WordPad
Вы можете воспользоваться возможностями Windows, например, программой Вордпад, чтобы открыть документ в формате docx (doc). В статье, аналог Word, рассказывается, как работать с WordPad. Программа открывает документы так же, как Майкрософт Офис Ворд. Кроме этих программ, есть и другие утилиты, которые открывают документы docx.
Проблемы с расширениями docx и doc, как их решить
Во время работы с документами docx возникают проблемы с отображением документа, например, часть текста, невозможно прочитать. Что в этом случае сделать? Вы можете конвертировать данный документ в другие форматы, используя в Интернете сервисы-конвертеры.
Кроме этого, можно восстановить документ. Откройте Ворд 2010 и выше на компьютере. Нажмите вверху кнопку «Файл» далее «Открыть». Затем загрузите поврежденный документ с компьютера и кликните кнопку «Открыть и восстановить». Если этот способ вам не помог восстановить документ, можно использовать инструкцию от компании Майкрософт – «docs.microsoft.com/ru-ru/office/troubleshoot/word/damaged-documents-in-word». В ней предложены другие варианты решения этой проблемы.
Заключение
В статье рассмотрели вопрос, формат docx что это такое, как его открывать на различных устройствах. С помощью этого формата вы сможете работать с текстами и не только. Ведь данный формат является современным и используется многими пользователями программы Ворд.
Внутренности вордовских файлов: просто ужас
О сложности и жуткости вордовских файлов давно ходили легенды. Известно было, что формат этот крайне запутанный, а к тому же еще и полностью засекреченный, так что о половине тамошних полей можно было только догадываться.
Не скрою, что и меня эти файлы интересовали, но дальше первой страницы описания я так продвинуться и не смог. Однако незакрытый гештальт остался.
А теперь вот жизнь заставила (или подкинула возможность) все-таки разобраться во внутренностях всем хорошо известных документов, тем более, что в Штирлица теперь играть не обязательно, достаточно скачать с сайта «Майкрософта» официальные спецификации.
Что тут можно сказать? Невольно вспоминается старый пошлый анекдот: ну ужас. Ну просто ужас, но ведь не ужас-ужас-ужас.
Слава богу, что я разбирал эти файлы на Перле, а не на каком-нибудь автокоде Си. Высокий уровень языка и куча готовых библиотек (например, для чтения разных кодовых страниц) — это дар божий.
Так что работа в совокупности заняла неделю, и самым сложным было понять внутренний формат. Конечно, понимание это не совсем полное, потому что моей задачей было вытащить из документа одни тексты без всякого форматирования, но уж это я сделал тщательно.
Итак, как же устроены вордовские файлы?
Контейнер
Начнем с того, что это совсем не вордовские файлы, а некий универсальный контейнер, в который упакованы собственно документы. В такой контейнер засунуты все файлы Офиса, а, может быть, и еще что-нибудь.
Формат контейнера называется по-разному — docfile, ole storage, compound document file. Уже сам разнобой в названиях намекает на то, что он не сильно-то и нужен, поскольку действительно полезная вещь обычно имеет одно и четкое название. Основная его идея — иметь возможность запихать в один файл несколько других. Самым разумным было бы (как и сделали в OpenOffice) упаковать все в архив ZIP (можно без архивации, если она не нужна). Формат известен огромному множеству программ, компактен, легко разбирается. Но в «Майкрософте», очевидно, процветает синдром «Not invented here». Главное — изобрести велосипед, пусть и трехколесный, но собственный.
В принципе, формат OLE Storage достаточно разумен и не производит впечатление чего-то совсем идиотского. Но… он совершенно не нужен. Фактически, это что-то типа файловой системы FAT16, засунутой внутрь отдельного файла. Это не то что стрельба из пушки по воробьям, а истребление этих самых воробьев ядерными торпедами. В документе, внутри которого лежит несколько файлов, не нужна файловая система, находящаяся не менее чем на уровне ФС времен ДОС.
Итак, файлы CDF (как их называет юниксовская утилитка file) начинаются с заголовка. В заголовке отведено место под первую сотню записей ТРФ (таблицы размещения файлов, в просторечии — ФАТ). ФАТ там самый натуральный, очень похож на то, что можно найти на досовских дискетках. Остальные записи ТРФ лежат в отдельных секторах, соединенных связанным списком. Дополнительные сектора бывают только в больших (>7мб) файлах.
По табличке ФАТ/ТРФ можно собрать содержимое любого внутреннего файла (в терминологии МС он называется потоком, но это только запутывает дело), если знать, с какого блока он начинается. Начальные блоки разных структур написаны, естественно, в заголовке. Дальше из таблицы можно вытянуть всю цепочку секторов, в котором записано содержимое этого псевдофайла.
В частности, у CDF есть корневой каталог, физически размазанный по куче секторов. Это самый настоящий каталог, опять-таки, очень напоминающий старый досовский. Правда, для эффективности (или для выпендрежа) он выполнен не просто линейным списком, а сбалансированным двоичным деревом. Это значит, что в него без потери эффективности поиска можно записывать десятки тысяч отдельных записей. Зачем это нужно в файле, в котором записей бывает обычно штук пять, ну иногда, двадцать, ну максимум сто штук (презентация с огромным количество картинок) — знают только в Редмонде. Кстати, имена файлов в каталоге хранятся в UTF16 — тоже на всякий случай.
По каталогу можно определить начальный сектор любого файла и с помощью ТРФ вытянуть всю его цепочку размещения.
Поскольку размер блока немаленький (обычно 512 байт, по спецификации возможно также 4096), то при хранении мелких псевдофайлов, теоретически можно потерять много свободного места. Поэтому существует отдельное хранилище, поделенное на блочки по 64 байта. Хранилище опять-таки вытягивается по цепочке ФАТ.
Чтобы указать, какие блочки какому файлу принадлежат, существует отдельная табличка ФАТ или, вернее сказать, миниФАТ.
Итак, чтобы добраться до вордовского документа, надо сделать следующее:
1. Прочитать заголовок CDF
2. Загрузить в память ФАТ — таблицу размещения файлов, собрав ее по цепочке секторов.
3. Загрузить табличку МиниФАТ, собрав ее по цепочке ТРФ
4. Загрузить хранилище блочков, собрав ее по цепочке ТРФ
5. Загрузить корневой каталог, собрав ее по цепочке ТРФ
6. Разобрать каталог и преобразовать его во что-то читаемое
7. Найти в каталоге запись WordDocument
8. Если это маленький файл, то собрать его с помощью миниТРФ из хранилища для блочков.
9. Если большой, то вытянуть с диска сектора по цепочке ТРФ.
Каждый шаг сам по себе не особенно сложен, но в совокупности они вызывают исключительно недоумение. Зачем такие сложности? Почему нельзя было разместить после заголовка обыкновенный линейный каталог, а после него непрерывно, друг за другом записывать внутренние файлы?
Единственное, что можно предположить — все это сделано для того, чтобы была возможность дописывать подфайлы, не трогая начало основного файла. Надо заметить, что, во-первых, это не сильно востребованная операция, поскольку все программы обычно записывают документы от начала до конца в один проход. Исключение составляет только MS Word и то только в пресловутом режиме быстрого сохранения, проклятом пользователями. А во-вторых, даже в этих условиях все равно не получится не трогать начало основного файла, поскольку надо обновлять каталоги, ТРФ и заголовки.
В общем, «Майкрософт» в своем амплуа. Зачем делать просто, если можно сложно и запутанно?
WordDocument
Формат CDF при всей своей монструозности хотя бы логичен и не очень сложен (если сравнивать с остальным содержимым вордовского документа). Его описание занимает всего каких-то двадцать страниц — тьфу по сравнению с 300 страницами формата Ворда.
Формат документа сложно даже назвать форматом, гораздо больше к нему подойдет определение каменной летописи. Представьте себе такой каменный обрыв, на котором отпечаталось пятьдесят миллионов лет истории планеты. Вот мезозойский слой, вот кайнозойский, вот отпечаток крыла птеродактиля, а сверху уже третичные отложения. Примерно так же выглядит и документ изнутри.
Достаточно посмотреть на заголовок, который занимает чуть ли не треть файла. Заголовков целых три. Сначала идет один небольшой, в котором половина записей зияет дырами «Reserved» или «Not used». Раньше, в мезозое, там явно что-то лежало, но потом было выкинуто на свалку истории. Здесь же имеется версия записавшей программы, по которой в коде, похоже, выполняется огромный switch/case.
Затем идет второй заголовок, состоящий из шестнадцатибитовых слов. В нем нет вообще ничего полезного. В его начале прописан размер явно с таким расчетом, что здесь будут в будущем откладываться панцири простейших.
После этого идет третий заголовок, на этот раз современный, из длинных слов (32 бита). Он немерянной длины, в начале тоже указывает количество записей с прицелом на дальнейшее расширение, и в основном представляет собой список, где искать различные таблицы и куски файла — пары начало/размер. Сами таблицы, кстати, лежат не здесь, а в отдельном псевдофайле CDF под названием 0Table или 1Table (возможны варианты).
В первом заголовке написана длина самого текста и его начало. Очевидно, что во времена царя Гороха именно так его и можно было прочитать. Текст лежал одним большим куском. Забавно, что можно читать его так и сейчас, но… не всегда! На десять читаемых файлов найдется такой, у которого в середине окажутся невразумительные куски, в конце — сноски, которых там быть не должно, а в самом начале — большой кусок текста, который стерли в прошлом году. Кроме того, половина файла окажется написана китайскими иероглифами. Прискорбно заметить, что известная утилита catdoc Витуса Вагнера в некоторых случаях именно такие результаты и дает, из чего можно сделать вывод, что формат она разбирает недокорректно.
Начала этих потоков указаны в специальных местах заголовка, но самый первый заголовок почему-то показывает общую длину — не самого текста, а текста плюс все этих извращений. Вот и первая причина, почему в вывод многих утилит попадают надписи типа Page 1.
Где-то в архее в редактор добавили быстрое сохранение. Смысл его в том, что файл целиком не переписывается, а добавления и изменения просто дописываются в его конец, что теоретически должно быть быстрее. Предполагалось радовать этим пользователей, но фактически они остались недовольны. Особой разницы в скорости записи при этом не получается, но в файле образуется много мусора, причем из кусков, которые теоретически уже стерты. Если там была какая-нибудь секретная информация, то простым просмотром дампа файла ее можно легко обнаружить.
Для поддержки быстрого сохранения была заведена особая таблица огрызков (piece table), в которую записывается начало каждого куска и его адрес в файле. Длины нет, но ее можно высчитать, вычтя начало текущего куска из начала следующего. Однако тут тоже надо быть осторожным, поскольку огрызки перечисляются из всех потоков. Слава богу, что они идут в определенном порядке, поэтому, зная общую длину текста, легко вовремя остановиться.
Теоретически, этот сложный формат задействован только, если в заголовке установлен специальный флажок fComplex. Но… Вот на этом очередном «но» тоже прокалываются многие конверторы.
Уже в наше время в документы добавили возможность записи в Юникоде. При этом встала проблема (как по мне, надуманная): а ведь файлы получаются ровно в два раза длиннее. Поскольку ПО разрабатывают американцы, которые в душе вообще не верят в существование других азбук, и тайно считают, что всякие странные буквы бывают только в диссертациях про Древнюю Грецию, да и там встречаются только иногда, первое, что пришло им на ум — отделить чистые символы ASCII от грязных юникодовских. Первые писать по байту на символ, вторые — как получится.
Из этой идеи возникла, например, элегантная кодировка UTF-8, где двухбайтовые символы кодируются хитрыми последовательностями в духе кодирования Хаффмана. В «Майкрософте» сделали то же самое, только не так красиво. Раз уж у нас есть таблица огрызков, то запишем туда заодно и какие куски текста написаны в чистом ASCII (на самом деле сp1252), а какие — на всякого рода невразумительных алфавитах, требующих Юникода и, соответственно два байта на символ. Поэтому нынешние файлы всегда нужно разбирать с помощью таблицы кусков, невзирая на всякие там флажки. Юникодовские фрагменты там берутся как есть, только надо учитывать, что количество читаемых байтов должно быть в два раза больше количества читаемых символов. Однобайтовые фрагменты отмечаются в адресе установленным вторым слева старшим битом (почему не первым?). Чтобы узнать настоящий адрес, нужно этот бит сбросить, а адрес разделить на два (!).
Если учесть, что сама эта таблица огрызков тоже занимает место, а еще больше места в файле занимают разные двоичные деревья и таблички цепочек секторов от формата CDF, то размеры экономии текста на символах Юникода не поразят воображения даже в древнегреческих диссертациях. О файлах на великом и могучем языке и говорить нечего. Положили бы все в UTF-16 и не страдали. Ну заархивировали бы поток, раз уж так жаба давит.
После героических усилий по чтению текста, в нем самом, как ни странно, нет ничего сложного. Обычный текст (с поправкой на кодировку), кое-какие коды ниже пробела играют служебную роль. Например, 0х9 обозначает, как и положено, табуляцию, 0хА — конец страницы, 0х7 — конец ячейки таблицы и т.д. Единственная тонкость связана с полями. Начало содержимого поля обозначается как 0х13, конец поля — 0х15, имя и параметры поля отделяются символом 0х14 от того, что, собственно, видно в тексте пользователю. Но… Вторая часть может иметь в себе вложенное поле, чего многие программы не учитывают. В результате в тексте остаются огрызки вроде INCLUDEPICTURE или PAGEREF *.
Впрочем, есть еще одна мелкая пакость. Некоторые символы могут означать что-нибудь совсем другое, вроде текущей даты. Чтобы понять, простой это символ или нет, надо разбирать таблицы свойств символов, о которых ниже. Каюсь, я просто вырезал все символы с кодом ниже пробела, что не совсем достаточно, но дешево, быстро и практично.
Выдрав текст, дальше в формат я углубляться не стал. Это уже занятие для молодых и сильных духом — разобрать все эти таблицы с такими многообещающими названиями как CHP, PAPX, SHST, PLCF и все в том же духе. Занятие совсем уже для титанов — вопроизвести форматирование в точности, как это делает сам Ворд.
Кратко изложу только, что все хранится в специальных таблицах, входом в которые служит адрес символа с начала потока. Стили лежат в длинных списках, изменения в стилях — в специальных списках исключений. Локальные изменения стиля, например, при редактировании абзаца или символа хранятся в таблицах как специальные команды по изменению родительских таблиц стилей. Сами команды очень напоминают команды виртуальной машины от типичной игры-квеста.
Осталось только подвести мораль, а она банальна: что один человек придумал, то другой завсегда поломать может. Что не делает формат Ворда менее позорным, уродливым и совершенно неприспособленным для задач массового обмена информацией в гетерогенных системах.
Думаю, что «Майкрософт» столько лет его не открывала не потому, что боялась конкуренции, а просто потому что было… стыдно.