| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298 |
- Introduction
- ------------
- Documentation is an extremely important part of any project, and it
- helps a lot if it uses consistent syntax and layout.
- The documentation for the FreeType library is maintained in header
- files in the `include/` directory in the form of code comments. These
- comments are extracted and organized by 'docwriter' (previously
- 'docmaker'). The generated docs can be viewed in the
- `docs/reference/site/` directory after running `make refdoc`.
- Documentation comments follow a specific structure and format as
- described below.
- Documentation Structure
- -----------------------
- The documentation is divided into multiple chapters, which contain
- sections relevant to it. The chapter details and sections contained
- in them are listed in `include/freetype/ftchapters.h`. Any unlisted
- section is added to the 'Miscellaneous' chapter.
- Sections may contain sub-sections which consist of properties,
- enumerations, and other data types.
- Comment Blocks
- --------------
- Documentation blocks follow a specific format:
- /***************************** (should end on column 77)
- *
- * (1 asterisk, 1 space, then content)
- *
- */ (end of block)
- To make 'docwriter' recognize a comment block, there must be at least
- two asterisks in the first line. As a consequence, you should change
- the second asterisk to something else if you want to prevent a comment
- block being handled by 'docwriter' (for example, change `/****/` to
- `/*#**/`).
- Markup Tags
- -----------
- Markup tags are used to indicate what comes next. The syntax for a
- tag is:
- @foo:
- An `@`, followed by the tag, and then `:`.
- Reserved Tags
- -------------
- There are some keywords that have a special meaning to docwriter.
- As a convention, all keywords are written in lowercase.
- * `chapter`: Defines a chapter. Usually the title with underscores.
- * `sections`: List of sections in the chapter, in order.
- * `section`: Defines the start or continuation of a section.
- * `title`: Title for a chapter or section. May contain spaces.
- * `abstract`: The abstract for a section, visible in the Table of
- Contents (TOC).
- * `description`: Detailed description of a tag (except chapters),
- shown as synopsis.
- * `values`: A list of 'values' for the tag. These values are used for
- cross-referencing.
- Other Tags
- ----------
- Except the ones given above, any other tags will be added as a part of
- a subsection. All tags are lowercase by convention.
- Public Header Definitions
- -------------------------
- The public headers for FreeType have their names defined in
- `include/freetype/config/ftheader.h`. Any new public header file must
- be defined in this file, in the following format:
- #define FT_NEWNAME_H <freetype/newname.h>
- Where `newname` is the name of the header file.
- This macro is combined with the file location of a sub-section and
- printed with the object.
- Note on code blocks captured after comments
- -------------------------------------------
- All non-documentation lines after a documentation comment block are
- captured to be displayed as the code for the sub-section. To stop
- collection, a line with `/* */` should be added.
- General Formatting Conventions
- ------------------------------
- * Use two spaces after a full stop ending a sentence.
- * Use appropriate uppercasing in titles. Refer
- https://english.stackexchange.com/a/34
- for more information.
- * Do not add trailing parentheses when citing a C function.
- Markdown Usage
- --------------
- All tags, except the ones that define the name and title for a block
- support markdown in them. Docwriter uses a markdown parser that
- follows rules given in John Gruber's markdown guide:
- https://daringfireball.net/projects/markdown/syntax
- with a few exceptions and extensions, detailed below. This may also
- be referred to as the **FreeType Flavored Markdown**.
- Headers
- -------
- Markdown headers should not be used directly, because these are added
- based on section titles, sub-section names, and tags. However, if a
- header needs to be added, note the following correspondence to HTML tags:
- * Section title on top of the page is `H1`.
- * Sub-section titles are `H2`.
- * Parts of sub-sections are `H4`.
- * Any header added will be visible in the Table of Contents (TOC) of
- the page.
- Emphasis
- --------
- * Use `_underscores_` for italics.
- * Use `**double asterisks**` for bold.
- Although the other notations (double underscore for bold, single
- asterisk for italics) are supported, it is recommended to use the
- above for consistency.
- Note that there may be cases where having two asterisks or underscores
- in a line may lead to text being picked up as italics or bold.
- Although unintentional, this is correct markdown behavior.
- For inline code, wrap the sequence with backticks (see below). This
- renders symbols correctly without modifications. If a symbol is
- absolutely required outside of an inline code block or code sequence,
- escape it with a backslash (like `\*` or `\_`).
- Lists
- -----
- Unordered lists can be created with asterisks:
- * Unordered list items can use asterisks.
- * Another list item.
- Ordered lists start with numbers:
- 1. This is an ordered list item.
- 2. Brackets after numbers won't work.
- To continue a list over multiple paragraphs, indent them with at least
- four spaces. For example:
- 1. Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
- Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
- viverra nec, fringilla in, laoreet vitae, risus.
- Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
- Suspendisse id sem consectetuer libero luctus adipiscing.
- 2. This is the second list item.
- This paragraph is not a part of the list.
- More information on lists in markdown is available at
- https://daringfireball.net/projects/markdown/syntax#list
- Cross-references
- ----------------
- Other sub-sections can be linked with the `@` symbol:
- @description:
- While FreeType's CFF driver doesn't expose API functions by
- itself, it is possible to control its behaviour with
- @FT_Property_Set and @FT_Property_Get.
- If a field in the `values` table of another sub-section is linked, the
- link leads to its parent sub-section.
- Links and Images
- ----------------
- All URLs are converted to links in the HTML documentation.
- Markdown syntax for links and images are fully supported.
- Inline Code
- -----------
- To indicate a span of code, wrap it with backtick quotes (`` ` ``):
- Use the `printf()` function.
- Cross-references, markdown, and html styling do not work in inline code
- sequences.
- Code and Syntax Highlighting
- ----------------------------
- Blocks of code are fenced by lines with three back-ticks `` ``` ``
- followed by the language name, if any (used for syntax highlighting),
- as demonstrated in the following example.
- ```c
- x = y + z;
- if ( zookoo == 2 )
- {
- foobar();
- }
- ```
- Note that the indentation of the opening line and the closing line
- must be exactly the same. The code sequence itself should have a
- larger indentation than the surrounding back-ticks.
- Like inline code, markdown and html styling is *not* supported inside
- code blocks.
- Tables
- ------
- Tables are used to list values, input, and other fields. The FreeType
- Flavored Markdown adopts a simple approach to tables with two columns,
- or field definition tables.
- Field definition names may contain alphanumeric, underscore, and the
- `.` characters. This is followed by `::`. The following lines are
- the second column of the table. A field definition ends with the
- start of another field definition, or a markup tag.
- @Input:
- pathname ::
- A path to the font file.
- face_index ::
- See @FT_Open_Face for a detailed description of this
- parameter.
- Non-breaking Space
- ------------------
- A tilde can be used to create a non-breaking space. The example
- The encoding value~0 is reserved.
- is converted to
- The encoding value 0 is reserved.
- ----------------------------------------------------------------------
- Copyright (C) 2018-2023 by
- Nikhil Ramakrishnan, David Turner, Robert Wilhelm, and Werner Lemberg.
- This file is part of the FreeType project, and may only be used,
- modified, and distributed under the terms of the FreeType project
- license, LICENSE.TXT. By continuing to use, modify, or distribute
- this file you indicate that you have read the license and understand
- and accept it fully.
- --- end of DOCGUIDE ---
|