Unofficial (Preliminary) HTML Help Specification


Edited by Paul Wise
Paul Wise
Jed Wing


This is free documentation; you may redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or any later version. A copy of the license is included in the section entitled GNU General Public Licence.

This documentation is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License for more details.


This is chmspec-0.1.3. This document was generated 2005-03-06 03:32:17 +800. This is documentation on MS' current generation of help systems (HTML Help). HTML Help is a documentation system from MS that relies on HTML, XML and a filesystem that is used in storing multiple HTML & other files in a single file and involves LZX compression.


This specification is dedicated to the humble NDA, which poked RMS enough to start GNU and trigger a whole new generation of public innovation.

It is also dedicated to paranoid proprietary software authors for indirectly training reverse engineers worldwide.

Table of Contents

Status of this document
1. About the Specification
1.1. Reading the specification
1.2. Organisation
1.3. Conventions
1.4. Contributions
1.5. Copyright
2. Introduction
2.1. Help systems
2.2. MS' help systems
2.3. HTML Help
2.4. HTML Help links
3. HTML Help features
3.1. Preface
3.2. Menu
3.3. Toolbar
3.4. Navigation pane
3.4.1. Index
3.4.2. Search
3.4.3. Favourites
3.4.4. Custom tabs
3.5. Information types
3.6. Text popups
3.7. Context-sensitive help
3.8. Subsets
3.9. Samples
3.10. Merged help
3.10.1. Collections
3.10.2. Merge Files
4. Files
4.1. Preface
4.2. Content
4.3. Authoring
4.4. Settings
5. Formats
5.1. Preface
5.2. ITSF format
5.2.1. Preface
5.2.2. Titbits
5.3. Internal file formats
5.3.1. Preface
5.3.2. #ITBITS
5.3.3. #SYSTEM
5.3.4. #IDXHDR
5.3.5. #WINDOWS
5.3.6. #STRINGS
5.3.7. #TOCIDX
5.3.8. #TOPICS
5.3.9. #URLSTR
5.3.10. #URLTBL
5.3.11. #IVB
5.3.12. #SUBSETS
5.3.13. $FIftiMain
5.3.14. $OBJINST
5.3.15. $WWAssociativeLinks & $WWKeywordLinks
5.3.16. $HHTitleMap
5.3.17. $TitleMap
5.3.18. /Path/file.chm/windowtype
5.3.19. /Path/file.chm/AdvSearchUI/Keywords
5.3.20. /Path/file.chm/AdvSearchUI/Properties
5.3.21. /Path/file.chm/Bookmarks/v1/Count
5.3.22. /Path/file.chm/Bookmarks/v1/n/Topic
5.3.23. /Path/file.chm/Bookmarks/v1/n/Url
5.3.24. #KEY_DELETED
5.3.25. #KEY_DATA
5.4. CHS format
5.5. XML formats
5.5.1. Preface
5.5.2. COL format
5.5.3. hhcolreg.dat format
5.6. INI formats
5.6.1. Preface
5.6.2. HHP format
5.6.3. HHS format
5.6.4. SFL format
5.7. Sitemap formats
5.7.1. Preface
5.7.2. HHC format
5.7.3. HHK format
5.8. Other formats
5.8.1. Alias files
5.8.2. Text popup files
5.8.3. Header files
5.8.4. Full text search stop list file
6. Miscellaneous
6.1. GUIDs
6.1.1. Preface
6.1.2. {5D02926A-212E-11D0-9DF9-00A0C922E6EC}
6.1.3. {4662DAAF-D393-11D0-9A56-00C04FB68BF7}
6.1.4. {4662DAB0-D393-11D0-9A56-00C04FB68B66}
6.1.5. {8FA0D5A8-DEDF-11D0-9A61-00C04FB68BF7}
A. GNU General Public License
A.1. Preamble
A.2.1. Section 0
A.2.2. Section 1
A.2.3. Section 2
A.2.4. Section 3
A.2.5. Section 4
A.2.6. Section 5
A.2.7. Section 6
A.2.8. Section 7
A.2.9. Section 8
A.2.10. Section 9
A.2.11. Section 10
A.2.12. NO WARRANTY Section 11
A.2.13. Section 12
A.3. How to Apply These Terms to Your New Programs

List of Figures

5.1. A pictorial description of the $FIftiMain format from CHM files.

List of Tables

1.1. A breakdown of the bits in an LCID.
1.2. Styles used in this document.
1.3. Contributors to this CHM specification.
1.4. The contributions that were made to this CHM specification.
2.1. MS' help systems (MVPs, 19??; Far, 19??; Winterhoff, 19??)
2.2. More info on MS' help systems (MVPs, 19??; Far, 19??; Winterhoff, 19??)
5.1. The format of #SYSTEM entries.
5.2. An explanation for each of the #SYSTEM codes.
5.3. The format of the code 4 #SYSTEM entry.
5.4. The format of the code 8 #SYSTEM entry.
5.5. The format of the #IDXHDR file.
5.6. The format of the #WINDOWS header.
5.7. The format of each #WINDOWS entry.
5.8. Flags used to specify which values are valid.
5.9. The format of the #TOCIDX header.
5.10. 20/28 byte structures
5.11. 16 byte structures
5.12. The format of the #TOPICS file entries.
5.13. The format of the #URLSTR entries.
5.14. The format of the #URLTBL blocks.
5.15. The format of the #URLTBL block entries.
5.16. The format of the #IVB entries.
5.17. The format of the #SUBSETS header.
5.18. The format of the $FIftiMain header.
5.19. Index node entries
5.20. Leaf node header
5.21. Leaf node entries
5.22. WLC entries
5.23. Example of scale and root encoding
5.24. Example of scale and root encoding where scale is greater than 2.
5.25. Example leaf node entries
5.26. Example leaf node entries
5.27. Example WLC entries.
5.28. Conversions
5.29. The format of the $OBJINST header.
5.30. The format of the $OBJINST listing entries.
5.31. The first entry
5.32. bit 2. Only present when "Full text search stop list file" has been specified in the HHP.
5.33. bit 2 entries
5.34. bit 3
5.35. The second entry
5.36. The format of the BTree header.
5.37. The format of the BTree listing blocks header.
5.38. The format of the BTree listing block entries.
5.39. The format of the BTree index blocks header.
5.40. The format of the BTree index block entries.
5.41. The format of the $HHTitleMap entries.
5.42. The format of the $TitleMap entries.
5.43. The format of the windowtype entries.
5.44. The format of the #KEY_DATA file.
5.45. The header of the CHS format.
5.46. The format of the subset entries.
5.47. Meta-data elements in the COL XML format.
5.48. Location sub-elements
5.49. LocationHistory subelements
5.50. Explanations for all the different [OPTIONS] that are displayed and preserved by HHW.
5.51. Summary of the arguments for each [WINDOWS] entry.
5.52. Buttons to put in the HH toolbar.
5.53. Navigation pane styles.
5.54. Global HHC properties.
5.55. Information types in the global properties.
5.56. Properties for HHC items.
5.57. Global properties of the HHK format.
5.58. Information types of the HHK format.
5.59. Item properties of the HHK format.